Softwarové prototypování () je vytváření prototypů softwarových aplikací, tj. neúplných verzí softwarového programu. Je to činnost používaná v procesu vývoje softwaru a je srovnatelná s prototypováním v jiných oborech, např. ve výrobě nebo strojírenství.
Prototyp obvykle simuluje pouze některé aspekty výsledného produktu a může se od něj výrazně lišit.
Prototypování má několik výhod: softwarový návrhář a implementátor mohou v časných stádiích projektu získat cennou zpětnou vazbu od uživatelů. Klient a kontraktor mohou zjistit, zda software vyhovuje softwarovým standardům, které má program splňovat. Umožňuje softwarovým inženýrům určitý odhad přesnosti počátečních odhadů a reálnosti dohodnutých termínů a milníků. Míra nasazení a techniky používané v prototypování se vyvíjejí a diskutují od jeho návrhu na začátku 70. let 20. století.
Úvod Původním účelem prototypů je umožnit budoucím uživatelům softwaru vyhodnotit návrhy designu výsledného produktu skutečným používáním namísto interpretace a vyhodnocování jeho popisů. Prototypování je také použitelné pro koncové uživatele k popisu a prove požadavky, které byly původně opomenuty, a které mohou být klíčovým faktorem v komerčním vztahu mezi vývojáři a jejich klientySmith MF Software Prototypování: Adoption, Praxe a Management. McGraw-Hill, Londýn (1991).. S tímto cílem využívá intenzivně prototypování tak zvaný Interakční design.
Tento přístup je v protikladu s monolitickým vývojovým cyklem vytváření kompletních programů v 60. a 70. letech 20. století, kdy byl nejdříve vyvinut kompletní program a pak se řešily nalezené odchylky mezi návrhem a implementací, což obvykle vede k vyšším nákladům a špatným odhadům času a ceny. Monolitický přístup byl přezdíván „Slaying (software) Dragon“ technika, protože předpokládá, že softwarový designer a vývojář je jediný hrdina, který má zabít draka sám. Prototypování může také snížit náklady a potíže při změnách hotového softwarového produktu.
Prototypování je jedním z přístupů, které popisuje Frederick P. Brooks ve své knize Mythical Man-Month z roku 1975 a článku No Silver Bullet vydaném o 10 let později.
K prvním příkladům rozsáhlého softwarového prototypování byla implementace překladače NYU Ada/ED pro programovací jazyk Ada implementovaný v SETL s úmyslem vytvořit spustitelný sémantický model pro jazyk Ada, který upřednostňoval jasnost návrhu a uživatelského rozhraní před rychlostí a efektivitou. NYU Ada/ED byla první potvrzená implementace jazyka Ada, která byla certifikována v 11. dubna 1983.
Náčrt procesu prototypování Proces prototypování zahrnuje tyto kroky:
Identifikace základních požadavků Stanovení základních požadavků včetně požadovaných vstupních a výstupních informací. Detaily jako například bezpečnost se v této fázi obvykle ignorují. Vývoj počátečního prototypu Je vyvinut počáteční prototyp, který obsahuje pouze uživatelské rozhraní. (Viz horizontální prototyp níže) Revize Zákazníci včetně koncových uživatelů zkontrolují prototyp a poskytnou zpětnou vazbu pro zapracování změn nebo doplnění vlastností. Úprava a vylepšení prototypu Využitím zpětné vazby lze vylepšit standardy i prototyp. Obvykle je nutné vyjednávání a upřesnění smlouvy a produktu. Kroky 3 a 4 se opakují, dokud je potřeba.
Dimenze prototypů Jakob Nielsen rozlišil ve své knize Inženýrství použitelnosti tyto dimenze prototypů:
Horizontální prototyp Obvyklý termín pro prototyp uživatelského rozhraní je horizontální prototyp. Poskytuje podrobný náhled na celý systém nebo subsystém zaměřený spíše na uživatelské interakce než na nízkoúrovňovou funkčnost systému, jako je například přístup k databázi. Horizontální prototypy jsou užitečné pro: potvrzení požadavků na uživatelské rozhraní a rozsah funkcí systému, ukázka systému pro získání zpětné vazby (případně i objednávek) od potenciálních zákazníků, předběžný odhady času, ceny a množství práce potřebné na vývoj systému.
Vertikální prototyp Vertikální prototyp () je úplnější propracování jediného subsystému nebo funkce. Je užitečný pro získání podrobných požadavků na danou funkci s následujícími výhodami:
Zjemnění návrhu databáze, Získání informací o objemu dat a potřebách na systémové rozhraní, pro určení kapacity sítě a provedení inženýrství, vyjasnění složitých požadavků by rozebráním skutečné funkčnosti systému.
Typy prototypování Softwarové prototypování má mnoho variant. Všechny však vycházejí ze dvou hlavních typů: zahazovací prototypování a evoluční prototypování.
Zahazovací prototypování Také nazývané uzavřené prototypování. Zahazovací nebo rapidní prototypování znamená vytvoření modelu, který bude nakonec zahozen a nestane se součástí výsledného dodaného softwaru. Po shromáždění předběžných požadavků je zkonstruován jednoduchý pracovní model systému, aby bylo možné názorně ukázat uživatelům, jak budou jejich požadavky implementovány do výsledného systému.
Rapidní prototypování zahrnuje vytváření pracovního modelu různých složek systému ve velmi rané fázi, po relativně krátkém výzkumu. Metoda používaná při vytváření je obvykle dost neformální, nejdůležitějším faktorem je rychlost, kterou je model vytvořen. Model se pak stane východiskem, na kterém mohou uživatelé opětovně kontrolovat svá očekávání a vyjasňovat své požadavky. Když je tento cíl dosažen, prototyp model je 'zahozen', a systém je formálně vyvinut podle identifikovaných požadavků.
Nejzjevnější důvod pro použití zahazovacího prototypování je, že může být provedeno rychle. Dostanou-li uživatelé rychlou zpětnou vazbu na své požadavky, mohou vývoj softwaru včas zkorigovat. Provádění změn v časných fázích vývojového cyklu je velice cenově efektivní, protože nevyžaduje rozsáhlé změny. V pozdějších fázích projektu může i malá změna vyžadovat velké úsilí, protože softwarové systémy mají mnoho závislostí. Rychlost je klíčovou kvalitou při implementaci zahazovacího prototypu, protože s omezeným množstvím času a peněz lze malou část vynaložit na prototyp, který bude zahozený.
Další silnou stránkou zahazovacího prototypování je jeho schopnost zkonstruovat rozhraní, které uživatelé mohou testovat. Uživatelské rozhraní je tím, jak se uživateli systém jeví, a jeho včasným předvedením lze mnohem snáze porozumět, jak bude systém pracovat.
…je uváděno, že revoluční rapidní prototypování je efektivnější způsob, jak pracovat s uživatelskými požadavky, a proto je významným vylepšením celkové produktivity při vytváření softwaru. Požadavky lze identifikovat, simulovat a testovat mnohem rychleji a levněji, pokud jsou problémy možností vývoje, údržby a struktury softwaru ignorovány. To pak vede k přesnému popisu požadavků a následné konstrukci funkčního a z uživatelského pohledu použitelného systému obvyklými metodami vývoje softwaru.
Prototypy lze klasifikovat podle věrnosti, s jakou zachycují skutečný produkt s ohledem na vzhled, interakce a časování. Jednou z metod vytváření zahazovacího prototypu s nízkou věrností je papírové prototypování. Prototyp je implementován pomocí papíru a tužky, takže napodobuje funkci skutečného produktu, ale vůbec jako skutečný produkt nevypadá. Jinou metodou snadného vytvoření zahazovacího prototypu s vysokou věrností je použití GUI Builderu a vytvoření klikací náhražky – prototypu, který vypadá jako cílový systém, ale neposkytuje žádnou funkčnost.
Používání storyboardů, animatik nebo kreseb není přesně totéž jako zahazovací prototypování, ale patří do stejné skupiny. Jde o nefunkční implementace, které ukazují, jak bude systém vypadat.
Souhrn: Při tomto přístupu je zkonstruován prototyp, který bude zahozen, a výsledný systém bude vytvořen z nuly. Kroky v tomto přístupu jsou:
Sepsání předběžných požadavků Návrh prototypu Uživatelské ověření prototypu, definice nových požadavků Opakování postupu pokud je třeba Sepsání výsledných požadavků
Evoluční prototypování Evoluční prototypování () se zásadně liší od zahazovacího prototypování. Jeho hlavním cílem je strukturovaná tvorba velmi robustního prototypu, který slouží jako jádro budoucího systému, a jeho postupné vylepšování. Principem tohoto přístupu je postupné budování a vylepšování nového systému a implementace dalších požadavků.
Při vývoji systému pomocí evolučního prototypování je systém neustále zjemňován a přestavován. „…evoluční prototypování uznává, že nerozumíme všem požadavkům a implementujeme pouze ty, které dobře chápeme.“ Tato technika umožňuje, aby vývojový tým přidával vlastnosti nebo prováděl změny, které nemohly být formulovány ve fázi vytváření požadavků a návrhu.
Aby byl systém užitečný, musí být vyvíjen používáním ve svém pracovním prostředí. Výrobek není nikdy „hotov“; je vyzrává jak se mění prostředí jako použití… často se snažíme definovat systém pomocí nejznámějšího referenčního rámce - kde právě jsme. Činíme předpoklady o způsobu, jak bude věc fungovat a technologickém základě, na kterém bude implementována. Je ustanoven plán na vývoj funkčnosti, a dříve nebo později vznikne něco co se podobá požadovanému systému.
Výhodou evolučních prototypů oproti zahazovacím prototypům je, že se jedná o funkční systém. I když nemají všechny plánované vlastnosti, mohou být používány jako dočasné řešení, dokud nebude dodán výsledný systém.
„V rámci prototypování není neobvyklé dát uživateli počáteční prototyp k praktickému používání, dokud nebude k dispozici pokročilejší verze… Uživatel totiž často zjistí, že 'nedokonalý' systém je lepší než žádný.“
U evolučního prototypování se mohou vývojáři zaměřit na vývoj těch složek systému, kterým rozumějí, místo toho, aby pracovali na vývoji celého systému.
Aby se minimalizovalo riziko, vývojář neimplementuje vlastnosti, které zatím nejsou dobře pochopeny. K nasazení u zákazníka se posílá částečný systém. Uživatelé mohou při práci se systémem odhalit potřebu nových vlastností a vyžádat si jejich implementaci od vývojářů. Vývojáři pak shromažďují požadavky na vylepšení spolu se svými vlastními a používá spolehlivé metody pro správu konfigurace pro změnu standardu pro úpravu požadavků na software, aktualizaci návrhu, úpravu kódu a nové testování.
Inkrementální prototypování Produkt se skládá z dílčích prototypů, které jsou na závěr sloučeny do výsledného řešení. Inkrementálním prototypováním lze překlenout časovou propast mezi uživateli a vývojáři.
Extrémní prototypování Extrémní prototypování se používá zvláště pro vývoj WWW aplikací. Vývoj webu rozkládá do tří fází, z nichž každá buduje na předchozí. První fáze je statický prototyp, který sestává hlavně z HTML stránek. Ve druhé fázi jsou naprogramovány obrazovky a plně funkční rozhraní využívající simulovanou vrstvu služeb. Ve třetí fázi jsou implementovány služby. Název extrémní prototypování má zacílit pozornost na druhou fázi procesu, kdy je vyvíjeno plně funkční uživatelské rozhraní s minimálním zřetelem na jiné služby, než ty, které jsou uvedeny ve smlouvě.
Výhody prototypování Prototypování má při vývoji softwaru mnoho výhod – některé jsou hmatatelné, jiné abstraktní.
Snížení času a nákladů: Prototypování může zlepšit kvalitu požadavků a standardů, které budou mít k dispozici vývojáři. Protože s pozdějším odhalením potřeby změn roste jejich cena exponenciálně, časné stanovení toho, co uživatel skutečně chce může vést k rychlejšímu a méně nákladnému vývoji softwaru.
Zlepšené a zvýšené zapojení uživatele: Prototypování vyžaduje zapojení uživatele, kterému umožňuje vidět a komunikovat s prototypem, což přináší lepší a úplnější zpětnou vazbu a přesnější popis požadavků a systému. Existence prototypu, který je vyzkoušen uživatelem, zabrání mnoha nedorozuměním a vzájemným nepochopením, ke kterým může dojít, když obě strany nekriticky věří, že druhá strana rozumí tomu, co řekli. Protože uživatelé znají problémovou oblast lépe než kdokoli ve vývojovém týmu, zvětšená interakce by měla vést k produktu, který má větší hmatatelnou i nehmotnou kvalitu. Výsledný produkt pravděpodobně bude lépe vyhovovat představám uživatele na vzhled, funkčnost a provedení.