~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 9E75266FA0D3BF2A4CA9C06D4E0FD6A2__1717389000 ✰
Заголовок документа оригинал.:
✰ Software architecture - Wikipedia ✰
Заголовок документа перевод.:
✰ Архитектура программного обеспечения — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Software_architecture ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/9e/a2/9e75266fa0d3bf2a4ca9c06d4e0fd6a2.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/9e/a2/9e75266fa0d3bf2a4ca9c06d4e0fd6a2__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 08:58:05 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 3 June 2024, at 07:30 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Архитектура программного обеспечения — Википедия Jump to content

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

Из Википедии, бесплатной энциклопедии

Архитектура программного обеспечения — это набор структур, необходимых для анализа программной системы и дисциплины создания таких структур и систем. Каждая структура включает элементы программного обеспечения, отношения между ними, а также свойства как элементов, так и отношений. [1] [2]

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

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

  1. Все является компромиссом
  2. «Почему важнее, чем как»

«Архитектурное ката» — это командная работа, которую можно использовать для создания архитектурного решения, соответствующего потребностям. Каждая команда извлекает и расставляет приоритеты архитектурных характеристик (так называемых нефункциональных требований ), а затем соответствующим образом моделирует компоненты. Команда может использовать модель C4 , которая является достаточно гибким методом моделирования архитектуры. [6]

Документирование архитектуры программного обеспечения облегчает общение между заинтересованными сторонами , фиксирует ранние решения по проектированию высокого уровня и позволяет повторно использовать компоненты проекта между проектами. [7] : 29–35 

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

Архитектуры программного обеспечения можно разделить на два основных типа: монолитная и распределенная архитектура , каждая из которых имеет свои подкатегории. [5]

Архитектура программного обеспечения со временем имеет тенденцию становиться более сложной. Архитекторам программного обеспечения следует использовать « фитнес-функции », чтобы постоянно держать архитектуру под контролем. [5]

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

Область применения [ править ]

Мнения относительно сферы применения архитектур программного обеспечения различаются: [8]

  • Макроскопическая структура системы : это относится к архитектуре как абстракции более высокого уровня программной системы, которая состоит из набора вычислительных компонентов вместе с соединителями , которые описывают взаимодействие между этими компонентами. [9]
  • Важные вещи — какими бы они ни были : это относится к тому факту, что архитекторы программного обеспечения должны интересоваться теми решениями, которые оказывают большое влияние на систему и ее заинтересованные стороны. [10]
  • То, что имеет фундаментальное значение для понимания системы в ее среде [11]
  • Вещи, которые люди считают трудными для изменения : поскольку проектирование архитектуры происходит в начале жизненного цикла программной системы, архитектор должен сосредоточиться на решениях, которые «должны» быть правильными с первого раза. Следуя этому подходу, проблемы архитектурного проектирования могут стать неархитектурными, как только будет преодолена их необратимость. [10]
  • Набор решений по архитектурному проектированию : архитектуру программного обеспечения не следует рассматривать просто как набор моделей или структур, но она должна включать решения, которые приводят к созданию этих конкретных структур, и их обоснование. [12] Это понимание привело к масштабным исследованиям в области управления знаниями об архитектуре программного обеспечения . [13]

Не существует четкого различия между архитектурой программного обеспечения и проектированием и разработкой требований (см. раздел «Связанные поля» ниже). Все они являются частью «цепочки интенциональности» от намерений высокого уровня до деталей низкого уровня. [14] : 18 

Характеристики [ править ]

Архитектура программного обеспечения демонстрирует следующее:

Множество заинтересованных сторон: программные системы должны обслуживать множество заинтересованных сторон, таких как бизнес-менеджеры, владельцы, пользователи и операторы. У всех этих заинтересованных сторон есть свои собственные опасения по поводу системы. Уравновешивание этих проблем и демонстрация того, что они решены, является частью разработки системы. [7] : 29–31  Это означает, что архитектура предполагает работу с широким спектром проблем и заинтересованных сторон и имеет междисциплинарный характер.

Разделение задач : общепринятым способом снижения сложности для архитекторов является разделение задач, лежащих в основе проектирования. Документация по архитектуре показывает, что все проблемы заинтересованных сторон решаются путем моделирования и описания архитектуры с отдельных точек зрения, связанных с различными проблемами заинтересованных сторон. [15] Эти отдельные описания называются архитектурными видами (см., например, модель архитектурного представления 4+1 ).

Ориентация на качество: классические подходы к разработке программного обеспечения (например, структурированное программирование Джексона ) основывались на требуемой функциональности и потоке данных через систему, но текущее понимание [7] : 26–28  заключается в том, что архитектура программной системы более тесно связана с ее атрибутами качества, такими как отказоустойчивость , обратная совместимость , расширяемость , надежность , ремонтопригодность , доступность , безопасность, удобство использования и другие подобные свойства . Обеспокоенность заинтересованных сторон часто выражается в требованиях к этим атрибутам качества, которые по-разному называются нефункциональными требованиями , экстрафункциональными требованиями, поведенческими требованиями или требованиями к атрибутам качества.

