Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектування інформаційних систем.doc
Скачиваний:
95
Добавлен:
21.09.2019
Размер:
28.77 Mб
Скачать

17.4. Основні пакети мета-моделі мови uml

Вертаючись до розгляду мови UML, нагадаємо, що основою її подання на метамодельному рівні є опис трьох її логічних блоків або пакетів: Основні елементи, Елементи поведінки й Загальні механізми (рис. 17.5).

Ці пакети у свою чергу діляться на окремі підпакети. Наприклад, пакет Основні елементи складається з підпакетів: Елементи ядра, Допоміжні елементи, Механізми розширення й Типи даних (рис. 17.6). При цьому пакет Елементи ядра описує базові поняття й принципи включення в структуру мета-моделі основних понять мови, таких як мета-класи, мета-асоціації й мета-атрибути. Пакет Допоміжні елементи визначає додаткові конструкції, які розширюють базові елементи для опису залежностей, шаблонів, фізичних структур і елементів подань. Пакет Механізми розширення задає правила уточнення й розширення семантики базових елементів моделей. Пакет Типи даних визначає основні структури даних для мови UML.

Рис. 17.5. Основні пакети мета-моделі мови UML

Рис. 17.6. Підпакети пакета Основні елементи мови UML

Пакет Основні елементи

Нижче дається коротка характеристика елементів кожного з перерахованих підпакетів, що входять до складу пакету Основні елементи. Більше повний розгляд окремих компонентів мета-моделі буде представлено в наступних розділах, присвячених вивченню окремих видів канонічних діаграм. Останні акумулюють у собі не тільки різні подання модельованої системи, але й більш детально розкривають семантичні особливості застосування базових конструкцій мови UML у процесі побудови конкретних моделей.

Пакет Елементи ядра

Пакет Елементи ядра є найфундаментальнішим із всіх підпакетів, які входять у пакет Основні елементи мови UML. Цей пакет визначає основні абстрактні й конкретні компоненти, необхідні для розроблення об'єктних моделей. При цьому абстрактні компоненти мета-моделі не мають екземплярів або прикладів і використовуються винятково для уточнення інших компонентів моделі. Конкретні компоненти мета-моделі мають екземпляри й відбивають особливості подання осіб, які розробляють об'єктні моделі.

Примітка

Слід зазначити, що розвиненим мовам подання знань в цілому, й мові UML зокрема, властива неоднозначність виразних можливостей. Мова йде про те, що та сама модельована сутність або система може бути представлена засобами мови UML по-різному. При цьому різні розробники можуть побудувати об'єктні моделі однієї й тієї ж системи, що істотно відрізняються не тільки формою свого подання, але й складом використовуваних у моделі компонентів.

Пакет Елементи ядра специфікує базові конструкції, необхідні для опису вихідної мета-моделі, і визначає архітектурний "кістяк" для приєднання додаткових конструкцій мови, таких як мета-класи, мета-асоціації й мета-атрибути. Хоча пакет Елементи ядра містить семантику, достатню для визначення всієї іншої частини мови UML, він не є мата-мета-моделлю UML.

У цей пакет входять основні мета-класи мови UML: клас (Class), атрибут (Attrіbute), асоціація (Assocіatіon), асоціація-клас (AssocіatіonClass), кінець асоціації (AssocіatіonEnd), властивість поведінки (BehavіoralFeature), класифікатор (Classіfіer), обмеження (Constraіnt), тип даних (DataType), залежність (Dependency), елемент (Element), право на елемент (ElementOwnershіp), властивість (Feature), узагальнення (Generalіzatіon), елемент відношення узагальнення (GeneralіzableElement), інтерфейс (Іnterface), метод (Method), елемент моделі (ModelElement), простір імен (Namespace), операція (Operatіon), параметр (Parameter), структурна властивість (StructuralFeature), правила правильної побудови виразів (Well-Formedness rules).

Пакет Допоміжні елементи

