Vývoj softwaru
Vývoj softwaru je proces koncipování, popisu, specifikace, návrhu, programování, dokumentace, testování a oprav chyb používaný při vytváření a údržbě aplikací, frameworků a jiných softwarových komponent. Jádrem vývoje softwaru je „programování“ – proces vytváření a údržby zdrojových kódů, ale v širším smyslu zahrnuje vše, co se používá od návrhu koncepce požadovaného softwaru až po jeho konečné nasazení, obvykle v plánovaném a strukturovaném procesu.[1] Vývoj softwaru tak může zahrnovat výzkum, nový vývoj, prototypování, úpravy, znovupoužití, re-engineering, údržbu a všechny další činnosti, které přispívají k vytvoření softwarového produktu.[2]
Účely vývoje software
Software se vyvíjí pro různé účely; třemi nejobvyklejší jsou:
- Má splňovat specifické potřeby určitého zákazníka nebo firmy (v případě zakázkového softwaru).
- Má uspokojovat vnímanou potřebu nějaké skupiny potenciálních uživatelů (v případě komerčního softwaru a softwaru s otevřeným zdrojovým textem).
- Je určený pro vlastní použití (například vědec může vytvořit software pro automatizaci svých rutinních úkolů).
Řízení procesu vývoje software
Potřeba lepšího řízení kvality procesu vývoje softwaru vedla k rozvoji softwarového inženýrství, které na proces vývoje softwaru aplikuje systematický přístup, jež je základem inženýrského paradigmatu.
Existují různé přístupy k řízení softwarových projektů známých jako modely životního cyklu vývoje softwaru, metodologie, procesy nebo modely. Tradičním přístupem je vodopádový model, který je protikladem mnoha novějších metodik agilního vývoje softwaru.
Vývoj softwaru se též liší dle toho, zda se jedná o vývoj vestavěného softwaru, tj. vývoj softwaru pro vestavěné systémy, a systémového software. Zatímco první se používá například pro řízení elektronických výrobků, a tak vyžaduje, aby byl vývojový proces integrován s vývojem příslušného fyzického výrobku, druhý vytváří prostředí pro běh aplikací a často i pro samotný proces programování, a proto se obvykle vyvíjí odděleně.
Metodologie vývoje softwaru
Proces vývoje softwaru (známý také jako metodika, model nebo životní cyklus vývoje softwaru) je rámec používaný pro strukturování, plánování a řízení procesu vývoje informačních systémů. V průběhu let bylo vyvinuto množství metodik, z nichž každá má své silné a slabé stránky. Žádná metodika vývoje softwaru nemusí být vhodná pro použití ve všech druzích projektů.[3]
Většina metodologií však sdílí nějaké kombinace následujících fází vývoje softwaru:
- Analýza problému
- Průzkum trhu
- Získávání požadavků pro navrhované obchodní řešení
- Vytvoření plánu nebo návrhu softwarového řešení (Objektově orientovaná analýza a design)
- Implementace softwaru (programování/kódování, ladění
- Testování software
- Nasazení softwaru (Instalace, Release management)
- Údržba softwaru a oprava chyb
Tyto fáze se často souhrnně označují jako životní cyklus vývoje softwaru nebo SDLC.
Různé přístupy k vývoji softwaru mohou provádět tyto fáze v různém pořadí a věnovat různým fázím více nebo méně času. Také podrobnost dokumentace vytvářené v každé fázi vývoje softwaru se mění.
Vodopádový přístup
U vodopádového a od něj odvozených přístupů jsou všechny fáze vývoje prováděný postupně. Vývojáři, popř. zadavatelé softwaru se snaží posoudit všechna rizika vývoje a vytvořit si podrobný plán softwaru ještě před zahájením samotné implementace (kódování). Tím vším se snaží vyhnout jakékoliv rozsáhle změně návrhu a opakovanému kódování v pozdějších fázích plánování životního cyklu vývoje softwaru. Rizikem zde však je, že se v průběhu vývoje software objeví nedomyšlené detaily nebo se nějak zásadně změní situace na trhu či trendy v oboru. Na takové situace obvykle tento přístup nedokáže pružně reagovat. Ilustruje to i fakt, že statisticky pouhých 15 % takto řízených projektů je dokončeno bez zdražení, včas a s udržením požadované kvality a funkcionality.[4][5]
Agilní přístup
U agilního přístupu a jeho variant jsou všechny fáze prováděny opakovaně v každém cyklu nebo iteraci vývoje produktu. Méně času se zpočátku tráví na plánování a dokumentaci a více času na kódování a vývoj automatizovaných testů. Součástí agilního přístupu je průběžné testování v celém vývojovém životním cyklu.
Vývojáři zde tedy obvykle rozdělují vývoj aplikace či softwaru do jednotlivých cyklů (sprintů), během kterých je vždy zhotovena nějaká funkcionalita produktu. První cíl vývoje bývá obvykle tzv. minimum viable produkt (minimální životaschopný produkt), který se zaměřuje na základní problém, kvůli kterému je software vyvíjen. Na konci každého cyklu je vždy produkt s danou funkcionalitou ukázán klientovi a při dosažení fáze MVP je obvykle předán k otestování zákazníkům, popř. rovnou uveden na trh. Podle zpětné vazby klienta a zákazníků je produkt dále rozvíjen, mění se designově, jsou přidaný žádané funkcionality apod. Agilní přístup tedy zahrnuje aktivní začlenění klienta i zákazníků již do raných fází vývoje produktu. Výhodou je, že se software už od samého počátku vyvíjí přesně podle představ klienta i cílové skupiny. Nic se nevyvíjí zbytečně a vývoj pružněji reaguje na reálné potřeby zákazníků i změny na trhu.[4][5]
Volba přístupu
Různé metodologie mají významné výhody a nevýhody a nejlepší přístup k řešení problému pomocí softwaru bude často záviset na typu problému. Pokud je problém dobře pochopen a řešení lze efektivně předem naplánovat, klasický „vodopádový přístup“ může fungovat nejlépe. Tento přístup se proto volí častěji u neinovativních softwarů. Pokud je naopak problém nejednoznačný, jde o inovativní software, který reaguje na dosud neuchopené problémy, a strukturu softwarového řešení si nelze snadno představit, pak může být mnohem vhodnější agilní přístup.
Odkazy
Reference
V tomto článku byl použit překlad textu z článku Software development na anglické Wikipedii.
- Application Development (AppDev) Defined and Explained [online]. Bestpricecomputers.co.uk, 2007-08-13 [cit. 2012-08-05]. Dostupné online.
- DRM Associates. New Product Development Glossary [online]. 2002 [cit. 2006-10-29]. Dostupné online.
- System Development Methodologies for Web-Enabled E-Business: A Customization Framework Linda V. Knight (DePaul University, USA), Theresa A. Steinbach (DePaul University, USA) a Vince Kellen (Blue Wolf, USA)
- Zadáváte vývoj mobilní aplikace poprvé? Poradíme vám komu. synetech.cz [online]. [cit. 2021-05-10]. Dostupné online. (česky)
- Tvorba zadání | ASWA. aswa.cz [online]. [cit. 2021-05-10]. Dostupné online. (česky)
Související články
Specifické aplikace
Externí odkazy
- Obrázky, zvuky či videa k tématu vývoj softwaru na Wikimedia Commons
Literatura
- KIT, Edward. Software Testing in The Real World. [s.l.]: Addison-Wesley Professional, 1992. Dostupné online. ISBN 0201877562.
- MCCARTHY, Jim. Dynamics of Software Development. [s.l.]: Microsoft Press, 1995. Dostupné online. ISBN 1556158238.
- CONDE, Dan. Software Product Management: Managing Software Development from Idea to Product to Marketing to Sales. [s.l.]: Aspatore Books, 2002. ISBN 1587622025.
- DAVIS, A. M. Just enough requirements management: Where software development meets marketing. [s.l.]: Dorset House Publishing Company, Incorporated, 2005. ISBN 0932633641.
- HASTED, Edward. Software That Sells: A Practical Guide to Developing and Marketing Your Software Project. [s.l.]: Wiley Publishing, 2005. ISBN 0764597833.
- HOHMANN, Luke. Beyond Software Architecture: Creating and Sustaining Winning Solutions. [s.l.]: Addison-Wesley Professional, 2003. ISBN 0201775948.
- John W. Horch (2005). „Two Orientations On How To Work With Objects“ in: IEEE Software. vol. 12, čís. 2, stránky 117–118, Mar., 1995.
- RITTINGHOUSE, John. Managing Software Deliverables: A Software Development Management Methodology. [s.l.]: Digitální Press, 2003. Dostupné online. ISBN 155558313X.
- WIEGERS, Karl E. More About Software Requirements: Thorny Issues and Practical Advice. [s.l.]: Microsoft Press, 2005. Dostupné online. ISBN 0735622671.
- WYSOCKI, Robert K. Effective Software Project Management. [s.l.]: Wiley, 2006. Dostupné online. ISBN 0764596365.