ПРИНЦИПЫ И КРИТЕРИИ ПОСТРОЕНИЯ КАЧЕСТВЕННОЙ АРХИТЕКТУРЫ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

22 мая 12:19

Введение

Архитектура программного обеспечения (англ. software architecture) — это совокупность решений об организации программной системы, в том числе таких, как:

  • Выбор и определение структурных элементов, организованных определенными способами для взаимодействия друг с другом, складывающихся в единый программно-аппаратный комплекс;
  • Соединение выбранных элементов структуры во всё более крупные системы;
  • Выбор стиля, впоследствии используемого всеми участниками разработки, для организации решений в процессе производства информационных систем.

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

Неправильно спроектированная архитектура может являться причиной нестабильности работы программного обеспечения, сложности в поддерживании существующих или будущих бизнес-требований, сложности при развертывании или управлении в среде производственной эксплуатации. Проектирование систем должно осуществляться с учетом потребностей пользователя, ИТ-инфраструктуры и преследуемых бизнес-целей. Для каждой из этих составляющих определяются ключевые сценарии и выделяются важные параметры качества программного обеспечения (например, надежность или масштабируемость).

 http://meridian-journal.ru/uploads/1743-4.PNG

Рисунок 1. Пользователь, бизнес, система

Главной задачей системного архитектора является поиск компромиссов и баланса между порой абсолютно разными и даже конкурирующими требованиями этих трех областей (рис. 1).

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

Необходимо помнить, что архитектура должна:

  • Раскрывать структуру системы, но скрывать детали реализации.
  • Реализовывать все варианты использования и сценарии.
  • По возможности отвечать всем требованиям различных заинтересованных сторон.
  • Выполнять требования, как по функциональности, так и по качеству.

Критерии хорошей архитектуры

Хорошая архитектура — это прежде всего выгодная архитектура с точки зрения сложности и эффективности процесса разработки и сопровождения программного комплекса. Такое программное обеспечение легче расширять и изменять, а также проводить тестирование кода и его отладку. Ниже представлены несколько критериев для оценки качества архитектуры системы.

  1. Эффективность системы.

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

  1. Гибкость системы.

Любое приложение со временем подвергается некоторым изменениям вследствие изменений существующих требований или добавления новых. Чем меньше проблем и ошибок вызовет внесение изменений в существующий функционал — тем более гибкой и конкурентоспособной является система. Изменение одного фрагмента системы не должно влиять на другие ее фрагменты.

  1. Расширяемость системы.

Под этим критерием понимается возможность добавлять в систему новые сущности и функции без нарушения основной структуры. При проектировании системы необходимо придерживаться принципа YAGNI (you ain’t gonna need it, «Вам это не понадобится»), который подразумевает под собой закладку только основного и самого необходимого функционала на начальном этапе. При этом спроектированная архитектура не должна препятствовать добавлению нового функционала по мере необходимости.

  1. Масштабируемость процесса разработки.

Срок разработки должен сокращаться за счёт добавления к проекту новых людей. Для этого архитектура должна позволять распределить процесс разработки так, чтобы некоторое количество людей могли работать над программой одновременно.

  1. Тестируемость.

Легко тестируемый код содержит меньше ошибок и в перспективе должен надежнее работать. Существует целая методология разработки программ на основе тестов, которая так и называется — Разработка через тестирование (Test-Driven Development, TDD).

  1. Возможность повторного использования.

Систему желательно проектировать так, чтобы ее фрагменты можно было повторно использовать в других системах.

  1. Хорошо структурированный, читаемый и понятный код. Сопровождаемость.

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

Заключение

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

Список литературы

  1. Мартин Р. Чистая архитектура. Искусство разработки программного обеспечения. СПб.: Питер, 2020. ­ 352 с.: ил. ­ (Серия «Библиотека программиста»).
  2. Руководство Microsoft по проектированию архитектуры приложений, 2-е издание https://blogs.technet.microsoft.com/isv_team/2010/09/16/microsoft-patterns-practices/ (дата обращения 19.11.19).
  3. Создание архитектуры программы или как проектировать табуретку https://habr.com/ru/post/276593/ ­ (дата обращения 19.11.19)