Технологии программирования

Архитектура программных средств

1. Технологии программирования

ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ
Лекция 4 «Архитектура программных средств»

2.

Введение в понятие «архитектура программного средства»
Информационная система (ИС) — система, предназначенная для хранения, поиска и
обработки информации, и соответствующие организационные ресурсы (человеческие,
технические, финансовые и т. д.), которые обеспечивают и распространяют информацию.
Существует множество определений понятия "архитектура ИС":
– концепция, определяющая модель, структуру, выполняемые функции и взаимосвязь
компонентов информационной системы;
– базовая организация системы, воплощенная в ее компонентах, их отношениях между
собой и окружением, а также принципы, определяющие проектирование и развитие системы;
– набор значимых решений по поводу организации системы программного обеспечения,
набор структурных элементов и их интерфейсов, при помощи которых компонуется система
вместе с их поведением, определяемым во взаимодействии между этими элементами,
компоновка элементов в постепенно укрупняющиеся подсистемы, а также стиль архитектуры,
который направляет эту организацию (элементы и их интерфейсы, взаимодействие и
компоновка).

3.

Введение в понятие «архитектура программного средства»
Два класса определений архитектуры ИС:
– «концептуальные»;
– «технологические».
Концептуально архитектура ИС – набор основных решений, неизменных
при изменении бизнес-технологии в рамках бизнес-видения и
оказывающих определяющее влияние на совокупную стоимость владения
системой.
Технологически архитектура ИС – набор основных решений по выбору
средств реализации, а именно, аппаратной платформы, операционной
системы, телекоммуникационных средств, СУБД, влияющих на совокупную
стоимость владения системой.

4.

Архитектурные принципы
Модульность (разделение системы на независимые
компоненты).
Иерархия. (организация компонентов системы в
иерархическую структуру).
Разделение ответственности (каждый компонент
системы должен быть ответственен только за
выполнение конкретной задачи или функции).
Модульное взаимодействие (компоненты системы
должны взаимодействовать друг с другом через четко
определенные интерфейсы).
Управление данными (определяет, как система
должна хранить, обрабатывать и обеспечивать доступ к
данным).

5.

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

6.

Характеристики архитектуры «клиент-сервер»
Асимметричность протоколов.
Инкапсуляция услуг.
Целостность.
Местная прозрачность.
Обмен на основе сообщений.
Модульный дизайн, способный к расширению.
Независимость от платформы.
Масштабируемость.
Разделение функционала.
Общее использование ресурсов.

7.

Архитектурные шаблоны. Многоуровневая архитектура
В многоуровневой архитектуре обычно выделяют три основных уровня:
Уровень представления (интерфейс пользователя). Этот уровень отвечает за
взаимодействие с пользователем и предоставляет пользовательский интерфейс
для ввода и вывода данных. Он может включать в себя веб-страницы,
мобильные приложения, графические интерфейсы и другие средства
коммуникации с пользователем.
Уровень бизнес-логики. На этом уровне происходит обработка бизнеслогики и выполнение основных операций системы. Здесь располагаются
компоненты, отвечающие за обработку данных, реализацию бизнес-правил и
выполнение различных операций, связанных с логикой системы.
Уровень хранения данных. Этот уровень отвечает за хранение и управление
данными, используемыми системой.

8.

Архитектурные шаблоны. Многоуровневая архитектура

9.

Многоуровневая архитектура
Преимущества многоуровневой архитектуры:
Модульность. Каждый уровень выполняет свои определенные функции,
что облегчает понимание и модификацию системы.
Гибкость. Изменения в одном уровне не должны влиять на другие уровни,
что позволяет легко вносить изменения в систему без необходимости
перепроектирования всей архитектуры.
Четкая организация и абстракция. Многоуровневая архитектура
позволяет разработчикам сосредоточиться на конкретных задачах каждого
уровня, что улучшает структурированность и упрощает управление
разработкой проекта.
Повторное использование. Компоненты на каждом уровне могут быть
повторно использованы в различных частях системы или в других проектах.
Расширяемость. Добавление нового функционала или изменение
существующего функционала может быть относительно простым и не требует
переработки всей системы.

