Software-Sanierung - Kübeck, Sebastian (Verlagsgruppe Hüthig Jehle Rehm, 2013)
Kapitel 8: Abschotten neuer Funktionalitäten durch implizite Tests
Cover; Titel; Impressum; Inhaltsverzeichnis; Einleitung; Keine Frage des Prozesses; Für wen ist dieses Buch?; Nötige Vorkenntnisse; Aufteilung des Buches; Zu den Beispielen; Die Komplexität von Software; Alterung von Software; Auswirkungen auf die Produktivität; Behebung von Problemen alternder Software; Technisches Defizit; Wann ist Software sanierungsbedürftig?; Teil 1: Grundlagen; Kapitel 1: Objektorientierte Programmierung -- diesmal richtig; 1.1 Die prozedurale Programmierung; 1.2 Die objektorientierte Programmierung; 1.3 Vorteile der objektorientierten Programmierung
1.4 Die mathematische Theorie der abstrakten Datentypen1.5 Die objektorientierte Modellierung; 1.6 UML; 1.7 Das Problem mit dem Umlernen; 1.8 Das Problem mit der Zweckentfremdung von Programmiersprachen; Kapitel 2: Automatisierte Tests; 2.1 Fehler in Programmen; 2.2 Methoden zum Aufspüren von Fehlern; 2.3 Werkzeuge zur Laufzeitüberprüfung; 2.4 SUnit und die testgetriebene Softwareentwicklung; 2.5 JUnit; 2.6 Fallbeispiel: Maximum-Bestimmung; 2.7 Testimplementierung (Test Double); 2.8 Arten von automatisierten Tests; 2.9 Eigenschaften guter Tests
Kapitel 3: Entwicklungsprinzipien der objektorientierten Programmierung3.1 Interface-Aufteilungsprinzip (Interface Segregation Principle); 3.2 Liskov-Substitutionsprinzip (Liskov Substitution Principle); 3.3 Abhängigkeits-Inversionsprinzip (Dependency-Inversion Principle); 3.4 Einzelzuständigkeitsprinzip (Single-Responsibility Principle); 3.5 Erweiterungsprinzip (Open-Closed Principle); Kapitel 4: Entwurfsmuster der objektorientierten Programmierung; 4.1 Abstrakte Fabrik (Abstract Factory); 4.2 Schablonenmethode (Template Method); 4.3 Wertobjekte (Value Object); 4.4 Null-Objekt (Null Object)
4.5 Stellvertreter (Proxy)4.6 Adapter (Adaptor); 4.7 Beobachter (Observer); 4.8 Fassade (Facade); 4.9 Kommando (Command, Transaction, Operation); 4.10 Strategie (Strategy); 4.11 Weitere Entwurfsmuster; 4.12 Wie man Entwurfsmuster nicht verwendet; Kapitel 5: Refactoring; 5.1 Refactoring in unterschiedlichen Größenordnungen; 5.2 Umbenennen von Bezeichnern; 5.3 Methode extrahieren (Extract Method); 5.4 Methode auflösen (Inline Method); 5.5 Methode verschieben (Move Method); 5.6 Methode hochziehen (Pull-Up Method); 5.7 Interface extrahieren (Extract Interface)