ТЕХНОЛОГІЇ РОЗРОБЛЕННЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ-3. ТЕХНОЛОГІЇ БЕЗПЕРЕРВНОГО РОЗРОБЛЕННЯ ТА ІНТЕГРАЦІЇ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

Робоча програма навчальної дисципліни (Силабус)

Реквізити навчальної дисципліни

Рівень вищої освіти Перший (бакалаврський)
Галузь знань 12 Інформаційні технології
Спеціальність 126 Інформаційні системи та технології
Освітня програма Інтегровані інформаційні системи
Статус дисципліни Нормативна
Форма навчання очна(денна)/заочна/дистанційна
Рік підготовки, семестр 3 курс, весняний семестр
Обсяг дисципліни 120 годин (36 годин – Лекції, 18 годин – Лабораторні, 66 годин – СРС)
Семестровий контроль/ контрольні заходи залік
Розклад занять http://rozklad.kpi.ua
Мова викладання Українська
Інформація про
керівника курсу / викладачів

Лектор: к.т.н., Амонс Олександр Анатолійович,

o.amons@kpi.ua,

Лабораторні: ст.викладач, Майєр Ілля

Розміщення курсу https://campus.kpi.ua

Програма навчальної дисципліни

Опис навчальної дисципліни, її мета, предмет вивчання та результати навчання

Опис дисципліни. При проходженні даної дисципліни, студенти познайомляться з сучасним підходами до розробки програмних систем, патернами розробки програм, рефакторингом програмного коду, а також з сучасними підходами до безперервної інтеграції та розгортання ПО. На лабораторних заняттях опанують використання патернів та рефакторингу при розробці програмного забезпечення. В курсі передбачений контроль якості отриманих знань у вигляді експрес-контрольних та модульних контрольних робіт.

Предмет навчальної дисципліни: патерни розробки програмного забезпечення, архітектурні патерни, рефакторинг програмного кода, організація безперервної інтеграції та безперервного розгортання ПО.

Міждисциплінарні зв’язки. Дисципліна Бази даних базується на дисциплінах: Операційні системи; Програмування – 1. Основи програмування; Програмування – 2. Структури даних та алгоритми; Дискретна математика. Бази даних.

Мета навчальної дисципліни. Підготовка висококваліфікованих фахівців, які володіють основними підходами до організації розробки програмних систем, проектування структури програмної системи, підвищення якості програмного коду, та забезпечення більш швидкої доставки в «продакшн» нового функціоналу.

Основні завдання навчальної дисципліни

Знання:

  • Види патернів програмування та самі патерни;

  • Види архитектурних патернів розробки корпоративних програмних систем;

  • Запахи коду та методи рефакторинга програмного коду для усунення цих засобів;

  • Поняття та методологію безперервної інтеграції програмного коду;

  • Поняття та методологію безперервного розгортання ПО.

Уміння:

  • Проектувати структуру програмного забезпечення;

  • Використовувати патерни при розробці ПО;

  • Виявляти проблеми в якості програмного коду;

  • Виконувати рефакторинг програмного коду;

  • Організувати процес безперервної інтеграції коду та доставки ПО;

Пререквізити та постреквізити дисципліни (місце в структурно-логічній схемі навчання за відповідною освітньою програмою)

Пререквізити: мати навички розробки. Знати мову програмування C# та вміти розробляти прості застосування. Знати алгоритми та структури даних. Знати UML та вміти будувати діаграми.

Постреквізити: проектування програмного застосування та вміння організувати якісну розробку та перевірку програмної системи.

Після проходження дисципліни студенти будуть вміти використовувати патерни в розробці програмного коду. Вміти виконувати рефакторинг. Знати процеси безперервної інтеграції програмного коду та безперервної доставки ПО.

Зміст навчальної дисципліни

Очна форма

Лекційні заняття

Розділ 1. Об’єктно-орієнтоване програмування

Тема 1.1. Вступ до паттернів проектування

Тема 1.2. Паттерни проектування

Тема 1.4. Патерн IoC (Inversion Of Control)

Розділ 2. Рефакторинг.

Тема 2.1. Основні поняття рефакторинга.

Тема 2.2. Запахи коду.

Тема 2.3. Методи рефакторингу.

Розділ 3. Безперервна інтеграція та розгортання ПО.

Тема 3.1. Основи безперервної інтеграції

Тема 3.2. Створення повнофункціональної системи CI

Тема 3.3. Основи безперервного розгортання ПО.

Лабораторні заняття

1. Застосування шаблонів «Одинак», «Ітератор», «Проксі»..

2. Застосування шаблонів «Адаптер», «Будівельник», «Команда».

3. Застосування шаблонів «Абстрактна фабрика», «Фабричний метод», «Декоратор».

4. Застосування шаблонів «Посередник», «Фасад», «Міст», «Шаблонний метод».

5. Застосування шаблонів «Композитний об’єкт», «Пристосуванець», «Інтерпретатор», «Відвідувач».

