cards+
Prozesse

cards+ unterstützt eine Projektorganisation bei dem Vorhaben, Wissen dauerhaft zu sichern. Mit cards+ wird Produktwissen angemessen im Wiki erfasst oder bereits existierende dokumentierte Informationen aus anderen Quellen im Wiki zu veröffentlicht. cards+ steht nicht in Konkurrenz zu agilen Methoden wie «XP», «Scrum» oder «Kanban», sondern ergänzt sie optimal.

cards+ unter­stützt itera­tive Pro­zesse

Das Ziel agi­ler Soft­ware-Ent­wick­lung ist es, den Ent­wick­lungs­pro­zess flexi­bler und schlan­ker zu machen, als das bei den phasen­orien­tier­ten Vor­gehens­model­len der Fall ist. Man möchte sich mehr auf die zu erreichen­den Ziele kon­zen­trie­ren und auf tech­nische und soziale Prob­leme bei der Ent­wicklung ein­gehen. Moti­vation, Selbst­organi­sation, Spaß an der Sache sind Schlag­worte agiler Methoden. Eine Stärke von cards+ ist das vor­ran­gige Ziel, keine umfas­sende Doku­men­tation zu erstel­len, son­dern Pro­dukt­wissen ange­mes­sen im Wiki zu erfas­sen oder bereits exis­tie­rende doku­men­tierte Infor­matio­nen im Wiki zu ver­öffent­lichen. Beson­ders im Bereich der Pro­dukt­doku­men­tation geht es sogar um die Ver­mei­dung von Doku­men­tation durch Ver­öffent­lichung von les­baren Tei­len des Codes und von Test­plänen der Test­pyr­mide.

Agile Soft­ware-Ent­wick­lung hat uns umden­ken las­sen.

  • Wir müssen nicht mehr alles zu Beginn des Pro­jektes wissen.
  • Wir sollen mit­einander und von­ein­ander ler­nen.
  • Wir haben keine getrenn­ten Teams für Ana­lyse, Ent­wick­lung und Test.
  • Wir lieben selbst­organi­sierte cross-funktio­nale Teams.
  • Niemand arbei­tet in einer «Soft­ware-Fabrik».
  • Wir ent­wickeln das nach unserer Mei­nung beste Pro­dukt.

Mit «Wir» ist dabei die gesamte Pro­jekt­organi­sation gemeint.

Trotz­dem gibt es in agilen Ent­wick­lungs­pro­zessen auch den Bedarf für Anfor­derungs­ana­lyse, Erwar­tungs-, Ände­rungs, Archi­tektur- und Lizenz­manage­ment. Eine agile Pro­jekt­organi­sation bewegt sich immer in einem Spannungs­feld zwischen großer Frei­heit bei der Lösungs­findung durch ein selbst­organi­siertes Team und Ein­schränkungen des Lösungs­raums auf­grund der Gesetzes­lage, inter­nationaler Nor­men und unter­nehmens­weiter Vor­gaben. Das ist immer kontro­vers!

Ziel­gruppen einer Pro­dukt­doku­men­tation.

Pro­jekt­manage­ment

Für das Pro­jekt­­manage­ment gibt es unter­schied­liche Vor­gehens­­modelle. Agile Ansätze setzen vor allem auf Flexibi­lität und Anpas­sung. Statt aus­führ­licher und umfang­reicher Planung zu Beginn eines Pro­jekts werden das adap­tive Planen in Itera­tionen, schnel­les Erkennen von Prob­lemen (engl. fail fast) sowie die effi­ziente Kommuni­kation im Team unter­stützt. cards+ kann sehr gut in agile Pro­zesse inte­griert wer­den.