Повторяющиеся стили: подобно построению архитектуры, дисциплина архитектуры программного обеспечения разработала стандартные способы решения повторяющихся проблем. Эти «стандартные способы» называются разными именами на разных уровнях абстракции. Общие термины для повторяющихся решений: архитектурный стиль, [14] : 273–277  тактика, [7] : 70–72  эталонная архитектура и архитектурный образец . [16] [17] [7] : 203–205 

Концептуальная целостность: термин, введенный Фредом Бруксом в его книге 1975 года «Мифический человеко-месяц» для обозначения идеи о том, что архитектура программной системы представляет собой общее видение того, что она должна делать и как она должна это делать. Это видение должно быть отделено от его реализации. Архитектор берет на себя роль «хранителя видения», следя за тем, чтобы дополнения к системе соответствовали архитектуре, сохраняя тем самым концептуальную целостность . [18] : 41–50 

Когнитивные ограничения: наблюдение, впервые сделанное в 1967 году программистом Мелвином Конвеем, о том, что организации, разрабатывающие системы, вынуждены создавать проекты, которые являются копиями коммуникационных структур этих организаций. [19] Фред Брукс представил его более широкой аудитории, когда процитировал статью и идею в «Мифическом человеко-месяце» , назвав ее законом Конвея .

Мотивация [ править ]

Архитектура программного обеспечения — это «интеллектуально постижимая» абстракция сложной системы. [7] : 5–6  Эта абстракция дает ряд преимуществ:

  • Это дает основу для анализа поведения программных систем еще до их создания. [3] Возможность проверить, что будущая программная система отвечает потребностям заинтересованных сторон без необходимости ее фактического создания, представляет собой существенную экономию средств и снижение рисков. [20] Для проведения такого анализа был разработан ряд методов, таких как ATAM или создание визуального представления программной системы.
  • Он обеспечивает основу для повторного использования элементов и решений. [3] [7] : 35  Полная архитектура программного обеспечения или ее части, такие как отдельные архитектурные стратегии и решения, могут быть повторно использованы в нескольких системах, заинтересованным сторонам которых требуются одинаковые атрибуты качества или функциональность, что позволяет сэкономить затраты на проектирование и снизить риск ошибок проектирования.
  • Он поддерживает ранние проектные решения, влияющие на разработку, развертывание и срок службы системы. [7] : 31  Принятие правильных эффективных решений на раннем этапе важно для предотвращения перерасхода графика и бюджета .
  • Это облегчает общение с заинтересованными сторонами, способствуя созданию системы, которая лучше удовлетворяет их потребности. [7] : 29–31  Общение о сложных системах с точки зрения заинтересованных сторон помогает им понять последствия заявленных ими требований и проектных решений, основанных на них. Архитектура дает возможность сообщать о проектных решениях до того, как система будет реализована, когда их еще относительно легко адаптировать.
  • Это помогает в управлении рисками. Архитектура программного обеспечения помогает снизить риски и вероятность сбоя. [14] : 18 
  • Это позволяет снизить затраты . Архитектура программного обеспечения — это средство управления рисками и затратами в сложных ИТ-проектах. [21]

История [ править ]

Сравнение проектирования программного обеспечения и (гражданской) архитектуры было впервые проведено в конце 1960-х годов. [22] но термин «архитектура программного обеспечения» не получил широкого распространения до 1990-х годов. [23] Область информатики с самого начала сталкивалась с проблемами, связанными со сложностью. [24] Раньше проблемы сложности решались разработчиками путем выбора правильных структур данных , разработки алгоритмов и применения концепции разделения задач . Хотя термин «архитектура программного обеспечения» является относительно новым для отрасли, фундаментальные принципы этой области время от времени применялись пионерами разработки программного обеспечения с середины 1980-х годов. Ранние попытки охватить и объяснить архитектуру программного обеспечения системы были неточными и неорганизованными, часто характеризовавшимися набором прямоугольных диаграмм . [25]

Архитектура программного обеспечения как концепция берет свое начало в исследованиях Эдсгера Дейкстры в 1968 году и Дэвида Парнаса в начале 1970-х годов. Эти ученые подчеркнули, что структура программной системы имеет значение, и правильная структура имеет решающее значение. В течение 1990-х годов были предприняты согласованные усилия по определению и систематизации фундаментальных аспектов дисциплины, при этом исследовательская работа была сосредоточена на архитектурных стилях ( шаблонах ), языках описания архитектуры , архитектурной документации и формальных методах . [26]

Исследовательские институты сыграли заметную роль в развитии архитектуры программного обеспечения как дисциплины. Мэри Шоу и Дэвид Гарлан из Карнеги-Меллон в 1996 году написали книгу под названием « Архитектура программного обеспечения: перспективы новой дисциплины» , в которой продвигались такие концепции архитектуры программного обеспечения, как компоненты , соединители и стили. в Усилия Института исследований программного обеспечения Калифорнийского университета в Ирвине области исследования архитектуры программного обеспечения направлены в первую очередь на архитектурные стили, языки описания архитектуры и динамические архитектуры.