6. Різні види взаємодії застосувань: клієнт-сервер, peer-to-peer, сервіс-орієнтована архітектура.

7. Основи прототипування інтерфейсу користувача.

Заочна форма

Лекційні заняття

Розділ 1. Об’єктно-орієнтоване програмування

Тема 1.1. Вступ до паттернів проектування

Тема 1.2. Паттерни проектування

Розділ 3. Безперервна інтеграція та розгортання ПО.

Тема 3.1. Основи безперервної інтеграції

Тема 3.2. Створення повнофункціональної системи CI

Тема 3.3. Основи безперервного розгортання ПО.

Лабораторні заняття

1. Застосування шаблонів «Одинак», «Ітератор», «Проксі».

2. Застосування шаблонів «Адаптер», «Будівельник», «Команда».

3. Основи прототипування інтерфейсу користувача.

Навчальні матеріали та ресурси

Базова література

  1. Гаммф Э., Хелм Р., Джонсон Р., Влиссидес Дж. Приемы объектно-ориентированного проектирования. – СПб: Питер, 2004. – 368 с.

  2. Фаулер М. Архитектура корпоративных программных приложений. – М.:Вильямс, 2006. – 544 с.

  3. М. Фаулер. Рефакторинг: улучшение существующего кода. – Пер. С англ.. – Изд-во Вильямс, 2016. – 893с.

  4. Дюваль, Поль М., Матиас ІІІ, Стивен М., Гловер, Эндрю. Непрерывная интеграция: улучшение качества програмного обеспечения и снижение риска.: Пер. с англ. – М.: ООО «И.Д.Вильямс», 2008 – 240 с.

  5. Хамбл Д, Фарли Д, Непрерывное развертывание ПО: автоматизация процессов сборки, тестирования и внедрения новых версий программ.: Пер. с англ. – М.: ООО «И.Д.Вильямс», 2011. – 432 с.

Допоміжна література

  1. Буч Г., Рамбо Д., Джекобсон И. Язык UML. Руководство пользователя: Пер. с англ. – М.: ДМК, 2006. – 496 с

  2. Боггс У., Боггс М. UML и Rational Rose: Пер. с англ. – М.: Лори, 2000. – 582 с.

  3. Рой Ошероув. Искусство автономного тестирования с примерами на С#. 2-е изда-ние / пер. с англ. Слинкин А. А. – М.: ДМК Пресс, 2014. – 360.

Навчальний контент

Методика опанування навчальної дисципліни (освітнього компонента)

Очна форма

Лекційні заняття

№ з/п Назва теми лекції та перелік основних питань
(перелік дидактичних засобів, посилання на літературу та завдання на СРС)
1

Тема 1.1. Вступ до паттернів проектування

Лекція 1. Вступ до паттернів проектування.

Поняття паттернів проектування. Підхід до вирішення задачі з використанням паттернів проектування.

Література: [1, Гл.1.1.4], [3, Гл.1]

Завдання для СРС. Поняття архітектурних патернів. Патерни роботи з БД.

2

Тема 1.1. Вступ до паттернів проектування.

Лекція 2. Класифікація паттернів проектування.

Класифікація патернів проектування. Опис паттернів проектування. Каталог паттернів проектування.

Література: [1, Гл.1.1.6], [3, Гл.1]

Завдання для СРС. Класифікація та каталог архітектурних патернів

3

Тема 1.2. Паттерни проектування.

Лекція 3. Породжуючі паттерни проектування.

Паттерни «Абстрактна фабрика», «Фабричний метод», «Прототип». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна.

Література: [1, Гл.1.1.2; Гл.3], [3, Гл.1]

Завдання для СРС. Паттерн «Прототип». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна..

4

Тема 1.2. Паттерни проектування.

Лекція 4. Структурні паттерни проектування.

Паттерни «Адаптер», «Міст». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації

Література: [1, Гл.5], [3, Гл.6]

Завдання для СРС. Паттерни «Декоратор» та «Фасад». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттернів

5

Тема 1.2. Паттерни проектування.

Лекція 5. Паттерни поведінки.

Паттерни «Цепочка відповідальності», «Команда». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації

Література: [1, Гл.14], [3, Гл.6;Гл.9], [6, Гл.2]

Завдання для СРС. Паттерни «Посередник» та «Стратегія». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттернів.

6

Тема 1.4. Патерн IoC (Inversion Of Control)

Лекція 6. Тема 1.4. Патерн IoC (Inversion Of Control)

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації

Завдання для СРС. Розгляд прикладів роботи з Unity Application Block (Unity) та Spring.NET. Реалізація та використання IoC та dependency injection в .net Core

7

Тема 2.1. Основні поняття рефакторинга

Лекція 7. Рефакторинг.

Принципи рефакторингу. Признаки необхідності проведення рефакторингу. Розробка тестів. Рефакторинг та проектування. Рефакторинг та продуктивність.

Література: [1, Гл.5;Гл.6], [3, Гл.10], [6, Гл.3;Гл.4]

