A szoftver architektúra nem egy egzakt fogalom. Ebből adódóan nem egyetlenegy definícióval rendelkezik. Számos ember különbözőféleképpen definiálta az architektúra fogalmát szoftverek esetén. Szerencsére azonban a definíciók között van átfedés. A könyv ezen részében az én sajátos definíciómat ismertetem, ami remélhetőleg közel áll a valósághoz.
Amikor egy szoftver fejlesztésébe fogunk, akkor előbb-utóbb kénytelenek leszünk döntéseket hozni a megvalósítását illetően. Ezen döntések közül néhány döntés kulcsfontosságú, vagy nehezen megváltoztatható. Ilyen döntés lehet például az, hogy MVC1 vagy MVVM2 tervezési mintát kövessen a felhasználói felület megvalósításban.
Ezen döntések sorozata alkotja a szoftver architektúráját. A szoftver architektúra jellemzője, hogy megváltoztatása komoly időbéli költségekkel jár. Egy másik aspektusból3 az architektúra a szoftverünk felépítése, avagy a főbb komponensek kapcsolata és a köztük lévő interakciók sokasága. A két definíció nem vagy-vagy kapcsolatban van, hanem egymást támogatják. A szoftver jelenlegi struktúrája mellett ugyanolyan fontosak a létrejöttéhez vezető okok is.
A szoftver architektúra feladata a szoftver minőségi követelményeinek a definiálása is. Ilyen minőségi követelmény lehet a teljesség igénye nélkül:
- A bővíthetőség
- A karbantarthatóság
- A kód megérthetősége
- A biztonság
- Az erőforrás igények, a memória és a sebesség
Fontos felismerni, hogy tökéletes architektúra nem létezik, csupán megfelelő. Ennek okai abban keresendőek, hogy az idő előrehaladtával a "tökéletesnek" gondolt kiinduló architektúránk erodálódni, módosulni fog a követelmények, a technológia és a csapat változása miatt.
A szoftverek architektúrája és a szoftvert fejlesztő csapatok felépítése között általában korreláció figyelhető meg4. Egy gyakorlati példával élve: ha 4 ember feladata, hogy írjanak egy fordító programot, akkor a fordító architektúrája nagy valószínűséggel 4db egymáshoz kapcsolódó fő alkotóelemből fog állni.
-
A modell-nézet-vezérlő (MNV) (angolul model-view-controller) a szoftvertervezésben használatos programtervezési minta. Összetett, sok adatot a felhasználó elé táró számítógépes alkalmazásokban gyakori fejlesztői kívánalom az adathoz (modell) és a felhasználói felülethez (nézet) tartozó dolgok szétválasztása, hogy a felhasználói felület ne befolyásolja az adatkezelést, és az adatok átszervezhetők legyenek a felhasználói felület változtatása nélkül. A modell-nézet-vezérlő ezt úgy éri el, hogy elkülöníti az adatok elérését és az üzleti logikát az adatok megjelenítésétől és a felhasználói interakciótól egy közbülső összetevő, a vezérlő bevezetésével. – https://hu.wikipedia.org/wiki/Modell-n%C3%A9zet-vez%C3%A9rl%C5%↩
-
A modell-nézet-nézetmodell minta (angolul model-view-viewmodel) egy architekturális minta. A minta leválasztja a grafikus felhasználói felületet és az üzleti logikát (adatmodell). A nézetmodell értékkonverter, ez a felelős az adatok átalakításáért a könnyű kezelhetőséghez és reprezentálásához. A nézetmodell inkább modell, mint nézet, de az hozza létre a megjelenítés logikáját is. Megvalósíthatja a közvetítő programtervezési mintát is, megszervezve a hozzáférést a nézet használati esetei számára. – https://hu.wikipedia.org/wiki/Modell-n%C3%A9zet-n%C3%A9zetmodell↩
-
Tekintet, kilátás, szemlélet, nézőpont.↩
-
A korreláció jelzi két tetszőleges érték közötti lineáris kapcsolat nagyságát és irányát (avagy ezek egymáshoz való viszonyát). – https://hu.wikipedia.org/wiki/Korrel%C3%A1ci%C3%B3↩