- •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
3.5. Специфіка опису метамоделі язика uml
Метамодель язика UML описується на деякому напівформальному язиці з використанням трьох видів уявлень:
Абстрактного синтаксису
Правил правильної побудови виразів
Семантики
Абстрактний синтаксис є моделлю для опису деякої частини язика UML, призначеної для побудови діаграм класів на основі описів систем на природному язиці. Можливості абстрактного синтаксису в язиці UML досить обмежені і мають відношення тільки до інтерпретації позначень окремих компонентів діаграм, зв'язків між компонентами і допустимих додаткових позначень. До елементів абстрактного синтаксису відносяться деякі ключові слова і значення окремих атрибутів базових понять рівня метамоделі, які мають фіксоване позначення у вигляді тексту на природному язиці.
Правила правильної побудови виразів використовуються для завдання додаткових обмежень або властивостей, якими винні володіти ті або інші компоненти моделі. Оскільки початковим поняттям ООП є поняття класу, його загальними властивостями винні володіти всі екземпляри, які в цьому значенні повинні бути інваріантні один одному. Для завдання цих інваріантних властивостей класів і відносин необхідно використовувати спеціальні вирази деякого формального язика, в рамках UML язика об'єктних обмежень, що одержав назву (Object Constraint Language, ВІСЬ). Хоча язик ВІСЬ і використовує природний язик для формулювання правил правильної побудови виразів, особливості його вживання є темою самостійного обговорення. Основні особливості язика ВІСЬ розглянуті в додатку.
Семантика язика UML описується в основному на природному язиці, але може включати деякі додаткові позначення, витікаючі із зв'язків визначуваних понять з іншими поняттями. Семантика понять розкриває їх значення або зміст. Складність опису семантики язика UML полягає саме в метамодельном рівні представлень його основних конструкцій. З одного боку, поняття язика UML мають абстрактний характер (асоціація, композиція, агрегація, співпраця, стан). З другого боку, кожне з цих понять допускає свою конкретизацію на рівні моделі (співробітник, відділ, посада, стаж).
Складність опису семантики язика UML витікає з цієї подвійності понять. Тут ми повинні дотримуватися традиційних правил викладу, оскільки розуміння семантики носить індуктивний характер і вимагає для своєї інтерпретації прикладів рівня моделі і об'єкту. Ілюстрація абстрактних понять на прикладі конкретних властивостей і відносин, а також їх значень дозволяє акцентувати увагу на загальних інваріантах цих понять, що абсолютно необхідне для розуміння їх семантики.
Примітка
Таким чином, метамодель язика UML може розглядатися як комбінація графічної нотації (спеціальних позначень), деякого формального язика і природного язика. При цьому слід мати у вигляді, що існує деяка теоретична межа, яка обмежує опис метамоделі засобами самої метамоделі. Саме в подібних випадках испрльзуется природний язик, що володіє найбільшими виразними можливостями.
Хоча сам термін «природний язик» далеко не однозначний і породжує цілий ряд додаткових питань, тут ми обмежимося його трактуванням у формі звичайного тексту на російському неможливо, англійському язиках. Як би ні хотілося деяким з вітчизняних розробників, повністю уникнути використовування англійської при описі мови UML не вдасться. Проте якщо виключити написання стандартних елементів і деяких ключових слів, то у всій решті випадків під природним язиком можна розуміти російський без спеціальних обмовок.
Для додання формального характеру моделям UML використовування природного язика повинне строго відповідати певним правилам. Наприклад, опис семантики язика UML може включати фрази типу «Єство А володіє здатністю» або «Єство б є єство В». В кожному з цих випадків ми розумітимемо значення фраз, керуючись традиційним розумінням пропозицій російської мови. Проте цього може виявитися недостатньо для більш формального уявлення знань про дані єства. Тоді необхідно додатково специфікувати семантику цих простих фраз, для чого рекомендується використовувати наступні правила:
Явно указувати в тексті екземпляр деякого метакласса. Йдеться про те, що в природній мові ми часто опускаємо слово «приклад» або «екземпляр», кажучи просто «клас». Так, фразу «Атрибут вік класу співробітник має значення 30 років» слід записати більш точно, а саме: «атрибут вік екземпляра класу співробітник має значення 30 років».
В кожний момент часу використовується тільки те значення слова, яке приписане імені відповідної конструкції язика UML. Всі додаткові особливості семантики повинні бути вказані явним чином без яких би то не було неявних припущень.
Терміни язика UML можуть включати тільки один з допустимих префіксів, таких як под‑ , супер– або мета-. При цьому сам термін з префіксом записується одним словом.
На додаток до цього використовуватимуться наступні правила виділення тексту:
Якщо використовуються посилання на конструкції язика UML, а не на їх уявлення в метамоделі, слід застосовувати звичайний текст без якого б то не було виділення.
Імена метаклассов є елементом нотації язика UML і є іменником і, можливо, приєднаним до нього прикметником. В цьому випадку ім'я метакласса на англійському записується одним словом з виділенням кожної складової частини імені заголовною буквою (наприклад, ModelElement, StructuralFeature).
Імена метаассоциаций і асоціацій класів записуються аналогічним чином (наприклад, ElementReference).
Імена інших елементів язика UML також записуються одним словом, але повинні починатися з маленької букви (наприклад, ownedElement, allContents).
Імена метаатрибутов, які приймають булеві значення, завжди починаються з префікса «is» (наприклад, isAbstract).
Перечислімиє типи повинні завжди закінчуватися словом «Kind» (наприклад, AggregationKind).
При посиланнях в тексті на метаклассы, метаассоциаций, метаатрибуты і т. д. повинні завжди використовуватися в точності ті їх імена, які вказані в моделі.
Імена стандартних позначень (стереотипів) полягають в лапки і починаються з рядкової букви (наприклад, «type»).
Розглянуті вище правила виділення тексту мають безпосереднє відношення до англомовних термінів языка,UML. Оскільки питання локалізації язика UML до теперішнього часу не знайшли свого віддзеркалення в роботі OMG, вітчизняним фахівцям доведеться самостійно доповнювати ці правила на випадок використовування як природна російська мова. В книзі ми дотримуватимемося двох додаткових рекомендацій:
При описі семантики язика UML всі імена його стандартних елементів (метаклассов, метаассоциаций, метаатрибутов) допускається записувати на російському з додатковою вказівкою оригінального імені на англійській. При цьому, хоча імена стандартних елементів можуть складатися з декількох слів, вітчизняної традиції, що згідно склалася, будемо їх записувати роздільно (наприклад, клас асоціації, елемент моделі, простір імен).
При розробці конкретних моделей систем у формі діаграм язика UML доцільно застосовувати оригінальні англомовні терміни, дотримуючись описаних вище правил (окрім, можливо, тексту пояснення на російському). Причина цієї рекомендації цілком очевидна – подальша інструментальна реалізація моделі може виявитися неможливою, якщо не слідувати оригінальним правилам виділення тексту в язиці UML. Це правило не розповсюджується на окремі приклади і фрагменти діаграм, які приводяться в тексті книги з чисто ілюстративною метою і лише розкривають особливості використовування стандартних елементів язика UML.
Примітка
Приведені додаткові рекомендації не суперечать оригінальним правилам язика UML, а тільки уточнюють рамки використовування природного язика при побудові моделей і при описі самого язика. Оскільки опис семантики будь-якого формального язика пов'язаний з проблемою його интерпре‑ ~ тации, повністю обійтися без природного язика не представляється можливим. Якщо питання використовування оригінальних термінів при побудові логічних і фізичних моделей не викликають сумнівів у більшості програмістів, то процес побудови концептуальних моделей складних систем формалізований у меншій мірі. Саме з цієї причини початкові вимоги до системи формулюються на природному для розробників язиці (в нашому випадку, на російському). У будь-якому випадку ці аспекти використовування язиків при побудові моделей багатогранні і можуть служити темою окремої роботи.
В рамках язика UML всі уявлення про модель складної системи фіксуються у вигляді спеціальних графічних конструкцій, що одержали назву діаграм. В термінах язика UML визначені наступні види діаграм:
Діаграма варіантів використовування (use case diagram)
Діаграма класів (class diagram)
Діаграми поведінки (behavior diagrams)
Діаграма станів (statechart diagram)
Діаграма діяльності (асtivity diagram)
Діаграми взаємодії (interaction diagrams)
Діаграма послідовності (sequence diagram)
Діаграма кооперації (collaboration diagram)
Діаграми реалізації (implementation diagrams)
Діаграма компонентів (component diagram)
Діаграма розгортання (deployment diagram)
З перерахованих вище діаграм деякі служать для позначення двох і більш інших підвидів діаграм. При цьому як самостійні уявлення в язиці UML використовуються наступні діаграми:
1. Діаграма варіантів використовування (див. розділ 4).
2. Діаграма класів (див. розділ 5).
3. Діаграма станів (див. розділ 6).
4. Діаграма діяльності (див. розділ 7).
5. Діаграма послідовності (див. розділ 8).
6. Діаграма кооперації (див. розділ 9).
7. Діаграма компонентів (див. розділ 10).
8. Діаграма розгортання (див. розділ 11).
Перелік цих діаграм і їх назви є канонічними в тому значенні, що є невід'ємною частиною графічної нотації язика UML. Більш того, процес ООАП нерозривний пов'язаний з процесом побудови цих діаграм. При цьому сукупність побудованих таким чином діаграм є самодостатньою в тому значенні, що в них міститься вся інформація, яка необхідна для реалізації проекту складної системи.
Кожна з цих діаграм деталізує і конкретизує різні уявлення про модель складної системи в термінах язика UML. При цьому діаграма варіантів використовування є самою загальною концептуальною моделлю складної системи, яка є початковою для побудови всієї решти діаграм. Діаграма класів є, за своєю суттю, логічною моделлю, що відображає статичні аспекти структурної побудови складної системи.
Діаграми поведінки також є різновидами логічної моделі, які відображають динамічні аспекти функціонування складної системи. І, нарешті, діаграми реалізації служать для представлення фізичних компонентів складної системи і тому відносяться до її фізичної моделі. Таким чином, інтегрована модель складної системи в нотації UML (мал. 3.10) представляється у вигляді сукупності вказаних вище діаграм (див. мал. 3.9).
Мал. 3.10. Інтегрована модель складної системи в нотації UML
Примітка
В ранній літературі по UML як окрема діаграма розглядалася ще діаграма об'єктів. Проте у версії 1.3 вона не включена в перелік канонічних діаграм, оскільки її елементи можуть бути присутні на діаграмах інших типів. Тому опис окремих елементів діаграми об'єктів розглядається нижче, при вивченні основних канонічних типів діаграм в частині II даної книги.
