Inhalt
Vorwort (13) Vorwort (14) Über die Autoren (20) TEIL I. AGILE SOFTWAREENTWICKLUNG (21) Kapitel 1. Agile Praktiken (23) - Agile Allianz (24)
- Manifest der Agile Alliance (24)
- Regeln (27)
- Fazit (29)
- Bibliographie (29)
Kapitel 2. Ein Überblick über Extreme Programming (31) - Extreme Programmierpraktiken (31)
- Der Kunde ist ein Teammitglied (32)
- Benutzergeschichten (32)
- Kurzzyklen (32)
- Abnahmetests (33)
- Paarprogrammierung (33)
- Testgetriebene Programmierung (34)
- Miteigentum (34)
- Kontinuierliche Integration (34)
- Ein gleichmäßiges Tempo (35)
- Offener Arbeitsbereich (35)
- Planspiel (35)
- Schlichtes Design (36)
- Refactoring (37)
- Metapher (37)
- Fazit (38)
- Bibliographie (38)
Kapitel 3. Planung (39) - Erste Erkundung (40)
- Prototyping, Division und Geschwindigkeit (40)
- Planung für Distributionsversionen 41
- Iterationen planen 41
- Aufgabenplanung (41)
- Die Iterationssequenz (42)
- Anwendung (43)
- Bibliographie (43)
Kapitel 4. Testen - Testgetriebene Programmierung (45)
- Ein Beispiel für ein Projekt im „Test first“-Stil (46)
- Prüfisolierung (47)
- Unerwartetes Eliminieren von Feedback
- Abnahmetests (49)
- Abnahmetestbeispiel (50)
- Architektur "nebenbei" (51)
- Anwendung (51)
- Bibliographie (52)
Kapitel 5. Refactoring (53) - Primzahlen erzeugen – ein einfaches Refactoring-Beispiel 54
- Fazit (62)
- Bibliographie (63)
Kapitel 6. Die Programmierepisode (65) - Kegelspiel (66)
- Anwendung (98)
TEIL II. AGILES PROJEKT (101) - Symptome von schlechtem Design 101
- Regeln (101)
- Düfte und Regeln (102)
- Bibliographie (102)
Kapitel 7. Was ist ein agiles Projekt? (103) - Was ist mit der Software los? (103)
- Design Smells - Der Geruch kaputter Software (104)
- Was bringt Software zum Untergang? (106)
- Agile Teams lassen Software nicht kaputt gehen (106)
- Programm kopieren (106)
- Ein Beispiel für ein Kopierprogramm, das gemäß der agilen Methodik erstellt wurde (109)
- Woher wussten agile Entwickler, was zu tun ist? (110)
- Halten Sie Ihr Projekt in Bestform 110
- Anwendung (111)
- Bibliographie (111)
Kapitel 8. SRP – Prinzip der einheitlichen Haftung (113) - SRP - Grundsatz der Einzelverantwortung 113
- Was ist Verantwortung? (115)
- Trennung verbundener Verantwortlichkeiten 115
- Haltbarkeit (116)
- Anwendung (116)
- Bibliographie (116)
Kapitel 9. OCP - Das Open-Closed-Prinzip (117) - OCP - Auf-Zu-Prinzip (117)
- Beschreibung (118)
- Der Schlüssel ist die Abstraktion (118)
- Formanwendung (119)
- Verstoß gegen OCP-Regeln (120)
- Einhaltung des OCP-Prinzips (121)
- Ich gebe zu. Ich habe gelogen (122)
- Vorhersage und "natürliche" Struktur (122)
- Haken setzen (123)
- Verwenden von Abstraktionen, um einen expliziten Abschluss zu erhalten 124
- Verwenden eines „Datenkontroll“-Ansatzes, um einen Abschluss zu erreichen
- Anwendung (126)
- Bibliographie (126)
Kapitel 10 LSP - Liskov-Substitutionsprinzip 127 - LSP - Liskov-Substitutionsprinzip 127
- Ein einfaches Beispiel für einen Verstoß gegen LSP-Regeln
- Quadrate und Rechtecke – eine subtilere Verletzung der LSP-Regel 129
- Das eigentliche Problem (131)
- Korrektheit ist nicht angeboren (132)
- In der IS-A-Beziehung geht es um Verhalten (132)
- Vertragsgestaltung (132)
- Angeben von Verträgen in Unit-Tests 133
- Ein echtes Beispiel (133)
- Motivation (133)
- Probleme (135)
- Lösung Inkompatibel mit LSP
- Eine LSP-konforme Lösung 136
- Sekretion statt Vererbung (137)
- Heuristiken und Konventionen
- Degenerierte Funktionen in abgeleiteten Klassen 140
- Auslösen von Ausnahmen von abgeleiteten Klassen 140
- Anfrage (140)
- Bibliographie (140)
Kapitel 11. DIP - Das Prinzip der Abhängigkeitsinversion 139 - DIP - Das Prinzip der Abhängigkeitsinversion 141
- Aufteilung in Schichten 142
- Eigentumsumkehr (142)
- Abhängigkeit von der Abstraktion 143
- Ein einfaches Beispiel (144)
- Die benötigten Abstraktionen finden 145
- Ofenbeispiel 146
- Dynamischer und statischer Polymorphismus
- Anwendung (148)
- Bibliographie (148)
Kapitel 12. ISP – Schnittstellentrennungsregel 149 - Überladene Schnittstellen
- Unterschiedliche Clients bedeuten separate Schnittstellen
- Die Macht der Kunden, Schnittstellen zu beeinflussen 151
- ISP - Prinzip der Schnittstellentrennung 151
- Klassenschnittstellen versus Objektschnittstellen
- Trennung durch Delegation (152)
- Trennung durch Mehrfachvererbung 153
- Ein Beispiel für eine ATM-Benutzeroberfläche (153)
- Polyaden und Monaden (158)
- Anfrage (159)
- Bibliographie (159)
TEIL III. FALLSTUDIE: DAS LOHNSYSTEM (161) - Restspezifikation des Abrechnungssystems (162)
- Übung 162
- Anwendungsfall Nr. 1: Hinzufügen eines neuen Mitarbeiters 162
- Anwendungsfall Nr. 2: Einen Worker löschen (163)
- Anwendungsfall Nr. 3: Bereitstellung des Arbeitsblatts (163)
- Anwendungsfall Nr. 4: Liefern eines Verkaufsberichts (163)
- Anwendungsfall 5: Übermittlung von Informationen über die Abgabe an eine Gewerkschaft (164)
- Anwendungsfall 6: Änderung von Mitarbeiterdaten (164)
- Anwendungsfall Nr. 7: Erstellen der Gehaltsabrechnung für den Tag (164)
Kapitel 13. Befehl „Entwurfsmuster“ und aktives Objekt - Einfache Befehle
- Verkäufe (167)
- Aufschlüsselung des physischen und zeitlichen Codes 168
- Aufschlüsselung des zeitlichen Codes (168)
- Die Undo-Methode 169
- Aktive Einrichtung (169)
- Fazit (173)
- Bibliographie (173)
Kapitel 14. Die Vorlagenmethode und -strategie: Vererbung versus Delegation 175 - Die Schablonenmethode 176
- Missbrauch des Musters 178
- Bubble-Sortierung
- Strategie (181)
- Anwendung (185)
- Bibliographie (185)
Kapitel 15. Fassaden- und Mediator-Entwurfsmuster (187) - Fassade (187)
- Vermittler (188)
- Anfrage (190)
- Bibliographie (190)
Kapitel 16 Die Singleton- und Monostate-Entwurfsmuster 191 - Einling (192)
- Vorteile der Verwendung des Singleton-Musters
- Kosten für die Verwendung des Singleton-Musters
- Das Singleton-Entwurfsmuster in der Praxis 193
- Monostat (194)
- Vorteile der Verwendung des Monostate-Musters
- Monostaatliche Kosten 196
- Das Monostate Design Pattern in der Praxis 196
- Fazit (200)
- Bibliographie (200)
Kapitel 17. Das Entwurfsmuster Das Null-Objekt 201 - Anwendung (204)
- Bibliographie (204)
Kapitel 18. Fallstudie: Gehaltsabrechnungssystem. Die erste Iteration 205 - Einfügung (205)
- Analyse nach Anwendungsfall
- Mitarbeiter hinzufügen
- Entfernung von Mitarbeitern (208)
- Abgabe des Arbeitsblattes (209)
- Zustellung von Umsatzberichten (209)
- Übermittlung von Informationen über die Abgabe an eine Gewerkschaft (210)
- Änderung von Mitarbeiterdaten (210)
- Auszahlungen (212)
- Reflexion: Was haben wir gelernt? (214)
- Die Abstraktionen finden, die Sie brauchen 214
- Abstraktion planen (214)
- Widerrufsrecht (215)
- Gewerkschaftsmitgliedschaft (216)
- Anfrage (216)
- Bibliographie (216)
Kapitel 19. Fallstudie: Gehaltsabrechnungssystem. Implementierung (217) - Mitarbeiter hinzufügen (218)
- Datenbank Lohnsystem (219)
- Anwenden der Mustervorlagenmethode zum Hinzufügen von Mitarbeitern
- Entfernung von Mitarbeitern (223)
- Arbeitskarten, Verkaufsberichte und Beiträge (225)
- Änderung von Mitarbeiterdaten (231)
- Umgliederung (235)
- Was habe ich geraucht? (240)
- Auszahlungsabwicklung (244)
- Wollen wir, dass Entwickler Geschäftsentscheidungen treffen? (246)
- Abwicklung von Zahlungen an Mitarbeiter mit Festgehalt (246)
- Entgelte für Mitarbeiter im Stundensystem (248)
- Abrechnungszeiträume: Ein Designproblem 251
- Hauptprogramm (257)
- Datenbank (257)
- Zusammenfassung des Gehaltsabrechnungssystemdesigns (258)
- Geschichte (259)
- Ressourcen (259)
- Bibliographie (259)
TEIL IV. AUFTEILUNG DES LOHNSYSTEMS IN PAKETE (261) Kapitel 20. Verpackungsdesignprinzipien 263 - Entwerfen mit Paketen? (263)
- Granularität: Paketkonsistenz
- Äquivalenz und Verteilung von Codewiederverwendung (REP)
- Kollektives Mehrwegprinzip (CRP) (265)
- Kollektives Aussperrungsprinzip (CCP) (266)
- Zusammenfassung der Paketkonsistenz 266
- Stabilität: Die Prinzipien der Paketkopplung
- Das Prinzip der azyklischen Abhängigkeiten (ADP) 267
- Wöchentliche Builds (267)
- Beseitigung von Abhängigkeitszyklen 268
- Die Auswirkungen von Zyklen in einem Paketabhängigkeitsdiagramm 269
- Zyklus brechen 270
- Variationen (270)
- Auf- und Ab-Design (271)
- Das stabile Abhängigkeitsprinzip (SDP) 272
- Stabilität (272)
- Stabilitätsmetriken
- Nicht alle Pakete müssen stabil sein
- Wohin soll die Umsetzung des High-Level-Designs gehen? (276)
- Das Prinzip der stabilen Abstraktion (SAP) 276
- Messen von Abstraktionen 276
- Hauptreihe (277)
- Entfernung von der Hauptstrecke (278)
- Anfrage (280)
Kapitel 21. Das Factory-Design-Pattern - Der Abhängigkeitszyklus 283
- Tauschfabriken (284)
- Verwenden des Fabrikmusters zum Erstellen von Testreihen
- Bedeutung der Nutzung von Fabriken (286)
- Anwendung (287)
- Bibliographie (287)
Kapitel 22. Fallstudie: Das Lohnsystem (Teil 2) (289) - Paketstruktur und Notation
- Anwendung des Sammelschließungsprinzips (CCP) (291)
- Code Reuse and Distribution Equivalency (REP) Anwendung 292
- Kupplungen und Kapselung
- Metriken (296)
- Anwenden von Indikatoren auf eine Lohnabrechnungsanwendung (297)
- Objektfabriken (300)
- Objektfabrik für das TransactionImplementation-Paket (300)
- Fabriken initialisieren
- Wiederherstellung der Grenzen der Konsistenz
- Die endgültige Struktur von Paketen
- Anfrage (304)
- Bibliographie (304)
TEIL V FALLSTUDIE: WETTERSTATION (305) Kapitel 23. Das zusammengesetzte Entwurfsmuster 307 - Beispiel: Zusammengesetzte Befehle 308
- Mehrfach oder nicht mehrfach 309
Kapitel 24 Der Beobachter – Entwicklung des Codes zu Muster 311 - Digitaluhr (311)
- Anwendung (326)
- Verwenden von Diagrammen in diesem Kapitel 327
- Das Beobachter-Entwurfsmuster
- Verwalten von objektorientierten Entwurfsregeln für das Beobachter-Entwurfsmuster
- Bibliographie (329)
Kapitel 25: Entwurfsmuster Abstract Server und Bridge 331 - Der Entwurfsmuster-Abstraktionsserver 332
- Wer ist Eigentümer der Schnittstelle? (333)
- Das Adapterdesignmuster 333
- Entwurfsmuster Der Adapter als Klasse
- Modemproblem. Adapter und das LSP-Prinzip 334
- Das Brückenentwurfsmuster 338
- Anwendung (339)
- Bibliographie (340)
Kapitel 26. Die Proxy- und Stairway-to-Heaven-Entwurfsmuster – Verwalten externer APIs Rezept 341 - Das repräsentative Designmuster (342)
- Implementierung des Entwurfsmusters Proxy in der Warenkorbanwendung (345)
- Zusammenfassung des repräsentativen Entwurfsmusters 356
- Unterstützung für Datenbanken, Middleware und externe APIs (357)
- Treppe zum Himmel (359)
- Ein Beispiel für die Verwendung des Stairway to Heaven-Musters (360)
- Anwendung (365)
- Andere Designmuster, die mit Databases 365 verwendet werden können
- Anwendung (366)
- Bibliographie (366)
Kapitel 27. Fallstudie: Wetterstation (367) - Cloud-Unternehmen (367)
- WMS-LC-Software (369)
- Sprachauswahl (369)
- Nimbus-LC-Systemsoftwareprojekt (369)
- 24-Stunden-Verlauf und Aufzeichnung (382)
- Implementieren von HiLo-Algorithmen 384
- Anfrage (391)
- Bibliographie (391)
- Überblick über die Nimbus-LC-Softwareanforderungen 391
- Betriebliche Anforderungen (391)
- 24-Stunden-Verlauf (392)
- Benutzerkonfiguration (392)
- Administrative Anforderungen (392)
- Nimbus-LC-Anwendungsfälle 393
- Schauspieler (393)
- Anwendungsfälle (393)
- Historie der Messungen (393)
- Konfiguration (393)
- Verwaltung (393)
- Nimbus-LC-Distributionsfreigabeplan (394)
- Einfügung (394)
- Ausgabe I (394)
- Bedrohungen (394)
- Projektprodukte (395)
- Auflage II (395)
- Implementierte Anwendungsfälle
- Bedrohungen (395)
- Projektprodukte (395)
- Auflage III (396)
- Implementierte Anwendungsfälle
- Bedrohungen (396)
- Projektprodukte (396)
TEIL VI. FALLSTUDIE: ETS (397) Kapitel 28. Das Besucher-Entwurfsmuster 399 - Designmuster Familienbesucher (400)
- Besucher (400)
- Entwurfsmuster Der Besucher funktioniert wie eine Matrix 403
- Das Entwurfsmuster Azyklischer Besucher (403)
- Design Pattern The Visitor Works Like a Sparse Matrix 407
- Verwenden des Besucher-Entwurfsmusters in Berichtsgeneratoren
- Andere Verwendungen für das Visitor-Entwurfsmuster
- Das Dekorateur-Entwurfsmuster 413
- Mehrere Dekorateure (416)
- Das Entwurfsmuster-Erweiterungsobjekt 418
- Anfrage (426)
- Bibliographie (426)
Kapitel 29 Das Bedingungsdesignmuster 427 - Überprüfung endlicher Zustandsautomaten 427
- Implementierungstechniken
- Verschachtelte Switch-/Case-Anweisungen 429
- Interpretieren der Übergangstabelle 432
- Das Bedingungsdesignmuster 433
- SMC - Compiler für Zustandsmaschinen (436)
- Wann sollten Zustandsmaschinen verwendet werden? (439)
- High-Level-GUI-Handhabungsstrategien 439
- Controller der Interaktion mit der GUI
- Verteiltes Rechnen
- Anfrage (441)
- Einträge (441)
- Implementieren der Turnstile.java-Klasse unter Verwendung der Übergangstabelleninterpretation
- Die vom SMC-Compiler generierte Turnstile.java-Klasse und andere unterstützende Dateien
- Bibliographie (447)
Kapitel 30 Das ETS-Framework 449 - Einfügung (449)
- Überprüfung der Projektinformationen 449
- Frühzeit 1993 - 1994 (451)
- Rahmen? (451)
- Rahmen (452)
- Die Band von 1994 (452)
- Laufzeit (452)
- Strategie (452)
- Ergebnisse (453)
- Rahmenkonstruktion (454)
- Allgemeine Anforderungen für Bewertungsanträge
- Das Scoring-Framework-Design 456
- Musteranwendungsfall Musterverfahren 459
- Schreibe einmal eine Schleife (460)
- Gemeinsame Anforderungen für die Prüfungsanmeldung (463)
- Das Passing Framework Design (463)
- Task-Manager-Architektur
- Anfrage (472)
- Bibliographie (472)
Anhang A. UML-Notation. Teil I: Das CGI-Beispiel 473 - Das Kursaufzeichnungssystem: Problembeschreibung 474
- Schauspieler (475)
- Anwendungsfälle (475)
- Domänenmodell
- Architektur (482)
- Abstrakte Klassen und Schnittstellen in Sequenzdiagrammen 492
- Zusammenfassung 494
- Bibliographie (494)
Anhang B. UML-Notation. Teil II: STATMUX (495) - Definition eines statistischen Multiplexers
- Die Softwareumgebung (496)
- Echtzeit-Limits
- Eingabeunterbrechungsbehandlungsroutinen 497
- Unterbrechungsausgangsbehandlungsroutinen 501
- Kommunikationsprotokolle (502)
- Abschluss (512)
- Bibliographie (512)
Anhang C. Satire auf zwei Unternehmen (513) - Rufus! Inc. Projektstart (513)
- Rupert Industries-Projekt Alpha (513)
Anhang D. Quellcode ist ein Projekt (525) - Was ist Softwaredesign? (525)
Index (535) |