TakéAplikační životní cyklus, Lifecycle aplikace, ALM, Software lifecycleZákladní
Definice
Životní cyklus aplikace je posloupnost fází, kterými software prochází od prvotního záměru přes návrh, vývoj, testování a nasazení až po provoz, údržbu a konečné vyřazení. Termín se používá ve dvou rovinách: manažerské, kde popisuje řízení produktu v čase, a technické, kde označuje stavy běžící aplikace na daném zařízení nebo platformě.
Nezaměňujte: Životní cyklus aplikace může znamenat řízení softwarového produktu od záměru po vyřazení, nebo stavy běžícího procesu aplikace na mobilní platformě či v prohlížeči.
Dvě roviny stejného pojmu
Životní cyklus aplikace se v praxi používá ve dvou významech, které se často zaměňují. Manažerská rovina popisuje produkt od nápadu po jeho vypnutí: sběr požadavků, návrh, implementaci, testování, nasazení, provoz, iterace a nakonec vyřazení (end of life). Technická rovina popisuje stavy jednoho běhu programu: spuštění, přechod do popředí, uspání na pozadí, obnovení a ukončení procesu operačním systémem.
Rozlišení je důležité proto, že každá rovina má jiné publikum a jiné artefakty. První řeší rozpočet, roadmapu a smlouvy o podpoře, druhá řeší callbacky, ukládání stavu a spotřebu baterie.
Fáze produktového cyklu a kde se nejčastěji zadrhne
- Záměr a analýza: definice problému, cílové skupiny a měřitelného cíle. Chyba tady je nejdražší, protože se propíše do všeho dalšího.
- Návrh: architektura, datový model, návrh rozhraní. Vzniká tu většina technického dluhu, který se později splácí refactoringem.
- Vývoj a testování: implementace v krátkých iteracích, automatizované testy, code review.
- Nasazení: dodání do produkce, typicky přes CI/CD pipeline, s možností rychlého rollbacku.
- Provoz a údržba: monitoring, bezpečnostní aktualizace, reakce na incidenty. Tato fáze bývá časově nejdelší a v rozpočtech nejvíc podceněná.
- Vyřazení: migrace dat, export uživatelských informací, stažení z distribuce, ukončení podpory API.
Fáze nejdou v moderním vývoji lineárně za sebou. Tým se do návrhu vrací po každé zpětné vazbě z provozu, takže cyklus je spíš smyčka než přímka.
Co znamená lifecycle u běžící aplikace
Na mobilních platformách a ve webových prohlížečích operační systém rozhoduje, kdy aplikaci uspí nebo ukončí, aby uvolnil paměť. Aplikace proto dostává události, na které musí reagovat: uložit rozepsaný formulář, zastavit přehrávání, odhlásit odběry, zrušit síťové požadavky. Android má metody onCreate, onResume a onStop, iOS ekvivalentní přechody scén, prohlížeč události visibilitychange a pagehide.
Praktický důsledek: nikdy nespoléhej na to, že proces poběží dál. Stav, který si uživatel nechce ztratit, patří do trvalého úložiště v okamžiku, kdy aplikace odchází na pozadí, ne až při zavření.
Proč se plánuje i konec
Konec životního cyklu není selhání, ale rozhodnutí. Aplikace závisí na knihovnách, platformních SDK a certifikátech, které samy zastarávají. Platforma vynutí novou cílovou verzi API, poskytovatel plateb ukončí starý protokol, právní požadavky se změní. Tým, který má definované datum konce podpory a plán migrace dat, řeší přechod v klidu. Tým bez něj řeší výpadek pod tlakem, obvykle v době, kdy původní autoři už ve firmě nejsou.
Příklady z praxe
Ztracený rozepsaný objednávkový formulář
E-shop v mobilní aplikaci nechal uživatele vyplnit dodací adresu. Uživatel přepnul do e-mailu pro kontrolu čísla popisného, systém aplikaci na pozadí ukončil kvůli paměti a po návratu byl formulář prázdný. Řešením je uložit stav při přechodu na pozadí, ne až při potvrzení objednávky.
document.addEventListener('visibilitychange', () => { if (document.visibilityState === 'hidden') { localStorage.setItem('checkout-draft', JSON.stringify(formState)); } });Plánované vyřazení staré verze API
Interní systém provozoval v1 svého REST API osm let. Tým oznámil datum konce podpory rok dopředu, přidal do odpovědí hlavičku s upozorněním a metriku počtu volání v1 podle klienta. V den vypnutí zbývala tři procenta provozu od dvou známých integrací, které se stihly domluvit na migraci individuálně.
Časté omyly
- MýtusAplikace je hotová spuštěním, dál už se jen občas něco opraví.
- Ve skutečnostiProvoz a údržba tvoří obvykle největší část celkových nákladů na aplikaci. Bezpečnostní záplaty, změny platformních požadavků a migrace závislostí běží po celou dobu života produktu, bez ohledu na to, jestli přibývají nové funkce.
- MýtusŽivotní cyklus aplikace je totéž co vodopádový model.
- Ve skutečnostiŽivotní cyklus popisuje fáze, kterými software prochází, ne způsob, jak je uspořádat v čase. Agilní tým prochází stejnými fázemi, jen je opakuje v krátkých iteracích místo jednoho dlouhého průchodu.
- MýtusKdyž aplikace zmizí z obrazovky, prostě čeká v paměti, než se uživatel vrátí.
- Ve skutečnostiOperační systém může proces na pozadí kdykoli ukončit kvůli paměti nebo úspoře energie. Aplikace musí počítat s tím, že další spuštění začne od nuly, a stav si sama uložit do trvalého úložiště.
Časté dotazy
- Jak dlouho trvá fáze údržby aplikace?
- Fáze údržby trvá po celou dobu, kdy aplikaci někdo používá, tedy typicky několikanásobně déle než samotný vývoj. Do údržby patří bezpečnostní aktualizace závislostí, přizpůsobení novým verzím operačních systémů a prohlížečů, reakce na incidenty a drobné úpravy podle zpětné vazby. Mobilní aplikace navíc čelí pravidelným požadavkům obchodů na novější cílovou verzi API, jinak přestanou být nabízeny. Realistický rozpočet počítá s průběžnými náklady na údržbu už při schvalování projektu, nikoli až v okamžiku, kdy něco přestane fungovat.
- Kdo v týmu odpovídá za životní cyklus aplikace?
- Odpovědnost za životní cyklus aplikace se obvykle dělí mezi produktového vlastníka, technického vedoucího a provozní tým. Produktový vlastník rozhoduje o prioritách a o tom, kdy produkt skončí. Technický vedoucí odpovídá za architekturu, kvalitu kódu a udržitelnost závislostí. Provozní nebo DevOps role zajišťuje nasazení, monitoring a obnovu po incidentu. V menších firmách tyto role splývají do jednoho člověka, což funguje do okamžiku, kdy odejde: proto je vhodné mít fáze i rozhodnutí zdokumentované nezávisle na konkrétních lidech.
- Co patří do plánu vyřazení aplikace?
- Plán vyřazení aplikace obsahuje datum konce podpory, způsob informování uživatelů, export a migraci dat, ukončení plateb a předplatných, stažení z distribučních kanálů a archivaci zdrojového kódu i dokumentace. U aplikací zpracovávajících osobní údaje je součástí i rozhodnutí, která data se smažou a která se z právních důvodů uchovají a jak dlouho. Pokud aplikace poskytovala API, patří do plánu i oznámení pro integrátory s dostatečným předstihem a měření zbytkového provozu, aby bylo jasné, koho vypnutí zasáhne.
- Jak souvisí životní cyklus aplikace s CI/CD?
- CI/CD automatizuje přechod mezi fází vývoje a fází provozu. Continuous integration průběžně sestavuje a testuje změny, continuous delivery nebo deployment je dodává do produkčního prostředí. Praktický přínos pro životní cyklus je zkrácení smyčky mezi zpětnou vazbou z provozu a opravou: místo čtvrtletních vydání se oprava dostane k uživatelům během hodin. Zároveň se snižuje riziko každého jednotlivého nasazení, protože změny jsou menší a existuje připravená cesta zpět, pokud se něco pokazí.
Zdroje
- Systems and software engineering: Software life cycle processes (ISO/IEC/IEEE 12207)(otevře se v novém okně)
- Page Visibility API(otevře se v novém okně)
- Systems development life cycle(otevře se v novém okně)