
- •Міністерство освіти та науки України в.В. Литвин, н.Б. Шаховська Проектування інформаційних систем
- •Передмова наукового редактора серії підручників «комп’ютинґ»
- •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
16.3.2. Ідентифікація механізмів
Як знайти механізми? У попередньому обговоренні ми називали механізмами структури, за допомогою яких об'єкти взаємодіють один з одним і поводяться так, як потрібно. Так само як при розробленні класу фактично визначається поведінка окремих об'єктів, так само й механізми служать для задання поведінки сукупності об'єктів. Таким чином, механізми представляють шаблони поведінки.
Розглянемо вимогу, яка ставиться до автомобіля: натискання на акселератор повинно приводити до збільшення обертів двигуна, а відпускання акселератора - до їх зменшення. Як це відбувається, водієві зовсім байдуже. Може бути використаний будь-який механізм, який забезпечує потрібну поведінку, і його вибір - справа смаку розроблювача. Наприклад, припустимо кожне із запропонованих нижче інженерних рішень:
Механічний зв'язок між акселератором і карбюратором (звичайне рішення).
Під педаллю ставиться датчик тиску, що з'єднується з комп'ютером, який керує карбюратором (механізм керування через проводи).
Карбюратора немає. Бак з пальним перебуває на даху автомобіля й паливо вільно тече у двигун. Потік палива регулюється затискачем на трубці. Натискання на педаль акселератора послабляє затискач (дуже дешево).
Яку саме реалізацію вибере розроблювач, залежить від таких параметрів, як вартість, надійність, технологічність і т.д.
Ключові абстракції визначають словник предметної області, механізми визначають суть проекту. У процесі проектування розроблювач повинен придумує не тільки наповнення класів, але й те, як об'єкти цих класів будуть взаємодіяти один з одним. Механізм взаємодії розкладається на методи класів. У підсумку протокол класу буде відбивати поведінку його об'єктів і роботу механізмів, в яких вони беруть участь.
Механізми, таким чином, являють собою стратегічні рішення в проектуванні, подібно проектуванню структури класів. З іншої сторони, проектування інтерфейсу якогось одного класу - це скоріше тактичне рішення. Стратегічні рішення повинні виконуватись явно, інакше в нас вийде неорганізований набір об'єктів, що кидаються виконувати роботу, розштовхуючи один одного. У найелегантніших, найстрункіших і найшвидших програмах втілені ретельно розроблені механізми.
Механізми представляють тільки один із шаблонів, які ми знаходимо в структурованих системах. Так, на нижньому кінці своєрідної біологічної піраміди перебувають ідіоми. Наприклад, в CLOS не прийнято використати підкреслення в іменах функцій або змінних, хоча в Ada ця справа звичайна. Вивчаючи мову, доводиться вчити її ідіоми, які звичайно передаються у формі фольклору. Однак, ідіоми відіграють важливу роль в кодифікації шаблонів низького рівня. Багато загально програмістських дій ідіоматичні і тому розпізнання таких ідіом дозволяє використовувати конструкції C++ для вираження функціональності поза самою цією мовою зі збереженням ілюзії, що вони є частиною мови.
Місце на верху піраміди займає середовище розроблення. Середовище розроблення - це набір класів, призначених для певної прикладної ситуації. Середовище дає готові класи, механізми й послуги, якими можна відразу користуватися або пристосовувати для своїх потреб.
Якщо ідіоми становлять частину програмістської культури, то середовища розроблення - комерційний продукт. Наприклад, Apple MacApp і його спадкоємець Bedrock - середовища, написані на C++ і призначені для побудови ІС зі стандартним інтерфейсом користувача Macintosh. Аналогічну роль для Windows відіграють Microsoft Foundation Classes і ObjectWindows корпорації Borland.
На цьому завершується наше вивчення класифікації й понять, що є основою об’єктно-орієнтованого проектування. Наступні розділи присвячені самому методу, зокрема системі позначень, процесу проектування й розгляду практичних прикладів за допомогою UML.
Висновки
1. Ідентифікація класів і об'єктів - найважливіше завдання об’єктно-орієнтованого проектування; процес ідентифікації складається з відкриття й винаходу.
2. Класифікація є проблемою групування (кластеризації) об'єктів.
3. Класифікація - процес послідовних наближень; проблеми класифікації обумовлені в основному тим, що є багато рівноправних рішень.
4. Є три підходи до класифікації: класичний розподіл за категоріями (класифікація за властивостями), концептуальна кластеризація (класифікація за поняттями) і теорія прототипів (класифікація за подібністю із прототипом).
5. Метод сценаріїв - це потужний засіб об’єктно-орієнтованого аналізу, його можна використати для інших методів: класичного аналізу, аналізу поведінки й аналізу предметної області.
6. Ключові абстракції відображають словник предметної області; їх шукають в самій області, або придумують у процесі проектування.
7. Механізми позначають стратегічні проектні рішення відносно спільної діяльності об'єктів багатьох різних типів.
Контрольні питання
1. Важливість правильної класифікації.
2. Складнощі класифікації.
3. Ідентифікація класів і об'єктів.
4. CRC-картки.
5. Ключові абстракції.
6. Ідентифікація механізмів.
РОЗДІЛ 17. Основні компоненти мови UML
Призначення мови UML
Загальна структура мови UML
Пакети в мові UML
Основні пакети метамоделі мови UML
Специфіка опису метамоделі мови UML
Особливості зображення діаграм мови UML
Мова UML являє собою загально-цільову мову візуального моделювання, яка розроблена для специфікації, візуалізації, проектування й документування компонентів програмного забезпечення, бізнес-процесів і інших систем. Мова UML одночасно є простим і потужним засобом моделювання, що може бути ефективно використана для побудови концептуальних, логічних і графічних моделей складних систем різного цільового призначення. Ця мова увібрала в себе найкращі якості методів програмної інженерії, які з успіхом використовувалися протягом останніх років під час моделювання великих і складних систем.
Мова UML заснована на деяких базових поняттях, які можуть бути вивчені й застосовані більшістю програмістів і розробників, знайомих з методами об’єктно-орієнтованого аналізу й проектування. При цьому базові поняття можуть комбінуватися й розширюватися таким чином, що фахівці об'єктного моделювання одержують можливість самостійно розробляти моделі великих і складних систем у різних предметних областях.
Конструктивне використання мови UML ґрунтується на розумінні загальних принципів моделювання складних систем і особливостей процесу об’єктно-орієнтованого аналізу й, зокрема, проектування. Вибір виразних засобів для побудови моделей складних систем визначає ті завдання, які можуть бути вирішені з використанням даних моделей. При цьому одним з основних принципів побудови моделей складних систем є принцип абстрагування, що пропонує включати в модель тільки ті аспекти проектованої системи, які мають безпосереднє відношення до виконання системою своїх функцій або свого цільового призначення. При цьому всі другорядні деталі опускаються, щоб надмірно не ускладнювати процес аналізу й дослідження отриманої моделі.
Іншим принципом побудови моделей складних систем є принцип багатомодельності. Цей принцип являє собою твердження про те, що ніяка єдина модель не може з достатнім ступенем адекватності описувати різні аспекти складної системи. Стосовно до методології ООАП це означає, що досить повна модель складної системи допускає деяке число взаємозалежних подань (vіews), кожне з яких адекватно відбиває деякий аспект поведінки або структури системи. При цьому найзагальнішими поданнями складної системи прийнято вважати статичне й динамічне подання, які у свою чергу можуть підрозділятися на інші детальніші подання. Феномен складної системи саме й полягає в тому, що ніяке її єдине подання не є достатнім для адекватного вираження всіх особливостей модельованої системи.
Ще одним принципом прикладного системного аналізу є ієрархічна побудова моделей складних систем. Цей принцип пропонує розглядати процес побудови моделі на різних рівнях абстрагування або деталізації в рамках фіксованих подань. При цьому вихідна або первісна модель складної системи має найзагальніше подання. Така модель будується на початковому етапі проектування й може не містити багатьох деталей і аспектів модельованої системи.
Рис. 7.1. Загальна схема взаємозв'язків моделей і подань складної системи в процесі об’єктно-орієнтованого аналізу й проектування.
Таким чином, процес ООАП можна представити як порівневий спуск від найбільш загальних моделей і подань концептуального рівня до більш часткових і детальних подань логічного й фізичного рівня. При цьому на кожному з етапів ООАП дані моделі послідовно доповнюються все більшою кількістю деталей, що дозволяє їм більш адекватно відображати різні аспекти конкретної реалізації складної системи. Загальна схема взаємозв'язків моделей ООАП представлена на рис. 12.1.
Примітка
Назва "фізична модель" у термінології ООАП і мови UML відрізняється від загальноприйнятого трактування цього терміну в загальній класифікації моделей систем. В останньому випадку під фізичною моделлю системи розуміють деяку матеріальну конструкцію, що володіє властивостями подібними з формою оригіналу. Прикладами таких моделей можуть служити моделі технічних систем (літаків, кораблів), архітектурних споруджень (будинків, мікрорайонів). Що стосується використання цього терміну в ООАП і мові UML, тут фізична модель відбиває компонентний склад проектованої системи з погляду її реалізації на деякій технічній базі й обчислювальних платформах конкретних виробників.