Тема: ПРИКЛАДИ ПОБУДОВИ ДІАГРАМ ТА СПЕЦИФІКАЦІЇ ПРОЦЕСІВ
Лекція 11.
Контрольні питання і завдання
1. У чому сутність структурного підходу до проектування? Які етапи охоплює даний підхід?
2. Що розуміють під терміном «специфікації»? У чому складність їх уточнення? Назвіть моделі, що використовуються як функціональні специфікації при структурному підході. Які характеристики проектованого програмного забезпечення описує кожна з них?
3. У яких випадках доцільно використовувати діаграми переходів станів?
4. У чому полягає основна відмінність між функціональними діаграмами і діаграмами потоків даних? У яких випадках використання діаграм потоків даних є переважним?
5. Що показують ER-діаграми?
Розглянемо завдання складання розкладу занять студентів в університеті. Спершу визначимо сутності, які беруть участь в процесі:
· СТУДЕНТИ, для яких складають розклад занять;
· ВИКЛАДАЧІ, які проводять заняття;
· НАВЧАЛЬНИЙ ПЛАН, який надає список дисциплін, що вивчаються студентами в поточному семестрі для складання розкладу.
Для спрощення завдання зробимо припущення, що в нашому випадку завжди є вільні викладачі та вільні аудиторії.
Нарисуємо контекстну діаграму (рис.11.1).
Далі потрібно провести деталізацію процесу:
1. Визначити список предметів, що вивчаються групою.
2. Знайти викладача на предмет.
3. Знайти вільний час викладача.
4. Знайти вільний час групи.
5. Знайти вільну аудиторію у вільний час викладача і групи.
Тепер нарисуємо DFD-діаграму 1-го порядку (рис.11.2).
Рисунок 11.1 – Контекстна діаграма процесу складання розкладу для студентів
Рисунок 11.2 – DFD-діаграма 1-го порядку
Опишемо тепер потоки даних, використовуючи словник даних:
1.
@ІМ’Я=СПИСОК ГРУП
@ТИП=дискретний потік
@БНФ=ПІБ+НОМЕР ГРУПИ
2.
@ІМ’Я=СПИСОК ВИКЛАДАЧІВ
@ТИП=дискретний потік
@БНФ=ПІБ+ПРЕДМЕТ+ВІЛЬНИЙ ЧАС
3.
@ІМ’Я=СПИСОК ПРЕДМЕТІВ
@ТИП=дискретний потік
@БНФ=НАЗВА ПРЕДМЕТУ
4.
@ІМ’Я=СПИСОК АУДИТОРІЙ
@ТИП=дискретний потік
@БНФ=НОМЕР Аудиторії+(КОРПУС)+ДАТА+ЧАС
5.
@ІМ’Я=ВІЛЬНИЙ ЧАС СТУДЕНТІВ
@ТИП=дискретний потік
@БНФ=НОМЕР Групи+дата+час
6.
@ІМ’Я=ВІЛЬНИЙ ЧАС ВИКЛАДАЧА
@ТИП=дискретний потік
@БНФ=ПІБ Викладача+дата+час
7.
@ІМ’Я=ВИКЛАДАЧІ ПРЕДМЕТУ
@ТИП=дискретний потік
@БНФ=ПІБ+ПРЕДМЕТ
8.
@ІМ’Я=СПИСОК ПРЕДМЕТІВ ДЛЯ ГРУПИ
@ТИП=дискретний потік
@БНФ=ГРУПА+ПРЕДМЕТ
9.
@ІМ’Я=РОЗКЛАД
@ТИП=дискретний потік
@БНФ=ДАТА+ЧАС+АУДИТОРІЯ+ПРЕДМЕТ+ВИКЛАДАЧ+ГРУПА
Опишемо тепер специфікацію процесів, представлених на DFD-діаграмі 1-го рівня.
1.1
@ВХІД=СПИСОК ПРЕДМЕТІВ
@ВХІД=СПИСОК ГРУП
@ВИХІД=СПИСОК ПРЕДМЕТІВ ДЛЯ ГРУПИ
@СПЕЦПРОЦ 1.1 ВИЗНАЧИТИ СПИСОК ПРЕДМЕТІВ ДЛЯ ГРУПИ
ВИКОНАТИ скласти СПИСОК ПРЕДМЕТІВ ГРУПИ, які вивчаються в поточному семестрі згідно навчального плану
КІНЕЦЬВИКОНАТИ
@ КІНЕЦЬ СПЕЦИФІКАЦІЇ ПРОЦЕСУ 1.1
1.2
@ВХІД=СПИСОК ВИКЛАДАЧІВ
@ВХІД=СПИСОК ПРЕДМЕТІВ ДЛЯ ГРУПИ
@ВИХІД=ВИКЛАДАЧІ ПРЕДМЕТУ
@СПЕЦПРОЦ 1.2 ЗНАЙТИ ВИКЛАДАЧА НА ПРЕДЕМЕТ
ВИКОНАТИ скласти СПИСОК ВИКЛАДАЧІВ предмету згідно інформації про викладачів
КІНЕЦЬВИКОНАТИ
@ КІНЕЦЬ СПЕЦИФІКАЦІЇ ПРОЦЕСУ 1.2
1.3
@ВХІД=ВИКЛАДАЧІ ПРЕДМЕТУ
@ВХІД=ВІЛЬНИЙ ЧАС ВИКЛАДАЧІВ (список всіх викладачів з вільним часом)
@ВИХІД=ВІЛЬНИЙ ЧАС ВИКЛАДАЧА (конкретний викладач з вільним часом)
@СПЕЦПРОЦ 1.3 ЗНАЙТИ ВІЛЬНОГО ВИКЛАДАЧА
ВИКОНАТИ
ДОКИ є викладач в списку викладачів
ВИКОНАТИ
ЯКЩО викладач зайнятий
ТО узяти іншого викладача
ІНАКШЕ запам'ятати викладача і його вільний час
КІНЕЦЬЯКЩО
КІНЕЦЬДОКИ
КІНЕЦЬВИКОНАТИ
@КІНЕЦЬ СПЕЦИФІКАЦІЇ ПРОЦЕСУ 1.3
1.4
@ВХІД=СПИСОК ГРУП
@ВИХІД=ВІЛЬНИЙ ЧАС ГРУП
@СПЕЦПРОЦ 1.4. ЗНАЙТИ ВІЛЬНИЙ ЧАС ГРУПИ
ВИКОНАТИ
ЯКЩО є вільний час групи
ТО запам'ятати вільний час
КІНЕЦЬЯКЩО
КІНЕЦЬВИКОНАТИ
@КІНЕЦЬ СПЕЦИФІКАЦІЇ ПРОЦЕСУ 1.4
1.5
@ВХІД=ВІЛЬНИЙ ЧАС ГРУПИ
@ВХІД=ВІЛЬНИЙ ЧАС ВИКЛАДАЧА
@ВХІД=СПИСОК АУДИТОРІЙ
@ВИХІД=РОЗКЛАД
@СПЕЦПРОЦ 1.5 ЗНАЙТИ ВІЛЬНУ АУДИТОРІЮ У ВІЛЬНИЙ ЧАС ВИКЛАДАЧА І ГРУПИ
ВИКОНАТИ
ДОКИ є вільні аудиторії в списку аудиторій
ВИКОНАТИ
ЯКЩО викладач і студенти вільні в той час, коли вільна аудиторія
ТО запам'ятати розклад, що складається з групи, викладача, назви предмету, дати і часу проведення заняття
ІНАКШЕ вибрати іншу аудиторію
КІНЕЦЬЯКЩО
КІНЕЦЬДОКИ
КІНЕЦЬВИКОНАТИ
@КІНЕЦЬ СПЕЦИФІКАЦІЇ ПРОЦЕСУ 1.5
Оскільки тепер ми описали специфікації процесів, необхідно провести деталізацію сховищ даних або, іншими словами, побудувати діаграми "сутність-зв'язок" або ERD-діаграми.
Оскільки, наш розклад складається для студентів, то першою сутністю буде сутність "студенти" (рис.11.3).
![]() |
Рисунок 11.3 – Сутність СТУДЕНТИ та її атрибути
![]() |
Проте можна відмітити, що така сутність надмірна, оскільки для студентів однієї групи в таблиці буде повторюватися назва групи. Необхідно нормалізувати дану табличку. Для цього введемо ще одну сутність (асоціативну) – ГРУПА (рис. 11.4). Тоді, отримаємо:
Рисунок 11.4 – Зв’язок між сутностями СТУДЕНТИ та ГРУПИ
Далі, у нас є сутність ВИКЛАДАЧІ і ПРЕДМЕТИ, ще виділимо АУДИТОРІЇ, НАВЧАЛЬНИЙ ПЛАН і РОЗКЛАД. Побудуємо тепер ERD-діаграму (рис.11.5).
Рисунок 11.5 – Початкова ERD-діаграма
Як видно із отриманої схеми у нас є тимчасове відношення ВИКЛАДАЧІ-ПРЕДМЕТИ. Вирішимо це питання, використовуючи проміжну сутність (рис.11.6).
Рисунок 11.6 – Використання проміжної сутності ВИКЛАДАЧІ_ПРЕДМЕТИ