Egy csomag ( eng. package ) az UML modellezési nyelvben a fő csoportosítási entitás, amely az alkalmazott UML modell keretein belül szervezi meg a konkrét tervezési döntéseket. Az UML csomagot arra tervezték, hogy nagyszámú strukturális, viselkedési és egyéb entitást egyetlen egészbe csoportosítson; stilizált mappaként jelenik meg könyvjelzővel, amelynek saját neve is lehet [1] [2]
Az UML-csomagot egy nagy téglalap alakú kép képviseli, a bal felső sarokban egy füllel; a téglalap belsejében elhelyezheti ennek a csomagnak a tartalmát [3] . A csomagok közötti függőséget a csomagdiagram segítségével fejezzük ki , amely a modell kezelésével kapcsolatos információkat hordoz, és tulajdonképpen egyfajta osztálydiagram [4] .
Az UML csomagok bevezetése lehetővé teszi a készülő projekt különböző egyedi elemeinek skálázásra alkalmas blokkokba való szétosztását, amelyek később valamilyen független egységként kezelhetők. A csomagok rendszerint a legfelső szintű modellelemek tárolására szolgálnak: osztályok és kapcsolataik, használati eset gráfok , állapotgépek stb. [5] A csomagelemek kívülről eltérő láthatósággal rendelkezhetnek, azaz bizonyos csomagfunkciók is használhatók. a külső felhasználó szemszögéből kapszulázva . Ebből a szempontból egy csomag külön névtérként funkcionál , amelynek tagjai lehetnek nyilvánosak vagy privátak [6] . Egy jól strukturált csomagnak szemantikailag és funkcionálisan kapcsolódó elemeket kell kombinálnia, amelyek hajlamosak együtt fejlődni a fejlesztés során [2] .
Az UML specifikáció nem ír elő szigorú korlátozásokat a modell csomagolására vonatkozóan, számos módja van a funkcionalitás, modelltípus vagy bármely más attribútum szerinti rendszerezésnek. Egyes UML-csomagok hierarchikus egymásba ágyazása is megengedett [7] [8] , míg a beágyazott csomag teljes hozzáféréssel rendelkezik tárolója tartalmához, és annak részének tekintendő [6] . Beágyazás használatakor a modellnek rendelkeznie kell egy kezdeti gyökércsomaggal [7] , általában csak egy [9] . A szöveges jelölések egyszerűsítése érdekében lehetőség van látható elemek importálásra is egyik csomagból a másikba, és ezekkel kiegészíteni a helyi névtereket, azonban az importált elem azon a néven válik láthatóvá, amelyet az importálás során hozzárendeltek [10] .
A csomag nevének meg kell különböztetnie a többi csomagtól, általában a latin ábécé betűit , számokat és néhány írásjelet tartalmazó szöveges karakterláncként jelenik meg. A specifikátor a csomagok hierarchikus egymásba ágyazásának elválasztására szolgál ::. Egy konténercsomagon belül a kiválasztott alcsomagnévnek egyedinek kell lennie [11] .
Egységes modellezési nyelv | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
| |||||||||||
|