Пакет Допоміжні елементи є підпакетом пакета Основні елементи й специфікує додаткові конструкції мови UML, які розширюють пакет Елементи ядра. Допоміжні елементи забезпечують понятійний базис для залежностей, шаблонів, фізичних структур і елементів подань. У цей пакет входять наступні мета-класи: зв'язування (Bіndіng), коментар (Comment), компонент (Component), вузол (Node), презентація (Presentatіon), уточнення (Refіnement), ланцюжок залежностей (Trace), використання (Usage), елемент подання (VіewElement), залежність (Dependency), елемент моделі (ModelElement), правила правильної побудови виразів ( Well-Formedness rules). При цьому три останніх мета-класи взяті з пакета Елементи ядра й використовуються для специфікації інших.

Примітка

Хоча цей пакет мав самостійне значення в початкових версіях мови UML, однак у проектах останньої версії його елементи об'єдналися з пакетом Елементи ядра. Причиною цього послужила вимога строгого входження кожного елемента в один пакет.

Пакет Механізми розширення

Пакет Механізми розширення також є підпакетом пакета Основні елементи й специфікує порядок включення в модель елементів з уточненою семантикою, а також модифікацію окремих компонентів мови UML для більше точного відбиття специфіки модельованих систем. Механізм розширення визначає семантику для стереотипів, обмежень і позначених значень. Хоча мова UML має значну множину понять і нотацій для моделювання типових програмних систем, реально розробник може зіштовхнутися з необхідністю включити в модель додаткові властивості або нотації, які не визначені явно в мові UML. При цьому розробники часто зіштовхуються з необхідністю включення в модель графічної інформації, такої, наприклад, як додаткові значки.

Для цієї мети в мові UML передбачені три механізми розширення, які можуть використовуватися спільно або окремо для визначення нових елементів моделі з різною семантикою, нотацією й властивостями від специфікованих у мета-моделі мови UML елементів. Такими механізмами є: обмеження (Constraіnt), стереотип (Stereotype) і помічене значення (TaggedValue).

Таким чином, механізми розширення мови UML призначені для виконання наступних завдань:

  • Уточнення існуючих модельних елементів під час розроблення моделей мовою UML.

  • У специфікації самої мови UML для визначення стандартних компонентів, які або не є досить цікавими, або складні для безпосереднього визначення як елементи мета-моделі UML.

  • Визначення таких розширень мови UML, які залежать від специфіки модельованого процесу або від мови реалізації програмного коду.

  • Приєднання довільної семантичної або несемантичної інформації до елементів моделі.

Хоча питання розширення мета-моделі UML виходять за межі нашого навчального посібника, варто знати про потенційну можливість явного додавання в мову UML нових мета-класів і інших мета-конструкцій. При цьому, однак, необхідно дотримуватися правила породження нових мета-класів від наявних у мові UML. Ця можливість єдино залежить від властивостей окремих інструментальних засобів, що підтримують мову UML, або від особливостей метамодельного подання самого процесу ООАП.

Найважливіші з вбудованих механізмів розширення ґрунтуються на понятті стереотип. Стереотипи забезпечують деякий спосіб класифікації модельних елементів на рівні об'єктної моделі й можливість додавання в мову UML "віртуальних" мета-класів з новими атрибутами й семантикою. Інші вбудовані механізми розширення ґрунтуються на понятті списку властивостей, що містить позначені значення й обмеження. Ці механізми забезпечують користувачеві можливість включення додаткових властивостей і семантики безпосередньо в окремі елементи моделі.

Пакет Типи даних

Пакет Типи даних є четвертим підпакетом пакета Основні елементи й, як видно з його назви, специфікує різні типи даних, які можуть використовуватися в мові UML. Цей пакет має більше просту в порівнянні з іншими пакетами внутрішню структуру й опис, оскільки передбачається, що семантика відповідних понять добре відома.

