Применение UML в жизненном цикле проектов

Источник: ciru/
Александр Мищук, SoftScribe International

По словам одного из "отцов" UML и создателя методологии OOSE (Object Oriented Software Engineering) Айвара Якобсона, специализирующегося на исследовании жизненных циклов проектов: «При разработке, с течением времени, беспорядок (хаос) в разрабатываемой системе не уменьшается, а только остается неизменным или увеличивается. Накапливаясь, он может существенно ухудшить качество продукта и даже сделать программную систему неработоспособной. Поэтому одной из важнейших задач при разработке становится уменьшение количества ошибок, вносимых в систему. При этом значительно возрастает роль стадий проекта, предшествующих его непосредственной реализации».

В прошлых статьях («КИ» /18-20) мы рассказали об истории создания языка UML и его назначении. В данной статье рассмотрим его применение в жизненном цикле разработки программных систем.

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

Цели стадии анализа требований состоят в том, чтобы понять процессы, которые управляют предприятием или системой, определить область деятельности системы и требования пользователя. Система рассматривается с точки зрения конечного пользователя как «черный ящик», составляется представление, что система будет делать, не рассматривая, как она это будет делать.

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

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

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

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

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

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

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

В течение стадии реализации, модели, созданные на стадиях проектирования системы, переводятся в исходный код 3GL или 4GL языков программирования и разрабатывается база данных системы.

Средства автоматической кодогенерации позволяют перевести модели на языке UML в исходный код выбранного языка программирования. CASE-средства, поддерживающие UML (Rational Rose, Paradigm Plus, Select Enterprise, Microsoft Visual Modeler for Visual Basic и др.), дают возможность работать со множеством языков программирования, таких как C++, Java, Delphi, Power Builder, Visual Basic, Centura, Forte, Ada, Smalltalk и других, а также осуществлять генерацию базы данных на большинстве из существующих SQL-серверов. Модели, разработанные в UML, позволяют значительно упростить процесс кодирования и направить усилия программистов непосредственно на реализацию системы.

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

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

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

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

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


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=4818