Завдання для СРС. Рефакторинг та проектування. Рефакторинг та продуктивність.

8

Тема 2.2. Запахи коду.

Лекція 8. Запахи коду.

Поняття запаху коду. Дублювання коду. Довгий метод. Коментарі. Великий клас. Довгий список параметрів. Групи даних. Оператори типу switch. Паралельні ієрархії наслідування. Лінивий клас. Тимчасове поле.

Література: [1, Гл.12], [2, Л.6], [3, Гл.9]

Завдання для СРС. Запахи коду: Теоретична узагальненість. Ланцюжок повідомлень. Посередник. Класи даних.

9

Тема 2.2. Методи рефакторингу.

Лекція 9. Приклад виконання рефакторингу.

Демонстрація аналізу запахів коду та проведення рефакторингу на реальному проекті в Visual Studio. Демонстрація запахів коду в проекті, озвучення методів рефакторингу які будуть виконуватися, проведення озвучених методів рефакторингу, перевірка тестів що код залишається робочим. Навмисне допущення дяеких помилок при рефакторингу, щоб продемонструвати як тести допомагають при проведені рефакторингу

Література: [1, Гл.12], [2, Л.6], [3, Гл.9]

Завдання для СРС. Запахи коду: Теоретична узагальненість. Ланцюжок повідомлень. Посередник. Класи даних.

10

Тема 2.3. Методи рефакторингу.

Лекція 10. Рефакторинги роботи з методами.

Виділення методу. Inline Method. Заміна тимчасової змінної викликом методу. Введення пояснюючої змінної. Розщеплення пояснюючої змінної. Видалення присвоювань параметрам. Заміна метода об’єктом. Заміщення алгоритму.

Література: [1, Гл.1;Гл.4], [2, Гл.4;Гл.5]

Завдання для СРС. Рефакторинги організації даних: самоінкапсуляція поля. Заміна значення об’єктом. Заміна значення посиланням. Заміна посилання значенням. Дублювання даних що знаходяться під спостереженням. Заміна масиву об’єктом.

11

Тема 2.3. Методи рефакторингу.

Лекція 11. Спрощення умовних виразів

Декомпозиція умовного оператора. Консолідація умовного виразу. Консоліщація дублюючихся умовних фрагментів. Видалення контрольного прапорця. Заміна вкладених умовних операторів граничним. Введення об’єкта Null. Введення твердження

Література: [1, Гл.1;Гл.4], [2, Гл.4;Гл.5]

Завдання для СРС. Методи рефакторингу спрощення викликів методів: зміна імені метода; додавання параметру; розділення запиту та модифікатора; заміна параметру явними методами; збереження всього об’єкту; приховування методу.

12

Тема 3.1. Основи безперервної інтеграції

Лекція 12. Введення в безперервну інтеграцію.

Переваги CI: зменшення ризиків; зменьшення кількості процесів що повторюються; побудова ПО, що легко розгорнути; забезпечення кращого контролю проекту; збільшення довіри до програмного продукту.

Література: [7, Гл.2]

Завдання для СРС. Коли і як слід реалізовувати CI? Як CI впливає на низьку якість ПО

13

Тема 3.2 Створення повнофункціональної системи CI

Лекція 13. Безперервна інтеграція баз даних.

Автоматизація розгортання БД. Використання локального простору БД. Застосування сховища з контролем версій для елементів БД. Безперервна інтеграція БД. DBA як учасник групи розробки.

Література: [7, Гл.2]

Завдання для СРС. Інші особливості інтеграції БД: перевірка коду розгортання БД. перевірка розгорнутої БД.

14

Тема 3.2 Створення повнофункціональної системи CI

Лекція 14. Безперервна перевірка в CI.

Автоматизація перевірки модуля. Автоматизація перевірки компонента. Автоматизация перевірки системи. Виконання швидких та повільних перевірок.

Завдання для СРС. TDD, юніт тести в безперервній перевірці. Патерни зменшення складності інтеграційних тестів.

15

Тема 3.2 Створення повнофункціональної системи CI

Лекція 15. Безперервна інспекція.

Відмінності між інспекцією та перевіркою. Частота виконання інспекції. Показники коду. Складність коду. Організаційні стандарти коду. Зменшення кількості дублювання коду. Оцінка покриття кода тестами.

Література: [7, Гл.10]

Завдання для СРС. Метрики якості коду. Варіанти стандартів коду для C#. Підходи до Code Review.

16

Тема 3.3. Основи безперервного розгортання ПО

Лекція 16. Проблеми розгортання ПО.

Популярні антипатерни поставки релізів. Переваги безперервного розгортання. Реліз-кандидат. Принципи розгортання ПО.

Література: [7, Гл.10], [8]

Завдання для СРС. Стратегії керування конфігураціями: керування версіями; керування залежностями компоненрів; типи конфігурацій.

17

Тема 3.3. Основи безперервного розгортання ПО

Лекція 17. Конвеєр розгортання.

Що таке конвеєр розгортання. Структура конвеєра розгортання. Методики застосування конвеєра розгортання

