Planung der Inkremente-v02b - se.uni-hannover.de · Planung'der'Inkremente'...

4
Planung der Inkremente Version 02 vom 28.10.2015 Bearbeitet von Olga Boruszewski, FG Software Engineering Wie geht es nun weiter? Nun gilt es, die Implementierung Ihres Produktes auf die zwei Inkremente und die PolishHPhase zu verteilen. Dabei sollten Sie anstreben, die wichtigsten Funktionen möglichst früh (wenn auch zunächst in rudimentärer Form) umzusetzen, anstatt eine große Funktion oder einen Use Case in vollem Umfang zu implementieren. Dies hat den Hintergrund, dass Sie frühes KundenHFeedback zu grundlegenden, wichtigen Teilen anstatt Implementierungsdetails einholen sollten. Tipps zum Vorgehen Sie sollten die in der Spezifikation festgeschriebene Funktionalität nun in kleinere Einheiten teilen, um besser zwischen wichtigsten Funktionen und weiteren Faktoren trennen zu können. Hierzu eignen sich Story Cards (auch User Stories genannt): „Karten“, die Anforderungen einzeln und userorientiert festhalten. Story Cards besitzen einen Titel, eine Beschreibung (nie mehr als eine Seite) und weitere optionale Attribute, wie Aufwandsschätzungen. Es ist von Vorteil, Story Cards, die zum selben StakeholderHZiel gehören, zu gruppieren. Sogenannte UserTasks gruppieren dann alle Story Cards, die zur Erfüllung des StakeholderHZiels implementiert sein müssen. Verwenden Sie zur Verwaltung Ihrer Story Cards ein DINHA3 Blatt mit PostIts für die Karten. Zur Dokumentation Ihres Vorgehens sollten Sie zu Beginn jedes Inkrementes ein Foto vom Zustand ihrer Planung machen und es ins SVN hochladen. Die folgende Abbildung zeigt ein Beispiel für eine Story Card Map: Abbildung 1: Beispiel einer Story Card Map

Transcript of Planung der Inkremente-v02b - se.uni-hannover.de · Planung'der'Inkremente'...

Page 1: Planung der Inkremente-v02b - se.uni-hannover.de · Planung'der'Inkremente' Version(02(vom(28.10.2015(Bearbeitet(von(Olga(Boruszewski,(FG(Software(Engineering(' Story'Cards'aus'der'Spezifikation'ableiten.

Planung'der'Inkremente'Version(02(vom(28.10.2015(Bearbeitet(von(Olga(Boruszewski,(FG(Software(Engineering(

