2018. február 5., hétfő

Analízis, tervezés, kódolás. Szintaktika és szemantika

Egy program elkészítését a felmerülő problémától a késztermékig programfejlesztésnek nevezzük. Mikor egy nagyobb feladatot oldunk meg, ahol több programból álló rendszerrről van szó, rendszerfejlesztésről beszélünk.

A szoftver fejlesztése négy részből áll: analízis (=elemzés), tervezés, kódolás és tesztelés.

Analízis

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 ezen szakaszában tisztázni kell többek között, hogy milyen adatokat vár a program, és milyen adatokat kell annak produkálnia. Az input adatokkal kapcsolatban a következő kérdések merülhetnek fel:
  • Mik az input adatok?
  • Milyen a beviteli formájuk?
  • Milyen kapcsolatok vannak a beviteli adatok között?
Az output adatoknál a következőket kell megállapítani:
  • Milyen adatokat kell megőrizni?
  • Milyen formában kell az adatokat megőrizni?
  • Mennyi adatról van szó?
  • Hogyan tudjuk ezeket az adatokat előállítani?
Az elemzés fázisának dokumentuma kisebb feladatok esetén a feladatspecifikáció, vagyis a feladat pontos megfogalmazása. Nagyobb rendszerek esetén rendszertervet kell készíteni.

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 adatokat 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:
  • Milyen számítógépre készül a program?
  • Mekkora a megoldandó feladat?
  • Milyen módszerek állnak rendelkezésre?
  • Mik a tervező lehetőségei szoftverekben, felkészültségben?
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. Í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.

Kódolás

Ha a terv elkészült, akkor jön a terv megvalósítása. Ez programozásnál a programkód megírásást jelenti valamilyen programnyelven. Ha az előzőekben a feladat logikai megoldása jól elkészült, akkor ez a rész eléggé mechanikus. A programnyelv, amelyen kódolunk, lehet bármilyen. 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.

http://www.umszki.hu/~zsigi/jegyzet.html
Természetesen egy magas szintű nyelven írt program írása közben is véthetünk hibákat. Ez lehet:
  • szintaktikai hiba (alaki): A program nem felel meg az adott nyelv szabályainak. Pl. elírás, elfelejtettünk egy zárójelet, pontosvesszőt, stb. Az ilyen hibákat viszonylag könnyű megtalálni.
  • szemantikai hiba (tartalmi): A program lefordul, el is indul, de nem azt csinálja, amit kell, esetleg menet közben le is áll a hiba miatt. Az ilyen hibák sok gondot okoznak, s poloska módjára bújnak meg a programban, ezért ezeket a hibákat a poloska angol megfelelője után bug-nak nevezik. Az ilyen hibák megtalálása és kiírtása (debug-golás) sokkal nehezebb feladat, erre külön segédprogramok (debugger-ek) állnak rendelkezésre.

Nincsenek megjegyzések:

Megjegyzés küldése