Az entitás–vezérlő–határ (Entity–Control–Boundary, rövidítve ECB), más néven entitás–határ–vezérlő (Entity–Boundary–Control, EBC) vagy határ–vezérlő–entitás (Boundary–Control–Entity, BCE), egy olyan architekturális minta, amelyet használatieset-vezérelt objektumorientált programozásban alkalmaznak. Ez a minta a magas szintű objektumorientált forráskódot alkotó osztályokat a használati esetek megvalósításában betöltött felelősségeik szerint strukturálja.

Eredet és fejlődés Az entitás–vezérlő–határ megközelítés Ivar Jacobson 1992-ben publikált, használatieset-vezérelt objektumorientált szoftvermérnöki (OOSE) módszeréből ered. Eredetileg entitás–interfész–vezérlő (Entity–Interface–Control, EIC) néven ismerték, de hamarosan az „interfész” kifejezést „határ”-ra cserélték, hogy elkerüljék az objektumorientált programozási nyelvek terminológiájával való esetleges összetévesztést.

A minta továbbfejlődött az Egységes Folyamat (Unified Process) keretében, amely támogatja az ECB használatát az elemzési és tervezési tevékenységek során, UML sztereotípusok alkalmazásával. Az agilis modellezés és az ICONIX folyamat továbbfejlesztette az ECB architekturális mintát robusztussági diagramokkal.

Továbbfejlesztve az Egységes Folyamatban történik, amely az ECB használatát támogatja az elemzési és tervezési tevékenységekben az UML sztereotípiák támogatásával. Az ECB architektúramintájára robusztussági diagramokkal kidolgozott agilis modellezés és az ICONIX folyamat .

Alapelv Az ECB minta az osztályok felelősségeit a használati esetek megvalósításában betöltött szerepük szerint szervezi:

Entitás: Hosszú élettartamú információkat képvisel, amelyek relevánsak az érintettek számára (általában tartós, domain objektumokból származik). Határ: Az interakciókat kapszulázza a külső szereplőkkel (felhasználók vagy külső rendszerek). Vezérlő: Biztosítja a használati eset végrehajtásához szükséges feldolgozást és üzleti logikát, valamint koordinálja és vezérli a használati esetben részt vevő egyéb objektumokat.

A megfelelő osztályokat ezután szolgáltatáscsomagokba csoportosítják, amelyek kapcsolódó osztályok oszthatatlan halmazai, és szoftverszállítási egységként használhatók.

Az ECB osztályokat először a használati esetek elemzésekor azonosítják:

Minden használati esetet egy vezérlő osztály képvisel. Minden használati eset és szereplő közötti különböző kapcsolatot egy határ osztály képvisel. Az entitások a használati eset narratívájából származnak.

Az osztályokat ezután finomítják és újrastrukturálják vagy átszervezik a tervezés igényei szerint, például:

Különböző használati esetek vezérlőiben közös viselkedések kiszervezése. Minden emberi szereplő és külső rendszer számára egy központi határ osztály azonosítása, amely konzisztens interfészt biztosít a külvilág felé.

Az ECB minta feltételezi, hogy az osztályok felelősségei tükröződnek a különböző osztálykategóriák közötti kapcsolatokban és interakciókban, hogy biztosítsák a tervezés robusztusságát.

Robusztussági diagram A robusztussági diagramok lehetővé teszik az entitások, vezérlők, határok és szereplők közötti kapcsolatok vizuális ábrázolását. Jacobson korai munkájában bevezetett grafikus sztereotípusokat használják: Képviselet Kapcsolat Szerep Szimbólum Színész Határ Ellenőrzés Entitás Színészkeretnélküli|100x100px Igen Igen Nem Nem Határkeretnélküli|88x88px Igen Részben/egészben Igen Nem Ellenőrzéskeretnélküli|99x99px Nem Igen Igen Igen Entitáskeretnélküli|103x103px Nem Nem Igen Igen A következő robusztussági korlátozások érvényesek:

A szereplők csak a határokat ismerhetik és kommunikálhatnak velük. A határok csak a szereplőkkel és a vezérlőkkel kommunikálhatnak. A kontrollok ismerhetik és kommunikálhatnak a határokkal és entitásokkal, és szükség esetén más kontrollokkal is. Az entitások csak más entitásokról tudnak, de a kontrollokkal is kommunikálhatnak;

Elvileg az entitásoknak nem szabad ismerniük a határokat és a vezérlőket. A gyakorlatban azonban egyes változatok lehetővé teszik, hogy az entitások, határok és vezérlők megfigyelőként feliratkozzanak egy entitásra.

Hasonlóképpen, a határ osztályok közötti ismeret korlátozása csak a legmagasabb szinten érvényes, és nem vonatkozik azokra az osztályokra, amelyek együttműködnek ugyanazon határ megvalósításában.

Kapcsolat más architekturális mintákkal Az ECB és a model–view–controller (MVC) között van némi hasonlóság: az entitások a modellhez tartoznak, a nézetek pedig a határokhoz. Azonban az ECB vezérlő szerepe nagyon különbözik az MVC vezérlőtől, mivel az ECB vezérlő a használati eset üzleti logikáját is kapszulázza, míg az MVC vezérlő a felhasználói bemenet feldolgozásáért felelős, ami az ECB-ben a határ felelőssége lenne. Az ECB vezérlő növeli a felelősségek szétválasztását az architektúrában azáltal, hogy kapszulázza azokat az üzleti logikákat, amelyek nem kapcsolódnak közvetlenül egy entitáshoz.

Az ECB használható a hexagonális architektúrával együtt, amikor a határok képezik a külső adapter réteget.

Az ECB kompatibilis a tiszta architektúrával (clean architecture), amely az ECB elveit más architekturális tervezési paradigmákkal ötvözi. A tiszta architektúra az entitásokat helyezi a középpontba, és körülveszi őket egy használati eset gyűrűvel (azaz ECB vezérlővel) és egy átjárókat és prezentereket tartalmazó gyűrűvel (azaz ECB határokkal). Azonban a tiszta architektúra egyirányú függőséget igényel kívülről befelé, ami megköveteli az ECB vezérlők felosztását használati eset logikára és objektumkoordinációra.

Lásd még

Építészeti minták Használati eset Egységes folyamat Objektumorientált elemzés és tervezés

Kategória:Objektumorientált programozás Kategória:Architekturális minták