10.

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

11.

Распределенная архитектура
Преимущества распределенной архитектуры:
Масштабируемость. Позволяет легко масштабировать систему путем
добавления новых компонентов или увеличения ресурсов на существующих
компонентах.
Отказоустойчивость. Обеспечивает высокую отказоустойчивость,
благодаря физическому разделению компонентов на разные устройства и
локации.
Гибкость. Позволяет легко интегрировать новые компоненты в систему и
изменять конфигурацию системы без значительных нарушений работы.
Локализация данных. В распределенных системах данные могут
храниться на ближайших узлах или узлах с наилучшим доступом к ним. Это
позволяет улучшить производительность и сократить время доступа к
данным.

12.

Распределенная архитектура
Ограничения архитектуры:
Сложность разработки. требует более сложного
коммуникацией и синхронизацией между компонентами.
управления
Зависимость от сети. Сильно зависит от работоспособности и
производительности сети. Если сеть нестабильна или медленная, это может
привести к задержкам в обмене данными и снижению производительности
системы
Безопасность. Требует особого внимания к вопросам безопасности, так
как данные могут передаваться по открытым сетям.

13.

Архитектурные шаблоны. Сервисно-ориентированная архитектура (SOA)
Сервисно-ориентированная архитектура (Service-Oriented Architecture,
SOA) – это шаблон архитектуры информационных систем, который
ориентирован на создание распределенных приложений через
организацию функциональности в виде сервисов.
Не существует четко определенных стандартных рекомендаций по
реализации сервис-ориентированной архитектуры (SOA), есть некоторые
общие основные принципы:
Обеспечение совместимости.
Слабая взаимозависимость.
Абстрагирование.
Степень детализации.

14.

Сервисно-ориентированная архитектура (SOA)
Преимущества сервисно-ориентированной архитектуры:
Сокращение времени выхода на рынок. Разработчики повторно
используют сервисы в различных бизнес-процессах для экономии времени и
затрат.
Эффективное обслуживание.
Легче создавать, обновлять и
отлаживать небольшие сервисы,
чем большие блоки кода в
монолитных приложениях.
Улучшенная
адаптивность.
SOA лучше адаптируется к
технологическому прогрессу.

15.

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

16.

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

17.

Микросервисная архитектура
Преимущества микросервисной архитектуры:
Гибкость и масштабируемость.
Независимость технологий и языков программирования.
Легкое масштабирование и обновление.
Легкость разработки и поддержки.
Недостатки микросервисной архитектуры:
Сетевая сложность.
Управление распределенной системой.
Повышенные требования к тестированию.

18.

Паттерны и фреймворки в архитектуре
Паттерны - абстрактные модели или шаблоны, которые описывают
типичные проблемы и способы их решения в проектировании ИС.
Наиболее распространенные паттерны включают:
Концептуальные паттерны – это паттерны, функционирование которых
описывается в терминах предметной области.
Паттерны проектирования – это паттерны, для описания которых
используются термины, относящиеся к разработке программных систем,
такие как объект, класс, модуль.
Программные паттерны – это паттерны, для описания которых
используются низкоуровневые понятия: деревья, списки и т. п.
Архитектурный паттерн описывает структуру программной системы и
определяет состав подсистем, их основные функции и допустимые способы
компоновки подсистем.

19.

Паттерны в архитектуре
Системные паттерны. Системные паттерны можно рассматривать как
паттерны, использование которых позволяет получить улучшенные
архитектурные решения.
MVC (Model, View, Controller – Модель, Вид, Контроллер).
Разделение приложения на три функциональные (логические) части
(модель данных, представление (пользовательский интерфейс) и
контроллер (управляющую логику)). MVC содержится во многих
фреймворках для веб-программирования.

20.

Паттерны в архитектуре
Системные паттерны. Системные паттерны можно рассматривать как
паттерны, использование которых позволяет получить улучшенные
архитектурные решения.
Обратный вызов. Организация асинхронного взаимодействия
между клиентом и сервером, что снижает загрузку на сеть, повышает
эффективность использовании процессорного времени как клиента,
так и сервера.
Текущее обновление. Обеспечение возможности для клиента
постоянного автоматического получения обновлений от сервера.

