O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Software Engineering, 3rd Edition

Book Description

  • sehr bekannte und in der Community hoch angesehene Autoren+ solides, didaktisch hervorragend aufgebautes kompaktes Lehrbuch+ Buch basiert auf jahrelang erprobtem und bewährtem Unterrichtsmaterial

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Hingabe
  5. Vorwort
    1. Entstehungsgeschichte
    2. Rollenbezeichnungen
    3. Sprachstil
    4. Material zum Buch
    5. Dank
    6. Vorwort zur 3. Auflage
  6. Inhalt und Aufbau, Zielgruppen
    1. Inhalt
    2. Aufbau
    3. Zielgruppen
  7. Inhaltsverzeichnis
  8. Teil I Grundlagen
    1. 1 Modelle und Modellierung
      1. 1.1 Modelle, die uns umgeben
        1. 1.1.1 Die Bedeutung der Modelle
        2. 1.1.2 Beispiele für Modelle
      2. 1.2 Modelltheorie
        1. 1.2.1 Deskriptive und präskriptive Modelle
        2. 1.2.2 Die Modellmerkmale
      3. 1.3 Ziele beim Einsatz von Modellen
        1. 1.3.1 Modelle für den Einsatz in der Lehre und zum Spielen
        2. 1.3.2 Formale (mathematische) Modelle
        3. 1.3.3 Modelle für die Dokumentation
        4. 1.3.4 Explorative Modelle
      4. 1.4 Entwicklung und Validierung von Modellen
        1. 1.4.1 Die Entwicklung eines Modells
        2. 1.4.2 Die Validierung eines Modells
        3. 1.4.3 Beispiel: Wie wirkt sich die Methode der Entwicklung aus?
      5. 1.5 Modelle im Software Engineering
      6. 1.6 Theoriebildung
      7. 1.7 Modellierung durch Graphen und Grafiken
        1. 1.7.1 Beispiele für Graphen
        2. 1.7.2 Graphen der Mathematik und Graphen des Software Engineerings
        3. 1.7.3 Spezielle Eigenschaften der Graphen
        4. 1.7.4 Grafiken und Schaubilder
        5. 1.7.5 Skizzen im Software Engineering
      8. 1.8 Modellierung durch Zahlen: Skalen und Skalentypen
        1. 1.8.1 Die Skalentypen
        2. 1.8.2 Beispiele für die Skalentypen
      9. 1.9 Übergänge zwischen verschiedenen Skalentypen
        1. 1.9.1 Der Wechsel auf eine schwächere Skala
          1. Boxplots
        2. 1.9.2 Rangliste und Ordinalskala
        3. 1.9.3 Schulnoten
        4. 1.9.4 Aufstellung einer Rangliste aus einer heterogenen Bewertung
    2. 2 Grundbegriffe
      1. 2.1 Kosten
      2. 2.2 Engineering und Ingenieur
        1. 2.2.1 Der Ingenieur als Leitbild
        2. 2.2.2 Merkmale der alten Ingenieurdisziplinen
      3. 2.3 Software
        1. 2.3.1 Was ist Software?
        2. 2.3.2 Spezielle Eigenschaften der Software
          1. Software ist immateriell.
          2. Natürliche Lokalität gibt es bei Software nicht.
          3. Ein Programm realisiert keine stetige Funktion.
          4. Software-Systeme sind sehr komplex.
          5. Software-Systeme müssen autonom funktionieren.
          6. Die wenigen »Werkstoffe« der Software, die Sprachen, implizieren keine sinnvolle Strukturierung.
          7. Software spiegelt (in vielen Fällen) die Realität.
      4. 2.4 Arbeiten, die an Software ausgeführt werden
      5. 2.5 Weitere Grundbegriffe
        1. 2.5.1 Taxonomie
        2. 2.5.2 Methoden, Sprachen, Werkzeuge
        3. 2.5.3 Effektiv und effizient
    3. 3 Software Engineering
      1. 3.1 Fortschritte in Hardware und Software
        1. 3.1.1 Die Ausgaben für Hard- und Software
        2. 3.1.2 Die Entstehung des Software Engineerings
        3. 3.1.3 Definitionen für »Software Engineering«
      2. 3.2 Grundideen des Software Engineerings
        1. 3.2.1 Software Engineering versus Kunst der Programmierung
        2. 3.2.2 Quantität als Qualität
      3. 3.3 Probleme und Chancen des Software Engineerings
        1. 3.3.1 Software Engineering als globale Optimierung
        2. 3.3.2 Software Engineering als defensive Disziplin
        3. 3.3.3 Software Engineering als ein Gestrüpp von Problemen
        4. 3.3.4 Software Engineering als Technologie für die Köpfe
        5. 3.3.5 Software Engineering als Goldader
      4. 3.4 Lehrbücher und andere Basisliteratur
    4. 4 Software-Nutzen und -Kosten
      1. 4.1 Die Kosten eines Software-Projekts
        1. 4.1.1 Entwickeln oder Wiederverwenden (make or buy)
        2. 4.1.2 Die Gründe für Nutzen und Kosten, Kostenarten
      2. 4.2 Der Aufwand in den einzelnen Phasen des Software-Projekts und in der Wartung
      3. 4.3 Risiken durch Qualitätsmängel
      4. 4.4 Die Beziehung zwischen Fehlerentstehung und -entdeckung
    5. 5 Software-Qualität
      1. 5.1 Qualität
      2. 5.2 Taxonomie der Software-Qualitäten
        1. 5.2.1 Der Zusammenhang der Qualitätsaspekte
        2. 5.2.2 Einstufung verschiedener Produktqualitäten
  9. Teil II Menschen und Prozesse
    1. 6 Menschen im Software Engineering
      1. 6.1 Software-Leute und Klienten
      2. 6.2 Rollen und Verantwortlichkeiten
        1. 6.2.1 Der Entwickler und seine Spezialisierungen
        2. 6.2.2 Projektleiter und Gruppenleiter
        3. 6.2.3 Der Kunde, die Anwender und andere Betroffene
      3. 6.3 Die Produktivität des Projekts
        1. 6.3.1 Einflussfaktoren der Produktivität
        2. 6.3.2 Die Variationsbreite der Entwickler-Produktivität
        3. 6.3.3 Die Messung der individuellen Produktivität
      4. 6.4 Motivation und Qualifikation
        1. 6.4.1 Die übliche Programmiererkarriere
        2. 6.4.2 Ein Modell der Motivation
        3. 6.4.3 Folgerungen für das Management
        4. 6.4.4 Veränderungen und persönliche Interessen
      5. 6.5 The Personal Software Process
      6. 6.6 Moralische und ethische Aspekte
    2. 7 Das Software-Projekt – Begriffe und Organisation
      1. 7.1 Begriffsbildung
        1. 7.1.1 Die Entdeckung der Software-Prozesse
        2. 7.1.2 Prozess, Projekt und Vorgehensmodell
        3. 7.1.3 Abgrenzung der Begriffe
      2. 7.2 Software-Projekte
      3. 7.3 Projekttypen
        1. 7.3.1 Das Entwicklungsprojekt
        2. 7.3.2 Das Auftragsprojekt
        3. 7.3.3 Das EDV-Projekt
        4. 7.3.4 Das Systemprojekt
        5. 7.3.5 Vergleich der Projekttypen
      4. 7.4 Formen der Teamorganisation
        1. 7.4.1 Kleine Teams und »Einzelkämpfer«
        2. 7.4.2 Anarchische Teams
        3. 7.4.3 Demokratische Teams
        4. 7.4.4 Hierarchische Teams
        5. 7.4.5 Chief-Programmer-Teams
      5. 7.5 Die interne Organisation der Software-Hersteller
        1. 7.5.1 Die funktionale Organisation
        2. 7.5.2 Die reine Projektorganisation
        3. 7.5.3 Die Matrixorganisation
    3. 8 Projektleitung und Projektleiter
      1. 8.1 Ziele und Schwerpunkte des Projektmanagements
      2. 8.2 Das Vorprojekt
        1. 8.2.1 Die Organisation des Vorprojekts
        2. 8.2.2 Das Angebot
        3. 8.2.3 Weitere Ergebnisse des Vorprojekts
      3. 8.3 Start des Projekts, Planung
        1. 8.3.1 Planungsaspekte
          1. Die Planung der Aufgaben: Arbeitspakete
        2. 8.3.2 Projektphasen
        3. 8.3.3 Der Projektplan
      4. 8.4 Aufwand, Kosten, Risiken
        1. 8.4.1 Aufwandsschätzung
        2. 8.4.2 Ansätze der Aufwandsschätzung
          1. Die Expertenschätzung
          2. Algorithmische Verfahren
        3. 8.4.3 COCOMO
          1. Durchführung der COCOMO-Schätzung
        4. 8.4.4 COCOMO II
        5. 8.4.5 Das Function-Point-Verfahren
          1. Die Suche nach einem Standard für die funktionale Größe
          2. Verfahren mit abweichender Grundlage der Schätzung
        6. 8.4.6 Risikomanagement
          1. Definition und Beschreibung der Risiken
          2. Risikobewertung
          3. Prävention und Notfallmaßnahmen
          4. Risikoüberwachung
      5. 8.5 Projektkontrolle und -steuerung
        1. 8.5.1 Der Regelkreis der Projektdurchführung
        2. 8.5.2 Die Bewertung des Erreichten
          1. Zeiterfassung
          2. Fertigstellungsgrad
          3. Earned Value Analysis
        3. 8.5.3 Termindrift-Diagramme (Meilenstein-Trend-Analyse)
      6. 8.6 Der Projektabschluss
        1. 8.6.1 Abschlussarbeiten
        2. 8.6.2 Rituale
        3. 8.6.3 Die Dokumentation der Erfahrungen
      7. 8.7 Projektmanagement als Führungsaufgabe
        1. 8.7.1 Die Wahl des Projektleiters
        2. 8.7.2 Woran scheitern Projekte?
        3. 8.7.3 Führungsprobleme
        4. 8.7.4 Regeln für das Projektmanagement
          1. Auswahl und Tätigkeit der Projektleiter
          2. Kompetenz und Verteilung
          3. Kontrolle und Beurteilung
          4. Zeitlos gültige Regeln
    4. 9 Vorgehensmodelle
      1. 9.1 Code and Fix und der Software Life Cycle
        1. 9.1.1 Code and Fix
        2. 9.1.2 Der Software-Lebenslauf
        3. 9.1.3 Das Wasserfallmodell
        4. 9.1.4 Gliederung der Aktivitäten
      2. 9.2 Schwierigkeiten mit dem Wasserfallmodell
        1. 9.2.1 Die Interpretation des Wasserfallmodells
        2. 9.2.2 Kritik am Wasserfallmodell
      3. 9.3 Die Klassifikation der Programme nach Lehman
        1. 9.3.1 S-, P- und E-Programme
        2. 9.3.2 Zusammenhänge zwischen den Programmtypen und Folgerungen
      4. 9.4 Prototyping
        1. 9.4.1 Der Begriff des Prototyps
        2. 9.4.2 Prototypentwicklung
        3. 9.4.3 Spezielle Prototypen und verwandte Begriffe
        4. 9.4.4 Die Taxonomie von Floyd
      5. 9.5 Nichtlineare Vorgehensmodelle
        1. 9.5.1 Rapid Prototyping
        2. 9.5.2 Evolutionäre Entwicklung
        3. 9.5.3 Iterative Software-Entwicklung
        4. 9.5.4 Inkrementelle Software-Entwicklung
        5. 9.5.5 Das Treppenmodell
      6. 9.6 Das Spiralmodell
    5. 10 Prozessmodelle
      1. 10.1 Begriffe und Definitionen
        1. 10.1.1 Das Prozessmodell und seine Ausprägung im Prozess
        2. 10.1.2 Leichte und schwere Prozesse
      2. 10.2 Das Phasenmodell
        1. 10.2.1 Phasen und Meilensteine
        2. 10.2.2 Phasen und Meilensteine im Software-Projekt
        3. 10.2.3 Abgrenzung zum Wasserfallmodell
        4. 10.2.4 Vor- und Nachteile des Phasenmodells
        5. 10.2.5 Überlappende Phasen
      3. 10.3 Das V-Modell
        1. 10.3.1 Hintergrund und Geschichte
        2. 10.3.2 Eigenschaften des Modells
        3. 10.3.3 Projekttypen
        4. 10.3.4 Elemente des Modells
          1. Aktivitäten, Produkte und Rollen
          2. Vorgehensbausteine
          3. Entscheidungspunkte und Projektdurchführungsstrategien
          4. Zusammenfassung
        5. 10.3.5 Entwicklungsstrategien
        6. 10.3.6 Tailoring
        7. 10.3.7 Projektdurchführung
        8. 10.3.8 Bewertung des V-Modells
      4. 10.4 Der Unified Process
        1. 10.4.1 Eigenschaften des Unified Process
        2. 10.4.2 Die Struktur des Unified Process
          1. Rollen, Aktivitäten und Artefakte
          2. Phasen
          3. Arbeitsabläufe
          4. Iterationen
        3. 10.4.3 Der Rational Unified Process
        4. 10.4.4 Bewertung des Rational Unified Process
      5. 10.5 Cleanroom Development
        1. 10.5.1 Der Hintergrund des Cleanroom Development Process
        2. 10.5.2 Merkmale und Eigenschaften des Cleanroom Development Process
          1. Die Situation vor dem Cleanroom-Ansatz
          2. Cleanroom-Konzepte
          3. Spezifikation und Entwurf mit Black, State und Clear Boxes
          4. Der statistische Test
        3. 10.5.3 Die Struktur des Modells
        4. 10.5.4 Bewertung des Cleanroom Development Process
      6. 10.6 Agile Prozesse
        1. 10.6.1 Die agile Bewegung
        2. 10.6.2 Das »Agile Manifesto«
        3. 10.6.3 Gemeinsamkeiten der agilen Prozesse
        4. 10.6.4 Extreme Programming
          1. Grundlagen
          2. XP-Konzepte
          3. Bewertung des Extreme Programming
        5. 10.6.5 Crystal
          1. Vorgehensweise, Regeln und Rollen in Crystal
          2. Bewertung von Crystal
        6. 10.6.6 Scrum
          1. Rollen in Scrum
          2. Dokumente
          3. Der Scrum-Prozess
          4. Bewertung von Scrum
        7. 10.6.7 Zusammenfassung der agilen Prozesse
    6. 11 Bewertung und Verbesserung des Software-Prozesses
      1. 11.1 Voraussetzungen hoher Software-Qualität
      2. 11.2 CMMI, das Reifegradmodell für Software-Prozesse
        1. 11.2.1 Ziele und Annahmen des CMMI
        2. 11.2.2 Prozessbereiche
        3. 11.2.3 Varianten des Reifegradmodells
          1. Die stufenförmige Variante
          2. Stufe 1 – Der ungeformte Prozess (initial)
          3. Stufe 2 – Der gesteuerte Prozess (managed)
          4. Stufe 3 – Der definierte Prozess (defined)
          5. Stufe 4 – Der geregelte Prozess (quantitatively managed)
          6. Stufe 5 – Der optimierende Prozess (optimizing)
          7. Einstufung
          8. Die kontinuierliche Variante
        4. 11.2.4 Prozessbewertung
          1. Vorgehen bei der Begutachtung
        5. 11.2.5 Die Prozessreife-Profile des SEI
          1. Untersuchungen und Kritik
          2. Schwächen der Prozessreife-Profile
          3. Negative Prozessreife
          4. Fazit
      3. 11.3 SPICE / ISO 15504
        1. 11.3.1 Die SPICE-Reifegrade
        2. 11.3.2 Die Bewertung der Prozesse
      4. 11.4 Prozessverbesserung
  10. Teil III Daueraufgaben im Software-Projekt
    1. 12 Dokumentation in der Software-Entwicklung
      1. 12.1 Begriff und Einordnung
      2. 12.2 Ziele und Wirtschaftlichkeit der Dokumentation
      3. 12.3 Taxonomie der Dokumente
      4. 12.4 Die Benutzungsdokumentation
      5. 12.5 Die Qualität der Dokumente
      6. 12.6 Die Form der Dokumente, Normen
      7. 12.7 Dokumentation in der Praxis
      8. 12.8 Die gefälschte Entstehungsgeschichte
    2. 13 Software-Qualitätssicherung und -Prüfung
      1. 13.1 Software-Qualitätssicherung
        1. 13.1.1 Maßnahmen zur Hebung der Qualität
        2. 13.1.2 Schwerpunkte der Software-Qualitätssicherung
        3. 13.1.3 Aufgaben des Qualitätssicherungsingenieurs
      2. 13.2 Prüfungen
        1. 13.2.1 Sinn und Wirkung von Prüfungen
      3. 13.3 Mängel und Fehler
        1. 13.3.1 Definitionen
        2. 13.3.2 Kleine Theorie der Fehlersuche
      4. 13.4 Prüfungen im Überblick
        1. 13.4.1 Verifikation und Validierung
        2. 13.4.2 Positive und negative Prüfresultate
        3. 13.4.3 Möglichkeiten und Prinzipien der Software-Prüfung
        4. 13.4.4 Die Trennung der Korrektur von der Prüfung
        5. 13.4.5 Inspektionsverfahren
      5. 13.5 Reviews
        1. 13.5.1 Rollen im Technischen Review
        2. 13.5.2 Organisation und Ablauf
        3. 13.5.3 Review-Regeln
        4. 13.5.4 Das Review als soziales Experiment
        5. 13.5.5 Ein Erste-Hilfe-Kasten für die häufigsten Probleme mit Reviews
        6. 13.5.6 Gründe, die Einführung von Reviews zu verschieben
      6. 13.6 Varianten der Software-Inspektion
        1. 13.6.1 Durchsicht
        2. 13.6.2 Stellungnahme
        3. 13.6.3 Structured Walkthrough
        4. 13.6.4 Design and Code Inspection
    3. 14 Metriken und Bewertungen
      1. 14.1 Metriken, Begriff und Taxonomie
        1. 14.1.1 Metrik
        2. 14.1.2 Nutzen und Schaden durch Metriken
        3. 14.1.3 Anforderungen an Metriken
        4. 14.1.4 Arten von Metriken
      2. 14.2 Objektive Metriken, Messung
        1. 14.2.1 Die Motivation zur Messung
        2. 14.2.2 Die Sammlung von Basisdaten
        3. 14.2.3 Zusammenhänge zwischen den Basisdaten
      3. 14.3 Subjektive Metriken, Beurteilung
        1. 14.3.1 Feststellung, Bewertung und Benotung
        2. 14.3.2 Die systematische Beurteilung der Qualität
        3. 14.3.3 Ein Beispiel für die Qualitätsbewertung
        4. 14.3.4 Hinweise für die praktische Anwendung
      4. 14.4 Pseudometriken
        1. 14.4.1 Die Produktivität
        2. 14.4.2 Merkmale der Metriken
        3. 14.4.3 Die Bestimmung der Komplexität nach McCabe
        4. 14.4.4 Software Science nach Halstead
        5. 14.4.5 Metriken von Chidamber und Kemerer
      5. 14.5 Die Suche nach der geeigneten Metrik
        1. 14.5.1 Der Goal-Question-Metric-Ansatz
        2. 14.5.2 Die Entwicklung einer Pseudometrik
      6. 14.6 Ein Beispiel für die Entwicklung einer Metrik
        1. 14.6.1 Software-Zuverlässigkeit
        2. 14.6.2 Definition der Zuverlässigkeit
        3. 14.6.3 Quantifizierung der Zuverlässigkeit
      7. 14.7 Hinweise für die praktische Arbeit
        1. 14.7.1 Welche Metrik soll man einsetzen?
        2. 14.7.2 Standardisierte Metriken, Normen
    4. 15 Werkzeuge und Entwicklungsumgebungen
      1. 15.1 Bewertung von Methoden und Werkzeugen
      2. 15.2 Computer-Aided Software Engineering
        1. 15.2.1 Begriffe
        2. 15.2.2 Die Entwicklung von CASE
        3. 15.2.3 Klassifikationen von CASE-Systemen
      3. 15.3 Offene integrierte Software-Engineering-Umgebungen
        1. 15.3.1 Architekturen
        2. 15.3.2 Anforderungen zur horizontalen Integration
        3. 15.3.3 Das Problem der vertikalen Integration
      4. 15.4 Code-Generierung aus Modellen
        1. 15.4.1 Model-Driven Software Development
        2. 15.4.2 Model-Driven Architecture
        3. 15.4.3 Ein Beispiel für eine MDA
      5. 15.5 Die Auswahl eines Werkzeugs
        1. Chancen
        2. Probleme
      6. 15.6 Ein Blick in die Praxis
        1. Wahl und Auswahl von Werkzeugen
        2. Die Vorteile kleiner Werkzeuge
        3. Der Wert von Werkzeugen
  11. Teil IV Techniken der Software-Bearbeitung
    1. 16 Analyse und Spezifikation
      1. 16.1 Die Bedeutung der Spezifikation im Entwicklungsprozess
        1. 16.1.1 Analyse und Spezifikation im Überblick
        2. 16.1.2 Der Nutzen der Spezifikation
      2. 16.2 Die Analyse
        1. 16.2.1 Grundbegriffe der Analyse
        2. 16.2.2 Dokumente der Analyse
        3. 16.2.3 Die Ist-Analyse
        4. 16.2.4 Die Soll-Analyse
        5. 16.2.5 Die Spielräume der Soll-Analyse
        6. 16.2.6 Techniken der Analyse
        7. 16.2.7 Die Schwierigkeiten der Analyse
        8. 16.2.8 Ein Praxisbericht
      3. 16.3 Begriffslexikon und Begriffsmodell
      4. 16.4 Anforderungen
        1. 16.4.1 Offene und latente Anforderungen, Entwickler-Optionen
        2. 16.4.2 Harte und weiche Anforderungen
        3. 16.4.3 Objektivierbare und vage Anforderungen
        4. 16.4.4 Funktionale und nichtfunktionale Anforderungen
        5. 16.4.5 Formulierung der nichtfunktionalen Anforderungen
        6. 16.4.6 Anforderungen zur Benutzbarkeit (Usability)
          1. Methoden zur Verbesserung der Usability
          2. Personas
        7. 16.4.7 Der praktische Umgang mit den verschiedenen Anforderungen
      5. 16.5 Die Spezifikation im Überblick
        1. 16.5.1 Der Spezifikationsbegriff
        2. 16.5.2 Angestrebte Eigenschaften der Spezifikation
        3. 16.5.3 Die Abgrenzung der Spezifikation zum Entwurf
      6. 16.6 Die Darstellung der Spezifikation
        1. 16.6.1 Formale Spezifikation
          1. Langsame Entwicklung oder Durchbruch?
        2. 16.6.2 Grafische Darstellungen der Spezifikation
        3. 16.6.3 Natürlichsprachliche Spezifikation
          1. Sprachschablonen
      7. 16.7 Konzepte und Komponenten der Spezifikation
        1. 16.7.1 Die Ausrichtung auf die Anforderungen
        2. 16.7.2 Die Spezifikation der Funktion
        3. 16.7.3 Anwendungsfälle
        4. 16.7.4 Das Mengengerüst
      8. 16.8 Muster und Normen für die Spezifikation
        1. 16.8.1 Vorlagen und Standardstruktur
        2. 16.8.2 Normen
      9. 16.9 Regeln für Analyse und Spezifikation
    2. 17 Entwurf
      1. 17.1 Ziele und Bedeutung des Entwurfs
        1. 17.1.1 Die Gliederung in überschaubare Einheiten
        2. 17.1.2 Die Festlegung der Lösungsstruktur
        3. 17.1.3 Die hierarchische Gliederung
        4. 17.1.4 Die Entwicklungsrichtung
        5. 17.1.5 Der Entwurf in der Praxis
      2. 17.2 Begriffe
        1. 17.2.1 System
        2. 17.2.2 Komponente und Modul
        3. 17.2.3 Schnittstelle
        4. 17.2.4 Entwurf und Software-Architektur
        5. 17.2.5 Architekturbeschreibung
        6. 17.2.6 Zusammenfassung
      3. 17.3 Prinzipien des Architekturentwurfs
        1. 17.3.1 Modularisierung
        2. 17.3.2 Kopplung und Zusammenhalt
        3. 17.3.3 Information Hiding
          1. Vor- und Nachteile des Information Hiding
        4. 17.3.4 Die Trennung von Zuständigkeiten
        5. 17.3.5 Die hierarchische Gliederung
        6. 17.3.6 Die Prinzipien im Zusammenhang
      4. 17.4 Der objektorientierte Entwurf
        1. 17.4.1 Das objektorientierte Metamodell
        2. 17.4.2 Ein Beispiel
        3. 17.4.3 Wie findet man fachliche Klassen?
        4. 17.4.4 Das Offen-geschlossen-Prinzip
        5. 17.4.5 Hinweise zur Codierung
        6. 17.4.6 Bewertung
      5. 17.5 Wiederverwendung von Architekturen
        1. 17.5.1 Architekturmuster
          1. Das Architekturmuster der Software-Schichten
          2. Das Drei-Schichten-Architekturmuster
          3. Das Pipe-Filter-Architekturmuster
          4. Das Model-View-Controller-Architekturmuster
          5. Das Plug-in-Architekturmuster
        2. 17.5.2 Entwurfsmuster
          1. Ein einführendes Beispiel
          2. Muster zum Verwalten von Objekten
          3. Muster zur Anbindung vorhandener Klassen oder Komponenten
          4. Muster zur Entkopplung von Komponenten
          5. Muster zur Trennung der unterschiedlichen von den gemeinsamen Merkmalen
          6. Die praktische Anwendung der Entwurfsmuster
          7. Bewertung
        3. 17.5.3 Bibliotheken und Rahmenwerke
          1. Klassenbibliotheken
          2. Rahmenwerke
          3. Offene Rahmenwerke
          4. Geschlossene Rahmenwerke
          5. Bewertung
        4. 17.5.4 Produktlinien- und Referenzarchitekturen
          1. Produktlinienarchitektur
          2. Referenzarchitektur
      6. 17.6 Die Qualität der Architektur
        1. 17.6.1 Qualitätskriterien
        2. 17.6.2 Die Bewertung und Prüfung einer Architektur
    3. 18 Codierung
      1. 18.1 Programmiersprachen als Werkstoffe
      2. 18.2 Regeln für die Codierung
        1. 18.2.1 Richtlinien
        2. 18.2.2 Ratschläge
      3. 18.3 Die Dokumentation des Codes
        1. 18.3.1 Der Feinentwurf
        2. 18.3.2 Integrierte Dokumentation
      4. 18.4 Realisierungen des Information Hiding
        1. 18.4.1 Kapselung
          1. Ein Beispiel zur Kapselung
          2. Implementierung einer Kapsel in ADA
          3. Implementierung einer Kapsel in C
        2. 18.4.2 Abstrakte Datentypen
          1. Implementierung eines Abstrakten Datentyps in ADA
        3. 18.4.3 Vergleich zwischen Kapselung und ADT
      5. 18.5 Robuste Programme
      6. 18.6 Das Vertragsmodell
        1. 18.6.1 Zusicherungen
        2. 18.6.2 Die Formulierung von Zusicherungen
        3. 18.6.3 Zusicherungen in Programmiersprachen
        4. 18.6.4 Bewertung
      7. 18.7 Werkzeuge zur Codierung
    4. 19 Programmtest
      1. 19.1 Begriffe und Grundlagen des Tests
        1. 19.1.1 Definition
        2. 19.1.2 Soll-Resultate
        3. 19.1.3 Der Regressionstest
        4. 19.1.4 Fehler und Fehlersymptome
        5. 19.1.5 Vollständiger Test und Stichprobe
        6. 19.1.6 Vor- und Nachteile des Testens
      2. 19.2 Einige spezielle Testbegriffe
        1. 19.2.1 Klassifikation nach den Grundlagen des Tests
        2. 19.2.2 Klassifikation nach dem Aufwand für Vorbereitung und Archivierung
        3. 19.2.3 Klassifikation nach der Komplexität des Prüflings
        4. 19.2.4 Klassifikation nach der getesteten Eigenschaft
        5. 19.2.5 Klassifikation nach den beteiligten Rollen
      3. 19.3 Die Testdurchführung
        1. 19.3.1 Der prinzipielle Testablauf
        2. 19.3.2 Testvorbereitung
        3. 19.3.3 Testausführung
        4. 19.3.4 Testauswertung
        5. 19.3.5 Das Testendekriterium
        6. 19.3.6 Werkzeuge für den Test
      4. 19.4 Die Auswahl der Testfälle
        1. 19.4.1 Der Testfall
        2. 19.4.2 Testkonzepte
        3. 19.4.3 Starke und schwache Äquivalenz
        4. 19.4.4 Anwendung der Äquivalenzklassen zur Testdatenauswahl
      5. 19.5 Der Black-Box-Test
        1. 19.5.1 Die Ziele des Black-Box-Tests
        2. 19.5.2 Die Testfallauswahl für die Funktionsüberdeckung
        3. 19.5.3 Der zustandsbasierte Test
        4. 19.5.4 Der Test auf Basis der Anwendungsfälle
      6. 19.6 Der Glass-Box-Test
        1. 19.6.1 Überdeckungskriterien für den Glass-Box-Test
        2. 19.6.2 Die Anweisungsüberdeckung
        3. 19.6.3 Die Zweig-, auch Entscheidungsüberdeckung
        4. 19.6.4 Die Termüberdeckung
          1. Beispiel zur Ermittlung der Termüberdeckung
          2. MC/DC Coverage
        5. 19.6.5 Schwierigkeiten bei der Zweig- und Termüberdeckung
        6. 19.6.6 Die Pfadüberdeckung
        7. 19.6.7 Die Behandlung von Schleifen und die einfache Pfadüberdeckung
        8. 19.6.8 Überdeckungskriterien für Programmkomponenten
      7. 19.7 Testen mit Zufallsdaten
      8. 19.8 Beispiele zum Test
        1. 19.8.1 Demonstration der Teststrategien an einem konstruierten Beispiel
          1. Zusammenfassung
        2. 19.8.2 Ein Beispiel zur Testfallauswahl
        3. 19.8.3 Spezifikation
        4. 19.8.4 Black-Box-Test
          1. Eingabeüberdeckung
          2. Ausgabeüberdeckung
          3. Funktionsüberdeckung
          4. Grenzwerte
          5. Testsequenz
        5. 19.8.5 Glass-Box-Test
        6. 19.8.6 Schlussbemerkungen zum Test-Beispiel
      9. 19.9 Ausblick
    5. 20 Integration
      1. 20.1 Einbettung der Integration in die Software-Entwicklung
      2. 20.2 Integrationsstrategien
        1. 20.2.1 Integration in einem Schritt
        2. 20.2.2 Inkrementelle Integration
          1. Top-down-Integration
          2. Bottom-up-Integration
          3. Kontinuierliche Integration
        3. 20.2.3 Ein Beispiel zur Integration
      3. 20.3 Probleme der Integration
      4. 20.4 Planung und Dokumentation der Integration
      5. 20.5 Grundsätze für die Integration
  12. Teil V Verwaltung und Erhaltung von Software
    1. 21 Konfigurationsverwaltung
      1. 21.1 Grundlagen der Konfigurationsverwaltung
        1. 21.1.1 Software-Einheiten
        2. 21.1.2 Versionen
        3. 21.1.3 Varianten
        4. 21.1.4 Konfigurationen
        5. 21.1.5 Probleme mit Versionen und Varianten
        6. 21.1.6 Baselines und Releases
        7. 21.1.7 Konfigurationsverwaltung
      2. 21.2 Die Aufgaben der Konfigurationsverwaltung
      3. 21.3 Identifikation und Benennung von Software-Einheiten
        1. 21.3.1 Die Benennung von Software-Einheiten
        2. 21.3.2 Identität und Verwaltung von Software-Einheiten
      4. 21.4 Arbeitsbereiche für die Software-Verwaltung
        1. 21.4.1 Die Bereiche und ihr Zusammenspiel
        2. 21.4.2 Realisierung der Arbeitsbereiche
    2. 22 Software-Wartung
      1. 22.1 Begriff und Taxonomie der Software-Wartung
        1. 22.1.1 Verschleiß und Wartung
        2. 22.1.2 Definitionen des Wartungsbegriffs
        3. 22.1.3 Arten der Wartung
        4. 22.1.4 Die Kosten der Wartung
      2. 22.2 Inhalt und Ablauf der Wartung
        1. 22.2.1 Ein Modell der Wartung
        2. 22.2.2 Schritte der Wartung
        3. 22.2.3 Die Verteilung der geänderten Software
      3. 22.3 Risiken, Probleme und Grundsätze der Wartung
        1. 22.3.1 Risiken und Probleme
        2. 22.3.2 Grundsätze der Wartung
      4. 22.4 Die Wartungsorganisation
        1. 22.4.1 Problemmeldung und Änderungsantrag
        2. 22.4.2 Die Behandlung von Problemmeldungen
        3. 22.4.3 Die Wartungsingenieure
        4. 22.4.4 Der Änderungsausschuss
    3. 23 Reengineering
      1. 23.1 Software-Evolution
      2. 23.2 Reengineering
        1. 23.2.1 Begriffe
        2. 23.2.2 Vorgehensweise
        3. 23.2.3 Techniken
        4. 23.2.4 Varianten, Probleme, Erfahrungen
      3. 23.3 Refactoring
        1. 23.3.1 Code-Refactoring
        2. 23.3.2 Architektur-Refactoring
      4. 23.4 Erblasten, Legacy Software
        1. 23.4.1 Eigenschaften
        2. 23.4.2 Erneuern oder Ablösen einer Software-Erblast
        3. 23.4.3 Migration einer Software-Erblast
        4. 23.4.4 Die Ablösung auf einen Schlag
    4. 24 Wiederverwendung
      1. 24.1 Die alltägliche Wiederverwendung
        1. 24.1.1 Wiederverwendung außerhalb der Informatik
        2. 24.1.2 Die geläufige Wiederverwendung der Software
      2. 24.2 Terminologie und Taxonomie der Wiederverwendung
        1. 24.2.1 Der Begriff der Wiederverwendung
        2. 24.2.2 Wiederverwendbarkeit
      3. 24.3 Kosten und Nutzen der Wiederverwendung
        1. 24.3.1 Die Kosten der Wiederverwendung
        2. 24.3.2 Der Nutzen der Wiederverwendung
      4. 24.4 Chancen und Probleme der Wiederverwendung
      5. 24.5 Rahmenbedingungen für die Wiederverwendung
      6. 24.6 Entwicklungstechniken für die Wiederverwendung
        1. Prozeduren
        2. Module, Information Hiding
        3. Objekte, Vererbung
        4. Programmgeneratoren
        5. Rahmenwerke
        6. Muster
        7. Komponenten
        8. Produktlinien
        9. Model Driven Architecture (MDA)
      7. 24.7 Von der Codierung zur Komposition
  13. Teil VI Nachwort, Literatur und Index
    1. 25 Nachwort: Die Schule der Software-Ingenieure
      1. 25.1 Software Engineering in der Praxis
      2. 25.2 Stand der Technik und Stand der Praxis
      3. 25.3 Der Studiengang Softwaretechnik
      4. 25.4 Nachfrage und Angebot auf dem Ausbildungsmarkt
    2. 26 Literaturangaben
      1. 26.1 Hinweise zu den Literaturangaben
      2. 26.2 Literaturangaben, nach Verfassern geordnet
      3. 26.3 Verzeichnis der Normen und Standards
        1. 26.3.1 DIN-Normen
        2. 26.3.2 IEEE-Standards
        3. 26.3.3 ISO-Standards
  14. Index
  15. Fußnoten
    1. Kapitel 1
    2. Kapitel 2
    3. Kapitel 4
    4. Kapitel 8
    5. Kapitel 9
    6. Kapitel 10
    7. Kapitel 11
    8. Kapitel 13
    9. Kapitel 14
    10. Kapitel 15
    11. Kapitel 17
    12. Kapitel 19
    13. Kapitel 24
    14. Kapitel 25