Softwareentwicklung und Testprozess FAKULTÄT FÜR WIRTSCHAFTSWISSENSCHAFTEN Thomas Hintze
2 / 22 Gliederung 1. Motivation und Zielsetzung 2. Software-Entwicklung Versionsverwaltung Build-Automatisierung 3. Testprozess Testautomatisierung Defektmanagement 4. Zusammenfassung und Ausblick
3 / 22 1 Motivation (1) Gegenstand: umfangreiche Entwicklungsprojekte aus Sicht der Software-Entwickler Erreichung der geforderten Qualität Abb. Software-Entwicklung (eigene Darstellung)
4 / 22 1 Motivation (2) Problem: Abb. Produktdiversifizierung (modifiziert übernommen von Hoffmann 2008: 416).
5 / 22 1 Zielsetzung Abb. Infrastruktur für Software-Entwicklung und Testprozess (eigene Darstellung)
6 / 22 2 Software-Entwicklung: Versionsverwaltung (1) Aufzeichnung aller Dateiinhalte über die Zeit + Verzeichnisinformationen + Rechte + interne Verwaltungsinformationen Abb. Versionsverwaltung (eigene Darstellung)
7 / 22 2 Software-Entwicklung: Versionsverwaltung (2) Abb. check in / check out / revert (eigene Darstellung)
8 / 22 2 Software-Entwicklung: Versionsverwaltung (3) Abb. branching (eigene Darstellung).
9 / 22 2 Software-Entwicklung: Versionsverwaltung (4) Abb. merging (eigene Darstellung).
10 / 22 2 Software-Entwicklung: Versionsverwaltung (5) Abb. merge-konflikt (eigene Darstellung)
11 / 22 2 Software-Entwicklung: Versionsverwaltung (6) Abb. Subversion-Integration im Powerbuilder (Screenshot).
12 / 22 2 Software-Entwicklung: Versionsverwaltung (7) Abb. Versionsverwaltung im Powerbuilder (Screenshot).
13 / 22 2 Software-Entwicklung: Versionsverwaltung (6) Abb. merge-konflikt (Screenshot).
14 / 22 2 Software-Entwicklung: Versionsverwaltung (9) Universell einsetzbar Quelltexte Konfigurationen Binärdateien Integration in Entwicklungsumgebungen Geringer Aufwand für Entwickler Teamfähigkeit Zeitersparnis Teil eines Konfigurationsmanagements Archivierung kompletter Umgebungen
15 / 22 2 Software-Entwicklung: Build-Automatisierung (1) Zusammenstellung aller Komponenten eines Systems Post- und Pre-Processing der Quelltexte Compilierung und Linken Dokumentationserstellung Compiliert und linked es? Läuft es?
16 / 22 2 Software-Entwicklung: Build-Automatisierung (2) Abb. Inkrementelle Compilierung/Abhängigkeitsgraph (eigene Darstellung)
17 / 22 2 Software-Entwicklung: Build-Automatisierung (3) Makefile: a.out: fkt.o main.o g++ fkt.o main.o fkt.o: fkt.c common.h g++ -c fkt.c main.o: main.c common.h g++ -c main.c Quellen compilieren, nicht linken.
18 / 22 2 Software-Entwicklung: Build-Automatisierung (4) Abb. dezentralen Build-Prozesses
19 / 22 2 Software-Entwicklung: Build-Automatisierung (5) Abb. Build-Einstellung im Powerbuider 12.1 (Screenshot)
20 / 22 2 Software-Entwicklung: Build-Automatisierung (6) Performance durch Inkrementelles Compilieren Dezentraler Build-Prozess Integration in Entwicklungsumgebungen Geringer Aufwand für Entwickler Einfache Konfiguration Integration in Versionsmanagement Direkter Zugriff auf spezielle Versionsstände Hochladen der erzeugten Binärdateien
21 / 22 Vielen Dank.
22 / 22 Quelle: Hoffmann (2008): Hoffmann, Dirk W., Software-Qualität, Springer- Verlag,Berlin Heidelberg Literaturempfehlung: Frühauf/Ludewig/Sandmayr (2006): Frühauf, Karol, Ludewig, Jochen, Sandmayr, Helmut: Software-Prüfung Eine Anleitung zum Testen und zur Inspektion, 6. Auflage, vdf Hochschulverlag, Zürich Hamill (2009): Hamill, Paul, A Language-Independend Overview Unit Test Frameworks, O'Reilly Media, Ebook Osherove (2010): Osherove, Roy, The Art of Unit Testing Deutsche Ausgabe, mitp, eine Marke der Verlagsgruppe Hüthig Jehle Rehm GmbH, Heidelberg, München, Landsberg, Frechen, Hamburg Pezze/Young (2009): Pezze, Mauro, Young, Michael, Software testen und analysieren, Oldenbourg Wissenschaftsverlag, München