7.1. Интерпретация ключевых практик
Цель применения ключевых практик не заключается в поддержке какой-либо определенной модели жизненного цикла разработки ПО, организационной структуры, разделения сфер ответственности, либо управленческого/технического подхода к разработке ПО, и не требует вышеперечисленного. Назначение ключевых практик состоит скорее в том, чтобы описать основные элементы эффективной модели процесса разработки ПО.
Ключевые практики призваны реализовать принципы, применимые к самым разным проектам, организациям и типичным программным приложениям, принципы, чья действенность не сойдет на нет со временем. Исходя из этого, выбранный нами подход заключается исключительно в описании этих принципов. Их внедрение и применение остается делом конкретных организаций и зависит от специфики корпоративной культуры и предшествующего опыта управленческого и технического персонала.
Хотя и предполагается, что ключевые практики не зависят от частных случаев применения, однако будет не лишним привести некоторые примеры и термины, чтобы добиться максимальной ясности в изложении предмета. Данный раздел посвящен описанию значения ролей, сфер ответственности, отношений, продуктов и операций, принятых в CMM. Лица, использующие ключевые практики в рамках своих организаций, должны разбираться в этих терминах и правильно применять их для работы над конкретными проектами с учетом особенностей деловой среды.
В Приложении Б приведен глоссарий, содержащий определения терминов (включая термины, описываемые в данном разделе, равно как и в прочих).
7.2. Интерпретация разделов
В рамках любого раздела ключевых практик для обеспечения преемственности и согласованности используются определенные фразы и условные термины.
Основные структурные термины описаны ниже и сгруппированы по разделам.
7.2.1. Обязательства по выполнению
Положения политики
Там, где используется термин «положения политики», подразумевается, что проект следует документированной политике, описывающей практики из данной группы ключевых процессов. Таким образом, подчеркивается связь между обязательствами организации и проектами, с помощью которых и решаются стоящие перед ней задачи.
Подпрактики для положений политик обычно описывают в сжатой форме операции, о которых идет речь в связи с той или иной группой ключевых процессов. Обычно подпрактики удобны для реализации установления процесса посредством документированной политики.
Операции некоторых групп ключевых процессов (например, «Координация производственного процесса организации») затрагивают скорее организацию, нежели проект. В этих случаях формулировка положения политики меняется и означает организацию, придерживающуюся документированной политики.
Лидерство
В некоторых группах ключевых процессов обязательства по выполнению содержат положение о порядке назначения роли лидера (например, менеджера проекта) или описывают определенные спонсорские действия, которые необходимы для успешной реализации данной группы ключевых процессов.
7.2.2. Необходимые предпосылки
Ресурсы и финансирование
Большинство групп ключевых процессов содержат ключевую практику, отражающую потребность в адекватных ресурсах и финансировании для выполнения операций данной группы ключевых процессов. Эти ресурсы и финансирование описываются посредством подпрактик и, как правило, распадаются на три категории: доступ к особым навыкам, адекватное финансирование и доступ к инструментарию. В качестве примеров перечислены инструменты, которые могут потребоваться при выполнении операций из группы ключевых процессов.
Использование термина «финансирование» вместо слова «бюджет» подчеркивает, что нас прежде всего интересуют собранные и использованные, а не просто «обещанные» средства.
Обучение
В контексте CMM термин «обучение» обладает более широким, нежели обычное, значением. Обучение имеет целью наделить сотрудника той или иной квалификацией с помощью специального инструктажа и практических занятий. Обучение может сочетать в себе формальные и неформальные средства передачи сотрудникам знаний и умений. Хотя проведение семинаров является наиболее распространенной системой повышения квалификации, в СММ также используются такие средства, как обучающие видеофильмы, компьютерные программы и формализованные программы наставничества. Группа ключевых процессов «Программа обучения» описывает практики, относящиеся к вышеперечисленным методам обучения.
Для описания обучения в рамках СММ обычно применяются два шаблона. На втором уровне используется выражение «проходить обучение». Начиная с третьего уровня используется выражение «проходить требуемое обучение». Использование двух разных шаблонов отражает тот факт, что обучение на втором уровне, скорее всего, еще не установлено в рамках организации. Начиная с третьего уровня, мероприятия по обучению должны направляться ключевыми практиками «Программы обучения».
Во всех группах ключевых процессов возможные направления (темы, предметы) обучения представлены в виде примеров в рамках, поскольку различные организационные ситуации обычно приводят к появлению потребности в различных видах обучения.
Ориентация
В некоторых группах ключевых процессов имеются ключевые практики, описывающие ориентацию. Термин «ориентация» широко используется для обозначения передачи знания или навыка более низкого уровня по сравнению с обучением. Ориентация является обзором или, иначе говоря, введением в тему для тех, кто руководит или иным образом взаимодействует с сотрудниками, ответственными за выполнение задач в соответствующей области.
Начальные условия
Некоторые группы ключевых процессов содержат ключевые практики, отражающие потребность в начальных условиях. Так, например, для «Отслеживания хода проекта и контроля над ним» начальным условием является план разработки ПО. В некоторых случаях начальные условия представляют собой результат операций, относящихся к другой группе ключевых процессов. В других случаях это — объекты, которые отсутствуют в области проекта разработки ПО и которые требуется получить извне. Например, отнесенные к ПО системные требования являются начальным условием для «Управления требованиями».
В соответствии с принципом выделения «ключевых» практик, для групп ключевых процессов приводятся не все начальные условия. В списке условий присутствуют лишь те, которые особенно значимы для внедрения той или иной группы.
7.2.3. Выполняемые операции
Из всех общих признаков «Выполняемые операции» обладают наибольшим структурным разнообразием. Это вызвано тем, что действия по внедрению, относящиеся к этим группам ключевых процессов, варьируются по уровню детализации, организационному фокусу (например, выбор между фокусом на проекте или на организации), а также по потребностям в документации и планировании. Ниже приведены некоторые обобщения в отношении выполняемых операций.
Типы планов
В ключевых практиках описаны два основных типа планов: формальные (например, планы разработки ПО, обеспечения качества ПО и управления конфигурацией ПО) и неформальные (например, планы экспертной оценки, управления рисками и управления технологией).
Неформальные планы обычно документируются либо в качестве составляющих определенного формального плана (например, план экспертной оценки может быть документирован как часть плана разработки ПО), либо в качестве дополнений к нему (например, план экспертной оценки может быть разделом плана разработки ПО). Формальные планы требуют более сложного управления как в отношении их создания, так и с точки зрения отслеживания их выполнения. При заключении контрактов эти планы могут отсылаться заказчику.
Формальные планы
В случае формальных планов для операций планирования обычно используются две ключевые практики: практика, требующая создания/ переработки плана в соответствии с документированной процедурой, и практика, требующая согласования операций определенной группы ключевых процессов с планом.
Подпрактики, имеющие отношение к документированной процедуре, обычно описывают исходную информацию для разработки плана, а также меры, которые потребуется предпринять для обеспечения необходимой поддержки плана и принятия обязательств. Кроме того, в этих подпрактиках указываются лица, наделенные полномочиями на ревизию плана, и требуемые уровни менеджмента, на которых происходит его утверждение.
Подпрактики, относящиеся к плану, описывают предполагаемое содержание обсуждаемого плана. В зависимости от типа плана и потребности в организационной гибкости для покрытия необходимых задач, описание содержания плана может проводиться с различными уровнями детализации.
Неформальные планы
Обычно для описания неформального плана достаточно одной ключевой практики. Подпрактики включают сведения о содержании плана, а также описывают процедуру его создания и переработки.
В соответствии с документированной процедурой
Документированная процедура обычно нужна для автоматизации повторяющихся задач и действий. Кроме того, использование такой процедуры позволяет сотрудникам с общими представлениями о той или иной группе ключевых процессов быстро научиться аналогичному способу выполнения задачи/операции. Это один из аспектов установления процесса.
Формальность и уровень детализации документированной процедуры может варьировать в значительных пределах (от записанной от руки индивидуальной процедуры до формальной стандартизированной последовательности действий, выполняемых на уровне организации в целом). Формальность и уровень детализации зависят от лица, выполняющего соответствующую задачу или действие (отдельный сотрудник или их группа), частоты выполнения, важности и предполагаемого использования результатов, а также предполагаемых лиц, которым эти результаты будут направлены.
Отнесенные к ПО системные требования
Установленные для ПО системные требования обычно называются в СММ «установленными требованиями». Они представляют собой подгруппу системных требований, которые необходимо реализовать в программных компонентах системы. Установленные требования являются исходными данными для плана разработки ПО. Анализ требований к ПО позволяет уточнить и документировать установленные требования.
Требования заказчика относятся ко всей системе, а не только к ПО. В рамках СММ центральным пунктом обсуждения требований заказчика являются те требования, которые должны быть реализованы в создаваемом ПО. Отнесение системных требований к ПО, аппаратным средствам и т. д., являясь стадией общего проектирования системы, обычно выполняется группой системного проектирования. Установленные требования включают в себя как технические (функциональные возможности, производительность и т. д.), так и прочие требования (сроки поставки, затраты и т. д.).
Отношения типа «поставщик — заказчик»
Заказчик может располагаться как внутри организации, так и вне ее (внутренний и внешний). Примером внутреннего заказчика является группа маркетинга, а примером внешнего, скажем, Министерство обороны. Пользователь может отличаться от заказчика, как это обычно и бывает в случае заключения контрактов с военными ведомствами. Модель СММ выражается в терминах внешнего поставщика, обеспечивающего систему критически важным программным компонентом.
При необходимости границы между группами должны быть истолкованы должным образом, как это указано в СММ. Например, если по контракту требуется поставить только ПО, между разработчиками программы и заказчиком может быть прямая связь (без участия группы системного проектирования). В этом случае требования заказчика, системные и установленные требования могут являться синонимами. При этом сфера ответственности группы системного проектирования делится между заказчиком и группой разработчиков ПО.
Отслеживание процесса разработки ПО с принятием корректирующих мер в сравнении с управлением ходом работ
В разделе «Отслеживание хода проекта и контроль над ним» на втором уровне многие ключевые практики содержат следующие выражения: «…процесс отслеживается…принимаются корректирующие меры». В разделе «Интегрированное управление разработкой ПО» на третьем уровне, напротив, в большинстве аналогичных практик употребляется слово «управление». Различие между этими терминами отражает отсутствие в проекте законченного производственного процесса на втором уровне. В подобных случаях обычно требуются действия управленческого характера. В то же время на третьем уровне проекта производственный процесс уже полностью определен, четко обозначены отношения между различными программными продуктами, задачами и действиями. Управленческий подход больше подходит для прогнозирования проблем и их профилактики. При необходимости вмешательства его последствия учитываются на уровне всего производственного процесса, что позволяет более эффективно выбирать и вносить изменения.
Контроль в сравнении с экспертной оценкой
Контроль подразумевает оценку или утверждение промежуточного программного продукта — или набора программных продуктов — менеджерами, заказчиком и конечными пользователями, а также любыми другими заинтересованными лицами. Обычно ПО проверяется уже по окончании разработки. Что касается экспертной оценки, то программный продукт или набор таких продуктов в этом случае выносится на суд коллег разработчиков, которые стараются выявить дефекты ПО. Менеджеры, заказчик и конечные пользователи, как правило, не участвуют в подобной оценке. Экспертная оценка является неотъемлемой фазой разработки ПО. Она проводится для устранения дефектов на ранних стадиях разработки, что позволяет добиться повышения производительности труда и качества конечного продукта. Некоторые промежуточные программные продукты подлежат контролю, другие — экспертной оценке, а третьи — и тому и другому.
Помещение в систему управления конфигурацией в сравнении с управлением и контролем
Некоторые программные продукты, например архитектура и программный код, должны иметь установленные базовые линии в заранее установленные моменты времени. Эти базовые линии подлежат проверке и утверждению и служат основой для дальнейшего развития. Изменение элементов базовых линий необходимо тщательно контролировать. Использование базовых линий дает контроль над процессом разработки и вносит в него стабильность при взаимодействии с заказчиком. Действия с базовыми линиями иногда называют управлением конфигурацией базовых линий. При описании вышеуказанных программных продуктов применяется фраза «помещен в систему управления конфигурацией».
Если управление конфигурацией является задачей самих разработчиков, то оно обычно называется управлением конфигурацией разработчиками. Некоторые продукты, чья конфигурация должна контролироваться разработчиками, могут быть помещены в систему управления конфигурацией по достижении заранее заданных фаз в ходе выполнения проекта. Фразу «помещен в систему управления конфигурацией» можно понимать как расширение системы управления конфигурацией разработчиками. Однако ее минимальная интерпретация отражает лишь потребность в управлении конфигурацией базовой линии.
Некоторые программные продукты, такие как сметные оценки и планы разработки ПО, которые не обязательно должны помещаться в систему управления конфигурацией, все же требуют «управления и контроля». Данная фраза используется для того, чтобы охарактеризовать процесс идентификации программных продуктов, не входящих в базовую линию конфигурации и, соответственно, не подлежащих помещению в систему управления конфигурацией. Тем не менее управление такими продуктами необходимо, так как позволяет добиться строгого выполнения проекта. «Управляемый и контролируемый» означает, что в любой момент времени (прошлый или настоящий) известна версия используемого промежуточного продукта (т. е., реализован контроль версий), а внесение изменений происходит управляемым образом (т. е. реализовано управление изменениями).
7.2.4. Измерения и анализ
Ключевые практики раздела «Измерения и анализ» описывают основные методы измерений, необходимых для определения статуса операций, относящихся к разделу «Выполняемые действия». Являясь неотъемлемой частью группы ключевых процессов, измерения приводятся сразу после раздела «Выполняемые действия».
Примеры измерений приводятся в виде дополнительной информации, поскольку различным условиям выполнения проектов соответствуют, как правило, различные задачи и методы измерений.
7.2.5. Проверка внедрения
Раздел «Проверка внедрения» обычно содержит ключевые практики, относящиеся к надзору со стороны руководителей проекта и высшего руководства, а также конкретные контрольные мероприятия, проводимые группой обеспечения качества или другими лицами в целях проверки должного качества выполнения ключевых практик.
Регулярный надзор со стороны высшего руководства
Регулярные проверки проводятся высшим руководством для получения своевременной информации о производственном процессе и его понимания на соответствующем уровне абстракции. Промежутки времени между проверками должны соответствовать потребностям организации и могут быть длительными, если в организации имеется работающая система оповещения об исключительных ситуациях.
Объем и содержание этих проверок в значительной степени зависят от того, кто именно из старших руководителей принимает в них участие. Проверки со стороны старшего руководителя, отвечающего в организации за все проекты по разработке ПО, будут проводиться по другому графику и касаться других вопросов, нежели проверки со стороны исполнительного директора организации. Проверки со стороны высшего руководства также могут отличаться от проверок со стороны руководства проекта по своей тематике или более высоким уровнем абстракции.
Регулярный и событийный надзор со стороны руководства проекта
Используемая в этих ключевых практиках фраза «регулярный и событийный» призвана подчеркнуть тот факт, что на различных стадиях проекта и в зависимости от его характеристик необходимы различные виды проверок. Руководство проекта должно поддерживать постоянную осведомленность о состоянии производственного процесса и информироваться о значительных событиях проекта. К примерам можно отнести участие руководителей проекта в формальных инспекциях, например, в экспертном анализе или в проверках, касающихся вопросов организации процесса, таких как статус планирования работ по улучшению процессов или разрешение вопросов несоответствия процесса.
Предполагается, что на уровне управления проектом надзор со стороны его руководителей будет носить более детальный характер, чем со стороны высшего руководства, что отражает более активное участие руководства проекта непосредственно в оперативном управлении.
Действия по обеспечению качества ПО
Определенные действия по проводимым группой обеспечения качества (SQA — software quality assurance) проверкам и/или аудиту описываются в виде ключевой практики. В некоторых случаях контрольные мероприятия по обеспечению качества не описываются — примерами могут служить группы ключевых процессов «Программа обучения» и «Межгрупповая координация». Эти группы ключевых процессов находятся на границе сфер компетенции организации и отдельного проекта разработки и не попадают в предполагаемую область полномочий группы обеспечения качества.
7.3. Интерпретация определения производственного процесса
Определение производственного процесса является основой для достижения более высоких уровней зрелости. В данном разделе рассматриваются те аспекты определения производственного процесса, которые полезны при использовании связанных с ним ключевых практик, начиная с практики «Определение производственного процесса организации» на уровне 3.
Фундаментальной концепцией определения процесса в CMM является стандартный производственный процесс организации (СППО). СППО является рабочим определением основного процесса, регулирующего установление общего производственного процесса для всех проектов разработки ПО внутри организации. В нем описаны основные элементы, которые должны войти в определение производственного процесса для каждого проекта разработки ПО. В нем также описываются отношения (например, порядок и интерфейсы) между этими элементами производственного процесса. СППО устанавливает единый способ выполнения всех производственных операций внутри организации и имеет большое значение для долговременной стабильности и прогресса предприятия.
На уровне организации создается описание СППО, осуществляется его контроль, управление и усовершенствование, выполняемые формальным образом. На уровне проекта в центре внимания оказывается эффективность проектного производственного процесса и его польза для проекта. Производственный процесс проекта — это производственный процесс, используемый в конкретном проекте. Он представляет собой четко охарактеризованный и понятный производственный процесс, описанный в терминах программных стандартов, процедур, инструментов и методов. Этот процесс разрабатывается путем адаптации СППО к конкретным характеристикам проекта.
Ключевые практики в определении производственного процесса организации (ППО) выражаются в терминах, отражающих стабильный и в то же время гибкий подход к определению процесса. Этот подход проиллюстрирован на рис. 4.1, а его ключевые элементы описаны в следующих разделах.
7.3.1. Концепции определения процесса
Возможность разрабатывать и сопровождать процессы таким же образом, что и продукты, является фундаментальной концепцией подхода SEI к определению процессов. В эту концепцию входят:
? требования, определяющие описываемый процесс;
? архитектурные и проектировочные соображения, влияющие на определение процесса;
? реализация спроектированного процесса в условиях отдельного проекта или в рамках всей организации;
? проверка описания процесса с помощью измерений;
? развертывание процесса в организации или проекте, для которых разрабатывался данный процесс.
Используя аналогию с разработкой продукта, схема разработки и сопровождения процесса эволюционировала и преобразовала эти концепции в более подходящие для разработки процесса (подобно специфической терминологии, используемой для разработки встроенных систем реального времени в сравнении с системами управления информацией). Ключевые элементы этой структуры проиллюстрированы на рис. 4.1 и кратко описаны ниже.
Дополнительную информацию о концепциях определения процесса, разработанных внутри сообщества проектировщиков процессов, можно найти в статье «Software Process Development and Enactment: Concepts and Definitions» («Разработка и нормативы производственного процесса: концепции и определения»), [Фейлер, 92].
Рис. 7.1. Концептуальная структура производственного процесса, используемая в CMM
7.3.2. Концепции, касающиеся основных средств производственного процесса организации
Основные средства производственного процесса организации (ППО)
Организация устанавливает и сопровождает набор основных средств производственного процесса, как показано на рис. 4.1. К этим основным средствам относятся:
СППО (включая элементы и архитектуру производственного процесса);
утвержденные описания жизненных циклов ПО;
инструкции и критерии для адаптации СППО;
база данных ППО;
библиотека документации по производственным процессам. Эти основные средства используются для разработки, сопровождения и внедрения производственных процессов, определенных для проектов.
В зависимости от используемого подхода к установлению СППО, организация может компоновать эти основные средства различными способами. Например, в СППО может входить описание жизненного цикла ПО. Другим примером может служить хранение библиотеки документации в базе данных ППО.
Стандартный производственный процесс организации (СППО)
Термин СППО является рабочим определением процесса, который устанавливает общий производственный процесс для всех проектов разработки ПО внутри организации. В нем описаны основные элементы, которые должны войти в определение производственного процесса для каждого проекта разработки ПО. В нем также описываются отношения (например, порядок и интерфейсы) между этими элементами производственного процесса.
СППО помогает установить в организации общий производственный процесс для проектов разработки и сопровождения ПО.
Отношения между элементами производственного процесса иногда называются «архитектурой производственного процесса».
СППО формирует основу для производственных процессов отдельных проектов. Он обеспечивает связность производственных операций и служит источником справочной информации для измерений и долгосрочного усовершенствования производственных процессов, используемых в организации.
Архитектура производственного процесса
Представляет собой высокоуровневое (т. е. общее) описание СППО, описывает порядок, интерфейсы, внутренние зависимости и другие отношения между элементами СППО, а также интерфейсы, зависимости и другие отношения с другими внешними процессами (например, проектированием систем, проектированием оборудования, управлением контрактами).
Элемент производственного процесса
Представляет собой составляющий элемент описания процесса. Каждый элемент процесса соответствует четко определенному и ограниченному набору тесно связанных задач (например, элементы оценки ПО, архитектуры ПО, кодирования, экспертной оценки). Описания элементов процесса могут представлять собой заполняемые шаблоны, подлежащие завершению фрагменты, абстрактные рассуждения, которые следует уточнить, или же полные описания, которые могут быть изменены при необходимости.
Утвержденное описание жизненных циклов ПО
Жизненный цикл программного обеспечения представляет собой период времени, который начинается с рождения программного продукта и завершается, когда этот продукт более не используется, включает в себя следующие стадии: разработка концепции, формулирование требований, проектирование, реализация, тестирование, установка и отладка, эксплуатация и сопровождение, иногда — вывод из эксплуатации [стандарт IEEE-STD-610].
Поскольку организация может производить ПО для различных договорных и/или коммерческих клиентов и пользователей, единый жизненный цикл ПО может оказаться неприемлем для каких-либо ситуаций. Поэтому организация может определить для использования в проектах несколько жизненных циклов ПО. Эти циклы обычно заимствуются из литературы по разработке ПО, а затем адаптируются к нуждам организации. В сочетании с СППО жизненные циклы ПО используются при разработке производственного процесса проекта.
Инструкции и критерии адаптации
СППО описывается на общем уровне, не всегда применимом для проекта. Для выбора жизненного цикла ПО из рекомендованных к использованию, а также для адаптации и уточнения СППО и выбранного жизненного цикла к конкретным характеристикам проекта создаются инструкции, которыми руководствуются в проектах разработки ПО.
С помощью этих инструкций и критериев для всех проектов разработки ПО формируется общая основа планирования, реализации, оценки, анализа и усовершенствования производственных процессов.
База данных производственного процесса организации
Формируется в целях сбора и использования информации по производственным процессам и их промежуточным программным продуктам, в частности об их отношении к СППО, содержит (непосредственно или в виде ссылок) фактические данные измерений и информацию, необходимую для понимания этих данных и оценки их корректности и применимости.
Примерами данных о процессе и промежуточном продукте могут служить оценки объема ПО, объема разработки и затрат, фактические данные по этим показателям, данные о производительности, границы и эффективность экспертной оценки, количество и серьезность дефектов, обнаруженных в программном коде.
Библиотека документации по производственному процессу
Формируется для: 1) хранения документов процесса, обладающих потенциальной ценностью для текущего и будущих проектов, особенно в их связи с СППО; 2) совместного использования этих документов в рамках организации. Эта библиотека содержит образцы и фрагменты документов, которые могут оказаться полезными в будущих проектах при адаптации СППО. Примеры могут раскрывать такие темы, как производственный процесс проекта, стандарты, процедуры, планы разработки ПО, планы измерений и учебные материалы процесса. Библиотека является важным ресурсом, который способен сократить объем работ при запуске нового проекта, предлагая примеры успешных проектов в качестве исходного шаблона.
7.3.3. Концепции, связанные с производственным процессом проекта
Описание производственного процесса проекта
Является стандартным определением производственного процесса, используемого в проекте. Данный процесс представляет собой четко охарактеризованный и понятный производственный процесс, описанный в терминах программных стандартов, процедур, инструментов и методов. Он разрабатывается путем адаптации СППО к конкретным характеристикам проекта.
Эта адаптация включает в себя выбор утвержденного организацией жизненного цикла ПО и модификацию СППО с учетом конкретных характеристик проекта.
Производственный процесс проекта обеспечивает основу для планирования, выполнения и усовершенствования действий руководителей и технического персонала при выполнении проектных задач и операций. Возможны ситуации, когда в одном проекте имеется несколько производственных процессов (например, для рабочего ПО и для ПО поддержки тестирования) или когда один процесс определен для нескольких подобных проектов.
Стадии
Стадия является результатом раздела процесса разработки ПО на управляемые части и представляет собой поддающийся интерпретации и оценке набор связанных задач, выполняемых в проекте. Стадия обычно считается подразделом жизненного цикла ПО и часто завершается формальной проверкой, выполняемой перед переходом на следующую стадию.
Задачи
Подлежащая выполнению работа разбивается на задачи. Задача представляет собой четко определенную часть работы производственного процесса, с помощью которой можно четко определить статус проекта по явно выраженной контрольной точке, имеет свои критерии подготовленности (предусловия) и завершения (постусловия).
В контексте определения процесса задача является четко определенным компонентом определенного процесса. Все задачи могут считаться операциями, но не все операции достаточно четко определены, чтобы считаться задачами (хотя операция может включать в себя задачу). Поэтому на втором уровне ключевых практик вместо термина «задача» используется менее строгий термин «операция».
Операции
Операция представляет собой любой шаг или функцию, чье мысленное или физическое выполнение имеет поставленную цель. Операции включают в себя всю работу руководителей и технического персонала по выполнению задач проекта и организации.
Промежуточные программные продукты (результаты проекта)
Результаты действий и задач обычно состоят из промежуточных продуктов разработки. Промежуточный продукт разработки представляет собой любой артефакт, созданный в результате определения, сопровождения или выполнения производственного процесса, включая его описания, планы, процедуры и компьютерные программы с соответствующей документацией, которые могут предназначаться или не предназначаться для поставки заказчику или конечному пользователю. Промежуточные продукты являются входной информацией для следующего шага процесса или предоставляют архивную информацию по проекту разработки для ее использования в будущих проектах.
Примеры промежуточных программных продуктов включают в себя планы, оценки, данные по фактической работе, документацию по корректирующим действиям и документы требований. Те из них, которые поставляются заказчику или конечному пользователю, носят название программных продуктов.
Программные продукты
Представляют собой полный набор (или любой из его элементов) компьютерных программ, процедур, соответствующей документации и данных, который предназначен для поставки заказчику или конечному пользователю [IEEESTD-610].
Все программные продукты являются также промежуточными продуктами разработки. Однако промежуточный продукт разработки, не предназначенный для поставки заказчику или конечному пользователю, не является программным продуктом.
7.3.4. Взаимосвязь между производственным процессом проекта и планом разработки ПО
Описание производственного процесса проекта бывает, как правило, недостаточно конкретным для непосредственного выполнения. Хотя описание обычно определяет такие понятия, как роли (т. е. исполнители задач) и необходимые для выполнения задачи виды промежуточных программных продуктов, оно не определяет ни конкретных исполнителей ролей, ни конкретные создаваемые промежуточные продукты, ни график выполнения задач и действий.
Проектный план разработки ПО (либо в виде отдельного документа, либо в виде совокупности планов, совместно называемых планом разработки ПО) связывает производственный процесс проекта (что и как должно быть сделано) с конкретным выполнением проекта (например, кто из сотрудников должен создать какой промежуточный программный продукт и по какому графику). Комбинация производственного процесса проекта и плана разработки ПО дает возможность действительного выполнения процесса.
7.3.5. Жизненные циклы и CMM
Ключевые практики не ограничивают выбор жизненного цикла ПО. Те пользователи, которые активно использовали какой-либо определенный жизненный цикл ПО, могут быть более склонны к восприятию элементов именно этого цикла в организации и структуре ключевых практик. Однако использование ключевых практик не подразумевает ни стимулирование, ни ограничение применения какого-либо конкретного жизненного цикла.
Термин «стадия» используется для определенной части проекта разработки, но не должен увязываться с каким-либо конкретным жизненным циклом ПО. В ключевых практиках этот термин может означать строго последовательные или перекрывающиеся и итеративные стадии.
7.3.6. Технология и CMM
Ключевые практики не ограничивают и не требуют применения конкретных технологий разработки ПО, таких как создание прототипов, объектно-ориентированное проектирование, или повторное использование требований к ПО, его архитектуры, кода или других элементов.
7.3.7. Документация и CMM
Ключевые практики описывают несколько документов, связанных с процессом, каждый из которых охватывает определенные области содержания. Ключевые практики не требуют соответствия «один к одному» между этими документами и реальными промежуточными продуктами организации или проекта. Также не подразумевается подобное соответствие и с документами, определенными военным ведомством, или такими стандартами, как DOD-STD-2167A или IEEE. Ключевые практики требуют лишь того, чтобы применимое содержание этих документов входило в документированные промежуточные продукты организации или проекта.
В ракурсе структуры документа содержимое документа, на который ссылаются ключевые практики, может быть частью большего документа. Например, в план разработки ПО организации могут входить наиболее существенные части плана управления рисками.
Альтернативным образом содержимое документа, упоминаемого в ключевых практиках, может распределяться по набору документов, отличному от указанного в практиках набора. Например, в проекте могут быть разработаны три документа — план разработки ПО, план управления ПО и иерархическая последовательность проектных работ, — соответствующие требованиям практик в отношении управления рисками проекта, обеспечения качества и плана разработки ПО.
7.3.8. Сбор и анализ данных процесса
Ключевые практики для сбора и анализа данных процесса развиваются по уровням зрелости.
На уровне 2 данные в основном относятся к размеру промежуточных продуктов проекта, объему работ и графику. Эта информация идентифицируется, собирается и хранится отдельно по каждому проекту. Проекты могут совместно использовать данные с помощью неформальных механизмов коммуникации.
На уровне 3 каждый проект имеет свой производственный процесс, полученный путем адаптации СППО. Данные, связанные с этим процессом, собираются и хранятся в базе данных ППО. Собранные данные могут различаться по каждому проекту, но они должны быть четко определены внутри базы данных ППО.
На уровне 4 организация определяет на основании СППО стандартный набор измерений. Все проекты собирают этот стандартный набор данных измерений, а также других специфических проектных данных и сохраняют их в базе данных ППО. Данные используются в проектах для их понимания на количественном уровне и стабилизации выполнения проектных производственных процессов. Эта информация также используется организацией для установления базовой линии для СППО.
На уровне 5 данные используются для выбора областей возможного усовершенствования технологии и процессов, планирования этих усовершенствований и оценки их влияния на продуктивность производственного процесса организации.
7.4. Организационная структура и роли
Хотя модель СММ независима от конкретных организационных структур и моделей, практики СММ необходимо выражать единообразно, используя в отношении организационных структур и ролей терминологию, которая может отличаться от используемой в конкретной организации. Следующие разделы описывают различные концепции, которые касаются организаций, проектов, ролей и необходимы для интерпретации ключевых практик СММ.
7.4.1. Организационные роли
Роль представляет собой элемент определенной сферы ответственности, присваиваемый одному или нескольким лицам. В ключевых практиках часто используются следующие описания ролей:
Менеджер
Роль менеджера заключается в техническом и административном руководстве и контроле над лицами, выполняющими задачи и действия внутри сферы ответственности менеджера. К традиционным функциям менеджера относятся планирование, распределение ресурсов, организация, управление и контроль в пределах сферы его ответственности.
Руководитель высшего звена
Выполняет управляющую роль на достаточно высоком организационном уровне, более концентрируясь на вопросах длительной жизнеспособности организации, чем на сиюминутных проблемах проектов и контрактов. Обычно руководитель высшего звена по разработке несет ответственность за несколько проектов. Он также предоставляет и поддерживает ресурсы для долгосрочного усовершенствования производственного процесса (например, для группы инженерии производственного процесса).
По терминологии СММ роль руководителя высшего звена может принадлежать любому менеджеру, который удовлетворяет этому описанию, вплоть до главы всей организации. В ключевых практиках термин «руководитель высшего звена» должен интерпретироваться в контексте рассматриваемой группы ключевых процессов, проектов и организации. Это позволит учесть именно тех руководителей, которые нужны для выполнения лидирующей и контролирующей ролей, необходимых для достижения целей данной группы ключевых процессов.
Менеджер проекта
Роль менеджера проекта обладает сферой ответственности, которая включает в себя все деловые аспекты целого проекта. Менеджер проекта направляет, контролирует, администрирует и регулирует проект разработки программной или программно-аппаратной системы. На нем лежит конечная ответственность перед заказчиком.
В проектно-ориентированной организационной структуре большинство сотрудников, работающих над проектом, подотчетны менеджеру проекта, хотя в некоторых областях могут существовать матричные отношения отчетности. В матричной организационной структуре менеджеру проекта подотчетен только бизнес-персонал, а в инженерных группах применяются матричные отношения отчетности.
Производственный менеджер проекта
В сферу ответственности входят все производственные действия проекта. Он является лицом, взаимодействующим с менеджером проекта по вопросам производственных обязательств и контролирующим все производственные ресурсы проекта.
Производственному менеджеру проекта подотчетны проектные группы разработчиков, хотя некоторые действия, такие как разработка инструментария, могут иметь матричные отношения отчетности.
В крупном проекте производственный менеджер является обычно менеджером второго, третьего или четвертого звена. В небольшом проекте или в проектном подразделении производственный менеджер может быть менеджером первого звена (линейным менеджером) или находиться на более высоком уровне.
Линейный менеджер
В сферу ответственности линейного менеджера входит непосредственное управление (включая техническое руководство и администрирование персонала и зарплаты) персоналом и действиями отдельной организационной единицы (например, отдела или проектной группы), состоящей из инженеров-разработчиков и других сотрудников.
Ведущий специалист
Играет роль лидера технической группы по конкретной задаче, который несет техническую ответственность и обеспечивает техническое руководство персоналом, работающим над выполнением этой задачи.
Ведущий специалист обычно подотчетен тому же линейному менеджеру, что и другие сотрудники, выполняющие данную задачу.
Персонал, разработчики, сотрудники
В СММ используется несколько терминов для обозначения исполнителей различных технических ролей, описанных в ключевых практиках СММ. К персоналу относятся те сотрудники, включая ведущих специалистов, которые несут ответственность за выполнение назначенных функций, таких как разработка ПО или управление конфигурацией ПО, но не являются менеджерами.
К разработчикам относятся технические сотрудники (например, аналитики, программисты, инженеры), включая ведущих специалистов, которые выполняют в проекте действия по разработке и сопровождению ПО, но не являются менеджерами.
Термин «сотрудники» в ключевых практиках определяется и ограничивается контекстом своего использования (например, «сотрудник, задействованный в управлении производственным субподрядом»).
Подобное распределение ролей может быть определено и для других инженерных групп, таких как группы системного проектирования и системного тестирования.
Некоторые проекты или организации не нуждаются во взаимно однозначном соответствии между ролями и сотрудниками. Один человек может играть несколько ролей, а каждая роль может выполняться несколькими сотрудниками.
Например, в небольшом, исключительно программном проекте один человек может играть даже шесть ролей: линейный менеджер по системному проектированию, проектный менеджер по системному проектированию, производственный линейный менеджер, производственный менеджер проекта, менеджер проекта и менеджер по управлению конфигурацией ПО.
В несколько более крупном проекте один сотрудник может быть одновременно линейным менеджером по системному проектированию, проектным менеджером по системному проектированию и менеджером проекта, а другой — совмещать роли производственного линейного менеджера и производственного менеджера проекта. Эти два менеджера могут работать в одной или в различных организациях второго звена.
В крупном проекте многие роли, особенно руководящие, обычно выполняются отдельными сотрудниками.
7.4.2. Организационная структура
Для правильной интерпретации ключевых практик, входящих в модель зрелости процессов разработки, необходимо разобраться в фундаментальных концепциях организации, проекта и группы. Ниже дается определение использования этих концепций в СММ.
Организация
Представляет собой единицу компании или другой сущности (например, государственное учреждение или обслуживающий филиал), целиком управляющую многими проектами. Все проекты внутри организации подчиняются общему руководителю высшего уровня и общим политикам.
Проект
Является предприятием, которое требует совместных усилий, сосредоточенных на разработке и/или сопровождении конкретного продукта. Продукт может включать в себя оборудование, программное обеспечение и другие компоненты. Обычно проект имеет собственное финансирование, отчетность и график поставок.
Группа
Представляет собой совокупность отделов, менеджеров и сотрудников, которые несут ответственность за набор задач или операций. Состав группы может варьироваться от одного или нескольких совместителей из различных отделов до нескольких сотрудников, занятых этой деятельностью полный рабочий день.
Ниже описаны группы, наиболее часто встречаемые в СММ.
Группа разработки ПО
Представляет собой коллектив сотрудников (руководителей и технических специалистов), которые несут ответственность за проектные операции по разработке и сопровождению ПО (т. е. анализ требований, проектирование, кодирование и тестирование).
В группу разработки не входят группы, косвенно связанные с разработкой, такие как группы обеспечения качества ПО, управления конфигурацией ПО и инженерии производственного процесса. Эти группы входят в число «групп, связанных с разработкой ПО».
Группы, связанные с разработкой ПО
Представляет собой коллектив сотрудников (руководителей и технических специалистов), чьи обязанности заключаются не в непосредственном участии в процессах разработки и сопровождения ПО, а в их поддержке.
Примерами подобных инженерных областей могут служить обеспечение качества ПО и управление конфигурацией ПО.
Группа инженерии производственного процесса
В группу входят специалисты, занимающиеся определением, сопровождением и улучшением производственного процесса организации. В ключевых практиках эта группа обычно называется «группой, ответственной за операции ППО».
Группа системного проектирования
Является коллективом сотрудников (руководителей и технических специалистов), которые несут ответственность за определение системных требований; отнесение этих требований к оборудованию, ПО и другим компонентам; определение интерфейсов между оборудованием, ПО и другими компонентами; мониторинг проектирования и разработки этих компонентов, обеспечивающий их соответствие техническим требованиям.
Группа системного тестирования
Группа системного тестирования представляет собой коллектив сотрудников (руководителей и технических специалистов), которые несут ответственность за планирование и выполнение независимого системного тестирования ПО, проводимого в целях проверки программного продукта на соответствие требованиям.
Группа обеспечения качества ПО
Представляет собой коллектив сотрудников (руководителей и технических специалистов), которые несут ответственность за планирование и проведение проектных мероприятий по обеспечению качества, поддерживающих соответствие этапам и стандартам производственного процесса. Организационные вопросы обеспечения качества ПО обсуждаются в разделе 4.4.3.
Группа управления конфигурацией ПО
Представляет собой коллектив сотрудников (руководителей и технических специалистов), которые несут ответственность за планирование, координацию и реализацию формальных действий по управлению конфигурацией проекта разработки ПО.
Группа обучения
Состоит из сотрудников (руководителей и технических специалистов), отвечающих за координацию и проведение учебных мероприятий организации. Эта группа обычно готовит и проводит большинство учебных курсов и координирует использование других средств обучения.
7.4.3. Независимость и организационная структура
Организация должна следить за корректностью интерпретации и выполнения ключевых практик, реализующих концепцию независимости. Это имеет особенно большое значение для небольших проектов и организаций. Если технические или организационные пристрастия могут повлиять на качество продукта или проектные риски, ключевые практики рекомендуют использовать концепцию независимости. Два примера подобных практик:
Группа обеспечения качества (SQA) имеет канал отчетности перед старшим руководством, который независим от менеджера проекта, группы разработки ПО и других групп, связанных с разработкой (обязательство 1.2 из раздела «Обеспечение качества ПО»).
Системные и приемочные тестовые сценарии и процедуры планируются и готовятся группой тестирования, которая независима от разработчиков ПО (действие 7.3 из раздела «Инженерия разработки программного продукта»).
Необходимость независимого системного и приемочного тестирования обусловлена техническими факторами. Эта независимость гарантирует, что сотрудники группы тестирования не подвергнутся влиянию решений, принятых разработчиками или специалистами по технической поддержке ПО при его проектировании и реализации.
Независимость группы обеспечения качества диктуется тем, что график и бюджет проекта не должны влиять на работу членов этой группы. Отсутствие организационной независимости может значительно усложнить обеспечение эффективной оперативной независимости. Например, сотрудник, подотчетный менеджеру проекта, может быть вынужден прервать тестирование несмотря на существование серьезных проблем с совместимостью продукта.
Организации должны определить такую организационную структуру, которая поддерживала бы независимость операций, подобных обеспечению качества, в контексте своих стратегических бизнес-целей и бизнес-среды.
Независимость должна:
обеспечивать сотрудникам группы обеспечения качества организационную свободу, позволяющую им быть «глазами и ушами» старшего руководства проекта;
исключить вынесение оценки работы сотрудников группы обеспечения качества со стороны руководства того проекта, о котором они подают отчет;
обеспечить уверенность старшего руководства в объективности получаемых отчетов о производственном процессе и продуктах проекта.
Поскольку ключевые практики допускают различные трактовки критериев независимости, организация должна получить профессиональную оценку их соответствия целям группы ключевых процессов.
7.5. Применение профессиональной оценки
Чтобы обеспечить полный набор принципов, применяемых к самым различным ситуациям, в некоторых ключевых практиках изначально заложена возможность гибкой трактовки. В ключевых практиках используются такие размытые фразы, как «заинтересованные группы», «по обстановке» или «по мере необходимости». Значение таких нечетких терминов в ключевых практиках обычно уточняется различными примерами, приводимыми, по крайней мере, при первом употреблении термина. Эти фразы могут иметь различные значения для разных организаций, для разных проектов внутри одной организации или для одного проекта в различные моменты его жизненного цикла. Для каждого проекта или организации смысл этих фраз должен быть уточнен в соответствии с конкретной ситуацией.
Уточнение этих фраз требует от организации учета общего контекста их использования. При этом встает вопрос соответствия конкретной интерпретации одной или нескольких фраз целям группы ключевых процессов. Ответ на этот вопрос можно дать лишь с помощью профессиональной оценки.
Интерпретация ключевых практик и их значения для целей группы ключевых процессов также должна проводиться путем профессиональной оценки. Как правило, группа ключевых процессов описывает фундаментальный набор действий, которые должны выполняться любыми разрабатывающими организациями вне зависимости от их размера или их продукции. Однако ключевые практики СММ должны интерпретироваться в контексте бизнес-среды и конкретных условий организации. Такая интерпретация должна основываться на хорошем знании СММ, самой организации и ее проектов. Эту интерпретацию можно структурировать с помощью содержания целей групп ключевых процессов. Если реализация групп ключевых процессов отвечает их целям, но существенно отличается от ключевых практик, причины такой интерпретации должны быть документально обоснованы. Документальное обоснование поможет оценивающим группам понять, почему определенные практики реализованы тем или иным способом.
Применение профессиональной оценки ведет к вопросу об адекватном качестве производственного процесса. Модель СММ не выдвигает требований к такой адекватности, хотя ею устанавливаются минимальные критерии для «рационального» процесса во многих средах разработки ПО. Цель управления процессами заключается в установлении процессов, способных стать фундаментом для систематического усовершенствования на основе бизнес-потребностей организации.
Каковы же критерии «рационального» производственного процесса? Рациональный процесс должен эффективно наращивать производственный потенциал организации и удовлетворять большинству требований к определенному процессу. Более конкретно — он должен быть проверен на практике, документирован, обязателен, изучен, количественно оценен и иметь возможности для усовершенствования.
Может ли считаться рациональным установленный организацией процесс оценки, основанный на выборе случайных значений? Конечно, этот процесс можно документировать, а затем строго ему следовать. Некоторые могут даже утверждать, что он способен быть таким же реалистичным, как и многие другие методы оценки. Однако большинство профессиональных разработчиков не приемлет «кидание костей» в качестве рационального процесса оценки. Поскольку этот метод подчиняется лишь законам теории вероятностей, его нельзя усовершенствовать.
Насколько далеко ушло от способа «кидания костей» документирование процесса по методу «пойти и спросить Михалыча»? Этот метод может быть очень хорош для оценки. Он может быть даже последователен и воспроизводим, пока Михалыч рядом. Однако он не удовлетворяет нашим критериям, поскольку его не могут изучить другие сотрудники. Этот процесс ориентирован на личность и не может быть воспроизведен без Михалыча, поэтому он не способствует развитию производственного потенциала организации.
Выполнение оценки с использованием каких-либо вариантов метода Дельфи (метода, в котором эксперты в соответствующей области обсуждают поставленные проблемы и вырабатывают согласованные рекомендации по их решению) обычно считается рациональным процессом. Несмотря на то, что метод Дельфи ориентирован на личности, основанная на нем оценка объема удовлетворяет критериям рационального и эффективного процесса, а такая структурированная методика способствует развитию потенциала организации.
Основной смысл профессиональной оценки состоит в выявлении подобных различий. Формальное соответствие целям и адекватное качество бывает трудно отличить друг от друга. Цели подытоживают ключевые практики, которые, в свою очередь, описывают рациональный производственный процесс. Однако рациональность процесса не гарантирует его эффективности в достижении своих целей. Существует множество факторов, способных повлиять на успех организации и проекта. Например, успешный проект создания продукта, который никто не захочет купить, является провалом в коммерческом мире.
Атрибуты адекватности могут интерпретироваться лишь в контексте бизнес-среды и конкретных условий проекта и организации. Подобные оценки адекватности могут выполняться организацией только как часть ее цикла непрерывного усовершенствования производственного процесса. При этом нельзя достичь совершенства, а непрерывное усовершенствование процесса никогда не завершается.