- •Міністерство освіти та науки України в.В. Литвин, н.Б. Шаховська Проектування інформаційних систем
- •Передмова наукового редактора серії підручників «комп’ютинґ»
- •1.1. Складність програмного забезпечення
- •1.2. Структура складних систем
- •1.2.1. Приклади складних систем
- •1.2.2. П'ять ознак складної системи
- •1.2.3. Організована і неорганізована складність
- •1.3. Методи подолання складності
- •1.3.1. Роль декомпозиції
- •1.3.3. Роль абстракції
- •1.3.4. Роль ієрархії
- •1.4. Про проектування складних систем
- •1.4.1. Інженерна справа як наука і мистецтво
- •1.4.2. Сенс проектування
- •4. Методи подолання складності.
- •2.1. Базові означення
- •2.2. Методи проектування інформаційних систем
- •2.3. Види інформаційних систем
- •2.4. Рівні моделей даних
- •3. Види інформаційних систем.
- •3.1. Методологія процедурно-орієнтованого програмування
- •3.2. Методологія об'єктно-орієнтованого програмування
- •3.3. Методологія об'єктно-орієнтованого аналізу і проектування
- •3.4. Методологія системного аналізу і системного моделювання
- •4.1. Передісторія. Математичні основи
- •4.1.1. Теорія множин
- •4.1.2. Теорія графів
- •4.1.3. Семантичні мережі
- •4.2. Діаграми структурного системного аналізу
- •4.3. Основні етапи розвитку uml
- •3. Семантичні мережі.
- •5.1. Принципи структурного підходу до проектування
- •5.2. Структурний аналіз
- •5.3. Структурне проектування
- •5.4. Методологія структурного аналізу
- •5.5. Інструментальні засоби структурного аналізу та проектування
- •6.1. Основні елементи
- •6.2. Типи зв’язків
- •6.3. Техніка побудови
- •6.4. Діаграма бізнес – функцій
- •6.4.1. Призначення діаграми бізнес-функцій
- •6.4.2. Основні елементи
- •7.1. Призначення діаграм потоків даних та основні елементи
- •7.1.1. Зовнішні сутності
- •7.1.2. Процеси
- •7.1.3. Накопичувачі даних
- •7.1.4. Потоки даних
- •7.2. Методологія побудови dfd.
- •8.1. Діаграма «сутність-зв’язок»
- •8.2. Діаграма атрибутів
- •8.3. Діаграма категоризації
- •8.4. Обмеження діаграм сутність-зв’язок
- •8.5. Методологія idef1
- •9.1. Основні елементи
- •9.2. Типи керуючих потоків
- •9.3. Принципи побудови
- •10.1. Структурні карти Константайна
- •10.2. Структурні карти Джексона
- •11.1. Призначення case-технологій
- •11.2. Інструментальний засіб bPwin
- •11.2.4. Інші діаграми bpWin
- •11.2.5. Моделі as is і to be
- •11.3.1. Основні властивості
- •11.3.2. Стандарт idef1x
- •11.4. Програмний засіб Visio
- •12.1. Системний аналіз області наукових досліджень
- •12.1.1. Аналіз предметної області
- •12.2. Системний аналіз біржі праці
- •12.2.1. Дерево цілей
- •12.2.2. Опис об’єктів предметної області
- •12.2.3. Концептуальна модель
- •14.1. Еволюція об'єктної моделі
- •14.1.1. Основні положення об'єктної моделі
- •14.2. Складові частини об'єктного підходу
- •14.2.1. Парадигми програмування
- •14.2.2. Абстрагування
- •14.2.3. Інкапсуляція
- •14.2.4. Модульність
- •14.2.5. Ієрархія
- •14.2.7. Паралелізм
- •14.2.8. Збереженість
- •14.3. Застосування об'єктної моделі
- •14.3.1. Переваги об'єктної моделі
- •14.3.2. Використання об'єктного підходу
- •14.3.3. Відкриті питання
- •15.1. Природа об'єкта
- •15.1.1. Що є й що не є об'єктом?
- •15.1.2. Стан
- •15.1.3. Поведінка
- •15.1.4. Ідентичність
- •Void drag(DisplayItem I); // Небезпечно
- •15.2. Відношення між об'єктами
- •15.2.1. Типи відношень
- •15.2.2. Зв'язки
- •15.2.3. Агрегація
- •15.3. Природа класів
- •15.3.1. Що таке клас?
- •15.3.2. Інтерфейс і реалізація
- •15.3.3. Життєвий цикл класу
- •15.4. Відношення між класами
- •15.4.1. Типи відношень
- •15.4.2. Асоціація
- •15.4.3. Успадкування
- •15.4.4. Агрегація
- •15.4.5. Використання
- •15.4.6. Інсталювання (Параметризація)
- •15.4.6. Метакласи
- •15.5. Взаємозв'язок класів і об'єктів
- •15.5.1. Відношення між класами й об'єктами
- •15.5.2. Роль класів і об'єктів в аналізі й проектуванні
- •16.1. Важливість правильної класифікації
- •16.1.1. Класифікація й об’єктно-орієнтовне проектування
- •16.1.2. Труднощі класифікації
- •16.2. Ідентифікація класів і об'єктів
- •16.2.1. Класичний і сучасний підходи
- •16.2.2. Об’єктно-орієнтований аналіз
- •16.3. Ключові абстракції й механізми
- •16.3.1. Ключові абстракції
- •16.3.2. Ідентифікація механізмів
- •17.1. Призначення мови uml
- •17.2. Загальна структура мови uml
- •17.3. Пакети в мові uml
- •17.4. Основні пакети мета-моделі мови uml
- •17.5. Специфіка опису мета-моделі мови uml
- •17.6. Особливості зображення діаграм мови uml
- •18.1. Варіант використання
- •18.2. Актори
- •18.3. Інтерфейси
- •18.4. Примітки
- •18.5. Відношення на діаграмі варіантів використання
- •18.5.1. Відношення асоціації
- •13.5.2. Відношення розширення
- •18.5.3. Відношення узагальнення
- •18.5.4. Відношення включення
- •18.6. Приклад побудови діаграми варіантів використання
- •18.7. Рекомендації з розроблення діаграм варіантів використання
- •19.1. Клас
- •19.1.1. Ім'я класу
- •19.1.2. Атрибути класу
- •19.1.3. Операція
- •19.2. Відношення між класами
- •19.2.1. Відношення залежності
- •19.2.2. Відношення асоціації
- •19.2.3. Відношення агрегації
- •19.2.4. Відношення композиції
- •19.2.5. Відношення узагальнення
- •19.3. Інтерфейси
- •19.5. Шаблони або параметризовані класи
- •19.6. Рекомендації з побудови діаграми класів
- •20.1. Автомати
- •20.2. Стан
- •20.2.1. Ім'я стану
- •20.2.2. Список внутрішніх дій
- •20.2.3. Початковий стан
- •20.2.4. Кінцевий стан
- •20.3. Перехід
- •20.3.2. Сторожова умова
- •20.3.3.Вираз дії
- •15.4. Складений стан і підстан
- •20.4.1. Послідовні підстани
- •20.4.2. Паралельні підстани
- •15.5. Історичний стан
- •20.6. Складні переходи
- •15.6.1. Переходи між паралельними станами
- •20.6.2. Переходи між складеними станами
- •20.6.3. Синхронізуючі стани
- •20.7. Рекомендації з побудови діаграм станів
- •21.1. Стан дії
- •21.2. Переходи
- •21.5. Рекомендації до побудови діаграм діяльності
- •22.1.1. Лінія життя об'єкта
- •22.1.2. Фокус керування
- •22.2. Повідомлення
- •22.2.1. Розгалуження потоку керування
- •22.2.2. Стереотипи повідомлень
- •22.2.3. Тимчасові обмеження на діаграмах послідовності
- •22.2.4. Коментарі або примітки
- •22.3. Приклад побудови діаграми послідовності
- •22.4. Рекомендації з побудови діаграм послідовності
- •23.1. Кооперація
- •23.2.1. Мультиоб'єкт
- •23.2.2. Активний об'єкт
- •23.2.3. Складений об'єкт
- •23.3. Зв'язки
- •23.3.1. Стереотипи зв'язків
- •23.4. Повідомлення
- •23.4.1. Формат запису повідомлень
- •23.5. Приклад побудови діаграми кооперації
- •23.6. Рекомендації з побудови діаграм кооперації
- •24.1. Компоненти
- •24.1.1. Ім'я компоненту
- •24.1.2. Види компонент
- •24.2. Інтерфейси
- •24.3. Залежності
- •24.4. Рекомендації з побудови діаграми компонент
- •25.1. Вузол
- •25.2. З'єднання
- •25.3. Рекомендації з побудови діаграми розгортання
- •26.1. Загальна характеристика case-засобу Rational Rose
- •26.2. Особливості робочого інтерфейсу Rational Rose
- •26.1.1. Головне меню програми
- •26.1.2. Стандартна панель інструментів
- •26.1.3. Вікно браузера
- •26.1.4. Спеціальна панель інструментів
- •26.1.5. Вікно діаграми
- •26.1.6. Вікно документації
- •26.1.7. Вікно журналу
- •26.3. Початок роботи над проектом у середовищі Rational Rose
- •26.4. Розроблення діаграми варіантів використання в середовищі Rational Rose
- •26.5. Розроблення діаграми класів у середовищі Rational Rose
- •26.6. Розроблення діаграми станів у середовищі Rational Rose
- •26.7. Розроблення діаграми послідовності в середовищі Rational Rose
- •26.8. Розроблення діаграми кооперації в середовищі Rational Rose
- •26.9. Розроблення діаграми компонентів у середовищі Rational Rose
- •26.10. Розроблення діаграми розгортання в середовищі Rational Rose
17.5. Специфіка опису мета-моделі мови uml
Мета-модель мови UML описується на деякій напівформальній мові з використанням трьох видів подань:
Абстрактного синтаксису
Правил правильної побудови виразів
Семантики
Абстрактний синтаксис є моделлю для опису деякої частини мови UML, призначеної для побудови діаграм класів на основі описів систем природною мовою. Можливості абстрактного синтаксису в мові UML досить обмежені й застосовуються тільки до інтерпретації позначень окремих компонентів діаграм, зв'язків між компонентами й припустимими додатковими позначеннями. До елементів абстрактного синтаксису відносяться деякі ключові слова й значення окремих атрибутів базових понять рівня мета-моделі, які мають фіксоване позначення у вигляді тексту природною мовою.
Правила правильної побудови виразів використовуються для задання додаткових обмежень або властивостей, якими повинні володіти ті або інші компоненти моделі. Оскільки вихідним поняттям ООП є поняття класу, його загальними властивостями повинні володіти всі екземпляри, які в цьому смислі повинні бути інваріантні один одному. Для задання цих інваріантних властивостей класів і відношень необхідно використовувати спеціальні вирази деякої формальної мови, у рамках UML мови об'єктних обмежень, що одержало назву, (Object Constraіnt Language, ОСL). Хоча мова ОСL і використовує природну мову для формулювання правил правильної побудови виразів, особливості її застосування є темою самостійного обговорення.
Семантика мови UML описується в основному природною мовою, але може містити в собі деякі додаткові позначення, що випливають зі зв'язків обумовлених понять із іншими поняттями. Семантика понять розкриває їхній зміст. Складність опису семантики мови UML полягає саме в мета-модельному рівні подань його основних конструкцій. З одного боку, поняття мови UML мають абстрактний характер (асоціація, композиція, агрегація, співпраця, стан). З іншого боку, кожне із цих понять допускає свою конкретизацію на рівні моделі (співробітник, відділ, посада, стаж).
Складність опису семантики мови UML випливає із цієї подвійності понять. Тут ми повинні дотримуватися традиційних правил викладу, оскільки розуміння семантики носить індуктивний характер і вимагає для своєї інтерпретації прикладів рівня моделі й об'єкта. Ілюстрація абстрактних понять на прикладі конкретних властивостей і відношень, а також їхніх значень дозволяє акцентувати увагу на загальних інваріантах цих понять, що необхідно для розуміння їхньої семантики.
Примітка
Таким чином, мета-модель мови UML може розглядатися як комбінація графічної нотації (спеціальних позначень), деякої формальної мови й природної мови. При цьому варто мати на увазі, що існує деяка теоретична межа, що обмежує опис мета-моделі засобами самої мета-моделі. Саме в подібних випадках застосовується природна мова, що володіє найбільшими виразними можливостями.
Хоча сам термін "природна мова" далеко не однозначний й породжує цілий ряд додаткових питань, тут ми обмежимося його трактуванням у формі звичайного тексту. Як би не хотілося деяким з вітчизняних розробників, повністю уникнути використання англійської мови під час опису мови UML, однак не вдасться. Проте, якщо виключити написання стандартних елементів і деяких ключових слів, то у всіх інших випадках під природною мовою можна розуміти рідну мову без спеціальних застережень.
Для надання формального характеру моделям UML використання природної мови повинне строго відповідати певним правилам. Наприклад, опис семантики мови UML може містити в собі фрази типу "Сутність А має здатність" або "Сутність Б є сутність В". У кожному із цих випадків ми будемо розуміти зміст фраз, керуючись традиційним розумінням речень української мови. Але цього може виявитися недостатньо для формального подання знань про розглянуті сутності. Тоді необхідно додатково специфікувати семантику цих простих фраз, для чого рекомендується використовувати наступні правила:
Явно вказувати в тексті екземпляр деякого метакласу. Мова йде про те, що в природній мові ми часто опускаємо слово "приклад" або "екземпляр", говорячи просто "клас". Так, фразу "Атрибут вік класу співробітник має значення 30 років" варто записати більш точно, а саме: "Атрибут вік екземпляра класу співробітник має значення 30 років".
У кожний момент часу використовується тільки те значення слова, що приписане імені відповідної конструкції мови UML. Всі додаткові особливості семантики повинні бути зазначені явно без неявних припущень.
Терміни мови UML можуть включати тільки один із припустимих префіксів, таких як під-, супер- або мета-. При цьому сам термін із префіксом записується одним словом.
На додаток до цього будуть використовуватися такі правила виділення тексту:
Якщо використовуються посилання на конструкції мови UML, а не на їхні подання в мета-моделі, варто застосовувати звичайний текст без будь-якого виділення.
Імена мета-класів є елементом нотації мови UML і являють собою іменник і, можливо, приєднаний до нього прикметник. У цьому випадку ім'я метакласа на англійському записується одним словом з виділенням кожної складової частини ім'я великою буквою (наприклад, ModelElement, StructuralFeature).
Імена мета-асоціацій і асоціацій класів записуються аналогічним чином (наприклад, ElementReference).
Імена інших елементів мови UML також записуються одним словом, але повинні починатися з маленької букви (наприклад, ownedElement, allContents).
Імена мета-атрибутів, які приймають булеві значення, завжди починаються із префікса "іs" (наприклад, іsAbstract).
Перераховані типи повинні завжди закінчуватися словом "Kіnd" (наприклад, AggregatіonKіnd).
При посиланнях у тексті на мета-класи, мета-асоціації, мета-атрибути й т.д. повинні завжди використовуватися в точності ті їхні імена, які зазначені в моделі.
Імена стандартних позначень (стереотипів) беруться у лапки й починаються з малої літери (наприклад, "type").
Розглянуті вище правила виділення тексту мають безпосереднє відношення до англомовних термінів мови UML. Оскільки питання локалізації мови UML дотепер не знайшло свого відбиття в роботі OMG, вітчизняним фахівцям прийшлось самостійно доповнювати ці правила на випадок використання в якості природної української мови. Ми будемо дотримуватися двох додаткових рекомендацій:
При описі семантики мови UML всі імена його стандартних елементів (мета-класів, мета-асоціацій, мета-атрибутів) допускається записувати на українській з додатковою вказівкою оригінального ім'я на англійській мові. При цьому, хоча імена стандартних елементів можуть складатися з декількох слів, відповідно до сформованої вітчизняної традиції, будемо їх записувати роздільно (наприклад, клас асоціації, елемент моделі, простір імен).
Під час розроблення конкретних моделей систем у формі діаграм мови UML доцільно застосовувати оригінальні англомовні терміни, дотримуючись описаних вище правил (крім, можливо, пояснювального тексту). Причина цієї рекомендації цілком очевидна – наступна інструментальна реалізація моделі може виявитися неможливою, якщо не дотримуватися оригінальних правил виділення тексту в мові UML. Це правило не поширюється на окремі приклади й фрагменти діаграм, які наводяться в тексті навчального посібника із ілюстративними цілями й лише розкривають особливості використання стандартних елементів мови UML.
Примітка
Наведені додаткові рекомендації не суперечать оригінальним правилам мови UML, а тільки уточнюють рамки використання природної мови при побудові моделей і при описі самої мови. Оскільки опис семантики будь-якої формальної мови пов'язаний із проблемою її інтерпретації, повністю обійтися без природної мови неможливо. Якщо питання використання оригінальних термінів під час побудови логічних і фізичних моделей не викликають сумнівів у більшості програмістів, то процес побудови концептуальних моделей складних систем формалізований у меншому ступені. Саме із цієї причини вихідні вимоги до системи формулюються на природній для розробників мові (у нашому випадку, на українській). У кожному разі ці аспекти використання мов при побудові моделей багатогранні й можуть служити темою окремої роботи.
У рамках мови UML всі подання про модель складної системи фіксуються у вигляді спеціальних графічних конструкцій, що одержали назву діаграм. У термінах мови UML визначені наступні види діаграм:
Діаграма варіантів використання (use case dіagram)
Діаграма класів (class dіagram)
Діаграми поведінки (behavіor dіagrams)
Діаграма станів (statechart dіagram)
Діаграма діяльності (actіvіty dіagram)
Діаграми взаємодії (іnteractіon dіagrams)
Діаграма послідовності (sequence dіagram)
Діаграма кооперації (collaboratіon dіagram)
Діаграми реалізації (іmplementatіon dіagrams)
Діаграма компонентів (component dіagram)
Діаграма розгортання (deployment dіagram)
З перерахованих вище діаграм деякі служать для позначення двох і більше інших підвидів діаграм. При цьому як самостійні подання в мові UML використовуються наступні діаграми:
1. Діаграма варіантів використання (див. розділ 18).
2. Діаграма класів (див. розділ 19).
3. Діаграма станів (див. розділ 20).
4. Діаграма діяльності (див. розділ 21).
5. Діаграма послідовності (див. розділ 22).
6. Діаграма кооперації (див. розділ 23).
7. Діаграма компонентів (див. розділ 24).
8. Діаграма розгортання (див. розділ 25).
Перелік цих діаграм і їхніх назв є канонічними в тому розумінні, що являють собою невід'ємну частину графічної нотації мови UML. Більше того, процес ООАП нерозривно пов'язаний із процесом побудови цих діаграм. При цьому сукупність побудованих у такий спосіб діаграм є самодостатньою в тому розумінні, що в них зберігається вся інформація, що необхідна для реалізації проекту складної системи.
Кожна із цих діаграм деталізує й конкретизує різні подання про модель складної системи в термінах мови UML. При цьому діаграма варіантів використання являє собою найбільш загальну концептуальну модель складної системи, що є вихідною для побудови всіх інших діаграм. Діаграма класів є, по своїй суті, логічною моделлю, що відбиває статичні аспекти структурної побудови складної системи.
Діаграми поведінки також є різновидами логічної моделі, які відбивають динамічні аспекти функціонування складної системи. І, нарешті, діаграми реалізації служать для подання фізичних компонентів складної системи й тому відносяться до її фізичної моделі. Таким чином, інтегрована модель складної системи в нотації UML (рис. 17.10) представляється у вигляді сукупності зазначених вище діаграм (див. рис. 17.9).
Примітка
У ранній літературі по UML як окрема діаграма розглядалася ще діаграма об'єктів. Однак у версії 1.3 вона не включена в перелік канонічних діаграм, оскільки її елементи можуть бути присутніми на діаграмах інших типів. Тому опис окремих елементів діаграми об'єктів розглядається нижче, при вивченні основних канонічних типів діаграм.