stringtranslate.com

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

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

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

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

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

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

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

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

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

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

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

Объем

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

Не существует четкого различия между архитектурой программного обеспечения и проектированием и разработкой требований (см. Связанные области ниже). Все они являются частью «цепи намерений» от высокоуровневых намерений до низкоуровневых деталей. [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  Эта абстракция обеспечивает ряд преимуществ:

История

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

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

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

IEEE 1471 -2000, «Рекомендуемая практика описания архитектуры систем с большим количеством программного обеспечения», был первым формальным стандартом в области архитектуры программного обеспечения. Он был принят в 2007 году ISO как 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]

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

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

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

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

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

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

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

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

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

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

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

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

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

Язык описания архитектуры (ADL) — это любое средство выражения, используемое для описания архитектуры программного обеспечения ( ISO/IEC/IEEE 42010 ). С 1990-х годов было разработано множество специализированных ADL, включая AADL (стандарт SAE), Wright (разработанный Carnegie Mellon), Acme (разработанный Carnegie Mellon), xADL (разработанный UCI), Darwin (разработанный Imperial College London ), DAOP-ADL (разработанный University of Málaga), SBC-ADL (разработанный National Sun Yat-Sen University ) и ByADL (University of L'Aquila, Italy).

Архитектурные точки зрения

Архитектурная модель 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] Такие подходы, как модель Twin Peaks [48], направлены на использование синергетической связи между требованиями и архитектурой.

Другие типы «архитектуры»

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

Смотрите также