Література: [1, Гл.4], [2, Л.13]

Завдання для СРС. Автоматичні приймальні тести у конвеєрі розгортання. Відкат змін у підготовці до випуску.

18

Тема 3.3. Основи безперервного розгортання ПО

Лекція 18. Сценарії сбірки та розгортання.

Інструменти. Принциаи складання сценаріїв сбірки та розгортання. Шари розгортання та тестування Тестування конфігурації середовища.

Література: [7, Гл.8]

Завдання для СРС. Шар драйверів застосування. Реалізація приймальних тестів. Тестування нефункціональних вимог.

Лабораторні заняття

Назва лабораторної роботи Кількість ауд. годин
1

Лабораторна робота 1. Застосування шаблонів «Одинак», «Ітератор», «Проксі».

Необхідно реалізувати частину функціонала робочої програми у вигляді класів для досягнення конкретних функціональних можливостей. Застосування одного з розглядаємих патернів при реалізації програми.

2
2

Лабораторна робота 2. Застосування шаблонів «Адаптер», «Будівельник», «Команда».

Необхідно реалізувати частину функціонала робочої програми у вигляді класів для досягнення конкретних функціональних можливостей. Застосування одного з розглядаємих патернів при реалізації програми.

2
3

Лабораторна робота 3. Застосування шаблонів «Абстрактна фабрика», «Фабричний метод», «Декоратор».

Необхідно реалізувати частину функціонала робочої програми у вигляді класів для досягнення конкретних функціональних можливостей. Застосування одного з розглядаємих патернів при реалізації програми.

2
4

Лабораторна робота 4. Застосування шаблонів «Посередник», «Фасад», «Міст», «Шаблонний метод».

Необхідно реалізувати частину функціонала робочої програми у вигляді класів для досягнення конкретних функціональних можливостей. Застосування одного з розглядаємих патернів при реалізації програми

4
5

Лабораторна робота 5 Застосування шаблонів «Композитний об’єкт», «Пристосуванець», «Інтерпретатор», «Відвідувач».

Необхідно реалізувати частину функціонала робочої програми у вигляді класів для досягнення конкретних функціональних можливостей. Застосування одного з розглядаємих патернів при реалізації програми

4
6

Лабораторна робота 6. Різні види взаємодії застосувань: клієнт-сервер, peer-to-peer, сервіс-орієнтована архітектура.

Необхідно реалізувати частину функціонала робочої програми у вигляді класів для досягнення конкретних функціональних можливостей. Застосування одного з розглядаємих патернів при реалізації програми

2
7

Лабораторна робота 7. Основи прототипування інтерфейсу користувача.

Реалізувати прототипи користувацького інтерфейсу для не менш ніж 3-х форм та продемонструвати Application Flow. Реалізувати обробку переходів між формами та події на відповідних елементах інтерфейсу. Добавити заповнення елементів тестовими даними

2

Заочна форма

Лекційні заняття

№ з/п Назва теми лекції та перелік основних питань
(перелік дидактичних засобів, посилання на літературу та завдання на СРС)
1

Тема 1.1. Вступ до паттернів проектування

Тема 1.2. Паттерни проектування

Лекція 1. Вступ до паттернів проектування. Класифікація паттернів проектування

Поняття паттернів проектування. Підхід до вирішення задачі з використанням паттернів проектування. Класифікація патернів проектування. Опис паттернів проектування. Каталог паттернів проектування.

Література: [2, §В.1], [3, §4.9] [1, §5.1], [2, §1.1], [3, §2.1]

Завдання на СРС. Породжуючі паттерни проектування. Структурні паттерни проектування. Паттерни поведінки.

2

Тема 3.1. Основи безперервної інтеграції.

Тема 3.2 Створення повнофункціональної системи CI.

Лекція 2 Введення в безперервну інтеграцію. Безперервна інтеграція баз даних Безперервна перевірка в CI.

Переваги CI. Автоматизація розгортання БД. Використання локального простору БД. Застосування сховища з контролем версій для елементів БД. Автоматизація перевірки модуля. Автоматизація перевірки компонента. Автоматизация перевірки системи.

Література: [6, §2.3], [6, §1.2.2]

Завдання для СРС. Безперервна інспекція. Відмінності між інспекцією та перевіркою. Частота виконання інспекції. Показники коду. Складність коду. Організаційні стандарти коду. Зменшення кількості дублювання коду. Оцінка покриття кода тестами. Метрики якості коду. Варіанти стандартів коду для C#. Підходи до Code Review.

3

Тема 3.3. Основи безперервного розгортання ПО.

Лекція 3. Проблеми розгортання ПО. Конвеєр розгортання.

Популярні антипатерни поставки релізів. Переваги безперервного розгортання. Реліз-кандидат. Принципи розгортання ПО. Що таке конвеєр розгортання. Структура конвеєра розгортання. Методики застосування конвеєра розгортання

Література: [5, §5.11-5.17], [4, §5.11-5.17], [5, §1.3], [5, §2.2]

