Архитектура и дизайн программного обеспечения Введение
Архитектура системы описывает ее основные компоненты, их отношения (структуры) и то, как они взаимодействуют друг с другом. Архитектура и дизайн программного обеспечения включают несколько факторов, таких как бизнес-стратегия, атрибуты качества, человеческая динамика, дизайн и ИТ-среда.
Мы можем разделить архитектуру программного обеспечения и дизайн на два отдельных этапа: архитектура программного обеспечения и дизайн программного обеспечения. ВArchitecture, нефункциональные решения формируются и разделяются функциональными требованиями. В дизайне выполняются функциональные требования.
Архитектура программного обеспечения
Архитектура служит blueprint for a system. Он предоставляет абстракцию для управления сложностью системы и создания механизма связи и координации между компонентами.
Он определяет structured solution чтобы соответствовать всем техническим и эксплуатационным требованиям, оптимизируя при этом общие атрибуты качества, такие как производительность и безопасность.
Кроме того, он включает в себя набор важных решений об организации, связанных с разработкой программного обеспечения, и каждое из этих решений может иметь значительное влияние на качество, ремонтопригодность, производительность и общий успех конечного продукта. Эти решения включают:
Выбор структурных элементов и их интерфейсов, из которых состоит система.
Поведение, указанное в сотрудничестве между этими элементами.
Составление этих структурных и поведенческих элементов в большую подсистему.
Архитектурные решения соответствуют бизнес-целям.
Архитектурные стили руководят организацией.
Разработка программного обеспечения
Дизайн программного обеспечения обеспечивает design planэто описывает элементы системы, как они подходят и работают вместе, чтобы выполнить требования системы. Цели наличия плана дизайна заключаются в следующем:
Для согласования системных требований и установления ожиданий с клиентами, маркетингом и управленческим персоналом.
Действуйте как образец в процессе разработки.
Управляйте задачами реализации, включая подробный дизайн, кодирование, интеграцию и тестирование.
Он идет до детального проектирования, кодирования, интеграции и тестирования, а также после анализа предметной области, анализа требований и анализа рисков.
Цели архитектуры
Основная цель архитектуры - выявить требования, влияющие на структуру приложения. Хорошо продуманная архитектура снижает бизнес-риски, связанные с созданием технического решения, и наводит мост между бизнесом и техническими требованиями.
Некоторые из других целей заключаются в следующем -
Раскройте структуру системы, но скройте детали ее реализации.
Реализуйте все варианты использования и сценарии.
Попытайтесь удовлетворить требования различных заинтересованных сторон.
Выполнять как функциональные требования, так и требования к качеству
Уменьшите цель владения и улучшите положение организации на рынке.
Улучшение качества и функциональности, предлагаемых системой.
Повысьте внешнее доверие к организации или системе.
Ограничения
Архитектура программного обеспечения - все еще развивающаяся дисциплина в программной инженерии. Он имеет следующие ограничения -
Отсутствие инструментов и стандартизированных способов представления архитектуры.
Отсутствие методов анализа, позволяющих предсказать, приведет ли архитектура к реализации, отвечающей требованиям.
Незнание важности архитектурного дизайна для разработки программного обеспечения.
Непонимание роли архитектора программного обеспечения и плохая коммуникация между заинтересованными сторонами.
Отсутствие понимания процесса проектирования, опыта проектирования и оценки дизайна.
Роль архитектора программного обеспечения
Архитектор программного обеспечения предоставляет решение, которое техническая группа может создать и спроектировать для всего приложения. Архитектор программного обеспечения должен иметь опыт в следующих областях:
Экспертиза дизайна
Эксперт в разработке программного обеспечения, включая различные методы и подходы, такие как объектно-ориентированный дизайн, дизайн, управляемый событиями и т. Д.
Возглавьте команду разработчиков и координируйте усилия по разработке для целостности дизайна.
Должны быть в состоянии рассматривать предложения по дизайну и находить компромиссы между собой.
Доменная экспертиза
Эксперт по разрабатываемой системе и плану развития программного обеспечения.
Помогите в процессе расследования требований, обеспечивая полноту и последовательность.
Согласовать определение модели предметной области для разрабатываемой системы.
Технологическая экспертиза
Эксперт по имеющимся технологиям, помогающий во внедрении системы.
Координируйте выбор языка программирования, фреймворка, платформ, баз данных и т. Д.
Методологическая экспертиза
Эксперт по методологиям разработки программного обеспечения, которые могут быть приняты во время SDLC (жизненного цикла разработки программного обеспечения).
Выбирайте подходящие подходы к развитию, которые помогают всей команде.
Скрытая роль архитектора программного обеспечения
Облегчает техническую работу членов команды и укрепляет доверительные отношения в команде.
Информационный специалист, который делится знаниями и имеет большой опыт.
Защитите членов команды от внешних сил, которые отвлекут их и снизят ценность проекта.
Результаты работы архитектора
Четкий, полный, последовательный и достижимый набор функциональных целей
Функциональное описание системы с минимум двумя уровнями декомпозиции.
Концепция системы
Дизайн в виде системы, по крайней мере, с двумя уровнями декомпозиции
Понятие сроков, атрибутов оператора, а также планов внедрения и работы
Документ или процесс, обеспечивающий соблюдение функциональной декомпозиции и контролируемую форму интерфейсов.
Атрибуты качества
Качество - это мера совершенства или состояние отсутствия недостатков или дефектов. Атрибуты качества - это системные свойства, которые не связаны с функциональными возможностями системы.
Внедрение атрибутов качества позволяет легче отличить хорошую систему от плохой. Атрибуты - это общие факторы, которые влияют на поведение во время выполнения, дизайн системы и взаимодействие с пользователем.
Их можно классифицировать как -
Статические атрибуты качества
Отражать структуру системы и организации, напрямую связанную с архитектурой, дизайном и исходным кодом. Они невидимы для конечного пользователя, но влияют на стоимость разработки и обслуживания, например: модульность, тестируемость, ремонтопригодность и т. Д.
Атрибуты динамического качества
Отражать поведение системы во время ее выполнения. Они напрямую связаны с архитектурой системы, дизайном, исходным кодом, конфигурацией, параметрами развертывания, средой и платформой.
Они видны конечному пользователю и существуют во время выполнения, например, пропускная способность, надежность, масштабируемость и т. Д.
Сценарии качества
Сценарии качества определяют, как предотвратить превращение неисправности в отказ. Их можно разделить на шесть частей в зависимости от их характеристик атрибутов:
Source - Внутренний или внешний объект, такой как люди, оборудование, программное обеспечение или физическая инфраструктура, которые генерируют стимул.
Stimulus - Условие, которое необходимо учитывать при поступлении в систему.
Environment - Стимул возникает в определенных условиях.
Artifact - Целая система или ее часть, такая как процессоры, каналы связи, постоянное хранилище, процессы и т. Д.
Response - Действия, предпринимаемые после поступления стимула, такие как обнаружение сбоев, восстановление после сбоя, отключение источника событий и т. Д.
Response measure - Следует измерять полученные ответы, чтобы можно было проверить требования.
Общие атрибуты качества
В следующей таблице перечислены общие атрибуты качества, которые должна иметь архитектура программного обеспечения.
Категория | Атрибут качества | Описание |
---|---|---|
Качество дизайна | Концептуальная целостность | Определяет последовательность и согласованность общего дизайна. Это включает способ проектирования компонентов или модулей. |
Ремонтопригодность | Способность системы легко претерпевать изменения. | |
Возможность повторного использования | Определяет возможность использования компонентов и подсистем в других приложениях. | |
Качества времени выполнения | Совместимость | Способность системы или других систем успешно работать, обмениваясь информацией с другими внешними системами, написанными и управляемыми внешними сторонами. |
Управляемость | Определяет, насколько легко системным администраторам управлять приложением. | |
Надежность | Способность системы оставаться в рабочем состоянии с течением времени. | |
Масштабируемость | Способность системы либо справляться с увеличением нагрузки, не влияя на производительность системы, либо возможность быстрого увеличения. | |
Безопасность | Способность системы предотвращать злонамеренные или случайные действия за пределами запланированного использования. | |
Спектакль | Индикация реакции системы на выполнение любого действия в течение заданного интервала времени. | |
Доступность | Определяет время, в течение которого система функционирует и работает. Его можно измерить как процент от общего времени простоя системы за заранее определенный период. | |
Системные качества | Возможность поддержки | Способность системы предоставлять информацию, полезную для выявления и решения проблем, когда она не работает правильно. |
Тестируемость | Мера того, насколько легко создать критерии тестирования для системы и ее компонентов. | |
Качества пользователя | Удобство использования | Определяет, насколько хорошо приложение отвечает требованиям пользователя и потребителя, будучи интуитивно понятным. |
Качество архитектуры | Правильность | Ответственность за выполнение всех требований системы. |
Качество не во время выполнения | Портативность | Способность системы работать в различных вычислительных средах. |
Целостность | Возможность заставить отдельно разработанные компоненты системы корректно работать вместе. | |
Возможность модификации | Легкость, с которой каждая программная система может вносить изменения в свое программное обеспечение. | |
Атрибуты качества бизнеса | Стоимость и график | Стоимость системы с учетом времени вывода на рынок, ожидаемого срока службы проекта и использования наследия. |
Товарность | Использование системы применительно к рыночной конкуренции. |