Ссылки

  1. ^ abc Клементс, Пол; Феликс Бахманн; Лен Басс ; Дэвид Гарлан; Джеймс Айверс; Рид Литтл; Пауло Мерсон; Роберт Норд; Джудит Стаффорд (2010). Документирование архитектур программного обеспечения: взгляды и перспективы, второе издание . Бостон: Addison-Wesley. ISBN 978-0-321-55268-6.
  2. ^ "Архитектура программного обеспечения". www.sei.cmu.edu . Получено 2018-07-23 .
  3. ^ abcd Перри, Д. Э.; Вольф, А. Л. (1992). "Основы изучения архитектуры программного обеспечения" (PDF) . Заметки по программной инженерии ACM SIGSOFT . 17 (4): 40. CiteSeerX 10.1.1.40.5174 . doi :10.1145/141874.141884. S2CID  628695. 
  4. ^ Head First Software Architecture . O'Reilly Media. 2024. ISBN 978-1098134358.
  5. ^ abcd Основы архитектуры программного обеспечения: инженерный подход . O'Reilly Media. 2020. ISBN 978-1492043454.
  6. ^ Основы архитектуры программного обеспечения. Инженерный подход . O'Reilly Media. 2020. ISBN 9781492043423.
  7. ^ abcdefghij Басс, Лен; Пол Клементс; Рик Казман (2012). Архитектура программного обеспечения на практике, третье издание . Бостон: Addison-Wesley. ISBN 978-0-321-81573-6.
  8. ^ SEI (2006). «Как вы определяете архитектуру программного обеспечения?» . Получено 12 сентября 2012 г.
  9. ^ Гарлан и Шоу (1994). "Введение в архитектуру программного обеспечения" (PDF) . Получено 13 сентября 2012 г.
  10. ^ ab Fowler, Martin (2003). «Проектирование – кому нужен архитектор?». IEEE Software . 20 (5): 11–44. doi :10.1109/MS.2003.1231144. S2CID  356506.
  11. ^ ISO/IEC/IEEE 42010: Определение «архитектуры». Iso-architecture.org. Получено 21 июля 2013 г.
  12. ^ ab Jansen, A.; Bosch, J. (2005). "Архитектура программного обеспечения как набор архитектурных проектных решений". 5-я рабочая конференция IEEE/IFIP по архитектуре программного обеспечения (WICSA'05) . стр. 109. CiteSeerX 10.1.1.60.8680 . doi :10.1109/WICSA.2005.61. ISBN  978-0-7695-2548-8. S2CID  13492610.
  13. ^ Али Бабар, Мухаммед; Дингсойр, Торгейр; Лаго, Патрисия; ван Влит, Ганс (2009). Управление знаниями об архитектуре программного обеспечения . Дордрехт Гейдельберг Лондон Нью-Йорк: Springer. ISBN 978-3-642-02373-6.
  14. ^ abc Джордж Фэрбенкс (2010). Just Enough Software Architecture . Маршалл и Брейнерд.
  15. ^ ab ISO/IEC/IEEE (2011). "ISO/IEC/IEEE 42010:2011 Системная и программная инженерия – Описание архитектуры" . Получено 12 сентября 2012 г.
  16. ^ Мюллер, Геррит (20 августа 2007 г.). "A Reference Architecture Primer" (PDF) . Сайт Гауди . Архивировано (PDF) из оригинала 2011-12-19 . Получено 13 ноября 2015 г. .
  17. ^ Ангелов, С.; Грефен, П.; Грефхорст, Д. (2009). «Классификация эталонных архитектур программного обеспечения: анализ их успешности и эффективности». 2009 Совместная рабочая конференция IEEE/IFIP по архитектуре программного обеспечения и Европейская конференция по архитектуре программного обеспечения. IEEE. стр. 141–150. doi :10.1109/WICSA.2009.5290800. ISBN 978-1-4244-4984-2. Получено 15 декабря 2023 г. .
  18. ^ Брукс, Фредерик П. младший (1975). Мифический человеко-месяц – Эссе по программной инженерии . Addison-Wesley. ISBN 978-0-201-00650-6.
  19. ^ Конвей, Мелвин. «Закон Конвея». Домашняя страница Мела Конвея . Архивировано из оригинала 29-09-2019 . Получено 29-09-2019 .
  20. ^ ab Obbink, H.; Kruchten, P.; Kozaczynski, W.; Postema, H.; Ran, A.; Dominick, L.; Kazman, R.; Hilliard, R.; Tracz, W.; Kahane, E. (6 февраля 2002 г.). "Software Architecture Review and Assessment (SARA) Report" (PDF) . Получено 1 ноября 2015 г.
  21. ^ Poort, Eltjo; van Vliet, Hans (сентябрь 2012 г.). «RCDA: Архитектура как дисциплина управления рисками и затратами». Журнал систем и программного обеспечения . 85 (9): 1995–2013. doi :10.1016/j.jss.2012.03.071.
  22. ^ P. Naur; B. Randell, ред. (1969). "Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7–11 Oct. 1968" (PDF) . Брюссель: NATO, Scientific Affairs Division. Архивировано (PDF) из оригинала 2003-06-07 . Получено 2012-11-16 .
  23. ^ P. Kruchten; H. Obbink; J. Stafford (2006). «Прошлое, настоящее и будущее архитектуры программного обеспечения». IEEE Software . 23 (2): 22. doi :10.1109/MS.2006.59. S2CID  2082927.
  24. ^ Университет Ватерлоо (2006). "Очень краткая история компьютерных наук" . Получено 23 сентября 2006 г.
  25. ^ «Введение в специальный выпуск по архитектуре программного обеспечения». IEEE.org . 2006. doi :10.1109/TSE.1995.10003.
  26. ^ Гарлан и Шоу (1994). "Введение в архитектуру программного обеспечения" (PDF) . Получено 25.09.2006 .
  27. ^ ab Kruchten, P. (2008). «Чем на самом деле занимаются архитекторы программного обеспечения?». Journal of Systems and Software . 81 (12): 2413–2416. doi :10.1016/j.jss.2008.08.025.
  28. ^ abc Christine Hofmeister; Philippe Kruchten; Robert L. Nord; Henk Obbink; Alexander Ran; Pierre America (2007). «Общая модель проектирования архитектуры программного обеспечения, полученная из пяти промышленных подходов». Journal of Systems and Software . 80 (1): 106–126. doi :10.1016/j.jss.2006.05.024.
  29. ^ ab ISO/IEC (2011). "ISO/IEC 25010:2011 Системная и программная инженерия – Требования и оценка качества систем и программного обеспечения (SQuaRE) – Модели качества систем и программного обеспечения" . Получено 2012-10-08 .
  30. ^ Остервальдер и Пиньёр (2004). "Онтология для моделей электронного бизнеса" (PDF) . Создание ценности из моделей электронного бизнеса . стр. 65–97. CiteSeerX 10.1.1.9.6922 . doi :10.1016/B978-075066140-9/50006-0. ISBN  9780750661409. S2CID  14177438. Архивировано из оригинала (PDF) 17.11.2018.
  31. ^ Чен, Ляньпин; Али Бабар, Мухаммад; Нусейбех, Башар (2013). «Характеристика архитектурно значимых требований». IEEE Software . 30 (2): 38–45. doi :10.1109/MS.2012.174. hdl : 10344/3061 . S2CID  17399565.
  32. ^ Вудс, Э. (2012). «Оценка промышленной архитектуры с использованием TARA». Журнал систем и программного обеспечения . 85 (9): 2034–2047. doi :10.1016/j.jss.2012.04.055. S2CID  179244.
  33. ^ Маранцано, Дж. Ф.; Розсыпал, С. А.; Циммерман, Г. Х.; Варнкен, Г. В.; Вирт, П. Е.; Вайс, Д. М. (2005). «Обзоры архитектуры: практика и опыт». IEEE Software . 22 (2): 34. doi :10.1109/MS.2005.28. S2CID  11697335.
  34. ^ Бабар, МА; Дингсойр, Т.; Лаго, П.; Влиет, Х. ван (2009). Архитектура программного обеспечения Управление знаниями: теория и практика (ред.), первое издание . Springer. ISBN 978-3-642-02373-6.
  35. ^ Тан, А.; Хан, Дж.; Васа, Р. (2009). «Обоснование проектирования архитектуры программного обеспечения: случай улучшения поддержки методологии». IEEE Software . 26 (2): 43. doi :10.1109/MS.2009.46. hdl :1959.3/51601. S2CID  12230032.
  36. ^ Крухтен, Филипп (1995). «Архитектурные чертежи – модель представления архитектуры программного обеспечения «4+1»» (PDF) . IEEE Software . 12 (6): 42–50. arXiv : 2006.04975 . doi :10.1109/52.469759. S2CID  219558624.
  37. ^ ab Shaw, Mary; Garlan, David (1996). Архитектура программного обеспечения: перспективы новой дисциплины . Prentice Hall. ISBN 978-0-13-182957-2.
  38. ^ UCI Software Architecture Research – UCI Software Architecture Research: Architectural Styles. Isr.uci.edu. Получено 21 июля 2013 г.
  39. ^ ab Глава 3: Архитектурные шаблоны и стили. Msdn.microsoft.com. Получено 21 июля 2013 г.
  40. ^ Бём, Барри; Тернер, Ричард (2004). Баланс гибкости и дисциплины . Эддисон-Уэсли. ISBN 978-0-321-18612-6.
  41. ^ abc Ли, Жуйинь; Лян, Пэн; Солиман, Мохамед; Авжериу, Париж (2022). «Понимание эрозии архитектуры программного обеспечения: систематическое картографическое исследование». Журнал программного обеспечения: эволюция и процесс . 34 (3): e2423. arXiv : 2112.10934 . doi : 10.1002/smr.2423.
  42. ^ Ли, Жуйинь; Лян, Пэн; Солиман, Мохамед; Авгериу, Париж (2021). «Понимание эрозии архитектуры: восприятие практиков». 29-я Международная конференция IEEE/ACM по пониманию программ (ICPC). стр. 311–322. doi :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. ^ ab Амнон Х. Иден; Рик Казман (2003). "Архитектурное проектирование Реализация" (PDF) . Архивировано из оригинала (PDF) 2007-09-28.
  46. ^ C. Shekaran; D. Garlan; M. Jackson; NR Mead; C. Potts; HB Reubenstein (1994). "Роль архитектуры программного обеспечения в разработке требований". Труды Международной конференции IEEE по разработке требований . стр. 239–245. doi :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. doi :10.1109/2.910904. Архивировано (PDF) из оригинала 2012-09-07.
  49. ^ Компания, DashDevs | Разработка программного обеспечения FinTech. "Как использовать архитектуру Serverless | DashDevs". Как использовать архитектуру Serverless | DashDevs . Получено 28.08.2023 . {{cite web}}: |last=имеет общее название ( помощь )

Дальнейшее чтение

Внешние ссылки