Der Baustein Event


Methode

Motivation für den Einsatz

Reaktive IT-Systeme sind robust, fehler­tolerant und gut skalier­bar. Event-basierte Kommuni­kation zwischen den Diensten ist ein wesent­liches Merk­mal dieses Archi­tektur­stils. Nach­richte­nobjekte melden einen aktu­ellen Zustand oder nur die Ver­änderung eines Zustandes. Sie werden grup­piert (z.B. nach Ort oder Zeit), können zu größeren Objekten aggre­giert oder in viele kleine Objekte zer­legt werden. Manche Objekte haben eine Gültig­keit und werden ver­worfen, wenn sie ver­altet sind. Der Bau­stein Event ist ein Arte­fakt der System­struk­tur, mit dem wir solche Ergeb­nisse der Soft­ware-Ent­wick­lung doku­mentieren. Dabei steht der fach­liche Nutzen des Dienstes im Vorder­grund. Der Titel des Bau­steinsgibt einem wich­tigen Nach­richten­objekt einen ein­deutigen Namen.

Autoren wollen im Bau­stein Event nur das doku­mentieren, was Ent­wick­ler nicht durch les­bare Teile vom Code oder code-nahe Arte­fakte bereits aus­reichend gut doku­mentiert haben. Mit einem Avro-Schema oder einem Json-Schema kann beispiels­weise ein auf JSON basierendes Nach­richten­objekt spezifi­ziert werden. Mit einem XML-Schema spezifi­zieren Ent­wick­ler ein XML basierendes Nach­richten­objekt. Autoren beschrei­ben im Wiki nur, was sich gar nicht oder sehr schwer aus dem Code heraus­lesen lässt.

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


Pro­zesse

Pro­jekt­manage­ment

Der Pro­dukt­­verant­wort­liche hat mit dem Bau­stein Event die Mög­lich­keit, früh­zeitig ein wich­tiges Nach­richten­objekt als Ent­wurf zu erfassen, wenn es für das Ver­ständnis der Anwen­dungs­domäne hilf­reich ist. Er macht das in Abstim­mung mit dem Team.

Im Steck­brief des Bau­steins befindet sich eine Liste der geplan­ten Techno­logien für die Implemen­tierung des Nach­richten­objektes. Das ist eine sehr wert­volle Infor­mation für das Archi­tektur­manage­ment, um Themen wie Lizenz­kosten, tech­nische Unter­stützung vom Her­steller oder unter­nehmens­weite Vor­gaben recht­zeitig zu behan­deln.

 


Pro­zesse

Anfor­derungs­analyse

Der Pro­dukt­­verant­wort­liche hat mit dem Bau­stein Event die Mög­lich­keit, alle Eigen­schaften eines Nach­richten­objektes zu beschrei­ben, die wich­tig für das Ver­ständnis der Fähig­keiten der Soft­ware sind. Er macht das in Abstim­mung mit dem Team.

 


Pro­zesse

Pro­dukt­entwick­lung

Der Bau­stein Event ist für Leser (z.B. Ent­wick­ler oder Tester) der zen­trale Ein­stieg, um sich über die Bedeu­tung eines Nach­richten­objekt und seiner Eigen­schaf­ten zu infor­mieren. Der Über­blick im Bau­stein muss jeden Leser in die Lage ver­setzen, das Objekt fach­lich einzu­ordnen. Die Fest­legung der Identi­tät eines Nach­richten­objektes ist hilf­reich, um ein­deutige Schlüssel für Indi­zierung oder Partitio­nierung ablei­ten. In der im Bau­stein ver­öffent­lichten Spezifi­kation finden Leser alle Details zur Imple­mentierung des Nach­richten­objektes.

