Professional Documents
Culture Documents
Л13 14сем3 ТДО
Л13 14сем3 ТДО
UML
7.1. Уніфікована мова моделювання - UML.
Кому і навіщо потрібен UML
В даний час уніфікована мова моделювання - UML є наймоднішою технологією в
області програмної інженерії. Справа в тому, що UML дозволяє системним
архітекторам представляти своє бачення системи у вигляді набору стандартних
діаграм, які, до того ж, служать відмінним засобом комунікації в команді
розробників і прекрасним помічником в спілкуванні з замовником. І при всьому
цьому, UML - досить логічна і проста для вивчення нотація, навичками
використання якої повинен опанувати будь-який фахівець, що збирається
працювати в області програмної інженерії. Знання UML потрібно розробникам,
системним архітекторам, менеджерам ...
Що таке UML
UML - уніфікована мова моделювання. З цих трьох слів головним є слово "мова".
Що ж таке мова?
Мова - система знаків, що служить засобом людського спілкування і розумової
діяльності; засобом збереження і передачі інформації. Мова включає в себе набір
знаків (словник) і правила їх вживання та інтерпретації (граматику).
UML - мова формальна і штучна. Штучна - у неї є автори. Формальна - є правила її
вживання. Ще UML - мова графічна.
При описі формальної штучної мови, що ми вже бачили на прикладах опису мов
програмування, описуються такі його елементи:
1. синтаксис - визначення правил побудови конструкцій мови;
2. семантика - визначення правил, відповідно до яких конструкції мови набувають
смислове значення;
3. прагматика - визначення правил використання конструкцій мови для досягнення
потрібних цілей.
UML включає всі ці елементи, хоча в їх описі спостерігаються відмінності від
правил, прийнятих в мовах програмування.
Друге слово в абревіатурі UML - моделювання. UML - це мова об'єктно-
орієнтованого моделювання. В англійській мові є два слова - modeling і simulation,
які обидва переводяться як "моделювання", хоча означають різні поняття.
Modeling має на увазі створення моделі, яка лише описує об'єкт, а simulation має
на увазі одержання за допомогою створеної моделі деякої додаткової інформації
про об'єкт. UML в першу чергу - мова моделювання саме в першому сенсі, тобто
засіб побудови описових моделей. Як засіб симулювання її теж можна
використовувати, хоча для цієї ролі вона підходить не так добре.
Третє слово в назві UML - слово уніфікована. Його можна розуміти теж
неоднозначно. У літературі можна зустріти опис ери "до UML" як "війни методів"
моделювання, жоден з яких «не дотягував" до рівня індустріального стандарту.
UML стала таким єдиним універсальним стандартом для об'єктно-орієнтованого
моделювання. "Єдиною" мовою моделювання UML можна назвати ще й тому, що в
її створенні об'єдналися зусилля авторів трьох найбільш популярних методів
моделювання (і не тільки їх).
У 80-ті роки було безліч різних методологій моделювання. Кожна з них мала свої
переваги і недоліки, а також свою нотацію. Проблема в тому, що різні люди
використовували різні нотації, і для того щоб зрозуміти, що описує та чи інша
діаграма, часто був потрібний "перекладач". Один і той же символ міг означати в
різних нотаціях абсолютно різні речі! До 1994-му існувало 72 методи, або приватні
методики. Існувала гостра потреба, "соціальне замовлення" - закінчити "війну
методів" і об'єднати в одному уніфікованому засобі все краще, що було створено в
області моделювання.
Способи використання мови
Автори визначають UML як графічну мову моделювання загального призначення
(тобто її можна застосовувати для проектування чого завгодно), призначену для
специфікації, візуалізації, проектування та документування всіх артефактів, що
створюються в ході розробки (артефакт - будь-який штучно створений об'єкт,
продукт людської діяльності).
Отже, UML в першу чергу - це специфікації.
Специфікація - докладний опис системи, який повністю визначає її мету та
функціональні можливості. Розрізняють: словесні специфікації на природній мові;
модельні специфікації; формальні специфікації.
Замовник і розробник (ще аналітики, менеджери, бізнес-консультанти...) мають,
абсолютно різне розуміння сенсу цього артефакту. Кожен з них називає
специфікації по-своєму: постановка задачі, вимоги користувача, технічне
завдання, функціональна специфікація, архітектура системи ...
Всі ці люди, будучи фахівцями в абсолютно різних предметних областях,
розмовляють кожен на своїй мові і часто просто не розуміють один одного. Ось
тому-то і виникає проблема, яку може вирішити тільки наявність єдиного,
уніфікованого засобу створення специфікацій, досить простого і зрозумілого для
всіх зацікавлених осіб.
Словесні специфікації на природній мові викликають масу проблем, оскільки
створюються різними фахівцями на "їхньою мовою".
Формальна специфікація є, по суті, математичною моделлю задачі і тому для
обчислювальних задач все виглядає досить просто. Формалізація ж завдань з
інших областей знань може виявитися більш складною і трудомісткою проблемою,
ніж розробка самого додатка через відсутність чіткої математичної моделі.
UML - це засіб візуалізації, створення модельних специфікацій.
UML дозволяє створювати такі прості і зрозумілі картинки (моделі), що описують
систему з різних сторін, які можна показати замовнику і обговорити з ним, тобто
служить засобом комунікації в команді.
Проектування. UML дозволяє будувати моделі програмних систем (взагалі кажучи
- БУДЬ-ЯКИХ систем). За цим моделям потім може проводитися генерація
каркасного коду проектованих додатків.Также можливий процес, який часто
називають "реверс-інжинірингом", - тобто створення UML-моделі з існуючого коду
програми. Якість вихідного коду або моделей при реверс-інжинірингу поки що
далека від ідеалу, але технології та інструменти постійно вдосконалюються, так
що можна сподіватися, що коли-небудь ми зможемо створювати додатки
візуально, не вдаючись до мови програмування, а користуючись лише UML ...
Документування. UML-моделі самі по собі вже є документами, зрозумілими,
навіть для неспеціаліста, як видно з попереднього малюнка. Крім цього, моделі
UML є XML-документами. Причому будь-який елемент на будь-який діаграмі може
бути забезпечений ноутсом - текстовим коментарем. Тобто побудова набору
діаграм вже є процесом документування майбутньої системи. Більш того,
більшість інструментів UML-проектування вміють витягати текстову інформацію з
моделей і генерувати відносно легкий для читання тексти.
Тобто,
UML може служити засобом обміну інформацією всередині команди і в ході
взаємодії з замовником.
UML є відмінним засобом специфікації систем, причому специфікації в
процесі розробки.
Розроблені архітектурні рішення, задокументовані за допомогою UML,
можуть бути використані повторно.
Можлива генерація коду, симуляція і верифікація моделей.
Ми будуємо моделі складних систем, тому що не можемо описати їх повністю,
"окинути одним поглядом". Метод об'єктно-орієнтованого аналізу дозволяє
описувати реальні складні системи найбільш адекватним чином. Але зі
збільшенням складності систем виникає потреба в хорошій технології
моделювання. В якості такої "стандартної" технології використовується
уніфікована мова моделювання (Unified Modeling Language, UML), яка є графічною
мовою для специфікації, візуалізації, проектування та документування систем. За
допомогою UML можна розробити детальну модель створюваної системи, яка
буде показувати не тільки її концепцію, а й конкретні особливості реалізації.
Чим UML не є.
UML не є мовою програмування, хоча існують засоби виконання UML-моделей як
інтерпретованого коду (Unimod, FLORA і ін.) та можлива кодогенерація. Проте
UML це засіб моделювання а не програмування, тобто створіння не програм, а
моделей будь-якого рівня абстракції для систем з будь-якої предметної області.
UML не є специфікацією якого б то не було інструменту моделювання, хоча такі
інструменти є. Наприклад, TAU G2, Borland Together, Poseidon, Enterprise Architect,
IBM Rational Rose, Dia, Visio і ін.
UML не є моделлю будь-якого процесу розробки, навіть Rational Unified Process
(RUP), який був описаний саме за допомогою UML. UML можна використовувати
незалежно від того, яку методологію розробки ПО ви використовуєте, і навіть якщо
ви взагалі не користуєтеся ніякою методологією!
Нотації і метамоделі
Мова UML в своєму нинішньому стані визначає нотацію та метамодель.
Нотація є сукупність графічних елементів, які застосовуються в моделях; вона і є
синтаксис цієї мови моделювання. Наприклад, нотація діаграми класів визначає
спосіб представлення таких елементів і понять, як клас, асоціація і кратність.
Більшість графічних мов моделювання є аж ніяк не строгими; їх нотація більшою
мірою апелює до інтуїції, ніж до формального визначення.
Однак методологи шукають способи домогтися більшої строгості методів, не
жертвуючи при цьому їх практичною корисністю. Один із способів полягає у
визначенні деякої метамоделі - діаграми (як правило, діаграми класів), яка
визначає поняття мови.
Для кого важлива метамодель. Творця ескізів зазвичай це не дуже хвилює;
проектувальника це повинно турбувати значно більше. І це життєво важливо для
тих, хто використовує UML в якості мови програмування, оскільки метамодель
визначає абстрактний синтаксис цієї мови.
Саме слово нотація підкреслює, що UML - мова графічна і моделі (а точніше
діаграми) не «записують», а малюють. Одне із завдань UML - служити засобом
комунікації всередині команди і при спілкуванні з замовником. "У робочому
порядку" діаграми часто малюють на папері від руки, причому зазвичай - не дуже
акуратно. Тому при виборі елементів нотації основним принципом був відбір
значків, які добре виглядали б і були б правильно інтерпретовані в будь-якому
випадку - якби вони були намальовані олівцем на серветці або створені на
комп'ютері і роздруковані на лазерному принтері.
В UML використовується чотири види елементів нотації:
1.фігури,
2.лініі,
3.значки,
4.надписи.
Фігури використовуються "плоскі" - прямокутники, еліпси, ромби і т. д.
Але є один виняток - на діаграмі розгортання для позначення вузлів
інфраструктури застосовується "тривимірне" зображення паралелепіпеда.
Усередині будь-якої фігури можуть поміщатися інші елементи нотації.
Лінії своїми кінцями вони повинні з'єднуватися з фігурами. На UML діаграмах не
буває ліній, які не з'єднують фігури. Застосовується два типи ліній - суцільна і
пунктирна. Лінії можуть перетинатися, хоча таких випадків слід по можливості
уникати.
UML надає виняткову свободу - можна малювати що завгодно і як заманеться, аби
можна було зрозуміти сенс створених діаграм.
7.2. Моделі і діаграми UML
Розробка моделі будь-якої системи завжди передує її створенню або оновленню.
Це необхідно для того, щоб чіткіше уявити собі завдання. Моделі дуже важливі і
для взаємодії всередині команди розробників, і для взаєморозуміння із
замовником. Модель дозволяє переконатися в "архітектурній узгодженості"
проекту до того, як він буде реалізований в коді.
В рамках UML-моделі все уявлення про систему фіксуються у вигляді спеціальних
графічних конструкцій - діаграм.
В процесі проектування система розглядається з різних точок зору за допомогою
моделей, які постають у формі діаграм.
Модель - це деякий об'єкт, що відображає лише найбільш значущі для даної
задачі характеристики системи. Моделі бувають різні - матеріальні та
нематеріальні, штучні і природні, декоративні та математичні ...
Діаграма - це графічне представлення множини елементів. Зазвичай
зображується у вигляді графа з вершинами (сутностями) і ребрами (відносинами).
Приклади діаграм. Це і знайома всім блок-схема, і схеми монтажу різного
устаткування, і дерево файлів і каталогів на диску, і багато-багато іншого. Діаграми
оточують нас з усіх боків, адже малюнок сприймається нами легше, ніж текст ...
При проектуванні програмного забезпечення за допомогою діаграм можна
візуалізувати систему з різних точок зору. Одна з діаграм, наприклад, може
описувати взаємодію користувача з системою, інша - зміна станів системи в
процесі її роботи, третя - взаємодія між собою елементів системи і т. д. Складну
систему можна і потрібно представити у вигляді набору невеликих і майже
незалежних моделей-діаграм, кожна з яких фокусується на певному аспекті
функціонування системи і виражає різний рівень абстракції. Кожна модель
відповідає деякій точці зору на проектовану систему.
Жодна окрема діаграма не є моделлю. Діаграми - лише засіб візуалізації моделі, і
ці два поняття слід розрізняти. Лише набір діаграм становить модель системи і
найбільш повно її описує, але не одна діаграма, вирвана з контексту.
Види діаграм
В UML діаграми розділені на три групи:
• діаграми, що представляють статичну структуру програми;
• діаграми, що представляють поведінкові аспекти системи;
• діаграми, що представляють фізичні аспекти функціонування системи (діаграми
реалізації).
Кількість та види діаграм змінюються з версіями. Отже, ми коротко розглянемо такі
види діаграм, як:
• діаграма прецедентів;
• діаграма класів;
• діаграма об'єктів;
• діаграма послідовностей;
• діаграма взаємодії;
• діаграма станів;
• діаграма активності;
• діаграма розгортання
кінцях зв'язків.
Тут - складений стан, що включає інші стани, одне з яких містить також паралельні
підстани. Це діаграма проходження академічного курсу студентом. Для того щоб
пройти курс, студент повинен виконати лабораторні роботи, захистити курсовий
проект і скласти іспит.
Діаграма активності (діяльності, activity diagram)
Моделюючи поведінку проектованої системи, часто недостатньо зобразити процес
зміни її станів, а потрібно також розкрити деталі алгоритмічної реалізації операцій,
що виконуються системою. Для цієї мети традиційно використовуються блок-схеми
або структурні схеми алгоритмів. В UML для цього існують діаграми діяльності, які
є окремим випадком діаграм станів. Діаграми діяльності зручно застосовувати для
візуалізації алгоритмів, за якими працюють операції класів.
Алгоритм - послідовність певних дій або елементарних операцій, виконання яких
призводить до отримання бажаного результату.
Позначення на діаграмі активності також нагадують позначення на блок-схемі,
хоча є і деякі суттєві відмінності. З іншого боку, нотація діаграм активності дуже
схожа на ту, яка використовується в діаграмах станів.
Висновки
• Інкапсуляція захищає внутрішній устрій об'єкта і реалізується шляхом обмеження
доступу до атрибутів і операцій класу з інших частин програми.
• Узагальнення дозволяє повторно використовувати вже існуючі рішення,
створюючи нові класи шляхом успадкування від наявних класів.
• Поліморфізм дозволяє працювати з групою різнорідних об'єктів однаковим
чином, не замислюючись про відмінності в реалізації.
• Інкапсуляція, успадкування і поліморфізм - три кити, на яких тримається ООП.
• У будь-якій системі між об'єктами існують відносини різних типів.
• Ставлення залежності означає, що реалізація одного класу залежить від
специфікації операцій іншого класу.
• Асоціація висловлює ставлення між декількома рівноправними об'єктами і може
мати напрямок, ролі і кратність, а також зображуватися у вигляді класу асоціації.
• Композиція і агрегація використовуються, якщо між об'єктами існують відносини
типу "частина-ціле", причому композиція передбачає, що частини не можуть
існувати окремо від цілого.