Inhaltsverzeichnis Vorlesungsplan 1. Einstieg OO 2. Modellierung (UML) 3. Design (Designmuster) 4. Implementierung (GUI-Programmierung) 5. Spezifikation (Design by Contract) 6. Qualitätssicherung (Korrektheit, Debugging, Testen) 7. Konfigurationsmanagement 8. Anforderungsanalyse 1 Software-Configurationsmanagement (SCM) Software-Configurationsmanagement (SCM) Definition: Eine Sammlung von Techniken, die das Erstellen und Warten eines Softwaresystems steuern und koordinieren Aufgaben/ Gliederung Unterschiedliche Dokumente Dokumente stehen in Beziehungen miteinander Änderungen verwalten/ protokollieren Kompilieren Pakettieren Distributieren
Bugs/ Features verwalten 1.1 1. Item-Identifikation Item-Identifikation Welche Dokumentarten sollen verwaltet werden? Wo werden diese verwaltet? Projektbibliothek Speicherung der Beziehungen zwischen Dokumenten Zugriff auf ein konkretes Dokument? Eindeutige Identifikation (Namen-Schema) Projektbibliothek Konzept: Bibliothek Dokumente sind Bücher Jeder Zugriff wird protokolliert (damit nachvollziehbar) Benutzer hat Rechte / Pflichten Es gelten Standards und Regeln 1.2 2. Versionierung Version-/ Release-Management (1) Dokumente haben mehrere Versionen: 2
Version-/ Release-Management (2) Zugang zu Dokument-Versionen ermöglichen Verwalten von System-Versionen Release: Konkrete System-Version die distributiert werden kann Version-/ Release-Management (3) Zu einem bestimmten Zustand des Projekts zurückkehren können Beispiel: Kunde meldet Fehler an einem bestimmten Release, Entwicklung ist aber schon weiter fortgeschritten Über Releases Kontakt zum Kunden 1.3 3. Change-Management Change-Management 3
Change is a fact of life for software systems Änderungswünsche müssen gesammelt und analysiert werden (Kosten: Zeit, Geld, Ressourcen) Jeder kann Change-Request erstellen (Change Control Board) Change Control Board (CCB) Sammelt alle Change-Requests (CR) an das System Festlegen von Standard-Formularen für CR. Inhalt: Was soll geändert werden? Warum soll die Änderung erfolgen? Welcher Aufwand ist dazu erforderlich?... CCB ist Schnittstelle zum Projektmanagement Abarbeitung nach bestimmten Kriterien Kosten/ Nutzen Produkt-Strategie Bugs/ Fixes Document-Lifecycle Zustand eines generischen Dokumentes 4
1.4 4. System-Build System-Building Definition: Ist ein Prozess der verschiedene Komponenten eines Softwaresystems in ein Programm vereinigt. Kompilieren Bestimmte Versionen auschecken Linken Pakete erzeugen Konfiguration Kopieren Testen... Zusammenfassen aller Schritte in einem Build-Script System-Building (2) Sollte (auf Knopfdruck) automatisiert ablaufen Erzeugtes System sollte automatisierten Tests unterzogen werden (Unit- Test, etc.) Hilft Integrations-Probleme zu verringern Programm läuft/kompiliert bei Entwickler A aber nicht bei B Änderungen lassen sich kompilieren, passen aber nicht zur Spezifikation (Test) Dateien fehlen bei Entwickler C Sourcen neu - Kompilate alt... Build-Management 5
Master-Build-Script 2 SCM-Werkzeuge Werkzeuge Auswahl knapp und projektbezogen Unterstützung für spezielle Teile des SCM Anforderungen: Stabil Frei verfügbar Aktuell (Stand der Technik) Einfach zu bedienen... 6
2.1 CVS/Subversion Concurrent Version System (CVS)/Subversion Werkzeug zur Versionierung von Dateibäumen Was kann CVS/Subversion? Versionen speichern Verzeigungen (Branches) Releases (Tags) Merge-Unterstützung Was kann CVS/Subversion nicht? Kein Change-Control Kein Bugtracking Kein Kommunikationsmittel Kein Build-System CVS/Subversion Aufbau CVS/Subversion Zugriff 7
CVS/Subversion Features Subversion Befehle Daten einfügen, ohne eine Arbeitskopie anzulegen (Import): svn i m p o r t m y f i l e. t x t f i l e : / / / home / s w t / s w t / s o p / p r o j e c t s s 0 7 / s o p 0 7 s v n Initiales anlegen einer lokalen Arbeitskopie (Checkout): svn c h e c k o u t f i l e : / / / home / s w t / s w t / s o p / p r o j e c t s s 0 7 / s o p 0 7 s v n Datei/Verzeichnis hinzufügen (Add): svn add myfile. txt Aktuelle Version aus dem Repository kopieren (Update): svn update 8
Änderungen ins Repository schreiben (Commit): svn commit m Change Message Unterschiede anzeigen: svn d i f f m y f i l e Repository anzeigen (List): svn l i s t f i l e : / / / home / s w t / s w t / s o p / p r o j e c t s s 0 7 / s o p 0 7 s v n CVS/Subversion Zusammenfassung Version/ Release Management Einfach zu bedienen Open-Source Plattformen: Windows, Unix,... Internent: www.cvshome.org 2.2 Ant Build-Tools unter Unix gibt es make (Schwäche: direkte Verknüpfung von Befehl und Ziel) für Java ant (another neat tool) Anstelle von Befehlen: Tasks Ein Task realisiert ein Ziel Über 100 Standard-Ziele Übersetzen (javac) Archivieren (jar) Dokumenation (javadoc),... 100% Java Erweiterbar durch eigene Tasks Eines der Jakarta-Apache Projekte (http://ant.apache.org) 9
Ant-Buildfile Enthält genau ein Projekt Jedes Projekt umfasst mehrere Ziele (targets) Jedes Ziel wird durch ein oder mehrere Task erfüllt Build-Spezifikation in XML ANT arbeitet wie Make inkrementell Bei jedem Bauen werden nur geänderte Teile neu übersetzt Liegt aber in der Verantwortung des Tasks! (Ant liefert nur Framework) Beispiel Ant-Buildfile 1 <project name= SimpleProject default= d i s t > 2 <target name= compile > 3 <mkdir d i r= c l a s s e s /> 4 <j a v a c s r c d i r=. d e s t d i r= c l a s s e s /> 5 </ t a r g e t> 6 7 <target name= d i s t depends= compile > 8 <mkdir d i r= l i b /> 9 <j a r j a r f i l e = l i b / s i m p l e. j a r b a s e d i r= c l a s s e s /> 10 </ t a r g e t> 11 12 <t a r g e t name= c l e a n > 13 <d e l e t e d i r= c l a s s e s /> 14 <d e l e t e d i r= l i b /> 15 </ t a r g e t> 16 17 </ p r o j e c t> Ablauf Aufruf mit Beispielskript (ant -buildfile simple.xml): 1. Vorgabeziel ist dist. 2. Ziel dist hängt von compile ab zuerst compile ausführen. 3. Ziel compile wiederum wird erfüllt durch mkdir javac 4. Nun folgen Tasks von dist: mkdir jar 5. Alle Ziele sind erfüllt das Bauen war erfolgreich. 10
Beispiel Ant-Buildfile (2) 1... 2 <t a r g e t name= i n i t > 3 <p r o p e r t y name= name v a l u e= Sop /> 4 <property name= version value= 0. 1. 0 /> 5 <p r o p e r t y name= owner v a l u e= SopGroupX /> 6 </ t a r g e t> 7 8 <target name= checkout depends= i n i t > 9 <c v s cvsroot= /home/ swt /... 10 command= update 11 d e s t=. 12 t a g= r e l e a s e 13 f a i l o n e r r o r= t r u e 14 /> 15 </ t a r g e t> 16... 3 Projektaufgabe 3.1 Aufgabe Projektaufgabe Ein Computer-Shop hat euch beauftragt: Entwickelt eine Applikation zur Verwaltung eines Hard- und Software-Geschäftes, in- klusive Lagerverwaltung, Finanzverwaltung, Kundenverwaltung, usw. Stakeholder: Ladeninhaber, Verkäufer, Lagerarbeiter, Sekretärin, Administrator Kunden, Stammkunden, Zulieferer (Inland, Ausland, EU)... Arbeitsauftrag Es soll folgendes in 10 Wochen ausgeliefert werden: Eine lauffähige Verwaltungssoftware mit Funktionalitäten für die einzelnen Stakeholder Ein Benutzerhandbuch 3.2 Gruppenaufteilung Gruppenaufteilung 1. Datenbank (DB) Zentrale Datenverwaltung, Basisoperationen 11
2. Benutzerschnittstelle (GUI) Dialoge der Applikation Animationen 3. Qualitätssicherung (QS) Sicherung der Qualität Masterbuildscript 4. Applikation/Integration (INT) Gesamtarchitektur der Applikation, Benutzerverwaltung Verwaltung des Pflichtenheftes 3.3 Die Arbeit in einem High-End-Computer-Shop (HECS) Tätigkeiten Verwaltung der Kunden, Zulieferer, Mitarbeiter Verwaltung der Finanzen Verwaltung von Dokumente Verwaltung des Lagers, der Produkte Verwaltung der Webseite (gibt es bereits) Tätigkeiten (2) 12
Lagepläne Der Lagerroboter 3.4 Projektphasen Projektphasen 13
1. Phase: Analyse Anforderungsanalyse, Use-Cases,... 2. Phase: Modellierung Modelle in UML 3. Implementierung, 1. Stufe Verwendung von JavaDoc, JML, CVS, Ant,... 4. Implementierung, 2. Stufe Verwendung von JavaDoc, JML, CVS, Ant,... 5. Qualitätssicherung Junit, DBC, Integrationstest 6. Abschlusspräsentation 14