Egy adott problémának számítógép segítségével való megoldása egy hosszú és bonyolult munkafolyamat végeredménye. A program elkészítésének munkafolyamatát a felmerülő problémától a késztermékig programfejlesztésnek nevezzük. Nagy feladat esetén, amikor több programból álló rendszerről van szó, rendszerfejlesztésről beszélünk. A szoftver fejlesztése alapvetően négy részből áll: elemzés, tervezés, kódolás és tesztelés (l. az ábrát). Az első kettő a probléma megoldását célozza, míg az utóbbi kettő a megoldást implementálja (megvalósítja), azaz lefordítja a számítógép nyelvére.

AZ ELEMZÉS
Az elemzés során felmérjük a helyzetet: mire van szükség, mik a
lehetőségek. A probléma megoldásának ebben a szakaszában a szóban
forgó problémát minden szempontból egyértelműen definiálni kell, ezzel a
problémamegoldás többi fázisát időben lényegesen lecsökkenthetjük és
hibamentesebbé tehetjük. Ehhez az szükséges, hogy a feladat
megfogalmazása legyen teljes, érthető, egyértelmű, pontos, tömör,
szemléletes, előrelátó, jól felépített és tagolt.
A fejlesztés e szakaszában tisztázni kell többek között, hogy milyen
adatokat vár a program, és milyen adatokat kell annak produkálnia. A
beviteli (input) adatokkal kapcsolatban a következő kérdések merülhetnek
fel:
A TERVEZÉS
A programtervezés feladata, hogy az analízis során összegyűjtött
információkat és adatokat alapul véve logikailag véglegesen kialakítsa az
adatstruktúrákat és az adatokon manipuláló algoritmusokat. A program
tervezése komoly, kreatív tevékenység, mely nagy szakértelmet igényel.
Hogy milyen tervezési módszert választ az ember, az a következő dolgoktól
függhet:
A programtervezés alapja a részekre bontás. A feladatot bonyolultságától
függően részekre kell szedni. A törekvés az hogy a
részek minél függetlenebbek legyenek egymástól, hiszen így a program
sokkal áttekinthetőbb, a hibakeresés, karbantartás, továbbfejlesztés sokkal
könnyebb, egyértelműbb.
A programtervezési módszerek állandóan változnak. Hosszú ideig a
moduláris programozás volt a jellemző. Lényege, hogy a programot felülről
lefelé funkcionálisan egyre kisebb lépésekre (modulokra, eljárásokra)
bontjuk. A moduláris programozást a Jackson-féle programtervezési
módszer váltotta fel, amely szintén felülről lefelé bontja a programot, de itt
a programszerkezet felépítését az adatok szerkezete határozza meg.
Napjainkban az objektum-orientált programtervezés hódít, segítségével
kisebb energia-befektetéssel sokkal biztonságosabban tudjuk megtervezni a
programjainkat. A módszer lényege az, hogy az egyes objektumok
adataikkal és funkcióikkal együtt a program többi részétől függetlenek, és
teljes mértékben felelősek a rájuk bízott feladatért.
A tervezési szakasz dokumentációja a programterv. A program
megtervezésével a probléma lényegileg meg van oldva, már csak a kódolás
van hátra a megvalósításhoz.
A KÓDOLÁS
Ha a terv elkészült, akkor jöhet annak implementálása (kivitelezése). Az
implementáció első szakasza a programterv kódolása egy adott
programnyelven, vagyis a forrásprogram elkészítése. Ez a szakasz eléggé
mechanikus, hiszen az előzőekben a feladat logikai megoldása elkészült. A
programnyelv, amelyen kódolunk, lehet bármilyen (mi a Turbo Pascal-t
fogjuk használni). A kódolási szakasz dokumentációja a forrásnyelvi lista.
Egy forrásnyelvi lista akkor jó, ha pontosan a programterv alapján készül,
áttekinthető, olvasható, tömör és egyértelmű megjegyzésekkel van
megtűzdelve.
A forrásprogram begépelésével természetesen még nem vagyunk készen,
hiszen bármilyen gondosan is terveztünk és bármilyen jól gépelünk, az még
tele lehet hibával. Szintaktikai hibának nevezzük azt a hibát, amelyet a
fordítóprogram nem tud értelmezni. Ennek oka lehet gépelési hiba, vagy az,
hogy nem ismerjük eléggé a programnyelvet. A szintaktikai hibák kiszűrése
után a futtatható program tesztelése következik.
A TESZTELÉS
Próbafuttatáskor még sok hibát észlelünk, ez természetes. Azonban minél
alaposabbak voltak az előző fázisok, annál nagyobb a valószínűsége, hogy a
program úgy fog működni, ahogy elképzeltük. A program futásakor még
sokféle hiba derülhet ki. A program leállhat például futási hibával, de
kiderülhet az is, hogy a program rosszul működik. A kisebbik baj, ha a hiba
forrása például egy-egy utasítás helytelen használata. A kellemetlenebb a
logikai, az ún. szemantikai hiba. Ilyen esetben a probléma mélyen
gyökerezhet, még az is elképzelhető, hogy a hibát a probléma elemzési
fázisától kezdve hurcoljuk. A tesztelés folyamán különböző próbaadatokkal
futtatjuk a programot, amelyeket úgy kell összeállítani, hogy minden
lehetséges értéket felvegyenek.
A program tesztelésekor a következőkre kell figyelni:
DOKUMENTÁLÁS
Minden fázisnak megvan a maga „terméke”, dokumentációja. A program
fejlesztésének befejeztével a teljes dokumentációt (vagyis mind a négy fázis
dokumentációját) meg kell őrizni. Csak a teljes dokumentáció birtokában
lehet később a programon változtatásokat eszközölni. A program
fejlesztését végigkísérő dokumentációk összességét fejlesztői
dokumentációnak nevezzük.
A fejlesztői dokumentáció részei: