Aufgabe: Designelemente implementieren
Diese Aufgabe beschreibt, wie eine Implementierung für einen Teil des Designs (z. B. eine Klasse, eine Anwendungsfallrealisierung oder eine Datenbankentität) erzeugt wird und eine oder mehrere Mängel behoben werden. Das Ergebnis dieser Aufgabe sind in der Regel neue oder geänderte Quellcode- und Datendateien, die generell als Implementierungselemente bezeichnet werden.
Disziplinen: Implementierung
Beziehungen
Schritte
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.



Weitere Informationen