Diedrich Sahlmann Strukturiert Programmieren Die Methode und ihr praktischer Einsatz zum Selbststudium Mit zahlreichen Abbildungen und Tabellen Springer-Verlag Berlin Heidelberg New York London Paris Tokyo Hong Kong 1989 Dipl.-Ing. Diedrich Sahlmann Siemens AG, Miinchen Weiterfiihrung des friiheren Werkes "Strukturierte Programmierung" von W. Jordan, D. Sahlmann, H Urban ISBN-13: 978-3-540-50745-1 e-ISBN-13: 978-3-642-95582-2 DOl: 10.1007/978-3-642-95582-2 CIP-Kurztitelaufnahme der Deutschen Bibliothek: Sahlmann, Diedrich: Strukturiert programmieren: die Methode und ihr praktischer Einsatz zum Selbststudium/Diedrich Sahlmann. - Berlin; Heidelberg; New York; London; Paris; Tokyo: Springer, 1989 Forts. von: Jordan, Wolfgang: Strukturierte Programmierung ISBN-l3: 978-3-540-50745-1 Dieses Werk ist urheberrechtlich geschiitzt. Die dadurch begriindeten Rechte, insbesondere die der Ubersetzung, des Nachdrucks, des Vortrags, der Entnahme von Abbildungen und Tabellen, der Funksendung, der Mikroverfil mung oder der Vervielfiiltigung auf anderen Wegen und der Speicherung in Datenverarbeitungsanlagen, bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Eine Vervielfaltigung dieses Werkes oder von Teilen dieses Werkes ist auch im Einzelfall nur in den Grenzen der gesetzlichen Bestimmungen des Urheberrechtsgesetzes der Bundesrepublik Deutschland vom 9. September 1965 in der Fassung yom 24.Juni 1985 zulassig. Sie ist grundsatzlich vergiitungspflichtig. Zuwiderhandlungen unterliegen den Strafbestimmungen des Urheberrechtsgesetzes. © by Springer-Verlag Berlin Heidelberg 1989 Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, daB solche Namen im Sinne der Warenzeichen-und Mar kenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden diirften. Sollte in diesem Werk direkt oder indirekt auf Gesetze, Vorschriften oder Richtlinien (z. B. DIN, VDI, VDE) Bezug genommen oder aus ihnen zitiert worden sein, so kann der Verlag keine Gewahr fiir Richtigkeit, Vollstandigkeit oder Aktualitat iibernehmen. Es empfiehlt sich, gegebenenfalls fiir die eigenen Arbeiten die vollstandigen Vorschrif ten oder Richtlinien in der jeweils giiltigen Fassung hinzuzuziehen. Datenkonvertierung: Appl, Wemding; Druck: Saladruck, Berlin; Bindearbeiten: Liideritz & Bauer, Berlin 2362/3020 543210 - Gedruckt auf saurefreiem Papier . Vorwort Als der Springer Verlag im Jahr 1978 das Buch ,,strukturierte Programmierung" her ausbrachte, war diese Methode der Software-Entwicklung noch ein neues Thema. Folgerichtig enthielt das Werk sehr viele ErkHirungen, die die Vorteile dieser Methode gegeniiber der damaligen Vorgehensweise herausstellten. Inzwischen ist die Strukturierte Programmierung akzeptiert und etabliert (sicher mit ein Verdienst des vorerwahnten Werkes), deutlichster Vorgang ist das_ Erscheinen von COBOL85 mit neuen, ganz wesentlichen Sprachelementen zur Strukturierten Programmierung. Auch sind in der Zwischenzeit leistungsfahige Software-Werkzeuge entstanden, die die Methode wirksam unterstiitzen. . Dies ist AnlaB genug, urn iiber eine. inhaltliche Anpassung des doch schon 10 Jahre alten Werkes nachzudenken und Erkenntnisse einzubiingen, die insbeson dere die handwerkliche Umsetzung der Methode betreffen. Die~ wird durch viele Beispiele und Aufgaben unterstiitzt. Wieder beriicksichtigt sind Unterrichtserfahrun gen, die bei der Einweisung von Programmierern, Organisatoren un:dInformanden an der Siemens-Schule fUr Kommunikations- und Datentechnik gentacht worden sind. Hier danke ich Frau Ingrid Keuntje und Herrn Harry Claus fUr kollegiale Unterstiitzung. Ganz besonderen Dank bin ich aber Herrn Rudolf Erbesdobler schul dig, der nicht nur die Abschnitte COBOL85 und FORTRAN77 vollstandig ein brachte, sondern audh ille technischen Kapitel einer kritischen Durchsicht unterzog. Seine fundierten RatschHige habe ich gerne eingearbeitet. Nach wie vor bleibt aber das Anliegen erhalten, den Leser in leicht faBbarer Weise mit der Methode der Strukturierten Programmierung vertraut zu machen. Deisenhofen bei Miinchen, im April 1989 D.Sahlmann Inhaltsverzeichnis I: Information A: Aufgaben L: Losungen I A L Hinweise zurn Selbststudiurn 1 1. Einfiihrung ....... . 3 2 Methode der Strukturierten Prograrnrnierung . 6 2.1 Ziele der Strukturierten Programmierung 8 10 236 2.2 Schrittweise Verfeinerung . . . . . . . 11 18 238 2.3 Beschrankung der Strukturblockarten 19 22 239 2.4 Blockkonzept. . . . . 23 26 240 2.5 Lesbarkeit. . . . . . . 27 31 240 2.6 Datenunterscheidung 32 35 241 3 Darstellungsrnittel fiir die Strukturierte Prograrnrnierung 36 3.1 Baumdiagramme . . . . . 37 3.2 Struktogramme ..... . 40 45 242 3.3 Verbale Entwurfssprache 46 3.4 DIN-Normen ..... . 48 4 Beispiele und Ubungen zu Struktograrnrnen 50 4.1 Praktische Hinweise . . . . . . . . 50 4.2 Einfache Strukturblocke. . . . . . 54 244 4.3 Zusammengesetzte Strukturblocke 56 246 5 Urnsetzung des Entwurfs in Prirniircode 58 5.1 Implementierung mit COBOL74 59 5.2 Implementierung mit COBOL85 74 5.3 Implementierung mit Assembler 89 5.4 Implementierung mit FORTRAN77 98 VIII Inhaltsverzeichnis I A L 6 Beispiele und Ubungen zur Strukturierten Programmierung . . . 109 6.1 Lineare Verarbeitung 110 248 6.2 Mischen. . . . . . 112 260 Erweiterung ..... 115 266 6.3 Gruppenwechsel . . . 118 275 6.4 Tabellenverarbeitung 122 Einlesen und Aufbauen einer Tabelle 122 282 Verarbeiten von Tabellendaten . . 124 283 Sortieren von Tabellenelementen . . . 129 286 7 Strukturiert programmieren im System COLUMBUS-COBOL. 132 7.1 COLUMBUS-COBOL-Quellprogramm . 135 7.2 COLUMBUS-COBOL-Strukturblocke . 138 7.3 COLUMBUS-COBOL-Prozeduren ... 146 7.4 COLUMBUS-Dienstprogramme (COBOL) 153 7.5 COLUMBUS-COBOL-ET-Prozedur. 162 7.6 COLUMBUS-COBOL-Optimierung ..... 168 8 Strukturiert programmieren im System COLUMBUS-Assembler. . . . . . . . 171 8.1 COLUMBUS-Assembler-Quellprogramm . 173 8.2 COLUMBUS-Assembler-Strukturblocke 177 8.3 COLUMBUS-Assembler-Bedingungen . 188 8.4 COLUMBUS-Assembler-Prozeduren . . 192 8.5 COLUMBUS-Assembler-Datenkonzept . 199 8.6 COLUMBUS-Dienstprogramme (Assembler) . 209 9 Strukturierte Programmierung und Software-Entwicklung . . .. 216 9.1 DV-Grobkonzept. . . . . . 218 9.2 DV-Feinkonzept . . . . . . 227 9.3 Implementierung und Test 231 9.4 Reverse Engineering. 234 LOsungen zu den Aufgaben 236 Sachverzeichnis ..... . 288 Hinweise zum Selbststudium 1 Hinweise zum Selbststudium Was ist das Ziel dieses Buches? Das vorliegende Buch befal3t sich mit einer der wichtigsten Methode der Software Entwicklung, der Strukturierten Programmierung (im folgenden kurz SP genannt). Projekte, die nach dieser Methode realisiert werden, ergeben hervorragende Produk teo Die Entwicklungskosten werden spurbar gesenkt und die Entwicklungszeit verrin gert. Ziel dieses Buches ist deshalb, den Leser anhand einfacher praktischer Beispiele und Aufgaben in die SP einzufUhren. Nach der Durcharbeit dieser Unterlage wird er sich ein Grundwissen und praktische Fertigkeiten fUr den Einsatz dieser Methode erwor ben haben. 1m einzelnen wird der Leser dann: kennen: die Ziele der SP die Methode der SP, die Darstellungsmittel, die die methodische Anwendung unterstutzen; konnen: einfache Aufgabenstellungen nach der Methode SP 16sen, Struktogramme als Darstellungsmittel einsetzen. An wen richtet es sich? Die SP kann von jedem, der mit der Organisation und Entwicklung von Program men beschiiftigt ist, wirksam eingesetzt werden. Die Unterlage richtet sich daher vor allem an Datenverarbeitungsorganisatoren, Programmentwickler, Programmierer und Bera ter. Weiter ist sie bestimmt fUr aIle, die die Software-Entwicklung steuern oder fertige Programme priifen, wie z.B. DV-Revisoren. Schlief3lich ist sie eine nutzliche Informa tion fUr Fuhrungskrafte, Weiterbildungsbeauftragte, Lehrkrafte, Studenten und Schu ler. Spezielle fachliche Kenntnisse sind fUr das Verstandnis des Buches nicht erfor derlich, jedoch wird ein Grundwissen in der Datenverarbeitung vorausgesetzt. Das Kapitel "Umsetzung des Entwurfes in Primarcode" ist nur fUr die Leser interes sant, die bereits eine der Programmiersprachen COBOL, FORTRAN oder Assembler kennen. Dieses Kapitel kann aber auch ubergangen werden, ohne daB dadurch das Verstandnis fur den Gesamtzusammenhang verlorengeht. 2 Hinweise zum Selbststudium Was bieten die einzelnen Kapitel? Der Stoff ist in Kapitel und diese sind in Abschnitte gegliedert. Jeder Abschnitt setzt sich zusammen aus: Informationen: gekennzeichnet durch ein I im Kolumnentitel, Aufgaben: gekennzeichnet durch ein A im Kolumnentitel, L6sungen zu diesen Aufgaben: gekennzeichnet durch ein Lim Kolumnentitel. Weiterhin wird bei den Informationen zwischen Prasenz- und Katalogwissen unter schieden. Bei dem Prasenzwissen handelt es sich urn Informationen, die der Studierende ohne Hilfsmittel aus dem Gedachtnis wiedergeben soll. Dies beschrankt sich auf verhalt nismal3ig wenige Grundzusammenhange. 1m Text sind sie durch grau unterlegte Fla chen gekennzeichnet. Unter Katalogwissen versteht man Begriffe und Sachverhalte, die yom Verstandnis her grob eingeordnet werden k6nnen, deren Detailerklarung jedoch nur unter Heran ziehung von weiteren Unterlagen sinnvoll ist. Die meisten Abschnitte enden mit Fragen und Aufgaben, die der Studierende selb stan dig 16sen solI. Zur Kontrolle k6nnen die eigenen Antworten verglichen werden mit den vorgegebenen L6sungen; beide sollten sinngemaf3 iibereinstimmen. Dariiber hinaus enthalten die vorgegebenen L6sungen haufig erganzende Informationen. Wieviel Zeit ist fUr das Durcharbeiten erforderlich? Das Durcharbeiten sollte m6g1ichst ziigig geschehen und nicht durch mehrtagige Pausen unterbrochen werden. Bei einer durchschnittlichen Aufnahmebereitschaft von etwa fiinf Stunden taglich beansprucht das Studium der Kapitel 1 bis 6 etwa vier bis fiinf Tage. Selbst wenn alle gestellten Aufgaben richtig ge16st werden, so darf aber nicht iibersehen werden, daB es sich hier urn die ersten - noch von einem Lehrbuch begleiteten - Schritte in ein umfangreiches neues Wissensgebiet handelt. An die Durcharbeit sollte sich die L6sung eigener Aufgaben anschlieBen zur Festigung des Wissens und der neu erworbenen Fertigkeiten. Wenn die ersten ohne Hilfe erstellten Entwiirfe mehr Zeit in Anspruch nehmen als die bisherigen konventionellen L6sungen, ist dies kein Grund zur Beunruhigung. Erst nach etwa zehn selbst erarbeiteten L6sungen in der neuen Methode stellt sich die Si cherheit und Schnelligkeit ein, die die vollen Vorteile der Strukturierten Programmie rung yom Entwurf iiber den jetzt erheblich verkiirzten Test bis zum Einsatz hin zei gen. I 1 Einfiihrung 3 1 Einfiihrung Die Datenverarbeitung unterstiitzt uns heute in vielen Bereichen des Uiglichen Le bens. Probleme, die noch vor einigen Jahren unlosbar erschienen oder nur mit sehr groBem Aufwand bewaltigt werden konnten, bearbeitet eine Datenverarbeitungsanla ge heute in kurzer Zeit. Dabei ist noch kein Ende der Entwicklung abzusehen: Neue Fertigungstechniken, sHindig fortschreitende Miniaturisierung der Bauelemente, Er hohung der Speicherkapazitaten und der Verarbeitungsgeschwindigkeit, neue Soft waretechnologien usw. eroffnen immer weitere Einsatzgebiete. Die Kosten fUr solche Datenverarbeitungssysteme wurden am Anfang wesentlich durch den maschinellen Aufwand - die Hardware - bestimmt. Bald jedoch nahm die Erstellung, Pflege und Weiterentwicklung von Programmen - die Software - einen solchen Umfang an, daB ihre Kosten die der Hardware in vielen Fallen weit iibertra fen. Wodurch wurde diese Entwicklung beeinfluBt? Heute erstellte Programme weisen ei nen viel groBeren Funktionsumfang auf als die Software friiherer Jahre. Die Proble me, die durch die Datenverarbeitung gelost werden, sind umfangreicher und komple xer geworden. So sind durch den Einsatz dialogfiihiger Systeme, der Datenfemverar beitung, der Datenbanken und komfortabler Dialogsprachen integrierte Gesamtlo sungen fUr ganze Funktionsbereiche im Untemehmen realisierbar. Die Bedienung der Systeme wurde komfortabler und einfacher. Umfangreiche Hilfs-, Sicherungs und Schutzvorrichtungen gewahrleisten einen reibungslosen Programmablauf. All dieser Fortschritt machte allerdings quantitativ und qualitativ einen erheblich ho heren Programmieraufwand erforderlich, so daB bei der Entwicklung und Wartung und beim Einsatz mancher Produkte Probleme und Schwierigkeiten, bezogen auf die Kriterien Qualitat, Kosten und Zeit, auftraten. Die entstandenen Softwareprodukte entsprachen haufig nicht den urspriinglich gestellten Forderungen. Diese Probleme, die den Fachleuten schon langere Zeit bekannt sind, iiberraschen immer wieder Au Benstehende und fiihren oftmals zu ungerechtfertigter Kritik. Fiir das Auftreten der gezeigten Mangel gibt es jedoch begriindete Argumente: - Software-Entwicklung ist ein relativ neuartiges Gebiet und hat erst in den letzten Jahren groBe wirtschaftliche Bedeutung erlangt. - Das Gebiet ist wesentlich schwieriger, als zunachst allgemein angenommen wurde. Eine Erarbeitung von wissenschaftlichen Grundlagen konnte sich fast nirgendwo auf bewahrte traditionelle Wissenszweige stiitzen. I 4 1 Einfiihrung Eine allgemeine Ubersicht der Softwareprobleme, ihrer Symptome und Ursachen ist in der folgenden Tabelle dargestellt. Softwareprobleme, Symptome und Ursachen (Tagungsbericht aus "The High Cost of Software", Naval Postgraduate School, Monterey/Cal. 1973) Problem Symptome Ursachen Qualitat U nzuverlassig, Unzulangliche Formulierung der Anforderungen durch den benutzerunfreundlich, Benutzer, unzureichende Test- und Abnahmepraktiken, Man inkompatibel, gel an Ma/3staben fUr die Effizienzmessung, unzulangliche nicht anpa/3bar, Dokumentation, fehlende Aufmerksamkeit durch das Mana nicht iibertragbar, gement und fehlende Kontrolle, ungeeignete Verwendung der keine Gewahrleistung. vorhandenen Technologie, unzulanglicher Kenntnisstand der Programmierer, falsches Verhaltnis von Software- zu Hard ware-Investitionen, Mangel an geeigneter Support-Software. Kosten Hohe Entwicklungskosten, Schlechte Schatzung der Herstellungskosten, schlechte Be hohe Einsatz- und schaffungspraktiken, schlechte Entwicklungspraktiken, man Wartungskosten, schlechte gelnde Automatisierung der Entwicklung, ungeeignete oder Ausnutzung der keine Verwendung vorhandener Entwicklungen, mangelhafte Maschinenkapazitat, Hardware, unzureichender Kenntnisstand der Programmierer, hohe Anderungskosten, mangelhafte Systemanforderungen und Spezifikationen, keine hohe Kosten fUr die Managementkontrolle iiber die Kosten, hohes Gehaltsniveau Dokumentation. fUr Programmierer, Unsicherheit in der Kostenerfassung und -zuordnung, unzureichende Aufmerksamkeit im Hinblick auf Systemintegration und Test, schlechte Dokumentationsprakti ken. Zeit Uberschreitung des Schlechte Schiitzpraktiken, unzureichende Definition und/oder Auslieferungstermins, falsche Auffassung der Aufgabe, stark streuende Fahigkeiten, lange Entwicklungszeit, Kenntnisse und Produktivitat der Programmierer, mangel verspatete Fertigstellung hafte Steuerung und Kontrolle durch das Management, un der Dokumentation. realistische Zwischen termine, ungeeignete Nutzung vorhande ner Entwicklungen, zu lange Beschaffungszeiten, ungeniigende Support-Software, Mangel an automatisierter Entwurfstech nik, ungeniigende Aufmerksamkeit im Hinblick auf die Doku mentation. In den letzten lahren hat sich nun aufgrund der wirtschaftlichen Bedeutung und der Probleme bei der Entwicklung und Wartung von Programmen eine Disziplin heraus gebildet, die l"Software-Engineering" genannt wird. ~hr Ziel besteht in der "Anwen dung von Prinzipien, Methoden und Werkzeugen fUr die Technik und das Manage ment der Software-Entwicklung und -Wartung auf der Basis wissenschaftlicher Erkenntnisse und praktischer Erfahrungen sowie unter Beriicksichtigung des jeweili gen 6konomisch-technischen Zielsystems".1 1 Grundlagen und Techniken einer rationellen Programmentwicklung sind hier -nicht nur bezogen auf die Strukturierte Programmierung- umfassend dargestellt. Nach Gewald,K.;Haake,G.;Pfad ler,W.: Software Engineering, Grundlagen und Technik rationeller Programmentwicklung. 5.Aufl. Miinchen, Wien: Oldenbourg 1988.