Wie$geht$es$nun$weiter?$Nun(gilt(es,(die(Implementierung(Ihres(Produktes(auf(die(zwei(Inkremente(und(die(PolishHPhase(zu(verteilen.(Dabei(sollten(Sie(anstreben,(die(wichtigsten(Funktionen(möglichst(früh((wenn(auch(zunächst(in(rudimentärer(Form)(umzusetzen,(anstatt(eine(große(Funktion(oder(einen(Use(Case(in(vollem(Umfang(zu(implementieren.(Dies(hat(den(Hintergrund,(dass(Sie(frühes(KundenHFeedback(zu(grundlegenden,(wichtigen(Teilen(anstatt(Implementierungsdetails(einholen(sollten.(

Tipps$zum$Vorgehen$Sie(sollten(die(in(der(Spezifikation(festgeschriebene(Funktionalität(nun(in(kleinere(Einheiten(teilen,(um(besser(zwischen(wichtigsten(Funktionen(und(weiteren(Faktoren(trennen(zu(können.(Hierzu(eignen(sich(Story&Cards&(auch&User&Stories&genannt):(„Karten“,(die(Anforderungen(einzeln(und(userorientiert(festhalten.(Story(Cards(besitzen(einen(Titel,(eine(Beschreibung((nie(mehr(als(eine(Seite)(und(weitere(optionale(Attribute,(wie(Aufwandsschätzungen.(

Es(ist(von(Vorteil,(Story(Cards,(die(zum(selben(StakeholderHZiel(gehören,(zu(gruppieren.(Sogenannte(UserTasks(gruppieren(dann(alle(Story(Cards,(die(zur(Erfüllung(des(StakeholderHZiels(implementiert(sein(müssen.((

Verwenden(Sie(zur(Verwaltung(Ihrer(Story(Cards(ein(DINHA3(Blatt(mit(PostIts(für(die(Karten.(Zur(Dokumentation(Ihres(Vorgehens(sollten(Sie(zu(Beginn(jedes(Inkrementes(ein(Foto(vom(Zustand(ihrer(Planung(machen(und(es(ins(SVN(hochladen.(

Die(folgende(Abbildung(zeigt(ein(Beispiel(für(eine(Story(Card(Map:(

'Abbildung'1:'Beispiel'einer'Story'Card'Map'

Page 2: Planung der Inkremente-v02b - se.uni-hannover.de · Planung'der'Inkremente' Version(02(vom(28.10.2015(Bearbeitet(von(Olga(Boruszewski,(FG(Software(Engineering(' Story'Cards'aus'der'Spezifikation'ableiten.

Planung'der'Inkremente'Version(02(vom(28.10.2015(Bearbeitet(von(Olga(Boruszewski,(FG(Software(Engineering(

'

Story'Cards'aus'der'Spezifikation'ableiten.(1. Schreiben(Sie(für(jeden(Use(Case(einen(UserTask,(der(als(Titel(das(Ziel(des(

Hauptakteurs(enthält.(Ordnen(Sie(diese(nebeneinander(an.(

2. Schreiben(Sie(nun(unter(jeden(UserTask(detaillierte(Story(Cards(für(alle(einzelnen(Aktivitäten,(die(der(User(im(Zuge(dieses(UserTasks(tun(kann.(Dazu(orientieren(Sie(sich(am(Hauptszenario(und(den(Erweiterungen(des(Use(Cases.(Beschreiben(Sie(für(eine(Story(Card(zunächst(nur(den(Titel.(Details(werden(später(z.B.(auf(der(Rückseite(festgehalten.(

3. Passen(Sie(die(Struktur(so(an,(dass(sie(Ihnen(einen(guten(Überblick(gibt.(Wenn(Sie(wollen,(spalten(Sie(einen(UserTask(in(mehrere(auf,(fassen(mehrere(UserTasks(zusammen,(oder(fügen(weitere(Story(Cards(hinzu.(Bei(Ihrem(Projektumfang(sind(5H9(UserTasks(in(der(Regel(eine(gute(Menge.(

4. Prüfen(Sie(auch(die(Vorbedingungen,(Auslöser,(Erweiterungen(und(Garantien(Ihrer(Use(Cases.(Wenn(diese(nicht(in(den(Story(Cards(erfasst(sind,(aber(auch(implementiert(werden(müssen,(erstellen(Sie(eine(neue(Story(Card(dazu.(

5. Prüfen(Sie,(ob(die(Spezifikation(weitere(funktionale(Anforderungen(enthält,(die(noch(nicht(durch(die(Stories(abgedeckt(sind.((Bspw.(in(technischen(und(rechtlichen(Anforderungen,(der(Mission(des(Projektes(oder(den(Optionen(zur(Aufwandsreduktion.)(

o Versuchen(Sie,(diese(zusätzlichen(Anforderungen(als(Beschreibung(zu(einer(passenden(Story(Card(hinzuzufügen.((

o Gibt(es(keine(passende(Story(Card,(versuchen(Sie(einen(passenden(UserTask(zu(finden(und(die(neue(Anforderung(diesem(als(Story(Card(hinzuzufügen.((

o Wenn(es(auch(keinen(passenden(UserTask(gibt,(schreiben(Sie(eine(gesonderte(Story(Card(auf(und(ordnen(Sie(sie(dem(UserTask(„allgemeine(Anforderungen“(zu.(

(Story'Cards'priorisieren.((

1. Geben(Sie(jeder(Story(Card(eine(der(vier(Prioritätsstufen(A(–(D.(Tragen(Sie(die(Priorität(sichtbar(auf(der(Karte((bzw.(dem(PostIt)(ein.(

A. Wichtigste(Funktionen.(Ohne(diese(Story(macht(das(ganze(Produkt(gar(keinen(Sinn.(

B. Story(ist(wichtiger(Bestandteil(des(Produktes.(Ohne(sie(kann(man(aber(auch(schon(sinnvolle(Dinge(mit(dem(Produkt(machen.(

C. Story(fügt(kleinere(Funktionen(hinzu(oder(macht(Interaktion(mit(System(angenehmer/hübscher,(hat(aber(keinen(großen(Einfluss(darauf,(ob(Nutzer(das(Hauptziel(erreicht(

D. Optionale(Stories(

2. Für(jede(Story(Card(mit(Prio(A(oder(B(prüfen(Sie,(ob(Sie(diese(aufspalten(können(in(besonders(wichtige(Teile(und(Teile,(ohne(die(man(das(Hauptziel(noch(erreichen(könnte.(Spalten(Sie(in(solchen(Fällen(in(die(Story(Card(in(mehrere(Cards(und(geben(Sie(ihnen(die(entsprechenden(Prioritäten.(

Page 3: Planung der Inkremente-v02b - se.uni-hannover.de · Planung'der'Inkremente' Version(02(vom(28.10.2015(Bearbeitet(von(Olga(Boruszewski,(FG(Software(Engineering(' Story'Cards'aus'der'Spezifikation'ableiten.

Planung'der'Inkremente'Version(02(vom(28.10.2015(Bearbeitet(von(Olga(Boruszewski,(FG(Software(Engineering(

(Story'Cards'zu'einzelnen'Inkrementen'zuordnen.'

1. Ordnen(Sie(die(Stories(zunächst(nach(Prioritäten(in(die(Inkremente(ein(• User(Stories(mit(Priorität(A(H>(Inkrement&1(• User(Stories(mit(Priorität(B(H>(Inkrement&2&• Prioritäten(C(und(D(H>(Polish(

2. Bauen(Sie(die(tabellarische(Sicht,(wie(in(Abbildung(1(auf.(In(der(Spalte(steht(der(UserTask,(zu(dem(eine(Story(gehört;(in(der(Zeile(dann(das(Inkrement.(Sortieren(Sie(die(Stories(in(die(entsprechenden(Zeilen.(Falls(der(Platz(nicht(ausreicht,(können(Sie(auch(für(jedes(Inkrement(einen(eigenen(DINHA3HZettel(verwenden(

3. Ziehen(Sie(eine(Story(Card(in(ein(früheres(Inkrement,(wenn(a. ein(hohes(Risiko(besteht,(dass(Missverständnisse(in(den(Anforderungen(

aufgetaucht(sind(

b. ein(hohes(Risiko(besteht,(dass(der(Lösungsansatz(die(Kundenwünsche(nicht(ganz(erfüllt(

c. andere(wichtigere(Stories(von(ihr(abhängig(sind((Achtung,(oft(kann(man(solche(Abhängigkeiten(durch(ganz(rudimentäre(Dummies(oder(Mocks(füllen(und(muss(nicht(die(ganze(Story(implementieren.)(

4. Gleichen(Sie(die(Arbeitsbelastung(in(den(Inkrementen(aus.(Wenn(in(einem(Inkrement(zu(viele(Stories(sind,(so(müssen(einige(von(ihnen(in(ein(früheres(oder(späteres(Inkrement.(Wenn(Sie(nicht(sicher(sind,(welche(Stories(zuerst(erledigt(werden(sollten,(fragen(Sie(den(Kunden,(welche(ihm(wichtiger(sind.(

5. Nicht(jede(Story(hat(den(gleichen(Aufwand.(Um(das(zu(berücksichtigen,(können(Sie(den(Stories(einen(geschätzten(Aufwand((z.B.(in(Tagen)(zuordnen.(Sie(können(die(Stories(dann(so(angleichen,(dass(in(jedem(Inkrement(der(gleiche(Aufwand((statt(der(gleichen(Zahl(an(Stories)(eingeplant(wird.(

6. Zu(Beginn(jedes(Inkrementes(beschreiben(Sie(nun(die(dafür(eingeplanten(Story(Cards(detaillierter.(Schreiben(Sie(2H3(Sätze(mit(Detailinfos(auf(die(Rückseite.(Sie(können(dabei(auf(die(Spezifikation(verweisen.(Klären(Sie(ggf.(Details(mit(dem(Kunden.(

7. Präsentieren(Sie(die(Planung(dem(Kunden(und(prüfen(Sie(gemeinsam,(ob(das(Produkt(aus(Inkrement(1(sinnvoll(ist.(

(

Beispiel$für$eine$Story$Card$(A)'Zu'einer'Prüfung'anmelden'

Ich(als(Studierende/r(kann(mich(für(eine(Prüfung(anmelden.(Hierzu(zeigt(mir(das(System(eine(Liste(mit(allen(Prüfungen(aus(dem(aktuellen(Semester(an.((Daten,(die(ich(für(die(Prüfung(angebe:((

Modul,(zu(dem(die(Prüfung(angerechnet(werden(soll(Falls(ich(ein(Feld(leer(lasse,(gibt(es(eine(Fehlermeldung.(

Page 4: Planung der Inkremente-v02b - se.uni-hannover.de · Planung'der'Inkremente' Version(02(vom(28.10.2015(Bearbeitet(von(Olga(Boruszewski,(FG(Software(Engineering(' Story'Cards'aus'der'Spezifikation'ableiten.

Planung'der'Inkremente'Version(02(vom(28.10.2015(Bearbeitet(von(Olga(Boruszewski,(FG(Software(Engineering(

(Achten(Sie(darauf,(dass(Story(Cards(stets(nutzerorientiert(sind,(d.h.(sie(beschreiben(etwas,(das(der(Nutzer(feststellen(kann(und(das(ihm(einen(Gewinn(bringt.(Beispielsweise(nützt(„GUI(für(Prüfungsliste“(dem(User(nichts.(Statt(am(Ende(eine(GUI(sehen(zu(können,(hat(er(erst(einen(Gewinn,(wenn(man(sich(auch(wirklich(anmelden(kann.(

Tipps$zum$Aufspalten$von$Story$Cards$Verschiedene'Datenbestandteile'trennen.(Oftmals(wird(ein(Objekt(implementiert,(das(mehrere(Daten(bzw.(Attribute(hat.(Dabei(sind(nicht(immer(alle(Datenbestandteile(gleich(wichtig.(Bspw.(können(für(ein(Buch(mit((Titel,(Preis,(Beschreibung(und(Bewertung(zunächst(Titel(und(Preis(am(wichtigsten(sein.(Die(restlichen(Dinge(kann(man(dann(später(implementieren.(

Verschiedene'CRUD'Operationen'trennen.(Oft(kann(man(Unterstützung(für(das(Auslesen(und(Erstellen(eines(Objektes((wie(Buch)(zuerst(implementieren(und(das(Bearbeiten(und(Löschen(auf(später(schieben.(

Einzelfälle'von'Verallgemeinerungen'trennen.(Bevor(man(alle(Möglichkeiten(für(etwas(realisiert,(kann(man(zunächst(einen(konkreten(Wert(festlegen(und(alles,(was(man(dafür(braucht(implementieren.(Muss(es(beispielsweise(eine(vom(User(einstellbare(Schwierigkeitsstufe&für(ein(Spiel(geben,(so(kann(man(zunächst(alles(für(die(Schwierigkeitsstufe(„Mittel“(implementieren(und(erst(danach(auf(verschiedene(Schwierigkeitsstufen(ausweiten.(