Компонентно-базоване проектування програмних систем

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

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

Рівень вищої освіти Перший (бакалаврський)
Галузь знань 12 Інформаційні технології
Спеціальність 126 Інформаційні системи та технології
Освітня програма Інтегровані інформаційні системи, Інформаційне забезпечення робототехнічних систем, Інформаційні управляючі системи та технології
Статус дисципліни Вибіркова
Форма навчання очна(денна)
Рік підготовки, семестр 6 курс, осінній семестр
Обсяг дисципліни 4 кредити ECTS/120 годин (18 годин – Лекції, 36 годин – Лабораторні, 66 годин – СРС)
Семестровий контроль/ контрольні заходи Залік/залікова робота, захист лабораторних робіт
Розклад занять

1 лекція (2 години) 1 раз на тиждень;

1 лабораторна робота (2 години) 1 раз на два тиждні

Мова викладання Українська
Інформація про керівника курсу / викладачів Лектор, лабораторні: к.т.н., Олександр Амонс, o.amons@kpi.ua
Розміщення курсу https://campus.kpi.ua

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

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

Опис дисципліни.

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

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

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

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

Знання:
  • Підготовка висококваліфікованих фахівців, які володіють методами, моделями та засобами розробки програмних систем.
  • Компонентно-базованого підходу до проектування та розробки програмних систем
  • Принципів дизайну компонентів
  • Моделі С4 опису проектованої системи
Уміння:
  • Ідентифікувати частини системи які потрібно виділити в якості компонентів для повторного використання
  • Проектувати компоненти для повторного використання.
  • Проектувати інтерфейси компонентів
  • Інтегрувати існуючі компоненти в нову систему
  • Описувати проект системи у діаграмах UML та моделі С4

2.Пререквізити та постреквізити дисципліни

Для успішного засвоєння дисципліни студент повинен володіти освітніми компонентами «Операційні системи», «Програмування – 1. Основи програмування», «Програмування – 2. Структури даних та алгоритми», «Дискретна математика», «Бази даних». «Технології розроблення програмного забезпечення».

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

Очна форма

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

Розділ 1. Вступ у компонентно базоване проектування

  • Тема 1.1. Вступ у компонентно базоване проектування
  • Тема 1.2. Мова проектування UML у компонентно базованому проектуванні
  • Тема 1.3. С4

Розділ 2. Принципи дизайну.

  • Тема 2.1. Принцип єдиної відповідальності та принцип відкритості/закритості.
  • Тема 2.2. Принцип підстановки Барбари Лісков з точки зору компонентного підходу
  • Тема 2.3. Принципи розподілу інтерфейсів і інверсії залежності.

Розділ 3. Принципи організації компонентів.

  • Тема 3.1. Компоненти: Коротка історія, переміщення, лінкери.
  • Тема 3.2. Зв'язність компонентів
  • Тема 3.3. Сполучуваність компонентів.

Розділ 4. CBSE (компонентно-базована розробка програмного забезпечення).

  • Тема 4.1. Основні поняття CBSE.
  • Тема 4.2. Розробка компонентів для повторного використання
  • Тема 3.3. CBSE: композиція компонентів.

Розділ 5. Компонентні підходи у сучасних мовах програмування.

  • Тема 5.1. Компонентний підхід у операційних системах.
  • Тема 5.2. Компонентний підхід у Java
  • Тема 5.3. Компонентний підхід у .Net.

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

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

  1. Роберт Мартін. Чиста архітектура: мистецтво створення програмного забезпечення. Видання друге. – Харків: Вид-во «Ранок»: Фабула, 2024 – 368с
  2. Martin Fowler. UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3rd Edition – Print2print, 2016. – 208
  3. Ерік Фрімен, Елізабет Робсон. Head First. Патерни проєктування – Фабула, 2020 – 672с
  4. Juval Lowy, Programming .Net Components: Design and Build .Net Applications Using Component-Oriented Programming – O'Reilly, 2005 – 644 p.

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

  1. Боггс У., Боггс М. UML и Rational Rose: Пер. с англ. – М.: Лори, 2000. – 582 с.
  2. Martin Fowler. Patterns of Enterprise Application Architecture - Addison-Wesley Professional, 2002 – 560
  3. Grady Booch, Robert A. Maksimchuk, Michael W. Engle, Bobbi J. Young, Jim Conallen, Kelli A. Houston. Object-Oriented Analysis and Design with Applications (3rd Edition) – Addison-Wesley Professional, 2007 – 697
  4. Майк Кон. Оцінювання і планування в Agile. Пер. с англ. – видавництво Фабула, 2019. – 336 с.

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

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

