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%91↩
-
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↩