W Jordan· H. Urban Strukturierte Programmierung Einfiihrung in die Methode und ihren praktischen Einsatz zum Selbststudium Springer-Verlag Berlin Heidelberg New York 1978 Wolfgang Jordan Dipl.-Kfm. Heinz Urban Siemens AG, Schule fUr Datenverarbeitung, Munchen Mit zahlreichen unnumerierten Abbildungen ISBN-13: 978-3-540-08740-3 e-ISBN-13: 978-3-642-96455-8 DOl: 10.1007/978-3-642-96455-8 Library of Congress Cataloging in Publication Data. Jordan, Wolfgang, 1943-Strukturierte Program mierung. Bibliography: p. 252. Includes index. I. Structured programming. I. Urban, Heinz, joint author. II. Title. QA76.6.J67 00\.6'42 78-6121. Das Werk ist urheberrechtlich geschiitzt. Die dadurch begriindeten Rechte, insbesondere die der Uberset zung, des Nachdruckes, der Entnahme von Abbildungen, der Funksendung, der Wiedergabe auf photo mechanischem oder ahnlichem Wege und der Speicherung in Datenverarbeitungsanlagen bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Bei Vervielfiiltigung fUr gewerbliche Zwecke ist gemaB §54 UrhG eine Vergiitung an den Verlag zu zahlen, deren Hohe mit dem Verlag zu vereinbaren ist. © by Springer-Verlag, Berlin Heidelberg 1978 Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buche berechtigt auch ohne besondere Kennzeichnung nicht zur Annahme, daB solche Namen im Sinne der Warenzeichen-und Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jeder mann benutzt werden diirften. 2362/3321 543210 Vorwort Das vorliegende Werk entstand aus Erfahrungen bei der Einweisung von Program mierern, Organisatoren und Informanden in die Strukturierte Programmierung: beide Autoren sind Mitarbeiter des Hauses Siemens und dort an der Schule fUr Datenverarbeitung tatig. Das Ziel des Buches ist, den Leser in leicht faBbarer Weise mit der Methode der Strukturierten Programmierung vertraut zu machen. Der Schwerpunkt liegt bei der Entwicklung der praktischen Fahigkeit, eigene Aufgabenstellungen nach der neuen Methode zu 16sen. Entsprechend ist die Stoffauswahl praxisorientiert. Eine Vielzahl von Obungen begleitet die Darbietung des Stoffes. Bei der fachlichen Stoffauswahl und der didaktischen Gestaltung unterstUtzte uns eine Reihe von Kollegen der Entwicklung und Anwendung. Ihnen sei hiermit herzlich gedankt. Munchen, im Fruhjahr 1978 Die Verfasser Inhaltsverzeichnis I A L 1 EinfUhrung. 2 Methode der Strukturierten Programmierung 6 2.1 Ziele der Strukturierten Programmierung. 8 2.2 Schrittweise Verfeinerung 12 19 20 2.3 Beschrankung der Strukturblockarten 21 29 30 2.4 Blockkonzept. 31 35 36 2.5 Lesbarkeit . 37 41 42 2.6 Datenunterscheidung 43 46 47 3 Darstellungsmittel fUr die Strukturierte Programmierung 48 3.1 Baumdiagramme 49 53 54 3.2 DIN 66001 . 55 59 60 3.3 Struktogramme. 61 73 76 3.4 Verbale Entwurfssprache. 82 Beispiel "Primzahlen" . 84 3.5 HIPO-Verfahren 88 4 Umsetzung des Entwurfs in Primarcode 92 4.1 Der Voriibersetzer COLUMBUS 93 Programm "Primzahlen" in COBOL 101 Programm "Primzahlen" in Assembler. 112 Programm "Primzahlen" in FORTRAN 128 4.2 Manuelle Implementierung eines Entwurfs mit COBOL 136 144 145 4.3 Manuelle Implementierung eines Entwurfs mit Assembler 147 156 158 4.4 Manuelle Implementierung eines Entwurfs mit FORTRAN 163 167 168 5 Beispiele und Ubungen zur Strukturierten Programmierung 169 5.1 Lineare Verarbeitung 170 172 5.2 Mischen . 183 186 Erweiterung 192 195 5.3 Gruppenwechsel 204 208 I: Information, A: Aufgaben, L: L6sungen I A L 5.4 Tabellenverarbeitung . . . . . . . 215 Einlesen und Aufbauen einer Tabelle 216 218 Verarbeiten von Tabellendaten . 219 222 Sortieren von Tabellenelementen . . 226 228 6 Strukturierte Programmierung und Software-Entwicklung 231 6.1 DV -Grobkonzept. . : . 233 6.2 DV-Feinkonzept . . . . 242 6.3 Implementierung und Test 246 Literatur . 250 Sachregister 251 Hinweise zum Selbststudium Hinweise zurn Selbststudiurn Was ist das Ziel dieses Ruches? Das vorliegende Buch befal3t sich mit einer der zur Zeit leistungsfiihigsten Methoden der Software-Entwicklung, der Strukturierten Programmierung (im folgenden kurz SP genannt). Projekte, die nach dieser Methode realisiert wurden, ergaben bessere Produkte als bei den bisher iiblichen Vorgehensweisen. Oft konnten die Entwick lungskosten spiirbar gesenkt werden. und die Entwicklungszeit verringerte sich. 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 erworben haben. 1m einzelnen wird der Leser dann kennen: die Ziele der SP, die Methode der SP, die Darstellungsmittel, die die methodische Anwendung unterstiitzen; kannen: einfache Aufgabenstellungen nach der Methode der SP lasen, 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, Programmie rer und Berater. Weiter ist sie bestimmt fUr alle, die die Software-Entwicklung steuern oder fertige Programme priifen, wie z.B. DV-Revisoren. Schliel3lich ist sie eine niitzliche Information fUr Fiihrungskrafte, Weiterbildungsbeauftragte, Lehrkrafte, Studenten und Schiiler. Spezielle fachliche Kenntnisse sind fUr das Verstandnis des Buches nicht erforderlich, jedoch wird ein Grundwissen in der Datenverarbeitung vorausgesetzt. Das Kapitel "Umsetzung des Entwurfs in Primarcode" ist nur fUr die Leser interes sant, die bereits eine der Programmiersprachen COBOL, FORTRAN oder Assem bler kennen. Dieses Kapitel kann aber auch iibergangen werden, ohne dal3 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 Seitenkopf, Aufgaben: gekennzeichnet durch ein A im Seitenkopf, L6sungen zu diesen Aufgaben: gekennzeichnet durch ein L im Seitenkopf. 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 solI. Dies beschrankt sich auf verhaltnismaBig wenige Grundzusammenhange. 1m Text sind sie durch grau unter legte Flachen gekennzeichnet. Unter Katalogwissen versteht man Begriffe und Sachverhalte, die yom Verstandnis her grob eingeordnet werden k6nnen, deren Detailerklarung jedoch nur unter Her anziehung von weiteren Unterlagen sinnvoll ist. Die meisten Abschnitte enden mit Fragen und Aufgaben, die der Studierende selbstandig l6sen solI. Zur Kontrolle k6nnen die gegebenen Antworten verglichen werden mit vorgegebenen L6sungen; beide sollten sinngemaB iibereinstimmen. Dar iiber hinaus enthalten die vorgegebenen L6sungen haufig erganzende Informatio nen. Wieviel Zeit ist fUr das Durcharbeiten erforderlich? Das Durcharbeiten sollte m6glichst ziigig geschehen und nicht durch mehrtagige Pausen unterbrochen werden. Bei einer durchschnittlichen Aufnahmebereitschaft von etwa fiinf Stunden taglich beansprucht das Studium des gesamten Stoffes vier bis fiinf Tage. Selbst wenn aIle gestellten Aufgaben richtig ge16st werden, 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 soUte sich die L6sung eigener Aufgaben an schlie Ben zur Festigung des Wissens und der neu erworbenen Fertigkeiten. Wenn die ersten ohne Hilfe erstellten Entwiirfe mehr Zeit in Anspruch nehmen als die bisherigen konventionelIen L6sungen, ist dies kein Grund zur Beunruhigung. Erst nach etwa zehn selbst erarbeiteten L6sungen in der neuen Methode stellt sich die Sicherheit und Schnelligkeit ein, die die volIen Vorteile der Strukturierten Programmierung yom Entwurf iiber den jetzt erheblich verkiirzten Test bis zum Einsatz hin zeigen. I 1 EinfUhrung 3 1 Einftihrung Die Datenverarbeitung unterstiitzt uns heute in vielen Bereichen des taglichen Lebens. Probleme, die noch vor einigen Jahren unlosbar erschienen oder nur mit sehr groBem Aufwand bewaltigt werden konnten, bearbeitet eine Datenverarbei tungsanlage heute in kurzer Zeit. Dabei ist noch kein Ende der Entwicklung abzuse hen: Neue Fertigungstechniken, standig fortschreitende Miniaturisierung der Bau elemente, Erhohung der Speicherkapazitaten und der Verarbeitungsgeschwindigkei ten, neue Softwaretechnologien 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 iibertrafen. Wodurch wurde diese Entwicklung beeinfluBt? Heute erstellte Programme weisen einen vie I groBeren Funktionsumfang auf als die Software friiherer Jahre. Die Probleme, die durch die Datenverarbeitung gelost werden, sind umfangreicher und komplexer. So sind durch den Einsatz dialogfiihiger Systeme, der Datenfernverar beitung, der Datenbanken und komfortabler Dialogsprachen integrierte Gesamtlo sungen fUr ganze Funktionsbereiche im Unternehmen 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 hoheren Programmieraufwand erforderlich, so daB bei der Entwicklung und War tung und beim Einsatz mancher Produkte Probleme und Schwierigkeiten, bezogen auf die Kriterien Qualitiit, Kosten und Zeit, auftraten. Generell stellte man fest, daB Software im Vergleich zur Hardware weniger plan- und kontrollierbar ist. Die entstandenen Softwareprodukte entsprachen haufig nicht den urspriinglich gestellten F orderungen. Eine allgemeine Ubersicht der Softwareprobleme, ihrer Symptome und Ursachen ist in der Tabelle auf der folgenden Seite dargestellt. Diese Probleme, die den Fachleuten schon langere Zeit bekannt sind, iiberraschen immer wieder AuBenstehende und fUhren oftmals zu ungerechtfertigter Kritik. Fiir das Auftreten der gezeigten Mangel gibt es jedoch begriindete Argumente: I 4 1 Einflihrung Softwareprobleme, Symptome und Ursachen (Tagungsbericht aus "The High Cost of Software", Naval Postgraduate School, Monterey ICal. 1973) Problem Symptome Ursachen Qualitat Unzuverlassig, Unzulangliche Formulierung der Anforderungen durch den benutzerunfreundlich, Benutzer, unzureichende Test- und Abnahmepraktiken, Man inkompatibel, gel an Maf3stiiben fUr die Effizienzmessung, unzulangliche nicht anpaf3bar, 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 Maschinenka pazita t, Hardware, unzureichender Kenntnisstand der Programmierer, hohe A.nderungskosten, 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 Schatzpraktiken, unzureichende Definition und/oder Auslieferungstermins, falsche Auffassung der Aufgabe, stark streuende Fahigkeiten, lange Entwicklungszeit, Kenntnisse und Produktivitiit der Programmierer, mangel verspatete Fertigstellung hafte Steuerung und Kontrolle durch das Management, un der Dokumentation. realistische Zwischentermine, ungeeignete Nutzung vorhande ner Entwicklungen, zu lange Beschaffungszeiten, ungeniigende Support-Software, Mangel an automatisierter Entwurfstech nik, ungeniigende Aufmerksamkeit im Hinblick auf die Doku mentation. Softwareentwicklung ist ein neuartiges Gebiet und hat erst seit kurzer Zeit 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. Die notwendige Qualifikation der Programmierer fehlte oft. Eine den gestellten Aufgaben entsprechende Ausbildung war hiiufig nicht sichergestellt. In den letzten lahren hat sich nun aufgrund der wirtschaftlichen Bedeutung und der Probleme bei der Entwicklung und Wartung von Programmen eine Disziplin herausgebildet, die mit "Software Engineering" umschrieben wird. Ihr Ziel besteht in der "Anwendung von Prinzipien, Methoden und Werkzeugen fUr die Technik und das Management der Softwareentwicklung und -wartung auf der Basis wissen schaftlicher Erkenntnisse und praktischer Erfahrungen sowie unter Beriicksichti gung des jeweiligen 6konomisch-technischen Zielsystems" (nach [IF). 1 Grundlagen und Techniken einer rationellen Programmentwicklung sind hier - nicht nur bezogen auf die Strukturierte Programmierung - umfassend dargestellt.