![]() |
Vorgehen |
|||||||||||
|
Schritt-für-SchrittUse-CaseZuerst wurden Use-Cases erdacht und dokumentiert. Diese wurden in einer tabellarischen Ansicht festgehalten. Die Ergebnisse der Use-Case analysen sind im Use-Case Dokument im download-Bereich ersichtlich. In diesem Schritt versuchten wir auch die Aufgabe für uns attraktiver zu gestalten und uns neue Aufgaben auszudenken. Dies gelang uns recht gut und somit ergaben sich folgende erweiterte Aufgaben, die wir uns zum Ziel setzten:
... so, ich denke das sollte reichen... :-) UML-DiagrammeDie nächste Arbeit war die Ausarbeitung eines detaillierten UML-Diagrammes. Dazu setzten wir zuerst Poseidon UML ein. Nach mehreren Datenverlusten und unbrauchbaren Diagrammen wechselten wir zu MagicDraw UML. Damit waren wir dann bis zum Projektschluss sehr zufrieden. Der einzige Nachteil an MagicDraw ist, dass es nicht kostenlos zur Verfügung steht. Zunächst versuchten wir das Design nach dem KISS-Prinzip möglichst einfach zu halten. Kurz darauf entschlossen wir uns aber das MVC-Konzept in den Vordergrund zu stellen. Dies hatte zur Folge, dass nicht mehr alle Klassen direkt miteinander Kommunizieren sondern die Kommunikation und Kontrolle über einen Controller zu geschehen hat. Der Grösste Vorteil des MVC Konzeptes sahen wir darin, dass einzelne Komponenten (insbesondere das GUI) später problemlos durch andere Implementationen ersetzt werden können. Als Folge davon mussten für die einzelnen Komponenten Interfaces erstellt werden, welche die Kommunikationsschnittstellen regeln. Daraus entstand dann ein erstes UML-Diagramm: Das finale Diagramm wurde dann etwas grösser. Um die Übersichtlichkeit zu erhöhen hier die auf das Wesentliche eingedampfte Version: Des weiteren haben wir folgende Detail-Diagramme erstellt. Sie zeigen einige Strukturen etwas genauer auf:
Ausserdem haben wir einige Vorgänge mit Sequenzdiagrammen beschrieben:
Aus diesem Diagramm erstellten wir dann ein erstes Framework bestehend aus den einzelnen Klassen und mit leeren Methoden. Da es MagicDraw erlaubt Kommentare für Klassen, Methoden und Attribute zu definieren waren auch diese bereits vorhanden und ein erstes JavaDoc konnte bereits erstellt werden. CVSDas erstellte Framework wurde dann in CVS eingecheckt um paralleles Arbeiten zu erleichtern. Dabei haben wir explizit nicht definiert, wer jetzt an welchen Source-Dateien oder gar Methoden arbeiten soll. Logischerweise hat sich das dann trotzdem ergeben, da die unterschiedlichen Erfahrungen in der Programmierung dazu führten, dass eine gewisse Selektion stattfand. Dies hielt mich aber als GUI-Entwickler nicht davon ab einige Dummy-Methoden im Model-Bereich zu implementieren, die ich für meine Tests benötigte. Die Person, die dann am Model zu arbeiten begann konnte dann einfach meine Änderungen erweitern/überschreiben, ohne dass dies auf Meine Arbeit negative Effekte gehabt hätte. CVS erlaubt es insbesondere Code-Konflikte (Arbeiten an der selben Code-Stelle) sehr schnell aufzulösen. Arbeiten in unterschiedlichen Regionen eines Code-Fragmentes werden von CVS weitgehend automatisch zusammengeführt. EntwicklungsumgebungAls Entwicklungsumgebung setzten wir von Beginn an eclipse ein. Die Software bot sich aus vielen Gründen an. Einer der Hauptgründe ist sicher die freie Verfügbarkeit. Weitere Gründe sind die gute Bedienbarkeit, Konfigurierbarkeit und eine grosse Anzahl verfügbarer Plugins. Als Nachteil ist zu erwähnen, dass eine IDE wie eclipse natürlich bedingt durch die Komplexität etwas träger arbeitet als ein einfacher Editor. Insbesondere der Startvorgang ist schon als elend langsam zu bezeichnen :-(. Dafür wird man von eclipse mit Features wie automatischer Code-Vervollständigung, Code-Formatierung, CVS-Integration, automatischer Code-Generierung und vielem mehr belohnt. AdarvoUm die Kommunikation im Team zu gewährleisten setzten wir Adarvo ein. Dies ist eine Groupware die uns beim Austausch von Informationen und Dokumenten sowie deren Versionierung geholfen hat. ImplementierungJetzt konnte die Phase der Implementierung beginnen. Neben dem reinen "hacken" wurden eine Vielzahl von Dokumenten erstellt. Hier eine Sammlung der wichtigsten Dokumente:
Die Implementierung hat besonders bei uns als unerfahrene Programmierer viel Zeit in Anspruch genommen. Prinzipbedingt ist dies aber eine recht unspektakuläre Phase, da einfach viel Code generiert wird, der erst gegen Ende ein brauchbares Egebnis erzielt. TestingDas Testing lieft natürlich bereits parallel zur Implementierung. Alle lauffähigen Funktionen wurden von uns getestet und bei der Einbindung in die Applikation auf Herz und Nieren geprüft. Das Testing geschah hauptsächlich auf manuelle Weise während der Implementierung wo wir auch versuchten JUnit Test-Cases für das White-Box-Testing zu erstellen. Ein Hauptproblem dabei war natürlich, dass sich keiner von uns länger mit JUnit beschäftigt hatte und eine Einarbeitung war innerhalb der kurzen Projektdauer nicht möglich. Deshalb beschlossen wir die Tests am fertigen Produkt (Black-Box-Testing) durchzuführen. In der Testphase wurde dann ein Test-Dokument erstellt: DokumentationNatürlich ist dieses Dokument nicht die einzige Dokumentation. Im rahmen des Projektes wurde noch eine komplette Dokumentation, die alle wichtigen Eckdaten zusammenfasst, erstellt. Was wir nicht erledigen konntenWie das bei praktisch jedem Projekt und speziell bei Softwareentwicklung ist konnten wir leider nicht alle unsere Wünsche in die Tat umsetzen. Folgende Punkte hätten wir gerne implementiert/erledigt, fielen aber aus Zeitgründen dem Rotstift zum Opfer:
Was wir zusätzlich erreichtenWir haben auch ein paar Sachen erreichen könne, die nicht von Anfang an in diesem Umfang geplant waren:
|