Архитектура и дизайн программного обеспечения Введение

Архитектура системы описывает ее основные компоненты, их отношения (структуры) и то, как они взаимодействуют друг с другом. Архитектура и дизайн программного обеспечения включают несколько факторов, таких как бизнес-стратегия, атрибуты качества, человеческая динамика, дизайн и ИТ-среда.

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

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

Архитектура служит blueprint for a system. Он предоставляет абстракцию для управления сложностью системы и создания механизма связи и координации между компонентами.

  • Он определяет structured solution чтобы соответствовать всем техническим и эксплуатационным требованиям, оптимизируя при этом общие атрибуты качества, такие как производительность и безопасность.

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

    • Выбор структурных элементов и их интерфейсов, из которых состоит система.

    • Поведение, указанное в сотрудничестве между этими элементами.

    • Составление этих структурных и поведенческих элементов в большую подсистему.

    • Архитектурные решения соответствуют бизнес-целям.

    • Архитектурные стили руководят организацией.

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

Дизайн программного обеспечения обеспечивает design planэто описывает элементы системы, как они подходят и работают вместе, чтобы выполнить требования системы. Цели наличия плана дизайна заключаются в следующем:

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

  • Действуйте как образец в процессе разработки.

  • Управляйте задачами реализации, включая подробный дизайн, кодирование, интеграцию и тестирование.

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

Цели архитектуры

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

Некоторые из других целей заключаются в следующем -

  • Раскройте структуру системы, но скройте детали ее реализации.

  • Реализуйте все варианты использования и сценарии.

  • Попытайтесь удовлетворить требования различных заинтересованных сторон.

  • Выполнять как функциональные требования, так и требования к качеству

  • Уменьшите цель владения и улучшите положение организации на рынке.

  • Улучшение качества и функциональности, предлагаемых системой.

  • Повысьте внешнее доверие к организации или системе.

Ограничения

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

  • Отсутствие инструментов и стандартизированных способов представления архитектуры.

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

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

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

  • Отсутствие понимания процесса проектирования, опыта проектирования и оценки дизайна.

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

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

Экспертиза дизайна

  • Эксперт в разработке программного обеспечения, включая различные методы и подходы, такие как объектно-ориентированный дизайн, дизайн, управляемый событиями и т. Д.

  • Возглавьте команду разработчиков и координируйте усилия по разработке для целостности дизайна.

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

Доменная экспертиза

  • Эксперт по разрабатываемой системе и плану развития программного обеспечения.

  • Помогите в процессе расследования требований, обеспечивая полноту и последовательность.

  • Согласовать определение модели предметной области для разрабатываемой системы.

Технологическая экспертиза

  • Эксперт по имеющимся технологиям, помогающий во внедрении системы.

  • Координируйте выбор языка программирования, фреймворка, платформ, баз данных и т. Д.

Методологическая экспертиза

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

  • Выбирайте подходящие подходы к развитию, которые помогают всей команде.

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

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

  • Информационный специалист, который делится знаниями и имеет большой опыт.

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

Результаты работы архитектора

  • Четкий, полный, последовательный и достижимый набор функциональных целей

  • Функциональное описание системы с минимум двумя уровнями декомпозиции.

  • Концепция системы

  • Дизайн в виде системы, по крайней мере, с двумя уровнями декомпозиции

  • Понятие сроков, атрибутов оператора, а также планов внедрения и работы

  • Документ или процесс, обеспечивающий соблюдение функциональной декомпозиции и контролируемую форму интерфейсов.

Атрибуты качества

Качество - это мера совершенства или состояние отсутствия недостатков или дефектов. Атрибуты качества - это системные свойства, которые не связаны с функциональными возможностями системы.

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

Их можно классифицировать как -

Статические атрибуты качества

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

Атрибуты динамического качества

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

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

Сценарии качества

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

  • Source - Внутренний или внешний объект, такой как люди, оборудование, программное обеспечение или физическая инфраструктура, которые генерируют стимул.

  • Stimulus - Условие, которое необходимо учитывать при поступлении в систему.

  • Environment - Стимул возникает в определенных условиях.

  • Artifact - Целая система или ее часть, такая как процессоры, каналы связи, постоянное хранилище, процессы и т. Д.

  • Response - Действия, предпринимаемые после поступления стимула, такие как обнаружение сбоев, восстановление после сбоя, отключение источника событий и т. Д.

  • Response measure - Следует измерять полученные ответы, чтобы можно было проверить требования.

Общие атрибуты качества

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

Категория Атрибут качества Описание
Качество дизайна Концептуальная целостность Определяет последовательность и согласованность общего дизайна. Это включает способ проектирования компонентов или модулей.
Ремонтопригодность Способность системы легко претерпевать изменения.
Возможность повторного использования Определяет возможность использования компонентов и подсистем в других приложениях.
Качества времени выполнения Совместимость Способность системы или других систем успешно работать, обмениваясь информацией с другими внешними системами, написанными и управляемыми внешними сторонами.
Управляемость Определяет, насколько легко системным администраторам управлять приложением.
Надежность Способность системы оставаться в рабочем состоянии с течением времени.
Масштабируемость Способность системы либо справляться с увеличением нагрузки, не влияя на производительность системы, либо возможность быстрого увеличения.
Безопасность Способность системы предотвращать злонамеренные или случайные действия за пределами запланированного использования.
Спектакль Индикация реакции системы на выполнение любого действия в течение заданного интервала времени.
Доступность Определяет время, в течение которого система функционирует и работает. Его можно измерить как процент от общего времени простоя системы за заранее определенный период.
Системные качества Возможность поддержки Способность системы предоставлять информацию, полезную для выявления и решения проблем, когда она не работает правильно.
Тестируемость Мера того, насколько легко создать критерии тестирования для системы и ее компонентов.
Качества пользователя Удобство использования Определяет, насколько хорошо приложение отвечает требованиям пользователя и потребителя, будучи интуитивно понятным.
Качество архитектуры Правильность Ответственность за выполнение всех требований системы.
Качество не во время выполнения Портативность Способность системы работать в различных вычислительных средах.
Целостность Возможность заставить отдельно разработанные компоненты системы корректно работать вместе.
Возможность модификации Легкость, с которой каждая программная система может вносить изменения в свое программное обеспечение.
Атрибуты качества бизнеса Стоимость и график Стоимость системы с учетом времени вывода на рынок, ожидаемого срока службы проекта и использования наследия.
Товарность Использование системы применительно к рыночной конкуренции.