Управляйте требованиями
Сложность управления требованиями программных систем состоит в их динамичности. В процессе развития проекта они могут измениться. Более того, определение действительных требований системы — необходимых для достижения экономических и технических целей системы — является непрерывным процессом. Целиком определить системные требования до начала процесса разработки можно только для тривиальных систем. Действительно, при видоизменениях новой или модернизированной системы меняется и понимание пользователем требований к ней.
Требование — это условие или характеристика, которой должна соответствовать система. Активное управление требованиями включает три вида деятельности: установление, упорядочение и документирование функциональных возможностей и ограничений системы; оценка изменений требований и определение их влияния на систему; отслеживание и документирование решений и компромиссов.
Управление требованиями проекта предлагает множество решений, устраняющих основные причины проблем в процессе разработки программного обеспечения.
|
|
Визуализация, спецификация, создание и документирование программной системы — все это зависит от вида системы с различных точек зрения. Каждая из заинтересованных сторон — конечных пользователей, аналитиков, разработчиков, системных интеграторов, испытателей, технических редакторов и руководителей проекта— привносит свое видение проекта, причем каждый из них видит систему с какой-то своей точки зрения, которая, к тому же, может меняться в процессе развития проекта. Поэтому системная архитектура— это, вероятно, важнейший компонент, который может использоваться для управления этими различными точками зрения и, в связи с этим, управлять наращиваемым итеративным развитием системы во время ее жизненного цикла.
Системная архитектура включает решения относительно
• организации программной системы;
• выбора структурных элементов и их интерфейсов при формировании системы;
• поведения этих структурных элементов, обусловленного их совместной работой;
• формирования из структурных элементов и линий их поведения постепенно укрупняющихся подсистем;
• архитектурного стиля, направляющего структуру, состоящую из элементов и их интерфейсов, а также их совместной работы и объединения.
Архитектура программного обеспечения связана не только с вопросами структуры и поведения, но также с вопросами использования, функциональных возможностей, производительности, эластичности, повторного использования, понятности, экономических и технологических ограничений, компромиссов, а также вопросами эстетики.
|
|
Эластичность архитектуры характеризуется экономической возможностью повторного использования системы, что, в свою очередь, позволяет очевидным образом разделить работу между командами разработчиков, выделить зависимости от аппаратного и программного обеспечения, которые могут подвергаться изменениям, и сделать эксплуатацию более удобной.
Важным подходом к архитектуре программного обеспечения является модульная разработка (component-based development— CBD), позволяющая повторно использовать или настраивать компоненты из множества коммерчески доступных источников. Модель компонентных объектов (component object model - СОМ) корпорации Microsoft, архитектура CORBA (Common Object Request Broker Architecture) группы Object Management Group и Enterprise JavaBeans (EJB) от компании Sun Microsystems — вот примеры распространенных и широко поддерживаемых платформ, на которых может использоваться модульная архитектура. Компоненты делают возможным повторное использование в значительных масштабах, позволяют системам складываться из существующих частей, готовых частей от сторонних производителей и нескольких новых, которые относятся к определенным областям и объединяют остальные части.
Итеративная разработка программного обеспечения с использованием модульной архитектуры связана с непрерывным развитием архитектуры системы. При каждой итерации создается реализуемая архитектура, которую можно измерить, протестировать и оценить по отношению к системным требованиям. Кроме того, этот подход позволяет команде непрерывно бороться с важнейшими рисками проекта.
Использование модульной архитектуры предлагает множество решений, устраняющих основные проблемы в процессе разработки программного обеспечения.
1. Модули способствуют эластичности архитектуры.
2. При внесении изменений модульная структура позволяет явно разделить обязанности между элементами системы.
3. Благодаря стандартизованным конструкциям (таким, как СОМ+, CORBA и EJB) и коммерчески доступным компонентам возможно повторное использование системы.
4. На основе модулей естественным образом организовывается управление конфигурацией.
5. Средства визуального моделирования автоматизируют модульную разработку.