
- •Міністерство освіти та науки України в.В. Литвин, н.Б. Шаховська Проектування інформаційних систем
- •Передмова наукового редактора серії підручників «комп’ютинґ»
- •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.6. Особливості зображення діаграм мови uml
Більшість перерахованих вище діаграм є у своїй основі графами спеціального вигляду, що складаються з вершин у формі геометричних фігур, які зв'язані між собою ребрами або дугами. Оскільки інформація, що містить у собі граф, має в основному топологічний характер, ні геометричні розміри, ні розташування елементів діаграм (за деякими виключеннями, такими як діаграма послідовностей з метричною віссю часу) не мають принципового значення.
Рис. 17.10. Інтегрована модель складної системи в нотації UML
Для діаграм мови UML існують три типи візуальних позначень, які важливі з погляду вкладеної в них інформації:
Зв'язки, які представляються різними лініями на площині. Зв'язки в мові UML узагальнюють поняття дуг і ребер з теорії графів, але мають менш формальний характер.
Текст, що знаходиться всередині границь окремих геометричних фігур на площині. При цьому форма цих фігур (прямокутник, еліпс) відповідає деяким елементам мови UML (клас, варіант використання) і має фіксовану семантику.
Графічні символи, які зображаються поблизу від тих або інших візуальних елементів діаграм.
Примітка
Всі діаграми в мові UML зображуються з використанням фігур на площині. Однак деякі з фігур (наприклад, куби) можуть являти собою двовимірні проекції тривимірних геометричних тіл, але й у цьому випадку вони рисуються як фігури на площині. Хоча найближчим часом припускають включити в мову UML просторові діаграми, у розглянутій версії мови така можливість відсутня.
Таким чином, у мові UML використовується чотири основних види графічних конструкцій:
Значки або піктограми. Значок являє собою графічну фігуру фіксованого розміру й форми. Вона не може збільшувати свої розміри, щоб розмістити всередині себе додаткові символи. Значки можуть розміщуватися як всередині інших графічних конструкцій, так і поза ними. Прикладами значків можуть служити закінчення зв'язків елементів діаграм або деякі інші додаткові позначення.
Графічні символи на площині. Такі двовимірні символи зображуються за допомогою деяких геометричних фігур і можуть мати різну висоту й ширину з метою розміщення всередині цих фігур інших конструкцій мови UML. Найбільше часто всередині таких символів містяться рядки тексту, які уточнюють семантику або фіксують окремі властивості відповідних елементів мови UML. Інформація, що зберігається всередині фігур, має важливе значення для конкретної моделі проектованої системи, оскільки регламентує реалізацію відповідних елементів у програмному коді.
Шляхи, які являють собою послідовності з відрізків ліній, що з'єднують окремі графічні символи. При цьому кінцеві крапки відрізків ліній повинні обов'язково стикатися з геометричними фігурами, що служать для позначення вершин діаграм, як прийнято в теорії графів (див. розділ 4). З концептуальної точки зору шляхам у мові UML надається особливе значення, оскільки вони є простими топологічними сутностями. З іншого боку, окремі частини шляху або сегменти можуть не існувати самі по собі поза утримуючим їхнім шляхом. Шляхи завжди стикаються з іншими графічними символами на обох границях відповідних відрізків ліній. Інакше кажучи, шляхи не можуть обриватися на діаграмі лінією, що не стикається з жодним графічним символом. Як відзначалося вище, шляхи можуть мати як закінчення або термінатора спеціальну графічну фігуру – значок, що зображується на одному з кінців ліній, який є сегментом цього шляху.
Рядки тексту. Служать для подання різних видів інформації в деякій граматичній формі. Передбачається, що кожне використання рядка тексту повинно відповідати синтаксису в нотації мови UML, за допомогою якого може бути реалізований граматичний розбір цього рядка. Останній необхідний для одержання повної інформації про модель. Наприклад, рядки тексту в різних секціях позначення класу можуть відповідати атрибутам цього класу або його операціям. На використання рядків накладається важлива умова – семантика всіх припустимих символів повинна бути заздалегідь визначена в мові UML або служити предметом його розширення в конкретній моделі.
При графічному зображенні діаграм варто дотримуватися наступних основних рекомендацій:
Кожна діаграма повинна служити закінченим поданням відповідного фрагменту модельованої предметної області. Мова йде про те, що в процесі розроблення діаграми необхідно врахувати всі сутності, важливі з погляду контексту даної моделі й діаграми. Відсутність тих або інших елементів на діаграмі служить ознакою неповноти моделі й може вимагати її доопрацювання.
Всі сутності на діаграмі моделі повинні бути одного концептуального рівня. Тут мається на увазі погодженість не тільки імен однакових елементів, але й можливість вкладення окремих діаграм одна в одну для досягнення повноти подань. У випадку досить складних моделей систем необхідно дотримуватися стратегії послідовного уточнення або деталізації окремих діаграм.
Вся інформація про сутності повинна бути явно представлена на діаграмах. Мова йде про те, що, хоча в мові UML при відсутності деяких символів на діаграмі можуть бути використані їхні значення за замовчуванням (наприклад, у випадку неявної вказівки видимості атрибутів і операцій класів), необхідно прагнути до явного вказання властивостей всіх елементів діаграм.
Діаграми не повинні містити суперечливої інформації. Суперечливість моделі може служити причиною серйозних проблем при її реалізації й наступному використанні на практиці. Наприклад, наявність замкнутих шляхів при зображенні відношень агрегування або композиції приводить до помилок у програмному коді, що буде реалізовувати відповідні класи. Наявність елементів з однаковими іменами й різними атрибутами властивостей в одному просторі імен також приведе до неоднозначної інтерпретації й може служити джерелом проблем.
Примітка
Наявність в інструментальних CASE-засобах вбудованої підтримки візуалізації різних діаграм мови UML дозволяє до деякої міри виключити помилкове використання тих або інших графічних символів, а також контролювати унікальність імен елементів діаграм. Однак, оскільки вся відповідальність за остаточний контроль несуперечності моделі лежить на розробнику, необхідно пам'ятати, що неформальний характер мови UML може служити джерелом потенційних помилок, які в повному обсязі навряд чи будуть виявлені інструментальними засобами. Саме ця обставина потребує від всіх розробників глибокого знання нотації й семантики всіх елементів мови UML.
Діаграми не слід перевантажувати текстовою інформацією. Прийнято вважати, що візуалізація моделі є найефективнішою, якщо вона містить мінімум пояснювального тексту. Як правило, наявність більших фрагментів розгорнутого тексту служить ознакою недостатньої пропрацьованості моделі або її неоднорідності, коли в рамках однієї моделі представляється різна за характером інформація. Оскільки загальна декомпозиція моделі на окремі типи діаграм здатна задовольнити найдетальніші подання розробників про систему, важливо вміти правильно відображати ті або інші сутності й аспекти моделювання у відповідні елементи канонічних діаграм.
Кожна діаграма повинна бути самодостатньою для правильної інтерпретації всіх її елементів і розуміння семантики всіх використовуваних графічних символів. Будь-які пояснювальні тексти, які не є власними елементами діаграми (наприклад, коментарями), не повинні звертати увагу розробників. У той же час окремі досить загальні фрагменти діаграм можуть уточнюватися або деталізуватися на інших діаграмах цього ж типу. Таким чином, модель системи мовою UML являє собою пакет ієрархічно вкладених діаграм, деталізація яких повинна бути достатньою для наступної генерації програмного коду, що реалізує проект відповідної системи.
Кількість типів діаграм для конкретної моделі системи не є строго фіксованою. Мова йде про те, що для простих додатків немає необхідності будувати всі без винятку типи діаграм. Деякі з них можуть бути просто відсутні у проекті системи, і цей факт не буде вважатися помилкою розробника. Наприклад, модель системи може не містити діаграму розгортання для програми, яка локально виконується на комп'ютері користувача. Важливо розуміти, що перелік діаграм залежить від специфіки конкретного проекту системи.
Кожна з моделей системи повинна містити тільки ті елементи, які визначені в нотації мови UML. Мається на увазі вимога починати розроблення проекту, використовуючи тільки ті конструкції, які вже визначені в мета-моделі UML. Як показує практика, цих конструкцій цілком достатньо для подання більшості типових проектів програмних систем. І тільки у випадку відсутності необхідних базових елементів мови UML варто використовувати механізми їхнього розширення для адекватного подання конкретної моделі системи. При цьому не допускається перевизначення семантики тих елементів, які віднесені до базової нотації мета-моделі мови UML.
Примітка
Як не згадати тут відомий афоризм, що одержав назву "бритва Оккама". Суть вираження середньовічного вченого схоласта в досить вільному перекладі зводиться до наступного: "Не плоди міркувань більше сутності". Інакше кажучи, потрібно прагнути додатково не ускладнювати й без того складні моделі систем, а по можливості спрощувати їх за рахунок уніфікації позначень і семантики базових елементів.
Процес побудови окремих типів діаграм має свої особливості, які тісно пов'язані із семантикою елементів цих діаграм. Сам процес ООАП у контексті мови UML одержав спеціальну назву – раціональний уніфікований процес (Ratіonal Unіfіed Process, RUP). Концепція RUP і основні його елементи розроблені А. Джекобсоном у ході його роботи над мовою UML.
Примітка
При дослівному перекладі терміна RUP губиться деяке додаткова семантика, пов'язана із двозначним тлумаченням англійського Ratіonal. Мова йде про інший варіант перекладу – уніфікований процес від фірми Ratіonal Software, співробітниками якої є з деякого часу його розробники, включаючи згаданого вище А. Джекобсона.
Суть концепції RUP полягає в послідовній декомпозиції або розбиванні процесу ООАП на окремі етапи, на кожному з яких здійснюється розроблення відповідних типів канонічних діаграм моделі системи. При цьому на початкових етапах RUP будуються логічні подання статичної моделі структури системи, потім – логічні подання моделі поведінки, і лише після цього – фізичні подання моделі системи. Як неважко помітити, у результаті RUP повинні бути побудовані канонічні діаграми мовою UML, при цьому послідовність їхнього розроблення в основному збігаються з їхньою послідовною нумерацією. Таким чином, порядок викладу канонічних діаграм не є випадковим, а визначається загальними рекомендаціями раціонального уніфікованого процесу.
Висновки
Контрольні питання
1. Призначення мови UML
2. Загальна структура мови UML
3. Пакети в мові UML
4. Основні пакети метамоделі мови UML
5. Специфіка опису метамоделі мови UML
6. Особливості зображення діаграм мови UML
РОЗДІЛ 18. Діаграма варіантів використання (use case diagram)
Варіант використання
Актори
Інтерфейси
Примітки
Відношення на діаграмі варіантів використання
Рекомендації з розроблення діаграм варіантів використання
Візуальне моделювання в UML можна представити як деякий процес порівневого спуску від найзагальнішої і абстрактної концептуальної моделі початкової системи до логічної, а потім і до фізичної моделі відповідної програмної системи. Для досягнення цих цілей спочатку будується модель у формі так званої діаграми варіантів використання (use case diagram), яка описує функціональне призначення системи або, іншими словами, те, що система робитиме в процесі свого функціонування. Діаграма варіантів використання є початковим концептуальним поданням або концептуальною моделлю системи в процесі її проектування і розроблення.
Розроблення діаграми варіантів використання переслідує такі цілі:
Визначити загальні межі і контекст модельованої предметної області на початкових етапах проектування системи.
Сформулювати загальні вимоги до функціональної поведінки проектованої системи.
Розробити початкову концептуальну модель системи для її подальшої деталізації у формі логічних і фізичних моделей.
Підготувати початкову документацію для взаємодії розробників системи з її замовниками і користувачами.
Суть цієї діаграми полягає в наступному: проектована система представляється у вигляді множини сутностей або акторів, що взаємодіють із системою за допомогою так званих варіантів використання. При цьому актором (actor) або дійовою особою називається будь-яка сутьність, що взаємодіє із системою ззовні. Це може бути людина, технічний пристрій, програма або будь-яка інша система, яка може служити джерелом дії на модельовану систему так, як визначить сам розробник. У свою чергу, варіант використання (use case) служить для опису сервісів, які система надає акторові. Іншими словами, кожний варіант використання визначає деякий набір дій, що здійснюється системою під час діалогу з актором. При цьому нічого не говориться про те, яким чином буде реалізовано взаємодію акторів з системою.
Примітка
Розглядаючи діаграму варіантів використання як модель системи, можна асоціювати її з моделлю чорного ящика" (див. рис. 3.7). Дійсно, докладна деталізація даної діаграми на початковому етапі проектування швидше має негативний характер, оскільки зумовлює способи реалізації поведінки системи. А згідно рекомендацій RUP саме ці аспекти мають бути приховані від розробника на діаграмі варіантів використання.
У найзагальнішому випадку, діаграма варіантів використання є граф спеціального вигляду, який є графічною нотацією для представлення конкретних варіантів використання, акторів, можливо деяких інтерфейсів, і відношень між цими елементами. При цьому окремі компоненти діаграми можуть бути поміщені в прямокутник, який позначає проектовану систему в цілому. Слід зазначити, що відношеннями даного графа можуть бути тільки деякі фіксовані типи взаємозв'язків між акторами і варіантами використання, які в сукупності описують сервіси або функціональні вимоги до модельованої системи.
Як було відзначено у розділі 17, раціональним уніфікованим процесом розроблення моделі складної системи є розбиття її на складові частини з мінімумом взаємозв'язаних зв'язків на основі виділення пакетів. У самій мові UML пакет Варіанти використання є підпакетом пакету Елементи поведінки. Останній специфікує поняття, за допомогою яких визначають функціональність модельованих систем. Елементи пакету варіантів використання є первинними по відношенню до тих, за допомогою яких може бути описана сутність, такі як системи і підсистеми. Проте внутрішня структура цих сутностей ніяк не описується. Базові елементи цього пакету – варіант використання і актор. З цих понять ми і приступимо до вивчення діаграм варіантів використання.