Почему при выборе стандарта, определяющего процесс управления конфигурацией, для подробного рассмотрения мы остановились на стандарте ГОСТ Р ИСО/МЭК 12207 «Информационные технологии. Процессы жизненного цикла программных средств»? Для этого есть несколько важных причин:
Стандарт ГОСТ Р ИСО/МЭК 12207 является российским стандартом, официально введенным в действие на территории Российской Федерации.
Рассматриваемый стандарт является переводом одного из наиболее популярных международных стандартов в сфере информационных технологий – ISO/IEC 12207:1995 (ISO/IEC12207) Standard for Information Technology - Software Lifecycle Processes.
Популярные методологии разработки ПС (такие как Rational Unified Process) основываются на ISO/IEC 12207:1995 (ISO/IEC12207) Standard for Information Technology - Software Lifecycle Processes.
Прежде чем переходить непосредственно к процессу управления конфигурацией, определяемому в данном стандарте, рассмотрим кратко стандарт в целом.
Российский стандарт ГОСТ Р ИСО/МЭК 12207 рассматривает процессы жизненного цикла (ЖЦ) программных средств (ПС) и подразделяет их на три группы:
Основные.
Вспомогательные.
Организационные.
Процесс конфигурационного управления определяется как вспомогательный процесс (см. рис. 1).
Рис. 1. Процессы жизненного цикла ПС по ГОСТ Р ИСО/МЭК 12207.
Стандарт ГОСТ Р ИСО/МЭК 12207 устанавливает общую структуру процессов жизненного цикла (ЖЦ) программных средств (ПС), определяет процессы, работы и задачи, выполняемые в ходе ЖЦ ПС. Данный процесс состоит из следующих работ:
подготовка процесса;
определение конфигурации;
контроль конфигурации;
учет состояний конфигурации;
оценка конфигурации;
управление выпуском и поставка.
Подготовка процесса Должен быть разработан план управления конфигурацией. План должен определять:
работы по управлению конфигурацией;
процедуры и график выполнения данных работ;
организацию(и), ответственную(ые) за выполнение данных работ;
связь данной организации(й) с другими организациями, например, по разработке и сопровождению программных средств.
План должен быть документально оформлен и выполнен. Примечание: Данный план может быть частью плана управления конфигурацией системы.
Должна быть определена схема обозначения программных объектов и их версий (объектов программной конфигурации), которые контролируются при реализации проекта. Для каждого программного объекта и его версий должны быть определены: документация, в которой фиксируется состояние его конфигурации; эталонные версии и другие элементы обозначения.
Анализ и оценка изменений; принятие или непринятие заявки; реализация, верификация и выпуск измененного программного объекта. Для каждого изменения должны отслеживаться проводимые аудиторские проверки, посредством которых анализируется каждое изменение, его причина и разрешение на его внесение. Должны быть выполнены контроль и аудиторская проверка всех доступных контролю программных объектов, которые связаны с критическими функциями безопасности или защиты.
Должны быть подготовлены протоколы управления и отчеты о состоянии, которые отражают состояние и хронологию изменения контролируемых программных объектов, включая состояние их конфигурации. Отчеты о состоянии должны включать количество изменений в данном проекте, последние версии программных объектов, обозначения выпушенных версий, количество выпусков и сравнения программных объектов различных выпусков.
Должны быть определены и обеспечены: функциональная законченность программных объектов с точки зрения реализации установленных к ним требований; физическая завершенность программных объектов с точки зрения реализации в проекте и программах всех внесенных изменений.
Должны официально контролироваться выпуск и поставка программных продуктов вместе с соответствующей документацией. Оригиналы программ и документации должны сопровождаться в жизненном цикле. Программы и документация, связанные с обеспечением критических функций безопасности или защиты, должны обрабатываться, храниться, упаковываться и поставляться в соответствии с установленными правилами
Управление конфигурацией с точки зрения Capability Maturity Model CMM (Capability Maturity Model) — модель зрелости процессов создания ПО, или эволюционная модель развития способности компании разрабатывать качественное программное обеспечение.
Изначально CMM разрабатывалась и развивалась как методика, позволяющая крупным правительственным организациям США выбирать наилучших поставщиков ПО. Для этого предполагалось создать исчерпывающее описание способов оценки процессов разработки ПО и методики их дальнейшего усовершенствования. В итоге авторам удалось достичь такой степени подробности и детализации, что стандарт оказался пригодным и для обычных компаний-разработчиков, стремящихся качественно улучшить существующие процессы разработки, привести их к определенным стандартам.
Ключевым понятием стандарта является зрелость организации. Незрелой считается организация, в которой процесс разработки программного обеспечения зависит только от конкретных исполнителей и менеджеров, а решения зачастую просто импровизируются «на ходу» — то, что на современном языке называется творческим подходом, или искусством. В этом случае велика вероятность превышения бюджета или выхода за рамки сроков сдачи проекта, поэтому менеджеры и разработчики вынуждены заниматься только разрешением актуальных проблем, становясь тем самым заложниками собственного программного продукта. К сожалению, на данном этапе развития находится большинство компаний (по градации CMM этот уровень обозначается числом 1).
В зрелой организации, напротив, имеются четко определенные процедуры создания программных продуктов и отработанные механизмы управления проектами. Все процедуры и механизмы по мере необходимости уточняются и совершенствуются в пилотных проектах. Оценки времени и стоимости выполнения работ основываются на накопленном опыте и достаточно точны. Наконец, в компании существуют стандарты на процессы разработки, тестирования и внедрения, а также правила оформления конечного программного кода, компонентов, интерфейсов и т.д. Все это составляет инфраструктуру и корпоративную культуру, поддерживающую процесс разработки программного обеспечения. Технология выпуска будет лишь незначительно меняться от проекта к проекту на основании абсолютно стабильных и проверенных подходов.
CMM определяет пять уровней зрелости организаций. В результате аттестации компании присваивается определенный уровень, который в дальнейшем может повышаться или понижаться. Следует отметить, что каждый следующий уровень включает в себя все ключевые характеристики предыдущих.
(1) Начальный уровень (initial level) — это основной стандарт. К данному уровню, как правило, относится любая компания, которой удалось получить заказ, разработать и передать заказчику программный продукт. Предприятия первого уровня не отличаются стабильностью разработок. Как правило, успех одного проекта не гарантирует успешность следующего. Для компаний данного уровня свойственны неравномерность процесса разработки — наличие авралов в работе. К этой категории можно отнести любую компанию, которая хоть как-то исполняет взятые на себя обязательства.
(2) Повторяемый уровень (repeatable level). Данному уровню соответствуют предприятия, обладающие определенными технологиями управления проектами. Планирование и управление в большинстве случаев основывается на имеющемся опыте. Как правило, в компании данного уровня уже выработаны внутренние стандарты и организованы специальные группы проверки качества.
(3) Определенный уровень (defined level). Уровень характеризуется наличием формального подхода к управлению (то есть описаны все типичные действия, необходимые для многократного повторения: роли участников, форматы документов, производимые действия и пр.). Для создания и поддержания подобного стандарта в актуальном состоянии в организации уже подготовлена специальная группа. Компания постоянно проводит специальные тренинги для повышения профессионального уровня своих сотрудников. Начиная с этого уровня организация перестает зависеть от личностных качеств конкретных разработчиков и не имеет тенденции скатываться на нижестоящие уровни. Абстрагирование от разработчиков обусловлено продуманным механизмом постановки задач и контроля исполнения.
(4) Управляемый уровень (managed level). Уровень, при котором устанавливаются количественные показатели качества.
(5) Оптимизирующий уровень (optimizing level) характеризуется тем, что мероприятия по совершенствованию рассчитаны не только на существующие процессы, но и на оценку эффективности ввода новых технологий. Основной задачей всей организации на этом уровне является постоянное совершенствование существующих процессов, которое в идеале призвано способствовать предупреждению возможных ошибок или дефектов. Применяется механизм повторного использования компонентов от проекта к проекту, например шаблоны отчетов, форматы требований.
Из градации уровней видно, что технологические требования сохраняются только до 3-го уровня, далее же в основном следуют требования к административному управлению. То есть уровни 4 и 5 по большей части управленческие и для их достижения важно не только выпустить программный продукт, но и проанализировать ход проекта, а также построить планы на будущий проект, основываясь на текущих шаблонах. Применение данных подходов должно обеспечить планомерно-плавное улучшение используемых процессов.
Пока в России знают только аббревиатуру СММ, но не представляют себе, каким образом можно добиться качественного скачка. И дело не только в том, что неизвестно направление этого скачка, а в том, что каждой отдельно взятой компании довольно трудно выстроить свои процессы под требования CMM самостоятельно, без внешнего вмешательства. А зачем изобретать велосипед? Не проще ли взять готовый набор решений оптимизации (например, Rational Unified Process), внедрить его (здесь уже можно и своими силами обойтись), получив готовый набор решений для качественного построения ПО, а уж затем приглашать специалистов и аттестоваться на определенный уровень? Как мы уже не раз упоминали в данной статье, Rational гарантирует получение 3-го уровня СММ.
На Западе сегодня уже широко используют для оптимизации процесса выпуска ПО технологии компании Rational Software. Причин тому несколько: во-первых, Rational Software — практически единственная компания, которая четко описала весь производственный цикл по выпуску программного обеспечения (Rational Unified Process), определила все возможные виды документов, сопровождающие проект, строго расписала роли (входные/выходные документы, шаблоны документов и пр.) каждого участника проекта. Во-вторых, компания создала специальное программное обеспечение для качественного исполнения как каждого этапа в отдельности, так и всего проекта в целом. Важно и то, что Rational посредством RUP предлагает перейти от программирования как искусства к программированию как к науке, где все понятно и прозрачно благодаря научному подходу к разработке. По некоторым оценкам западных аналитиков, соотношение возврата капитала до и после внедрения качественных процессов варьируется от 5:1 до 8:1.
Configuration and Change Management с точки зрения CMM и RUP Итак, мы уже коснулись требований к качественности процессов, а сейчас рассмотрим, как RUP регламентирует достижение необходимого качества. Поговорим о той части RUP, которая описывает конфигурационное управление.
Основная задача конфигурационного управления ПО — установление и поддержание целостности проектных данных на протяжении всего жизненного цикла развития проекта.
Конфигурационное управление участвует в идентификации конфигурации выпускаемого ПО (то есть в выборе программного продукта и в его описании) в срок. SCM (Source Configuration Management) обеспечивает систематизированное управление изменениями конфигурации, поддержание их целостности и актуальности на протяжении всего жизненного цикла проекта. Результаты разработки, которые поставляются клиенту, находятся под управлением конфигурационной системы. Также под ее управлением находятся все документы и результаты компиляции (документы требований, отчеты, исходные данные на любом языке программирования).
Библиотеки базовых линий должны быть установлены и содержать работающие версии релизов. Под базовыми линиями здесь и далее понимается набор версий исходных файлов, составляющих конкретную версию откомпилированного релиза. Изменения базовых линий программного продукта, построенных на основе библиотеки базовых линий, должны быть управляемыми посредством контроля изменений и конфигурационного аудита функций в SCM, что полностью обеспечивается продуктом Rational ClearCase (версионное управление).
Все данные из ключевых областей процесса (Key Process Area) охватывают возможные методы исполнения функции конфигурационного управления. В СММ все качественные требования представляются именно как KPA. Каждый из этих методов четко описывает определенный участок с формализованными требованиями, а RUP способен привести этот участок в соответствие означенному требованию.
Механизмы, идентифицирующие определенные единицы конфигурации, содержатся в KPA и описывают развитие и сопровождение каждой единицы конфигурации (исходные тексты, картинки, документация и пр.).
Ниже приведены требования CMM к процессу конфигурационного управления. Это требования 2 и 3 уровней. Хочется отметить, что внедрение СС в соответствии с RUP автоматически дает уровень 3 качества процесса.
Цели процесса УК: 1. Управление конфигурацией происходит на плановой основе 2. Все изменения происходят управляемо
Обязательства по выполнению 1. Проект следует документированной организационной политике 1.1. Есть ответственные за выполнение проекта 1.2. УК реализуется на протяжении всего жизненного цикла (см. руп) 1.3. УК реализуется для конечных продуктов, промежуточных, экспериментальных и перспективных 1.4. Все проекты имеют собственный репозиторий 1.5. На регулярной основе проводится аудит базовых линий 1.6. На регулярной основе проводится аудит работ по управлению УК 2. Должна существовать комиссия по управлению БЛ 2.1. (задача 1) Санкционированное создание БЛ 2.2. (задача 2) Представлять интересы менеджера проекта и групп 2.3. (задача 3) Ревизия и изменение БЛ 2.4. (задача 4) Создание продуктов из БЛ 3. Необходима группа, отвечающая за координацию и реализацию УК 3.1. Создание библиотеки БЛ и управление ей 3.2. Разработка, сопровождение и распространение планов и стандартов УК 3.3. Идентификация набора продукта (под контролем) 3.4. Управление доступом к элементам 3.5. Обновление БЛ 3.6. Создание продуктов из БЛ 3.7. Запись действий по УК 3.8. Создание отчетов 4. Работы по УК должны быть обеспечены ресурсами 4.1. Назначение менеджера УК 4.2. Назначение администратора УК 4.3. Работы обеспечены инстр. Средствами и аппаратурой 5. Участники УК должны пройти обучение целям, процедурам и методам выполнения работ по УК 6. Члены группы разработки ПО должны пройти обучение по выполнению своих задач
Операции 1. Для каждого проекта готовится план УК 1.1. План разрабатывается на ранних стадиях общего планирования проекта 1.2. План рассматривается задействованными группами и рецензируется ими 1.3. План должен быть доступен, управляем и конфигурируем 2. Документированный и утвержденный план УК используется в качестве основы для всех действий (охватывает следующие вопросы) 2.1. Выполняемые работы по УК 2.2. График работ 2.3. Сферы ответственности 2.4. Ресурсы 2.5. Требования и работы по УК, выполняемые группой разработки ПО и смежными группами 3. Устанавливается библиотечная система УК, служащая репозиторием БЛ (задачи) 3.1. Многоуровневая поддержка контроля УК 3.2. Хранение и извлечение элементов конфигурации 3.3. Совместное использование элементов группами 3.4. Помощь в применении производственных стандартов УК 3.5. Хранение и извлечение архивных версий 3.6. Обеспечение корректного создания продуктов 3.7. Хранение и обновление записей по УК 3.8. Поддержка создания отчетов 3.9. Поддержка структуры и содержимого библиотеки 4. Идентификация промежуточных программных продуктов, находящихся в системе УК 4.1. Выбор элементов на основании документированных критериев 4.2. Элементам репозитория назначаются уникальные идентификаторы 4.3. Определяются характеристики каждого блока конфигурации 4.4. Определяются базовые линии 4.5. Для каждого блока определена стадия разработки, на которой он помещается в систему УК 4.6. Определен ответственный за каждый элемент 5. Запросы обслуживаются. Отчеты составляются 6. Изменение базовых линий происходит подконтрольно, в соответствии с документированной процедурой 6.1. Выполнение проверок и регрессионных тестов 6.2. Внесение в библиотеку БЛ лишь утвержденных блоков конфигурации 6.3. Внесение и извлечение блоков конфигурации не нарушает целостность проекта 7. Создание продуктов на основе ББЛ и контролирование их выпуска в соответствии с документированной процедурой 7.1. Комиссия контролирует создание продуктов на основе ББЛ 7.2. Все элементы создаются только из блоков конфигурации, содержащихся в ББЛ 8. Запись статуса элементов конфигурации в соответствии с документированной процедурой 8.1. Запись действий по УК производится с детальностью, достаточной для того, чтобы иметь в наличии статус всех элементов 8.2. Иметь возможность восстановить прежние версии 8.3. Ведение истории изменений 9. Разработка стандартных отчетов, документирующих операции УК 9.1. протоколы совещаний 9.2. краткое описание запросов 9.3. краткое описание проблем 9.4. краткое описание базовых линий 9.5. история изменений 9.6. результаты аудита БЛ
Измерения и анализ 1. Выполнение измерений и использование их результатов для определения состояния работ по УК 1.1. количество запросов за единицу времени 1.2. выполнение этапов работ по УК в сравнении с планом 1.3. объем выполненных работ по УК 1.4. ресурсы
Проверка внедрения 1. Регулярная проверка высшим руководством по УК 2. Регулярные и событийные проверки менеджером проекта работ по УК 3. Регулярный аудит БЛ (проверка на соответствии документации)
Обратите внимание на схожесть требований к процессу УК в разных стандартах. Попробуйте применить требования CMM к тому, что есть в Вашей компании! Посмотрите. Сколько % требований у Вас реализовано.