Види проєктування ПЗ (структурне, ООП, функціональне, архітектурне, інтерфейсне)
Розділ: Інженерія систем і програмного забезпечення
📌 Про що ця тема
Тут перевіряють, чи розумієш ти, що проєктування програмного забезпечення — це етап між аналізом вимог і написанням коду, на якому вирішують, ЯК буде влаштована програма. Ключове поняття — підхід (парадигма) проєктування: той самий продукт можна спроєктувати різними способами, і кожен має свою логіку розбиття системи на частини.
📖 Головне
• Проєктування ПЗ — створення структури майбутньої програми: з яких частин вона складається, як ці частини взаємодіють, як виглядає для користувача. Відповідає на питання «як зробити», а не «що зробити».
• Структурне проєктування — розбиття задачі на підзадачі «згори вниз»: велика задача ділиться на дрібніші модулі та процедури/функції. Основа — алгоритм і дані окремо. Модель — блок-схеми, структурні діаграми.
• Об’єктно-орієнтоване проєктування (ООП) — система описується як набір об’єктів, що мають дані (поля) й поведінку (методи). Базові принципи: інкапсуляція (приховування внутрішнього), наслідування (передача властивостей від класу до класу), поліморфізм (однакова дія по-різному для різних об’єктів), абстракція (виділення головного).
• Функціональне проєктування — програма як композиція функцій, що перетворюють вхідні дані на вихідні без зміни зовнішнього стану. Цінуються незмінні дані й відсутність побічних ефектів.
• Архітектурне проєктування — проєктування системи «у великому»: які є основні компоненти, сервери, бази даних, як вони зв’язані. Типові рішення (шаблони): клієнт-сервер, багаторівнева (клієнт–логіка–дані), мікросервіси, монолітна.
• Інтерфейсне проєктування (UI/UX) — як програма виглядає й сприймається користувачем: розташування елементів, зручність, зрозумілість, зворотний зв’язок. UI — зовнішній вигляд, UX — загальне враження від користування.
• Різниця рівнів: архітектурне — найвищий рівень (структура всієї системи), структурне/ООП/функціональне — рівень внутрішньої організації коду, інтерфейсне — рівень взаємодії з людиною.
🔢 Як це працює на прикладі
Задача: онлайн-магазин.
• Архітектурне: вирішуємо, що буде веб-клієнт (браузер), сервер застосунку з бізнес-логікою і база даних — класична трирівнева архітектура.
• ООП: виділяємо класи Товар, Кошик, Користувач, Замовлення; Кошик має метод «додати товар».
• Структурний погляд: функція «оформити замовлення» розкладається на під-функції «перевірити наявність», «порахувати суму», «зберегти».
• Функціональний стиль: функція «порахувати суму» приймає список товарів і повертає число, нічого не змінюючи ззовні.
• Інтерфейсне: проєктуємо кнопку «Купити», видиму ціну, повідомлення «Товар додано».
⚠️ Типові помилки
• Плутають архітектурне й структурне проєктування: архітектурне — про всю систему й компоненти, структурне — про поділ коду на модулі та процедури.
• Вважають, що ООП і функціональне — це мови, а не підходи; одна мова може підтримувати кілька парадигм.
• Плутають інкапсуляцію з абстракцією: інкапсуляція ховає реалізацію, абстракція виділяє суттєве.
• Змішують UI та UX: UI — вигляд, UX — зручність і враження.
• Думають, що проєктування = програмування; проєктування передує написанню коду.
🎯 Що завчити напам’ять
• 4 принципи ООП: інкапсуляція, наслідування, поліморфізм, абстракція.
• Структурне — «згори вниз», модулі й функції.
• Функціональне — функції без побічних ефектів, незмінні дані.
• Архітектурне — рівень усієї системи (клієнт-сервер, багаторівнева, мікросервіси).
• UI — вигляд, UX — враження.
🧠 Перевір себе
1. Який підхід будується на об’єктах з полями й методами?
2. Назви будь-які два принципи ООП.
3. Чим архітектурне проєктування відрізняється від структурного?
4. Що таке UX на відміну від UI?
Відповіді: 1 — об’єктно-орієнтоване (ООП); 2 — напр., інкапсуляція і поліморфізм (також наслідування, абстракція); 3 — архітектурне описує структуру всієї системи та її компоненти, структурне — поділ коду на модулі й функції; 4 — UX це загальне враження й зручність користування, UI — лише зовнішній вигляд інтерфейсу.