Шаг 12.
Унифицированный язык моделирования UML.
Жизненный цикл разработки программного обеспечения

    На этом шаге рассмотрим жизненный цикл разработки программного обеспечения.

    Язык UML в основном независим от организации процесса разработки, то есть не привязан к какому-либо конкретному циклу производства программного продукта, но для того, чтобы в максимальной степени воспользоваться его преимуществами, стоит рассмотреть процесс, который должен быть:

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

    Процесс, сконцентрированный на архитектуре (architecturecentric) – означает, что архитектура системы является первичным рабочим продуктом для процесса концептуализации, конструирования, управления и развития системы во время ее разработки.

    Итеративный (iterative) процесс – тот, который включает управление потоком исполняемых версий системы. Пошаговый (incremental) процесс подразумевает непрерывную интеграцию системной архитектуры в целях выпуска версий, каждая последующая из которых усовершенствована по сравнению с предыдущей. Процесс, являющийся итеративным и пошаговым, называется процессом с управляемым риском (risk-driven), поскольку при выпуске каждой новой версии (релиза) серьезное внимание уделяется выявлению факторов, представляющих наибольший риск для проекта в целом, и сведения их к минимуму.

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


Рис.1. Жизненный цикл разработки программной системы

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

    Начальная фаза (inception) – первая фаза процесса, на протяжении которой начальная идея получает достаточное обоснование (по крайней мере, внутреннее) для обеспечения перехода к фазе разработки.

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

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

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

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

    На следующем шаге рассмотрим определение и причины сложности программного обеспечения.




Предыдущий шаг Содержание Следующий шаг