Конструювання програмного забезпечення

Mandatory discipline
Навчальна дисципліна професійної підготовки
Обсяг освітнього компонента: 
• у кредитах ЄКТС — 4.5; • у навчальних годинах — 135.
Розподіл навчальних годин (аудиторні заняття / самостійна робота): 
• очна форма — 44 / 91; • заочна форма — 8 / 127.
Кількість аудиторних занять за видами (лекції / практичні заняття / лабораторні заняття): 
• очна форма — 15 / 0 / 7; • заочна форма — 2 / 0 / 2.
Індивідуальна робота: 
; • заочна форма — контрольна робота.
Семестровий контроль: 
Exam.
Освітню компоненту забезпечує: 
Анотація: 

Мета вивчення дисципліни - формування комплексу знань і вмінь для формулювання вимог до програмного забезпечення, моделювання та проектуванні на різних фазах життєвого циклу програмних продуктів, тестування та налагодженні модулів програмного продукту.
Задачі вивчення дисципліни:
• розвити уміння виявляти і формулювати вимоги до програмного забезпечення
• розвити уміння застосовувати моделі та технології конструювання програмного забезпечення;
• вміти застосовувати інструментальні засоби проектування;
• оволодіти практикою побудови різних моделей у процесі конструювання;
• оволодіти практикою створення інтерфейсу користувача програмних продуктів;
• оволодіти методами та практикою тестування моделей та модулів;
• оволодіти практикою застосування шаблонів конструювання програмного забезпечення;
• оволодіти технологією підвищення якості створеного програмного коду.
Дисципліна є обов’язковою.
Дисципліна базується на знаннях, отриманих при вивченні дисциплін:
 Організація даних в обчислювальних системах,
 Комп’ютерна дискретна математика
 Основи програмування,
 Аналіз вимог до ПЗ,
 Об'єктно-орієнтоване програмування. С++
Лекційні заняття
ЗМІСТОВИЙ МОДУЛЬ 1. Основні поняття та визначення
Лекція 1. Введення в конструювання [1, с. 66 – 85], [2, c.3-38], [3, c. 41-50]. [4, с. 4 -38], [5, с. 6 – 21]
- Місце конструювання у процесі розробки ПЗ.
- Порівняння структурного і об’єктно-орієнтованого підходів.
- Уніфікований процес проектування.
- Інші технології. Розробки програмного забезпечення.
ЗМІСТОВИЙ МОДУЛЬ 2. Побудова моделі концептуальних класів
Лекція 2. Моделі концептуальних класів [2, c.103-120]; [3, c. 82-105]; [4, c. 47 – 49, 59 -73]; [5, с. 67 – 85].
- Мета моделювання.
- -Методики моделювання з застосуванням іменних груп, загальних шаблонів, прецедентів, CRC методика.
- Виявлення концептуальних класів.
- Додавання асоціацій. Додавання атрибутів у модель. Узагальнення класів. Агрегація. Класи замість атрибутів. Класи асоціацій.
- Представлення моделі мовою UML. Модель системи RTS.
ЗМІСТОВИЙ МОДУЛЬ 3. Застосування шаблонів конструювання
Лекція 3. Шаблони в ІТ технологіях [2, c.103-133]; [3, c. 77 – 81]; [5, с. 35 – 42].
- Класифікація шаблонів. Правила запису.
- Шаблони проектування. Розподіл обов’язків у системі.
- Шаблон Контролер.
- Шаблон Творець.
- Шаблон Інформаційний інспектор.
- Шаблон Слабке зв’язування.
- Шаблон Високе зачеплення.
ЗМІСТОВИЙ МОДУЛЬ 4. Побудова діаграм взаємодії, розподіл обов’язків між класами.
Лекція 4. Розподіл обов’язків між класами [3, c. 105-120]; [4, с. 85 – 106]; [5, с. 86 – 88].
- Призначення діаграм взаємодії. Порівняльна характеристика типів діаграм.
- Діаграми кооперації. Відображення розгалужень. Відображення циклів.
- Діаграми послідовностей. Відображення розгалужень. Відображення циклів. Блоки активації.
- Приклади створення діаграм.
Лекція 5. Застосування діаграм взаємодії та основних шаблонів конструювання [3, c.105-120]; [4, с. 109 – 115].
- Визначення системних операцій. Відображення системних операцій за допомогою діаграми послідовностей.
- Вибір класу-контролера.
- Побудова діаграм кооперації відповідно пунктам сценарію прецеденту.
- Приклади створення діаграм.
ЗМІСТОВИЙ МОДУЛЬ 5. Визначення програмних класів, їх методів і атрибутів
Лекція 6. Визначення програмних класів з урахуванням шаблонів проектування на основі аналізу діаграм взаємодії [4, с. 68 – 83].
- Визначення програмних класів.
- Визначення методів класів.
- Визначення атрибутів класів.
Лекція 7. Побудова специфікацій програмних класів на основі діаграм взаємодії [4, с. 47 – 56].
- Визначення додаткових типів даних (структур, класів).
- Визначення атрибутів програмних класів.
- Визначення методів програмних класів.
- Побудова специфікацій окремих класів.
ЗМІСТОВИЙ МОДУЛЬ 6. Розробка моделей і коду програмних класів.
Лекція 8. Побудова моделі програмних класів [3, c. 41-52].
- Області видимості (за допомогою атрибутів, за допомогою параметрів, локальна, глобальна).
- Визначення відношень між класами (асоціація, агрегація, композиція, розширення).
- Приклад побудови моделі.

