- •Міністерство освіти та науки України в.В. Литвин, н.Б. Шаховська Проектування інформаційних систем
- •Передмова наукового редактора серії підручників «комп’ютинґ»
- •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
1.2. Структура складних систем
1.2.1. Приклади складних систем
Структура персонального комп'ютера. Персональний комп'ютер (ПК) - прилад помірної складності. Більшість ПК складаються з одних і тих же основних елементів: системної плати, монітора, клавіатури і пристрою зовнішньої пам'яті якого-небудь типу (гнучкого або жорсткого диска). Ми можемо узяти будь-яку з цих частин і розкласти її у свою чергу на складові. Системна плата, наприклад, містить оперативну пам'ять, центральний процесор (ЦП) і шину, до якої підключені периферійні пристрої. Кожну з цих частин можна також розкласти на складові: ЦП складається з регістрів і схем управління, які самі складаються з ще простіших деталей: діодів, транзисторів і так далі.
Це приклад складної ієрархічної системи. Персональний комп'ютер нормально працює завдяки чіткому спільному функціонуванню всіх його складових частин. Разом ці частини утворюють логічне ціле. Ми можемо зрозуміти, як працює комп'ютер, лише тому, що можемо розглядати окремо кожну його складову. Таким чином, можна вивчати пристрої монітора і жорсткого диска незалежно один від одного. Аналогічно можна вивчати арифметичну частину ЦП, не розглядаючи при цьому підсистему пам'яті.
Річ не лише в тому, що складна система ПК ієрархічна, але в тому, що рівні цієї ієрархії представляють різні рівні абстракції, причому один надбудований над іншим і кожний може бути розглянутий (зрозумілий) окремо. На кожному рівні абстракції ми знаходимо набір пристроїв, які спільно забезпечують деякі функції більш високого рівня, і вибираємо рівень абстракції, виходячи з наших специфічних потреб. Наприклад, намагаючись досліджувати проблему синхронізації звернень до пам'яті, можна залишатися на рівні логічних елементів комп'ютера, але цей рівень абстракції не підходить при пошуку помилки в прикладній програмі, що працює з електронними таблицями.
Структура рослин і тварин. Ботанік намагається зрозуміти схожість і відмінності рослин, вивчаючи їх морфологію, тобто форму і структуру. Рослини - це складні багатоклітинні організми. В результаті спільної діяльності різних органів рослин відбуваються такі складні типи поведінки, як фотосинтез і всмоктування вологи.
Рослина складається з трьох основних частин: коріння, стебла і листя. Кожна з них має свою особливу структуру. Корінь, наприклад, складається з кореневих відростків, кореневих волосків, верхівки кореня і так далі. Розглядаючи зріз листка, ми бачимо його епідерміс, мезофіл і судинну тканину. Кожна з цих структур, у свою чергу, є набір кліток. Усередині кожної клітки можна виділити наступний рівень, який включає хлоропласт, ядро і так далі. Так само, як у комп'ютера, частини рослини утворюють ієрархію, кожний рівень якої володіє власною незалежною складністю.
Всі частини на одному рівні абстракції взаємодіють сповна певним чином. Наприклад, на вищому рівні абстракції, коріння відповідає за поглинання з грунту води і мінеральних речовин. Коріння взаємодіє із стеблами, які передають ці речовини листю. Листя у свою чергу використовує воду і мінеральні речовини, що доставляються стеблами, і виробляють за допомогою фотосинтезу необхідні елементи.
Для кожного рівня абстракції завжди чітко розмежоване "зовнішнє" і "внутрішнє". Наприклад, можна встановити, що частини аркуша спільно забезпечують функціонування аркуша в цілому і дуже слабо взаємодіють або взагалі прямо не взаємодіють з елементами коріння. Простіше кажучи, існує чітке розділення функцій різних рівнів абстракції.
У комп'ютері транзистори використовуються як в схемі ЦП, так і жорсткого диска. Аналогічно цьому велике число "уніфікованих елементів" є у всіх частинах рослини. Наприклад, клітини служать основними будівельними блоками всіх структур рослини; коріння, стебла і листя рослини складаються з кліток. І хоча будь-який з цих вихідних елементів дійсно є клітиною, існує величезна кількість всіляких клітинок. Є клітини, що містять і не містять хлоропласт, клітини з оболонкою, проникною і непроникною для води, і навіть живі і померлі клітини.
При вивченні морфології рослини ми не виділяємо в ній окремі частини, що відповідають за окремі фази єдиного процесу, наприклад, фотосинтезу. Фактично не існує централізованих частин, які безпосередньо координують діяльність нижчих рівнів. Замість цього ми знаходимо окремі частини, які діють як незалежні посередники, кожний з яких поводиться досить складно і при цьому погоджено з вищими рівнями. Лише завдяки спільним діям великого числа посередників утворюється вищий рівень функціонування рослини. Наука про складність називає це виникаючою поведінкою. Поведінка цілого об’єкта завжди складніша, ніж поведінка суми його складових.
Звернемося до зоології. Багатоклітинні тварини, як і рослини, мають ієрархічну структуру: клітки формують тканини, тканини працюють разом як органи, групи органів визначають систему (наприклад, травну) і так далі. Основний будівельний блок всіх рослин і тварин - клітина. Природно, між клітинами рослин і тварин існують відмінності. Клітини рослини, наприклад, поміщені в жорстку целюлозну оболонку на відміну від клітинок тварин. Але, не дивлячись на ці відмінності, обоє вказаної структури, поза сумнівом, є клітинами. Це приклад узагальненості в різних сферах.
Життя рослин і тварин підтримує значне число механізмів надклітинного рівня, тобто вищого рівня абстракції. І рослини, і тварини використовують судинну систему для транспортування всередині організму поживних речовин. І в тих, і в інших може існувати відмінність роду усередині одного вигляду.
Структура речовини. Дослідження в таких різних областях, як астрономія і ядерна фізика, дають безліч інших прикладів неймовірно складних систем. У цих двох дисциплінах ми знайдемо приклади ієрархічних структур. Астрономи вивчають галактики, які об'єднані в скупчення, а зірки, планети і інші небесні тіла утворюють галактику. Ядерники мають справу із структурною ієрархією фізичних тіл зовсім іншого масштабу. Атоми складаються з електронів, протонів і нейтронів; електрони, мабуть, є елементарними частинками, але протони, нейтрони й інші важкі частини формуються із ще дрібніших компонентів (кварків).
Ми знову виявляємо спільність форм механізмів в цих складних ієрархіях. Насправді виявляється, що у Всесвіті працюють всього чотири типи сил: гравітаційна, електромагнітна, сильна і слабка взаємодії. Багато законів фізики універсальні, наприклад, закон збереження енергії і імпульсу можна застосувати і до галактик, і до кварків.
Структура соціальних інститутів. Як останній приклад складних систем розглянемо структуру суспільних інститутів. Люди об'єднуються в групи для вирішення завдань, які не можуть бути вирішені індивідуально. Одні організації швидко розпадаються, інші функціонують впродовж декількох поколінь. Чим більша організація, тим виразніше виявляється в ній ієрархічна структура. Транснаціональні корпорації складаються з компаній, які у свою чергу складаються з відділень, що містять різні філії. Останнім належать вже окремі офіси і так далі. Межі між частинами організації можуть змінюватися, і з часом може виникнути нова, стабільніша ієрархія.
Відношення між різними частинами великої організації подібні до відношень між компонентами комп'ютера, рослини або галактики. Характерно, що міра взаємодії між співробітниками однієї установи поза сумнівом вища, ніж між співробітниками двох різних установ. Клерк, наприклад, зазвичай не спілкується з виконавчим директором компанії, а в основному обслуговує відвідувачів. Але і тут різні рівні мають єдині механізми функціонування. Робота і клерка і директора оплачується однією фінансовою організацією, і обоє вони для своїх цілей використовують загальну апаратуру, зокрема, телефонну систему компанії.