sobota 21. února 2026

Problémy v analýze

 Konzultace na téma "Analýza a její problémy". Na co se v tomto případě zaměřit?

Týkají se problémy skutečně analýzy?

Klíčová otázka. Jedná se skutečně o problémy v analýze, nebo je to problém okolí? Příkladem je nedostatečné zapojení stakeholderů (zájmových osob) nebo nejasná vize produktu, což analytikovi znemožňuje dělat jeho práci kvalitně.

Kde přesně je problém? Vstupy do analýzy, vlastní analýza, výstupy analýzy?

Je problém se vstupy? Například uživatelé nevědí, co chtějí, nebo nemají čas na konzultace. Nebo je problém s vlastní analýzou? Například přílišné rozebírání detailů na úkor postupu vpřed. A co výstupy analýzy? Problémem může být například nejednoznačnost analýzy apod.

O jaký problém se přesně jedná?

Mohu uvést některé obvyklé problémy:

  • Scope Creep - nekontrolovatelné rozšiřování rozsahu. Rozsah se neustále nafukuje, protože na začátku nebyla definována hranice řešení.
  • Gold Plating - přidávání funkcionality, kterou nikdo nepožadoval. Způsobuje to zvyšování nákladů bez reálného přínosu. 
  • Chybějící trasovatelnost - u požadavků není jasné, proč požadavek existuje a jaký cíl naplňuje.

pondělí 26. ledna 2026

"Analýza" vs technický návrh

Dnes jsem se dostal k několika analýzám. Všechny byly ale z pohledu provedení naprosto stejné. Class diagram, třídy s uvedením atributů a metod a pak tabulka se specifikací atributů a popis metod (slovně, nebo pomocí sekvenčních a aktivity diagramů).

Co je na tom špatně? Především to, že tato analýza odpovídá na otázku Jak, ale zcela opomíjí otázku Co a Proč. Za mě je to technický návrh, který se možná dá implementovat tak, jak byl navržen. Není to ale analýza z které je jasné, co má business za požadavky a proč danou věc potřebuje a k čemu má sloužit.

Co teď s tím? Máme diagramy a jejich popis, ale nic dalšího...

Především je třeba vrátit se o pár kroků zpět a doplnit to, co chybí tj, především požadavky. Použít stávající analýzu "tak jak je" by bylo velmi rizikové. Museli bychom akceptovat riziko, že postavíme technicky funkční systém, který ale nikdo nepotřebuje nebo který neřeší skutečný problém.

Požadavky nám umožní ověřit, zda uvedené diagramy pokrývají vše, co je třeba a zda popisují systém, který uživatel skutečně  potřebuje.


pondělí 29. prosince 2025

Způsoby spolupráce objednatele a dodavatele na softwarovém projektu

Na jedné straně máme objednatele, který má zájem o vytvoření informačního systému a na druhé straně dodavatele. Jaké jsou běžné způsoby spolupráce? Tyto modely se liší v míře fixace rozsahu, času a ceny, což ovlivňuje rizika, flexibilitu i zapojení obou stran. Volba závisí na definici požadavků, velikosti projektu a tolerance k riziku.


Fix Time, Fix Price (FTFP)

Tento způsob dodávky fixuje čas, cenu a rozsah projektu. Rizika nese dodavatel, odběratel má jistotu, že pokud nebude požadovat změny, musí být dodržen dohodnutý rozpočet. Nevýhodou tohoto způsobu spolupráce je nutnost určení přesného rozsahu projektu. Problémem může být také malá flexibilita, kdy změny znamenající navýšení rozsahu projektu vedou k výraznému navýšení ceny a času a mohou vyžadovat novou smlouvu a/nebo formální schválení. Dodavatel proto často navýší cenu rezervami na neočekávané komplikace, což může vést k nižší kvalitě nebo zjednodušenému řešení.


Time and Material (T&M)

Odběratel platí za skutečně odvedenou práci. Čas a rozsah projektu může být flexibilní. Tento způsob spolupráce lze využít pro agilní projekty, kde se postupně objevují a rozpracovávají požadavky. Rizikem je možnost překročení plánovaného rozpočtu. Odběratel musí aktivně monitorovat průběh, schvalovat sprinty a priorizovat úkoly, což zvyšuje jeho zapojení, ale vede k vyšší kvalitě finálního produktu.


Bodyshop

Dodavatel poskytuje svoje specialisty do týmu objednatele. Objednatel platí za jejich čas předem dohodnutou sazbu. Riziko dodavatele je minimální, odpovědnost je na straně objednatele. Výhodou je možnost rychle najmout další specialisty, pokud to projekt vyžaduje. 