IEEE 1471-2000 , «Рекомендуемая практика описания архитектуры систем с интенсивным программным обеспечением», был первым формальным стандартом в области архитектуры программного обеспечения. Он был принят ISO в 2007 году как ISO/IEC 42010:2007 . В ноябре 2011 года стандарт IEEE 1471–2000 был заменен стандартом ISO/IEC/IEEE 42010:2011 «Системная и программная инженерия. Описание архитектуры» (опубликованным совместно IEEE и ISO). [15]

В то время как в IEEE 1471 архитектура программного обеспечения относилась к архитектуре «программно-интенсивных систем», определенных как «любая система, в которой программное обеспечение оказывает существенное влияние на проектирование, создание, развертывание и развитие системы в целом», издание 2011 года. идет еще дальше, включая ISO/IEC 15288 и ISO/IEC 12207 определения системы в стандартах , которые охватывают не только аппаратное и программное обеспечение, но также «людей, процессы, процедуры, средства, материалы и природные объекты». Это отражает взаимосвязь между архитектурой программного обеспечения, архитектурой предприятия и архитектурой решения .

Архитектурная деятельность [ править ]

выполняет множество действий Архитектор программного обеспечения . Архитектор программного обеспечения обычно работает с менеджерами проектов, обсуждает архитектурно значимые требования с заинтересованными сторонами, проектирует архитектуру программного обеспечения, оценивает проект, общается с дизайнерами и заинтересованными сторонами, документирует архитектурный проект и многое другое. [27]

Архитектор программного обеспечения несет ответственность за согласование архитектурных характеристик (также известных как нефункциональные требования ) с бизнес-требованиями. Например: [5]

  • Для высокого уровня удовлетворенности клиентов необходимы доступность, отказоустойчивость, безопасность, возможность тестирования, восстановления, гибкость и производительность системы.
  • Проведение слияний и поглощений (M&A) требует расширяемости, масштабируемости, адаптивности и функциональной совместимости.
  • Ограниченный бюджет и время требуют осуществимости и простоты.
  • Ускоренный вывод продукта на рынок требует ремонтопригодности, тестируемости и непригодности.

В проектировании архитектуры программного обеспечения есть четыре основных вида деятельности. [28] Эти основные действия по архитектуре выполняются итеративно и на разных этапах первоначального жизненного цикла разработки программного обеспечения, а также в ходе эволюции системы.

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

  • что система будет делать в рабочем состоянии (функциональные требования)
  • насколько хорошо система будет выполнять нефункциональные требования времени выполнения, такие как надежность, работоспособность, эффективность производительности, безопасность, совместимость, определенные в ISO/IEC 25010 :2011. стандарте [29]
  • время разработки нефункциональных требований, таких как ремонтопригодность и переносимость, определенных в стандарте ISO 25010:2011. [29]
  • бизнес-требования и экологический контекст системы, который может меняться со временем, например юридические, социальные, финансовые, конкурентные и технологические проблемы. [30]

Результатами анализа являются те требования, которые оказывают измеримое влияние на архитектуру программной системы, называемые архитектурно значимыми требованиями. [31]

Архитектурный синтез или проектирование — это процесс создания архитектуры. Учитывая архитектурно значимые требования, определенные в результате анализа, текущее состояние проекта и результаты любых оценочных мероприятий, проект создается и совершенствуется. [28] [7] : 311–326 

Оценка архитектуры — это процесс определения того, насколько хорошо текущий проект или его часть удовлетворяет требованиям, полученным в ходе анализа. Оценка может проводиться всякий раз, когда архитектор рассматривает проектное решение, она может происходить после завершения некоторой части проекта, после завершения окончательного проекта или после того, как система была построена. Некоторые из доступных методов оценки архитектуры программного обеспечения включают метод анализа компромиссов архитектуры (ATAM) и TARA. [32] Механизмы сравнения методов обсуждаются в таких документах, как Отчет SARA. [20] и обзоры архитектуры: практика и опыт . [33]

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

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