Завдання для СРС. Стратегії керування конфігураціями: керування версіями; керування залежностями компоненрів; типи конфігурацій. Автоматичні приймальні тести у конвеєрі розгортання. Відкат змін у підготовці до випуску.

Сценарії сбірки та розгортання: Інструменти. Принциаи складання сценаріїв сбірки та розгортання. Шари розгортання та тестування Тестування конфігурації середовища.

Лабораторні заняття

Назва лабораторної роботи Кількість ауд. годин
1

Лабораторна робота 1. Застосування шаблонів «Одинак», «Ітератор», «Проксі».

Необхідно реалізувати частину функціонала робочої програми у вигляді класів для досягнення конкретних функціональних можливостей. Застосування одного з розглядаємих патернів при реалізації програми.

2
2

Лабораторна робота 2. Застосування шаблонів «Адаптер», «Будівельник», «Команда».

Необхідно реалізувати частину функціонала робочої програми у вигляді класів для досягнення конкретних функціональних можливостей. Застосування одного з розглядаємих патернів при реалізації програми.

2
3

Лабораторна робота 7. Основи прототипування інтерфейсу користувача.

Реалізувати прототипи користувацького інтерфейсу для не менш ніж 3-х форм та продемонструвати Application Flow. Реалізувати обробку переходів між формами та події на відповідних елементах інтерфейсу. Добавити заповнення елементів тестовими даними

4

Самостійна робота студента/аспіранта

Очна форма

№ з/п

Назва теми, що виноситься на самостійне опрацювання Кількість годин СРС
1 Поняття архітектурних патернів. Патерни роботи з БД. 2
2 Класифікація та каталог архітектурних патернів 2
3 Паттерн «Прототип». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна 4
4 Паттерни «Декоратор» та «Фасад». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттернів 4
5 Паттерни «Посередник» та «Стратегія». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттернів 4
6 Розгляд прикладів роботи з Unity Application Block (Unity) та Spring.NET. Реалізація та використання IoC та dependency injection в .net Core 2
7 Рефакторинг та проектування. Рефакторинг та продуктивність. 4
8 Запахи коду: Теоретична узагальненість. Ланцюжок повідомлень. Посередник. Класи даних 4
9 Запахи коду: Теоретична узагальненість. Ланцюжок повідомлень. Посередник. Класи даних 4
10 Рефакторинги організації даних: самоінкапсуляція поля. Заміна значення об’єктом. Заміна значення посиланням. Заміна посилання значенням. Дублювання даних що знаходяться під спостереженням. Заміна масиву об’єктом 4
11 Методи рефакторингу спрощення викликів методів: зміна імені метода; додавання параметру; розділення запиту та модифікатора; заміна параметру явними методами; збереження всього об’єкту; приховування методу 2
12 Коли і як слід реалізовувати CI? Як CI впливає на низьку якість ПО 4
13 Інші особливості інтеграції БД: перевірка коду розгортання БД. перевірка розгорнутої БД. 4
14 TDD, юніт тести в безперервній перевірці. Патерни зменшення складності інтеграційних тестів. 4
15 Метрики якості коду. Варіанти стандартів коду для C#. Підходи до Code Review. 2
16 Стратегії керування конфігураціями: керування версіями; керування залежностями компоненрів; типи конфігурацій 2
17 Автоматичні приймальні тести у конвеєрі розгортання. Відкат змін у підготовці до випуску. 2
18 Шар драйверів застосування. Реалізація приймальних тестів. Тестування нефункціональних вимог. 2
19 Підготовка до іспиту по всьому матеріалу модуля. 10

**
**

Заочна форма

№ з/п

Назва теми, що виноситься на самостійне опрацювання Кількість годин СРС
1 Породжуючі паттерни проектування. Паттерни «Декоратор» та «Фасад». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттернів 8
2 Паттерни поведінки. Паттерни «Посередник» та «Стратегія». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттернів 15
3

Структурні паттерни проектування. Паттерни «Адаптер», «Міст». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації

Паттерни «Декоратор» та «Фасад». Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттернів

15
4 Патерн IoC (Inversion Of Control) Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації 8
5

Принципи рефакторингу. Признаки необхідності проведення рефакторингу. Розробка тестів. Рефакторинг та проектування. Рефакторинг та продуктивність.

Поняття запаху коду. Дублювання коду. Довгий метод. Коментарі. Великий клас. Довгий список параметрів. Групи даних. Оператори типу switch. Паралельні ієрархії наслідування. Лінивий клас. Тимчасове поле

Рефакторинги роботи з методами: Виділення методу. Inline Method. Заміна тимчасової змінної викликом методу. Введення пояснюючої змінної. Розщеплення пояснюючої змінної. Видалення присвоювань параметрам. Заміна метода об’єктом. Заміщення алгоритму

15
6 Безперервна інспекція. Відмінності між інспекцією та перевіркою. Частота виконання інспекції. Показники коду. Складність коду. Організаційні стандарти коду. Зменшення кількості дублювання коду. Оцінка покриття кода тестами. Метрики якості коду. Варіанти стандартів коду для C#. Підходи до Code Review. 15
7