Очна форма

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

№ з/п Назва теми лекції та перелік основних питань (перелік дидактичних засобів, посилання на літературу та завдання на СРС)
1 Тема 1.1 Вступ у компонентно базоване проектування
Лекція 1. Вступ.
Огляд історії розвитку технологій програмування. Поняття компонентно базованого проектування.
Література: [1, Гл.1]
2 Тема 1.2. Мова проектування UML у компонентно базованому проектуванні.
Лекція 2. Діаграми розгортання та компонентів UML.
Призначення діаграми. Поняття концептуальної моделі, специфікації, моделі реалізації. Поняття класу, об’єкта. Види зв’язків між класами. Стереотипи класів. Атрибути та операції. Приклади
Література: [3, Гл.1]
Завдання для СРС. Проектування по моделі. Відображення елементів діаграми класів у програмному коді
3 Тема 1.3. С4
Лекція 3. Методологія проектування С4
Введення в модель С4. Основні рівні. Відмінності від UML підходи до застосування . Діаграма контексту системи (System Context)
Література: [1, Гл.2]
Завдання для СРС. Підходи до відображення контекстів на діаграмі.
4 Тема 1.3. С4
Лекція 4. Методологія проектування С4. продовження.
Діаграма контейнерів (Container diagrams). Діаграма компонентів (Components diagrams). Діаграма програмного коду (Code diagrams)
Література: [1, Гл.2]
Завдання для СРС. Основні відмінності діаграм моделювання С4 від UML
5 Тема 2.1. Принцип єдиної відповідальності та принцип відкритості/закритості.
Лекція 5. Принцип єдиної відповідальності та принцип відкритості/закритості.
Принцип єдиної відповідальності: ознака «Ненавмисне дублювання», ознака «Злиття», основні поняття та рішення.
Принцип відкритості-закритості: опис принципу, керування напямком, приховування інформації
Література: [1, Гл.1.1.2; Гл.3], [3, Гл.1]
Завдання для СРС. Зв’язок з принципом узгодженої зміни та принципом осі зміни
6 Тема 2.2. Принцип підстановки Барбари Лісков з точки зору компонентного підходу.
Лекція 6. Принцип підстановки Барбари Лісков.
Опис принципу. Інструкція з використання наслідування. Проблема квадрат-прямокутник. LSP і архітектура. Приклад порушення LSP.
Література: [1, Гл.9]
Завдання для СРС. Як порушення LSP приводить до забруднення архітектури великою кількістю додаткових ієрархій.
7 Тема 2.3. Принципи розподілу інтерфейсів і інверсії залежності.
Лекція 7. Принципи розподілу інтерфейсів і інверсії залежності.
Принцип розподілу інтерфейсів і мова програмування. Принцип розподілу інтерфейсів і архітектура.
Принцип інверсії залежності. Стабільні абстакціїї. Фабрики. Конкретні компоненти.
Література: [1, Гл.10]
Завдання для СРС. Принцип спільного використання
8 Тема 3.1. Компоненти: Коротка історія, переміщення, лінкери.
Лекція 8. Принципи організації компонентів: коротка історія
Коротка історія компонентів. Переміщення коду. Лінкери.
Література: [1, Гл.12]
Завдання для СРС. Компонентний підхід у ОС.
9 Тема 3.2. Зв'язність компонентів
Лекція 9. Зв'язність компонентів
Принцип еквівалентного повторного використання і релізів.
Принцип узгодженної зміни; схожість із принципом єдиної відповідальності
Принцип спільного повторного використання; Зв'язок із принципом поділу інтерфейсів
Література: [1, Гл.13]
Завдання для СРС. Діаграма протиріч для визначення зв'язності компонентів
10 Тема 3.3. Сполучуваність компонентів
Лекція 10. Сполучуваність компонентів. Принцип ациклічних залежностей
Принцип ациклічних залежностей.
Щотижневі збірки. Усунення циклічних залежностей. Вплив циклів у графі залежностей компонентів. Розрив циклу
Література: [1, Гл.14.1]
Завдання для СРС. Принцип ациклічних залежностей: "Мінливість"
11 Тема 3.3. Сполучуваність компонентів
Лекція 11. Сполучуваність компонентів. Проектування згори-вниз. Принцип стабільних залежностей
Проектування згори-вниз.
Принцип стабільних залежностей: Стабільність, Метрики стабільності, чи всі компоненти мають бути стабільними.
Література: [1, Гл.14.2]
Завдання для СРС. Принцип стабільних залежностей: абстрактні компоненти
12 Тема 3.3. Сполучуваність компонентів
Лекція 12. Сполучуваність компонентів. Принцип стабільності абстракцій
Принцип стабільності абстракцій: Високорівневі правила; Міра абстрактності; Головна послідовність, Зона болю, Зона марності.
Література: [1, Гл.14.3]
13 Тема 4.1. Основні поняття CBSE (компонентно-базована розробка програмного забезпечення)
Лекція 13. Основні поняття CBSE
Компоненти та моделі компонентів. CBSE processes. Композиція компонентів
Література: [4, Гл.1]
Завдання для СРС. Служби проміжного програмного забезпечення, визначені в моделі компонентів
14 Тема 4.2. Розробка компонентів для повторного використання
Лекція 14. Розробка компонентів для повторного використання
CBSE for reuse. Зосередження на розробці компонентів для повторного використання. Зміни для повторного використання компонентів. Обробка виключень
Література: [4, Гл.2]
Завдання для СРС. Підтримка застарілих компонентів системи
15 Тема 4.3. CBSE: композиція компонентів
Лекція 15. CBSE: композиція компонентів
Ідентифікація компонент: процес та проблеми. Валідація компонентів. Види композиції компонентів. Несумісні інтерфейси. Адаптація компонентів
Література: [4, Гл.2]
Завдання для СРС: Компроміси композиції компонентів
16 Тема 5.1. Компонентний підхід у операційних системах
Лекція 16. Компонентний підхід у операційних системах
COM, DCOM, COM+, CORBA
Завдання для СРС. Паттерн «Проксі»
17 Тема 5.2. Компонентні підходи у Java
Лекція 17. Компонентні підходи у Java
JavaBean. Enterprise JavaBeans (JavaEE EJB)
Завдання для СРС: Spring
18 Тема 5.3. Компонентні підходи у .Net
Лекція 17. Компонентні підходи у .Net
.Net Remoting, ActiveX, COM, COM+
Література: [4, Гл.4]
Завдання для СРС. .Net MEF

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