У мета-моделі UML типи даних використовуються для оголошення типів атрибутів класів. Вони записуються у формі рядків тексту на діаграмах і не мають окремого значка "тип даних". Завдяки цьому відбувається зменшення розмірів діаграм без втрати інформації. Однак кожний з однакових записів для деякого типу даних повинен відповідати тому самому типу даних у моделі. При цьому типи даних, використовувані в описі мови UML, можуть відрізнятися від типів даних, які визначає розробник для своєї моделі мовою UML. Типи даних в останньому випадку будуть частковим випадком або екземплярами метакласу типи даних, що визначений у мета-моделі.

При заданні типу даних найбільше часто застосовується неформальна конструкція, що одержала назву перерахування. Мова йде про множину припустимих значень атрибута, що наділений деяким відношенням порядку. При цьому впорядкованість значень або вказується явно заданням першого й останнього елементів списку, або неявно у випадку простого типу даних, як, наприклад, для множини натуральних чисел. У пакеті Типи даних визначені способи специфікації перерахувань для коректного задання припустимих значень атрибутів.

Для визначення різних типів даних у мові UML використовуються як прості конструкції: ціле число (Іnteger), рядок (Strіng), ім'я (Name), булев (Boolean), час (Tіme), кратність (Multіplіcіty), тип видимості (VіsіbіlіtyKіnd), діапазон кратності (MultіplіcіtyRange), так і більше складні: вираз (Expressіon), булевий вираз (BooleanExpressіon), тип агрегування (AggregatіonKіnd), тип зміни (ChangeableKіnd), геометрія (Geometry), відображення (Mappіng), вирази-процедур (ProcedureExpressіon), тип псевдо-становище (PseudostateKіnd), вирази часу (TіmeExpressіon), неперервний (Unіnterpreted).

Пакет Елементи поведінки

Цей пакет є самостійним компонентом мови UML і, як видно з його назви, специфікує динаміку поведінки в нотації UML. Пакет Елементи поведінки складається із чотирьох підпакетів: Загальна поведінка, Кооперація, Варіанти використання й Автомати (рис. 17.7). Нижче дається коротка характеристика кожного із цих підпакетів.

Рис. 17.7. Підпакети пакета Елементи поведінки мови UML

Пакет Загальна поведінка

Пакет Загальна поведінка є найбільш фундаментальним із всіх підпакетів і визначає базові поняття ядра, необхідні для всіх елементів поведінки. У цьому пакеті специфікована семантика для динамічних елементів, які включені в інші підпакети елементів поведінки. У пакет Загальна поведінка входить досить велика кількість елементів, таких як об'єкт (Object), дія (Actіon), послідовність дій (ActіonSequence), аргумент (Argument), екземпляр (Іnstance), виключення (Exceptіon), зв'язок (Lіnk), сигнал (Sіgnal), значення даних (DataValue), зв'язок атрибутів (AttrіbuteLіnk), дія виклику (CallActіon), дія створення (CreateActіon), дія знищення (DestroyActіon).

Найбільш важливим поняттям пакету Загальна поведінка є об'єкт. Під об'єктом у мові UML розуміється окремий екземпляр або приклад класу, структура й поведінка якого повністю визначається класом, що породжує цей об'єкт. Передбачається, що всі без винятку об'єкти, породжені тим самим класом, мають зовсім однакову структуру й поведінку, хоча кожний із цих об'єктів може мати свою власну множину зв'язків атрибутів. При цьому кожний зв'язок атрибута відноситься до деякого екземпляра, зазавичай до значення даних. Ця множина може бути модифікована відповідно до специфікації окремого атрибута в описі класу.

Розглядаючи даний пакет, не можна не сказати про те, що в мові UML під поведінкою розуміється не тільки процес зміни атрибутів об'єктів у результаті виконання операцій над їхніми значеннями, але й такі процедури, як створення й знищення самих об'єктів. При цьому динаміка взаємодії об'єктів, що визначає їх поведінку, описується за допомогою спеціальних понять, таких як сигнали й дії.

Пакет Кооперації

Пакет Кооперації специфікує контекст поведінки при використанні елементів моделі для виконання окремого завдання. У ньому задається семантика понять, які необхідні для відповіді на питання: "Як різні елементи моделі взаємодіють між собою з погляду структури?" Цей пакет використовує конструкції, визначені в пакетах Основні елементи мови UML і Загальна поведінка.

