Softwarový proces

Proces obecně je po částech uspořádaná množina kroků směřujících k dosažení cíle. Je-li cíl vytvoření softwaru pak mluvíme o softwarovém procesu. Disciplína zabývající se problémy softwarového procesu se nazývá softwarové inženýrství.

Vzhledem k tomu že vývoj softwaru je relativně nová problematika dodnes není jasně definováno jak by měl správný softwarový proces vypadat. Byla však vyvinuta řada různých přístupu k vývoji softwaru. Lze říct že základem všech je vodopádový model, který lze nalézt ve většině používaných přístupů.

Model je zjednodušená realita pro snadnější pochopení.

Statická struktura procesu definuje KDO (role), CO (artefaty), JAK (aktivity a jejich toky) a KDY to má vytvořit.

Vodopádový model

Vodopádový model je složen z několika kroků, které následují po sobě a nemůžou začít dříve než skončí předchozí fáze. Začíná analýzou požadavků na software na základě které je zhotoven návrh implementace (programátorská analýza), podle které se systém naimplementuje. Finální software se otestuje a nasadí k zákazníkovi. Do vodopádového modelu mohou být zahrnuty ještě kroky Nasazení a Údržba systému, které na obrázku vpravo nejsou.

Nevýhody vodopádového modelu:

  • Dlouhý vývoj - prodleva mezi zadáním a výsledným produktem. Během vývoje zákazník nic nevidí a ani my nedokážeme odhalit výslednou kvalitu produktu.
  • Přesné zadání - na začátku je nutné vytvořit přesné a korektní zadání, aby byl výsledný produkt v pořádku.
Z těchto důvodů byl vodopádový model dále modifikován a vznikly tak tyto modely:

  • Inkrementální model založen na principu verzování. Finální projekt je rozdělen na dílčí verze. Do novějších verzí je postupně přidávána další funkčnost systému a až poslední verze obsahuje plnohodnotný systém. Jednotlivé verze se vyvíjejí vodopádovým modelem, ale čas na jejich realizaci je menší a můžeme sledovat vývoj systému. Viz. obrázek vpravo bez meziverzových kroků.
  • Spirálový model je to samé co výše zmíněný inkrementální, s tím že mezi jednotlivé verze byly vloženy další procesy jako například zhodnocení verze z pohledu finálního systému, či přidání nových požadavků zákazníka.  Viz. obrázek vpravo.
  • Průzkumné programování - urputná snaha zjistit od zákazníka co vlastně chce, tím že mu předkládáme hotové systémy. Analýza požadavku je odbytá hrubou specifikací a vše směřuje k rychlé realizaci softwaru ke které se zákazník vyjádří.

Model RUP (Rational Unified Proces) - iterační přístup

Process RUP navrhla firma Rational. Definuje disciplinovaný přístup k přiřazování úkolů a zodpovědností v rámci vývojové organizace. Jeho cílem je zajistit vytvoření produktu vysoké kvality požadované zákazníkem v rámci predikovatelného rozpočtu a časového rozvrhu.

Software je zde vyvíjen iterativně (v cyklech). Na konci každé iterace je spustitelný kód (verze). Softwarový systém je tak vyvíjen ve verzích, které lze průběžně ověřovat se zadavatelem a případně jej pozměnit pro následující iteraci. 

Při vývoji se využívá existujících komponent. Vývoj softwaru se tak přesouvá do oblasti skládání produktu z prefabrikovaných komponent. 

Model softwarového systému je vizualizován pomocí UML, který pomáhá uchopit strukturu a chování výsledné architektury produktu.

Součástí RUP jsou i metody pro správu požadavků, které obsahují postupy jak dostat ze zadavatele požadavky na systém, jak s nimi dále pracovat. Ve všech aktivitách se neustále ověřuje kvalita softwarového produktu. RUP zahrnuje i princip řízení změn, který se stará o monitorování změn, ke kterým v systému došlo, ať už vlivem doplnění požadavků, či oprav chyb apod.  Řízení změn umožňuje zaručit, že každá změna je přijatelná a všechny změny systému jsou sledovatelné. 

...Více o RUP, jeho cyklech a základních tocích najdete v kapitole modely RUP, SCRUM, XP.

Definice softwarového procesu a vyspělostní úrovně

Ve vztahu k této definici je nutné si dále uvědomit následující:

  • Krokem může být aktivita nebo opět podproces (hierarchická dekompozice procesu).
  • Aktivity a podprocesy mohou probíhat v čase souběžně, tudíž je vyžadována jejich koordinace..
  • Je nutné zajistit opakovatelnost použití procesu ve vztahu k jednolivým softwarovým projektům, tedy zajistit jeho znovupoužitelnost. Cílem je dosáhnout stabilních výsledků vysoké úrovně kvality. 
  • Řada činností je zajišťována lidmi vybavenými určitými schopnostmi a znalostmi a majícím k dispozici technické prostředky nutné pro realizaci těchto činností.
  • Softwarový produkt je realizován v kontextu organizace s danými ekonomickými možnostmi a organizační strukturou.
Úroveň definice a využití softwarového procesu je hodnocena dle stupnice SEI (Software Engineering Institute) 1 - 5 vyjadřující vyspělost firmy či organizace z daného hlediska. Tento model hodnocení vyspělosti a schopností dodavatele softwarového produktu se nazývá CMM (Capability Maturity Model) a jeho jednotlivé úrovně lze stručně charakterizovat asi takto: 
  1. Počáteční (Initial) - firma nemá definován softwarový proces a každý projekt je rešen případ od případu (ad hoc). 
  2. Opakovatelná (Repeatable) - firma identifikovala v jednotlivých projektech opakovatelné postupy a tyto je schopna reprodukovat v každém novém projektu. 
  3. Definovaná (Defined) - softwarový proces je definován (a dokumentován) na základě integrace dříve identifikovaných opakovatelných kroků. 
  4. Řízená (Managed) - na základě definovaného softwarového procesu je firma schopna jeho řízení a monitorování. 
  5. Optimalizovaná (Optimized) - zpětnovazební informace získaná dlouhodobým procesem monitorování softwarového procesu je využita ve prospěch jeho 

 

 Čerpáno ze skript Úvod do softwarového inženýrství (Prof. Ivo Vondrák)