Конструювання ПЗ
Анотація навчальної дисципліни
Мета вивчення дисципліни
розвиток у здобувачів цілісної системи знань та вмінь в створенні програмних продуктів на основних стадіях життєвого циклу починаючи з формулювання вимог і до тестування програмних модулів.
Практичне значення та використання отриманих знань
сформувати в здобувачів вищої освіти знання та вміння для вирішення практичних задач в визначенні вимог до програмного забезпечення, в моделюванні та проектуванні на різних фазах життєвого циклу програмного забезпечення з застосуванням відповідних шаблонів проектування, в освоєнні методики та навичок з тестування та налагодження модулів програмного забезпечення.
Основні результати навчання
ПРН05. Знати і застосовувати відповідні математичні поняття, методи доменного, системного і об’єктно-орієнтованого аналізу та математичного моделювання для розробки програмного забезпечення.
ПРН09. Знати та вміти використовувати методи та засоби збору,
формулювання та аналізу вимог до програмного забезпечення.
ПРН10. Проводити передпроектне обстеження предметної області, системний аналіз об'єкта проектування.
ПРН11. Вибирати вихідні дані для проектування, керуючись формальними методами опису вимог та моделювання.
ПРН12. Застосовувати на практиці ефективні підходи щодо проектування програмного забезпечення.
ПРН13. Знати і застосовувати методи розробки алгоритмів, конструювання програмного забезпечення та структур даних і знань.
ПРН14. Застосовувати на практиці інструментальні програмні засоби доменного аналізу, проектування, тестування, візуалізації, вимірювань та документування програмного забезпечення.
Тематика та види навчальних занять
1. тиждень
Л1. Введення в конструювання. Місце конструювання у процесі розробки ПЗ. Порівняння структурного і об’єктно-орієнтованого підходів. Уніфікований процес проектування та інші технології.
2 тиждень
Лекція 2. Моделі концептуальних класів. Мета моделювання. Методики моделювання з застосуванням іменних груп, загальних шаблонів, прецедентів, CRC методика. Виявлення концептуальних класів. Додавання асоціацій. Додавання атрибутів у модель. Узагальнення класів. Агрегація. Класи замість атрибутів. Класи асоціацій. Представлення моделі мовою UML. Модель системи RTS.
Лабораторні заняття 1. Створення документів «Бачення» та опису варіантів використання. Коригування документу «Бачення». Складання діаграми варіантів використання та опису варіантів використання.
3 тиждень
Лекція 3. Шаблони в ІТ технологіях. Класифікація шаблонів. Правила запису. Шаблони проектування. Розподіл обов’язків у системі. Шаблон Контролер. Шаблон Творець. Шаблон Інформаційний інспектор. Шаблон Слабке зв’язування. Шаблон Високе зачеплення.
4 тиждень
Лекція 4. Розподіл обов’язків між класами. Призначення діаграм взаємодії. Порівняльна характеристика типів діаграм. Діаграми кооперації. Відображення розгалужень. Відображення циклів. Діаграми послідовностей. Відображення розгалужень. Відображення циклів. Блоки активації. Приклади створення діаграм.
Лабораторні заняття 2. Створення UML-діаграми концептуальних класів. Визначення концептуальних класів. Визначення взаємовідносин між класами. Створення діаграми концептуальних класів.
5 тиждень
Лекція 5. Застосування діаграм взаємодії та основних шаблонів конструювання. Визначення системних операцій. Відображення системних операцій за допомогою діаграми послідовностей. Вибір класу-контролера. Побудова діаграм кооперації відповідно пунктам сценарію прецеденту. Приклади створення діаграм.
6 тиждень
Лекція 6. Визначення програмних класів з урахуванням шаблонів проектування. їх методів на основі аналізу діаграм взаємодії. Застосування правил визначення класів, їх методів та атрибутів.
Лабораторні заняття 3. Складання UML-діаграм взаємодії для одного прецедента. Визначення системних операцій. Визначення класу на роль контролера. Побудова діаграми взаємодії.
7 тиждень
Лекція 7. Побудова специфікацій програмних класів на основі діаграм взаємодії. Визначення додаткових типів даних (структур, класів). Визначення атрибутів програмних класів. Визначення методів програмних класів. Побудова специфікацій окремих класів.
Модульна контрольна робота 1
8 тиждень
Лекція 8. Побудова моделі програмних класів. Області видимості (за допомогою атрибутів, за допомогою параметрів, локальна, глобальна). Визначення відношень між класами (асоціація, агрегація, композиція, розширення). Приклад побудови моделі.
Лабораторні заняття 4. Побудова специфікацій програмних класів. Визначення множини класів. Визначення методів і атрибутів. Побудова специфікації програмних класів.
Модульна контрольна робота 1
9 тиждень
Лекція 9. Створення коду для класів відповідно специфікації. Застосування допоміжних типів даних (структур, класів). Правила реалізації методів відповідно повідомленням діаграм взаємодії.
10 тиждень
Лекція 10. Тестування програмних модулів. Призначення тестування. Види тестування. Методи тестування чорного та білого ящику. Драйвери. Заглушки. Тестування інтеграції. Чек-листи і тест-кейси.
Лабораторні заняття 5. Складання UML-діаграми програмних класів. Виявлення відношень асоціацій, агрегацій та композицій між програмними класами. Побудова діаграми програмних класів.
11 тиждень
Лекція 11. Тестування окремих методів (білий ящик). Побудова потокового графу. Визначення цикломатичної складності. Визначення незалежних шляхів. Побудова тестових варіантів.
12 тиждень
Лекція 12. Об’єктно-орієнтоване тестування. Тестування окремих класів і кластерів класів. Тестування спадкування. Тестування об’єктних модулів. Тестування об’єктної інтеграції.
Лабораторні заняття 6. Створення коду програмних класів. визначення призначення класів. Створення допоміжних структур , або класів; створення опису атрибутів; створення коду кожного методу.
13 тиждень
Лекція 13. Рефакторинг. Призначення рефакторінга. Планування рефакторингу. Ознаки ситуацій, що визначають застосування рефакторингу. Принципи реалізації рефакторингу на рівні програмних модулів
14 тиждень
Лекція 14. Застосування баз даних. Проблеми списків. Реляційні бази даних. Семантичне моделювання. Поняття сутності, примірника сутності, атрибуту сутності, зв’язку. Виявлення сутностей. Концептуальна і фізична діаграми.
Лабораторні заняття 7. Створення тест-кейсів і тестування методів програмного класу. Вибір методу. Побудова потокового графа; визначення цикломатичної складності; визначення незалежних шляхів; складання тест-кейсу; проведення тестування і відладки.
Модульна контрольна робота 2
15. тиждень
Лекція 15. Класичні методи конструювання програмного забезпечення. Структурний підхід до проектування ІС. Методологія функціонального моделювання SADT. Склад функціональної моделі. Ієрархія діаграм. Типи зв’язків між функціями. Моделювання потоків даних. Зовнішні сутності. Системи і підсистеми. Процеси. Накопичувачі даних. Потоки даних. Ієрархії діаграм потоків даних.
Оцінювання результатів навчання
Оцінювання результатів навчання з дисципліни здійснюється за накопичувальною системою, яка дає можливість здобувачеві протягом семестру отримати максимально 100 балів.
Модуль 1
Оцінка за виконання лабораторних робіт (1 – 3) – максимально 20 балів за модуль.
Модульна контрольна робота 1 – за бездоганне виконання 30 балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання завдання).
Модуль 2
Оцінка за виконання лабораторних робіт (4 – 7) – максимально 20 балів за модуль.
Модульна контрольна робота 2 – за бездоганне виконання 30 балів (в кожному завданні модульної контрольної роботи наведено максимальну кількість балів за виконання завдання).
Посилання на рекомендовані джерела
1. Кунгурцев О.Б., Зіноватна С.Л. Робота з вимогами до програмного забезпечення. Навчальний посібник. Одеса. «Астропринт».2019. – 232 с.
2. David Farley. Modern software engineering doing what works to build better software faster. Addison Wesley. 2022. – 220 p.
3. The Essentials of Modern Software Engineering. Ivar Jacobson, Harold “Bud” Lawson,Pan-Wei Ng, Paul E. McMahon, Michael Goedicke. ACM Books #25. 2019. – 370 p.
4. Nico Loubser. Software Engineering for Absolute Beginners. Your Guide to Creating Software Products. Apress. 2021. – 328 p.
5. Titus Winters, Tom Manshreck, and Hyrum Wright. Software Engineering at Google. Published by O’Reilly Media, Inc., 2020. – 553 p.
6. Тихонов Є. С. Навчально –методичні матеріали до вивчення дисципліни «Конструювання програмного забезпечення. JAVA» Київ 2018.- 92 с.