Domů » Informatika » Vývojový proces


Vývojový proces

Software je množina programů a souvisejících dat, která jsou srozumitelná počítači. Program se pak dále skládá z algoritmů, které pracují s různými datovými strukturami. Název „software“ vznikl jako protiklad k pojmu hardware, což je fyzické vybavení počítače.

Každý software je vysoce abstraktní struktura a považuje se za jeden z nejsložitějších abstraktních konstruktů, které člověk může vytvářet. Proto je jeho vývoj obecně psychicky a časově náročný, tedy drahý.

Tvorba software

Tvorbou software se zabývá obor, který se nazývá softwarové inženýrství. Podle definice IEEE je softwarové inženýrství aplikace systematických, disciplinovaných a měřitelných postupů na vývoj, provoz a údržbu software, tedy použití obecných inženýrských principů na software.

Vznik a rozvoj softwarového inženýrství jako uznávaného a samostatného oboru způsobila především tzv. softwarová krize v šedesátých letech 20. století. V této době se kvalita software neúnosně snižovala, projekty se prodražovaly a zpomalovaly. Na trhu vládla nejistota. Vzniklo několik organizací, které měly za úkol tuto situaci napravit. Výsledkem byl vznik procesů, metod a nástrojů, použitelných k vývoji kvalitnějšího software.

Rámcové aktivity

Dostane-li inženýr nějaký úkol, ptá se nejprve, CO má přesně udělat. Když si je jistý, že porozuměl zadání, začne plánovat, KDY bude kterou činnost dělat. Potom začne přemýšlet o tom, JAK bude zadání realizovat. Teprve pak se pustí do práce a po jejím dokončení výsledek odevzdá zadavateli.

Tento myšlenkový postup je velmi obecný a lze jej použít i na vývoj software. Uvedené schéma je sestavené z tzv. rámcových aktivit (framework activities), které jsou stejné pro všechny projekty, a to nezávisle na jejich velikosti či složitosti. Těmito aktivitami jsou:

  • komunikace (communication) – CO
  • plánování (planning) – KDY
  • modelování (modeling) – JAK
  • vývoj (construction)
  • předání (deployment)
  • údržba (support, maintenance)
Plánování

Během plánování vzniká hrubá představa o času a prostředcích potřebných pro vývoj produktu. Také se vyhodnocují možná rizika.

Modelování

Během modelování vznikají modely, které slouží k lepšímu porozumění problematice (jak ze strany vývojáře, tak ze strany zákazníka) a vytváří se struktura celého systému. Při modelování vznikají grafická schémata a diagramy, které se lépe hodí k zachycení abstraktních myšlenek. Aby byly tyto diagramy mezinárodně srozumitelné a jednotné pro celý průmysl, bylo nutné pravidla pro kresbu těchto schémat a diagramů nějakým způsobem formalizovat.

Za oficiální grafický jazyk pro zakreslování schémat a diagramů (nejen) pro účely softwarového inženýrství se nyní považuje jazyk UML (Unified Modeling Language).

Během modelování je nanejvýš vhodné dodržovat nějaká dobrá a ověřená pravidla. Pro objektové programování existuje několik strategií, jako je například GRASP, SOLID a další. Mnohé z nich jsou ale použitelné i obecně na jakékoliv strukturované programování.

Vývoj a testování

Během vývoje vzniká vlastní zdrojový kód software v konkrétním programovacím jazyce. Do fáze vývoje patří i testování.

Úkolem testování je co nejdříve odhalit a popsat chyby (defekty, bugy) ve vyvíjeném produktu. Ty mohou vzniknout při implementaci nebo jako postranní efekt špatného návrhu. Čím dříve je chyba objevena, tím levnější je její oprava (debug). Zajímavým poznatkem je, že chyby se v software obecně nachází zejména na hranicích a přechodech.

Při testování se využívají následující pomocné konstrukce:

  • Pahýl (stub, dummy) je jednoduchá náhražka podkomponenty, která velmi jednoduše simuluje její chování nebo jen zaznamenává volané metody. Pahýly se postupně nahrazují plnohodnotnými komponentami.
  • Driver je řídící program, který vytváří vstupy a kontroluje výstupy testované komponenty. Prakticky tedy simuluje uživatelské rozhraní či situaci, které (alespoň teoreticky) mohou nastat.

