
- •Лекція 1. Тема: ядра знань swebok
- •1.1. Аналіз і характеристика областей знань swebok
- •1.1.1 Основи програмних вимог (Software Requirements)
- •1.1.2. Проектування пз (Software design)
- •1.1.3. Конструювання пз (Software Construction)
- •1.1.4 Тестування пз (Software Testing)
- •1.1.5 Супровід пз (Software maintenance)
- •1.1.6. Управління конфігурацією пз (Software Configuration Management– scm)
- •1.1.7. Управління інженерією пз (Software Engineering Management)
- •1.1.8. Процес інженерії пз (Software Engineering Process)
- •1.1.9. Методи і засоби інженерії пз (Software Engineering Tools and Methods)
- •Лекція 2. Тема: життєвий цикл і етапи розробки програмного забезпечення
- •Лекція 3. Тема: еволюція моделей життєвого циклу програмного забезпечення
- •1.6. Прискорення розробки пз.
- •Лекція 4. Тема: оцінка якості процесів створення програмного забезпечення
- •Лекція 5. Тема: визначення вихідних даних для проектування програмного забезпечення
- •5.1 Визначення вимог до пз
- •5.2 Формування і аналіз вимог
- •5.2.1 Опорні точки зору
- •5.2.2 Сценарії
- •5.2.3 Етнографічний метод
- •5.3 Специфікація вимог
- •5.4 Атестація вимог
- •5.5 Класифікація програмних продуктів за функціональною ознакою
- •5.6 Основні експлуатаційні вимоги до програмних продуктів
- •5.7 Передпроектні дослідження предметної області
- •Лекція 6. Тема: розробка технічного завдання
- •2. Підстави для розробки
- •3. Призначення
- •4. Вимоги до програми або програмного виробу
- •5. Вимоги до програмної документації
- •1. Вступ
- •2. Підстава для розробки
- •3. Призначення
- •4. Вимоги до програми або програмного виробу
- •4.1. Вимоги до функціональних характеристик
- •Лекція 7. Тема: принципові рішення початкових етапів проектування
- •Контрольні питання і завдання
- •Аналіз вимог і визначення специфікацій програмного забезпечення при структурному підході
- •Лекція 8. Тема: Специфікації програмного забезпечення при структурному підході
- •Flow-форми
- •Діаграми Насси-Шнейдермана
- •Контрольні питання та завдання:
- •Лекція 9. Тема: діаграми потоків даних
- •Словник даних
- •Вміст словника даних
- •Лекція 10. Тема: діаграми «сутність-зв’язок»
- •Лекція 11. Тема: приклади побудови діаграм та специфікації процесів
- •Лекція 12 Тема: діаграми переходів станів
- •13.1. Структурна схема майбутнього програмного забезпечення
- •13.2 Використання методу покрокової деталізації для проектування структури програмного забезпечення
- •13.3 Структурні карти Константайна
- •13.4.Структурні карти Джексона
- •13.5 Характеристики хорошої моделі реалізації
- •Зчеплення
- •Зв’язаність
- •13.6 Функціональна схема
- •Лекція 14. Тема: методології структурного аналізу і проектування
- •Контрольні питання та завдання
- •Лекція 15. Тема: синтаксис діаграм
- •Контрольні питання та завдання
- •Лекція 16. Тема: Синтаксис діаграм
- •Збір інформації
- •Контрольні питання та завдання:
- •Лекція 17. Тема: побудова sadt-діаграм
- •17.2. Побудова sadt-діаграми для процесу “Побудова таблиць/графіків функцій однієї змінної”
- •Типи зв'язків між функціями
- •Лекція 18. Тема: доповнення до діаграм і моделей
- •Критерії оцінки і вибору
- •Функціональні характеристики
- •3. Загальні функції:
Лекція 10. Тема: діаграми «сутність-зв’язок»
Діаграми "сутність-зв’язок" (ERD) призначені для розробки моделей даних і забезпечують стандартний спосіб визначення даних і відношень між ними [11]. Фактично за допомогою ERD здійснюється деталізація сховищ даних майбутньої системи, а також документуються сутності системи і способи їх взаємодії, включаючи ідентифікацію об’єктів, важливих для предметної області (сутностей), властивостей цих об’єктів (атрибутів) і їх відношень з іншими об’єктами (зв’язків).
Базовими поняттями ЕR-моделі даних (ER — Entity-Relationship) є сутність, атрибут і зв'язок [31].
Перший варіант моделі «сутність—зв’язок» був запропонований в 1976 р. Пітером Пін-Шен Ченом. Надалі багатьма авторами були розроблені свої варіанти подібних моделей (нотація Мартіна, нотація IDEF1X, нотація Баркера і ін.). Всі варіанти діаграм «сутність—зв’язок» виходять з однієї ідеї — рисунок завжди наочніше текстового опису. Вони використовують графічне зображення сутностей предметної області, їх властивостей (атрибутів) і взаємозв'язків між сутностями.
Оскільки нотація Баркера є найбільш розповсюдженою, надалі дотримуватимемося саме її.
Основні поняття ЕR-ДІАГРАМ
Сутність — це клас однотипних об’єктів (людей, подій, станів, ідей, предметів і т.д.), інформація про які повинна бути врахована в моделі [31]. Сутність має ім’я, що виражене іменником в однині, і позначається у вигляді прямокутника з назвою (рис. 10.1, а). Прикладами сутностей можуть бути такі класи об’єктів, як «Студент», «Співробітник», «Товар».
Співробітник |
|
Співробітник |
|
Співробітник |
|
|
Табельний номер Прізвище Ім'я По батькові Посада Зарплата |
|
Табельний номер Прізвище Ім'я По батькові Посада Зарплата |
а б в
Рисунок 10.1 – Позначення сутностей в нотації Баркера:
а – без атрибутів,
б – з атрибутами; в – з ключовим атрибутом
Екземпляр сутності — це конкретний представник даної сутності. Наприклад, конкретний представник сутності «Студент» — «Максимів». Причому сутність повинна мати деякі властивості, унікальні для кожного екземпляра цієї сутності, для того щоб розрізняти екземпляри.
Атрибут сутності — це іменована характеристика, яка являється деякою властивістю сутності. Ім’я атрибуту повинно бути виражене іменником в однині. Прикладами атрибутів сутності «Студент» можуть бути такі атрибути, як «Номер залікової книжки», «Прізвище», «Ім'я», «Рід», «Вік», «Середній бал» і тому подібне. Атрибути зображаються в прямокутнику, що позначає сутність (рис. 10.1, б).
Ключ сутності — це ненадмірний набір атрибутів, значення яких в сукупності є унікальними для кожного екземпляра сутності. При видаленні будь-якого атрибуту з ключа порушується його унікальність. Ключів у сутності може бути декілька. На діаграмі ключові атрибути відображаються підкресленням (рис. 10.1, в).
Зв'язок — це відношення однієї сутності до іншої або до самої себе. Можливо по одній сутності знаходити інші, зв’язані з нею. Наприклад, зв'язки між сутностями можуть виражатися наступними фразами — «СПІВРОБІТНИК може мати декілька ДІТЕЙ», «СПІВРОБІТНИК зобов'язаний числитися точно в одному ВІДДІЛІ». Графічно зв'язок зображується лінією, яка з’єднує дві сутності (рис.10.2).
Співробітник |
1,1 мати |
|
|
|
|
|
|
|
|
|
Дитина |
|
|
|
|
|
|
н |
|
Рисунок 10.2 – Приклад зв’язку між сутностями
Кожен зв'язок має одне або два найменування. Найменування зазвичай можна виразити невизначеною формою дієслова: «Продавати», «Бути проданим» і тому подібне. Кожне з найменувань відноситься до свого кінця зв'язку. Іноді найменування не пишуться, зважаючи на їх очевидність.
Степінь зв’язку – це кількість сутностей, які приймають участь у зв’язку. Степінь зв’язку 2 називається бінарною, степінь N – N-арною. Зв’язок, в якому одна і та ж сама сутність приймає участь в різних ролях, називається рекурсивною або унарною. Зв'язок може мати один з наступних типів — рис. 10.3.
Зв'язок типу один-до-одного означає, що один екземпляр першої сутності пов'язаний точно з одним екземпляром другої сутності.
Такий зв'язок найчастіше свідчить про те, що ми неправильно розділили одну сутність на дві.
Зв'язок типу один-до-багатьох означає, що один екземпляр першої сутності пов'язаний з декількома екземплярами другої сутності. Це тип зв'язку найчастіше використовується.
Зв'язок типу багато-до-багатьох означає, що кожний екземпляр першої сутності може бути пов'язаний з декількома екземплярами другої сутності, і навпаки. Тип зв'язку багато-до-багатьох є тимчасовим типом зв'язку, який допустимий на ранніх етапах розробки моделі. Надалі такий зв'язок необхідно замінити двома зв'язками типу один-до-багатьох шляхом створення проміжної сутності.
Кожен зв'язок може мати один з двох модальних зв'язків (рис. 10.4).
Зв'язок може мати різну модальність з різних кінців, як на рис. 10.2. Кожен зв'язок може бути прочитаним як зліва направо, так і справа наліво. Зв'язок на рис. 10.2 читається так: зліва направо: «Співробітник може мати декілька дітей»; справа наліво: «Дитина повинна належати точно одному співробітникові».
Приклад розробки простої ЕR-діаграми
Деяка оптова торгова фірма повинна виконувати наступні дії:
зберігати інформацію про покупців;
друкувати накладні на відпущені товари;
стежити за наявністю товарів на складі.
Виділимо всі іменники в цих пропозиціях — це будуть потенційні кандидати на сутності і атрибути, і проаналізуємо їх (незрозумілі терміни будемо виділяти знаком питання):
Покупець — явний кандидат на сутність.
Накладна — явний кандидат на сутність.
Товар — явний кандидат на сутність
(?)Склад — постає питання, скільки складів має фірма? Якщо декілька, то це буде кандидатом на нову сутність.
(?)Наявність товару — це, швидше за все, атрибут, але атрибут якої сутності?
Відразу виникає очевидний зв'язок між сутністю — «покупці можуть купувати багато товарів» і «товари можуть продаватися багатьом покупцям». Перший варіант діаграми виглядає, як показано на рис. 10.5.
Рисунок 10.5 – перший варіант ER-діаграми
Задавши додаткові питання менеджерові, ми вияснили, що фірма має декілька складів. Причому кожен товар може зберігатися на декількох складах і бути проданим з будь-якого складу.
Куди помістити сутність «Накладна» і «Склад» і з чим їх зв'язати? Запитаємо себе, як связані ці сутності між собою і з суттю «Покупець» і «Товар»? Покупці купують товари, отримуючи при цьому накладні, в які внесені дані про кількість і ціну купленого товару. Кожен покупець може отримати декілька накладних. Кожна накладна повинна виписуватися на одного покупця. Кожна накладна повинна містити декілька товарів (не буває пустих накладних). Кожен товар, у свою чергу, може бути проданий декільком покупцям по декільком накладним. Крім того, кожна накладна повинна бути виписана з певного складу, і з будь-якого складу може бити виписано багато накладних. Таким чином, після уточнення діаграма буде виглядати наступним чином (рис. 10.6).
Рисунок 10.6 – Проміжний варіант ER-діаграми
Пора подумати про атрибути сутності. Розмовляючи з співробітниками фірми, ми вияснили наступне:
кожен покупець є юридичною особою і має ім’я, адресу, банківські реквізити;
кожен товар має назву, ціну, а також характеризується одиницями вимірювання;
кожна накладна має унікальний номер, дату виписки, список товарів з кількостями і цінами, а також загальну суму накладної. Накладна виписується з певного складу і на певного покупця;
кожен склад має свою назву.
Знову запишемо всі іменники, які будуть потенційними атрибутами, і проаналізуємо їх:
Юридична особа — термін риторичний, ми не працюємо з фізичними особами. Не звертаємо уваги;
Найменування покупця — явна характеристика покупця;
Адреса — явна характеристика покупця;
Банківські реквізити — явна характеристика покупця;
Найменування товару — явна характеристика товару;
(?)Ціна товару — схоже, що це характеристика товару. Чи відрізняється ця характеристика від ціни в накладній?
Одиниця вимірювання — явна характеристика товару;
Номер накладної — явна унікальна характеристика накладної;
Дата накладної — явна характеристика накладної;
(?) Список товарів в накладній — список не може бути атрибутом. Ймовірно, потрібно виділити цей список в окрему сутність;
(?)Кількість товару в накладній — це явна характеристика, але характеристика чого? Ця характеристика не просто «товару», а «товару в накладній»;
(?)Ціна товару в накладній — знову ж таки це повинна бути не просто характеристика товару, а характеристика товару в накладній. Але ціна товару вже зустрічалася вище — це одне і те ж?
Сума накладної — явна характеристика накладної. Ця характеристика не є незалежною. Сума накладної рівна сумі вартостей всіх товарів, що входять в накладну;
Найменування складу — явна характеристика складу.
В ході додаткової бесіди з менеджером вдалося прояснити різні поняття цін. Виявилось, що кожен товар має деяку поточну ціну. Ця ціна, по якій товар продається в даний момент. Природно, що така ціна може змінюватися з часом. Ціна одного і того ж товару в різних накладних, виписаних в різний час, може бути різною. Таким чином, є дві ціни — ціна товару в накладній і поточна ціна товару.
З виникаючим поняттям «Список товарів в накладній» все зрозуміло. Сутності «Накладна» і «Товар» зв’язані один з одним відношенням типу багато-до-багатьох. Такий зв'язок, як ми відзначали раніше, повинен бути розщепленим на два зв'язки типу один-до-багатьох. Для цього потрібна додаткова сутність. Цією сутністю і буде сутність «Список товарів в накладній». Зв'язок її з сутністю «Накладна» і «Товар» характеризується наступними фразами — «кожна накладна зобов'язана мати декілька записів із списку товарів в накладній», «кожен запис із списку товарів в накладній зобов'язаний включатися рівно в одну накладну», «кожен товар може включатися в декілька записів із списку товарів в накладній», «кожен запис із списку товарів в накладній зобов'язаний бути пов'язаним рівно з одним товаром». Атрибути «Кількість товару в накладній» і «Ціна товару в накладній» є атрибутами сутності «Список товарів в накладній».
Так само поступимо із зв'язком, що сполучає сутність «Склад» і «Товар». Введемо додаткову сутність «Товар на складі». Атрибутом цієї сутності буде «Кількість товару на складі». Таким чином, товар числитиметься на будь-якому складі і кількість його на кожному складі буде своєю.
Тепер можна внести все це до діаграми (рис. 10.7).
Рисунок 10.7 – Кінцевий варіант ER-діаграми
Контрольні питання і завдання
1. У чому сутність структурного підходу до проектування? Які етапи охоплює даний підхід?
2. Що розуміють під терміном «специфікації»? У чому складність їх уточнення? Назвіть моделі, що використовуються як функціональні специфікації при структурному підході. Які характеристики проектованого програмного забезпечення описує кожна з них?
3. У яких випадках доцільно використовувати діаграми переходів станів?
4. У чому полягає основна відмінність між функціональними діаграмами і діаграмами потоків даних? У яких випадках використання діаграм потоків даних є переважним?
5. Що показують ER-діаграми?