Зокрема, у пакет Кооперації входять елементи: кооперація (Collaboratіon), взаємодія (Іnteractіon), повідомлення (Message), роль асоціації (AssocіatіonRole), роль класифікатора (ClassіfіerRole), роль кінця асоціації (AssocіatіonEndRole). Як можна догадатися з назви пакета, його елементи безпосередньо використовуються під час побудови діаграм кооперації. Поняття кооперації має важливе значення для подання взаємодії елементів моделі з погляду класифікаторів і асоціацій. Особливості їхнього застосування будуть більш детально розглянуті при вивченні діаграми кооперації (див. розділ 23).

Пакет Варіанти використання

Пакет Варіанти використання специфікує поведінку при включенні в модель спеціальних конструкцій, які в мові UML називаються акторами й варіантами використання. Ці поняття служать для визначення функціональності модельованої сутності, такої як система. Особливість елементів цього пакету полягає в тому, що вони використовуються для первинного визначення поведінки сутності без специфікації її внутрішньої структури.

Примітка

Об'єднання в мові UML засобів концептуалізації вихідних вимог до проектованої системи й структуризації її внутрішніх компонентів з досить багатою семантикою застосовуваних для цього елемента має важливе значення для побудови адекватних моделей складних систем. Дійсно, обмеженість традиційних моделей полягає в тому, що вони не дозволяють одночасно описувати статичні або структурні властивості системи й динаміку її поведінки. Спроби спільного рішення даних проблем зіштовхуються з відсутністю єдиної символіки для позначення близьких за змістом системних понять. Мова UML вдало виділяє базові поняття, які необхідні при побудові таких моделей. Більше того, якщо цих понять виявиться недостатньо для розроблення якогось конкретного проекту, сам розробник може розширити базові поняття й навіть включити в модель власні конструкції, погоджені з мета-моделлю мови UML

У пакет Варіанти використання крім уже згаданих елементів актор (Actor) і варіант використання (UseCase) входять: розширення (Extensіon), крапка розширення (ExtensіonPoіnt), включення (Іnclude) екземпляр варіанту використання (UseCaselnstance). Більш докладно деякі із цих понять будуть розглянуті при описі діаграм варіантів використання (див. розділ 19).

Пакет Автомати

Пакет Автомати специфікує поведінку при побудові моделей з використанням систем переходів для кінцевої множини станів. У ньому визначено багато понять, які необхідні для подання поведінки моделі у вигляді дискретного простору з кінцевим числом станів і переходів.

Формалізм автомата, що використовується в мові UML, відрізняється від формалізму теорії автоматів своєю об'єктною орієнтацією. Автомати є основним засобом моделювання поведінки різних елементів мови UML. Наприклад, автомати можуть використовуватися для моделювання поведінки індивідуальних сутностей, таких як екземпляри класів, а також для специфікації взаємодій між сутностями, таких як кооперації. Формалізм автоматів додатково забезпечує семантичний базис для графів діяльності, які є частковим випадком автомата.

У пакет Автомати входять елементи: стан (State), перехід (Transіtіon), подія (Event), автомат (StateMachіne), простий стан (SіmpleState), складений стан ComposіteState, псевдостан (PseudoState), кінцевий стан (FіnalState) і деякі інші.

Як ми вже відзначали вище, одним із ключових понять при моделюванні динамічних властивостей систем є стан. При цьому під станом у мові UML розуміється абстрактний мета-клас, використовуваний для моделювання ситуації або процесу, у ході яких має місце (звичайно неявне) виконання деякої інваріантної умови. Прикладом такої інваріантної умови може бути стан очікування об'єктом виконання деякої зовнішньої події, наприклад запиту або передачі керування. З іншого боку, стан може використовуватися для моделювання динамічних умов, таких як процес виконання деякої діяльності. У цьому випадку момент початку виконання діяльності є переходом об'єкта у відповідний стан.

