A programozás fázisai

Szoftverfejlesztési modellek

A számítógépes problémamegoldás (a programozás) egymástól jól elkülöníthető fázisokból épül fel, amelyek sajátos kölcsönhatásban vannak egymással; ezt a kapcsolatot fejezi ki a szoftverfejlesztési modell.

A világon többféle modell létezik, ezek közül nincs jó vagy rossz, csak adott feladathoz jobb, vagy kevésbé alkalmas.

  • Vízesés modell: a feladat lépései jól elkülönülten, egymás után mennek végbe. Ez tekinthető a többi modell alapjának. Ezt a modellt egy kicsit alaposabban is megvizsgáljuk a későbbiekben.
  • Spirál modell: a vízesés modellt egészíti ki prototípus-használat résszel valamint a lépések ismétlésével, iterációjával (és ezeken keresztül megvalósított visszacsatolással). A lényeg, hogy egy várhatóan drágább fejlesztést próbálnak ezzel a módszerrel megvalósítani, ahol a prototípus kifejlesztésével már tudják a rendszer körvonalait, árát becsülni. Ha ez elfogadható irányba halad, akkor folytatódik a prototípus fejlesztése, de ha mégsem jó, akkor a fejlesztés megszakítható.
  • V-modell: biztonságkritikus számítógéprendszerek fejlesztése esetében terjedt el, itt a vízesés modellhez képest a szoftver ellenőrzése (tesztelése) is részletesen ki van bontva, valamint az egyes fázisok közötti kapcsolatok és továbblépés is szigorúbban szabályozva van.
  • Extrém programozás: gyors fejlesztési ciklusokra (gyakorlatilag sok-sok apró vízesés modellre) osztott fejlesztés, ahol elvárják a követelmények viselkedés alapú felbontását, a tesztek előre megadását, a folyamatos integrációt és refaktorálást.
  • ... és még sok-sok más módszer, amelyeket részletesebben a Rendszerfejlesztés tárgy majd ismertet.

Vízesés modell

A vízesés modell az egyik legrégebbi fejlesztési modellek közé tartozik. A részeit egymás után, fokozatosan hajtjuk végre. Mivel az előadás során a megoldandó problémáink nem túl nagyok, és ezzel a módszertannal is tökéletesen kivitelezhetőek, ezért ennek szellemében fogjuk majd azokat bemutatni.

kep

A követelmény-specifikációban a felhasználó (megrendelő) a saját szakterülete nyelvén megfogalmazza a problémát (problémafelvetés). Ez önmagában még nem elég ahhoz, hogy az algoritmust meghatározzuk, ehhez fel kell mérni, hogy a program bemenő, illetve kimenő adatainak milyen feltételrendszert kell kielégíteniük. Ez a rész a specifikáció.

Ha adott egy (B,K) bemeneti-kimeneti feltétel pár, akkor adott algoritmust akkor fogadjuk el a probléma megoldásának, ha valamennyiszer, amikor a B feltétel teljesül a bemeneti adatokra, akkor a K feltétel is teljesül a kiszámított adatokra.

A specifikáció megadása után jön az algoritmus tervezés, amikor felülről lefelé haladó módon megadjuk a probléma megoldását. Ez azt jelenti, hogy a kiindulási P problémát P1, ..., Pn részproblémákra bontjuk, majd minden Pi problémára megadjuk annak egy Mi megoldását. Az Mi műveleteket alkalmas módon összetéve a P problémát megoldó algoritmus megoldását kapjuk.

A részproblémákat mindaddig bontjuk kisebb és kisebb részproblémákra, amíg olyan elemi szintű utasításig nem jutunk, ami az adott programozási nyelv egyszerű műveleteivel megvalósítható.

Az algoritmus meghatározásában mindaddig szabad kezünk van, amíg az a megadott specifikációnak megfelelően működik (figyelembe véve, hogy a specifikációban nem szereplő funkciókat a programnak nem kell és nem is szabad ellátnia).

A megvalósítás során az előbbi fázisban kifejlesztett algoritmusnak megadjuk egy adott programozási nyelven való leírását, azaz lekódoljuk azt. Ekkor elkészül a program. Ebben a fázisban szigorúan követjük az előző fázis leírását, maximum technikai jellegű különbségek lehetnek a megvalósításaink között.

Amennyiben az általunk megoldott probléma egy nagyobb, összetettebb probléma része, úgy a programunknak is szükségképpen illeszkednie kell egy a nagyobb probléma egyéb komponenseinek megvalósításához. Ilyen esetekben az integráció szolgálja a saját kódunk nagyobb programrendszerbe történő beillesztését, és a beillesztés során esetleg felvetődő problémák megoldását.

A következő lépésben ellenőrizni, tesztelni kell a megvalósítást. Egyfelől meg kell mutatni, hogy az valóban a kiindulási probléma megoldását adja (helyességigazolás), de azt is meg kell mutatni, hogy ezt milyen költséggel teszi meg (memória és időigény).

Nagyobb rendszerek esetében elképzelhető, hogy a programot telepíteni kell abba a környezetbe, amit a felhasználó használ. Nyilvánvaló, ez a lépés nem minden esetben szükséges.

A szoftver életciklusának (remélhetőleg) leghosszabb része ezután kezdődik. A fenntartás fázisban elkezdődik a program felhasználása és végrehajtása a megfelelő bemenő adatokra, ugyanakkor ha a használat során hiba jelentkezik, azt orvosolni kell. Illetve ekkor szokott fény derülni olyan hiányosságokra, amelyek már a specifikáció megadása során kimaradtak, ezeket is pótolni kell.

Nagyon fontos, hogy valamennyi fázisban a folyamataink és az "eredmények" dokumentálva legyenek.


Utolsó frissítés: 2020-10-13 06:15:04