Dva projekty pôsobia na prvý pohľad rovnako – „potrebujeme aplikáciu na správu objednávok“ alebo „chceme portál pre klientov“. Napriek tomu jeden tím odhadne rozsah práce pomerne rýchlo a s vysokou istotou, zatiaľ čo pri druhom sa odhad mení pri každom ďalšom stretnutí. Rozsah vývoja softvéru na mieru totiž nezávisí len od toho, čo aplikácia navonok robí, ale predovšetkým od toho, s čím všetkým sa musí vyrovnať vo vnútri – od stavu vstupných dát cez počet systémov, s ktorými má komunikovať, až po to, ako rýchlo sa vie klient rozhodovať. V tomto článku sa pozrieme na faktory, ktoré náročnosť projektu reálne určujú, a prečo je dôležité rozprávať sa o nich skôr, než padne akékoľvek číslo.
Prečo rozsah projektu nie je vidieť na prvý pohľad
Zadanie typu „potrebujeme systém na evidenciu zmlúv“ môže v praxi znamenať jednoduchú databázovú aplikáciu s troma formulármi, alebo komplexný systém s desiatkami rolí, workflow schvaľovania, prepojením na účtovný softvér a archiváciou podľa legislatívnych požiadaviek. Rozdiel medzi oboma scenármi nie je vidieť z jednej vety zadania – prejaví sa až pri detailnej analýze. Preto sa seriózna príprava projektu vždy začína rozkladom požiadaviek na jednotlivé funkčné celky a identifikáciou toho, čo bude technicky náročné, nie iba toho, čo bude „vidieť“ na obrazovke.
Stabilita a presnosť požiadaviek
Najväčší vplyv na náročnosť vývoja softvéru má často to, ako dobre je zadanie premyslené ešte pred začiatkom vývoja. Ak firma vie presne opísať procesy, výnimky a okrajové prípady, tím dokáže navrhnúť architektúru, ktorá požiadavky pokryje na prvý pokus. Ak sa naopak požiadavky menia priebežne alebo sa objavujú až pri testovaní hotových častí, rastie počet úprav a s ním aj celková náročnosť – nie preto, že by sa niečo robilo zle, ale preto, že sa mení samotný cieľ.
Overený spôsob, ako toto riziko znížiť, je detailná fáza analýzy pred samotným programovaním. O tom, ako táto príprava a nasledujúce kroky vyzerajú, píšeme podrobnejšie v článku Ako prebieha vývoj softvéru na mieru: fázy projektu krok za krokom.
Počet integrácií a stav existujúcich systémov
Softvér na mieru len zriedka funguje izolovane. Prepája sa na účtovníctvo, ERP, CRM, platobné brány, dochádzkové systémy alebo externé registre. Každá takáto integrácia prináša vlastnú neistotu – záleží na tom, či má cieľový systém moderné a zdokumentované API, alebo ide o staršie riešenie bez rozhrania, kde treba dáta exportovať a spracúvať náhradným spôsobom. Čím viac systémov treba prepojiť a čím horšia je ich dokumentácia, tým vyššia je pravdepodobnosť komplikácií, ktoré sa nedajú odhadnúť vopred.
Ak projekt zahŕňa prepojenie viacerých firemných systémov, oplatí sa pozrieť aj článok Systémová integrácia: prepojenie ERP, CRM a e-shopu – opisuje, na čo si dať pri takomto prepájaní pozor.
Graf ilustruje všeobecný princíp – s pribúdajúcimi integráciami a klesajúcou kvalitou rozhraní rastie aj náročnosť riešenia. Konkrétne čísla sa líšia projekt od projektu.
Dátová a procesná zložitosť
Množstvo a štruktúra dát, s ktorými má systém pracovať, ovplyvňujú návrh databázy, validácie aj výkon aplikácie. Jednoduchá evidencia s pár desiatkami záznamov denne si vystačí so štandardným návrhom. Systém, ktorý spracúva veľké objemy transakcií, historické dáta z viacerých zdrojov alebo potrebuje zložité výpočty a reporty v reálnom čase, si vyžaduje premyslenejšiu architektúru už od začiatku – vrátane spôsobu, akým sa dáta ukladajú, indexujú a zálohujú.
Podobne aj procesná logika – počet krokov schvaľovania, výnimky, paralelné vetvy procesu – priamo predlžuje analýzu aj testovanie, pretože každá vetva musí byť overená samostatne.
Počet rolí, oprávnení a používateľských scenárov
Aplikácia s jedným typom používateľa je z pohľadu návrhu jednoduchšia než systém, kde majú rôzne role – administrátor, manažér, externý partner, klient – rozdielne oprávnenia a vidia iné dáta. S každou ďalšou rolou pribúdajú kombinácie, ktoré treba navrhnúť, implementovať a otestovať, vrátane toho, čo sa stane, keď sa role prekrývajú alebo menia v priebehu používania systému.
Bezpečnosť, compliance a citlivosť dát
Ak softvér pracuje s osobnými údajmi, platobnými informáciami alebo dátami podliehajúcimi regulácii v danom odvetví, náročnosť rastie aj mimo samotnej funkcionality. Pribúdajú požiadavky na šifrovanie, audit logy, riadenie prístupov, bezpečné ukladanie a v niektorých prípadoch aj externé bezpečnostné testovanie. Tieto vrstvy nie sú viditeľné v používateľskom rozhraní, no sú nevyhnutnou súčasťou rozsahu práce a treba s nimi počítať už pri návrhu architektúry, nie až dodatočne.
Škálovateľnosť a plánovaný rast
Systém navrhnutý pre desiatky používateľov sa architektonicky líši od systému, ktorý má od začiatku počítať s rastom na tisíce používateľov alebo s vysokou záťažou v špičkách. Ak firma vie, že plánuje rásť, rozširovať sa na nové trhy alebo pridávať ďalšie moduly, je racionálne zahrnúť túto perspektívu do návrhu už na začiatku – dodatočné prerábanie architektúry pre škálovanie je zvyčajne náročnejšie než jej premyslenie vopred.
Rozhodovanie a zapojenie na strane klienta
Náročnosť projektu neurčuje len technológia, ale aj proces rozhodovania na strane objednávateľa. Ak má firma jasne definovaného zodpovedného človeka, ktorý vie rýchlo schvaľovať návrhy a poskytovať spätnú väzbu, projekt postupuje plynulo. Ak sa rozhodnutia musia schvaľovať naprieč viacerými oddeleniami alebo sa priority menia v priebehu vývoja, rastie počet iterácií – čo sa priamo prejaví na celkovom rozsahu práce, aj keď sa funkčné zadanie na papieri nezmenilo.
Ako si rozsah projektu ujasniť vopred
Presný odhad náročnosti nevzniká odhadom „od oka“, ale rozborom vyššie uvedených faktorov pre konkrétny projekt. Pomáha vopred si pripraviť odpovede na otázky: koľko systémov má riešenie prepájať, aké typy používateľov bude mať, aké dáta bude spracúvať a aké nároky na bezpečnosť z toho vyplývajú.
| Faktor | Nižšia náročnosť | Vyššia náročnosť |
|---|---|---|
| Požiadavky | Stabilné, presne opísané | Menia sa priebežne |
| Integrácie | Žiadne alebo moderné API | Viac systémov, legacy bez API |
| Dáta a procesy | Jednoduchá evidencia | Veľké objemy, zložité vetvenie |
| Role a oprávnenia | Jeden typ používateľa | Viacero rolí s rôznymi prístupmi |
| Bezpečnosť | Bez citlivých dát | Osobné či platobné údaje, regulácia |
Pre firmy, ktoré zvažujú, či je softvér na mieru vôbec vhodnou cestou, alebo by im lepšie poslúžilo hotové riešenie, môže byť užitočné najprv porovnanie v článku Softvér na mieru vs. SaaS: čo sa firme oplatí viac. Ak už viete, že smerujete k riešeniu na mieru, pozrite si aj naše riešenia v oblasti vývoja softvéru, kde nájdete prehľad prístupu, ktorý pri podobných projektoch používame.
Keďže každý projekt má inú kombináciu vyššie uvedených faktorov, najspoľahlivejší spôsob, ako získať reálnu predstavu o rozsahu konkrétneho zadania, je prebrať ho s niekým, kto vie položiť správne otázky. Ak zvažujete vývoj softvéru na mieru a chcete si ujasniť, čo všetko bude vaše riešenie zahŕňať, dohodnite si nezáväznú konzultáciu.