praxe From Wikipedia, the free encyclopedia
Softwarové prototypování (anglicky Software prototyping) 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í.[6]
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 klienty[1]. 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[2] 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.[3]
Proces prototypování zahrnuje tyto kroky:
Jakob Nielsen rozlišil ve své knize Inženýrství použitelnosti tyto dimenze 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:
Vertikální prototyp (anglicky vertical prototype) 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:
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í.
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.
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.
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:
Evoluční prototypování (anglicky Evolutionary prototyping, breadboard prototyping) 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.
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.
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.
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.
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í 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ě.
Prototypování má při vývoji softwaru mnoho výhod – některé jsou hmatatelné, jiné abstraktní.[11]
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.[8]
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.[7] 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í.
Prototypování může přinášet také nevýhody.
Nedostatečná analýza: Koncentrace na omezený prototyp může odvádět vývojáře od náležité analýzy kompletního projektu. To může vést k přehlédnutí lepších řešení, tvorbě neúplných popisů nebo přeměně omezených prototypů na špatně navržené výsledné produkty, které lze obtížně udržovat. Pokud má prototyp omezenou funkčnost, nelze jej dobře škálovat, pokud se prototyp používá jako východisko výsledného produktu, což může zůstat nepovšimnuto, pokud jsou vývojáři příliš zaměřeni na vytváření prototypu jako modelu.
Uživatelské zmatení prototypu a výsledného systému: Uživatelé se mohou mylně domnívat, že prototyp který bude zahozen, je nevyladěným cílovým systémem. (Často si například nejsou vědomi, jaké úsilí je třeba vynaložit na doplnění chybových kontrol a bezpečnostních vlastností, který prototyp nemůže mít.) Kvůli tomu mohou předpokládat, že prototyp přesně modeluje výsledný systém, i když to není úmysl vývojářů. Uživatelé také mohou mylně spoléhat na vlastnosti, které byly obsaženy v prototypu pro jejich zhodnocení, a které nakonec byly z výsledného systému odstraněny. Pokud jsou uživatelé vyžadují, aby všechny navrhované vlastnosti byly obsaženy ve výsledném systému, může to vést ke konfliktu.
Nepochopení uživatelských potřeb ze strany vývojářů: Vývojáři mohou předpokládat, že uživatelé sdílí jejich cíle (například doručit základní funkčnost včas a dodržet rozpočet), bez porozumění širším komerčním otázkám. Například představitelé zákazníka účastnící se schůzek o firemním softwaru mohou pod vlivem ukázek „auditování transakcí“ (při kterém se zaznamenávají změny, které mohou být zobrazovány v tabulce rozdílů) objednat tuto vlastnost, aniž by si byli vědomi, že vyžaduje dodatečné kódování a obvykle i silnější hardware kvůli zpracování dodatečných přístupů k databázi. Uživatelé se mohou domnívat, že mohou požadovat auditování ve všech oblastech, zatímco vývojáři to mohou považovat za zbytnou nebo zbytečnou vlastnost, protože si již vytvořili představy o rozsahu uživatelských požadavků. Pokud se vývojáři zavázali k dodání této funkčnosti před provedením revize požadavků uživatelů, ocitnou se mezi dvěma mlýnskými kameny, obzvláště pokud má zákazník dojednány sankce při nesplnění implementace požadavků.
Lpění vývojářů na prototypu: Vývojáři mohou příliš lpět na prototypu, na jehož vytvoření vyvinuli velké úsilí; to může vést k problémům jako je snaha převést omezený prototyp na výsledný systém, přestože nemá vhodnou podkladovou architekturu. (To může napovídat, že by mělo být použito zahazovací prototypování místo evolučního.)
Nadměrný čas vývoje prototypu: Klíčovou vlastností prototypování je fakt, že se předpokládá, že bude uděláno rychle. Pokud vývojáři tento fakt ztratí ze zřetele, mohou se snažit vyvinout prototyp, který je příliš složitý. Když je prototyp zahozen přesně vyvinut požadavky, že poskytuje nemůže dává dostačující zvyšuje v productivity vytvořit up pro čas strávený vývojem prototypu. Uživatelé mohou uváznout v diskuzích o detailech prototypu, což zdržuje vývojový tým a opožďuje dodání výsledného produktu.
Náklady na implementaci prototypování: počáteční náklady pro vytvoření vývojového týmu zaměřeného na prototypování mohou být vysoké. Mnoho společností má zavedenou určitou metodologii vývoje a její změna může vyžadovat přeškolování a změnu nástrojů. Mnoho firem se proto snaží zavést prototypování bez přeškolení svých zaměstnanců.
Přestože bývá uváděno, že určitá forma prototypování může být použita v každém projektu, prototypování přináší největší užitek u systémů, které mají mnoho interakcí s uživateli.
U systémů s minimální uživatelskou interakcí, jako například dávkové zpracování nebo systémy, které většinou provádějí výpočty, nepřináší prototypování velké výhody. Někdy může být kódování potřebné pro vytvoření systémových funkcí příliš intenzivní a potenciální zisky, které by prototypování mohlo přinést jsou příliš malé.[7]
Prototypování je zvláště vhodné pro návrh dobrých rozhraní pro Human-computer interaction. „Dosud je jedním z dosud nejproduktivnějších použití rapidního prototypování iterativní inženýrství uživatelských požadavků a návrh rozhraní člověk-počítač.“[8]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.