Архитектура программного обеспечения

Содержание

Слайд 2

Понятие архитектуры

– Архитектура , это совокупность решений, принимаемых системным архитектором.
– Какие решения

Понятие архитектуры – Архитектура , это совокупность решений, принимаемых системным архитектором. –
принимает архитектор?
– Существенные с точки зрения архитектуры.
– Какие решения существенны?
– Это решает архитектор.
http://www.bredemeyer.com

Слайд 3

Определение

Архитектура программной системы – ее организационная структура, включающая модули, их внешние характеристики, а

Определение Архитектура программной системы – ее организационная структура, включающая модули, их внешние
также отношения между модулями.
Обычно в архитектуру не включается внутреннее устройство отдельных модулей.

Слайд 4

Бритва Оккама

Оригинальная формулировка:
Не порождайте сущностей сверх необходимого.
Применительно к программной архитектуре:
Из всех архитектурных

Бритва Оккама Оригинальная формулировка: Не порождайте сущностей сверх необходимого. Применительно к программной
решений, которые удовлетворяют требованиям лучше то, которое проще в понимании.

Слайд 5

Разделение ответственности

Разделение ответственностей (Separation of Concerns, SoC) – процесс разделения (программной) системы

Разделение ответственности Разделение ответственностей (Separation of Concerns, SoC) – процесс разделения (программной)
на составные части, как можно меньше дублирующие функциональность друг другу.
Это основной принцип (программной) инженерии, сформулирован Эдсгером Дейкстрой.

Слайд 6

Разделение абстракций

SoC + ООП (абстракция и инкапсуляция):
При правильном разделении ответственностей получившиеся составные

Разделение абстракций SoC + ООП (абстракция и инкапсуляция): При правильном разделении ответственностей
части (модули) представляют собой абстракции, скрывающие внутреннее устройство и предоставляющие сравнительно простой внешний интерфейс

Слайд 7

Уровни абстракции
В частных случаях разделение абстракций представляет «слоеный пирог», тогда говорят об

Уровни абстракции В частных случаях разделение абстракций представляет «слоеный пирог», тогда говорят об уровнях абстракции.
уровнях абстракции.

Слайд 8

Виды ответственностей (concerns)

Ответственности 1-го класса: бизнес-логика приложения, следует непосредственно из функциональных требований
Ответственности,

Виды ответственностей (concerns) Ответственности 1-го класса: бизнес-логика приложения, следует непосредственно из функциональных
соответствующие нефункциональным требованиям
Ответственности 2-го класса (сквозная функциональность, cross-cutting concerns): функциональность, не относящаяся к бизнес-логике

Слайд 9

Нефункциональные требования
Платформа («железо», ОС, языки, библиотеки)
Производительность (performance)
Масштабируемость (scalability)
Распределение функциональности по физическим узлам
Простота

Нефункциональные требования Платформа («железо», ОС, языки, библиотеки) Производительность (performance) Масштабируемость (scalability) Распределение
поддержки, расширения, повторного использования модулей (maintainability, extensibility, reusability)

Слайд 10

Cross-cutting concerns
Инициализация
Управление жизненным циклом объектов
Персистентность
Журналирование
Транзакции
Многопоточность и синхронизация
Безопасность

Cross-cutting concerns Инициализация Управление жизненным циклом объектов Персистентность Журналирование Транзакции Многопоточность и синхронизация Безопасность …

Слайд 11

Представление архитектуры

Общие принципы и соглашения об организации системы:
Парадигма
Применение архитектурных шаблонов
Архитектурные представления (4+1

Представление архитектуры Общие принципы и соглашения об организации системы: Парадигма Применение архитектурных
модель):
Logical View (классы и пакеты)
Process View (процессы и синхронизация)
Physical View (компоненты и узлы)
Development View (организация кода)
Scenario View (варианты использования)

Слайд 12

Архитектурные шаблоны
Архитектурный шаблон представляет собой типичное архитектурное решение для определенного класса задач.

Архитектурные шаблоны Архитектурный шаблон представляет собой типичное архитектурное решение для определенного класса

Как правило, архитектурный шаблон определяет общий вид архитектуры системы или существенной ее части.

Слайд 13

Клиент-сервер

Задача: обеспечить коммуникацию в распределенной среде между клиентами
Решение:
Клиенты взаимодействуют с единой сущностью