Стратегії керування конфігураціями: керування версіями; керування залежностями компоненрів; типи конфігурацій. Автоматичні приймальні тести у конвеєрі розгортання. Відкат змін у підготовці до випуску.

Сценарії сбірки та розгортання: Інструменти. Принциаи складання сценаріїв сбірки та розгортання. Шари розгортання та тестування Тестування конфігурації середовища.

18
8 Підготовка до заліку по всьому матеріалу модуля. 10

Політика та контроль

Політика навчальної дисципліни (освітнього компонента)

Система вимог, які ставляться перед студентом:

  • відвідування лекційних та лабораторних занять є обов’язковою складовою вивчення матеріалу;

  • на лекції викладач користується власним презентаційним матеріалом; відпрацьовує практичну частину на віртуальній машині з встановленою відповідною РСУБД; використовує гугл-диск для викладання матеріалу поточної лекції, додаткових ресурсів, лабораторних робіт та інше; викладач відкриває доступ до певної директорії гугл-диска для скидання електронних лабораторних звітів та відповідей на МКР;

  • на лекції заборонено відволікати викладача від викладання матеріалу, усі питання, уточнення та ін. студенти задають в кінці лекції у відведений для цього час;

  • лабораторні роботи захищаються у два етапи – перший етап: студенти виконують завдання на допуск до захисту лабораторної роботи; другий етап – захист лабораторної роботи. Бали за лабораторну роботу враховуються лише за наявності електронного звіту;

  • модульні контрольні роботи пишуться на лекційних заняттях без застосування допоміжних засобів (мобільні телефони, планшети та ін.); результат пересилається у файлі до відповідної директорії гугл-диску;

  • заохочувальні бали виставляються за: активну участь на лекціях; участь у факультетських та інститутських олімпіадах з навчальних дисциплін, участь у конкурсах робіт, підготовка оглядів наукових праць; презентацій по одній із тем СРС дисципліни тощо. Кількість заохочуваних балів не більше 10;

  • штрафні бали виставляються за: невчасну здачу лабораторної роботи. Кількість штрафних балів не більше 10.

Види контролю та рейтингова система оцінювання результатів навчання (РСО) (очна форма)

Рейтинг студента з дисципліни складається з балів, що він отримує за:

  1. виконання контрольних робіт (2 експрес-контрольні на лабораторних заняттях);

  2. виконання та захист 7 лабораторних робіт;

  3. виконання 2 модульних контрольних робіт (МКР);

  4. заохочувальні та штрафні бали.

Система рейтингових балів та критерії оцінювання

Експрес-контрольні роботи:

«відмінно» – повна відповідь (не менше 90% потрібної інформації) – 2.5 балів;

«добре» – достатньо повна відповідь (не менше 75% потрібної інформації) або повна відповідь з незначними недоліками – 1,5-2 балів;

«задовільно» – неповна відповідь (не менше 60% потрібної інформації) та незначні помилки – 1 бали;

«незадовільно» – відповідь не відповідає вимогам до «задовільно» – 0 балів.

Лабораторні роботи:

«відмінно», повна відповідь на питання під час захисту (не менш ніж 90% потрібної інформації) та оформлений належним чином електронний протокол до лабораторної роботи – 5 балів;

«добре», достатньо повна відповідь на питання під час захисту (не менш ніж 75% потрібної інформації) та оформлений належним чином електронний протокол до лабораторної роботи – 4/3 бали;

«задовільно», неповна відповідь на питання під час захисту (не менш ніж 60% потрібної інформації), незначні помилки та оформлений належним чином електронний протокол до лабораторної роботи – 2/1 бал;

«незадовільно», незадовільна відповідь та/або не оформлений належним чином електронний протокол до лабораторної роботи – 0 балів.

За кожне заняття запізнення з поданням лабораторної роботи до захисту від встановленого терміну оцінка знижується на 1 бал.

Модульні контрольні роботи:

«відмінно», повна відповідь (не менш ніж 90% потрібної інформації) – 5 балів;

«добре», достатньо повна відповідь (не менш ніж 75% потрібної інформації), або повна відповідь з незначними помилками – 3-4 балів;

«задовільно», неповна відповідь (але не менш ніж 60% потрібної інформації) та незначні помилки – 1-2 бали;

«незадовільно», незадовільна відповідь (неправильний розв’язок задачі), потребує обов’язкового повторного написання в кінці семестру – 0 балів.

Заохочувальні бали

– за виконання творчих робіт з кредитного модуля (наприклад, участь у факультетських та інститутських олімпіадах з навчальних дисциплін, участь у конкурсах робіт, підготовка оглядів наукових праць тощо); за активну роботу на лекції (питання, доповнення, зауваження за темою лекції, коли лектор пропонує студентам задати свої питання) 1-2 бали, але в сумі не більше 10;