21.

Паттерны в архитектуре
Структурные паттерны с одинаковой эффективностью применяются как
для разделения, так и для объединения элементов приложения.
«Адаптер»
(Adapter).
Обеспечение
взаимодействия
компонентов с различными интерфейсами путем создания
промежуточного объекта-адаптера, преобразующего интерфейс
одного из них таким образом, чтобы им мог пользоваться другой
компонент без изменения функциональности.
«Мост»
(Bridge).
Разделение
компонента
на
две
взаимосвязанные, но независимые структуры: абстракцию и
реализацию, каждая из которых является иерархической.
«Декоратор» (Decorator). Предоставление средства изменения
функциональности компонентов без изменения их внешнего
представления или функций.

22.

Антипаттерны
Антипаттерны представляют собой типичные ошибки, проблемы и
негативные практики, которые могут возникать при разработке
информационных систем. Они противоположны паттернам и могут приводить к
нежелательным результатам, таким как низкая производительность, сложность
поддержки, непредсказуемость и плохое качество системы.
Антипаттерны в управлении разработкой ПО:
«Дым и зеркала»
«Раздувание» ПО
«Функции для галочки»
Антипаттерны в разработке ПО:
«Большой комок грязи»
«Бензиновая фабрика»
«Раздувание интерфейса»
«Дымоход»
«Состояние гонки»

23.

Антипаттерны
Антипаттерны в программировании:
1. Ненужная сложность
2. «Действие на расстоянии»
3. Активное ожидание
4. Кэширование ошибки
5. «Поток лавы»
6. «Магические» числа
7. «Спагетти-код»
8. «Мыльный пузырь»
9. «Таинственный» код
10.И другие.

24.

Фреймворки
Фреймворки - набор инструментов, библиотек, правил и структур,
которые облегчают разработку информационных систем. Они
предоставляют готовые компоненты и абстракции, которые позволяют
разработчикам сосредоточиться на конкретных задачах, вместо того чтобы
создавать все с нуля.
Классификация фреймворков:
Архитектурные фреймворки – это совокупность соглашений, принципов
и практик, используемых для описаний архитектур и принятых
применительно к некоторому предметному домену и (или) в сообществе
специалистов (заинтересованных лиц).
Фреймворки уровня промежуточного ПО используются для интеграции
распределенных приложений и компонентов.

25.

Фреймворки
Фреймворки, ориентированные на приложения, используются, в
первую очередь, для поддержания процесса разработки систем,
ориентированных на конечного пользователя и принадлежащих
некоторому конкретному предметному домену.
Использование инфраструктурных фреймворков упрощает разработку
инфраструктурных элементов, таких как, например операционные
системы.
Фреймворки, используемые по принципу белого ящика, называют
также архитектурными фреймворками. Фреймворк, работающий по
принципу белого ящика, определяется через интерфейсы объектов,
которые разработчик может добавлять в систему.
Фреймворки, используемые по принципу черного ящика, называют
также фреймворками, управляемыми данными. В качестве основных
механизмов формирования приложения выступают композиция
компонентов и параметризация.

26.

Фреймворки
Фреймворки уровня приложения обеспечивают полный набор функций,
которые реализуются типовыми приложениями. Обычно сюда входят GUI,
базы данных, документация.
Преимущества использования фреймворков:
Ускорение разработки
Согласованность и стандартизация
Расширяемость и модульность.
Общепринятые решения.
Обновления и поддержка.

27.

Примеры фреймворков
Django – это фреймворк (на языке Python) для разработки вебприложений. Он предлагает мощные инструменты для управления базами
данных, обработки HTTP-запросов, авторизации пользователей и многое
другое. Django следует принципам шаблона проектирования MVC (ModelView
Controller).
Angular – это фреймворк для разработки клиентских веб-приложений на
языке JavaScript. Он предоставляет мощные инструменты для создания
динамических пользовательских интерфейсов, управления состоянием
приложений, маршрутизации и других функций. Angular основан на шаблоне
проектирования MVC.
Spring Framework – фреймворк для разработки приложений на языке Java.
Он предлагает широкий набор функций, обработку HTTP-запросов, управление
транзакциями и другие. Spring Framework поддерживает модульность и
интеграцию с другими фреймворками и библиотеками.