Назва лабораторної роботи
1 Лабораторна робота 1. Проектування діаграм рівня контексту системи
По вибраній темі потрібно створити UseCase діаграми з вимогами до системи. На основі цього побудувати діаграму розгортання та Діаграму(и) рівня контексту системи
2 Лабораторна робота 2. Проектування діаграм рівня контейнерів.
По вибраній темі на основі діаграм рівня контексту та діаграм варіантів використання створити діаграми рівня контейнерів.
3 Лабораторна робота 3. Проектування інтерфейсів.
По вибраній темі на основі діаграм створених на попередніх лабораторних спроектувати API інтерфейси для взаємодії між сервісами.
4 Лабораторна робота 4. Проектування компонентів.
По вибраній темі на основі попередніх діаграм створити діаграми рівня компонентів
5 Лабораторна робота 5. Проектування діаграм коду.
По вибраній темі на основі попередніх діаграм побудувати діаграми рівня коду (діаграми класів, інтерфейсів, об’єктів)
6 Лабораторна робота 6. Реалізація базового функціоналу.
По вибраній темі на основі спроектованих діаграм виконати реалізацію базового функціоналу мінімум 3 компонентів
7 Лабораторна робота 7. Розгортання реалізованих компонентів.
По вибраній темі реалізувати розгортання в Doker-контейнерах реалізованих сервісів та налаштувати взаємодію між ними.

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