архитектуры по Деятельность поддержке

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

  • Управление знаниями и коммуникация — это процесс изучения и управления знаниями, который необходим для проектирования архитектуры программного обеспечения. Архитектор программного обеспечения не работает изолированно. Они получают входные данные, функциональные и нефункциональные требования, а также контексты проектирования от различных заинтересованных сторон; и предоставлять результаты заинтересованным сторонам. Знания об архитектуре программного обеспечения часто неявны и сохраняются в головах заинтересованных сторон. Деятельность по управлению знаниями об архитектуре программного обеспечения заключается в поиске, передаче и сохранении знаний. Поскольку вопросы проектирования архитектуры программного обеспечения сложны и взаимозависимы, пробел в знаниях при проектировании может привести к неправильному проектированию архитектуры программного обеспечения. [27] [34] Примеры управления знаниями и коммуникационной деятельности включают поиск шаблонов проектирования, создание прототипов, обращение к опытным разработчикам и архитекторам, оценку проектов аналогичных систем, обмен знаниями с другими дизайнерами и заинтересованными сторонами, а также документирование опыта на вики-странице.
  • Обоснование дизайна и принятие решений — это деятельность по оценке проектных решений. Эта деятельность имеет основополагающее значение для всех трех основных видов деятельности по архитектуре программного обеспечения. [12] [35] Это влечет за собой сбор и связывание контекстов принятия решений, формулирование проблем проектных решений, поиск вариантов решения и оценку компромиссов перед принятием решений. решений Этот процесс происходит на разных уровнях детализации при оценке существенных архитектурных требований и решений по архитектуре программного обеспечения, а также при анализе, синтезе и оценке архитектуры программного обеспечения. Примеры действий по рассуждению включают понимание влияния требования или конструкции на атрибуты качества, анализ проблем, которые может вызвать конструкция, оценку возможных вариантов решения и оценку компромиссов между решениями.
  • Документация — это запись проекта, созданного в процессе создания архитектуры программного обеспечения. Проектирование системы описывается с использованием нескольких представлений, которые часто включают статическое представление, показывающее структуру кода системы, динамическое представление, показывающее действия системы во время выполнения, и представление развертывания, показывающее, как система размещается на оборудовании для выполнения. Представление Крухтена 4+1 предлагает описание часто используемых представлений для документирования архитектуры программного обеспечения; [36] Документирование архитектур программного обеспечения: представления и не только содержит описания типов обозначений, которые можно использовать в описании представления. [1] Примерами деятельности по документированию являются написание спецификации, запись модели проектирования системы, документирование обоснования проекта, разработка точки зрения, документирование представлений.

Темы архитектуры программного обеспечения [ править ]

Описание архитектуры программного обеспечения [ править ]

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

Языки описания архитектуры [ править ]