Dedicated Team 

Dodavatel sestaví exkluzivní tým pracující dlouhodobě pouze pro odběratele, s plnou kontrolou nad procesy. Výhodou je hluboké porozumění doméně, stabilita a škálovatelnost.


Hybridní model

Kombinace předchozích způsobů spolupráce. Například dohodnuté klíčové milníky projektu s pevně daným termínem a platba za skutečně odvedenou práci. Tento přístup vyvažuje jistotu FTFP s flexibilitou T&M, ideální pro středně velké projekty s některými známými požadavky a prostorem pro iterace. Smlouvy často obsahují strop rozpočtu nebo bonusy za předčasné dokončení milníků, což podporuje důvěru mezi stranami.

neděle 14. prosince 2025

User story, Use case, funkční požadavky, akceptační kritéria, ...

 Nedávno jsem dostal následující otázky:

  • Není náhodou user story a use case to samé?
  • Má smysl vymýšlet akceptační kritéria, když mám popsané funkční požadavky?
  • A není vlastně user story a use case jen rozpracováním funkčního požadavku?
Pojďme si to projít. Funkční požadavek je například: Systém musí umožnit přihlášení uživatele. Specifikuje, co je požadováno. 

Use case pak popisuje, jak uživatel pracuje se systémem. Tj. v daném, případě by hlavní scénář byl:

  • Uživatel otevře přihlašovací formulář.
  • Uživatel zadá uživatelské jméno a heslo.
  • Uživatel klikne na tlačítko „Přihlásit".
  • Systém ověří údaje v databázi.
  • Systém zobrazí úvodní stránku a přihlásí uživatele.
Alternativní scénáře mohou řešit situaci, kdy uživatel zadá chybné přihlašovací údaje a obnovu hesla.

User story je „Jako registrovaný uživatel se chci přihlásit pomocí jména a hesla, abych získal přístup k mým datům a funkcím systému.".

Akceptační kritéria:
  • Úspěšné přihlášení: Po zadání platných údajů se uživatel dostane na úvodní stránku do 2 sekund bez chyb.​
  • Neplatné údaje: Systém zobrazí chybovou zprávu „Neplatné jméno nebo heslo" a vrátí formulář, bez odhalení konkrétního údaje.​
  • Bezpečnost: Po 3 neúspěšných pokusech se účet zamkne na 5 minut; zadání prázdných polí zobrazí varování.​
Shrňme si to:
  • Funkční požadavek říká, co má systém dělat.
  • Use case říká, jak uživatel interaguje se systémem.
  • User story říká, proč to uživatel potřebuje.
  • Akceptační kritéria definují, kdy je funkcionalita hotova.



středa 3. prosince 2025

Stabilita softwarových požadavků

Stabilita softwarových požadavků má zásadní vliv na celý projekt. Pokud jsou požadavky stabilní, jasně pochopené a sdílené všemi aktéry, vývoj probíhá předvídatelně, náklady se drží pod kontrolou a architektura se nemusí neustále ohýbat podle nově se objevujících nápadů.

Nestabilní požadavky mají vždy konkrétní kořenovou příčinu. Jednou z nejčastějších je nedostatečné pochopení toho, kdo je skutečný stakeholder. Mnoho týmů pracuje pouze s jednou skupinou uživatelů, která je nejvíce slyšet, a teprve během vývoje se ukáže, že existují i další skupiny, jejichž potřeby nebyly zachyceny.

Další častou příčinou je příliš rychlý start vývoje. Tlak na rychlé výsledky často vede k tomu, že týmy „skočí rovnou do kódu“, aniž by věnovaly dostatek prostoru analýze a validaci požadavků. Výsledek? Požadavky jsou formulovány vágně, mnohdy i vícevýznamově, a jakmile je implementace vystaví realitě, začne se ukazovat, že každý stakeholder si požadavek vyložil jinak.

Nestabilita také vzniká tehdy, když projekt nemá jasnou a sdílenou produktovou vizi. Pokud neexistuje dokument typu Vision & Scope, dochází k tomu, že každý stakeholder vnáší do projektu vlastní agendu a jednotlivé požadavky nejsou zasazené do širší strategie. Bez této kotvy je jakákoliv specifikace náchylná ke změnám.

Stabilizace požadavků není o vytvoření „betonové specifikace“, kterou už nikdy nelze změnit. Jde o to, aby jakákoliv změna byla předvídatelná, řízená a odůvodněná. V praxi se osvědčilo několik postupů.