Existují různé přístupy k testování a druhy testů:

  • Jednotkové testování se zabývá testováním zpravidla nejmenších nedělitelných (atomických) komponent systému.
  • Integrační testování se používá při skládání jednotlivých komponent do sebe. Většinou se spouští vždy, když je pahýl nahrazen skutečnou komponentou nebo se nějaká komponenta změní.
  • Uživatelská validace je provedena zákazníkem po dodání produktu. Zákazník kontroluje, zda byly správně implementovány všechny jeho požadavky.
Předání

Když je produkt dokončen, zbývá jej předat zákazníkovi. Zákazník po vyzkoušení produktu poskytne zpětnou vazbu, která může být vstupem pro další vývoj systému. Do této fáze lze zařadit i následnou údržbu.

Údržba

Předpokládá se, že alespoň 80% existujícího zdrojového kódu není správně zdokumentováno, okomentováno či strukturováno. Proto je údržba obtížná a nákladná. Náklady na údržbu obvykle překračují 50% z celkových nákladů na vývoj a provoz software.

Definice údržby podle IEEE zní: „Údržba softwarového systému nebo jeho komponenty je jeho modifikace za účelem adaptace na změnu prostředí, zlepšení výkonnosti či ostatních jeho vlastností.“

Existuje několik typů údržby:

  • Korektivní údržba – především oprava chyb.
  • Adaptivní údržba – adaptace software na změnu prostředí, nemění funkcionalitu systému.
  • Perfektivní údržba – implementace změn či upřesnění uživatelských požadavků.
  • Preventivní údržba – pokrývá aktivity směřující ke zjednodušení budoucí údržby, například aktualizace dokumentace, přidávání komentářů a zlepšování modularity systému.
Zpětné inženýrství

Zpětné inženýrství je proces analýzy subjektu za účelem identifikace jeho komponent a jejich vzájemných vztahů, který vede k vytvoření reprezentace systému v jiné formě či vyšší úrovni abstrakce.

Inženýr pracující v údržbě software velmi často zpětné inženýrství využívá, aby jeho stávající zdrojový kód pochopil a provedl v něm požadované změny.

Standardní modely procesů

Softwarové inženýrství nabízí několik standardizovaných postupů, jak vyvíjet software. Vývojářský tým je může převzít a aplikovat v praxi.

(žádné podstránky)

Kvalita software

Kvalita software je velmi široký pojem. Zahrnuje v sobě jak subjektivní, tak objektivní složku. Subjektivní složka je hlavně o osobním pocitu z používání software (rozmístění ovládacích prvků, použitý jazyk), zatímco objektivní složka spočívá v korektnosti (chování podle specifikací) a stabilitě (rozumné chování v nestandardních situacích).

Protože bylo nutné kvalitu software nějakým způsobem přesněji definovat, byla vydána norma ISO 9126 (ISO – International Organization for Standardization). Standard ISO 9126 formálně definuje tyto charakteristiky pro hodnocení kvality software:

  • funkcionalita
    • vhodnost daného řešení
    • přesnost
    • interoperabilita
    • bezpečnost
  • spolehlivost
    • zralost
    • odolnost vůči chybám
    • schopnost zotavení
    • dodržení požadavků na spolehlivost
  • použitelnost
    • pochopitelnost
    • obtížnost výuky
    • provozuschopnost
    • přitažlivost
    • dodržení požadavků na použitelnost
  • účinnost
    • chování v čase
    • využití zdrojů
    • dodržení požadavků na účinnost
  • udržovatelnost
    • obtížnost analýzy
    • proměnlivost
    • stabilita
    • obtížnost testování
    • dodržení požadavků na udržovatelnost
  • přenositelnost
    • adaptabilita
    • obtížnost instalace
    • schopnost koexistence s ostatními produkty
    • nahraditelnost
    • dodržení požadavků na přenositelnost

Reference