Der Baustein Spec


Methode

Moti­vation für den Ein­satz

Mit jedem Bau­stein der System­struk­tur sind Ent­schei­dungen ver­knüpft. Im Steck­brief der Bau­steine Service, Entity und Event wird fest­gehalten, welchen Techno­logien die Ent­wick­ler gewählt haben. Der Bau­stein Domain wird genutzt, um Gren­zen inner­halb eines IT-Systems zu ziehen. Das sind alles ein­zelne Ent­schei­dungen, die bei agiler Ent­wick­lung selbst­organi­siert im Team getroffen wer­den. Manchmal ist eine ein­mal getroffene Ent­schei­dung für einen Dienst auch für andere Dienste rich­tig. Oder Objekte folgen einer ein­heit­lichen Grund­struk­tur. Der Bau­stein Spec ist das Arte­fakt für den Archi­tektur­entw­urf, mit dem Autoren pro­dukt­spezifi­sche Kon­zepte fest­halten. Er gibt einem Konzept einen ein­deutigen Namen. Der Überblick im Bau­stein muss jeden Leser in die Lage ver­setzen, das Kon­zept und seine Konse­quenzen zu ver­stehen.

Für welche Themen über­haupt Kon­zepte not­wendig sind, hängt ganz wesent­lich vom Archi­tektur­stil ab, aber auch das Pro­jekt­umfeld, die Pro­jekt­organi­sation und die Anwen­dungs­domäne sind Ein­fluss­fak­toren.

Wissens­­­­­manage­­ment richtig organi­­sieren.
Ziel­gerichtet. Agil. Iterativ.


Pro­zesse

Pro­jekt­manage­ment

In prak­tisch jedem nicht trivi­alen IT-System gibt es den Bedarf an über­grei­fenden Betriebs­kon­zep­ten. Themen wie Log­ging, Moni­toring, Sicher­heit, Robust­heit, Ska­lier­bar­keit müssen in der Regel über­greifend betrach­tet werden. Bei der Sicher­heit oder Ska­lier­bar­keit gilt der Satz «Die Kette bricht an der schwäch­sten Stelle». Ein Team muss viele Qua­litäts­merk­male berück­sich­ti­gen. Jeder ein­zelne Dienst muss sicher sein und die ge­speicher­ten Daten ange­mes­sen schüt­zen. Kein Dienst darf zum Flaschen­hals (engl. bottle neck) für das IT-System wer­den. Zuver­lässi­ges Moni­toring ist eine Vor­aus­setzung für den rei­bungs­losen Betrieb in einer kom­ple­xen IT-Land­schaft. Mit dem Bau­stein Spec werden Kon­zepte doku­mentiert und kom­muni­ziert, um sol­che Qua­litäts­ziele zu erreichen. Mit der Frei­gabe wird das Kon­zept zur ver­bind­lichen Vor­gabe für das Team. Ab­weichun­gen vom Kon­zept sind weiter­hin zu­lässig. Sie müssen aber be­grün­det wer­den. Änderun­gen am Kon­zept sind natür­lich auch mög­lich. Die Kon­sequen­zen soll­ten dann aber sehr gründ­lich unter­sucht wer­den.

 


Pro­zesse

Anfor­derungs­analyse

Kon­zepte für wieder­kehrende Muster sind ein sehr wich­tiges Ein­satz­gebiet für den Bau­stein Spec. Ent­wick­ler kennen viele Ent­wurf­smuster (engl. design patterns), z.B. Single­ton, Obser­ver oder Dele­gate. Es gibt unzäh­lige 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 Pro­dukt ange­wendet. Im Bau­stein Spec hal­ten Autoren diese Beson­der­heiten fest.

 


Pro­zesse

Pro­dukt­entwick­lung

Ver­treter des Teams nutzen den Bau­stein Spec, um für das Team wich­tige Kon­zepte beschrei­ben. Er ist hilf­reich bei der Formu­lierung eines gemein­samen Ver­ständ­nisses nicht funktio­naler Aspekte, die von «gleich­artigen» Diensten berück­sich­tigt wer­den. Mit dem Titel der Seite im Wiki bekommt jedes Kon­zept einen ein­deutigen Namen. Der Bau­stein Spec wird in den Bau­steinen des System­struk­tur mit einer kurzen Begrün­dung als Ver­knüpfung einge­tra­gen. Der Bau­stein Spec wird auch gewählt, um eine sehr kom­plexe Lösung zu beschrei­ben, wenn mehr als ein Dienst betrof­fen ist.

