Amikor körvonalazódik egy igény, hogy egy problémát számítógépes programmal szeretnénk megoldani, akkor érdemes elgondolkodni azon, hogy ebből a zseniális ötletből hogyan lesz használható, és adott esetben eladható szoftver.
Ahhoz, hogy a fejlesztési folyamat hatékony legyen, érdemes előre meghatározott lépéseken végigmenni, hogy tudjuk, honnan indultunk, és azt is, hogy hova szeretnénk eljutni. (Ebből az alapötletből indul ki a szoftverprojekt-menedzsment, mint különálló tudomány)
Alapvetően a folyamat három nagy részből áll: tervezés, megvalósítás és karbantartás.
Tervezni kell, hogy mit, hogyan és mikor szeretnénk megcsinálni.
- Mit? A megoldandó probléma megfogalmazása, funkcionális követelmények specifikálása. Nagyon fontos, hogy már a fejlesztés előtt pontosan tisztában legyünk azzal, hogy mit szeretnénk a végén kapni. Ha egyből elmerülünk a kódolásban, könnyen úgy járhatunk, hogy amikor elkészülünk a programmal, hiányérzetünk lesz. Mintha nem pontosan ezt szerettük volna. (És ez még a jobbik eset. Könnyen előfordulhat az is, hogy igazából nem is tudjuk, hogy egy adott pillanatban már elkészült a program, vagy még valami hiányzik belőle...)
- Hogyan? Végiggondoljuk a problémát: hogyan lehetne ezt a leghatékonyabban megvalósítani? Milyen programozási nyelvet használjak? Hogyan építsem fel a szoftver struktúráját? (Pl: legyenek-e külön szoftver komponensek, vagy egy fájl terjedelmén belül meg tudom oldani a teljes problémát?) Milyen mértékben kell majd tesztelni? Szükséges-e az, hogy hordozható legyen a kód? (Csak a saját számítógépemen használom, vagy esetleg másik hasonló konfigurációjú számítógépen, vagy talán teljesen más platformon is? Pl: Windows kontra Linux)
- Mikor? Nagyobb szoftverek fejlesztésekor elengedhetetlen a projektmenedzsment. Ebben a lépésben a megoldandó feladatot lépésekre bontjuk és eldöntjük, hogy melyik résszel mikorra szeretnénk elkészülni. (Ez ugyan nagyon egyszerűnek hangzik, viszont teljes tudomány épült ki erre a feladatra. Ha érdekel, nézz utána a neten, de később én is fogok írni róla részletesen.) Becsléseket adunk, hogy melyik részfeladat mennyi idő alatt fog elkészülni, továbbá milyen mértékben épülnek egymásra a feladatok, és mennyire párhuzamosíthatóak? (Értsd: egyszerre tud-e több fejlesztő dolgozni rajta?)
A megvalósítás során történik a kódolás, a dokumentálás, a tesztelés és a szoftver kiadása.(A kiadás alatt nem kell tényleges publikálást érteni. Jelen környezetben azt értem alatta, amikor a programot használni kezdik.)
- Kódolás. Sokan ezt tekintik a szoftverfejlesztő igazi feladatának. Ez ugyan nem teljesen igaz, de a legtöbb fejlesztő az ideje nagy részében valóban a kódolással foglalkozik. Ebben a lépésben a mit? és a hogyan? kérdésekre adott válaszokból kiindulva megvalósítjuk a programot
- Dokumentálás. Részben már a tervezési szakaszban születhetnek dokumentációk, viszont a megvalósítás során ezek újabb elemekkel bővülhetnek. Pl felhasználói kézikönyv, a program bizonyos korlátainak a leírása, esetlegesen nem implementált funkciók és ismert hibák (bug-ok) listája. (Előfordul, hogy a szűkös időbe nem fér bele minden, vagy marad ismert hiba a kódban. Ez felhasználástól függően nem feltétlenül probléma, viszont mindenképp érdemes dokumentálni, mielőtt kiadjuk a szoftvert)
- Tesztelés. A rendelkezésre álló dokumentumok és a kód felhasználásával meg kell győződnünk arról, hogy a programunk tényleg azt csinálja, amit szeretnénk. Nagyon fontos, hogy teszteléssel az átlagosnál egy kicsivel bonyolultabb szoftver esetében is közel végtelen időt el lehet tölteni, ezért fontos figyelembe venni a tervezési fázisban meghatározott szempontokat arra vonatkozóan, hogy milyen mélységekig kell tesztelni. Fontos továbbá, hogy ha nem a fejlesztő végzi a saját kódja tesztelését, akkor a tesztelő kellő tapintattal tájékoztassa a fejlesztőt arról, hogy hibát talált. Nem cél ugyanis a kolléga megalázása, sokkal inkább a közösen létrehozott jól működő kód kiadása. (A dokumentáció adott helyzetben tartalmazhatja a tesztelés során keletkezett jegyzőkönyveket is, valamint a teszt dokumentációját.)
- A szoftver kiadása (release). Amikor a programunk egy adott érettségi szintre jutott, (és esetleg a megrendelőnk szeretne látni egy működő programot vagy programrészletet) akkor érkezünk el a release-ig. Fontos, hogy ez nem feltétlen jelenti a fejlesztés végét, inkább csak egy mérföldkő azon belül. Ekkor kapunk egy egyértelmű visszacsatolást, hogy a jó úton járunk-e, és hogy képesek vagyunk-e tartani az időzítési követelményeket.
A fenti négy pont addig ismétlődik (néha a lépések sorrendje felcserélődhet vagy ki is maradhat egy-egy lépés), amíg el nem jutunk a fejlesztés végére, és a munkát elvégzettnek nyilvánítjuk.
Ezután sem ülhetünk viszont karba tett kézzel, mivel még egy nagyon fontos fázis hátra van:
Karbantartás és működtetés: A használat során felmerülő hibák kijavítása, esetleges további fejlesztések hozzáadása a termékhez. Ez idő alatt még nyomon követjük a szoftver működését, visszajelzések alapján még módosítunk a terméken, esetleg segítséget nyújtunk a telepítésben és a működtetésben. Ez az időszak szintén a tervezés fázisában meghatározottak szerint történik, ide értve a segítségnyújtás mértékét és a működtetési/garanciális időszak hosszát is.