– презентації по СРС – від 1 до 5 балів.

Міжсесійна атестація

За результатами навчальної роботи за перші 7 тижнів максимально можлива кількість балів – 22,5 бали (2 лабораторні, МКР-1, 1 експрес-контрольна). На першій атестації (8-й тиждень) студент отримує «зараховано», якщо його поточний рейтинг не менший ніж 8 балів.

За результатами 13 тижнів навчання максимально можлива кількість балів – 45 балів (4 лабораторні, МКР-2, 2 експрес-контрольні). На другій атестації (14-й тиждень) студент отримує «зараховано», якщо його поточний рейтинг не менший ніж 16 балів.

Максимальна сума вагових балів контрольних заходів протягом семестру складає:

RD = 7*rлаб+2*rмкр+2*rек + (rз - rш)=7*5+2*5+2*2,5+ (rз - rш)=50 + (rз - rш),

де rлаб – бал за лабораторну роботу (0…5);

rмкр – бал за написання МКР (0…5);

rек – бал за написання експрес-контрольної роботи (0…2,5);

rз – заохочувальні бали за активну участь на лекціях, презентації, участь в олімпіадах, конкурсі роботи, наукові роботи за тематикою дисципліни (0…10);

rзш – штрафні бали.

Іспит:

Умовою допуску до екзамену є зарахування всіх лабораторних робіт та стартовий рейтинг не менше 17 балів.

На заліку студенти виконують письмову контрольну роботу. Кожен білет містить два теоретичних запитання (завдання) і одне практичне завдання. Перелік теоретичних питань наведений у додатку 1. Кожне запитання оцінюється у 10 балів.

Система оцінювання питань:

«відмінно», повна відповідь, не менше 90% потрібної інформації, що виконана згідно з вимогами до рівня «умінь», (повне, безпомилкове розв’язування завдання) – 9-10 балів;

«добре», достатньо повна відповідь, не менше 75% потрібної інформації, що виконана згідно з вимогами до рівня «умінь або є незначні неточності (повне розв’язування завдання з незначними неточностями) – 7-8 балів;

«задовільно», неповна відповідь, не менше 60% потрібної інформації, що виконана згідно з вимогами до «стереотипного» рівня та деякі помилки (завдання виконане з певними недоліками) – 5-6 бали;

«незадовільно», відповідь не відповідає умовам до «задовільно» – 0-4 балів.

Сума стартових балів та балів за екзаменаційну контрольну роботу переводиться до екзаменаційної оцінки згідно з таблицею:

Таблиця 1. Переведення рейтингових балів до оцінок за університетською шкалою

Кількість балів Оцінка
100-95 Відмінно
94-85 Дуже добре
84-75 Добре
74-65 Задовільно
64-60 Достатньо
Менше 60 Незадовільно

Є не зараховані лабораторні роботи або

не зарахована модульна контрольна робота

Не допущено

Додаткова інформація з дисципліни (освітнього компонента)

  • передбачена можливість закривати частину лабораторного та лекційного матеріалу шляхом здобування сертифікатам по online курсам (наприклад, COURSERA) відповідних розділів та тем дисципліни;

  • перелік теоретичних питань, які виносяться на семестровий контроль наведено в Додатку 1;

  • на початку семестру викладач аналізує існуючі курси по тематиці дисципліни та пропонує пройти відповідні безкоштовні курси студентам. Після отриманням студентом сертифікату проходження дистанційних чи онлайн курсів за відповідною тематикою, викладач закриває відповідну частину курсу (лабораторні чи лекції) за попередньою домовленістю з групою.

Робочу програму навчальної дисципліни (Силабус):

Складено доцент, к.т.н., Амонс Олександр Анатолійович

Ухвалено кафедрою АУТС (протокол № 1 від 27.08.2020 р.)

Погоджено Методичною комісією факультету[1] (протокол № 1 від 02.09.2020 р.)

Додаток 1

Перелік теоретичних питань на іспит

Сучасні методології розробки комп’ютеризованих систем

1. Огляд історії розвитку технологій програмування. Поняття життєвого циклу програмних систем.

2. Сучасні методології розробки програмних систем.

Моделі розробки. Концепції програмування. Функціональний підхід до розробки програмних систем. MSF. RUP. Екстремальне програмування.

Мова проектування UML

3. Основні поняття мови UML.

Призначення мови. Поняття моделі. Поняття діаграм UML. Типи діаграм.

4. Діаграми варіантів використання.

Призначення діаграми. Поняття актора, варіанта використання (прецедента). Види зв’язків між елементами. Стереотипи зв’язків. Приклади

5. Діаграми класів.

Призначення діаграми. Поняття концептуальної моделі, специфікації, моделі реалізації. Поняття класу, об’єкта. Види зв’язків між класами. Стереотипи класів. Атрибути та операції. Приклади.

6. Діаграми взаємодії.

Призначення діаграм. Діаграми послідовності. Послідовність виконання операцій. Взаємозв’язок з діаграмами класів. Види операцій.

7. Діаграми кооперації.