Moderne Pro­dukt­ent­wick­lung basiert auf der Wieder­verwen­dung von Soft­ware. Open-Source-Soft­ware ist mittler­weile ein unver­zicht­barer Bestand­teil vieler erfolg­reicher kommer­zieller Pro­dukte. Programm­biblio­theken lösen viele all­tägliche Prob­leme der Ent­wick­ler: Bild­manipu­lation, Daten­konver­tierung, Daten­aus­tausch, um nur einige Ein­satz­bereiche zu nennen. Die Umsetzung einer Test­pyramide wäre undenk­bar ohne JUnit, TestNG, Spock, Fitnesse, Cucumber, Jenkins, Mockito und noch viele weitere mehr. Open-Source-Soft­ware ist Teil der Infra­struk­tur für den ska­lier­baren, leis­tungs­fähigen und robus­ten Betrieb eines Pro­duktes. Die Apache Software Foundation hat ein ganzes Uni­versum unver­zicht­barer Produkte: Kafka, Storm, Flink, das Hadoop-Öko­system und viele ver­schie­dene Daten­banken. Auch erfolg­reiche Unter­nehmen wie Google, Netflix oder Microsoft stellen gut funk­tionie­rende Pro­dukte zur freien Nutzung zur Ver­fügung. Eine cloud-basierte Infra­struktur mit Konzepten wie PaaS, IaaS oder SaaS wäre ohne Docker, Kubernetes, Terraform, Packer oder Rancher wohl nicht mach­bar.

Unter dem Begriff Modul ver­sammeln sich alle Pro­dukte, die beim Auf­bau eines indivi­duellen Pro­duktes vom Team genutzt wer­den. Jedes Modul wird mit dem Bau­stein Spec erfasst und bekommt durch den Titel der Seite im Wiki einen ein­deutigen Namen. Der Bau­stein Spec wird in den Bau­steinen des System­struk­tur in der Liste der einge­setzten Techno­logien als Ver­knüpfung einge­tragen.

Eine Bedien­ober­fläche ver­folgt immer ein bestimm­tes Bedien­kon­zept. Die Größe des Bild­schirmes (z.B. Watch, Smart­phone, Tablet, Moni­tor, UHD-TV) und die Mög­lich­keiten der Ein­gabe (z.B. Maus, Tasta­tur, Stift, Berüh­rung) beein­flus­sen die Gestal­tung der Bedien­ober­fläche. Ein Bedien­kon­zept ver­folgt auch das Ziel einer Stan­dardi­sierung der Ele­mente der Bedien­ober­fläche durch eine Gestal­tungs­richt­linie (engl. style guide). Jedes Bedien­kon­zept wird mit dem Bau­stein Spec erfasst und bekommt durch den Titel der Seite im Wiki einen ein­deutigen Namen.

Seiten­vorlagen für alle Bau­steine und hilf­reiche Makros für die Ver­wendung in Con­fluence.


Quali­tät

Seiten­vor­lage des Bau­steins

Confluence unter­stützt mit Seiten­vor­lagen die Idee der Bau­steine optimal. Das fol­gende Bei­spiel kann direkt als HTML im Editor der Seiten­vor­lagen ein­gefü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>

 


Struk­tur

Eigen­schaf­ten des Bau­steins

Der Bau­stein Spec beschreibt ein pro­dukt­spezifi­sches Kon­zept für das IT-System. Er ver­mittelt einen sehr kom­pakten Über­blick (engl. management summary). Die Beschrei­bung muss jeden Leser in die Lage ver­setzen, das Kon­zept zu ver­stehen. Dazu verwenden Autoren aussage­kräftige Schau­bilder oder andere Dar­stellungen aus der Medien­biblio­thek. Der Seiten­titel beginnt immer mit Spec. Durch die Seiten­vor­lage hat jede Seite das Stich­wort spec. Sie kann aber um weitere Schlag­worte ergänzt wer­den. Dadurch wird die Seite leich­ter auf­find­bar.

Der Bau­stein Spec hat kei­nen Zustand. Mit der Ver­öffent­lichung im Wiki ist er gültig.

Der Bau­stein Spec hat kei­nen Bezug zu einem Produkt­inkre­ment.

Der Bau­stein Spec wird in der Sprache der Ent­wick­ler geschrie­ben.