Implementierung vorbereiten
Aufgabe/Problem verstehen
Vor dem Beginn einer Implementierungsaufgabe muss sich der Implementierer mit dem Umfang der Aufgabe befassen, der in
den Arbeitszuordnungen und Iterationsplänen spezifiziert ist. Eine Implementierungsaufgabe kann sich auf das Erreichen
einer speziellen Funktionalität (z. B. die Implementierung einer Designanwendungsfallrealisierung oder die Behebung
eines Mangels) konzentrieren und die Implementierung verschiedener Designelemente umfassen, die zu dieser
Funktionalität beitragen. Alternativ kann sich eine Implementierungsaufgabe auf ein bestimmtes Designelement, z. B. ein
Designsubsystem oder eine Designklasse, und dessen Implementierung in dem für die aktuelle Iteration erforderlichen
Umfang konzentrieren.
Entwicklungsumgebung konfigurieren
Mit dieser Aufgabe werden eine oder mehrere Dateien (Implementierungselemente) erstellt oder aktualisiert. Während der
Vorbereitung der Implementierung muss der Implementierer sicherstellen, dass seine Entwicklungsumgebung korrekt
konfiguriert ist, damit die richtigen Elementversionen verfügbar sind - die Elemente, die aktualisiert werden müssen,
und die anderen Elemente, die für die Kompilierung und die Einheitentests erforderlich sind. Der Implementierer muss
die Konfigurations- und Änderungsmanagementprozeduren kennen und befolgen, die beschreiben, wie Änderungen kontrolliert
und in der Versionssteuerung gehandhabt und wie sie für die Integration bereitgestellt werden.
Vorhandene Implementierung analysieren
Bevor Sie eine Klasse vollständig neu implementieren, sollten Sie überlegen, ob Code vorhanden ist, den Sie
wiederverwenden oder anpassen können. Kenntnisse darüber, wie sich die Implementierung in die Architektur und das
Design des restlichen Systems einfügt, können dem Implementierer helfen, solche Wiederverwendungsmöglichkeiten zu
erkennen und sicherzustellen, dass die Implementierung in den Rest des System passt.
Inkrementell implementieren
Es wird empfohlen, die Implementierung inkrementell durchzuführen, d. h. mehrfach am Tag kompilieren, verlinken und
Regressionstest durchführen. Beachten Sie, dass nicht alle öffentlichen Operationen, Attribute und Assoziationen
während des Designs definiert werden.
Wenn es um Mängel geht, müssen Sie sicherstellen, dass Sie das Problem und nicht das Symptom beheben. Das
Hauptaugenmerk muss auf der Behebung des im Code vorliegenden Problems liegen. Nehmen Sie eine Änderung nach der
anderen vor. Da die Behebung von Mängeln selbst eine fehleranfällige Aufgabe ist, sollten die Korrekturen inkrementell
implementiert werden, um leicht feststellen zu können, woher neue Fehler stammen.
Der Implementierer muss die projektspezifischen Implementierungsrichtlinien kennen und befolgen. Dazu gehören unter
anderem Programmierrichtlinien für bestimmte Programmiersprachen.
|
Design in Implementierung umsetzen
Es gibt verschiedene Techniken für die Umsetzung des Designs in die Implementierung. Beispiele:
-
Plattformspezifische visuelle Modelle können verwendet werden, um ein erstes Code-Framework zu generieren. Dieses
Code-Framework kann anschließend mit zusätzlichem Code weiter ausgearbeitet werden, der nicht im Design
spezifiziert ist.
-
Modelle können detailliert beschrieben und zum Generieren ausführbarer Prototypen verwendet werden. Es können
sowohl Struktur- (Klassen- und Paketdiagramme) als auch Verhaltensdiagrame (z. B. Zustands- und
Aktivitätsdiagramme) verwendet werden, um ausführbaren Code zu generieren. Diese Prototypen können bei Bedarf
weiter präzisiert werden.
-
Modelle können auch so weit detailliert werden, dass das Modell die Implementierung vollständig darstellt. Anstatt
ein abstraktes Design in eine Codeimplementierung umzusetzen, wird hier das Designmodell verwendet, dem die
Implementierungsdetails direkt hinzugefügt werden.
-
Das Design kann in verschiedener Ausprägung plattformunabhängig sein. Plattformspezifische Designmodelle oder
selbst Code kann durch Umsetzungen generiert werden, die verschiedene Regeln anwenden, um Abstraktionen auf hoher
Ebene plattformspezifische Elemente zuzuordnen. Dies ist der Fokus der Initiative Object Management Group (OMG)
Model Driven Architecture (MDA) (http://www.omg.org).
-
Es können auch Standardmuster angewendet werden, um Design- und Codeelemente aus dem zugehörigen Design und der
Implementierung zu generieren. Beispielsweise kann ein Standardumsetzungsmuster auf eine Datentabelle angewendet
werden, um Java-Klassen für den Zugriff auf die Datentabelle zu erstellen. Ein weiteres Beispiel ist die Verwendung
eines EMF-Modells (Eclipse Modeling Framework, siehe http://www.eclipse.org/emf/), um Code für das Speichern von Daten zu generieren, der dem Modell
entspricht, und eine Benutzerschnittstellenimplementierung zu generieren, um Daten einzutragen.
In allen Fällen wird jedoch eine Designabstraktion zu einer Implementierung ausgearbeitet, entweder manuell oder durch
Anwenden einer automatisierten Umsetzung.
|
Implementierung abschließen
Die Umsetzung des Designs in die Implementierung kann, wie im vorherigen Schritt beschrieben, eine mehr oder weniger
vollständige Implementierung liefern. Das Ergebnis kann eine vollständige und akzeptable Implementierung sein. In der
Regel sind jedoch noch erhebliche Arbeiten erforderlich, um die Implementierung abzuschließen, z. B.:
-
Ergebnisse der Umsetzung optimieren (z. B. Leistung oder Benutzerschnittstelle verbessern)
-
Fehlende Details hinzufügen, z. B.:
-
Im Design beschriebene Operationen vervollständigen - Algorithmen auswählen und Code schreiben.
-
Zusätzliche unterstützende Klassen, Operationen und Datenstrukturen hinzufügen.
|
Implementierung auswerten
Hier prüfen Sie, ob die Implementierung den Zweck erfüllt. Zusätzlich zu Tests (die in anderen Aufgaben beschrieben
werden) können weitere Prüfungen hilfreich sein:
-
Den Code mental durchgehen. Es empfiehl sich, eine Prüfliste mit Fehlern zu führen, die Sie häufig in Ihren
Implementierungen machen, und den Code anhand dieser Liste zu prüfen.
-
Mit Tools den Code auf Fehler überprüfen. Verwenden Sie beispielsweise ein Prüfprogramm für statische Coderegeln
oder einen Compiler, der detaillierte Warnungen ausgibt.
-
Mit Tools den Code visualisieren. Codevisualisierung kann einem Implementierer helfen, Muster zu erkennen, z. B.
exzessive Kopplungen, Schleifenabhängigkeiten usw.
|
Feedback an Design
Da Designs implementiert und getestet werden, werden unweigerlich auch Fehler gefunden, die sich häufig auf das Design
beziehen. Wenn für künftige Pflegearbeiten oder aus Vertrags- oder Kommunikationsgründen eine Designabstraktion
verwaltet wird, muss das Design aktualisiert werden.
Wie diese Aktualisierung durchgeführt wird, richtet sich nach dem Konfigurations- und Änderungsmanagementprozess des
Projekts. Wenn es sich um eine kleine Änderung handelt und dieselbe Person für Design und Implementierung der Klasse
zuständig ist, besteht im Allgemeinen keine Veranlassung für eine formale Änderungsanfrage. Der zuständige Mitarbeiter
kann die Änderung im Design vornehmen.
Falls die erforderliche Änderung breitgefächerte Auswirkungen hat, z. B. die Änderung einer öffentlichen Operation,
muss unter Umständen eine formale Änderungsanfrage eingereicht werden.
|
|