
- •Проектирование ПО
- •Архитектура ПО (software architecture)
- •Типовая архитектура приложения
- •Определение типа приложения
- •1. Мобильное приложение
- •2. Насыщенное клиентское приложение
- •3. Насыщенное Интернет-приложение
- •4. Сервис
- •5. Веб-приложение
- •Выбор стратегии развертывания
- •Выбор соответствующих технологий
- •Выбор показателей качества
- •Реализация сквозной функциональности
- •Архитектурные шаблоны и стили
- •Объектно-ориентированная архитектура
- •Компонентная архитектура
- •Проектирование на основе предметной области
- •Многослойная архитектура
- •Аспектно-ориентированное программирование
- •Пример АОП
- •Основные понятия АОП
- •Архитектура клиент-сервер (client-server)
- •N-уровневая / 3-уровневая архитектура
- •Сервисно-ориентированная архитектура (Service-oriented architecture, SOA)
- •Архитектура, основанная на шине сообщений
Основные понятия АОП
Аспект (aspect) — модуль или класс, реализующий сквозную функциональ-ность. Аспект изменяет поведение остального кода, применяя совет в точках соединения, определённых некоторым срезом. Аспект - это модуль, примене-ние которого осуществляется не путем вызова, а путем систематизированного внедрения фрагментов кода аспекта в модули программы.
Совет (advice) — средство оформления кода, который должен
быть вызван из точки соединения. Совет может быть выполнен до, после или вместо точки соединения.
Точка соединения (join point) — точка в выполняемой программе, где следует применить совет, например, вызов метода или обращение к полям объекта.
Срез (pointcut) — набор точек соединения. Срез определяет, подходит ли данная точка соединения к данному совету.
Внедрение (introduction) — изменение структуры класса или
изменение иерархии наследования для добавления
функциональности аспекта.
Проектирование ПО. Архитектура приложений 21
При запуске подсистема внедрения аспектов, используя

Архитектура клиент-сервер (client-server)
|
|
|
|
|
|
Системы |
|
|
|
|
|
|
|
|
|
|
Системы |
|||||||||||||||||||||||
|
|
с одним сервером |
|
|
|
|
|
|
|
|
|
с множеством |
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
серверов |
|
|
|
|
|
|
|
|
|
||
|
|
Клиент |
|
Клиент |
|
|
Клиент |
|
|
|
|
|
|
|
Клиент |
|
Клиент |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Клиент |
|
… |
|
||||||||||||||||||||||
|
|
1 |
|
|
|
|
2 |
|
|
|
|
|
N |
|
|
|
|
|
|
|
1 |
|
|
|
|
2 |
|
|
|
|
|
N |
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сервер |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
БД |
|
|
|
|
|
|
|
|
|
|
|
|
|
Сервер |
|
|
|
Сервер |
|
Сервер |
|
||||||||||||
(клиент-сервер, файл-сервер, |
|
хранилище данных) |
|
каталог |
|
|
|
видео |
|
фото |
|
|||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
|
|
|
Системы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
Одноранговы |
|
|
Серверы приложений |
||||||||||||||||||||||||||||
|
клиент-очередь- |
|
|
е |
|
|
||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
клиент |
|
|
|
|
|
|
|
приложения |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
… |
|
|
|
|
|
|
|
|
|
Клиент |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
|
|
|
|||
|
Клиент |
|
|
Клиент |
|
Клиент |
|
|
|
(P2P) |
|
|
Термина |
|
Термина |
|
Терминал |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
(сервер) |
|
|
л 1 |
|
|
|
|
|
л 2 |
|
|
|
|
|
|
N |
|||||||||||||||
|
1 |
|
|
|
2 |
|
|
|
|
|
|
N |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Клиент |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(сервер) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Очеред |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Служба |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
ь |
|
|
|
|
|
|
|
|
|
|
Клиент |
|
|
|
|
|
|
|
|
терминало |
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(сервер) |
|
|
|
|
|
|
|
|
|
|
|
в |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Проектирование ПО. Архитектура приложений |
|
|
|
|
|
|
|
|
|
|
22 |

N-уровневая / 3-уровневая архитектура
<<Web- server>> Представление
<<Firewall>>
Межсетевой
экран
<<Web- server>> Бизнес-слой
ASP |
<<Server>> |
|
|
|
|
||
|
|
|
|
|
СУБД |
|
|
|
|
|
|
|
Финансовое Веб-приложение |
Проектирование ПО. Архитектура приложений |
23 |

Сервисно-ориентированная архитектура (Service-oriented architecture, SOA)
Принципы SOA:
1.Сервисы автономны.
2.Сервисы могут быть распределены. Сервисы слабо сцеплены.
3.Сервисы совместно используют схему и контракт, но не класс.
ПО + сервисы |
ПО как сервис |
|
(Software plus Services, |
(Software as a Service, |
|
S+S) |
SaaS) |
24 |
Проектирование ПО. Архитектура приложений |
|

Архитектура, основанная на шине сообщений
Основной принцип сервисной шины — концентрация обмена сообщениями между различными системами через единую
точку, в которой, при необходимости, обеспечивается транзакционный контроль, преобразование данных, сохранность сообщений. Все настройки обработки и передачи сообщений предполагаются также сконцентрированными в единой точке, и формируются в терминах служб, таким образом, при замене какой-либо информационной системы, подключённой к шине, нет необходимости в перенастройке остальных систем.
Сервисная шина предприятия (Enterprise Service Bus, ESB). Шина Интернет-сервисов (Internet Service Bus, ISB).
Проектирование ПО. Архитектура приложений |
25 |