A szoftvertervezés folyamata kezdőknek

 

Fejlesztőként gyakran felmerülhet benned a kérdés, hogy hogyan érdemes belekezdeni a szoftvertervezésbe.

 

Legyen szó teljes projektről, vagy egy nagyobb megvalósítandó részfeladatról, front-endről vagy back-endről, bizonyára tapasztaltad már, hogy:

 

  1. Nem tudod hogyan kezdj hozzá.
  2. Menet közben rájössz, hogy ezt lehetett volna egyszerűbben is.
  3. Vagy éppen a projekt közepén rájössz, hogy máshogy kellett volna és ezért kezdheted az egészet elölről.

 

Az alapvető probléma, amivel a projekt elején küzdünk az az, hogy egyszerre kell látnunk a teljes képet és a részleteket is, viszont egészen addig nem láthatjuk a teljes képet, amíg nem dolgoztuk ki a részleteket.

 

A problémára a megoldás, ha a projekt elejétől kezdve tudatosan próbálod kikristályosítani a rendszeredre jellemző architekturális elemeket.

 

Nincs más dolgod, mint először horizontálisan megvalósítani pár követelményt.

Horizontális alatt azt értjük, hogy az adat belépésétől a végállapotba való eljutásáig minden lépésre sor kerül.

 

Nézzünk egy tipikus back-endes példát:

Tegyük fel hogy azt kérte a főnök, hogy amikor beérkezik a HTTP kérés, akkor:

  1. Authorizáljuk azt,
  2. Ezután parsoljuk ki az adatot a kérésből,
  3. Validáljuk, hogy az adattal minden rendben van-e
  4. Majd tároljuk el az adatbázisba

 

 

Ezt első nekifutásra érdemes úgy lekódolnod, hogy a részleteket nem dolgozod ki, csak nagyjából működjön. Ebben a fázisban az a legjobb jelmondat, hogy “egyelőre jó lesz így”.

Folytassuk azzal, hogy megvalósítunk egy másik ilyen követelményt is, ahol az történik, hogy kérés beérkezésekor,

  1. kiparsoljuk az adatot
  2. validáljuk
  3. elküldünk egy visszaigazoló emailt
  4. majd eltároljuk

Csináljunk egy harmadikat is, itt a főnök azt kérte, hogy 

  1. authorizáljuk a kérést, 
  2. parsoljuk ki belőle az adatot, 
  3. küldjünk visszaigazoló emailt, 
  4. majd eltároljuk az adatot

 

Ha készen vagy pár ilyen horizontális megvalósítással, akkor utána próbálj meg vertikálisan gondolkozni.

Vertikális alatt azt értjük, hogy sok esetet felölelő, de a feladat csak egy kis részére vonatkozó absztrakciókat keresünk.

 

 

Az absztrakciók megtalálására jó módszer, ha próbálod összepárosítani az egyes elemeket az input és output adatok fajtája alapján.

 

Ebben a példában a következő absztrakciókat találhatjuk:

  1. Validáló (ami arra összpontosít, hogy az adatot megvizsgálja, megfelelő-e vagy sem),
  2. Email küldő,
  3. Adatbázisba eltároló,
  4. Requestből kiparsoló,
  5. És authorizáló.

 

 

Ha beazonosítottál pár ilyet, akkor rendezd át a kódodat úgy, hogy a vertikális, tehát az egy feladatkör köré csoportosuló eszközök közös helyen legyenek.

Közös hely lehet például egy fájl, ahova function-ök formájában kiszervezed kódokat, de lehet akár egy mappa is sok fájllal, class deklarációkkal.

Sok esetben teljesen össze lehet vonni a funkcionalitást egyetlen függvénybe.

 

Az egyetlen fontos szabály az az, hogyha az egyik helyen változtatás történik a kódban, akkor ez a változtatás nem lehet kihatással egy másik helyen lévő kódra, ahova más feladatot elvégző kódot gyűjtöttél.

 

Ha összecsoportosítottad a kódot, akkor utána dologozd ki részletesen a belső implementációkat.

Ilyenkor érdemes bevetni 3. féltől származó könyvtárakat.

A továbbiakban ehhez hasonló módon kell váltogatnod a horizontális és a vertikális irányú gondolkozást és a részletes megvalósítást.

Ahogy építed a programot, a részletes megvalósítás már egyre könnyebb lesz, mert egyre inkább tudsz támaszkodni meglévő kódra.

 

  • A technikával azt éred el, hogy:
    1. Kialakítasz egy magasabb szintű rendszert
    2. Könnyebb lesz funkcionalitást megosztani az azonos jellegű feladatokat elvégző kódrészletek között.
    3. Nem lesznek a kódodban hirtelen kontextus váltások.
    4. Letisztult felületeid lesznek amik újrafelhasználható modulokat határolnak.
    5. Emellett kialakul a rendszeredre egy sajátos nyelvezet, az egyes rétegek által elvégzett feladatok szerint. (Pl repository réteg, validáló réteg, authorizációs réteg stb.)

Teljes videó:

 

Ajánlott cikk: Rekurzió