
- •Міністерство освіти та науки України в.В. Литвин, н.Б. Шаховська Проектування інформаційних систем
- •Передмова наукового редактора серії підручників «комп’ютинґ»
- •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
4.1. Передісторія. Математичні основи
Представлення різних понять навколишнього світу за допомогою графічної символіки йде своїми витоками в глибоку давнину. Як приклади можна привести умовні позначення знаків Зодіаку, магічні символи різних окультних доктрин, графічні зображення геометричних фігур на площині і в просторі. Важливою перевагою тієї або іншої графічної нотації є можливість образного закріплення змістовного сенсу або семантики окремих понять, що істотно спрощує процес спілкування.
4.1.1. Теорія множин
Однією з найвідоміших систем графічних символів, що зробила безпосередній вплив на розвиток наукового мислення, слід відзначити мову діаграм англійського логіка Джона Венна (1834-1923). Діаграми Венна застосовуються для ілюстрації основних теоретико-множинних операцій, які є предметом спеціального розділу математики – теорії множин. Оскільки багато загальних ідей моделювання систем мають адекватний опис в термінології теорії множин, розглянемо основні поняття даної теорії, що мають відношення до сучасних концепцій і технологій дослідження складних систем.
Початковим поняттям теорії множин є саме поняття множина, під якою прийнято розуміти деяку сукупність об'єктів, що володіють спільними ознаками. При цьому не робиться ніяких припущень ні про природу цих об'єктів, ні про спосіб їх включення в дану сукупність. Окремі об'єкти, які утворюють ту чи іншу множину, називаються елементами цієї множини. Питання "Чому ми розглядаємо ту або іншу сукупність елементів як множину?" не вимагає відповіді, оскільки у загальне визначення множини не входять ніякі додаткові умови на включення окремих елементів у множину. Якщо нам хочеться, наприклад, розглянути множину, що складається з трьох елементів: "сонце, море, апельсин", то ніхто не зможе заборонити це зробити.
Прикладів конкретних множин можна навести достатньо багато. Це і множина квартир житлового будинку, і множина натуральних чисел. Сукупність комп'ютерів в офісі теж є множиною, хоча, можливо, вони і з’єднані між собою в мережу.
Множини позначаються прописними буквами латинського алфавіту. При цьому окремі елементи позначаються рядковими буквами, іноді з індексами, які вносять деяку впорядкованість в послідовність розгляду цих елементів. Наприклад, множину квартир 100-квартирного житлового будинку з використанням спеціальних позначень можна записати таким чином: A={a1, а2, а3,..., а100}. Тут фігурні дужки служать позначенням сукупності елементів, кожний з яких має свій унікальний числовий індекс. Важливо розуміти, що для даної конкретної множини елемент a10 позначає окрему квартиру у цьому житловому будинку. При цьому зовсім необов'язково, щоб номер цієї квартири був рівний 10, хоча з погляду зручності це було б бажано.
Прийнято називати елементи окремої множини такими, що належать цій множині. Такий факт записується за допомогою спеціального символу "є", який так і називається – символ приналежності. Наприклад, запис а10єА означає той простий факт, що окрема квартира (можливо, з номером 10) належить множині квартир деякого житлового будинку.
Наступним важливим поняттям, яке служить прототипом багатьох конкретніших термінів під час моделюванні складних систем, є поняття підмножини. Якщо є деяка сукупність, що розглядається як множина, то будь-яка її частина буде підмножиною. Так, наприклад, сукупність квартир на першому поверсі житлового будинку є ніщо інше, як підмножина прикладу, що розглядався нами вище. Ситуація стає не такою тривіальною, якщо розглядати множину абстрактних понять, таких як сутність або клас.
Для позначення підмножини використовується спеціальний символ. Якщо стверджується, що множина А є підмножиною множини В, то це записується як АВ. Запом’ятовувати подібні значки не завжди зручно, тому з часом була запропонована спеціальна система графічних позначень.
Як же використовуються діаграми Венна в теорії множин? Виявляється, той факт, що деяка сукупність елементів утворює множину, можна позначити графічно у вигляді круга. У цьому випадку коло має змістовний сенс або, виражаючись точнішою мовою, семантику межі даної множини. Очевидно, що розгляд відношення включення елементів однієї множини в іншу можна зобразити графічно таким чином (рис. 4.1). На цьому рисунку більшій множині В відповідає зовнішній круг, а меншій множині (підмножині) А – внутрішній.
Рис. 4.1. Діаграма Венна для відношення включення двох множин
Так само можна зобразити і основні теоретико-множинні операції. Так, перетином двох множин А і В називається деяка третя множина С, яка складається з тих і лише тих елементів двох початкових множин, які одночасно належать і множині А, і множині В. Для цієї операції також є спеціальне позначення: С=АВ. Наприклад, якщо як множину А для операції перетину розглянути множину співробітників деякої фірми, а як множину В – множину всіх чоловіків, то неважко здогадатися, що множина С складатиметься з елементів всіх співробітників чоловічої статі даної фірми. Операція перетину множин також може бути проілюстрована за допомогою діаграм Венна (рис. 4.2). На цьому малюнку умовно зображено дві множини А і В, затінена область якраз і відповідає множині С, що є перетином множин А і В.
Рис. 4.2 Діаграма Венна для перетину двох множин
Наступною операцією, яка також допускає предметну інтерпретацію, є операція об'єднання множин. Під об'єднанням двох множин А і В розуміється деяка третя множина, хай це буде D, яка складається з тих і лише тих елементів, які належать або А, або В, або їм обом одночасно. Звичайно, спеціальне позначення є і для цієї операції: D= AB. Так, якщо множина А складається з клавіатури і мишки, а множина В – з системного блоку і монітора, то неважко здогадатися, що їх об'єднання, тобто множина D, утворює основні складові персонального комп'ютера. І для цієї операції є умовне графічне подання (рис. 4.3).
Рис. 4.3. Діаграма Венна для об'єднання двох множин
На цьому рисунку об'єднанню двох початкових множин також відповідає затемнена область, тільки розміри і форма її відрізняються від випадку перетину двох множин на попередньому рисунку.
Останнє, на що слід було б звернути увагу при такому короткому знайомстві з основами теорії множин – це на так звані поняття потужності множини і відношення множин. Хоча існують і інші операції над множинами, а також цілий ряд додаткових понять, їх розгляд виходить за рамки цієї книги. Що стосується поняття потужності множини, то цей термін важливий для аналізу кратності зв'язків, оскільки асоціюється з кількістю елементів окремої множини. У випадку скінченної множини ситуація дуже проста, оскільки потужність скінченної множини рівна кількості елементів цієї множини. Таким чином, повертаючись наприклад до множини А квартир житлового будинку, можна сказати, що її потужність рівна 100.
Ситуація ускладнюється, коли розглядаються нескінченні множини. Обмежимо наш розгляд нескінченними множинами зліченної потужності. Такими множинами прийнято вважати множини, що містять нескінченне число елементів, які, проте, можна перенумерувати натуральними числами 1, 2, 3 і так далі. При цьому важливо мати на увазі, що досягти останнього елементу при такій нумерації принципово неможливо, інакше множина виявиться скінченною. Наприклад, є всі підстави вважати множину всіх зірок нескінченною, хоча багато хто з них має свою унікальну назву.
Також фундаментальним поняттям є відношення множин, яке часто замінюється термінами зв'язок або співвідношення. Цей термін веде своє походження від теорії множин і служить для позначення будь-якої підмножини впорядкованих кортежів, побудованих з елементів деяких початкових множин. При цьому під кортежем розуміється просто набір або список впорядкованих елементів. Іншими словами, якщо розглядати перший елемент кортежу, то він завжди буде першим в списку елементів, другий елемент кортежу буде другим елементом в списку і так далі.
Кортеж з двох елементів зручно позначати як <a1, a2>, з трьох елементів – <a1, a2, a3> і так далі. При цьому окремі елементи можуть належати як одній і тій же множині, так і різним множинам. Важливо мати на увазі, що порядок вибору елементів для побудови кортежів строго фіксований для конкретного подання. Мова йде про те, що перший елемент завжди вибирається з першої множини, другий – з другої, і т. д:
Відношення у цьому випадку характеризуватиме спосіб або семантику вибору окремих елементів з одного або декількох множин для подібного впорядкованого списку. У цьому сенсі взаємозв'язок є окремим випадком відношення, про що буде сказано у подальшому. Діаграми Венна не призначені для ілюстрації відношень у загальному випадку. Проте відношення послужили початковою ідеєю для розвитку іншої теорії, яка навіть у своїй назві несе відбиток графічної нотації, а саме – теорії графів. У зв'язку з цим найважливішим є той факт, що теоретико-множинні відношення послужили також основою для розроблення реляційної алгебри в теорії реляційних баз даних. Розвиток останньої привів до того, що останніми роками саме реляційні СКБД конкретних фірм домінують на ринку відповідного програмного забезпечення.