Nincs gyors, egyszerű és minden helyzetben helytálló válasz arra a kérdésre: mikor érdemes egy cégnek saját szoftvert fejleszteni működésének innovációja során. Számos, vagy inkább számtalan körülménytől függ, mikor lehet, vagy esetleg szükséges is ezt az utat választani. És még akkor hátra van a sikeres végrehajtás is.
◼︎ Úri szabó vagy teszkós öltöny
A „ITBUSINESS & TECHNOLOGY 2023 – Szoftverológia” konferencia egyik sokat emlegetett területe volt az egyedi fejlesztésű szoftverek sokszínű piaca. Nem véletlenül: ezt a kérdést nagyon sok irányból lehet megközelíteni, és az előadók is sok nézőpontból beszéltek azokról a fejlesztésekről, amelyeknél valamilyen oknál fogva még az erősen személyre szabott „dobozos” szoftverek sem jelentenek valódi megoldást. A tapasztalatok alapján jellemzően akkor merül fel a különböző méretű, eltérő informatikai infrastruktúrával, illetve bonyolultságú üzleti folyamatokkal dolgozó cégek életében az egyedi szoftverfejlesztés, ha a piacon elérhető alkalmazások vagy túlságosan költségesek, vagy hiányosan, netán egyáltalán nem képesek lefedni a vállalkozás meglévő vagy éppen felépíteni szándékozott folyamatait. Szerencsés eset, vagy megfelelő ügyvezető-informatikai vezető csapatmunka eredménye, ha az egyedi út választására még azelőtt kerül sor, hogy akár nagyobb költségekkel járó, de kudarcba fulladt testre szabást és bevezetést próbáltak volna végrehajtani.
Egy egyedi szoftver – ha a fejlesztés teljes folyamatát sikeresen hajtják végre a partnerek – szinte tökéletesen illeszkedhet a vállalatok működéséhez, meglévő informatikai struktúrájához. Egy, már egészen az alapoktól „cégre szabott” szoftverrel megoldható, hogy csak azok a folyamatok, funkciók jelenjenek meg, amelyek a megrendelő és ügyfelei, beszállítói számára fontosak. Emellett jogos igény természetesen az egyszerű kezelhetőség is, a tetszetős, a cégarculatnak megfelelő felhasználói felület, a munkatársak felhasználói élményének biztosítása, vagy az akár csak arra a cégre vagy annak egyes részlegeire jellemző, különleges követelményeknek történő maradéktalan megfelelés.
Ki fogja megcsinálni?
A cégek többsége nem rendelkezik olyan belső szoftverfejlesztő csapattal, amely méretében vagy képességeiben alkalmas a kitűzött célok elérésére. Ezt a helyzetet csak nehezíti a már évek óta gondot jelentő fluktuáció: főleg a speciális szaktudással ismeretekkel rendelkező vagy a cégnél töltött évek során óriási tapasztalattal rendelkező szakemberek pótlása nehéz és drága, vagy éppen több hónapot is igényel, amely alatt a fejlesztés lelassulhat vagy rossz esetben akár le is állhat.
A külső fejlesztők esetében felmerülhet többek között a bizalom kérdése. A fejlesztőcsapat olyan mélységekig fog belelátni a cég üzleti folyamataiba, ami nem minden felső vezető számára komfortos. Az egyedi fejlesztés azonban igazi csapatmunka kell, hogy legyen: a megfelelő és szükséges információktól elzárt specialisták minden szaktudásuk, tapasztalatuk ellenére sem tudnak optimális megoldást leszállítani.
Az alapoktól kell kezdeni
Kevés dologban volt teljes az egyetértés az elhangzott előadásokban, de abban mindenki egyetértett, hogy a sikeres, egyedi szoftverfejlesztés nem a programozónál és nem is a szoftvertervezőnél kezdődik. A szoftverfejlesztés drága, a teljesen egyedi megoldások pedig még drágábbak. Ezért a sok projektet megjárt szakemberek szerint alaposan át kell gondolni, hogy milyen folyamatokra, funkciókra van szükség a kitűzött üzleti célok eléréséhez. Egy tapasztalt, a megrendelő üzletágában jártas fejlesztői csapat egyfajta tanácsadóként, coach-ként is segítheti a céget annak meghatározásában, hogy pontosan mire is van szüksége.
Mind a hazai, mind a külföldi példák azt mutatják, hogy az esetek túlnyomó többségében már a fejlesztést megrendelő cégnél eldőlhet a győzelem vagy a kudarc. Nem lehet kihagyni a felgyorsítani vagy új alapokra helyezni szándékozott üzleti folyamatok lehető legpontosabb feltérképezését. Azt lehet csak hatékonyan digitalizálni, amit ismerünk. Gyakran előfordul, hogy az előzetes elképzeléseknél sokkal összetettebb folyamatháló rajzolódik ki, illetve ilyenkor derül ki, hogy egy-egy adott terület vagy képesség – amelyet az egyedi szoftverfejlesztéssel kívánunk támogatni – a cég folyamatainak sokkal nagyobb hányadához kapcsolódik, mint eredetileg gondolták. Sajnos a legtöbb fejlesztő cég nem lát bele a céges folyamatokba, és nem tudja, hogy mire is van igazán szükség. Nem ismeretlen az a helyzet sem, hogy a megfelelő információk hiányában „túlvállalják” magukat a fejlesztők, ebből ered a projekt csúszása, a nem működő rendszerek és a felelősség megállapításának nehézsége.
A tapasztalatok azt mutatják, hogy fontos az egyes fejlesztési szakaszok, mérföldkövek pontos meghatározása. Ezek elérésekor magától értetődőnek kell lennie, hogy a partnerek átbeszéljék az elért eredményeket, az adott szakaszban felmerült kérdéseket, az észlelt hibákat, problémákat és a következő szakaszt. Így minden fél pontosan láthatja, hogy a projekt megvalósítása milyen ütemben halad, melyek a visszatérően problémás pontok, területek, és hogy a fejlesztés minden pontja továbbra is tiszta-e mind a megrendelő, mind a fejlesztő előtt.
Kell egy terv
Ha már ismertek és tisztázottak az üzleti folyamatok, megvannak a prioritások, és tudható, hogy a megrendelő valójában mit szeretne elérni, akkor a követelményspecifikáció segítségével lehet meghatározni, hogy mi az elvárt projekteredmény. Ez is kőkemény csapatmunka, akár projektmegbeszélések sorozata, hiszen a megrendelő és a fejlesztő csak közösen tudja megalkotni a szoftver funkcionális specifikációját. Ennek segítségével lehet meghatározni, hogy mi a fejlesztők feladata, mikor és milyen tesztelésekre van szükség, s persze azt is tartalmazza, hogy a megrendelő miféle végeredményre, azaz milyen funkciókat megvalósító alkalmazásra számíthat a fejlesztési folyamat végén.
A tapasztalatok alapján szintén kulcsfontosságúnak tekinthető a rendszerterv, amely a kiépítendő megoldás műszaki megvalósítását ismerteti. Ez az a dokumentáció, amely gyakorlatilag mindenre kiterjed, így valóban alapjaiban határozhatja meg a szoftverfejlesztés sikerét vagy kudarcát. Optimális esetben a rendszerterv átfogó képet ad a műszaki felépítésről, az architektúráról, az alkalmazott interfészekről és entitásokról vagy éppen az adatok tárolási struktúrájáról.
Ha a már említett, megelőző lépéseket sikerült megfelelően végrehajtani, akkor a rendszerterv elolvasásával a projekt résztvevői valóban megérthetik a felhasznált technológiákat, azok alkalmazásának módszereit és célját, a bevezetni kívánt technológiák rendszeren belüli szervezett működését, azok integrálásának módszereit és folyamatait. Jó rendszertervvel megoldható, hogy olyan architektúra jöjjön létre, amelynek különböző rétegeiben a pontos helyükre kerüljenek mindazok az funkciók, amelyek a cég üzleti folyamatait fogják kiszolgálni – a remények szerint gyorsan, hatékonyan, hibamentesen és a cég növekedését követve skálázhatóan is.
Biztosan jó lesz ez így?
A szoftver fejlesztését végigkíséri a tesztelés is – jó esetben erre legalább akkora hangsúlyt fektet a projekt vezetése, mint az előkészítésre és magára a kódolásra. Az alapos szemrevételezés alapja szintén a tervezés: mind az elkészült modulokat, mind azok rendszerbe integrálását, mind a teljes rendszer funkcionalitását átgondolt és megfelelő szigorral elkészített tesztforgatókönyvek alapján érdemes és szükséges is megvizsgálni. Az, hogy a szoftverben hiba van – abban bizony szinte biztosak lehetünk. Az, hogy a megvizsgált részekben, modulokban, funkciókban már nincs, nos, ehhez szükséges az alapelveket betartani az egyedi fejlesztések esetében is.
Sokszor hangoztatott alapvetés, hogy mindent nem lehet tesztelni: ezért kell kiválasztani azokat a magas kockázatú és/vagy prioritású elemeket, amelyeket mindenképp ellenőrizni szükséges. Szintén ismert elv, hogy a korai, az életciklus minél korábbi pontján elkezdett teszteléssel a hiba is hamarabb lesz meg, így a kijavításához szükséges költségek is csökkenthetőek. A szabványos modulokat is be kell vizsgálni a konkrét alkalmazási környezetben, a teljes leprogramozást meg lehet takarítani, a tesztelést nem.
Ugyanakkor a hibamentes szoftver nem okvetlenül „jó” szoftver – azaz önmagában ez kevés ahhoz, hogy azt az megoldást kapja kézhez a megrendelő, amire vágyott. Fontos, hogy olyan modulok, alkalmazások kerüljenek a digitális górcső alá, amelyek olyan funkciókat tartalmaznak, olyan struktúrába illesztve és olyan kezelői felülettel, amelyek megfelelnek a megrendelő igényeinek – legalábbis minél közelebb állnak azokhoz.
A szoftver elszáll, az írás megmarad
Valaki vagy szép kódot tud írni vagy szép dokumentációt – a kettő együtt igen ritka. Az egyedi fejlesztéseknél a megfelelő és a fejlesztés minden lépésére kiterjedő dokumentáció szisztematikus és magas szakmai színvonalú megalkotása elengedhetetlen: nem csupán maga a fejlesztés, de a tesztelés, az üzemeltetés, a támogatás és a későbbi továbbfejlesztés alapjait is jelenti.
Egy korrektül összeállított üzemeltetési kézikönyv és/vagy a könnyen értelmezhető felhasználói útmutató nem csupán meggyorsíthatja az átadást, az implementálást, de az alkalmazó céghez később érkező új kollégák kiképzését is. Ez pedig már a fejlesztés teljes folyamatán is túlnyúló költséghatékonysági kérdéseket is jelent.
Hosszútávfuttatás
A jellemzően több hónapos akár éves időtartamot és projekttől függően jelentős anyagi erőforrásokat igénylő elemzés-tervezés-fejlesztés-tesztelés-implementálás ciklusokon átesett szoftvert üzemeltetni is kell. Az egyedi szoftverfejlesztések esetében ez hosszú időtávot is jelent, így a partneri viszonyt érdemes hosszabb távon is fenntartani. A bevezetett megoldás folyamatos karbantartása, a használat közben felmerülő „extra kérések”, a későbbi fejlesztés további évekre jelenhet szoros kapcsolatot a megrendelő és a fejlesztőcsapat között.