Jedním z nejúčinnějších nástrojů je vytvoření kvalitní vize a rámce projektu. V okamžiku, kdy se všichni stakeholdery shodnou na tom, proč systém vzniká, jaké problémy řeší a jaké naopak neřeší, dramaticky klesá množství pozdějších změn. 

Dalším krokem je důsledná validace požadavků s uživateli. V mnoha organizacích stačí, že analytik napíše specifikaci a ta se formálně schválí. Praxe však ukazuje, že skutečné porozumění vzniká až při prototypování, modelování scénářů a aktivní diskuzi. 

Neméně důležité je zavedení baseline – tedy oficiální, verzované sady schválených požadavků. Jakmile je baseline stanovena, každá změna se posuzuje prostřednictvím řízení změn. To neznamená, že se změny zakazují, ale že se u každé změny vyhodnocuje dopad na architekturu, testy, plán a rozpočet. Teprve poté se rozhodne, zda změna skutečně stojí za cenu, kterou její přijetí přináší.

V agilních projektech je situace specifická. Agilní přístup nestaví na tom, že požadavky jsou stabilní dlouhodobě, ale naopak očekává jejich vývoj. Přesto však platí, že požadavky musí být stabilní minimálně v rámci sprintu. V praxi to znamená, že během sprintu nesmí docházet k zásadním reinterpretacím uživatelských příběhů. Pokud se to přesto děje, většinou se ukáže, že produktový owner neměl dostatečně připravený backlog, nebo že stakeholdery nebyli včas zapojeni do rozpracování požadavků.

Nestabilita požadavků nikdy nezmizí sama od sebe. Je potřeba ji aktivně řídit a čelit jejím příčinám. Pokud však tým přijme správné postupy a začne pracovat se stakeholdery profesionálně a strukturovaně, stabilita se stane přirozeným vedlejším efektem dobře řízeného vývojového procesu.

sobota 22. listopadu 2025

Projekt, kde je téměř vše špatně

Už pár měsíců pracuji na projektu, kde je spousta věcí špatně. Pojďme se na ně podívat:

  • Nejasně definovaný rozsah projektu. - jasně vymezený rozsah projektu je základ. Jeho absence vede k postupnému rozšiřování požadavků bez odpovídající kontroly dopadu na čas, rozpočet a kvalitu.
  • Neujasněné potřeby a očekávání zákazníka - Zákazník nemá jasnou představu, zda cílem projektu je vytvoření softwarového produktu, konzultace k procesům, nebo návrh zlepšení. 
  • Demotivovaný interní analytický tým - nedostatečná motivace vede k poklesu kvality analýzy požadavků.
  • Projektový manažer bez technického zázemí - projektový manažer má formální roli, ale chybí mu znalosti vývojového procesu a technických aspektů projektu. Nedostatečná technická kompetence vede k tomu, že řízení projektu je „papírové“ – formálně správné, avšak bez reálného dopadu na kvalitu a efektivitu vývoje.
  • Dodavatel se slepě snaží vyhovět všem požadavkům zákazníka, místo aby zastával roli odborného partnera a prosazoval racionální a efektivní řešení.

pondělí 10. listopadu 2025

Doménový model

Doménový model je jeden z modelů, který vzniká v rámci analýzy. Zobrazuje základní entity a vztahy mezi nimi. Jeho cílem je usnadnit pochopení mezi doménovými experty, analytiky a zákazníky.

Pro příklad si vezměme eshop. Tam nalezneme entity jako zákazník, objednávka, produkt. Normální je použít tyto entity. Pokud něco vypadá jako kočka, mňouká to jako kočka, tak je to zřejmě kočka.

Jenže jsem se setkal na projektu s kolegy, kteří chtějí dotáhnout model k dokonalosti. Přemýšlí, jestli je zákazník skutečně zákazník, když si zatím nic nekoupil. Přesto, že má připravenou objednávku, tak to zatím není ještě zákazník. Ono ani objednávka není objednávkou, protože zatím není zaplacená, takže nic objednané vlastně zatím není.

A tak nám vznikají další entity jako registrovaný uživatel a předobjednávka. A řeší se, kdy z registrovaného uživatele vzniká zákazník a kdy se předobjednávka mění na objednávku. Dlouhé diskuse a další entity v doménovém modelu paralyzují analýzu. Na požadavcích není možné pracovat, protože neznáme ani základní entity a nejsme schopni dát dohromady ani názvy user stories. Nevíme, jestli přidáváme zboží do objednávky nebo předobjednávky a jestli to dělá zákazník nebo registrovaný uživatel.