Klaus Kilberth JSP Die Reihe .. Professional Computing" des Verlags Vieweg richtet sich an professioneUe Anwender bzw. Entwickler von IT-Produkten. Sie will pra xisgerechte LOsungen fUr konkrete AufgabensteUungen anbieten, die slch durch Effizienz und Kundenorientlerung auszeichnen. Unter anderem sind erschienen: Die Felnplanunc von DV-sy.temen von Georg Liebetrau Microcontroiler-Prul. von Norbert Heesel und Werner Reichstein DB2 Common Server von Heinz Axel PUrner und Beate PUrner Softwarequalltit durch MeStool. von Reiner Dumke, Erik Poltin u. a. QM-Verfahrenaanwel.uncen fOr Softwarehenteller von Dieter Burgartz und Stefan Schmitz Die CD-ROM zum Software-Clualltitamanacement von Dieter Burgartz und Stefan Schmitz Bu.lne.aorlentlerte Procrammlerunc mit Java von Claudia Piemont Erfolerelche Datenbankanwenduncen mit SQL von Jtirgen Marsch und Jorg Fritze Softwaretechnlk mit Ada 95 von Manfred Nagl Unternehmen.orlentlerte Software-EntwickiunC mit Delphi von Daniel Basler Standardlaatlon Proce. ... ln IT von Kat Jakobs EffIzient Procrammleren mit CI und .NET von Andreas Solymosi und Peter Solymosi JSP von Klaus Kilberth Klaus Kilberth JSP Einfiihrung in die Methode des Jackson Structured Programming 8. Auflage ~ vleweg Die Deutsche Bibliothek - CIP-Einheitsaufnahme Ein Titeldatensatz fUr diese Publikation ist bei Der Deutschen Bibliothek erhiiltlich. 1. Auflage 1988 2., iiberarbeitete Auflage 1989 3., iiberarbeitete Auflage 1989 4., Auflage 1990 5., verbesserte und erweiterte Auflage 1991 6., verbesserte Auflage 1994 7., verbesserte und erweiterte Auflage 1998 8., iiberarbeitete Auflage September 2001 Alle Rechte vorbehalten © Friedr. Vieweg & Sohn Verlagsgesellschaft mbH, BraunschweiglWiesbaden, 2001 Der Verlag Vieweg ist ein Unternehmen der Fachverlagsgruppe BertelsmannSpringer. www.vieweg.de [email protected] Das Werk einschlieBlich aller seiner Teile ist urheberrechtlich geschiitzt. Jede Verwertung auBerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzuHissig und strafbar. Das gilt insbesondere fUr Vervielfaltigungen, Ubersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in dies em Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen-und Markenschutz-Gesetzgebung als frei zu betrachten waren und daher von jedermann benutzt werden diirften. Gedruckt auf saurefreiem und chlorfrei gebleichtem Papier Konzeption und Layout des Umschlags: Ulrike Weigel, www.CorporateDesignGroup.de ISBN-13: 978-3-528-74576-9 e-ISBN-13: 978-3-322-89213-3 001: 10.1007/978-3-322-89213-3 fUr Usa VI Preface It is a great pleasure to me to have the opportunity of writing a preface to Klaus Kilberth's book on JSP. He has been an enthusiastic and expert practitioner of JSP for several years, and he is also an experienced teacher of the method. So I was expecting his book to contain a careful exposition of JSP, including some of its newer aspects, and that expectation has been amply fulfilled. It is also good to see that he has included many exercises, along with their solutions, and that he has maintained the excellent JSP tradition of explanation by story-telling: in future I shall drink my German wine with increased pleasure, thinking of the admirable career of Gustav and how useful his instinctive understanding of process communication proved to be in the wine trade. I hope that you, the reader, will enjoy this book, and that you will benefit from its insights into the task of composing correct programs. London, April 1988 Michael Jackson VII Vorwort zur ersten Auflage Was kann einen dazu bewegen, heute, wo alles von Sprachen der vierten oder sogar n-ten Gene ration, von logischer Datenmodellierung, von nicht-prozeduraler Programmierung, von Kiinstlicher Intelligenz und vielen anderen zukunftstrachtigen Ansatzen spricht, weit mehr als ein Jahrzehnt nach dem Erscheinen von Michael A Jacksons Monographie "Principles of Program Design" [Jack75] ein Buch iiber JSP zu schreiben? Die Grunde dafiir sind vielfliltig. Zunachst sind da einige .AuIlerlichkei ten. Die Methode JSP hat sich im Laufe der Jahre zwar nicht in ihren Grundsatzen, aber doch in ihrer Darstellung gewandelt. Besonders die Verfiigbarkeit von leistungsflihigen Werkzeugen [ExpT87] flir JSP hat einen gewissen EinfluIl auf die Notation. Vieles ist prliziser geworden, neue Anwendungsbereiche, z.B. Datenbanken und Dialogprogrammierung traten mehr in den Vorder grund. Viele mit JSP erfolgreich abgeschlossene Projekte erbrachten eine FiilIe von Erfahrungen und Erkenntnissen. Das allgemeine Mp.thodenbewuIltsein hat erfreulich zugenommen und damit auch die Bereitschaft, sich mit diesen Dingen iiberhaupt auseinanderzusetzen. Aus eigener praktischer Erfahrung ist die Oberzeugung gewachsen, daB JSP als Entwurfsmethode einen konkreten, nachweisbaren (im allg. aber nur schwer meBbaren) Nutzen bewirkt. Ein weiterer Grund ist der offenkundige Bedarf, der in immer wieder gestellten Fragen von Studenten, Seminar teilnehmern oder Mitarbeitern von Projekten nach einer verstlindlichen und ausfiihrlichen Beschreibung von JSP zum Ausdruck kam. Neben Grunden gibt es auch Anllisse. Hier war der AnlaB, daB wir im Rahmen eines Projektes die Unterlagen flir die JSP-Seminare des mbp von Grund auf neu entwickelt haben. Diese Unterlagen [BoKi86] bilden die Basis fUr den Inhalt des vorliegenden Buches. Und der mbp Software & Systems GmbH sei herzlich gedankt, daB die Verwendung der Unterlagen groBziigig genehmigt wurde. Das Buch ist nicht als theoretische Abhandlung iiber Software-Engineering konzipiert, sondern es solI als Leitfaden und Handbuch zum Gebrauch von JSP bei praktischen Anwendungen dienen. Es wird bewuIlt darauf verzichtet, die Methode JSP mit anderen Ansatzen eingehend zu vergleichen. Erstens wiirde ein ernsthafter Vergleich den Rahmen dieses Buches bei weitem iibersteigen, auIlerdem miiB ten damr auch vergleichbare eigene Erfahrungen mit diesen Methoden vorliegen. Das Buch ist gedacht flir aIle, die die Methode JSP lernen und anwenden wollen, also Studierende mit DV-Interesse, Auszubildende im Bereich Informations-Technologie, alte Hasen mit dem Wunsch, etwas Neues kennenzulernen, aber auch flir diejenigen, die sich nur einen Eindruck von Strukturierter Programmierung nach Jackson verschaffen wollen. Spezielle Vorkenntnisse, abgesehen von etwas Grundwissen in Datenverarbeitung, werden nieht erwartet. DV-Einsteiger waren eigentlich die idealen Leser, da diese im allg. noch keine "Ablaufbrille" tragen, die man den anderen erst miih sam abnehmen muB. Es liegt im Wesen der Methode JSP, daB sie iiberwiegend in einem kommerziellen Umfeld eingesetzt wird. Entsprechend sind auch die Fallstudien und Beispiele gewlihlt. Wenn Beziige auf eine konkrete Programmiersprache notig sind, wird das stets COBOL sein. Es gibt aber auch eine Reihe erfolgrei cher Einsatze in der ProzeBdatenverarbeitung in Verbindung mit der Sprache C. "Algorithmiker" werden kaum eine ihrer vertrauten Anwendungen finden, aber vielleicht eine Menge von Ideen und Anregungen zum Strukturieren und Aufbereiten ihrer Probleme. Das Buch besteht aus vier Teilen: zwei Textteilen, der LOsung der Obungen und Fallstudien sowie einem Anhang. Der Textteil umfaBt im wesentlichen zwei Bereiche. Zunachst werden das Umfeld und die Grundlagen von JSP erlautert. Das geschieht in den ersten beiden Kapiteln. Der zweite Bereich, von Kapitel3 bis Kapitel 8, enthlilt die Anwendung von JSP auf Standard-Probleme und beschreibt, wie diese mit den Mitteln von JSP formalisiert und systematisch gelost werden konnen. 1m VIII Kapitel 9 werden Werkzeuge flir JSP kurz vorgestellt. AIle wichtigen Begriffe und Notationen sind im Anhang noch einmal zusammengefaBt. Die Methode wird im Textteil des Buches ausflihrlich bespro chen und anhand von vielen Fallbeispielen veranschaulicht. Fiir ein tieferes Verstandnis ist das LOsen der Ubungen und Fallstudien dringend zu empfehlen. Die LOsungen finden Sie geschlossen hinter dem Textteil. Bei den Fallstudien werden drei Bereiche behandelt: klassische Batchverarbeitung, Dialoganwen dung und Textverarbeitung. Es gibt flir jedes der drei Gebiete eine Aufgabenstellung, die nach und nach erweitert wird, urn den jeweils behandelten Stoff zu vertiefen und typische Problemstellungen aus dies en Bereichen exemplarisch zu losen. Durch die Beschrankung auf diese drei Aufgaben ist der Leser nicht bei jeder Fallstudie gezwungen, sich auf immer wieder neue Anwendungssituationen ein zustellen. AuBerdem wird dadurch das flir die Praxis wichtige Andern und Erweitern bestehender Entwiirfe urn zusatzliche Anforderunge§ = > FNielleicht auch mal etwas eintonig wirkt, wird zugunsten der besagten Vorteile in Kauf genommen. Datenbank-Anwendungen werden nicht getrennt betrachtet, sondern in Verbindung mit den drei Bereichen behandelt. An diesem Buch haben viele, mehr oder weniger direkt, mitgewirkt. Die Teilnehmer der JSP-Semi nare und die Horer meiner Vorlesungen haben durch viele Fragen und Anregungen einen wichtigen Beitrag zu Inhalt und Darstellung dieses Buches geleistet. Meine Kolleginnen und Kollegen beim mbp haben teils durch konkrete Mitarbeit an den Seminarunterlagen, teils mit Kritik, Ideen und Bemerkungen geholfen, den Stoff des Buches entsprechend aufzubereiten. Besonders intensiv haben sich Erwin Bude, Klaus Hasbron-Blume und Karl-Heinz Sylla mit der Rohfassung des Textes ausein andergesetzt und eine Reihe von Verbesserungen vorgeschlagen. Das miihsame Korrekturlesen hat Lisa Contzen auf sich genommen. Sieglinde Wachs und Karlheinz Sosenheimer von der Deutschen Lufthansa AG in Frankfurt haben mir Unterlagen zur Implementierung bei Stiicklisten zur Verfii gung gestellt. Corinna und Hugo Ullrich haben die kniffelige Ansteuerung des Laserdruckers vorbe reitet. Ihnen allen gilt mein ganz besonderer Dank. Allein hatte ich es wohl kaum geschafft. KOln, Mai 1988 Klaus Kilberth Vorwort zur aehten Auflage Wieder sind 3 Jahre seit der letzten Auflage vergangen, und unsere DV-Welt hat sich wieder ein Stiick weiter entwickelt. Wenn man jetzt nach Verweisen auf "JSP" sucht, findet man haufig einen ganz anderen Begriff: "Java Server Pages". Und bei einer Internet-Beurteilung eines der beiden neueren Biicher zu JSP gab es einen (Warn-) Hinweis, daB dieses Buch die Jackson-Methode behandelt, und nichts mit Java zu tun hat. 1m Grundsatz ist das sehr loblich. Jede Zeit hat ihre aktuellen Begriffe und Schlagwcrter. Aber es stimmt doch etwas nachdenklich, daB die allher gebrachte Bedeutung von JSP so schnell durch einen neuen Inhalt iiberlagert wird. Auch das ist nicht weiter schlimm. Nur es drangt sich die Frage auf, ob denn den Nutzern des neuen Inhalts die alte Bedeutung iiberhaupt bekannt ist. Oder, wenn wir den rein formal en Aspekt verlassen, ob sie je ernsthaft von der Methode JSP gehOrt haben. Ohne jetzt wehmiitig vergangenen Zeiten nach zutrauern, wiirde mich natiirlich interessieren, mit welchen methodischen Ansatzen all die schOnen neuen Anwendungen entwickelt werden, insbesondere wenn es darum geht, einzelne Komponenten / Module eines iibergreifenden Systementwurfs urnzusetzen. Und schon sind wir wieder bei der alten Frage: Was bringt uns heute JSP (gemeint ist diese Methode von Michael Jackson)? Nun, nachdem die letzten drei groBen Herausforderungen der Anwendungs entwicklung flir den GroBrechner iiberwunden sind, namlich: Postleitzahlen, Jahrtausendwechsel und Euroumstellung, sollte man meinen, daB es hier etwas ruhiger wird. Mitnichten. Folgt man den IX Uberlegungen von Kebschull und Spruth [KeSp01], so wird uns dieses Thema noch eine ganze Weile begleiten ("in den nachsten 50 Jahren"). Ob dann die alten Hasen vom Mainframe belachelte Exoten oder begehrte Spezialisten sein werden, wer weill. Das "Mainframe-Thema" ist aber nur ein Aspekt. Die vielleicht viel wichtigere Frage ist, was kann man von dem, was wir in der klassischen "Program mierwelt" gelemt / verstanden haben, auf die Uisung von Problemen in der "neuen" Welt (solI hei Ben: VML, XML, Java o.a.) iibertragen. Fiir die Entwicklung der Benutzer-Oberflache, "Prasenta tions-Schicht" auf dem Client, gibt es inszwischen bewahrte GVI-Klassenbibliotheken, da konnte man eventuell noch einen Beitrag flir das grundsatzliche Verstandnis flir die Gestaltung von Dialogen leisten, also eher auf der Schiene "Ausbildung", aber, abgesehen von reinen GroBrechner-Dialogen, nicht emsthaft bei der konkreten Vmsetzung. Almlich sieht es bei den Zugriffen auf Datenbestande aus. Die Zugriffsschicht ist heutzutage sauber gekapselt, und die Anwendung selbst sollte frei sein von spezifischen Details der Zugriffslogik respektive -physik. Folgen wir einer schlichten Drei Schichten-Architektur, bliebe also nur noch die Anwendunggsschicht selbst. Vnd hier treffen wir auf all die vertrauten Probleme der klassischen Batch-Verarbeitung. Denn Anwendungen haben auch schon mal Schnittstellen zu anderen Anwendungen, und diese Schnittstellen gilt es, sauber urnzu setzen. Gut, auch das wird man geeignet kapseln. Aber wer entwickelt diese "Kapseln"? Vnd wie? Vnd dann ist da noch das leidige Thema "Migration". Es wird uns bis ans Ende unserer EDV-, DV-, IT-Tage begleiten. Da wird mal wieder ein neues Anwendungssystem eingeflihrt (ganz normaler IT Alltag), die neuen, "modemen" Strukturen passen natiirlich nicht auf die alten. Oder es wird mal wieder "fusioniert", ein derzeit beliebtes "Gesellschaftsspiel". Wenn es nicht gerade eine feindliche Ubemahme wird, miissen die Anwendungen der neuen Partner zusammengeflihrt werden. Oder viel einfacher: Data Warehouse / Data Mining. Fiir "modeme" Anwendungsentwickler, die bei der Vm setzung einzelner Komponenten ihre volle Kreativitat entfalten (wie zu alten Assembler-Tagen, die alten PAPs waren eher eine methodische Offenbarung) konnten die bewahrten Konzepten von JSP ("Jackson") vielleicht doch von Nutzen sein. SchlieBlich gabe es auch eine nette Verwendungvon von JSP, rein auf der Ebene der Notation. Bei allem Vorbehalt gegeniiber graphischen Darstellungen (wenn sie zu umfangreich sind) ist die JSP Notation (attributierte Baume) eine elegante Variante zur graphischen Darstellung der drei logi schen Grundstrukturen. Die manchmal etwas kryptisch anmutende Beschreibung einer XML-Datei konnte man mit den Stilmitteln der JSP-Baume wunderschOn visualisieren. Das gilt analog auch flir die Darstellung von Daten-(Modell-)Strukturen. Nach den obigen Betrachtungen ist klar, daB einige Teile dieses Buches primiir dem grundsiitzlichen Verstiindnis dienen und bei der konkreten Vmsetzung ziemlich "GroBrechner-Iastig" sind. Das gilt flir die gesamte Online-Thematik, speziell deren Implementierung, aber auch flir Passagen iiber Daten banken. Da eine praktische Nutzung aber nicht wirklich ausgeschlossen werden kann, wurden diese Teile weiter in der neuen Auflage belassen. Ansonsten wurden wieder einige Stellen im Text und einige Verweise aktualisiert, urn dieses Buch in der heutigen IT-Landschaft zu positionieren. Wie schon bei friiheren Auflagen auch haben mich Karl-Heinz Sylla und Klaus Hasbron-Blume wieder bei der Uberarbeitung des Textes beraten und auf interessante Anwendungsmoglichkeiten von JSP hingewiesen. Ganz herzlichen Dank. KOln, Juli 2001 Klaus Kilberth XI Inhaltsverzeichnis Teil I: Grundlagen ......................................................................................................................... 1 1 Einfuhrung .................................................................................................................................................. 3 1.1 JSP, was es leistet und was nieht ...................................................................................................... 3 1.2 JSP-Programme verarbeiten Datenstrome ..................................................................................... 4 1.3 Datenstrome und Programme .......................................................................................................... 7 1.4 Die Notation von JSP ....................................................................................................................... 10 1.5 JSP und Strukturierte Programmierung ........................................................................................ 19 1.6 Die Methode JSP .............................................................................................................................. 20 1.7 JSP und JSD ....................................................................................................................................... 22 1.8 JSP in konkreten Projekten ............................................................................................................. 28 2 Grundlagen des JSP·Entwurfs ..................................................................................................... 31 2.1 Aufgabenstellung, SND und Beispiele .......................................................................................... 31 2.2 Datensehritt ....................................................................................................................................... 34 2.2.1 Ableiten der Daten-Strukturdiagramme ............................................................................. 34 2.2.2 Eintragen der l:l-Entspreehungen ...................................................................................... 58 2.3 Programmsehritt ................................................................................................................................ 72 2.3.1 Ableiten des Programm-Strukturdiagramms ..................................................................... 72 2.3.2 Konsistenzpriifung .................................................................................................................. 80 2.4 Anweisungssehritt ............................................................................................................................. 84 2.4.1 Ermitteln der Elementaranweisungen ................................................................................ 84 2.4.2 Zuordnen der Elementaranweisungen ................................................................................ 86 2.5 Textsehritt .......................................................................................................................................... 94 2.5.1 Ermitteln der Bedingungen ................................................................................................... 94 2.5.2 Ableiten des Strukturtextes ................................................................................................... 98 2.6 Implementierung ............................................................................................................................. 103 2.6.1 LogiseheJphysisehe Zugriffe ............................................................................................... 103 2.6.2 Codierung ............................................................................................................................... 106 2.6.3 Optimierung ........................................................................................................................... 110 2.6.4 JSP-Vorgehensmodell .......................................................................................................... 111 2.7 Fallstudien ........................................................................................................................................ 112 Teil II: Weiterfuhrung ............................................................................................................ 115 3 Gruppenwechselprobleme ............................................................................................................ 117 3.1 Formen des Gruppenweehsels ...................................................................................................... 117 3.2 Gruppensteuerung mit Gruppierwort ......................................................................................... 122 3.3 Fallstudien ........................................................................................................................................ 127 4 Fehlerbehandlung .............................................................................................................................. 131 4.1 Versehiedene Formen fehlerhafter Daten ................................................................................. 131 4.2 Fehlerbehandlung bei den drei Strukturkomponenten ............................................................ 135 4.3 Fallstudien ........................................................................................................................................ 139