it-swarm-eu.dev

Jak se vypořádáte s designem v Scrumu?

Jak se vypořádáte s designem v Scrumu? Máte stále dobře napsané návrhové dokumenty pro každou iteraci scrumu? Děláte jen poznámky k designu s diagramy UML? Nebo máte jen dobře komentovaný kód?

Každá iterace může zahrnovat změnu designu, tak jsem jen chtěl vědět, jak to lidé zachytí, takže noví vývojáři mají snadnou práci porozumět doméně a dostat se na palubu co nejrychleji.

26
Seth

to, že jde o skrumáž, neznamená, že se každý sprint změní!

Scrum je o dělá to, co je nutné (ale už ne). Stále musíte udělat návrh a stále musíte dokumentovat. Její částka není stanovena ani jak na to.

Součástí plánování každého sprintu je rozhodování o tom, co je třeba udělat. Pokud je třeba něco v nevyřízeném projektu navrhnout, protože má dopad na jiné věci, musíte přidat konkrétní úkol pro procesy návrhu a provést to před prováděním úlohy.

11
Martin York

K tomuto tématu mám toho hodně co říct. Viděl jsem mnoho případů, kdy společnosti/týmy/lidé říkají, že používají agilní přístup k softwaru, ale ve skutečnosti chtějí sklízet výhody, které Agilní metody slibují, aniž by dodržovaly zásady.

Pro rychlé iterace do práce, měli byste udělat test řízený vývoj (já jsem přestal říkat, že musíte udělat TDD neochotně). V TDD vaše testy vyjadřují design a záměr kódu (když říkají „kód je dokumentace“, měli by říkat „testy jsou dokumentace“). Psaním jednotkových testů, které vyjadřují vaše porozumění dané funkci, výslovně uvedete, co si myslíte, že kód musí udělat. Pak napíšete kód, který to dělá. Poté tento kód upravíte tak, aby se držel dobrých architektonických principů „Red-Green-Refactor“.

Spuštění testů jednotky s každým checkinem (nebo dokonce před každým checkinem) ověří, že nový napsaný kód nenarušuje očekávanou funkčnost v jiné oblasti aplikace. To poskytuje bezpečnostní síť, která vám umožní změnit kód s bezvratným opuštěním. S tím, jak se vaše chápání požadovaných požadavků zvyšuje, můžete test upravit tak, aby odrážel tyto nové znalosti. Skutečný design spočívá v jednotkových testech. Všechno ostatní (včetně kódu, který není zahrnut) je lež.

Zde je několik doporučených čtení

To jsou dobrá místa, kde začít hledat a naučit se, jak skutečně přistupovat k agilnímu rozvoji.

10
Michael Brown

Scrum je metodika řízení projektů, nikoli metodologie vývoje softwaru. Scrum se obvykle používá ve spojení s agilní metodologií. V tom leží vaše odpověď.

2
Steven A. Lowe

Celková architektura projektu a design na vysoké úrovni by byly provedeny mimo týmy scrum, když vlastníci projektu vytvářejí příběhy.

Musí existovat dostatek celkového designu napsaného v jakékoli formě, aby bylo možné vidět vztah mezi příběhy a očekáváním zákazníka.

Nějaký design potřebný pro každý příběh by byl dělán v plánování a jednání s vlastníkem produktu během plánování.

Převážná část úsilí o návrh příběhu by se dělala ve sprintu.

Pokud není příběh dostatečně definován, aby bylo možné odhadnout, pak by bylo možné v současném sprintu vyčlenit časové pole, aby bylo provedeno dost návrhové práce, aby mohl být vytvořen vhodný příběh pro pozdější sprintu.

1
Blake

Scrum je iterační a inkrementální model založený na agilní hodnoty . To znamená, že nemáte samostatnou fázi návrhu. Myšlenka je, že byste měli neustále jednat s designem, stejně jako se neustále zabýváte analýzou, implementací, testováním a integrací v průběhu celého projektu.

Aby to fungovalo, potřebujete trochu plánování. Vstupte na plánovací schůzku sprintu, kde tým odhaduje úkoly pro dopředu sprintu. Většina lidí si neuvědomuje, že se nejedná pouze o odhadovací schůzku, ale také o návrhové úsilí. Úkolem může být například „Přidat kód pro nový model automobilu“. To ještě nemůžete odhadnout, potřebujete vědět něco víc. Tým tedy diskutuje o designu a přichází s širokým řešením („podtřída Auto?“) A dodává to jako připomínku úkolu. Jen zřídka potřebujete více formalit. Nyní máte představu, jak problém vyřešit. Zatím nemáte všechny podrobnosti a to je v pořádku, víte dost návrhu, abyste mohli pohodlně odhadnout. Bez nutnosti vytváření diagramů vůbec (v tomto bodě).

Pro skutečnou fyzickou dokumentaci , I doporučuji vytvoření schématu přehledu systémů na zdi, aby všichni mohli vidět. Přehled musí obsahovat pouze nejdůležitější třídy a moduly a zřídka by měl být aktualizován. Velmi užitečné je také vytvoření několika stavových diagramů pro nejdůležitější třídy v systému. Posypte několika vybranými sekvenčními diagramy typických případů použití, aby lidé snadno viděli, jak jsou věci propojeny. Předpokládám, že z kódu můžete vygenerovat diagramy hierarchie tříd, takže problém lze snadno vyřešit.

Všimněte si, že všechny diagramy jsou vytvořeny po skutečné implementaci. To je v souladu s „pracovním softwarem přes komplexní dokumentaci“ a designem v pravý čas.

A ano, čitelný kód je určitě dokumentace.

1
Martin Wickman

Neexistuje tolik přední konstrukce, jak se požadavky často mění. Takže navrhování až na úroveň třídy je obvykle ztráta času. Může však být užitečné skicovat architektonická rozhodnutí na vyšší úrovni.

Problém s prováděním náročných návrhových dokumentů je v tom, že jsou zastaralé téměř ihned po jejich vytvoření. To, co fungovalo nejlépe, je tedy obvykle dokumentace na vysoké úrovni, která se v krátké době pravděpodobně úplně nezmění.

1
Vadim

V současné době existuje uvnitř komunity Eclipse rozdělení mezi tradičními nástroji UML zaměřenými na MDD, v nichž model řídí kód/vývoj, a Omondo, které se domnívají, že iterace by měly řídit vývojový proces a rozhodně nejen model.

Souhlasím s nimi, protože MDD je kecy, zatímco UML je opravdu skvělý způsob, protože standardizuje se, aby mohl komunikovat s ostatními členy týmu. alt text

0
UML_GURU

Chápu, že děláte návrh na vyšší úrovni s předními požadavky, které shromažďujete na začátku projektu. Tento návrh dobře dokumentujete.

Poté, když jdete na skutečnou implementaci požadavku, změníte design nižší úrovně, jak potřebujete, ale vyhnete se změně designu vyšší úrovně.

Tak mi to bylo vysvětleno před pěti minutami ...

0
indyK1ng