Durch Fluk­tuation oder durch Ver­änderun­gen im Unter­nehmen ent­steht ein regel­mäßiger Wech­sel in der Pro­jekt­organi­sation. Damit ver­bunden ist immer die Gefahr des Ver­lus­tes von Wissen. Der Ver­lust von Wissen ist gefähr­lich. Die Pro­dukt­vision geht ver­loren. Quali­tät und Pro­duk­tivi­tät sinkt. Anpassun­gen und Erweiterun­gen der Soft­ware werden schwieri­ger. Inter­essier­ten Par­teien ist nicht klar, was die Soft­ware bereits leis­tet. Ent­wick­ler sind weni­ger moti­viert, da sie in altem Code wüh­len müssen, um zu ver­ste­hen, wie die Soft­ware »tickt«. Ihre Inno­vations­kraft sinkt. Das ist ein Risiko. Im Pro­jekt­­manage­ment geht es darum, Maß­nahmen einzu­leiten, um beim Ein­tritt eines Risikos vor­berei­tet zu sein. Der konse­quente Ein­satz von cards+ bereits beim Projekt­start ist so eine Maß­nahme.

Der Auf­trag­geber und andere inter­essierte Par­teien (z.B. Nutzer) bestim­men den Umfang des Pro­duk­tes, den der Pro­dukt­verant­wort­liche mit dem Bau­stein Topic doku­mentiert. Wich­tige Begriffe aus den Gesprä­chen mit Auf­trag­geber und Domä­nen­exper­ten erfasst er sofort im Glossar. Damit und mit den Bau­steinen Epic und Case legt er allein durch den Titel der Seite im Wiki die Grund­lage für eine gemein­same Sprache im Pro­jekt. Für den Auf­trag­geber wich­tige Quali­täts­merk­male doku­men­tiert der Pro­dukt­verant­wort­liche inklu­sive Begrün­dung mit dem Bau­stein Decision.

Ein­führung in die Bau­stei­ne der Pro­dukt­doku­men­tation.

Anfor­derungs­analyse

Anfor­derungen sind Teil der Pro­jekt­doku­men­tation. Sie ent­stehen auf­grund von Anpassung an eine ver­änderte Unter­nehmens­strategie oder Organi­sations­struk­tur im Unter­neh­men. Anfor­derungen zum rich­tigen Zeit­punkt, in aus­reichen­der Tiefe und ver­ständ­lich darge­stellt, das ist die Auf­gabe der Anfor­derungs­analyse (engl. require­ments engi­neering). Wich­tige Begriffe aus den Gesprä­chen mit Auf­trag­geber und Domä­nen­exper­ten erfasst der Pro­dukt­verant­wort­liche sofort im Glossar.

Ein wicht­iges Ergeb­nis bei der Ana­lyse einer Anfor­derung ist die Abgren­zung zu ande­ren, geplan­ten oder bereits umge­setz­ten Anforder­ungen. Anforder­ungen können sich ergänzen, aber auch wider­sprechen. Es kommt auch vor, dass eine Anfor­derung bereits umge­setzt ist, also ein Dupli­kat ist. Diese Kon­flikte müssen vom Pro­dukt­verant­wort­lichen zusam­men mit den inter­essierten Par­teien geklärt werden. Wich­tig ist auch, dass der Pro­dukt­verant­wort­liche die wert­vollen Ana­lyse­ergeb­nisse sicher und schnell im Wiki erfassen kann, zum Zeit­punkt, an dem er sie zusam­men mit dem Auf­trag­geber und Domä­nen­exper­ten erzielt.

Jede Anfor­derung muss sich in den Gren­zen bewegen, die mit dem Bau­stein Topic gesetzt werden. Das ist gleich­zeitig die erste Vali­dierung einer Anfor­derung. Der Pro­dukt­verant­wort­liche nutzt eine Anfor­derung, um min­destens eine Fähig­keit der Soft­ware zu identi­fizieren, die ent­weder geändert, neu hinzu­gefügt oder sogar ent­fernt werden soll. Mit der fach­lichen Beschrei­bung in den Bau­steinen Epic und Case folgt die weitere Vali­dierung einer Anfor­derung. Erst durch die «Pro­jektion» einer Anfor­derung auf Fähig­keiten des Pro­duk­tes wird sie reali­siert und doku­men­tiert.

Der Pro­dukt­­verant­wort­liche hat mit dem Bau­stein Layout die Mög­lich­keit, den Ent­wurf für ein Ele­ment der Bedien­ober­fläche als Ergeb­nis der Ana­lyse zu sichern. Er kann auf Ver­änderungen durch Feed­back der Domä­nen­exper­ten rea­gieren und den Ent­wurf anpas­sen. 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 Concept erfasst und bekommt durch den Titel der Seite im Wiki einen ein­deutigen Namen.

