Methode
Motivation für den Einsatz
Mit jedem Baustein der Systemstruktur sind Entscheidungen verknüpft. Im Steckbrief der Bausteine Service, Entity und Event wird festgehalten, welchen Technologien die Entwickler gewählt haben. Der Baustein Domain wird genutzt, um Grenzen innerhalb eines IT-Systems zu ziehen. Das sind alles einzelne Entscheidungen, die bei agiler Entwicklung selbstorganisiert im Team getroffen werden. Manchmal ist eine einmal getroffene Entscheidung für einen Dienst auch für andere Dienste richtig. Oder Objekte folgen einer einheitlichen Grundstruktur. Der Baustein Spec ist das Artefakt für den Architekturentwurf, mit dem Autoren produktspezifische Konzepte festhalten. Er gibt einem Konzept einen eindeutigen Namen. Der Überblick im Baustein muss jeden Leser in die Lage versetzen, das Konzept und seine Konsequenzen zu verstehen.
Für welche Themen überhaupt Konzepte notwendig sind, hängt ganz wesentlich vom Architekturstil ab, aber auch das Projektumfeld, die Projektorganisation und die Anwendungsdomäne sind Einflussfaktoren.
Wissensmanagement richtig organisieren.
Zielgerichtet.
Agil.
Iterativ.
Prozesse
Projektmanagement
In praktisch jedem nicht trivialen IT-System gibt es den Bedarf an übergreifenden Betriebskonzepten. Themen wie Logging, Monitoring, Sicherheit, Robustheit, Skalierbarkeit müssen in der Regel übergreifend betrachtet werden. Bei der Sicherheit oder Skalierbarkeit gilt der Satz «Die Kette bricht an der schwächsten Stelle». Ein Team muss viele Qualitätsmerkmale berücksichtigen. Jeder einzelne Dienst muss sicher sein und die gespeicherten Daten angemessen schützen. Kein Dienst darf zum Flaschenhals (engl. bottle neck) für das IT-System werden. Zuverlässiges Monitoring ist eine Voraussetzung für den reibungslosen Betrieb in einer komplexen IT-Landschaft. Mit dem Baustein Spec werden Konzepte dokumentiert und kommuniziert, um solche Qualitätsziele zu erreichen. Mit der Freigabe wird das Konzept zur verbindlichen Vorgabe für das Team. Abweichungen vom Konzept sind weiterhin zulässig. Sie müssen aber begründet werden. Änderungen am Konzept sind natürlich auch möglich. Die Konsequenzen sollten dann aber sehr gründlich untersucht werden.
Prozesse
Anforderungsanalyse
Konzepte für wiederkehrende Muster sind ein sehr wichtiges Einsatzgebiet für den Baustein Spec. Entwickler kennen viele Entwurfsmuster (engl. design patterns), z.B. Singleton, Observer oder Delegate. Es gibt unzählige Bücher dazu.
- Design Patterns (1997) von Gamma/Helm/Johnson/Vlissides
- Pattern-orientierte Software-Architektur (1998) von Buschmann/Meunier/Rohnert/Sommerlad/Stal
- Refactoring, (1999) von Fowler
- J2EE Best Practices (2002) von Broemmer
- Patterns of Enterprise Application Architecture (2002) von Fowler/Rice/Foemmel
- Server Component Patterns (2002) von Völter/Schmid/Wolff
- Core J2EE Patterns (2003) von Alur/Crupi/Malks
In der Regel werden die Muster auf eine ganz bestimmte Art und Weise für das Produkt angewendet. Im Baustein Spec halten Autoren diese Besonderheiten fest.
Prozesse
Produktentwicklung
Vertreter des Teams nutzen den Baustein Spec, um für das Team wichtige Konzepte beschreiben. Er ist hilfreich bei der Formulierung eines gemeinsamen Verständnisses nicht funktionaler Aspekte, die von «gleichartigen» Diensten berücksichtigt werden. Mit dem Titel der Seite im Wiki bekommt jedes Konzept einen eindeutigen Namen. Der Baustein Spec wird in den Bausteinen des Systemstruktur mit einer kurzen Begründung als Verknüpfung eingetragen. Der Baustein Spec wird auch gewählt, um eine sehr komplexe Lösung zu beschreiben, wenn mehr als ein Dienst betroffen ist.
Moderne Produktentwicklung basiert auf der Wiederverwendung von Software. Open-Source-Software ist mittlerweile ein unverzichtbarer Bestandteil vieler erfolgreicher kommerzieller Produkte. Programmbibliotheken lösen viele alltägliche Probleme der Entwickler: Bildmanipulation, Datenkonvertierung, Datenaustausch, um nur einige Einsatzbereiche zu nennen. Die Umsetzung einer Testpyramide wäre undenkbar ohne JUnit, TestNG, Spock, Fitnesse, Cucumber, Jenkins, Mockito und noch viele weitere mehr. Open-Source-Software ist Teil der Infrastruktur für den skalierbaren, leistungsfähigen und robusten Betrieb eines Produktes. Die Apache Software Foundation hat ein ganzes Universum unverzichtbarer Produkte: Kafka, Storm, Flink, das Hadoop-Ökosystem und viele verschiedene Datenbanken. Auch erfolgreiche Unternehmen wie Google, Netflix oder Microsoft stellen gut funktionierende Produkte zur freien Nutzung zur Verfügung. Eine cloud-basierte Infrastruktur mit Konzepten wie PaaS, IaaS oder SaaS wäre ohne Docker, Kubernetes, Terraform, Packer oder Rancher wohl nicht machbar.
Unter dem Begriff Modul versammeln sich alle Produkte, die beim Aufbau eines individuellen Produktes vom Team genutzt werden. Jedes Modul wird mit dem Baustein Spec erfasst und bekommt durch den Titel der Seite im Wiki einen eindeutigen Namen. Der Baustein Spec wird in den Bausteinen des Systemstruktur in der Liste der eingesetzten Technologien als Verknüpfung eingetragen.
Eine Bedienoberfläche verfolgt immer ein bestimmtes Bedienkonzept. Die Größe des Bildschirmes (z.B. Watch, Smartphone, Tablet, Monitor, UHD-TV) und die Möglichkeiten der Eingabe (z.B. Maus, Tastatur, Stift, Berührung) beeinflussen die Gestaltung der Bedienoberfläche. Ein Bedienkonzept verfolgt auch das Ziel einer Standardisierung der Elemente der Bedienoberfläche durch eine Gestaltungsrichtlinie (engl. style guide). Jedes Bedienkonzept wird mit dem Baustein Spec erfasst und bekommt durch den Titel der Seite im Wiki einen eindeutigen Namen.
Seitenvorlagen für alle Bausteine und hilfreiche Makros für die Verwendung in Confluence.
Qualität
Seitenvorlage des Bausteins
Confluence unterstützt mit Seitenvorlagen die Idee der Bausteine optimal. Das folgende Beispiel kann direkt als HTML im Editor der Seitenvorlagen eingefügt werden.
Bitte hier Klicken, um den Quelltext anzuzeigen
<ac:layout> <ac:layout-section ac:type="single"> <ac:layout-cell> <h1>Überblick</h1> <ac:structured-macro ac:macro-id="36946b23-3c5e-43f7-92fe-fbabe716156c" ac:name="excerpt" ac:schema-version="1"> <ac:parameter ac:name="atlassian-macro-output-type">BLOCK</ac:parameter> <ac:rich-text-body> <p> <ac:placeholder>Bitte hier einen Überblick über das Konzept, eventuell auch eine Motivation für den Einsatz.</ac:placeholder> </p> </ac:rich-text-body> </ac:structured-macro> <p>Weiterlesen auf <ac:placeholder>Bitte hier die Website des Herstellers angeben.</ac:placeholder> </p> <h1>Beschreibung</h1> <p> <ac:placeholder>Bitte hier das Konzept beschreiben.</ac:placeholder> </p> <h1>Qualitätsmerkmale</h1> <h2>Effizienz</h2> <p> <ac:placeholder>Effizienz (englisch: efficiency, performance) ist das Verhältnis zwischen dem Leistungsniveau der Software und dem Umfang der eingesetzten Betriebsmittel unter festgelegten Bedingungen. In der Praxis oftmals vereinfacht als Leistungsfähigkeit (englisch: performance), Verarbeitungsgeschwindigkeit, Antwortzeit, Skalierbarkeit, Durchsatz, Speicherbedarf oder Mengengerüst bezeichnet. </ac:placeholder> </p> <p>Keine Angabe</p> <h2>Zuverlässigkeit</h2> <p> <ac:placeholder>Zuverlässigkeit (englisch: reliability) ist die Fähigkeit der Software, ihr Leistungsniveau unter festgelegten Bedingungen über einen festgelegten Zeitraum zu bewahren. Über Verfügbarkeit erfolgt die Festlegung, inwieweit eine Anwendung rund um die Uhr verfügbar ist. Weitere Merkmale sind die Wiederherstellbarkeit und die Fehlertoleranz. Wiederherstellbarkeit bezeichnet die Fähigkeit einer Software, die Bereitstellung zu dem Punkt wiederherzustellen, zu dem ein Ausfall erfolgt ist. Fehlertoleranz ist die Eigenschaft einer Software, seine Funktionsweise auch dann aufrechtzuerhalten, wenn unvorhergesehene Eingaben oder Fehler in einzelnen Komponenten auftreten. </ac:placeholder> </p> <p>Keine Angabe</p> <h2>Sicherheit</h2> <p> <ac:placeholder>Sicherheit (englisch: security) ist ein Sammelbegriff für alle Fähigkeiten einer Software, die notwendig sind, um Daten und das IT-System so zu schützen, dass beabsichtigte Zugriffe erkannt und unerlaubte Zugriffe abgewehrt werden.</ac:placeholder> </p> <p>Keine Angabe</p> </ac:layout-cell> </ac:layout-section> <ac:layout-section ac:type="single"> <ac:layout-cell> <p> <br/> </p> </ac:layout-cell> </ac:layout-section> <ac:layout-section ac:type="single"> <ac:layout-cell> <ac:structured-macro ac:macro-id="6ab46a1c-109c-42ee-acf6-6cec1190a33b" ac:name="details" ac:schema-version="1"> <ac:rich-text-body> <table class="wrapped"> <colgroup> <col/> <col/> </colgroup> <tbody> <tr> <th>Status</th> <td> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="3082bbea-f488-4e87-9a20-3b56911e0479" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Red</ac:parameter> <ac:parameter ac:name="title">offen</ac:parameter> </ac:structured-macro> <ac:structured-macro ac:macro-id="a8b305c4-97b0-4405-98e3-5dc41b57de52" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Yellow</ac:parameter> <ac:parameter ac:name="title">Vorschlag</ac:parameter> </ac:structured-macro> <ac:structured-macro ac:macro-id="17a10555-cb73-4821-83d1-048138b519eb" ac:name="status" ac:schema-version="1"> <ac:parameter ac:name="colour">Green</ac:parameter> <ac:parameter ac:name="title">entschieden</ac:parameter> </ac:structured-macro> </p> </div> </td> </tr> <tr> <th>Datum</th> <td> <p> <ac:placeholder>Wann wurde der Status entschieden? Verwende das //-Makro zum Einfügen eines Datums.</ac:placeholder> </p> </td> </tr> <tr> <th colspan="1">Beitragende</th> <td colspan="1"> <div class="content-wrapper"> <p> <ac:structured-macro ac:macro-id="5a822a95-77a7-4b78-be2f-16ae27cc2729" ac:name="contributors" ac:schema-version="1"/> </p> </div> </td> </tr> </tbody> </table> </ac:rich-text-body> </ac:structured-macro> </ac:layout-cell> </ac:layout-section> </ac:layout>
Struktur
Eigenschaften des Bausteins
Der Baustein Spec beschreibt ein produktspezifisches Konzept für das IT-System.
Er vermittelt einen sehr kompakten Überblick (engl. management summary).
Die Beschreibung muss jeden Leser in die Lage versetzen, das Konzept zu verstehen.
Dazu verwenden Autoren aussagekräftige Schaubilder oder andere Darstellungen aus
der Medienbibliothek.
Der Seitentitel beginnt immer mit Spec
.
Durch die Seitenvorlage hat jede Seite das Stichwort spec
.
Sie kann aber um weitere Schlagworte ergänzt werden.
Dadurch wird die Seite leichter auffindbar.
Der Baustein Spec hat keinen Zustand. Mit der Veröffentlichung im Wiki ist er gültig.
Der Baustein Spec hat keinen Bezug zu einem Produktinkrement.
Der Baustein Spec wird in der Sprache der Entwickler geschrieben.