Skip to content

A terv (architecture) és az implementáció nem fedik egymást

Miért?
Azok a tervezési iratok, amelyek a megvalósítással nincsenek összhangban, többet ártanak, mint használnak. Ezért nem a tervezést kell feladni, hanem az inkozisztencia esélyét kell minimalizálni.

A szoftverfejlesztés egyik legalapvetőbb problémáját jelentik az olyan implementációk, melyeken nem lehet látni, hogy előre meg lettek tervezve. Ilyenkor tervezési diagrammok lógnak a falon, melyeknek már alig van köze a kód valóságához. Ennek az oka a legalapvetőbb DRY elv megsértése: A terv és az implementáció ismétlődései ugyanannak a dolognak, mégpedig a szoftver struktúrájának. Mivel az implementáció a tervezést követi, és a munka dandárját jelenti, ezért mindkettő gyorsan kilép az összhangból, amennyiben a struktúra implementáció alatti változásait nem vezetjük be újra és újra a tervbe. A tervezési diagramoknak az implementáció kezdete után nem sokkal már nincsen semmi értékük.

Hogyan lehet javítani a szituáción? Fel kellene hagyni a tervezéssel, ha végülis az implementációban él a „struktúra valósága”? Nem, biztosan nem. A tervezésre szükség van. Tervezés nélkül nincsen elképzelésünk a célról. De a tervnek és az implementációnak meg kell felelnie a DRY elvnek. Ezért a tervezésnek és az implementációnak, amennyire csak lehet, nem szabad egymást fednie. Az interfészüknek vékonynak kell lennie. Amikor ez igaz, akkor már nem egymás ismétlődései, hanem különböző dolgokat írnak le. Ez azt jelenti, hogy: A terv/architektúra nem törődik az implementációval és az implementáció nem törődik az architektúrával.

És hol van a választóvonal? Az úgynevezett komponenseknél (lásd lent praktikákat). Az architekt nem törődik a komponensek belső felépítésével. Az architekt számára ezek fekete dobozok, melyek osztálystruktúrája nem architektúra-releváns. Fordítva viszont a komponens implementálójának az architektúra irreleváns. Amit neki implementálnia kell, az a komponensének importált és exportált szerződéseiből derül ki számára. Nem kell ennél nagyobb összefüggéseket ismernie.

Az architektúra feladata ezáltal az is, hogy a szoftvert komponensekre bontsa, azok függőségeit meghatározza és a szerződések teljesítéseit leírja. Ezeket a struktúrákat aztán csakis az architektek fogják gondozni. És az implementáció feladata az architektúra által meghatározott komponensek megvalósítása. Hogy hogyan teszik ezt, az nem architektúra-releváns. A komponensek belső struktúrája az architektúra számára láthatatlan.

Published inElvek