Клиент-сервер Задача: обеспечить коммуникацию в распределенной среде между клиентами Решение: Клиенты взаимодействуют
– сервером. Между собой клиенты взаимодействовать не могут.
Преимущества:
Сравнительная простота реализации и конфигурации
Недостатки:
Сервер – потенциальное узкое место

Слайд 14

Одноранговая архитектура (P2P)

Задача: см. «клиент-сервер»
Решение:
Клиенты непосредственно
взаимодействуют друг с другом
Преимущества:
Нет явных узких мест
Недостатки:
Сложность

Одноранговая архитектура (P2P) Задача: см. «клиент-сервер» Решение: Клиенты непосредственно взаимодействуют друг с
реализации и конфигурации
Потенциальные проблемы видимости и маршрутизации

Слайд 15

Замечания по терминологии

В общем случае:
Сервер – сущность, предоставляющая функциональность
Клиент – сущность, использующая

Замечания по терминологии В общем случае: Сервер – сущность, предоставляющая функциональность Клиент

функциональность
Термины могут применяться безотносительно распределенных приложений

Слайд 16

Многоуровневая архитектура (N-tier Architecture)

Вариант архитектуры «клиент-сервер», где функциональность делится более чем на два уровня.

Многоуровневая архитектура (N-tier Architecture) Вариант архитектуры «клиент-сервер», где функциональность делится более чем
Каждый уровень является клиентом по отношению к нижележащему.
Распространенный вариант: 3-уровневая архитектура
Преимущества:
распределение нагрузки между уровнями
хорошая масштабируемость
Замечание: для эффективного применения уровни (tiers) должны соотноситься с уровнями абстракции (layers)

Слайд 17

3-уровневая архитектура

Data Tier/Layer – отвечает за представление данных и персистентность (соответствует набору

3-уровневая архитектура Data Tier/Layer – отвечает за представление данных и персистентность (соответствует
entity в аналитической модели)
Logic Tier/Layer – реализует основную часть функциональности системы, отвечает также за целостность данных (~ controls)
Presentation Tier/Layer – реализует интерфейс пользователя (~ boundaries)

Слайд 18

Модель-представление-управление (MVC)

Задача: разделение бизнес-логики и интерфейса пользователя в соответствии с SoC
Как

Модель-представление-управление (MVC) Задача: разделение бизнес-логики и интерфейса пользователя в соответствии с SoC
правило, речи не идет о распределенной системе

Слайд 19

Переход от MVC к 3-tier

Шаг 1: применение стереотипа subscribe

Переход от MVC к 3-tier Шаг 1: применение стереотипа subscribe

Слайд 20

Переход от MVC к 3-tier

Шаг 1: применение стереотипа subscribe

Переход от MVC к 3-tier Шаг 1: применение стереотипа subscribe

Слайд 21

Переход от MVC к 3-tier

Шаг 2: расщепление контроллера

Переход от MVC к 3-tier Шаг 2: расщепление контроллера

Слайд 22

Переход от MVC к 3-tier

Шаг 3: инкапсуляция модели

Переход от MVC к 3-tier Шаг 3: инкапсуляция модели

Слайд 23

Hollywood Principle
Don’t call us, we’ll call you

Hollywood Principle Don’t call us, we’ll call you

Слайд 24

Цикл обработки сообщений WinAPI

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR

Цикл обработки сообщений WinAPI int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR
lpCmdLine,
int nCmdShow)
{
MSG msg;
while(GetMessage(&msg, NULL, 0, 0) > 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}

Слайд 25

Инверсия управления (Inversion of Control, IoC, Hollywood Principle)

Задача: использовать альтернативный механизм запуска

Инверсия управления (Inversion of Control, IoC, Hollywood Principle) Задача: использовать альтернативный механизм
и/или исполнения приложения (вычислительную модель)
Решение: фреймворк реализует “main” с соответствующей вычислительной моделью, пользовательский код явной точки входа не содержит
Основные области применения:
Управление жизненным циклом объектов и связей (Dependency Injection)
Интерфейсы пользователя
Альтернативные вычислительные модели (автоматы, продукции, потоки данных и т.д.)
Имя файла: Архитектура-программного-обеспечения.pptx
Количество просмотров: 403
Количество скачиваний: 3