Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программная инженерия.Часть II. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
678 Кб
Скачать

2.Каковы основные цели проектирования? Что такое процесс проектирования?

3.Каковы роли, которые могут участвовать в процессе проектирования?

4.Назовите их основные задачи.

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

Литература

1.Программная инженерия: учебник / В. А. Антипов [и др.]; под ред.

Б.Г. Трусова. М.: Академия, 2014. 282 с.

2.Соммервилл И. Инженерия программного обеспечения. 6-е изд. / пер. с англ. М.: Изд. дом «Вильямс», 2002. 624 с.

Тема 10. АРХИТЕКТУРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

План

10.1.Задачи архитектуры программного обеспечения.

10.2.Создание архитектуры программного обеспечения.

10.3.Определение целей архитектуры.

10.4.Выявление основных (ключевых) сценариев.

10.5.Определение типа приложения.

10.6.Определение ограничений развертывания.

10.1. Задачи архитектуры программного обеспечения

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

Для разработки архитектуры системы привлекаются специалисты со следующими ролями: системный архитектор (проектирует систему в целом, а также отдельные ее компоненты), архитектор базы данных

II Часть | пособие Учебное

11

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

На архитекторов системы возлагается большая ответственность. Если разработанная архитектура не будет реализовывать поставлен-

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

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

– Улучшение и повышение продуктивности процессов. Типичные ожидания заказчика от внедрения приложения: уменьшение времени, затрачиваемого на выполнение различных действий; ускорение выполнения различных операций; автоматизация процессов; различные улучшения, получаемые за счет масштабируемости – способности системы, сети или процесса справляться с увеличением рабочей нагрузки (повышать свою производительность) при добавлении ресурсов, обычно аппаратных.

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

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

 

– Повышение эффективности управления. Архитектурное решение

 

может иметь целью повышение эффективности управления. Например,

 

автоматизация документооборота на предприятии (переход от бумаж-

ИНЖЕНЕРИЯ

ных документов к электронным, с отслеживанием истории изменения,

уведомлениями и пр.).

 

 

– Уменьшение рисков. Любая деятельность связана с определенны-

 

ми рисками. Одной из целей разработки приложения может быть их сни-

ПРОГРАММНАЯ

жение. Например, правило двойной подписи для финансовых операций

(когда финансовую операцию, созданную одним сотрудником, обяза-

 

 

тельно должен проверить другой сотрудник и поставить свою подпись.

 

– Повышение эффективности IT-организации. Этот результат достига-

 

ется за счет автоматизации различных процессов.

 

 

 

 

12

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

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

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

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

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

10.2. Создание архитектуры программного обеспечения

В процессе проектирования и формализации требований и ограни-

 

чений, которые должна реализовать создаваемая архитектура, исполь-

 

зуют следующие исходные данные для проектирования: сценарии пове-

 

дения пользователя; функциональные и нефункциональные требования

 

(включая параметры качества, такие как производительность, безопас-

 

ность, надежность и др.); технологические требования; целевая среда

 

развертывания и другие ограничения.

 

В ходе процесса разработки создается список значимых с точки зре-

 

ния архитектуры вариантов использования аспектов архитектуры, тре-

 

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

Учебное

которые удовлетворяют требованиям и ограничениям, выявленным в

процессе проектирования

Общей техникой постепенной доработки архитектуры является ите-

|пособие

ничения), включающая пять основных этапов (рис. 10.1).