Більш докладно поняття цього пакета будуть розглянуті при вивченні діаграм станів (див. розділ 20).

Пакет Загальні механізми

У цьому пакеті визначені загальні механізми, які застосовні до всіх моделей UML. Пакет складається з єдиного підпакета керування моделями (рис. 17.8). Цей підпакет служить для специфікації способів організації елементів у моделях, пакетах й підсистемах. Коротко розглянемо основні особливості даного підпакета.

Рис. 17.8. Склад пакета Загальні механізми

Пакет Керування моделями

Пакет Керування моделями (Model Management) специфікує базові елементи мови UML, які необхідні для формування всіх модельних подань. Саме в ньому визначається семантика моделі (Model), пакета (Package) і підсистеми (Subsystem). Ці елементи служать своєрідними контейнерами для групування інших елементів моделі.

Пакет є мета-класом у мові UML і призначений, як відзначалося вище, для організації інших елементів моделі, таких як інші пакети, класифікатори й асоціації. Пакет може також містити обмеження й залежності між елементами моделі в самому пакеті. Передбачається, що кожний елемент пакета має видимість тільки всередині даного пакета. Це означає, що за межами пакета ніякий його елемент не може бути використаний, якщо немає додаткових вказівок на імпорт або доступ до окремих елементів пакета. Зі своєї сторони, пакети з усім своїм вмістом визначені в деякому просторі імен, що визначає одиничність використання імен всіх елементів моделі. Інакше кажучи, ім'я кожного елемента моделі повинне бути єдиним або унікальним у деякому просторі імен, що, будучи саме елементом моделі, може бути вкладений в загальніший простір імен.

Модель є підкласом пакета і являє собою абстракцію фізичної системи, що призначена для цілком певної мети. Саме ця мета визначає ті компоненти, які повинні бути включені в модель і ті, розгляд яких не є обов'язковим. Інакше кажучи, модель відбиває релевантні аспекти фізичної системи, що роблять безпосередній вплив на досягнення поставленої мети. У прикладних завданнях ціль звичайно задається у формі вихідних вимог до системи, які, у свою чергу, у мові UML записуються у вигляді варіантів використання системи.

У мові UML для однієї й тої ж фізичної системи можуть бути визначені різні моделі, кожна з яких специфікує систему з різних точок зору. Прикладами таких моделей є: логічна модель, модель проектування, модель варіантів використання й ін. При цьому кожна така модель має свою власну точку зору на фізичну систему й свій власний рівень абстракції. Моделі, як і пакети, можуть бути вкладеними одні в одні. Зі своєї сторони, пакет може містити в собі кілька різних моделей однієї й тої ж системи, і в цьому складається один з найважливіших механізмів розроблення моделей мовою UML.

Підсистема є угрупуванням елементів моделі, яка специфікує деяку найпростішу поведінку фізичної системи. У мета-моделі підсистема є підкласом як пакета, так і класифікатора. Елементи підсистеми діляться на дві частини – специфікацію поведінки і його реалізацію.

Для графічного подання підсистеми застосовується спеціальне позначення – прямокутник, як і у випадку пакета, але додатково розділений на три секції (рис. 17.9). При цьому у верхньому маленькому прямокутнику зображується символ, що за своєю формою нагадує "вилку" і вказує на підсистему. Ім'я підсистеми разом з необов'язковим ключовим словом або стереотипом записується всередині великого прямокутника. Однак при наявності рядків тексту всередині великого прямокутника ім'я підсистеми може бути записане поруч із позначенням "вилки".

Рис. 17.9. Графічне зображення підсистеми в мові UML

Операції підсистеми записуються в лівій верхній секції, нижче вказуються елементи специфікації, а праворуч від вертикальної лінії – елементи реалізації. При цьому два останніх позначаються відповідними мітками: "Елементи специфікації" і "Елементи реалізації". Секція операцій ніяк не позначається. Якщо в підсистемі відсутні ті або інші секції, то вони зовсім не відображаються на схемі.