ScholarGate
Ассистент

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

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

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

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

Scope

Эта область охватывает архитектурные стили и шаблоны (многослойный, клиент-серверный, микросервисы, событийно-ориентированный, конвейерный); принципы проектирования, такие как модульность, сокрытие информации, связность, связанность и разделение ответственности; объектно-ориентированное и компонентно-ориентированное проектирование; шаблоны проектирования; атрибуты качества архитектуры и их компромиссы; а также нотации моделирования, такие как UML, используемые для выражения проектов.

Sub-topics

Core questions

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

Key theories

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

Clinical relevance

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

Evidence & guidelines

Стандарт ISO/IEC/IEEE 42010 стандартизирует описание архитектуры, а область знаний SWEBOK Software Design вместе с такими справочными текстами, как «Software Architecture in Practice», предоставляют консенсусное руководство.

History

Принципы модульного проектирования были сформулированы Парнасом в начале 1970-х годов. Объектно-ориентированное проектирование и шаблоны проектирования развивались в 1980-х и 1990-х годах, архитектура программного обеспечения выделилась в отдельную дисциплину благодаря работе Шоу и Гарлана в середине 1990-х годов, а сервисно-ориентированные и микросервисные стили появились в 2000-х и 2010-х годах.

Debates

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

Key figures

  • David Parnas
  • Mary Shaw
  • Len Bass
  • Erich Gamma
  • Grady Booch

Related topics

Seminal works

  • parnas1972
  • gamma1994
  • bass2012

Frequently asked questions

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

Methods for this concept

Related concepts