Bei der Ana­lyse von Anfor­derungen kommt häu­fig der Punkt, an dem sich Auf­trag­geber und Domä­nen­exper­ten für eine von mehre­ren Lösungen ent­schei­den müssen, eine Fähig­keit in der Soft­ware umzu­set­zen. So eine für die Ent­wick­lung rich­tungs­weisen­den Ent­schei­dung doku­men­tiert der Pro­dukt­verant­wort­liche inklu­sive Begrün­dung mit dem Bau­stein Decision.

Ein­führung in das stra­te­gi­sche Design.

Pro­dukt­entwick­lung

Für eine effek­tive, ziel­gerich­tete Ent­wick­lung ist es essen­tiell, dass das Team alle Prob­leme voll­stän­dig ver­steht, damit es eine passende und wirt­schaft­lich ver­tret­bare Lösung fin­den kann. Mit den Bau­steinen der System­beschrei­bung kann der Pro­dukt­verant­wort­liche den Prob­lem­raum des Pro­duktes dar­stel­len. Die vom Team gewählte Lösung beschreibt er oder ein Ver­tre­ter des Teams in Bau­steinen der Systems­truk­tur. Mit dem Abschluss einer Imple­men­tierung durch das Team wird die Spezi­fika­tion im Wiki aktuali­siert. Die Ver­bindung zwischen System­beschrei­bung und Systems­truk­tur bildet der Bau­stein Case.

Agili­tät schafft Vor­teile für alle Pro­zesse. Hier herrscht mittler­weile große Einig­keit. Das  «Mani­fest für agile Soft­ware-Ent­wick­lung» for­dert, dass ein fer­tiges Pro­dukt einen höhe­ren Wert hat als eine umfang­reiche Doku­men­tation. Das ist rich­tig. Aber es bedeu­tet nicht den Ver­zicht auf Doku­men­tation. Eine ange­messene Doku­mentation ist exakt im Sinn des Mani­fests. Das ist eine wicht­ige Erkennt­nis.

Wissens­manage­ment ist ein Thema, dass in agilen Ent­wick­lungs­pro­zessen immer wieder zu wenig oder gar nicht beach­tet wird. Wissen muss erar­beitet, gesam­melt, geprüft und ver­öffent­licht wer­den. Niemand wünscht Kopf­mono­pole. Kommuni­kation alleine kann Wissens­inseln nicht ver­hin­dern. Eine ange­messene Pro­dukt­doku­men­tation kann die Lücke schlie­ßen. Ein inkre­men­telles Vo­rgehen wie bei cards+ macht die Erstel­lung und Pflege einer Pro­dukt­doku­men­tation in einem Wiki in hoher Quali­tät zu einer leist­baren Auf­gabe für eine Projektorganisation.

Beson­ders im Zusam­men­hang mit verteil­ter Ferti­gung ist eine Pro­dukt­doku­men­tation ein ganz wich­tiger Faktor für den Erfolg des Pro­jektes. Es ist ein Vor­teil, eine gemein­same Sprache in der Pro­jekt­organi­sation zu eta­blie­ren, die auch im Code und in den Test­plänen Ver­wendung findet. Dabei geht es um ein­deutige Begriffe, die auch von inter­essierten Par­teien gespro­chen und ver­standen wird. Ein gut gepflegtes Glossar unterstützt dieses Vorhaben.

Ein­führung in das taktische Design.

Doku­men­tation betrifft jeden

Die Be­trof­fen­heit einer Per­son von einer Sache lässt sich sehr schön durch die Fabel vom Huhn (engl. chicken) und vom Schwein (engl. pig) erklä­ren. Eine Par­tei ist betei­ligt (engl. committed), die andere inter­essiert (engl. involved).

The Chicken says: »Hey Pig, I was thin­king we should open a restau­rant!«

Pig replies: »Hm, maybe, what would we call it?«

The Chicken responds: »How about ‘ham-n-eggs’?«

The Pig thinks for a moment and says: »No thanks. I’d be commit­ted, but you’d only be involved.«

Wikipedia