Очна форма

№ з/п Вид самостійної роботи Кількість годин СРС
1 Підготовка до лабораторних 50
2 Підготовка до МКР 6
3 Підготовка до заліку по всьому матеріалу модуля. 10

6.Контрольна робота

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

Модульна контрольна робота (МКР) виконується після вивчення Розділів 1-3 та виконання лабораторних робіт 1-4. Кожен студент отримує індивідуальне завдання, відповідно до якого необхідно спроектувати діаграми UML, застосувати один із паттернів проектування, та реалізувати каркас системи з використанням вибраного паттерну.

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

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

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

  • правила відвідування занять: заборонено оцінювати присутність або відсутність здобувача на аудиторному занятті, в тому числі нараховувати заохочувальні або штрафні бали. Відповідно до РСО даної дисципліни бали нараховують за відповідні види навчальної активності на лекційних та практичних заняттях.
  • правила поведінки на заняттях: студент має можливість отримувати бали за відповідні види навчальної активності на лекційних та практичних заняттях, передбачені РСО дисципліни. Використання засобів зв'язку для пошуку інформації на гугл-диску викладача, в інтернеті, в дистанційному курсі на платформі Сікорський здійснюється за умови вказівки викладача;
  • політика дедлайнів та перескладань: якщо студент не проходив або не з'явився на МКР (без поважної причини), його результат оцінюється у 0 балів. Перескладання результатів МКР не передбачено;
  • політика щодо академічної доброчесності: Кодекс честі Національного технічного університету України «Київський політехнічний інститут» https://kpi.ua/files/honorcode.pdf встановлює загальні моральні принципи, правила етичної поведінки осіб та передбачає політику академічної доброчесності для осіб, що працюють і навчаються в університеті, якими вони мають керуватись у своїй діяльності, в тому числі при вивченні та складанні контрольних заходів з дисципліни «Системи автоматизації»;
  • при використанні цифрових засобів зв'язку з викладачем (мобільний зв'язок, електронна пошта, переписка на форумах та у соцмережах тощо) необхідно дотримуватись загальноприйнятих етичних норм, зокрема бути ввічливим та обмежувати спілкування робочим часом викладача.

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

Поточний контроль : тестування, МКР, виконання та захист лабораторних робіт.

Календарний контроль : провадиться двічі на семестр як моніторинг поточного стану виконання вимог силабусу.

Семестровий контроль: екзамен.

Умови допуску до семестрового контролю : виконані та захищені лабораторні роботи, семестровий рейтинг більше 30 балів.

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

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

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

  • виконання та захист лабораторних робіт;
  • виконання модульної контрольної роботи (МКР);
  • відповіді на заліку.

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

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

де:
rлаб – бал за лабораторну роботу (0…10);
rмкр – бал за написання МКР (0…10);
rек – бал за написання експрес-контрольної роботи (0…5);
rз – заохочувальні бали за активну участь на лекціях, презентації, участь в олімпіадах, конкурсі роботи, наукові роботи за тематикою дисципліни (0…10);
rзш – штрафні бали.

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

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

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

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

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

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

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

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

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

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

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

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

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

Календарний контроль

Календарний контроль базується на поточній рейтинговій оцінці. Умовою позитивної атестації є значення поточного рейтингу студента не менше 50% від максимально можливого на час атестації. Бал, необхідний для отримання позитивного календарного контролю доводиться до відома студентів викладачем не пізніше ніж за 2 тижні до початку календарного контролю.

Форма семестрового контролю – залік

Студенти, які виконали всі умови допуску до семестрової атестації (не мають заборгованостей з лабораторних робіт, наявні усі електронні звіти) та набрали протягом семестру необхідну кількість балів (RD ≥ 60), отримують залікову оцінку (залік) так званим «автоматом» відповідно до набраного рейтингу. У такому разі до заліково-екзаменаційної відомості вносяться бали RD та відповідні оцінки.

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

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

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

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

Ухвалено кафедрою ICT (протокол 16 від 12.06.2024.)

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