Der Baustein Decision


Methode

Moti­vation für den Ein­satz

Unter dem Titel “Knigge für Soft­ware-Archi­tekten” haben Peter Hruschka und Gernot Starke bereits im Jahr 2012 einen lesens­werten Arti­kel über Ent­scheider geschrie­ben, der nach meiner Meinung nichts an Aktuali­tät ver­loren hat. Ich bin über­zeugt, dass bei agiler Soft­ware-Ent­wick­lung die Trans­parenz bei Ent­schei­dungen sehr wich­tig ist. Mit dem Bau­stein Decision gibt es die Möglich­keit, eine Ent­scheidung genau dann zu doku­mentieren, wenn sie getrof­fen wird. Ver­treter des Teams formu­lieren das Prob­lem und betrach­ten mindes­tens zwei Lösungs­optionen. Sie bewer­ten Chan­cen und Risi­ken. Sie wägen Stär­ken und Schwä­chen gegen­ein­ander ab. Am Ende treffen sie gemeinsam mit dem Pro­dukt­verant­wort­lichen eine Ent­scheidung und begrün­den sie.

Doku­mentierte Ent­scheidungen müssen bei der Reali­sierung berück­sichtigt werden. Sie sind Vor­gaben, die vom Team einzu­halten sind. Natür­lich heißt das nicht, dass eine einmal getrof­fene Ent­scheidung nie mehr korri­giert wird. Ganz im Gegen­teil. Gerade wenn ein Team während der Ent­wick­lung fest­stellt, dass eine Ent­schei­dung Prob­leme ver­ursacht, muss diese Ent­scheidung hinter­fragt und über Alter­nativen nach­gedacht werden. Aber eine doku­mentierte Ent­scheidung hat den Vor­teil, dass die gewählte Lösung begründet wurde und die schon ein­mal betrach­teten Alter­nativen bekannt sind. Das ist beson­ders wich­tig, wenn die Per­sonen, die an der ursprüng­lichen Ent­schei­dung betei­ligt waren, gar nicht mehr im Team sind.

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 Decision die Mög­lich­keit, eine Vor­gabe des Auf­trag­gebers, z.B. Quali­täts­merkmale, zu doku­mentieren. Gerade bei jenen Ent­schei­dungen eines Auf­trag­gebers, die etwas aus­schließen, ist ein Nach­weis beson­ders wich­tig.

 


Pro­zesse

Anfor­derungs­analyse

Der Pro­dukt­­verant­wort­liche hat mit dem Bau­stein Decision die Mög­lich­keit, eine Prä­misse oder Regel der Anwendungs­domäne zu doku­mentieren, die große Aus­wirkung auf die Reali­sierung hat.

 


Pro­zesse

Pro­dukt­entwick­lung

Der Pro­dukt­­verant­wort­liche oder Ver­treter des Teams haben mit dem Bau­stein Decision die Möglich­keit, eine abge­stimmte Ent­schei­dung für den Ein­satz bestimmter

  • Werkzeuge
  • Programmier­sprachen,
  • Programm­bibliothekn,
  • Techno­logien,
  • Platt­formen,
  • u.s.w.

zu doku­mentieren.