Gemäß Prinzip COD gilt der Titel des Bau­steins und die Namen der beschrie­benen Eigen­schaften als Vor­gabe für den Namen der Imple­mentierungs­klasse und die Bezeich­ner der Attri­bute eines Nach­richten­objektes. Mit dieser ein­­fach umzu­­setzen­den Regel muss kein Autor mehr eine spezi­elle Doku­­mentation im Wiki schrei­ben, um ein Nach­richten­objekt mit der tech­­nischen Lösung zu ver­­knüpfen. Der Titel des Bau­steins reicht als Ein­­stieg in die Imple­­mentierung.

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>Steckbrief</h1>
    <ac:structured-macro ac:macro-id="602764ad-f953-4c2a-9ee5-db2568da1960" ac:name="details" ac:schema-version="1">
        <ac:rich-text-body>
        <table class="relative-table wrapped" style="width: 100.0%;">
            <colgroup> <col style="width: 25.0%;"/> <col style="width: 75.0%;"/> </colgroup>
            <tbody>
            <tr>
                <th>Kurzbeschreibung</th>
                <td>
                <div class="content-wrapper">
                    <ac:structured-macro ac:macro-id="b3036271-d6f0-45a5-9bf3-585e13ce4a3f" 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>Beschreibung der Herkunft und der fachlichen Bedeutung des Nachrichtenobjektes. </ac:placeholder>
                        </p>
                    </ac:rich-text-body>
                    </ac:structured-macro>
                </div>
                </td>
            </tr>
            <tr>
                <th colspan="1">Technologie</th>
                <td colspan="1">
                <ac:placeholder>Komma-separierte Liste der verwendeten Technologien. </ac:placeholder>
                </td>
            </tr>
            </tbody>
        </table>
        </ac:rich-text-body>
    </ac:structured-macro>
    <h1>Eigenschaften</h1>
    <table class="relative-table wrapped" style="width: 100.0%;">
        <colgroup> <col style="width: 25.0%;"/> <col style="width: 75.0%;"/> </colgroup>
        <tbody>
        <tr>
            <th>Name der Eigenschaft</th>
            <th>Beschreibung der Eigenschaft</th>
        </tr>
        <tr>
            <td>
            <ac:placeholder>Name der Eigenschaft.</ac:placeholder>
            </td>
            <td>
            <ac:placeholder>Fachliche Beschreibung der Eigenschaft. </ac:placeholder>
            </td>
        </tr>
        </tbody>
    </table>
    </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>
    <h1>Spezifikation</h1>
    <ac:structured-macro ac:macro-id="7ee4d7d7-823e-409d-8344-a88f5af8053c" ac:name="section" ac:schema-version="1">
        <ac:rich-text-body>
        <ac:structured-macro ac:macro-id="f67afd15-e789-4765-b63a-7c89d7b45a79" ac:name="expand" ac:schema-version="1">
            <ac:parameter ac:name="title">tbd (v1)</ac:parameter>
            <ac:rich-text-body>
            <p>
                <ac:placeholder>Bitte hier den Link zur Unterseite mit der Spezifikation für das Nachrichtenobjekt einfügen. </ac:placeholder>
            </p>
            </ac:rich-text-body>
        </ac:structured-macro>
        </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 Event repräsen­tiert ein Nach­richten­objekt (engl. event) des IT-Systems. Er hat einen Steck­brief mit einer Kurz­beschrei­bung und einer Liste der einge­setzten Techno­logien. Er erklärt wich­tige Eigen­schaften des Nach­richten­objektes. Der Seiten­titel beginnt immer mit Event. Durch die Seiten­vor­lage hat jede Seite das Stich­wort event. Sie kann aber um weitere Schlag­worte ergänzt wer­den. Dadurch wird die Seite leich­ter auf­find­bar.

Der Bau­stein Event hat eine Unter­seite für jede ver­öffent­lichten Spezifi­kation. Erlaubt der Archi­tektur­stil mehr als eine Version des Objektes, z.B. durch Schema­evolu­tion, dann gibt es auch mehr als eine gül­tige Spezifi­kation mit ent­sprechen­der Kenn­zeich­nung.

Der Bau­stein Event hat einen Zustand. Er ist in Arbeit, wenn keine Spezifi­kation vor­handen ist. Er ist fertig, wenn eine Spezifi­kation vor­handen ist und die Implemen­tierung Teil eines Pro­dukt­inkre­mentes ist.

Der Bau­stein Event hat durch die Spezifi­kation einen Bezug zu einem Pro­dukt­inkre­ment.

Der Baustein Event wird in der Sprache der Ent­wick­ler geschrie­ben.