Язык описания архитектуры (ADL) — это любое средство выражения, используемое для описания архитектуры программного обеспечения ( ISO/IEC/IEEE 42010 ). С 1990-х годов было разработано множество ADL специального назначения, в том числе AADL (стандарт SAE), Wright (разработанный Carnegie Mellon), Acme (разработанный Carnegie Mellon), xADL (разработанный UCI), Darwin (разработанный Имперским колледжем Лондона ). , DAOP-ADL (разработан Университетом Малаги), SBC-ADL (разработан Национальным университетом Сунь Ятсена ) и ByADL (Университет Л'Аквила, Италия).

Точки зрения на архитектуру [ править ]

Модель архитектурного вида 4+1 .

Описания архитектуры программного обеспечения обычно организованы в представления , которые аналогичны различным типам чертежей , создаваемых при построении архитектуры . Каждое представление обращается к набору системных проблем, следуя соглашениям своей точки зрения , где точка зрения — это спецификация, описывающая методы обозначения, моделирования и анализа, используемые в представлении, выражающем рассматриваемую архитектуру с точки зрения данного набора. заинтересованных сторон и их проблемы ( ISO/IEC/IEEE 42010 ). Точка зрения определяет не только сформулированные проблемы (то есть, которые необходимо решить), но и представление, используемые типы моделей, используемые соглашения и любые правила согласованности (соответствия), позволяющие поддерживать согласованность представления с другими представлениями.

Архитектурные фреймворки [ править ]

Структура архитектуры охватывает «соглашения, принципы и практику описания архитектур, установленных в конкретной области применения и/или сообществе заинтересованных сторон» ( ISO/IEC/IEEE 42010 ). Структура обычно реализуется с точки зрения одной или нескольких точек зрения или ADL.

Архитектурные стили и узоры [ править ]

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

Следуя традиционной строительной архитектуре, «программный архитектурный стиль» представляет собой особый метод строительства, характеризующийся особенностями, которые делают его заметным» ( архитектурный стиль ).

Архитектурный стиль определяет: семейство систем с точки зрения модели структурной организации; словарь компонентов и соединителей с ограничениями на то, как их можно комбинировать. [37]

Архитектурные стили — это многоразовые «пакеты» проектных решений и ограничений, которые применяются к архитектуре для достижения выбранных желаемых качеств. [38]

Существует множество признанных архитектурных образцов и стилей, среди них:

Некоторые считают архитектурные модели и архитектурные стили одним и тем же. [39] некоторые рассматривают стили как специализацию шаблонов. Их объединяет то, что и шаблоны, и стили являются идиомами, которые могут использовать архитекторы, они «обеспечивают общий язык». [39] или «словарный запас» [37] с помощью которого можно описывать классы систем.

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

Существуют также опасения, что архитектура программного обеспечения приводит к слишком большому предварительному проектированию , особенно среди сторонников гибкой разработки программного обеспечения . Был разработан ряд методов, позволяющих сбалансировать компромиссы между предварительным дизайном и гибкостью. [40] включая гибкий метод DSDM , который требует этапа «Основы», во время которого закладывается «достаточное количество» архитектурных основ. IEEE Software посвятила специальный выпуск взаимодействию гибкости и архитектуры.

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

Под эрозией архитектуры программного обеспечения понимается постепенный разрыв между запланированной и реализованной архитектурой программной системы с течением времени. [41] Феномен эрозии архитектуры программного обеспечения был первоначально выявлен в 1992 году Перри и Вольфом вместе с их определением архитектуры программного обеспечения. [3]

Эрозия архитектуры программного обеспечения может произойти на каждом этапе жизненного цикла разработки программного обеспечения и по-разному влияет на скорость разработки и стоимость обслуживания. Эрозия архитектуры программного обеспечения происходит по разным причинам, таким как архитектурные нарушения , накопление технического долга и испарение знаний . [42] Известный случай эрозии архитектуры — отказ веб-браузера Mozilla. [43] Mozilla — это приложение, созданное Netscape, со сложной базой кода, которую стало сложнее поддерживать из-за постоянных изменений. Из-за первоначального плохого дизайна и растущей эрозии архитектуры Netscape потратила два года на переработку веб-браузера Mozilla, показав, насколько важно управлять эрозией архитектуры, чтобы избежать масштабных усилий по ремонту, потерь времени и средств.

Эрозия архитектуры может снизить производительность программного обеспечения, существенно увеличить затраты на его развитие и ухудшить качество программного обеспечения. Для обнаружения эрозии архитектуры были предложены различные подходы и инструменты. Эти подходы в основном подразделяются на четыре категории: подход, основанный на согласованности, подход, основанный на эволюции, подход, основанный на дефектах, и подход, основанный на принятии решений. [41] Кроме того, меры, используемые для борьбы с эрозией архитектуры, включают два основных типа: профилактические и корректирующие меры. [41]

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

Восстановление архитектуры программного обеспечения (или реконструкция, или обратное проектирование ) включает методы, приемы и процессы, позволяющие раскрыть архитектуру программной системы на основе доступной информации, включая ее реализацию и документацию. Восстановление архитектуры часто необходимо для принятия обоснованных решений в условиях устаревшей или устаревшей документации. Эрозия архитектуры : решения по внедрению и обслуживанию, отклоняющиеся от предполагаемой архитектуры. [44] Существуют методы восстановления архитектуры программного обеспечения с помощью статического анализа программы . Это часть предметов, охватываемых практикой программной разведки .

Связанные поля [ изменить ]

Дизайн [ править ]

Архитектура – ​​это дизайн , но не весь дизайн – это архитектура. [1] На практике архитектор — это тот, кто проводит грань между архитектурой программного обеспечения (архитектурным проектированием) и детальным проектированием (неархитектурным проектированием). Не существует правил или руководящих принципов, подходящих для всех случаев, хотя были попытки формализовать это различие. Согласно гипотезе интенсионала/локальности , [45] различие между архитектурным и детальным проектированием определяется критерием локальности , [45] согласно которому утверждение о проектировании программного обеспечения является нелокальным (архитектурным) тогда и только тогда, когда программа, удовлетворяющая ему, может быть расширена до программы, которая этого не делает. Например, стиль клиент-сервер является архитектурным (стратегическим), поскольку программа, построенная на этом принципе, может быть расширена до программы, не являющейся клиент-серверной, например, путем добавления одноранговых узлов.

Разработка требований [ править ]

Инженерию требований и архитектуру программного обеспечения можно рассматривать как взаимодополняющие подходы: в то время как архитектура программного обеспечения нацелена на « пространство решений » или «как», инженерия требований обращается к « пространству проблем » или «что». [46] Разработка требований влечет за выявление , согласование , спецификацию , проверку , документирование и управление требованиями собой . И разработка требований, и архитектура программного обеспечения вращаются вокруг заинтересованных сторон проблем, потребностей и пожеланий .

Существует значительное совпадение между разработкой требований и архитектурой программного обеспечения, о чем свидетельствует, например, исследование пяти методов архитектуры промышленного программного обеспечения, в результате которого делается вывод, что «входные данные (цели, ограничения и т. д.) обычно плохо определены и обнаруживаются только или лучше. понимается по мере того, как архитектура начинает формироваться» и что, хотя «большинство архитектурных проблем выражаются в виде требований к системе, они также могут включать в себя обязательные проектные решения» . [28] Короче говоря, требуемое поведение влияет на архитектуру решения, что, в свою очередь, может привести к появлению новых требований. [47] Такие подходы, как модель Твин Пикс [48] Целью является использование синергетической связи между требованиями и архитектурой.

Другие типы «архитектуры» [ править ]

Компьютерная архитектура
Компьютерная архитектура ориентирована на внутреннюю структуру компьютерной системы с точки зрения взаимодействия аппаратных компонентов, таких как ЦП ( или процессор), шина и память .
Бессерверная архитектура
Бессерверная архитектура — это парадигма облачных вычислений, которую часто неправильно понимают как бессерверную. По сути, это перекладывает обязанности по управлению сервером с разработчиков на поставщиков облачных услуг. Это позволяет предприятиям запускать свой серверный код в облачной инфраструктуре, устраняя необходимость в управлении физическим сервером. Событийно-ориентированный подход бессерверной архитектуры основан на небольших функциях, специфичных для конкретных задач, которые выполняются по требованию. Эти функции известны как «Функция как услуга» (FaaS) и обеспечивают экономическую эффективность за счет модели выставления счетов с оплатой по мере использования и динамического масштабирования ресурсов в зависимости от потребностей приложений. [49] [ нужен лучший источник ]
Архитектура систем
Термин «системная архитектура» первоначально применялся к архитектуре систем , состоящих как из аппаратного, так и из программного обеспечения . Основной задачей, решаемой системной архитектурой, является интеграция программного и аппаратного обеспечения в целостное, правильно работающее устройство. В другом, гораздо более широком, значении этот термин применяется к архитектуре любой сложной системы, которая может иметь техническую, социотехническую или социальную природу.
Архитектура предприятия
Цель архитектуры предприятия — «воплотить бизнес-видение и стратегию в эффективное предприятие». архитектуры предприятия Фреймворки , такие как TOGAF и Zachman Framework , обычно различают разные уровни архитектуры предприятия. Хотя терминология различается от платформы к платформе, многие из них включают, по крайней мере, различие между бизнес- уровнем , прикладным (или информационным ) уровнем и технологическим уровнем . Архитектура предприятия, среди прочего, направлена ​​на согласование между этими уровнями, обычно по принципу «сверху вниз».

См. также [ править ]

Ссылки [ править ]

  1. ^ Перейти обратно: а б с Клементс, Пол; Феликс Бахманн; Лен Басс ; Дэвид Гарлан; Джеймс Айверс; Рид Литтл; Пауло Мерсон; Роберт Норд; Джудит Стаффорд (2010). Документирование архитектур программного обеспечения: виды и не только, второе издание . Бостон: Аддисон-Уэсли. ISBN  978-0-321-55268-6 .
  2. ^ «Архитектура программного обеспечения» . www.sei.cmu.edu . Проверено 23 июля 2018 г.
  3. ^ Перейти обратно: а б с д Перри, Делавэр; Вольф, Алабама (1992). «Основы изучения архитектуры программного обеспечения» (PDF) . Заметки по разработке программного обеспечения ACM SIGSOFT . 17 (4): 40. CiteSeerX   10.1.1.40.5174 . дои : 10.1145/141874.141884 . S2CID   628695 .
  4. ^ Архитектура программного обеспечения Head First . О'Рейли Медиа. 2024. ISBN  978-1098134358 .
  5. ^ Перейти обратно: а б с д Основы архитектуры программного обеспечения: инженерный подход . О'Рейли Медиа. 2020. ISBN  978-1492043454 .
  6. ^ Основы архитектуры программного обеспечения. Инженерный подход . О'Рейли Медиа. 2020. ISBN  9781492043423 .
  7. ^ Перейти обратно: а б с д Это ж г час я дж Басс, Лен; Пол Клементс; Рик Казман (2012). Архитектура программного обеспечения на практике, третье издание . Бостон: Аддисон-Уэсли. ISBN  978-0-321-81573-6 .
  8. ^ СЭИ (2006). «Как вы определяете архитектуру программного обеспечения?» . Проверено 12 сентября 2012 г.
  9. ^ Гарлан и Шоу (1994). «Введение в архитектуру программного обеспечения» (PDF) . Проверено 13 сентября 2012 г.
  10. ^ Перейти обратно: а б Фаулер, Мартин (2003). «Дизайн – Кому нужен архитектор?». Программное обеспечение IEEE . 20 (5): 11–44. дои : 10.1109/MS.2003.1231144 . S2CID   356506 .
  11. ^ ISO/IEC/IEEE 42010: Определение «архитектуры» . Iso-architecture.org. Проверено 21 июля 2013 г.
  12. ^ Перейти обратно: а б Янсен, А.; Бош, Дж. (2005). «Архитектура программного обеспечения как совокупность архитектурно-проектных решений». 5-я рабочая конференция IEEE/IFIP по архитектуре программного обеспечения (WICSA'05) . п. 109. CiteSeerX   10.1.1.60.8680 . дои : 10.1109/WICSA.2005.61 . ISBN  978-0-7695-2548-8 . S2CID   13492610 .
  13. ^ Али Бабар, Мухаммед; Дингсойр, Торгейр; Лаго, Патрисия; ван Влит, Ганс (2009). Управление знаниями об архитектуре программного обеспечения . Дордрехт Гейдельберг Лондон Нью-Йорк: Springer. ISBN  978-3-642-02373-6 .
  14. ^ Перейти обратно: а б с Джордж Фэрбенкс (2010). Достаточно архитектуры программного обеспечения . Маршалл и Брейнерд.
  15. ^ Перейти обратно: а б ИСО/МЭК/IEEE (2011). «ISO/IEC/IEEE 42010:2011 Разработка систем и программного обеспечения. Описание архитектуры» . Проверено 12 сентября 2012 г.
  16. ^ Мюллер, Геррит (20 августа 2007 г.). «Букварь по эталонной архитектуре» (PDF) . Сайт Гауди . Архивировано (PDF) из оригинала 19 декабря 2011 г. Проверено 13 ноября 2015 г.
  17. ^ Ангелов С.; Грефен П.; Грифхорст, Д. (2009). «Классификация эталонных архитектур программного обеспечения: анализ их успеха и эффективности». 2009 Совместная рабочая конференция IEEE/IFIP по архитектуре программного обеспечения и Европейская конференция по архитектуре программного обеспечения . IEEE. стр. 141–150. дои : 10.1109/WICSA.2009.5290800 . ISBN  978-1-4244-4984-2 . Проверено 15 декабря 2023 г.
  18. ^ Брукс, Фредерик П. младший (1975). Мифический человеко-месяц – Очерки программной инженерии . Аддисон-Уэсли. ISBN  978-0-201-00650-6 .
  19. ^ Конвей, Мелвин. «Закон Конвея» . Домашняя страница Мела Конвея . Архивировано из оригинала 29 сентября 2019 г. Проверено 29 сентября 2019 г.
  20. ^ Перейти обратно: а б Оббинк, Х.; Крухтен, П.; Козачинский, В.; Постема, Х.; Ран, А.; Доминик, Л.; Казман Р.; Хиллиард, Р.; Трач, В.; Кахане, Э. (6 февраля 2002 г.). «Отчет об обзоре и оценке архитектуры программного обеспечения (SARA)» (PDF) . Проверено 1 ноября 2015 г.
  21. ^ Поорт, Эльтьо; ван Влит, Ганс (сентябрь 2012 г.). «RCDA: Архитектура как дисциплина управления рисками и затратами» . Журнал систем и программного обеспечения . 85 (9): 1995–2013. дои : 10.1016/j.jss.2012.03.071 .
  22. ^ П. Наур; Б. Рэнделл, ред. (1969). «Программная инженерия: отчет конференции, спонсируемой Научным комитетом НАТО, Гармиш, Германия, 7–11 октября 1968 г.» (PDF) . Брюссель: НАТО, Отдел по научным вопросам. Архивировано (PDF) из оригинала 7 июня 2003 г. Проверено 16 ноября 2012 г.
  23. ^ П. Крухтен; Х. Оббинк; Дж. Стаффорд (2006). «Прошлое, настоящее и будущее архитектуры программного обеспечения». Программное обеспечение IEEE . 23 (2): 22. doi : 10.1109/MS.2006.59 . S2CID   2082927 .
  24. ^ Университет Ватерлоо (2006 г.). «Очень краткая история информатики» . Проверено 23 сентября 2006 г.
  25. ^ «Введение в специальный выпуск по архитектуре программного обеспечения». IEEE.org . 2006. дои : 10.1109/TSE.1995.10003 .
  26. ^ Гарлан и Шоу (1994). «Введение в архитектуру программного обеспечения» (PDF) . Проверено 25 сентября 2006 г.
  27. ^ Перейти обратно: а б Крухтен, П. (2008). «Чем на самом деле занимаются архитекторы программного обеспечения?». Журнал систем и программного обеспечения . 81 (12): 2413–2416. дои : 10.1016/j.jss.2008.08.025 .
  28. ^ Перейти обратно: а б с Кристин Хофмайстер; Филипп Крухтен; Роберт Л. Норд; Хенк Оббинк; Александр Ран; Пьер Америка (2007). «Общая модель проектирования архитектуры программного обеспечения, основанная на пяти промышленных подходах». Журнал систем и программного обеспечения . 80 (1): 106–126. дои : 10.1016/j.jss.2006.05.024 .
  29. ^ Перейти обратно: а б ИСО/МЭК (2011). «ISO/IEC 25010:2011 Разработка систем и программного обеспечения. Требования и оценка качества систем и программного обеспечения (SQuaRE). Модели качества систем и программного обеспечения» . Проверено 8 октября 2012 г.
  30. ^ Остервальдер и Пиньёр (2004). «Онтология для моделей электронного бизнеса» (PDF) . Создание стоимости на основе моделей электронного бизнеса . стр. 65–97. CiteSeerX   10.1.1.9.6922 . дои : 10.1016/B978-075066140-9/50006-0 . ISBN  9780750661409 . S2CID   14177438 . Архивировано из оригинала (PDF) 17 ноября 2018 г.
  31. ^ Чен, Ляньпин; Али Бабар, Мухаммед; Нусейбе, Башар (2013). «Характеристика архитектурно значимых требований». Программное обеспечение IEEE . 30 (2): 38–45. дои : 10.1109/MS.2012.174 . hdl : 10344/3061 . S2CID   17399565 .
  32. ^ Вудс, Э. (2012). «Оценка промышленной архитектуры с использованием TARA». Журнал систем и программного обеспечения . 85 (9): 2034–2047. дои : 10.1016/j.jss.2012.04.055 . S2CID   179244 .
  33. ^ Маранцано, Дж. Ф.; Розсыпаль, С.А.; Циммерман, Г.Х.; Варнкен, ГВ; Вирт, ЧП; Вайс, DM (2005). «Обзоры архитектуры: практика и опыт». Программное обеспечение IEEE . 22 (2): 34. doi : 10.1109/MS.2005.28 . S2CID   11697335 .
  34. ^ Бабар, Массачусетс; Дингсойр, Т.; Лаго, П.; Влит, Х. ван (2009). Управление знаниями об архитектуре программного обеспечения: теория и практика (ред.), первое издание . Спрингер. ISBN  978-3-642-02373-6 .
  35. ^ Тан, А.; Хан, Дж.; Васа, Р. (2009). «Обоснование проектирования архитектуры программного обеспечения: аргументы в пользу улучшения методологической поддержки». Программное обеспечение IEEE . 26 (2): 43. doi : 10.1109/MS.2009.46 . hdl : 1959.3/51601 . S2CID   12230032 .
  36. ^ Крухтен, Филипп (1995). «Архитектурные чертежи – модель архитектуры программного обеспечения «4+1»» (PDF) . Программное обеспечение IEEE . 12 (6): 42–50. arXiv : 2006.04975 . дои : 10.1109/52.469759 . S2CID   219558624 .
  37. ^ Перейти обратно: а б Шоу, Мэри; Гарлан, Дэвид (1996). Архитектура программного обеспечения: взгляды на новую дисциплину . Прентис Холл. ISBN  978-0-13-182957-2 .
  38. ^ Исследование архитектуры программного обеспечения UCI - Исследование архитектуры программного обеспечения UCI: архитектурные стили . Isr.uci.edu. Проверено 21 июля 2013 г.
  39. ^ Перейти обратно: а б Глава 3: Архитектурные модели и стили . Msdn.microsoft.com. Проверено 21 июля 2013 г.
  40. ^ Бём, Барри; Тернер, Ричард (2004). Баланс между ловкостью и дисциплиной . Аддисон-Уэсли. ISBN  978-0-321-18612-6 .
  41. ^ Перейти обратно: а б с Ли, Жуйинь; Лян, Пэн; Солиман, Мохамед; Авжериу, Париж (2022 г.). «Понимание эрозии архитектуры программного обеспечения: систематическое картографическое исследование» . Журнал программного обеспечения: эволюция и процесс . 34 (3): e2423. arXiv : 2112.10934 . дои : 10.1002/smr.2423 .
  42. ^ Ли, Жуйинь; Лян, Пэн; Солиман, Мохамед; Авжериу, Париж (2021 г.). «Понимание эрозии архитектуры: проницательность практиков». 29-я Международная конференция IEEE/ACM по взаимодействию программ (ICPC) . стр. 311–322. дои : 10.1109/icpc52881.2021.00037 .
  43. ^ ван Гурп, Дж. и Бош, Дж.: 2002, Эрозия дизайна: проблемы и причины, Журнал систем и программного обеспечения 61 (2), 105–119.
  44. ^ Лунгу, М. «Восстановление архитектуры программного обеспечения», Университет Лугано, 2008 г. http://www.slideshare.net/mircea.lungu/software-architecture-recovery-in-five-questions-presentation
  45. ^ Перейти обратно: а б Амнон Х. Иден; Рик Казман (2003). «Реализация архитектурного проекта» (PDF) . Архивировано из оригинала (PDF) 28 сентября 2007 г.
  46. ^ К. Шекаран; Д. Гарлан; М. Джексон; Н. Р. Мид; К. Поттс; Х. Б. Рубинштейн (1994). «Роль архитектуры программного обеспечения в разработке требований». Материалы Международной конференции IEEE по разработке требований . стр. 239–245. дои : 10.1109/ICRE.1994.292379 . ISBN  978-0-8186-5480-0 . S2CID   3129363 .
  47. ^ Ремко К. де Бур, Ханс ван Влит (2009). «О сходстве требований и архитектуры». Журнал систем и программного обеспечения . 82 (3): 544–550. CiteSeerX   10.1.1.415.6023 . дои : 10.1016/j.jss.2008.11.185 .
  48. ^ Башар Нусейбе (2001). «Объединение требований и архитектуры» (PDF) . Компьютер . 34 (3): 115–119. дои : 10.1109/2.910904 . Архивировано (PDF) из оригинала 7 сентября 2012 г.
  49. ^ Компания DashDevs | Разработка финтех-программ. «Как использовать бессерверную архитектуру | DashDevs» . Как использовать бессерверную архитектуру | DashDevs . Проверено 28 августа 2023 г.

Дальнейшее чтение [ править ]

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 9E75266FA0D3BF2A4CA9C06D4E0FD6A2__1717389000
URL1:https://en.wikipedia.org/wiki/Software_architecture
Заголовок, (Title) документа по адресу, URL1:
Software architecture - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)