28.

Примеры фреймворков
Laravel – это фреймворк для разработки веб-приложений на языке PHP.
Он предоставляет простой и элегантный синтаксис, а также множество
готовых компонентов для управления маршрутизацией, базами данных,
сессиями, аутентификацией и другими задачами.
React – это библиотека JavaScript для создания пользовательских
интерфейсов. Хотя React не является полноценным фреймворком, он
предлагает мощные инструменты для создания компонентов, управления
состоянием и переиспользования кода.
Flask — минималистичный фреймворк для микросервисов и простых вебприложений.

29.

Уровни архитектуры
Архитектура бизнес-процессов. Основные компоненты:
Процессы: описание последовательности шагов и
операций, необходимых для достижения конкретной цели.
Роли и ответственности: определение различных ролей,
участвующих в процессе, и их ответственностей.
Входные и выходные данные: идентификация данных,
необходимых для запуска и завершения процесса.
Системы и технологии: определение систем и
инструментов, которые используются для автоматизации и
управления бизнес-процессами.

30.

Уровни архитектуры
Архитектура бизнес-процессов. Основные этапы:
Идентификация и анализ бизнес-процессов: определение и
описание существующих процессов в организации и анализ их
эффективности и эффективности.
Проектирование оптимальной структуры процессов: определение
и оптимизация последовательности шагов и взаимосвязей между
ними для достижения максимальной производительности и качества.
Интеграция систем и технологий: выбор и настройка подходящих
систем и инструментов для автоматизации и управления бизнеспроцессами.
Развертывание и контроль: внедрение новой архитектуры бизнеспроцессов и непрерывное отслеживание и контроль их работы для
обеспечения соответствия целям организации

31.

Уровни архитектуры
Системная архитектура – это описание структуры и организации
компьютерной системы или информационной системы (ИС) на уровне
компонентов, модулей и их взаимодействия. Она определяет, как различные
компоненты системы взаимодействуют друг с другом для достижения
поставленных целей.
Основные цели системной архитектуры:
Разделение ответственности
Модульность и повторное использование
Гибкость и расширяемость
Эффективное использование ресурсов

32.

Уровни архитектуры. Системная архитектура
В процессе проектирования
следующие аспекты:
системной
архитектуры
учитываются
Компоненты системы. Определение основных компонентов,
из которых состоит система, и их функциональность.
Взаимодействие компонентов. Определение способов
коммуникации и взаимодействия между компонентами
системы.
Распределение и размещение. Определение распределения
компонентов системы по физическим узлам или серверам.
Архитектурные
шаблоны.
архитектурных шаблонов.
Использование
известных

33.

Уровни архитектуры
Техническая архитектура – это уровень архитектуры информационной
системы (ИС), который описывает структуру и организацию ее технических
компонентов, таких как аппаратное обеспечение, программное обеспечение,
сети и инфраструктура.
Основные компоненты технической архитектуры:
Аппаратное обеспечение
Программное обеспечение
Сети и коммуникации
Инфраструктура

34.

Уровни архитектуры. Техническая архитектура
В процессе проектирования технической архитектуры должны учитываться:
Системная архитектура. Должна соответствовать системной
архитектуре, определенной на уровне компонентов и их
взаимодействия.
Интеграция. Техническая архитектура должна обеспечивать
интеграцию различных компонентов системы, чтобы они могли
взаимодействовать между собой и обмениваться данными.
Производительность. Техническая архитектура должна быть
спроектирована таким образом, чтобы обеспечивать высокую
производительность системы.
Безопасность.
Техническая
обеспечивать защиту системы
несанкционированного доступа.
архитектура
от внешних
должна
угроз и

35.

Спасибо за внимание!
English     Русский Правила