Beteiligt sein bedeutet, von einer Sache über­zeugt zu sein, sich persön­lich dafür einzu­setzen, etwas zu tun. Inter­essiert sein hin­gegen bedeutet, sich ledig­lich mit einer Sache zu befassen. Agile Soft­ware-Ent­wick­lung ver­stärkt die Bedeu­tung beteilig­ter Per­sonen und schützt sie vor dem nega­tiven Ein­fluß inter­essierter Par­teien. Feed­back zum Pro­dukt will ein Pro­dukt­verant­wort­liche aber von allen Ziel­gruppen, ohne Ein­schränkung und immer wert­schätzend.

Die Ziel­grup­pen der Pro­dukt­doku­men­tation sind ganz all­gemein inter­essierte Par­teien (engl. stakeholder) sowie die Pro­jekt- und Betriebs­organi­sation. Für das Gelingen einer Pro­dukt­doku­men­tation muss der Pro­dukt­verant­wort­liche es schaffen, dass sich viele Personen aus allen Ziel­grup­pen mindes­tens als Leser beteili­gen. cards+ unter­stützt ihn bei diesem Ver­such.

Welche Zielgruppen gibt es?
Auf­trag­geber

Ein Auf­trag­geber ist eine inter­essierte Par­tei mit einem star­ken wirt­schaft­lichen und stra­tegischen Inter­esse am Pro­dukt. Bei Ver­hand­lungen ist es sehr prak­tisch, wenn eine Pro­dukt­doku­men­tation exis­tiert, die einen Über­blick (engl. big picture) über das Pro­dukt ver­mitteln kann. Das Wissen über bereits reali­sierte Fähig­keiten der Soft­ware hilft bei einer schnellen Ein­schätzung einer Anfor­derung an das IT-System. Bei seinen Gesprächen mit Fach­abtei­lungen disku­tie­ren sie in einer gemein­samen Sprache und profi­tie­ren dabei vom Glossar.

Fach­abtei­lungen

Eine Fach­abtei­lungen umfasst alle Per­sonen, die das IT-System als Nutzer verwenden. Nutzer sind inter­essierte Par­teien und Exper­ten für das IT-System. Indivi­duelle Soft­ware wird in der Regel produ­ziert, um Geschäfts­prozesse im Unter­nehmen zu unter­stützen. Nutzer arbei­ten effi­zienter und machen weni­ger Fehler, weil unter­nehmens­spezi­fische Abläufe und damit ver­bundene beson­dere Fähig­keiten in der Soft­ware abge­bildet werden. Nutzer werden vom Pro­dukt­verant­wort­lichen als Domä­nen­exper­ten für die Anfor­derungs­ana­lyse und für den Test hinzugezogen.

Pro­jekt­organi­sation

Eine Pro­jekt­organi­sation umfasst alle Per­sonen, die an einem Projekt mit­wir­ken. Im Zusam­men­hang mit agiler Soft­ware-Ent­wicklung reden wir kon­kret von einem Pro­dukt­verant­wort­lichen und einem Reali­sierungs­team. Das Reali­sierungs­team setzt sich zusam­men aus Ana­lysten, Ent­wick­lern, Testern und Redak­teuren. Ana­lysten unter­stützen den Pro­dukt­verant­wort­lichen im Pro­jekt­manage­ment und in der Anfor­derungs­ana­lyse. Ent­wick­ler und Tester programmieren und testen die Soft­ware. Redak­teure kümmern sich um pro­fessio­nelle Hand­bücher und unter­stützen den Pro­dukt­verant­wort­lichen beim Marke­ting für das Pro­dukt.

Betriebs­organi­sation

Eine Betriebs­organi­sation umfasst alle Per­sonen, die Verant­wortung für den kunden­wirks­amen Betrieb tragen. Ein Betrei­ber (engl. operator) ist not­wendig, um ein IT-System unter­brechungs­los und störungs­frei zu betrei­ben. Das Kon­zept der DevOps, also die Kombi­nation von Ent­wick­ler (engl. developer) und Betrei­ber (engl. operator) von Soft­ware, ist aus einer effi­zienten Betriebs­organi­sation nicht mehr wegzu­denken. Diese Ziel­gruppe braucht ein grund­legendes Ver­ständ­nis für die Soft­ware und hat natur­gemäß sehr hohe Erwar­tungen an die Quali­tät der Soft­ware.