Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Архитектура и проектирование программных систем

АРХИТЕКТУРЫ ПРОГРАММНЫХ СИСТЕМ

Понятие архитектуры программной системы

С понятием «архитектура» каждый знаком еще со времени обучения в школе. Слово «архитектура» латинское (агсИйесФга), хотя и имеет греческие корни ар%1 и тектошкр, что значит «высшее плотничное или строительное искусство». В этом смысле слову «архитектура» придавали очень обширное значение. Так, например, были в ходу выражения «военная архитектура», «корабельная архитектура», «гидротехническая архитектура», «ландшафтная архитектура» и т.д. В настоящее время под словом «архитектура» чаще всего понимается искусство градостроения, проектирования зданий и сооружений, предназначенных для помещения людей, животных или каких-либо предметов [8].

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

У понятия «архитектура» в его применении к программному обеспечению и системам, базирующимся на ПО, достаточно долгая жизнь. Начало этой «жизни» принято связывать с именами Э. Дейкстры [13], Ф. Брукса [10] и Д. Парнаса [23], заложивших основы структурного и объектно ориентированного программирования. Но «отсчет» современного значения этого понятия принято начинать с 1992 г. с работы Д. Перри и А. Вульфа [22].

Когда речь заходит об архитектуре, обычно не возникает недостатка в определениях. Есть даже веб-сайты, которые собирают такие определения [6]. Стандарты ШЕЕ Б1с1 1472000 и ШЕЕ 1471 «Рекомендуемые методы описания архитектуры преимущественно-программных систем» дают такое определение архитектуры [2]: «Архитектура - это базовая организации системы, воплощенная в ее компонентах, их отношениях между собой и с окружением, а также принципы, определяющие проектирование и развитие системы».

Стандарт ШЕЕ 1471 [2] определяет также представление архитектуры (агсййесШга! безспрбоп) как согласованный набор документов, описывающий архитектуру с точки зрения определенной группы заинтересованных лиц с помощью набора моделей. Архитектура может иметь несколько представлений, отражающих интересы различных групп заинтересованных лиц.

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

Стандарт ШЕЕ 1471 отмечает необходимость использования архитектуры системы для решения следующих задач:

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

В стандартах ШЕЕ 81(1 1472000 и ШЕЕ 1471 определяются также следующие термины, связанные с определением архитектуры.

Система - это набор компонентов, объединенных для выполнения определенной функции или набора функций. Термин «система» охватывает отдельные приложения, системы в традиционном смысле, подсистемы, системы систем, линейки продуктов, семейства продуктов, целые корпорации и другие агрегации, имеющие отношение к данной теме. Система существует для выполнения одной или более миссий в своем окружении (ШЕЕ 1471). Здесь несколько терминов, которые следует пояснить.

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

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

Заинтересованное лицо - это физическое лицо, группа или организация (или ее категории), которые заинтересованы в системе или имеют связанные с ней задачи.

Говоря об архитектуре программных систем, прежде всего надо определить понятие «программная система». Распространено такое определение: «Программная система - это совокупность системных, прикладных и сервисных программ, обеспечивающих решение некоторой совокупности задач».

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

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

Классическим источником комплекса архитектурных точек зрения и представлений, построенных в системе координат «вопрос - уровень детализации» является модель Захмана [12]. Каждое архитектурное представление является результатом ответа на вопрос («как?», «что?», «где?» и т.п.) в контексте необходимого уровня абстракции. Например, физическая модель данных (Physical Data Model) является ответом на вопрос «что?» в контексте технологической модели, а логическая модель данных, отвечая на тот же вопрос, находится на один уровень абстракции выше - в контексте системной или логической модели.

В информационных технологиях понятие архитектур используется в следующих областях:

  • • функциональная архитектура (бизнес-архитектура);
  • • системная архитектура (архитектура программных систем);
  • • технологическая, или инфраструктурная, архитектура;
  • • информационная архитектура (организация данных).

Следует отметить, что в определениях архитектуры часто употребляется слово «компонент». Большая часть определений архитектуры не определяет термин «компонент». Стандарт IEEE 1471 намеренно оставляет это понятие неопределенным, чтобы оно соответствовало множеству толкований, возможных в отрасли. Компонент может быть логическим или физическим, технологически независимым или технологически связанным, крупно- или мелкогранулированным.

Определение термина «компонент» по спецификации UML 2.0 дается в достаточно широком смысле, что позволяет охватить различные элементы архитектуры [11].

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

Хотя в отрасли программного обеспечения не существует общепризнанного определения понятия «архитектура», имеет смысл рассмотреть

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

Архитектура - это:

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

Такое определение дает Ф. Крачтен- создатель RUP (Rational Unified Process) [15].

Архитектура программы или компьютерной системы - это

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

[9].

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

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

В заключение приведем определение архитектуры программного обеспечения, данного в SWEBOK (Software Engineering Body of Knowledge) - документе, подготовленном комитетом Software Engineering Coordinating Committee, в который вовлечено сообщество IEEE Computer Society [7]. Назначение SWEBOK - в объединении знаний по программному обеспечению.

По SWEBOK, в строгом значении архитектура программного обеспечения (software architecture) - описание подсистем и компонентов программной системы, а также связей между ними. Архитектура пытается определить внутреннюю структуру получаемой системы, задавая способ, которым система организована или конструируется.

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

лица и ее окружение, она воплощает решения на основе логического обоснования.

Таким образом, можно видеть, что слова «архитектура программной системы» обычно довольно согласованно понимаются специалистами на уровне подсознания и достаточно несогласованно определяются. По мнению Н. Михайловского [18], сложилось два основных класса определений архитектур: конструктивный и идеологический.

Основные идеологические определения архитектуры ПС таковы:

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

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

Конструктивно архитектура обычно определяется как набор ответов на следующие вопросы:

  • • что делает система;
  • • на какие части она разделяется;
  • • как эти части взаимодействуют;
  • • где эти части размещены.
 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Пред   СОДЕРЖАНИЕ   След >
 

Популярные страницы