- •1.1. Методологія процедурно‑ орієнтованого програмування
- •1.2. Методологія об'єктно-орієнтованого програмування
- •1.3. Методологія об'єктно-орієнтованого аналізу і проектування
- •1.4. Методологія системного аналізу і системного моделювання
- •Розділ 2
- •2.1. Передісторія. Математичні основи
- •Мал. 2.4. Приклади неорієнтованого (а) і орієнтованого (б) графів
- •Мал. 2.5. Приклади неорієнтованого (а) і орієнтованого (б) дерев
- •Мал. 2.6. Ієрархічні схеми неорієнтованого дерева (а) і орієнтованого дерева (б)
- •2.2. Діаграми структурного системного аналізу
- •I (Input) – вхід, т. Е. Все, що поступає в процес або споживається процесом.
- •2.3. Основні етапи розвитку uml
- •2. Забезпечити початкові поняття язика uml можливістю розширення і спеціалізації для більш точного представлення моделей систем в конкретній наочній області.
- •3. Опис язика uml повинен підтримувати таку специфікацію моделей, яка не залежить від конкретних язиків програмування і інструментальних засобів проектування програмних систем.
- •4. Опис язика uml повинен включати семантичний базис для розуміння загальних особливостей ооап.
- •7. Інтегрувати в себе новітні і якнайкращі досягнення практики ооап.
- •3.2. Загальна структура язика uml
- •3.3. Пакети в язиці uml
- •3.4. Основні пакети метамоделі язика uml
- •3.5. Специфіка опису метамоделі язика uml
- •3.6. Особливості зображення діаграм язика uml
- •4.1. Варіант використовування
- •4.2. Актори
- •4.3. Інтерфейси
- •4.4. Примітки
- •4.5. Відносини на діаграмі варіантів використовування
- •4.6. Приклад побудови діаграми варіантів використовування
- •4.7. Рекомендації по розробці діаграм варіантів використовування
- •5.1. Клас
- •5.2. Відносини між класами
- •5.5. Шаблони або класи, що параметризуються
- •5.6. Рекомендації по побудові діаграм класів
- •6.1. Автомати
- •Include – ця мітка використовується для звернення до підавтомата, при цьому наступний за нею вираз дії містить ім'я цього підавтомата.
- •6.3. Перехід
- •6.4. Складовий стан і підстан
- •6.5. Історичний стан
- •Мал. 6.10. Графічне зображення недавнього (а) і давнього (б) історичного стану
- •6.6. Складні переходи
- •Мал. 6.11. Графічне зображення паралельного переходу з паралельних станів (а) і паралельного переходу в паралельні стани (б)
- •6.7. Заключні рекомендації по побудові діаграм станів
- •7.1. Стан дії
- •7.2. Переходи
- •7.5. Рекомендації по побудові діаграм діяльності
- •8.2. Повідомлення
- •Мал. 8.7. Діаграма послідовності із стереотипними значеннями повідомлень
- •8.3. Приклад побудови діаграми послідовності
- •8.4. Заключні рекомендації по побудові діаграм послідовності
- •9.1. Кооперація
- •9.3. Зв'язки
- •9.4. Повідомлення
- •9.6. Заключні рекомендації по побудові діаграм кооперації
- •10.1. Компоненти
- •10.2. Інтерфейси
- •10.3. Залежність
- •10.4. Рекомендації по побудові діаграми компонентів
- •11.1. Вузол
- •11.2. З'єднання
- •Мал. 11.4. Фрагмент діаграми розгортання із з'єднаннями меходу вузлами
- •11.3. Рекомендації по побудові діаграми розгортання
- •12.1. Загальна характеристика case‑ засобу Rational Rose 98/2000
- •12.2. Особливості робочого інтерфейсу Rational Rose
- •12.3. Початок роботи над проектом в середовищі Rational Rose
- •12.4. Розробка діаграми варіантів використовування в середовищі Rational Rose
- •12.5. Розробка діаграми класів в середовищі Rational Rose
- •12.6. Розробка діаграми станів в середовищі Rational Rose
- •12.7. Розробка діаграми послідовності в середовищі Rational Rose
- •12.8. Розробка діаграми кооперації в середовищі Rational Rose
- •12.9. Розробка діаграми компонентів в середовищі Rational Rose
- •12.10. Розробка діаграми розгортання в середовищі Rational Rose
7. Інтегрувати в себе новітні і якнайкращі досягнення практики ооап.
Язик UML безперервно удосконалюється розробниками, і основою цієї роботи є його подальша інтеграція з сучасними модельними технологіями. При цьому різні методи системного моделювання одержують своє прикладне осмислення в рамках ООАП. В подальшому ці методи можуть бути включені до складу язика UML у формі додаткових базових понять, найбільш адекватно і повно практики ООАП, що відображають якнайкращі досягнення.
Щоб вирішити вказані вище задачі, за свою недовгу історію язик UML зазнав певну еволюцію. В результаті опис самого язика UML став нетривіальним, оскільки семантика базових понять включає цілий ряд перехресних зв'язків з іншими поняттями і конструкціями язика. У зв'язку з цим так званий лінійний або послідовний розгляд основних конструкцій язика UML став практично неможливим, т. до. одні і ті ж поняття можуть використовуватися при побудові різних діаграм або уявлень. В той же час кожне з представлень моделі володіє власними семантичними особливостями, які накладають відбиток на семантику базових понять язика в цілому.
Примітка
Відзначаючи складність опису язика UML, слід зазначити властиву всім формальним язикам складність їх строгого завдання, яка витікає з необхідності в тому або іншому ступені використовувати природний язик для специфікації базових примітивів. В цьому випадку природний язик виступає в ролі метамови, т. е. язика для опису формального язика. Оскільки природний язик не є формальним, то і його вживання для опису формальних язиків в тому або іншому ступені страждає неточністю. Хоча в задачі язика UML не входить аналіз відповідних логико‑ лінгвістичних деталей, проте ці особливості відобразилися на структурі опису язика UML, зокрема, роблячи стиль опису всіх його основних понять напівформальним.
Враховуючи ці особливості, прийнята в книзі послідовність вивчення язика UML грунтується на розгляді основних графічних засобів моделювання, а саме – канонічних діаграм. Всі потрібні для побудови діаграм поняття вводяться в міру необхідності. Проте в цьому розділі слід зупинитися на загальних особливостях язика UML, які в тому або іншому ступені впливають на розуміння його базових конструкцій.
3.2. Загальна структура язика uml
З найзагальнішої точки зору опис язика UML складається з двох взаємодіючих частин, таких як:
Семантика язика UML. Є деякою метамоделлю, яка визначає абстрактний синтаксис і семантику понять об'єктного моделювання на язиці UML.
Нотація язика UML. Є графічною нотацією для візуального представлення семантики язика UML.
Абстрактний синтаксис і семантика язика UML описуються з використанням деякої підмножини нотації UML. На додаток до цього, нотація UML описує відповідність або відображення графічної нотації в базові поняття семантики. Таким чином, з функціональної точки зору ці дві частини доповнюють одна одну. При цьому семантика язика UML описується на основі деякої метамоделі, що має три окремі уявлення: абстрактний синтаксис, правила коректної побудови виразів і семантику. Розгляд семантики язика UML припускає деякий «напівформальний» стиль викладу, який об'єднує природний і формальний язики для представлення базових понять і правил їх розширення.
Семантика визначається для двох видів об'єктних моделей: структурних моделей і моделей поведінки. Структурні моделі, відомі також як статичні моделі, описують структуру єств або компонентів деякої системи, включаючи їх класи, інтерфейси, атрибути і відносини. Моделі поведінки, звані іноді динамічними моделями, описують поведінку або функціонування об'єктів системи, включаючи їх методи, взаємодію і співпрацю між ними, а також процес зміни станів окремих компонентів і системи в цілому.
Для вирішення такого широкого діапазону задач моделювання розроблена достатньо повна семантика для всіх компонентів графічної нотації. Вимоги семантики язика UML конкретизуються при побудові окремих видів діаграм, послідовний розгляд яких служить темою другій частині книги. Нотація язика UML включає опис окремих семантичних елементів, які можуть застосовуватися при побудові діаграм.
Формальний опис самого язика UML грунтується на деякій загальній ієрархічній структурі модельних уявлень, що складається з чотирьох рівнів:
Мета‑ метамодель
Метамодель
Модель
Об'єкти користувача
Рівень мета‑ метамоделі утворює початкову основу для всіх метамодель‑ ных уявлень. Головне призначення цього рівня полягає в тому, щоб визначити язик для специфікації метамоделі. Мета‑ метамодель визначає модель язика UML на найвищому рівні абстракції і є найкомпактнішим її описом. З другого боку, мета‑ метамодель може специфікувати декілька метамоделей, чим досягається потенційна гнучкість включення додаткових понять. Хоча в книзі цей рівень не розглядається, він найбільш тісно пов'язаний з теорією формальних язиків. Прикладами понять цього рівня служать метакласс, метаатрибут, метаоперация.
Примітка
Слід зазначити, що семантика мета‑ метамоделі не входить в опис язика UML. З одного боку, це робить язик UML більш простим для вивчення, оскільки не вимагає знання загальної теорії формальних язиків і формальної логіки. З другого боку, наявність мета‑ метамоделі додає язику UML статус науковості, який необхідний йому для того, щоб бути несуперечливим формальним язиком. Якщо ці особливості можуть представлятися мало цікавими для багатьох програмістів, то розробники інструментальних засобів ніяк не можуть їх ігнорувати.
Метамодель є екземпляром або конкретизацією мета‑ метамоделі. Головна задача цього рівня – визначити язик для специфікації моделей. Даний рівень є більш конструктивним, ніж попередній, оскільки володіє більш розвиненою семантикою базових понять. Всі основні поняття язика UML – це поняття рівня метамоделі. Приклади таких понять – клас, атрибут, операція, компонент, асоціація і багато інших. Саме розгляду семантики і графічній нотації понять рівня метамоделі присвячена дана книга.
Модель в контексті язика UML є екземпляром метамоделі в тому значенні, що будь-яка конкретна модель системи повинна використовувати тільки поняття метамоделі, конкретизувавши їх стосовно даної ситуації. Це рівень для опису інформації про конкретну наочну область. Проте якщо для побудови моделі використовуються поняття язика
UML, то необхідна повна узгодженість понять рівня моделі з базовими поняттями язика UML рівня метамоделі. Прикладами понять рівня моделі можуть служити, наприклад, імена полів проектованої бази даних, такі як ім'я і прізвище співробітника, вік, посада, адреса, телефон. При цьому дані поняття використовуються лише як імена відповідних інформаційних атрибутів.
Конкретизація понять моделі відбувається на рівні об'єктів. В справжньому контексті об'єкт є екземпляром моделі, оскільки містить конкретну інформацію щодо того, чому насправді відповідають ті або інші поняття моделі. Прикладом об'єкту може служити наступний запис в проектованій базі даних: «Ілля Петров, 30 років, ілюзіоніст, вул. невидима, 10–20, 100‑ 0000».
Опис семантики язика UML припускає розгляд базових понять тільки рівня метамоделі, який є лише прикладом або окремим випадком рівня мета‑ метамоделі. Метамодель UML є за своєю суттю швидше логічною моделлю, ніж фізичної або моделлю реалізації. Особливість логічної моделі полягає в тому, що вона концентрує увагу на декларативній або концептуальній семантиці, опускаючи деталі конкретної фізичної реалізації моделей. При цьому окремі реалізації, що використовують дану логічну метамодель, повинні бути злагоджені з її семантикою, а також підтримувати можливості імпорту і експорту окремих логічних моделей.
В той же час, логічна метамодель може бути реалізована різними способами для забезпечення необхідного рівня продуктивності і надійності відповідних інструментальних засобів. В цьому полягає недолік логічної моделі, яка не містить на рівні семантики вимог, обов'язкових для її ефективної подальшої реалізації. Проте узгодженість метамоделі з конкретними "моделями реалізації є обов'язковою для всіх розробників програмних засобів, що забезпечують підтримку язика UML.
Метамодель язика UML має досить складну структуру, яка включає порядка 90 метаклассов, більше 100 метаассоциаций і майже 50 стереотипів, число яких зростає з появою нових версій язика. Щоб справитися з цією складністю язика UML, всі його елементи організовані в логічні пакети. Тому розгляд язика UML на метамо‑ діловому рівні полягає в описі трьох його самих загальних логічних блоків або пакетів: основні елементи, елементи поведінки і загальні механізми.
Примітка
Кажучи про пакети в контексті загального опису язика, ми, по суті справи, приступаємо до розгляду графічної нотації язика UML. Річ у тому, що для опису язика UML використовуються засоби самого язика, і одним з таких засобів є пакет. В загальному випадку пакет служить для угрупування елементів моделі. При цьому самі елементи моделі, якими можуть бути довільні єства, віднесені до одного пакету, виступають в ролі єдиного цілого. Пакети, так само як і інші елементи моделі, можуть бути вкладені в інші пакети. Важливою особливістю язика UML є той факт, що всі види елементів моделі UML можуть бути організовані в пакети.
