DRAFT [2022-2023][ua] at 2023-01-05 17:09:33 +0200
Logo-do [errata] Profile

Технологія створення програмних продуктів

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

Конспект лекції


Створюючи об’єкт, у тому числі й програмний продукт, розробник часто стикається із завданнями, які вже хто-небудь вирішив. У 70-ті рр. ХХ ст архітектор  Кристофер Александер (Christopher Alexander) [37] запропонував шаблони проектування будинків та міст. Через десятиліття ця ідея переросла  у  процесі розроблення ПЗ до шаблонів проектування інтерфейсу користувача, запропонованих Вардом Каннінгемом (Ward Cunningham) та Кентом Беком [38].  Далі ідея була активно підхоплена та розвинута у вигляді каталогу патернів ООП. Цей каталог [39] став дуже популярним серед розробників і часто згадується як патерни GoF («Gang of Four», або «банда чотирьох», – за кількістю авторів). Ідея повторного використання не тільки коду, а й архітектурних та проектних рішень виявилася настільки успішною, що сьогодні патерни проектування широко застосовуються в різних методиках розроблення програмного забезпечення.

У роботі [39] під патернами проектування об’єктно-орієнтованих систем розуміють опис взаємодії об’єктів і класів, адаптованих для вирішення спільної задачі проектування в конкретному контексті.

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

В останнє десятиліття шаблони впроваджені навіть у роботу менеджера процесу розроблення ПЗ (Джеймса Коплі, Ніла Харрісона «Organizational Patterns of Agile Software Development», Тома Демарко, Тіма Лістера «Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior»).

У даний час найбільш популярними патернами є патерни проектування. Однією з найпоширеніших класифікацій таких патернів є класифікація за ступенем деталізації та рівнем абстракції розглянутих систем. Патерни проектування програмних систем поділяються на три категорії [40] (рис.7.1).

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

Шаблони проектування програмних систем

Рисунок 7.1   — Шаблони проектування програмних систем

 

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

На рис.7.2 наведена класифікація патернів проектування.

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

Рисунок 7.2   — Підпис до рисунка

Завдання кожного патерну – дати чіткий опис проблеми та її вирішення у відповідній області. У загальному випадку опис патерну завжди містить такі елементи [38]:

На рис.7.3 показана класифікація шаблонів проектування інформаційних систем [41].

Шаблони проектування інформаційних систем

Рисунок 7.3   — Шаблони проектування інформаційних систем

Архітектурні патерни також об’єднуються у групи:

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

Патерни інтеграції інформаційних систем знаходяться на верхньому рівні класифікації патернів проектування. Аналогічно патернам більш низьких рівнів класифікації серед патернів інтеграції виділена група структурних патернів. Структурні патерни описують основні компоненти інтегрованої метасистеми. Для опису взаємодії окремих корпоративних систем, включених до інтегрованої метасистеми, використовується група патернів, об'єднаних відповідно до методу інтеграції. Інтеграція корпоративних інформаційних систем передбачає організований обмін даними між системами, для якого використовується відповідний патерн. Необхідно зазначити, що на відміну від патернів проектування класів/об’єктів і архітектурних системних патернів віднесення окремого патерну інтеграції до того чи іншого виду є менш умовним.

Про шаблони проектування знають розробники, проектувальники, архітектори, але про це явище абсолютно нічого не відомо користувачам,для яких і розроблялася мова шаблонів Александера [37]. На сьогоднішній день основна роль шаблонів - це повторне використання досвіду в різних областях розроблення ПЗ, усунення комунікаційного бар'єру всередині команди розробників і між ними, підвищення якості створюваного продукту за рахунок використання перевірених роками рішень.


© 2006—2023 СумДУ