Bevezetés: A szoftverfejlesztési életciklusban a tervezési fázis célja, hogy megoldást találjon az SRS (Software Requirement Specification) dokumentumban megadott problémára. A tervezési fázis kimenete a Sofware Design Document (SDD).
A tervezés alapvetően egy két részből álló iteratív folyamat. Az első rész a koncepcionális tervezés, amely megmondja az ügyfélnek, hogy mit fog tenni a rendszer. A második rész a műszaki tervezés, amely lehetővé teszi a rendszerépítők számára, hogy megértsék az ügyfél problémájának megoldásához szükséges tényleges hardvert és szoftvert.
A rendszer koncepcionális tervezése:
- Egyszerű nyelven, azaz az ügyfél számára érthető nyelven íródott.
- A rendszer jellemzőinek részletes magyarázata.
- A rendszer működését írja le.
- Ez független a megvalósítástól.
- Kapcsolódik a követelménydokumentummal.
A rendszer műszaki tervezése:
- Hardverkomponens és kialakítása.
- Szoftverkomponens funkcionalitása és hierarchiája.
- Szoftverarchitektúra
- Hálózati architektúra
- Adatszerkezet és adatáramlás.
- A rendszer I/O komponense.
- Mutat interfész.
Modularizáció: A modularizálás egy szoftverrendszer több független modulra való felosztása, ahol az egyes modulok egymástól függetlenül működnek. A modularizációnak számos előnye van a szoftverfejlesztésben. Ezek közül néhányat az alábbiakban ismertetünk:
- Egyszerű a rendszer megértése.
- A rendszer karbantartása egyszerű.
- Egy modul többször is felhasználható az igényeiknek megfelelően. Nem kell újra és újra megírni.
Kapcsolás: A csatolás a modulok közötti kölcsönös függőség mértékét jelöli. Egy jó szoftverben alacsony a csatolás.
A csatolás típusai:
- Adatkapcsolás: Ha a modulok közötti függőség azon alapul, hogy csak adatok átadásával kommunikálnak, akkor a modulokat adatkapcsoltnak mondjuk. Adatkapcsolás esetén a komponensek egymástól függetlenek, és adatokon keresztül kommunikálnak egymással. A modulok kommunikációja nem tartalmaz tramp adatokat. Példa: Ügyfélszámlázó rendszer.
- Bélyegcsatolás A bélyegcsatolásban a teljes adatstruktúra átadásra kerül egyik modulból a másik modulba. Ezért tramp adatokat tartalmaz. Erre hatékonysági tényezők miatt lehet szükség – ezt a döntést az éleslátó tervező hozta, nem egy lusta programozó.
- Vezérlőcsatolás: Ha a modulok vezérlési információk átadásával kommunikálnak, akkor azt mondjuk, hogy vezérléssel összekapcsoltak. Ez lehet rossz, ha a paraméterek teljesen eltérő viselkedést jeleznek, és lehet jó, ha a paraméterek lehetővé teszik a funkcionalitás faktorálását és újrafelhasználását. Példa- sort függvény, amely összehasonlító függvényt vesz argumentumként.
- Külső csatolás: Külső csatolás esetén a modulok más, a fejlesztendő szoftveren vagy egy adott hardvertípuson kívüli moduloktól függenek. Pl. protokoll, külső fájl, eszközformátum stb.
- Közös csatolás: A modulok közös adatokkal rendelkeznek, például globális adatstruktúrákkal.A globális adatokban bekövetkező változások az összes olyan modulra való visszavezetést jelentik, amelyek hozzáférnek ezekhez az adatokhoz, hogy kiértékeljék a változás hatását. Így olyan hátrányai vannak, mint a modulok újrafelhasználásának nehézségei, az adathozzáférések ellenőrzésének csökkent képessége és a karbantarthatóság csökkenése.
- Tartalmi csatolás: A tartalmi csatolásban az egyik modul módosíthatja egy másik modul adatait, vagy a vezérlésáramlás az egyik modulból a másik modulba kerül. Ez a csatolás legrosszabb formája, és kerülendő.
Kohézió: A kohézió annak mértéke, hogy a modul elemei funkcionálisan milyen mértékben kapcsolódnak egymáshoz. Ez az a mérték, amely szerint az egyetlen feladat elvégzésére irányuló összes elemet a komponens tartalmazza. Alapvetően a kohézió az a belső ragasztó, amely összetartja a modult. A jó szoftvertervezés magas kohézióval rendelkezik.
A kohézió típusai:
- Funkcionális kohézió: Egyetlen számítás minden lényeges elemét tartalmazza a komponens. A funkcionális kohézió elvégzi a feladatot és a funkciókat. Ez egy ideális helyzet.
- Szekvenciális kohézió: Egy elem kimeneti valamilyen adatot, amely más elem bemenetévé válik, azaz adatáramlás a részek között. A funkcionális programozási nyelvekben természetes módon fordul elő.
- Kommunikációs kohézió: Két elem ugyanazzal a bemeneti adattal operál, vagy ugyanahhoz a kimeneti adathoz járul hozzá. Példa – rekord frissítése az adatbázisban és elküldése a nyomtatónak.
- Procedurális kohézió: Az eljárási kohézió elemei biztosítják a végrehajtás sorrendjét. A műveletek még mindig gyengén kapcsolódnak egymáshoz, és nem valószínű, hogy újrafelhasználhatók. Pl. a hallgatói átlagérték kiszámítása, hallgatói rekord nyomtatása, összesített átlagérték kiszámítása, összesített átlagérték nyomtatása.
- Időbeli kohézió: Az elemek az időzítésük által kapcsolódnak egymáshoz. Az időbeli kohézióval összekapcsolt modul minden feladatát ugyanabban az időintervallumban kell végrehajtani. Ez a kohézió tartalmazza a rendszer összes részének inicializálására szolgáló kódot. Rengeteg különböző tevékenység történik, mindegyik init időben.
- Logikai kohézió: Az elemek logikailag és nem funkcionálisan kapcsolódnak egymáshoz. Pl- Egy komponens bemeneteket olvas be szalagról, lemezről és hálózatról. Ezeknek a funkcióknak az összes kódja ugyanabban a komponensben van. A műveletek kapcsolódnak, de a funkciók jelentősen különböznek.
- Véletlenszerű kohézió: Az elemek nem kapcsolódnak egymáshoz(függetlenek). Az elemeknek a forráskódban való elhelyezkedésen kívül nincs más fogalmi kapcsolatuk. Ez véletlenszerű és a kohézió legrosszabb formája. Pl. a következő sor kiírása és egy karakterlánc karaktereinek megfordítása egyetlen komponensben.
Attention reader! Ne hagyja most abba a tanulást! Szerezze meg az összes fontos CS elmélet fogalmát az SDE interjúkhoz a CS elmélet tanfolyammal diákbarát áron, és váljon ipari készségűvé.