Стереотип (UML)
Стереотипи є одним із трьох типів механізмів розширюваності в уніфікованій мові моделювання (UML). Вони дозволяють проектувальникам розширювати словник UML для створення нових елементів моделювання, що отримуються з наявних, але мають певні властивості, які підходять для конкретної проблеми предметної області чи для іншого спеціалізованого використання. Термін походить від первісного значення слова «стереотип», яке використовується у друкарстві. Наприклад, під час моделювання мережі можуть знадобитися символи для подання маршрутизаторів і комутаторів. За допомогою стереотипних вузлів можна подавати їх у вигляді примітивних будівельних блоків.
Графічно стереотип відображається як ім'я, взяте в лапки («», або, якщо такі лапки неприпустимі, <<>>) та розташоване над іменем іншого елементу. На додачу чи як альтернатива він може бути позначений відповідною піктограмою. Піктограма може навіть замінити весь символ UML. Наприклад, стереотипи діаграми класів можуть бути використані для опису таких методів поведінки, як «конструктор» і «ґеттер». Попри своє зовнішнє подання, «інтерфейс» — не стереотип, а класифікатор[1].
Однією з альтернатив стереотипам, запропонованою Пітером Коудом у своїй книзі «Застосування Java в моделюванні кольором із UML: Організація та виробництво», є використання кольорових архетипів. Архетипи, позначені UML-блоками різних кольорів, можуть бути використані в поєднанні зі стереотипами. Це додаткове визначення призначення показує роль, яку відіграє об'єкт UML у рамках ширшої програмної системи.
Атрибути стереотипів
Починаючи з версії 2.0, незалежне іменоване значення вважається атрибутом стереотипу. Термін «іменоване значення» досі зберігається. Кожний стереотип має від нуля чи більше визначень міток, і всі стереотипні елементи UML мають відповідну кількість іменованих значень.
Стереотипи, що визначаються UML
Стереотип / ключове слово | До чого застосовний | Призначення |
---|---|---|
actor | Клас (class) | Визначає пов'язану множину ролей, які відіграє користувач прецеденту під час взаємодії з ним |
access | Залежність (dependency) | Повідомляє, що відкритий вміст цільового Пакуноку доступний у просторі імен вихідного Пакуноку |
association | Кінцева точка зв'язку (link end) | Вказує, що відповідний об'єкт видимий асоціацією |
become | Повідомлення (message) | Цільовий об'єкт збігається з вихідним, але в пізніший момент часу. При цьому, можливо, у нього будуть інші значення, стани чи ролі |
bind | Залежність (dependency) | Вихідний клас інстанціює цільовий шаблон із даними фактичними параметрами |
call | Залежність (dependency) | Вихідна операція викликає цільову |
copy | Повідомлення (message) | Цільовий об'єкт — це точна, але незалежна копія вихідного |
create | Подія (event), повідомлення (message) | Цільовий об'єкт створено внаслідок події чи повідомлення |
derive | Залежність (dependency) | Вихідний об'єкт може бути обчислено за цільовим |
destroy | Подія (event), повідомлення (message) | Цільовий об'єкт зруйновано внаслідок події чи повідомлення |
document | Компонент (component) | Компонент представляє документ |
enumeration | Клас (class) | Визначає перелічуваний тип, включно з його можливими значеннями як набором ідентифікаторів |
exception | Клас (class) | Визначає подію, яку може бути збуджено чи перехоплено операцією |
executable | Компонент (component) | Описує компонент, який може бути виконано у вузлі |
extend | Залежність (dependency) | Цільовий варіант використання розширює поведінку вихідного в даній точці розширення |
facade | Пакунок (package) | Пакунок, який є лише поданням іншого Пакуноку |
file | Компонент (component) | Компонент, який подає документ, що містить початковий код або дані |
framework | Пакунок (package) | Пакунок, що складається переважно зі зразків (патернів) |
friend | Залежність (dependency) | Вихідний клас має спеціальні права видимості в цільовому |
global | Кінцева точка зв'язку (link end) | Відповідний об'єкт видимий, оскільки належить охопній області дії |
import | Залежність (dependency) | Відкритий вміст цільового Пакуноку стає частиною плаского простору імен вихідного Пакуноку так, якби його було оголошено безпосередньо в ньому |
implementation | Узагальнення (generalization) | Нащадок успадковує реалізацію предка, але не відкриває та не підтримує його інтерфейси, внаслідок чого не може бути підставлений замість предка |
implementationClass | Клас (class) | Реалізація класу деякою мовою програмування |
include | Залежність (dependency) | Вихідний прецедент явно містить поведінку іншого прецеденту в точці, що визначається вихідним |
instanceOf | Залежність (dependency) | Вихідний об'єкт є примірником цільового класифікатора |
instantiate | Залежність (dependency) | Операції над вихідним класом створюють примірники цільового класу |
interface | Клас (class) | Описує багато операцій, які визначають те, що може робити клас або компонент |
invariant | Обмеження (constraint) | Обмеження, яке завжди повинно виконуватися для асоційованого елементу |
library | Компонент (component) | Статична чи динамічна об'єктна бібліотека |
local | Кінцева точка зв'язку (link end) | Відповідний об'єкт видимий, так як перебуває в локальній області дії |
metaclass | Класифікатор (classifier) | Класифікатор, всі об'єкти якого є класами |
model | Пакунок (package) | Описує семантично замкнену абстракцію системи |
parameter | Кінцева точка зв'язку (link end) | Відповідний об'єкт видимий, так як є параметром |
postcondition | Обмеження (constraint) | Обмеження, яке повинно виконуватися після виконання операції |
powertype | Клас (class) | Класифікатор, всі об'єкти якого є нащадками даного предка |
precondition | Обмеження (constraint) | Обмеження, яке повинно виконуватися перед виконанням операції |
process | Клас (class) | Класифікатор, примірник якого подає ресурсомісткий потік керування |
refine | Залежність (dependency) | Говорить, що вихідний об'єкт є детальнішою абстракцією, ніж цільовий |
requirement | Коментар (comment) | Описує бажану властивість або поведінку системи |
responsibility | Коментар (comment) | Описує контракт або зобов'язання класу |
send | Залежність (dependency) | Вихідна операція надсилає цільову подію |
signal | Клас (class) | Асинхронний стимул, який передається одним примірником іншому |
stereotype | Клас (class) | Класифікатор — це стереотип, який може бути застосований до інших елементів |
stub | Пакунок (package) | Пакунок виступає в ролі заступника для відкритого вмісту іншого Пакуноку |
subsystem | Пакунок (package) | Описує групування елементів, ряд яких складає специфікацію поведінки інших елементів |
system | Пакунок (package) | Описує Пакунок, що подає всю модельовану систему |
table | Компонент (component) | Компонент, що подає таблицю бази даних |
thread | Клас (class) | Класифікатор, примірник якого подає полегшений потік керування |
trace | Залежність (dependency) | Цільовий елемент — це історичний предок вихідного |
type | Клас (class) | Абстрактний клас, який використовується тільки для специфікації структури та поведінки (але не реалізації) множини об'єктів |
use | Залежність (dependency) | Семантика вихідного елементу залежить від семантики відкритого вмісту цільового елементу |
utility | Клас (class) | Визначає клас, для якого область дії всіх атрибутів і операцій — клас |
Примітки
- UML Superstructure Specification // v2.0. — Object Management Group, 2005. — Серпень. — С. 33.
Література
- Крэг Ларман. Застосування UML і паттернів: Вступ до об'єктно-орієнтованого аналізу, дизайну й ітеративної розробки = Applying UML and Patterns : An Introduction to Object-Oriented Analysis and Design and Iterative Development. — 3-є вид. — М. : Вільямс, 2006. — 736 с. — ISBN 0-13-148906-2.
- Джозеф Шмуллер. Засвой самостійно UML за 24 години, повний початковий набір = Sams Teach Yourself UML in 24 Hours, Complete Starter Kit. — М. : Вільямс, 2005. — 416 с. — ISBN 0-672-32640-X.
- Грейди Буч, Джеймс Рамбо, Айвар Джекобсон. UML. Керівництво користувача = The Unified Modeling Language user guide. — 2-є вид. — М., СПб. : ДМК Пресс, Пітер, 2004. — 432 с. — ISBN 5-94074-260-2.
- Буч Г., Якобсон А., Рамбо Дж. UML. Классика CS. 2-є вид. / Пер. з англ.; Під загальною редакцією проф. С. Орлова — СПб.: Пітер, 2006. — 736 с. ISBN 5-469-00599-2
Посилання
- UML Stereotype
- Язык UML Руководство пользователя, Г.Буч, Д.Рамбо, А.Джекобсон