Основные определения:
Технология создания ПО (ТС ПО) - это упорядоченная совокупность взаимосвязанных технологических процессов в рамках ЖЦ ПО.
Технологический процесс - это совокупность взаимосвязанных технологических операций.
Технологическая операция - это основная единица работы, выполняемая определенной ролью, которая:
Рабочий продукт - информационная или материальная сущность, которая создается, модифицируется или используется в некоторой технологической операции (модель, документ, код, тест и т.п.).
Роль - определение поведения и обязанностей отдельного лица или группы лиц в среде организации-разработчика ПО, осуществляющих деятельность в рамках некоторого технологического процесса и ответственных за определенные рабочие продукты.
Руководство - практическое руководство по выполнению одной или совокупности технологических операций. Руководства включают методические материалы, инструкции, нормативы, стандарты и критерии оценки качества рабочих продуктов.
![]() |
Основным требованием, предъявляемым к современным ТС ПО, является их соответствие стандартам жизненного цикла (ЖЦ) ПО и оценкой технологической зрелости организаций-разработчиков (ISO 12207, ISO 9000, CMM и др.). Согласно этим нормативам, ТС ПО должна поддерживать полный набор процессов ЖЦ, к которым относятся:
Полнота поддержки процессов ЖЦ ПО должна поддерживаться комплексом инструментальных средств (CASE-средств). Также есть ряд других требований:
В качестве примера ТС ПО рассмотрим Rational Unified Process (RUP).
RUP является развитием процесса разработки, принятого в компании Ericsson в 70-х-80-х годах XX века. Эта модель была создана Джекобсоном (Ivar Jacobson), впоследствии, в 1987, основавшим
собственную компанию Objectory AB именно для развития технологического процесса разработки ПО как отдельного продукта, который можно было бы переносить в другие организации. После вливания
Objectory в Rational в 1995 разработки Джекобсона были интегрированы с работами Ройса (Walker Royce), Крачтена (Philippe Kruchten) и Буча (Grady Booch), а также с развивавшимся параллельно
универсальным языком моделирования (Unified Modeling Language, UML).
RUP в значительной степени соответствует указанным выше требованиям. Основными принципами RUP являются:
На следующей странице на рисунке показано общее представление RUP в двух измерениях («диаграмма с горбами»):
Форма горбов является примерной, не воспринимайте диаграмму буквально.
Динамический аспект
Согласно технологии RUP, ЖЦ ПО разбивается на отдельные циклы, в каждом из которых создается новое поколение продукта. Каждый цикл, в свою очередь, разбивается на четыре последовательные стадии:
начальная стадия (inception);
стадия разработки (elaboration);
стадия конструирования (construction);
стадия ввода в действие (transition).
RUP не вполне соответствует стандарту 12207, в том смысле, что жизненный цикл RUP не включает сопровождение. Это скорее цикл создания программного средства. Существует технология EUP (корпоративный унифицированный процесс), общее представление которой включает дополнительные две стадии (эксплуатация и вывод из использования) и дополнительные два основных процесса (поддержка и корпоративное управление) и тем самым исправляет недостаток RUP.
Рис. Общее представление RUP
Каждая стадия завершается в четко определенной контрольной точке (milestone). В этот момент времени должны достигаться важные результаты и приниматься критически важные решения о дальнейшей разработке.
Первыми двумя стадиями являются начальная стадия проекта и разработка. Во время начальной стадии вырабатывается бизнес-план проекта, определяется, сколько приблизительно он будет стоить и какой доход принесет. Определяются также границы проекта, и выполняется некоторый начальный анализ для оценки размеров проекта.
Результатами начальной стадии являются:
На стадии разработки выявляется большая часть требований к системе, выполняется анализ и проектирование для построения базовой архитектуры системы, которая может в дальнейшем лишь незначительно меняться, создается план конструирования и предпринимаются меры против наибольших рисков проекта.
Результатами стадии разработки являются:
Стадия разработки занимает около пятой части общей продолжительности проекта.
RUP представляет собой итерационный процесс разработки, в котором система разрабатывается и реализуется по частям. На стадии конструирования построение системы выполняется в течение нескольких итераций. Каждая итерация является своего рода мини-проектом. На каждой итерации для конкретных вариантов использования выполняются анализ, проектирование, кодирование, тестирование и интеграция («мини-каскад»). Итерация завершается демонстрацией результатов пользователям и выполнением системных тестов для контроля корректности реализации.
При итеративной разработке на каждой итерации выполняются все процессы ЖЦ, что позволяет оперативно справляться со всеми возникающими проблемами. Итерации на стадии конструирования являются одновременно инкрементными и повторяющимися. В конце каждой итерации должна выполняться полная интеграция. Интеграция может выполняться чаще. Приложения следует интегрировать после выполнения каждой сколько-нибудь значительной части работы. Во время каждой интеграции должен выполняться полный набор тестов.
Особенность итерационной разработки заключается в том, что она жестко ограничена временными рамками. Сдвигать сроки недопустимо. Смысл таких ограничений в поддержании строгой дисциплины разработки и не допускать выхода проекта из-под контроля.
Результатом стадии конструирования является начальная эксплуатационная версия программного продукта, готовая к передаче конечным пользователям. В её составе содержится как минимум следующее:
Назначением стадии ввода в действие является доводка начальной эксплуатационной версии и передача готового продукта в распоряжение пользователей. Данная стадия включает:
На стадии ввода в действие продукт не дополняется никакой новой функциональностью. Во время нее только вылавливаются ошибки, шлифуется качество.
Примерное соотношение по трудоёмкости (в человеко-часах) между стадиями представлено на диаграмме.
Статический аспект
Статический аспект RUP представлен четырьмя основными элементами:
Понятие «роль» (role) определяет поведение и ответственность личности или группы личностей, составляющих проектную команду. Одна личность может играть в проекте много различных ролей.
Видом работы конкретного исполнителя понимается элементарная работа - технологическая опреация, выполняемая им.
Дисциплина (discipline) соответствует понятию технологического процесса (или процесса ЖЦ) и представляет собой последовательность работ, приводящую к получению значимого результата.
В рамках RUP определены шесть основных дисциплин:
и три вспомогательных:
Можно видеть, что процессов ЖЦ в RUP меньше, чем в стандарте ISO 12207. например, отсутствует сопровождение.
По большей части, содержание основных дисциплин мы рассмотрели на предыдущих лекциях. Повторим кратко.
Задачи построения бизнес-моделей - понять предметную область или бизнес-контекст, в которых должна будет работать система, и убедиться, что все заинтересованные лица понимают его одинаково, осознать имеющиеся проблемы, оценить их возможные решения и их последствия для бизнеса организации, в которой будет работать система. В рамках этой дисциплины создаются следующие рабочие продукты:
Полученные модели служат основой для моделей требований и анализа. Подробно дисциплина рассматривалась на лекции «Моделирование бизнес-процессов».
Задачи определения требований - понять, что должна делать система, и убедиться во взаимопонимании по этому поводу между заинтересованными лицами, определить границы системы и основу для планирования проекта и оценок затрат ресурсов в нем.
Требования принято фиксировать в виде модели вариантов использования и различных документов: описаний вариантов использования, концепции системы, глоссария системы, дополнительной спецификации, отражающей нефункциональные требования. Подробно дисциплина рассматривалась на лекции «Требования к программному обеспечению».
Задачи анализа и проектирования - выработать архитектуру системы на основе требований, убедиться, что данная архитектура может быть основой работающей системы в контексте ее будущего использования. В результате должна появиться модель проектирования, включающая в себя диаграммы классов системы, диаграммы ее пакетов (подсистем), диаграммы взаимодействия между объектами в ходе реализации вариантов использования, диаграммы состояний для отдельных объектов и диаграммы деятельности, описывающие методы реализации операций некоторых классов, а также модель (диаграмму) развертывания и документ - описание архитектуры. Подробное рассмотрение дисциплины см. в лекциях 7, 8 и 9.
Дисциплина реализации решает следующие задачи - определить структуру исходного кода системы, разработать код ее компонентов и протестировать их, интегрировать систему в работающее целое. Она включает в себя:
Реализацию архитектуры осуществляет архитектор. Заключается она в трассировке проектных классов, пакетов и подсистем в компоненты и установлении связей (зависимостей) между компонентами.
План сборки описывает функциональность, которая должна быть реализована в билде (сборке) и те компоненты, которые входят в билд. Планы составляет системный интегратор.
За реализацию кода отвечает инженер по компонентам.
Покомпонентное тестирование - это раздельное тестирование компонент системы. Осуществляет его инженер по компонентам путем тестирования спецификации («черный ящик») и тестирования структуры («белый ящик»).
Дисциплина тестирования решает следующие задачи - найти и описать дефекты системы (проявления недостатков ее качества), оценить ее качество в целом, оценить выполнены или нет гипотезы, лежащие в основе проектирования, оценить степень соответствия системы требованиям. Она включает в себя:
Тестовый вариант включает входные данные, условия выполнения отдельных шагов и корректные ответы системы для всякого шага, на котором ответ системы можно наблюдать. С вариантом тестирования связан один или более тестовых сценариев.
Тестовый сценарий - способ выполнения одного или нескольких тестовых наборов в рамках тестового варианта. Выполняется вручную или автоматически.
Тестовые варианты и сценарии разрабатываются инженерами по тестированию. Некоторые тестовые варианты предназначены для интеграционного тестирования, они проверяют целостность сборки, т. е. правильность взаимодействия компонент, вошедших в сборку. За тестирование целостности отвечает тестировщик целостности. Другие тестовые варианты используются при системном тестировании - проверке правильности работы системы в целом. За него отвечает системный тестировщик. Помимо этого применяются другие виды тестирования:
Дисциплина развертывания решает следующие задачи - установить систему в ее рабочем окружении и оценить ее работоспособность на том месте, где она должна будет работать.
Управление конфигурациями и изменениями решает следующие задачи - определение элементов, подлежащих хранению в репозитории проекта и правил построения из них согласованных конфигураций, поддержание целостности текущего состояния системы, проверка согласованности вносимых изменений.
Управление проектом решает следующие задачи - планирование, управление персоналом, обеспечение взаимодействия на благо проекта между всеми заинтересованными лицами, управление рисками, отслеживание текущего состояния проекта.
Создание инфраструктуры решает следующие задачи - подстройка процесса под конкретный проект, выбор и замена технологических инструментов, используемых в проекте.
RUP опирается на интегрированный комплекс инструментальных средств, обеспечивающий поддержку всех процессов жизненного цикла.