Jörg Raasch Systementwicklung mit Strukturierten Methoden Ein Leitfaden für Praxis und Studium mit 270 Bildern Carl Hanser Verlag München Wien
Inhaltsverzeichnis Vorwort Inhaltsverzeichnis 1. Probleme der Software-Entwicklung 1 1.1 Qualität - Kosten - Zeit 1 1.2 Mängel existierender Systeme 3 1.3 Wirtschaftliche Aspekte 6 1.4 Weshalb scheitern Software-Projekte? 9 1.4.1 Projektmanagement 9 1.4.2 Konzept und Lösung 10 1.4.3 Veränderte Anforderungen 11 1.4.4 Akzeptanzprobleme 11 1.4.5 Methodische Unterstützung des Analytikers 12 1.4.6 Planung, Kontrolle und Steuerung 15 1.5 Vorgeschlagene Maßnahmen 16 1.5.1 Enduser - Produkte 16 1.5.2 Standard-Software einsetzen 16 1.5.3 Prototyping 17 1.5.4 Reverse Engineering 19 2. Anforderungen an das Software-Produkt 21 2.1 Qualitätsmerkmale aus Anwendersicht 22 2.1.1 Funktionserfüllung 22 2.1.2 Effizienz 23 2.1.3 Zuverlässigkeit 24 2.1.4 Benutzbarkeit 24 2.1.4.1 Software-Ergonomie 25 2.1.4.2 Anforderungen an die Benutzerschnittstelle 28 2.1.5 Sicherheit 29 2.2 Qualitätsmerkmale aus Entwicklersicht 30 2.2.1 Erweiterbarkeit 30 2.2.2 Wartbarkeit 31 2.2.3 Übertragbarkeit, Portabilität 32 2.2.3.1 Software-Architektur 32 2.2.3.2 Portabilität und Software-Architektur 34 2.2.4 Wiederverwendbarkeit 35 2.3 Systeme mit Sicherheitsverantwortung 37 2.3.1 Betriebliche und sicherhe'tsbezogene Funktionen 38 2.3.2 Risikoanalyse 39 2.3.3 Fehlerarten 41 2.3.4 Sicherheitsmaßnahmen 42
XII 2.4 2.4.1 2.4.2 2.4.2.1 2.4.2.2 2.4.2.3 2.4.3 2.5 2.5.1 2.5.2 2.5.2.1 2.5.2.2 2.6 Kommerzielle Anwendungen und Systeme Wirtschaftlichkeit Integration Definition des Begriffs "Integration" Schnittstellen zwischen Teilverfahren des integrierte Integration und Wirtschaftlichkeit Rechtsgrundsätze und Internes Kontroll-System Definition von Qualitätszielen Skalierung von Zielen Konzeptionelle Einordnung Akzeptanzbereiche Ergänzung durch Qualitätssicherung Zusammenfassung - Qualität 3. 3.1 3.1.1 3.1.1.1 3.1.1.2 3.1.1.3 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.6.1 3.1.6.2 3.1.6.3 3.1.6.4 3.1.6.5 3.1.6.6 3.2 3.3 3.4 Modelle und Methoden Modellbau Systeme Ereignisse, Auslöser, Reaktionen Spontane Hülle und geplanter Kern Interaktive Systeme Modell und Realität Modellierung von Systemen Anforderungen an das Methodendokument Syntax, Semantik und Pragmatik Ansätze zur Systemanalyse Anforderungen an eine Zerlegungsstrategie Funktionsorientierte (funktionale) Zerlegung Datenorientierte Zerlegung Essentielle Zerlegung Objektorientierte Zerlegung Trends Qualitätssicherung Basistechniken Methoden 4. SA Strukturierte Analyse 4.1 SA - Übersicht zur Strukturierten Analyse 4.1.1 Die Funktion 4.1.2 Rahmengliederung der Analyseschritte 4.1.3 Beispiel- Flugkarten-Verkauf 4.2 SA - Modellierung - Modellnotation 4.2.1 Grafische Mittel 4.2.1.1 Datenflußdiagramme - DFD 4.2.1.2 Verfeinerung
Inhaltsverzeichnis XIII 4.2.1.3 4.2.1.4 4.2.1.4.1 4.2.1.4.2 4.2.1.4.3 4.2.2 4.2.2.1 4.2.2.2 4.2.3 4.3 4.3.1 4.3.1.1 4.3.1.2 4.3.2 4.3.2.1 4.3.2.2 4.3.2.3 4.3.2.4 4.3.2.5 4.3.3 4.3.4 4.3.4.1 4.3.4.2 4.3.4.3 4.3.4.4 4.3.4.5 4.3.4.6 4.3.4.7 4.3.5 4.3.5.1 4.3.5.2 4.3.5.3 4.3.5.4 4.3.5.5 4.4 4.4.1 4.4.1.1 4.4.1.2 4.4.1.3 4.4.1.4 4.4.1.5 4.4.1.6 4.4.1.7 4.4.1.8 4.4.2 4.4.2.1 Syntaktische Regeln Semantische Regeln Namensgebung Datensichten Fehlerbearbeitung Textliche Mittel Prozeßspezifikationen - PSPEC Datenkatalogeinträge Formale Qualität und Balance SA - Modellbewertung Die Essenz eines Systems Perfekte Technologie Bestandteile der Essenz Essentielle Zerlegung Erkennen von Ereignissen Ereignisorientierte Zerlegung des Systems in essentielle Aktivitäten Objektorientierte Zerlegung des essentiellen Speichers Resultat dieser Zerlegung Das essentielle Modell Prinzipien der essentiellen Modellierung Die Anatomie von Systemen Beispiel - Angebote erstellen Infrastruktur Administration Die Inkarnation eines Systems Systeme und Prozessoren Zusammenfassung Vorteile der essentiellen Zerlegung Das Kommunikationsproblem Fünf Stufen beim Erwerb von Fähigkeiten Objektive Probleme der Kommunikation Subjektive Probleme des Anwenders Fehlverhalten des Analytikers Abstimmung mit dem Anwender SA - Methoden Eine neue Essenz finden Ziele des neuen Systems festlegen Grundlegende Aktivitäten finden Speicher des Systems finden Verwaltungsaktivitäten finden Vorläufiges essentielles Modell erstellen Die Vorgehens-Strategie Beispiel Auftragsbearbeitung Rückfragen beim Anwender (Teilweise) Modellierung eines Vorgängersystems PI erheben 99 100 100 102 102 102 102 106 108 109 109 109 111 114 114 117 120 121 124 124 127 128 129 129 130 132 134 134 135 135 136 137 137 139 141 142 142 143 143 144 144 145 145 154 156 157
XIV Inhaltsverzeichnis 4.4.2.2 PI expandieren 157 4.4.2.3 Das expandierte PI reduzieren 158 4.4.2.4 Essentielle Fragmente klassifizieren 159 4.4.2.5 Eine essentielle Aktivität ableiten 160 4.4.3 Essentielle Aktivitäten zu einem Modell integrieren 162 4.4.3.1 Eine essentielle Aktivität integrieren 162 4.4.3.2 Das globale essentielle Modell erstellen 163 4.4.4 Die Modellqualität optimieren 163 4.4.4.1 Aufteilung der Datenelemente auf Speicher optimieren 163 4.4.4.2 Verfeinerte PSPECs erzeugen 163 4.4.4.3 Die essentielle Ebene vergröbern 164 4.4.4.4 Zugriff auf Daten anderer Kontexte 165 4.4.4.5 Beziehungstypen im SA-Modell 165 4.4.5 Den Analyse-Aufwand reduzieren 167 4.4.5.1 Eine Analyse des Altsystems durchführen 167 4.4.5.2 Blitzen 168 4.4.6 Regeln zur Kontextabgrenzung 169 4.4.6.1 Elementare Regeln 171 4.4.6.2 Kontexte zu Superkontexten zusammenfassen 172 4.4.6.2.1 Beispiel Teil 1 - eine stark vereinfachte FIBU 173 4.4.6.2.2 Beispiel Teil 2 - Zusammenführung mit der vereinfachten Auftragsbearbeitung 174 4.4.6.3 Elementarkontexte und Superkontexte 175 4.4.6.4 Praktische Konsequenzen 177 4.4.6.5 Beispiele 178 4.4.7 Zusammenfassung der Methodenschritte 180 4.4.8 Systemstatistiken erstellen (Mengengerüste) 180 4.5 SA - Zwischen Analyse und Design 183 4.5.1 Ein essentielles Modell konzeptionell weiterentwickeln 185 4.5.1.1 Essentielle Minimodelle entwerfen 186 4.5.1.2 Essentielle Mini-Modelle integrieren 187 4.5.2 Eine Inkarnation der Essenz auswählen 189 4.5.2.1 Globale Sicht 189 4.5.2.2 Aus Sicht einer einzelnen essentiellen Aktivität (Transformationsanalyse) 191 4.5.2.3 Aus Sicht aller essentiellen Aktivitäten eines Anwenders (Transaktionsanalyse) 192 4.5.2.4 Beispiel Autowerkstatt 193 5. RT Strukturierte Real-Time-Analyse 199 5.1 RT - Übersicht zur Methode 199 5.1.1 Grenzen der SA bei technischen Anwendungen 199 5.1.1.1 Kommerzielle und technische Systeme 201 5.1.1.2 Beispiel - Arztpraxis 202 5.1.2 Das zusammengesetzte Modell aller Anforderungen 207 5.1.3 Endliche Automaten 208
Inhaltsverzeichnis xv 5.1.3.1 5.1.3.2 5.1.3.2.1 5.1.3.2.2 5.1.3.3 5.2 5.2.1 5.2.2 5.2.2.1 5.2.2.2 5.2.3 5.2.4 5.2.4.1 5.2.4.2 5.2.4.3 5.2.4.4 5.2.4.4.1 5.2.4.4.2 5.2.4.4.3 5.2.4.4.4 5.2.5 5.2.6 5.3 5.3.1 5.3.2 5.3.3 5.3.3.1 5.3.3.2 5.3.3.3 5.3.4 5.3.5 5.4 5.4.1 5.4.1.1 5.4.1.2 5.4.1.3 5.4.2 5.4.2.1 5.4.2.2 5.4.2.3 5.4.3 5.4.3.1 5.4.3.2 5.4.3.3 5.4.4 5.4.4.1 Kombinatorische Maschinen Sequentielle Maschinen Zustandsdiagramme Der Zustandsbegriff Die Kontrollebene als endlicher Automat RT - Modellierung Daten- und Kontrollflüsse Modellnotation Balken, CSPECs und Kontrollflüsse Terminatoren, Prozesse und Speicher Beispiel - Wischer Aufbau der Kontrollschicht Kontroll-Kontextdiagramm (CCD) Kontrollflußdiagramm (CFDJ und Kontrollprozesse Quellen und Senken der Kontrollflüsse Kontrollflußverarbeitung DT - Decision Tables - Entscheidungstabellen STD - State Transition Diagram - Zustandsdiagramm SEM - State Event Matrix - Zustands-Ereignis-Matrix PAT - Process Activation Table - Prozeßaktivierungstabelle Schnittstellen zur Prozeßschicht Konsistenzprüfungen RT - Modellbewertung Wann RT nutzen? Beispiel - Drehzahl regeln Essentielle Zerlegung Implementationsfreiheit Ergänzung der Prozeßebene Intern erkannte Ereignisse Beispiel - Kamera steuern Behandlung der Zeit RT - Methoden Eine neue Essenz finden Erweiterung der Ereignistabelle Die Essenz modellieren Die Kontroll-Schicht entwickeln Das Anforderungsmodell erweitern Die Architektur-Schablone Das Inkarnationsmodell Inkarnationsmodell Kamera steuern Architekturmodelle Notation von Architekturmodellen AFD und AID Architekturmodell Kamera steuern Das Architekturmodell erstellen Der Architekturkontext 209 209 209 210 210 211 212 213 214 215 216 220 220 221 221 222 223 223 224 224 225 226 227 227 229 231 231 232 233 233 238 239 239 240 241 241 242 242 243 244 246 246 248 248 249 250
XVI Inhaltsverzeichnis 5.4.4.2 Architekturmoduln identifizieren 250 5.4.4.3 Architekturverbindungen entwickeln 252 5.4.4.4 Architekturverbindungsmodell Kamera steuern 252 5.4.5 Die HW- und SW-Architektur modellieren 254 5.4.6 Die SW-Architektur entwickeln 255 5.4.7 Moduldesign Kamera steuern 255 6. 6.1 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.1.1 6.3.1.2 6.3.1.2.1 6.3.1.2.2 6.3.1.2.3 6.3.1.3 6.3.1.4 6.3.2 6.3.2.1 6.3.2.2 6.3.2.3 6.3.2.4 6.3.2.4.1 6.3.2.4.2 6.3.3 6.3.3.1 6.3.3.2 6.3.3.3 6.4 6.4.1 6.4.2 6.4.2.1 6.4.2.2 6.4.2.3 6.4.2.4 6.4.2.5 6.4.3 6.4.4 SM Semantische Modellierung der Datenstruktur SM - Vorbemerkungen SM - Modellierung Begriffsbestimmungen Beispiel Vorlesungsbesuch Modellnotation Erweiterte Modellnotation Alternative Notationen SM - Modellbewertung Das Relationenmodell Relationen Integrität Entity-Integrität Referentielle Integrität Fremdschlüssel-Regeln Charakterisierung des relationalen Modells Datenmodellierung Normalisierung Beispiel Lehrgangsreferat Funktionale Abhängigkeit Die Normalformen Beispiel zur Normalisierung - Student und Vorlesung Version 1 - Herleitung aufgrund der Normalisierungsregeln Version 2 - Vorgehensweise des Praktikers Konstruktion von Primärschlüsseln Das Problem Identnummern Primärschlüssel-Epilog SM - Methoden Beispiel Anschriften - die Probleme Entity-Analyse (Top-Down) Entitytypen erkennen Beziehungstypen erkennen Attribute erkennen Das ER-Modell darstellen Weitere Empfehlungen Entity-Synthese (Bottom-Up) Das normalisierte Entity-Modell 257 257 258 258 259 261 262 264 267 267 268 271 271 272 273 275 276 281 282 284 285 288 289 290 291 291 295 298 299 299 302 302 304 304 304 304 306 307
Inhaltsverzeichnis XVII 6.4.5 6.4.6 6.4.7 6.4.8 6.4.8.1 6.4.8.2 6.4.8.2.1 6.4.8.2.2 6.4.8.2.3 6.4.8.3 6.4.8.4 6.4.9 6.4.9.1 6.4.9.2 6.4.9.3 6.4.9.3.1 6.4.9.3.2 6.4.9.3.3 6.4.9.3.4 6.4.9.4 Strukturierte Darstellung Lebenszyklen von Entitytypen Das essentielle Modell Logisches Datendesign Das relevante Entity-Modell Zugriffspfadanalyse Beschreibung der Zugriffspfadanalyse Notation Einfache Beispiele Das quantifizierte Entity-Modell Beispiel Anschriften - Zugriffspfadanalyse Physisches Datendesign Performance Das Entity-Modell partiell denormalisieren Das Datenmodell an die Implementierung anpassen Abbildung von Entitytypen Abbildung von Attributen Abbildung von Beziehungstypen Definition von Sekundärschlüsseln Beispiel Anschriften - Relationenmodell zur Implementierung 312 314 315 315 315 316 316 316 316 317 317 320 321 321 329 329 329 329 330 330 7. 7.1 7.1.1 7.1.1.1 7.1.1.2 7.1.2 7.1.3 7.2 7.2.1 7.2.2 7.2.2.1 7.2.2.2 7.2.3 7.2.3.1 7.2.3.2 7.2.3.3 7.2:3.4 7.2.3.5 7.3 7.3.1 7.3.1.1 7.3.1.3 7.3.1.4 7.3.1.5 7.3.1.6 SD Strukturiertes Design SD-Vorbemerkungen Abstraktion Funktionale Abstraktion Datenabstraktion Was ist ein Modul? Weshalb Modularisieren? SD-Modellierung Hierarchiediagramm - Programmorganisationsplan Modellnotation - Structure-Chart Beispiel für einen Structure-Chart Eigenschaften des Structure-Charts Modul-Spezifikation Modulkopf Spezifikation mit Preconditions / Postconditions Spezifikation auf SA-Basis Spezifikation mit Pseudocode Formale Spezifikation SD-Modellbewertung Kopplung Datenkopplung Kontrollkopplung Globale Kopplung Inhaltskopplung Zusammenfassung 333 334 334 335 335 337 338 338 338 339 342 342 342 343 344 345 345 346 348 348 348 350 354 355 356
II Inhaltsverzeichnis 3.2 Zusammenhalt 356 3.2.1 Funktionaler Zusammenhalt 357 3.2.2 Sequentieller Zusammenhalt 357 3.2.3 Kommunizierender Zusammenhalt 358 3.2.4 Problembezogener (prozeduraler) Zusammenhalt 358 3.2.5 Zeitlicher Zusammenhalt 358 3.2.6 Programmstruktureller Zusammenhalt 358 3.2.7 Zufälliger Zusammenhalt 359 3.2.8 Zusammenfassung 359 3.3 Weitere Kriterien 360 3.3.1 Faktorisieren 360 3.3.2 Decision-Split vermeiden 362 3.3.3 Balancierte Systeme 363 3.3.4 Fehlerverarbeitung 365 3.3.5 Prüfen 368 3.3.6 Moduln mit Gedächtnis 369 3.3.7 Programmstruktur der Datenstruktur anpassen 369 3.3.8 Information-Cluster 370 3.3.9 Initialisierung und Terminierung 371 3.3.10 Restriktiv vs. allgemein 371 3.3.11 Fan-Out 373 3.3.12 Fan-In 373 3.3.13 Die Form des Systems 373 3.3.14 Semantische Konsistenz 374 4 SD-Methoden 375 4.1 Konstruktion des neuen Systems 376 4.1.1 Subsysteme nach Betriebsart abgrenzen 376 4.1.2 Implementationsgrenzen festlegen 377 4.1.3 Weitere Unterteilung 378 4.1.4 Essentielle Prozesse fragmentieren 378 4.1.5 Implementationsabhängige Prozesse hinzufügen 379 4.1.6 Auswahl von Hardware und Software 379 4.2 Transaktionsanalyse 380 4.3 Transformationsanalyse 382 4.4 Die Systemstruktur 386 4.5 Physisches Moduldesign 387 OOA Objektorientierte Analyse 389 1 OOA-Vorbemerkungen 390 2 OOA-Modellbewertung 391 2.1 Die Analysemethoden 391 2.1.1 Funktionale Zerlegung 391 2.1.2 Strukturierte Analyse 392 2.1.3 Semantische Datenmodellierung 393 2.1.4 Zusammenfassung bisheriger Methoden 394 2.2 Objektorientierte Programmierung 396
Inhaltsverzeichnis XIX 8.2.2.1 Geschichte 396 8.2.2.2 Objekte und Mitteilungen 396 8.2.2.3 Klassen und Instanzen 398 8.2.2.4 Vererbung 398 8.2.2.5 Klassenhierarchie 399 8.2.2.6 Polymorphismus 399 8.2.2.7 Frühe und späte Bindung 400 8.2.3 Charakterisierung der Objektorientiertheit 400 8.3 OOA-Methoden 400 8.3.1 Objekte identifizieren 401 8.3.2 Strukturen identifizieren 403 8.3.3. Subjekte definieren 404 8.3.4 Attribute und Instanzverbindungen definieren 404 8.3.5 Methoden und Mitteilungsverbindungen definieren 405 8.4 OOA und die Strukturierten Methoden 407 8.4.1 Bewertung der OOA 407 8.4.2 Bestandsaufnahme 408 8.4.3 Vorgehensweise 409 9. Projektmanagement 411 9.1 Vorgehensmodelle 412 9.1.1 Das Wasserfallmodell 412 9.1.2 Das Prototypingmodell 413 9.1.3 Das Spiralmodell 414 9.1.4 Evolutionäre Auslieferung 415 9.1.5 Weitere Ansätze 417 9.2 Strukturiertes Projektmanagement 417 9.2.1 Definition des Strukturierten Projektmanagements 419 9.2.2 Beispiel - DBMS-Entwicklung 420 9.2.3 Eigenschaften des Strukturierten Projektmanagements 422 Literaturverzeichnis 425 Index 437 Anhang: Anfdorderungen an Benutzerschnittstellen 449