Nächste Seite:
Einleitung
Softwaretechnik II
Vorlesung
Sommersemester 2007
Johannes Waldmann, HTWK Leipzig
Einleitung
Programme und Softwaresysteme
Software ist schwer zu entwickeln
Produktivität
Inhalt
Material
Organisation
Leistungen:
The Pragmatic Programmer
Lernen! Lernen! Lernen!
Regelmäßig investieren
Übung KW 11
Fred Brooks: The Mythical Man Month
Edsger W. Dijkstra über Softwaretechnik
Was macht diese Funktion?
Schnittstellen
Beispiele
Literatur zu Schnittstellen
Schnittstellen und Verträge
Design by Contract
Schnittstellen und Tests
Stufen von Verträgen
Typen als Verträge
Arten von Schnittstellen
Schnittstellen zum Datentransport
Schnittstellen und Zustände
Mehrfache Schnittstellen
Beispiel: Sortieren
wesentliche Bestandteile
Klassen-Entwurf
Richtig vergleichen
Protokollierung mit Dekorator
Entwurfsmuster (Überblick)
Entwurfsmuster
Beispiel zu Entwurfsmustern
Beispiel: Strukturmuster: Kompositum
Beispiel: Verhaltensmuster: Strategie
Beispiel: Strukturmuster: Dekorierer
Beispiel: Erzeugungsmuster: (abstrakte) Fabrik
Beispiel: Verhaltensmuster: Befehl
Strukturmuster: Fliegengewicht
Verhaltensmuster: Interpreter
Verhaltensmuster: Memento
Verhaltensmuster: Zustand
Verhaltensmuster: Beobachter
OO-Entwurfsmuster
Musterkatalog
Wie Entwurfsmuster Probleme lösen
Vorlage: Muster in der Architektur
Entwurfsmuster (Beispiele)
Kompositum - Aufgabe
ohne Entwurfsmuster:
Kompositum - Anwendung
Verhaltensmuster: Beobachter
Beobachter: Beispiel
Model/View/Controller
MVC-Beispiel
javax.swing und MVC
Swing: Datenmodelle
Swing: Bäume
Übung zu Entwurf(smustern)
Übung Muster (2)
Muster-Übung 3
Muster: Besucher
Generischer Besucher
Besucher für Bäume
Erzeugungsmuster
Fliegengewichte
Vergleich Iterator/Besucher
Veränderungen in Entwürfen vorhersehen
Quelltextverwaltung mit CVS
Anwendung, Ziele
CVS-Überblick
CVS-Tätigkeiten (I)
CVS-Tätigkeiten (II)
Konflikte verhindern oder lösen
Welche Formate?
Logging (I)
Logging (II)
Authentifizierung
Unser CVS-Server
Übung CVS
CVS - Einzelheiten
Datei-Status
CVS - Merge
Drei-Wege-Diff
Unterschiede zwischen Dateien
LCS
Aufgaben (autotool) zu LCS
LCS -- naiver Algorithmus (exponentiell)
LCS -- bottom-up (quadratisch)
+
Übung
LCS - eingeschränkt linear
JDK für Eclipse wählen
diff und LCS
Dynamische Optimierung, Beispiel II
Mehr zu CVS
Keyword Expansion
Das Keyword
$Log$
Text- und Binär-Dateien
Symbolische Revisionen (Tags)
Verzweigungen (branches)
Branches (II)
CVS-Benachrichtigungen
CVS-Benachrichtigungen (II)
Produktqualität (analytisch)
Klassifikation der Verfahren
Dynamische Tests
Dynamische Tests: Black/White
Black-Box-Tests
Probleme mit GUI-Tests
Mischformen
Testen mit JUnit
JUnit und Extreme Programming
Übung zum Testen
Programmablauf-Tests
Datenfluß-Analyse
Daten lokalisieren
Globale Variablen
Prüfen von Testabdeckungen
Übung Profiling (C++)
Profiling (Java)
Code-Optimierungen
Kosten von Algorithmen schätzen
Code-Transformationen zur Optimierung
Gefährliche ,,Optimierungen``
Code-Metriken
Code-Metriken: Halstaed
Code-Metriken: McCabe
OO-Metriken
Kohäsion: Chidamber und Kemerer
Kohäsion: Henderson-Sellers
Code-Metriken (Eclipse)
Refactoring
Herkunft
Refaktoring: Definition
Refactoring anwenden
Refaktorisierungen
Primitive Daten (
primitive obsession
)
Typsichere Aufzählungen
Verwendung von Daten: Datenklumpen
Datenklumpen--Beispiel
Verwendung von Daten: Data Class
Organisatorisches
Aufgabe Refactoring
Temporäre Attribute
Nichtssagende Namen
Name enthält Typ
Programmtext
Größe und Komplexität
Mehrfachverzweigungen
null-Objekte
Richtig refaktorisieren
Aufgaben zu Refaktoring (I)
Aufgaben zu Refaktoring (II)
Aufgaben zu Refaktoring (II)
Class Design
Klassen-Entwurf
Immutability
Immutability
Vererbung bricht Kapselung
Vererbung bricht Kapselung
Code- und Interface-Dokumentation
Code dokumentieren?
Abstand v. Dokumenation u. Code
Selbst-dok. Code: Klassen
Selbst-dok. Code: Methoden
Selbst-dok. Code: Daten
Selbst-dok. Code: Datenorganisation
Selbst-dok. Code: Ablauf
Selbst-dok. Code: Design
Kommentare
Selbst-dok. Code: Warum?
Schnittstellen-Dokumentation
JavaDoc
Übung Javadoc
Doxygen
Software-Management (KW 17)
Management: Definition
Management: Aufgaben
Produktivität
Software-Projekt-Eigenschaften
Qualität
Planung
Prozeß-Elemente
Prozesse und Vorgänge
Meilensteine
Netzpläne
Planung mit Netzplänen
Pufferzeiten, kritische Pfade
Scheduling-Probleme
Komplexität von Scheduling-Problemen
Open-Shop Scheduling
Aufgabe zu Projektplanung
Prozeß-Modelle (KW 18)
Definition (Aufgaben)
Das einfachste Prozeßmodell
Das Wasserfall-Modell
Wasserfall (Eigenschaften)
Das V-Modell
Submodelle, Rollen
Aktivitäten, Produkte
V-Modell, Eigenschaften
Probleme mit ,,klassischen`` Modellen
Prototypen
Arten von Prototypen
Prototyp und Produkt
Prototypen: Bewertung (+)
Prototypen: Bewertung (-)
Evolutionäres Modell
Filmtipp: Revolution OS
Software? Peopleware! (V 27. 5.)
Die vier wichtigsten Elemente des Managements
Personal-Qualifikation
Spezialisierung
Spezialisierung (II)
Spezialisierung und Management
Organisations-Strukturen
Rollen
Laufbahnen
Management by ...
Diskussion
Ziele des Managments (?)
Falsche Hoffnungen
Ziele der Mitarbeiter
Arbeitsbedingungen
Peopleware
Qualitäts-Management (KW 21)
Was ist Qualität?
DIN ISO 9126
Messung von Qualität
Qualitäts-Management
Qualitäts-Sicherung
Qualitätssicherung im V-Modell
Bugzilla
Übung Bugzilla
Zusammenfassung
Inhalt
Einordnung der Softwaretechnik
Rolle der Hochschulen
Verhältnis von Theorie und Praxis
Auswertung der Umfragen zur LV
Zukünftiger Bachelor/Master-Plan
Autotool-Highscore
Über dieses Dokument ...
Johannes Waldmann 2007-06-13