ративная методика (пока не будут удовлетворены все требования и огра-

 

1. Определение целей архитектуры. Наличие четких целей поможет

Часть

сосредоточиться на архитектуре и правильном отборе проблем для ре-

 

II

 

 

 

 

13

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

2. Выявление основных сценариев. Необходимо использовать основные (ключевые) сценарии, чтобы сосредоточиться на том, что имеет первостепенное значение, и проверить возможные варианты архитектур на соответствие этим сценариям.

ПРОГРАММНАЯ ИНЖЕНЕРИЯ

Рис. 10.1. Процесс создания архитектуры ПО

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

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

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

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

основным сценариям, проблемам и ограничениям развертывания.

14

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

10.3. Определение целей архитектуры

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

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

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

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

10.4. Выявление основных (ключевых) сценариев

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

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

(прецеденты), т. е. через описание действий, которые может осущест-

влять система в ответ на внешние воздействия пользователей или дру-

II Часть | пособие Учебное

15

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

Диаграмма вариантов использования (рис. 10.2) состоит из следующих элементов: «актеров», для которых система производит действие (актер обозначается значком человечка); «действий», которые актеры хотят получить от системы (действие обозначается овалом); «комментариев» (отображаются в виде прямоугольников и соединяются с комментируемым элементом линией); «использования действий» (обозначается в виде стрелок, которые направлены от актера к действию, над стрелкой указывается ключевое слово «uses»); «расширения действий» или дополнительных действий (показывается в виде стрелки от действия-расши- рения к действию, которое оно расширяет, над стрелкой указывается ключевое слово «extends»; если одно действие включается в другое, то используется ключевое слово «include»). Диаграмма используется при проектировании архитектуры приложения.

ПРОГРАММНАЯ ИНЖЕНЕРИЯ

Рис. 10.2. Диаграмма вариантов использования для интернет-магазина по продаже сотовых телефонов

16

10.5. Определение типа приложения

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

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

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

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

Web-приложения. Данный класс приложений появился с развитием Интернет-технологий, их очень удобно использовать в часто изменяемых системах с большим числом пользователей. Для обновления ПО достаточно сделать изменения на сервере, и они сразу появятся в браузерах конечных пользователей.

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

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

10.6. Определение ограничений развертывания

При проектировании архитектуры приложения необходимо учесть

корпоративную политику и процедуры, а также среду, в которой плани-

руется развертывание приложения. Если целевая среда является фикси-

II Часть | пособие Учебное

17

ПРОГРАММНАЯ ИНЖЕНЕРИЯ

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

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

ограничения по программным требованиям. Например, использование конкретной операционной системы;

ограничения собственно по развертыванию. Возможна ситуация

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

Повышенные требования безопасности. Данные требования могут ограничить возможные места расположения серверов, либо потребуется использование дополнительных аппаратных (программных) средств для обеспечения требуемого уровня надежности системы.

Вывод

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

Вопросы для самопроверки

1.Дайте определение архитектуры программного обеспечения.

2.Какие задачи решает разработка архитектуры приложения?

3.Как определяются исходные данные для проектирования архитектуры приложения?

4.Какие задачи и ограничения определяют цели архитектуры приложения?

5.Каковы основные типы разрабатываемых приложений?

6.Перечислите и опишите основные ограничения развертывания.

Литература

1.Программная инженерия: учебник / В. А. Антипов [и др.]; под ред.

Б.Г. Трусова. М.: Академия, 2014. 282 с.

2.Соммервилл И. Инженерия программного обеспечения. 6-е изд. / пер. с англ. М.: Изд. дом «Вильямс», 2002. 624 с.

18

3. Гецци К., Джазаейри М., Мандриоли Д. Основы инженерии программного обеспечения. 2-е изд. / пер. с англ. СПб.: БХВ-Петербург, 2005. 832 с.

Тема 11. АРХИТЕКТУРНЫЕ СТИЛИ ПРОЕКТИРОВАНИЯ

План

11.1.Типовые архитектурные стили.

11.2.Клиент-серверная архитектура.

11.3.Компонентная архитектура.

11.4.Проблемно ориентированное проектирование.

11.5.Многослойная архитектура.

11.6.Архитектура на основе канала сообщений.

11.7.N-уровневая/3-уровневая архитектура.

11.8.Объектно ориентированная архитектура.

11.9.Сервисно ориентированная архитектура.

11.1. Типовые архитектурные стили

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

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

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

II Часть | пособие Учебное

19

ПРОГРАММНАЯ ИНЖЕНЕРИЯ

взаимодействия на уровне представления может применяться шаблон представления с отделением (разновидность многослойного стиля), такой как Model-View-Controller (MVC).

 

Таблица 11.1

Типовые архитектурные стили

 

 

Архитектурный стиль

Описание

(парадигма)

 

 

 

Клиент-серверная

Система разделяется на клиентскую и серверную ча-

архитектура

сти, где клиент посылает запросы к серверу. Во многих

 

случаях в роли сервера выступает сервер БД, а логика

 

приложения представлена процедурами хранения

 

 

Компонентная архитектура

Дизайн приложения разлагается на функциональные

 

(логические) компоненты, предоставляющие тща-

 

тельно проработанные интерфейсы связи с возмож-

 

ностью их повторного использования

 

 

Проблемно ориентированное

Объектно ориентированный стиль, направленный на

проектирование (дизайн

моделирование сферы деловой активности и опре-

на основе предметной области)

деляющий бизнес-объекты на основании сущностей

 

данной предметной области

 

 

Многослойная архитектура

Функциональные области приложения разделяются

 

на многослойные группы (уровни)

 

 

Архитектура на основе

Стиль, предписывающий использование ПС, которая

канала сообщений

может принимать и отправлять сообщения по одному

 

или более каналам связи. Приложения получают воз-

 

можность взаимодействия, не располагая конкретны-

 

ми сведениями друг о друге

 

 

N-уровневая/3-уровневая

Функциональность выделяется в отдельные сегмен-

архитектура

ты, во многом аналогично многослойному стилю, но

 

сегменты физически располагаются на разных ком-

 

пьютерах (уровнях)

 

 

Объектно ориентированная

Парадигма проектирования, основанная на распре-

архитектура

делении ответственности приложения (системы)

 

между отдельными, многократно используемыми и

 

самостоятельными объектами, содержащими данные

 

и правила поведения

 

 

Сервисно ориентированная

Описывает приложения, предоставляющие и потре-

архитектура(SOA)

бляющие функциональность в виде сервисов с помо-

 

щью контрактов и сообщений

 

 

Также можно выбрать архитектурный стиль SOA и реализовать связь между Web-сервером и сервером приложений посредством обмена сообщениями.

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

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]