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

Тип работы:
Реферат
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

Введение

1. Что такое архитектура программного обеспечения?

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

1.2 Виды

1.3 Базовые фреймворки для архитектуры ПО

2. Важность архитектуры программного обеспечения

3. Разработчики структуры программного обеспечения

4. Навыки для разработчика программного обеспечения

Список литературы

Введение

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

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

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

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

1. Что такое архитектура программного обеспечения?

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

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

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

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

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

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

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

Языки описания архитектуры (ADLS) используются для описания архитектуры программного обеспечения. Различными организациями было разработано несколько различных ADLS, в том числе AADL (стандарт SAE), Wright (разработан в университете Carnegie Mellon), Acme (разработан в университете Carnegie Mellon), xADL (разработан в UCI), Darwin (разработан в Imperial College в Лондоне), DAOP-ADL (разработан в Университете Малаги), а также ByADL (Университет L’Aquila, Италия). Общими элементами для всех этих языков являются понятия компонента, коннектора и конфигурации.

1. 2 Виды (views)

Архитектура ПО обычно содержит несколько видов, которые аналогичны различным типам чертежей в строительстве зданий. В онтологии, установленной ANSI / IEEE 1471--2000, виды являются экземплярами точки зрения, где точка зрения существует для описания архитектуры с точки зрения заданного множества заинтересованных лиц.

Примеры видов:

Функциональный/логический вид

Вид код/модуль

Вид разработки (development)/структурный

Вид параллельности выполнения/процесс/поток

Физический вид/вид развертывания

Вид с точки зрения действий пользователя

Вид с точки зрения данных

Хотя было разработано несколько языков для описания архитектуры программного обеспечения, в настоящий момент нет согласия по поводу того, какой набор видов должен быть принят в качестве эталона. В качестве стандарта «для моделирования программных систем (и не только)» был создан язык UML.

1. 3 Базовые фреймворки для архитектуры ПО (software architecture frameworks)

Существуют следующие фреймворки, относящихся к области архитектуры ПО:

4+1

RM-ODP (Reference Model of Open Distributed Processing)

Service-Oriented Modeling Framework (SOMF)

Такие примеры архитектур как фреймворк Захмана (Zachman Framework), DODAF и TOGAF относятся к области архитектуры предприятия (enterprise architectures).

2. В чем важность архитектуры программного обеспечения?

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

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

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

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

3. Чем занимаются разработчики архитектуры программного обеспечения?

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

Разработчик архитектуры программного обеспечения должен учитывать потребности клиента. Однако общий термин «клиент» обычно состоит из трех противоречащих областей ответственности: бизнес-требования, требования пользователя и системные требования. Бизнес-требования обычно определяют диапазон таких факторов, как бизнес-процессы, факторы производительности (такие как безопасность, надежность и пропускная способность), а также бюджетные ограничения и ограничения на издержки. Требования пользователя включают в себя дизайн интерфейса, производственные возможности и простоту использования программного обеспечения. Системные требования подразумевают возможности и ограничения оборудования, сети и среды выполнения. На рис. 1 показано, как могут различаться эти различные требования, поэтому разработчику необходимо создать архитектуру, подходящую для перекрывающихся областей.

Рис. 1. -- конфликтные требования типичного клиента

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

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

Как и большинство заданий в мире проектирования и разработки программного обеспечения, разработка архитектуры -- это одновременно предупредительный и итеративный процесс. Многие первоначальные задачи, такие как анализ требований, техническое исследование и определение целей, обычно выполняются в начале процесса. Следующий этап -- определение ключевых сценариев для архитектуры. Это основные требования, которым должно соответствовать программное обеспечение, и ограничения, в рамках которых оно должно работать. На основании этой информации разработчик архитектуры может создать обзор приложения. Этот обзор охватывает такие высокоуровневые сведения, как тип приложения (для Интернета, телефонов, настольное или облачное), архитектура развертывания (обычно многоуровневая архитектура, компоненты которой связываются через границы оборудования и сети), соответствующие применимые стили архитектуры (например, n-уровневая, клиент-сервер или сервис-ориентированная) и технологии реализации, лучше всего подходящие для сценария.

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

Рис. 2. -- поэтапный процесс архитектурного проектирования

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

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

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

4. Какие навыки требуются разработчику архитектуры программного обеспечения?

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

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

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

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

Литература

1. Крачтен Ф., Оббинк Х., Стаффорд Д. Ретроспектива программных архитектур на сайте http: //www. osp. ru

2. Богумирский Б. С. Руководство пользователя ПЭВМ: В 2-х ч. — СПб.: Ассоциация OILCO, 1992. — 357 с.

3. Головкин Б. А. Параллельные вычислительные системы. М.: Наука, 1980. — 520 с.

4. Елманова Н. З. Borland C++ Builder 3.0. Архитектура «клиент/сервер», многозвенные системы и Internet-приложения. — М.: Диалог-МИФИ, 1999. — 240 с.

5. Касаткин А. И., Вальвачев А. Н. Профессиональное программирование на языке Си: От Turbo C к Borland С++: Мн.: Выш. шк., 1992. -240 с.

6. Кручинин С. Архитектура компьютера. Hard и Soft № 4 1995.

ПоказатьСвернуть
Заполнить форму текущей работой