Діаграми кооперації. Взаємозв’язок між діаграмами кооперації та послідовності. Приклади.

8. Діаграми компонентів та розгортання.

Призначення діаграм. Поняття компонента. Зв’язок з діаграмами класів. Діаграми розгортання. Приклади.

Методологія Rational Unified Process

9. Вступ до RUP.

Організація процесу розробки програмних систем. Ітеративна розробка. Поняття процесу розробки основаного на архітектурі. Поняття процесу, що

Технологічні процеси RUP

10. Технологічний процес управління проектом.

Мета. Планування ітеративного проекта. Поняття ризиків. Поняття метрик. Виконавці та артефакти.

11. Технологічний процес моделювання бізнес-процесів.

Мета. Сценарії моделювання. Виконавці та артефакти. Технологічний процес. Інструментальна підтримка.

12. Технологічний процес управління вимогами.

Мета. Поняття вимоги. Типи вимог. Збір вимог та керування ними. Проектування інтерфейсу орієнтованого на користувача. Виконавці та артефакти. Інструментальна підтримка. Технологічний процес керування вимогами.

13. Технологічний процес аналіза і проектування.

Мета. Аналіз та проектування. Модель проектування. Модель аналіза. Роль інтерфейсів. Виконавці та артефакти. Артефакти систем реального часу. Модульне проектування. Інструментальна підтримка.

14. Технологічний процес тестування.

Мета. Поняття якості. Тестування в ітеративному життєвому циклі. Класифікація тестів. Модель тестування. Виконавці та артефакти. Технологічний процес тестування. Інструментальна підтримка.

15. Технологічний процес управління конфігурацією.

Мета. Куб ССМ. Технологічний процес. Інструментальна підтримка.

16. Технологічний процес управління середовищем розробки.

Мета. Виконавці та артефакти. Технологічний процес.

17. Технологічний процес впровадження.

Мета. Виконавці та артефакти. Технологічний процес

18. Технологічний процес реалізації.

Мета. Конструкції. Інтеграція. Прототипи. Виконавці та артефакти. Технологічний процес. Інструментальна підтримка.

Вступ до паттернів проектування

19. Вступ до паттернів проектування.

Поняття паттернів проектування. Підхід до вирішення задачі з використанням паттернів проектування.

21. Класифікація паттернів проектування.

Класифікація патернів проектування. Опис паттернів проектування. Каталог паттернів проектування.

Породжуючі паттерни проектування

22. Паттерн «Абстрактна фабрика»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

23. Паттерн «Builder»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

24. Паттерн «Фабричний метод»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

25. Паттерн «Прототип»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

26. Паттерн «Singleton»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

Структурні паттерни проектування

27. Паттерн «Адаптер»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

28. Паттерн «Міст»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

29. Паттерн «Декоратор»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

30. Паттерн «Фасад»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

31. Паттерн «Замісник» (Proxy)

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

Паттерни поведінки

32. Паттерн «Цепочка (ланцюжок) відповідальності»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

33. Паттерн «Команда»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

34. Паттерн «Посередник» (Mediator)

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

35. Паттерн «Стан»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

36. Паттерн «Стратегія»

Призначення. Застосування. Структура. Учасники. Відношення. Результати застосування паттерна. Приклад реалізації.

Рефакторинг

37. Рефакторинг

Принципи рефакторингу. Признаки необхідності проведення рефакторингу. Розробка тестів. Рефакторинг та проектування. Рефакторинг та продуктивність.

38. Класифікація методів рефакторингу.

39. Запахи коду.

Дублювання коду. Довгий метод. Великий клас. Довгий список параметрів. Розбіжні модифікації. «Стрільба дробом». Заздрісні функції. Групи даних. Одержимість елементарними типами. Оператори типу switch. Паралельні ієрархії наслідування. Ледачий клас. Теоретична загальність. Тимчасове поле. Ланцюжок повідомлень. Посередник. Недоречна близькість. Альтернативні класи з різними інтерфейсами. Неповнота бібліотечного класу. Класи даних. Відмова від наслідування. Коментарі.

40. Рефакторинг методів

Виділення методу. Вбудовування методу. Вбудовування тимчасової змінної. Заміна тимчасової змінної викликом методу. Введення пояснюючої змінної. Розщеплення тимчасової змінної. Видалення присвоювань параметрам. Заміна метода об’єктом. Заміщення алгоритму.

41. Рефакторинг умовних виразів.

Декомпозиція умовного оператора. Консолідація умовного виразу. Консолідація дублюючихся умовних фрагментів. Видалення керуючого прапору. Заміна вкладених умовних операторів граничним оператором. Заміна умовного оператора поліморфізмом. Введення об’єкту Null. Введення тверджень.

42. Організація даних. Крупні рефакторинги.

Самоінкапсуляція поля. Заміна значення даних об’єктом. Заміна значення посиланням. Заміна підкласу полями. Інкапсуляція колекції.

[1] Методичною радою університету – для загальноуніверситетських дисциплін.