Лекція 9. Створення коду для класів відповідно специфікації [5, с. 93 – 97]; [3, с. 221 – 246].
- Застосування допоміжних типів даних (структур, класів).
- Правила реалізації методів відповідно повідомленням діаграм взаємодії.
ЗМІСТОВИЙ МОДУЛЬ 7. Тестування і рефакторинг програмних модулів.
Лекція 10. Тестування програмних модулів [2, с. 102-120, c.142-147]; [4, c. 50 – 57]; [5, с. 100 – 101]; [6, с. 6 – 13].
- Призначення тестування. Види тестування.
- Методи тестування чорного та білого ящику.
- Драйвери.
- Заглушки.
- Тестування інтеграції.
- Чек-листи і тест-кейси.
Лекція 11. Тестування окремих методів (білий ящик) [5 с. 105 – 111 6 с. 17 - 20
- Побудова потокового графу.
- Визначення цикломатичної складності.
- Визначення незалежних шляхів.
- Побудова тестових варіантів.
Лекція 12. Об’єктно-орієнтоване тестування ( 5, с. 113 – 121]; [6, с. 20 – 26].
- Тестування окремих класів і кластерів класів.
- Тестування спадкування.
- Тестування об’єктних модулів.
- Тестування об’єктної інтеграції.
Лекція 13. Рефакторінг [4, с.61-68]; [5, с. 128 – 142]
- Призначення рефакторінга.
- Планування рефакторінгу.
- Ознаки ситуацій, що визначають застосування рефакторінгу.
- Принципи реалізації рефакторінгу на рівні програмних модулів
ЗМІСТОВИЙ МОДУЛЬ 8. Призначення і застосування баз даних.
Лекція 14. Застосування баз даних [7, c.108-120].
- Проблеми списків.
- Реляційні бази даних. Семантичне моделювання.
- Поняття сутності, примірника сутності, атрибуту сутності, зв’язку. Виявлення сутностей.
- Концептуальна і фізична діаграми.
ЗМІСТОВИЙ МОДУЛЬ 9. Методи процедурно-орієнтованого конструювання.
Лекція 15. Класичні методи конструювання програмного забезпечення [1, c.147-159]; [4, с. 120 – 128]; [5, с. 43 – 61].
- Структурний підхід до проектування ІС. Методологія функціонального моделювання SADT.
- Склад функціональної моделі. Ієрархія діаграм. Типи зв’язків між функціями.
- Моделювання потоків даних. Зовнішні сутності. Системи і підсистеми. Процеси. Накопичувачі даних. Потоки даних.
- Ієрархії діаграм потоків даних.
Лабораторні заняття

Обсяг в годинах Назва та стислий зміст роботи Мета роботи РН за ОП
СЕМЕСТРОВИЙ МОДУЛЬ 1
ЗМІСТОВИЙ МОДУЛЬ 2. Побудова моделі концептуальних класів
2 Лабораторна робота № 1
Тема: «Формулювання вимог. Створення UML-діаграми концептуальних класів».
Завдання на виконання: Відкоригувати документ «Бачення». Побудувати діаграму варіантів використання. Скласти словник предметної області. Описати 2 «найбільш важливих» варіанта використання. Проаналізувати пункти варіантів використання. Призначити концептуальні класи. Визначити взаємовідносини між класами. Визначити основні атрибути. Побудувати діаграму концептуальних класів. [1, с. 66 – 85], [2, c.3-38, 103 - 120], [3, c. 41-50]. [4, с. 4 -38], [5, с. 6 – 21, 67 - 85]. Отримання практичних навичок з обстеження, збору і аналізу вимог, вибору вихідних даних..
ПРН09, ПРН11,
ПРН10
ЗМІСТОВИЙ МОДУЛЬ 4. Побудова діаграм взаємодії, розподіл обов’язків між класами.
2 Лабораторна робота № 2
Тема: «Складання UML-діаграм взаємодії для одного прецедента».
Завдання на виконання: Визначити варіант використання для побудови діаграм взаємодії. Сформулювати системні операції. Визначити клас на роль контролера. Побудувати діаграми взаємодії для кожного пункту сценарію. [3, c. 105-120]; [4, с. 85 – 106]; [5, с. 86 – 88]. Отримання практичних навичок з моделювання класів, застосування шаблонів проектування.
ПРН14, ПРН12, ПРН05
ЗМІСТОВИЙ МОДУЛЬ 5. Визначення програмних класів, їх методів і атрибутів
2 Лабораторна робота № 3
Тема: «Побудова специфікацій програмних класів».
Завдання на виконання: Визначити множину класів. Для кожного класу визначити методи і атрибути. Побудувати специфікації програмних класів. [4, с. 47 – 56, 68 – 83]. Отримання практичних навичок з моделювання класів, застосування UML. ПРН13
СЕМЕСТРОВИЙ МОДУЛЬ 2
ЗМІСТОВИЙ МОДУЛЬ 6. Розробка моделей і коду програмних класів.
2 Лабораторна робота № 4
Тема: «Складання UML-діаграми програмних класів».
Завдання на виконання: виявлення відношень асоціацій між програмними класами; виявлення відношень агрегацій та композицій між програмними класами; побудова діаграми програмних класів. [3, c. 41-52]. Отримання практичних навичок з моделювання класів, застосування UML. ПРН12
2 Лабораторна робота № 5
Тема: «Створення коду програмних класів».
Завдання на виконання: визначення призначення кожного класу; створення допоміжних структур (С++) , або класів (Java); створення опису атрибутів; створення коду кожного методу. [5, с. 93 – 97]; [3, с. 221 – 246]. Отримання практичних навичок з програмного кодування, застосування середовища розробки ПЗ ПРН14
ЗМІСТОВИЙ МОДУЛЬ 7. Тестування і рефакторинг програмних модулів
2 Лабораторна робота № 6
Тема: «Створення тест-кейсів і тестування методів програмного класу».
Завдання на виконання: вибір одного найбільш складного методу; побудову потокового графа; визначення цикломатичної складності; визначення незалежних шляхів; складання тест-кейсу; проведення тестування; проведення відладки. [2, с. 102-120, c.142-147]; [4, c. 50 – 57]; [5, с. 100 – 101]; [6, с. 6 – 13]. Отримання практичних навичок з тестування та документування, розробки інтерфейсу тестолога. ПРН05
2 Лабораторна робота № 7
Тема: «Створення чек-листів. Тестування програмного модулю».
Завдання на виконання: вибір класу, з якого треба починати тестування; розробка чек-листа тестування класу; розробка схеми тестування (драйверів та заглушок) [2, с. 102-120, c.142-147]; [4, c. 50 – 57]; [5, с. 100 – 101]; [6, с. 6 – 13]. Отримання практичних навичок з тестування та документування, розробки інтерфейсу тестолога. ПРН14

Планування самостійної роботи
Самостійна робота здобувача є одним з основних шляхів опанування теоретико-практичного матеріалу в час, вільний від обов'язкових навчальних занять. Співвідношення обсягів аудиторних занять і самостійної роботи здобувачів визначається з урахуванням специфіки та змісту конкретної навчальної дисципліни, її місця, значення і дидактичної мети в реалізації освітньо-професійної програми, а також питомої ваги у навчальному процесі лабораторних занять.
Поточний контроль
Поточний контроль складається з опитувань під час лабораторних занять, двох модульних контрольних робіт.
В процесі поточного контролю оцінюється СРЗ над досліджуваним матеріалом: повнота виконання завдань, рівень засвоєння навчальних матеріалів та окремих розділів навчальної дисципліни, робота з додатковою літературою, вміння й навички індивідуальних і групових презентацій, оволодіння практичними навичками аналітичної, дослідницької роботи, технічних або економічних розрахунків тощо.
Семестровий модуль завершується модульною контрольною роботою (МКР). МКР є обов’язкової формою поточного контролю, які виконуються у відповідності до графіка освітнього процесу, затвердженого наказом ректора та може виконуватися у письмовій або комп’ютерній формі.
Поточний контроль під час лабораторних занять.
У процесі виконання лабораторної роботи здобувач демонструє викладачу в якості результатів роботи відповідні документи, моделі, коди чи результати тестування.
Оцінювання лабораторної роботи виконується виходячи з наступних вимог.
- Завдання до лабораторної роботи має бути повністю виконаним.
- Протокол має бути оформлений за правилами, що наведені у методичних вказівках.
- Здобувач повинен знати теоретичний матеріал, який пов’язаний з завданням до лабораторної роботи.
- Здобувач повинен пояснити усі рішення, які він прийняв розв’язуючи задачу.
- Здобувач повинен захистити лабораторну роботу у строк.
За бездоганне виконання роботи, що представлена у строк здобувач отримує за весь цикл лабораторних робіт – 40 балів.
Модульні контрольні роботи
Здобувачі виконують дві модульні контрольні роботи. Роботи містять теоретичну і практичну частину. За бездоганні відповіді на всі питання кожної модульної контрольної роботи здобувач отримує 30 балів.
Критерії оцінювання підсумкового контролю
Підсумковим контролем з дисципліни є усний екзамен.
Підсумковий контроль з дисципліни складається з двох частин: теоретичної та практичної. Мінімальна кількість балів, що зараховується як позитивний результат, дорівнює 60 (за 100-бальною шкалою).
Бали розподіляються наступним чином: 40 балів – теоретична частина та 60 балів – практична.
Екзаменаційний білет містить 4 теоретичних питання рівної складності, практична – 4 питання рівної складності.
За бездоганну відповідь на кожне теоретичне питання здобувач отримує – 10 балів. При цьому відповідь вважається бездоганною, якщо здобувач повністю розкрив суть питання, послідовно і логічно його доповів, навів приклади.
Кожне завдання практичної частини іспиту вважається виконаним бездоганно, якщо при його розв’язанні коректно виконано розрахунки показників у відповідності до завдання.
Екзамен враховується не складеним, якщо здобувач отримав незадовільну оцінку.
Питання теоретичної частини може бути присвячено визначенню термінів та понять з області конструювання, опису і застосуванню конкретних технологій створення ПЗ, застосуванню патернів проектування і методики тестування. Відповідь на питання повинна мати загальне формулювання (8 балів), приклад (2 бали).
Практична частина складається з 4 етапів. 1 етап – визначення і формалізація вимог до ПЗ (15 балів); 2 етап - визначення концептуальних класів на основі раніше сформульованих вимог (15 балів); 3 етап – розподіл обов’язків між класами шляхом побудови діаграм взаємодії (15 балів); 4 етап – визначення методів і атрибутів класів і побудова специфікації програмних класів (15 балів).
Практична частина іспиту вважається виконаною бездоганно при наявності розв’язання задачі, при цьому усі дії виконані вірно, без помилок; всі записи, щодо розв’язання завдання записані послідовно, надані коментарі (якщо потрібно). Крім цього усі діаграми виконані охайно, без помилок.
За виконання кожного питання практичної частини бали можуть бути зняті:
15 балів – за повну відсутність виконання питання практичної частини;
10 балів – рішення не отримане або не вірне, але при цьому хід розв’язання та усі використані засади обрані вірно;
5 балів – наведене правильне рішення, але при цьому є помилки у розв’язанні;
4 балів – наведене правильне рішення, але при цьому не повністю виконані обов’язкові пояснення;
3 балів – за неправильне тлумачення вхідних даних, що не порушило загалом правильного ходу розв’язання задачі;
2 балів – за допущену помилку, що не вплинула на відповідь та загальний хід розв’язання питання;
1 балів – за нераціональне розв’язання завдання при наявності докладних пояснень та вірного кінцевого результату.
Якщо здобувач відмовився відповідати, то він отримує незадовільну оцінку.
Екзамен вважається не складеним, якщо здобувач отримав менше 60%.
Критерії оцінювання модульних контрольних робіт
Модульні контрольні роботи виконуються у письмовій формі. Максимальна оцінка за їх бездоганне виконання становить 30 балів (0,516 кредиту).
Модульні роботи складається з теоретичної частини та практичної частини - задач. Максимальна оцінка за правильне виконання теоретичної частини становить 8 балів, за виконання практичної частини – 22 бали.
Кількість запитань теоретичної частини – 2. Кожна правильна відповідь оцінюється в 4 бали.
Кількість завдань практичної частини – 5. Правильне розв’язання кожної задачі оцінюється в 2 - 7 балів. Задача вважається розв’язаною, якщо при її розв’язанні коректно складені документи, правильно побудовані діаграми.
За виконання кожного завдання практичної частини бали можуть бути зняті:
100% від ваги завдання– за повну відсутність виконання завдання практичної частини;
70% від ваги завдання – рішення не отримано або не вірне, але при цьому хід розв'язання та усі використані засади обрано вірно;
40% від ваги завдання – наведено правильне рішення, але при цьому не повністю виконано обов'язкові пояснення;
30% від ваги завдання – за неправильне тлумачення вхідних даних, що не порушило загалом правильного ходу розв'язання задачі;
10% від ваги завдання – за допущену помилку, що не вплинула на відповідь та загальний хід розв'язання задачі
Задача не зараховується, якщо повністю відсутнє її розв’язання.

Критерії оцінювання виконання накопичувальної частини дисципліни
Накопичувальна частина дисципліни складається з поточного контролю під час лабораторних занять.
Критерії оцінювання виконання та захисту лабораторних робіт
У процесі виконання лабораторної роботи здобувач демонструє викладачу в якості результатів роботи відповідні документи, моделі, коди чи результати тестування.
Оцінювання лабораторної роботи виконується виходячи з наступних вимог.
1) Завдання до лабораторної роботи має бути повністю виконаним.
2) Протокол має бути оформлений за правилами, що наведені у методичних вказівках.
3) Здобувач повинен знати теоретичний матеріал, який пов’язаний з завданням до лабораторної роботи.
4) Здобувач повинен пояснити усі рішення, які він прийняв розв’язуючи задачу.
5) Здобувач повинен представити протокол виконаної лабораторної роботи у встановлений строк.
За бездоганне виконання усіх перерахованих пунктів здобувач отримує 5 – 7 балів (залежно від встановленої «ваги» лабораторної роботи), а за весь цикл лабораторних робіт – 40 балів. Вимога 2) – обов’язкова. Часткове невиконання інших вимог знижує кількість балів, отриманих здобувачем.

Результати навчання: 

ПРН09. Знати та вміти використовувати методи та засоби збору,
формулювання та аналізу вимог до програмного забезпечення.
ПРН10. Проводити передпроєктне обстеження предметної області, системний аналіз об'єкта проектування.
ПРН05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення.
ПРН11. Вибирати вихідні дані для проектування, керуючись формальними методами опису вимог та моделювання.
ПРН12. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення.
ПРН14. Застосовувати на практиці інструментальні програмні засоби доменного аналізу, проектування, тестування, візуалізації, вимірювань та документування програмного забезпечення.
ПРН05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення.
ПРН13. Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань.

b242517 ▪ 2025