Основной Текст и Дополнения Милы
Архитектура - это организационная структура системы. (IEEE Std. 610.12-1990).
Архитектура - это концептуальное описание структуры системы, включающее описание элементов системы, их взаимодействия и внешних свойств (David McAfee).
Программная архитектура – многогранный подход, гарантирующий, что программное обеспечение будет отвечать своему предназначению.
Архитектура программной системы определяет ее структуру, точнее – несколько структур, каждая из которых включает в себя элементы и взаимосвязи между ними.
Под архитектурой программных систем понимается совокупность решений относительно:
· организации программной системы;
· выбора структурных элементов, составляющих систему и их интерфейсов;
· поведения этих элементов во взаимодействии с другими элементами;
· объединение этих элементов в подсистемы;
· архитектурного стиля, определяющего логическую и физическую организацию системы: статические и динамические элементы, их интерфейсы и способы их объединения.
Архитектура программной системы охватывает не только ее структурные и поведенческие аспекты, но и правила ее использования и интеграции с другими системами, функциональность, производительность, гибкость, надежность, возможность повторного применения, полноту, экономические и технологические ограничения, а также вопрос пользовательского интерфейса.
Элементы могут быть вычислительными объектами, связанными потоком управления или бизнес-объектами, связанными семантическими ограничениями.
В целом процесс проектирования архитектуры состоит из систематической декомпозиции элементов верхнего уровня на совокупности более мелких элементов.
С помощью подхода ADD (Attribute Driven Design) архитектор выбирает конкретную декомпозицию, стремясь улучшить определенные свойства конечного продукта. ADD гарантируют, что программное обеспечение, реализованное на основе предварительно сформированной архитектуры, будет точно отвечать своему предназначению. Следует, однако, иметь в виду, что каждая декомпозиция, как правило, какие-то свойства ухудшает.
Процесс создания архитектуры предполагает разработку системы с конкретными свойствами и функциональностью, причем каждое из таких свойств имеет заданный приоритет. Начиная с общей структуры, которая поддерживает всю требуемую функциональность, архитектор методично проводит декомпозицию функциональности и распределяет ее между компонентами. Другими словами, нужно достигнуть оптимального соотношения между характеристиками заданных свойств. Затем на предприятии могут быть созданы рабочие группы, каждая из которых станет заниматься проектированием и реализацией своего подмножества элементов архитектуры.
Архитектор создает разные диаграммы для отображения компонентной структуры, взаимодействий между компонентами и их размещения. Описание архитектуры содержит несколько «представлений», которые используются собственно для отображения разных типов информации о структуре программного обеспечения.
Выбрав эталонную архитектуру, можно использовать разработанные с ее помощью компоненты как основу проектирования. Немаловажный фактор при выборе архитектуры – формирующееся вокруг нее коммерческое сообщество. Чем оно больше и разнообразнее, тем больше вероятность приобретения компонентов, позволяющих существенно ускорить разработку продукта. Кроме того, для такой архитектуры существуют шаблоны, справочники, примеры и другие активы.
Разработка архитектуры – процесс в равной степени творческий и планируемый. Бизнес-цикл разработки побуждает предприятие подумать о своей стратегии с учетом конкуренции, тенденций в отрасли и эволюции технологии.
Есть немало примеров использования архитектуры в стратегических целях. Один из самых известных — Common Object Request Broker Architecture; эта архитектура служит для связи унаследованных систем, для интеграции систем, написанных на разных языках, и поддержки взаимодействия между компьютерами с различными аппаратными архитектурами. CORBA позволяет дать новую жизнь унаследованным системам и в то же время быстро интегрировать в них новые приложения, что обеспечивает предприятиям стратегические преимущества перед конкурентами, модифицирующими унаследованные системы.
Более свежий пример — свободно распространяемая интегрированная среда разработки Eclipse. Цель проекта Eclipse (http://www.eclipse.org) — создание свободно распространяемой платформы, которая может послужить основой для той или иной интегрированной среды разработки. Реализованная в ней архитектура призвана увеличить качество поддержки распределенной разработки и реализации разных сценариев использования платформы. Подобные сценарии, расширяющие основную функциональность, добавляются к Eclipse посредством определения и реализации подключаемых модулей. Такой модуль представляет собой пакет, который объединяет в себе код, реализующий добавляемую в Eclipse функциональность, и декларацию на языке XML, содержащую информацию о конфигурации. Декларация описывает расширения к меню, функциональность, необходимую для корректной работы подключаемого модуля, и новые окна, которые будут частью представления Eclipse.