Der Bau­stein Decision ver­schafft jedem Leser (z.B. Ent­wick­ler oder Tester) einen sehr kom­pakten Über­blick über eine Ent­schei­dung, die seine Ar­beit an dem Pro­dukt beschränkt.

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>Ausgangslage</h1>
    <p>
        <ac:placeholder>Formulierung der Ausgangslage oder ganz allgemein das Problem, für das Lösungen gesucht werden. Was sind die Annahmen und Randbedingungen, welche Einflussfaktoren gibt es.</ac:placeholder>
    </p>
    <h1>Lösungen</h1>
    <p>
        <ac:placeholder>Beschreibung der Rahmenbedingungen, die für alle Lösungsoptionen gelten.</ac:placeholder>
    </p>
    <h2>Lösung A</h2>
    <p>
        <ac:placeholder>Beschreibung der Lösung.</ac:placeholder>
    </p>
    <table class="relative-table wrapped" style="width: 100.0%;">
        <colgroup> <col style="width: 50.0%;"/> <col style="width: 50.0%;"/> </colgroup>
        <tbody>
        <tr>
            <th>Stärken</th>
            <th>Schwächen</th>
        </tr>
        <tr>
            <td>
            <ul>
                <li>
                <ac:placeholder>Welche Stärken hat die Lösung?</ac:placeholder>
                </li>
            </ul>
            </td>
            <td>
            <ul>
                <li>
                <ac:placeholder>Welche bekannten Schwächen hat die Lösung?</ac:placeholder>
                </li>
            </ul>
            </td>
        </tr>
        <tr>
            <th>Chancen</th>
            <th>Risiken</th>
        </tr>
        <tr>
            <td>
            <ul>
                <li>
                <ac:placeholder>Welche Chancen eröffnet die Lösung?</ac:placeholder>
                </li>
            </ul>
            </td>
            <td>
            <ul>
                <li>
                <ac:placeholder>Welche Risiken beinhaltet die Lösung?</ac:placeholder>
                </li>
            </ul>
            </td>
        </tr>
        </tbody>
    </table>
    <h2>Lösung B</h2>
    <p>
        <ac:placeholder>Beschreibung der Lösung.</ac:placeholder>
    </p>
    <table class="relative-table wrapped" style="width: 100.0%;">
        <colgroup> <col style="width: 50.0%;"/> <col style="width: 50.0%;"/> </colgroup>
        <tbody>
        <tr>
            <th>Stärken</th>
            <th>Schwächen</th>
        </tr>
        <tr>
            <td>
            <ul>
                <li>
                <ac:placeholder>Welche Stärken hat die Lösung?</ac:placeholder>
                </li>
            </ul>
            </td>
            <td>
            <ul>
                <li>
                <ac:placeholder>Welche bekannten Schwächen hat die Lösung?</ac:placeholder>
                </li>
            </ul>
            </td>
        </tr>
        <tr>
            <th>Chancen</th>
            <th>Risiken</th>
        </tr>
        <tr>
            <td>
            <ul>
                <li>
                <ac:placeholder>Welche Chancen eröffnet die Lösung?</ac:placeholder>
                </li>
            </ul>
            </td>
            <td>
            <ul>
                <li>
                <ac:placeholder>Welche Risiken beinhaltet die Lösung?</ac:placeholder>
                </li>
            </ul>
            </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>Entscheidung</h1>
    <ac:structured-macro ac:macro-id="6ab46a1c-109c-42ee-acf6-6cec1190a33b" 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>Status</th>
                <td>
                <div class="content-wrapper">
                    <ac:structured-macro ac:macro-id="8a27f6a9-0bb3-466f-b793-5f5e5bba1aa9" 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="25185b5f-a6aa-4378-afe6-3837325748c2" 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="3d4836f4-0a53-4524-ace3-5f9703d581f5" 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>
                </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="a42fb7ed-21ea-4274-ab25-36038b13ac10" ac:name="contributors" ac:schema-version="1"/>
                    </p>
                </div>
                </td>
            </tr>
            <tr>
                <th>Entscheidung</th>
                <td>
                <p>
                    <ac:placeholder>Welche Lösung wurde gewählt?</ac:placeholder>
                </p>
                </td>
            </tr>
            </tbody>
        </table>
        </ac:rich-text-body>
    </ac:structured-macro>
    <h2>Begründung des Produktverantwortlichen</h2>
    <p>
        <ac:placeholder>Kurze Zusammenfassung der Begründung für die Wahl der Lösung.</ac:placeholder>
    </p>
    <h2>Begründung der Vertreter des Teams</h2>
    <p>
        <ac:placeholder>Kurze Zusammenfassung der Begründung für die Wahl der Lösung.</ac:placeholder>
    </p>
    </ac:layout-cell>
</ac:layout-section>
</ac:layout>

 


Struk­tur

Eigen­schaf­ten des Bau­steins

Der Bau­stein Decision beschreibt ein Prob­lem und mindestens zwei Lösungen für das Prob­lem. Er ver­mittelt eine ange­messen genaue Beschrei­bung als Aus­gangs­lage. Ange­messen bedeutet, dass Ent­wick­ler und Tester das Prob­lem ver­stehen. Es ist nicht not­wendig, jede Lösung in der gleichen Tiefe zu betrach­ten. Häufig gibt es von Anfang an eine favori­sierte Lösung, die sehr genau beschrie­ben wird. Der Seiten­titel beginnt immer mit Decision. Durch die Seiten­vor­lage hat jede Seite das Stich­wort decision. Sie kann aber um weitere Schlag­worte ergänzt wer­den. Dadurch wird die Seite leich­ter auf­find­bar.

Bei der Beur­tei­lung einer Lösung bietet sich die SWOT-Ana­lyse an. Dort stellen Autoren in vier Qua­dran­ten fol­gende Fragen:

  • Welche Stär­ken hat die Lösung?
  • Welche Schwä­chen hat die Lösung?
  • Welche Chan­cen eröff­net die Lösung?
  • Welche Risi­ken bein­haltet die Lösung?

Die Wahl einer Lösung wird immer begrün­det. Es gibt auch die Situa­tion, dass es keine oder keine akzep­table Lösung gibt. In diesem Fall ist die Begrün­dung beson­ders wicht­ig. Zeit­punkt und alle Ent­scheider werden fest­gehal­ten.

Der Bau­stein Decision hat einen Zustand. Er ist in Arbeit, wenn die Ent­schei­dung noch nicht end­gültig getroffen wurde. Er ist fertig, wenn es eine begrün­dete Ent­schei­dung gibt.

Der Bau­stein Decision hat keinen Bezug zu einem Produkt­inkrement.

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