Текст книги "Модель зрелости процессов разработки программного обеспечения"
Автор книги: Марк Паулк
Соавторы: Сьюзен Гарсия,Чарльз Вебер,Мэри Хриссис,Мерилин Буш,Билл Куртис
Жанр:
Программирование
сообщить о нарушении
Текущая страница: 7 (всего у книги 16 страниц)
Производственный менеджер проекта
В сферу ответственности входят все производственные действия проекта. Он является лицом, взаимодействующим с менеджером проекта по вопросам производственных обязательств и контролирующим все производственные ресурсы проекта.
Производственному менеджеру проекта подотчетны проектные группы разработчиков, хотя некоторые действия, такие как разработка инструментария, могут иметь матричные отношения отчетности.
В крупном проекте производственный менеджер является обычно менеджером второго, третьего или четвертого звена. В небольшом проекте или в проектном подразделении производственный менеджер может быть менеджером первого звена (линейным менеджером) или находиться на более высоком уровне.
Линейный менеджер
В сферу ответственности линейного менеджера входит непосредственное управление (включая техническое руководство и администрирование персонала и зарплаты) персоналом и действиями отдельной организационной единицы (например, отдела или проектной группы), состоящей из инженеров-разработчиков и других сотрудников.
Ведущий специалист
Играет роль лидера технической группы по конкретной задаче, который несет техническую ответственность и обеспечивает техническое руководство персоналом, работающим над выполнением этой задачи.
Ведущий специалист обычно подотчетен тому же линейному менеджеру, что и другие сотрудники, выполняющие данную задачу.
Персонал, разработчики, сотрудники
В СММ используется несколько терминов для обозначения исполнителей различных технических ролей, описанных в ключевых практиках СММ. К персоналу относятся те сотрудники, включая ведущих специалистов, которые несут ответственность за выполнение назначенных функций, таких как разработка ПО или управление конфигурацией ПО, но не являются менеджерами.
К разработчикам относятся технические сотрудники (например, аналитики, программисты, инженеры), включая ведущих специалистов, которые выполняют в проекте действия по разработке и сопровождению ПО, но не являются менеджерами.
Термин «сотрудники» в ключевых практиках определяется и ограничивается контекстом своего использования (например, «сотрудник, задействованный в управлении производственным субподрядом»).
Подобное распределение ролей может быть определено и для других инженерных групп, таких как группы системного проектирования и системного тестирования.
Некоторые проекты или организации не нуждаются во взаимно однозначном соответствии между ролями и сотрудниками. Один человек может играть несколько ролей, а каждая роль может выполняться несколькими сотрудниками.
Например, в небольшом, исключительно программном проекте один человек может играть даже шесть ролей: линейный менеджер по системному проектированию, проектный менеджер по системному проектированию, производственный линейный менеджер, производственный менеджер проекта, менеджер проекта и менеджер по управлению конфигурацией ПО.
В несколько более крупном проекте один сотрудник может быть одновременно линейным менеджером по системному проектированию, проектным менеджером по системному проектированию и менеджером проекта, а другой – совмещать роли производственного линейного менеджера и производственного менеджера проекта. Эти два менеджера могут работать в одной или в различных организациях второго звена.
В крупном проекте многие роли, особенно руководящие, обычно выполняются отдельными сотрудниками.
7.4.2. Организационная структура
Для правильной интерпретации ключевых практик, входящих в модель зрелости процессов разработки, необходимо разобраться в фундаментальных концепциях организации, проекта и группы. Ниже дается определение использования этих концепций в СММ.
Организация
Представляет собой единицу компании или другой сущности (например, государственное учреждение или обслуживающий филиал), целиком управляющую многими проектами. Все проекты внутри организации подчиняются общему руководителю высшего уровня и общим политикам.
Проект
Является предприятием, которое требует совместных усилий, сосредоточенных на разработке и/или сопровождении конкретного продукта. Продукт может включать в себя оборудование, программное обеспечение и другие компоненты. Обычно проект имеет собственное финансирование, отчетность и график поставок.
Группа
Представляет собой совокупность отделов, менеджеров и сотрудников, которые несут ответственность за набор задач или операций. Состав группы может варьироваться от одного или нескольких совместителей из различных отделов до нескольких сотрудников, занятых этой деятельностью полный рабочий день.
Ниже описаны группы, наиболее часто встречаемые в СММ.
Группа разработки ПО
Представляет собой коллектив сотрудников (руководителей и технических специалистов), которые несут ответственность за проектные операции по разработке и сопровождению ПО (т. е. анализ требований, проектирование, кодирование и тестирование).
В группу разработки не входят группы, косвенно связанные с разработкой, такие как группы обеспечения качества ПО, управления конфигурацией ПО и инженерии производственного процесса. Эти группы входят в число «групп, связанных с разработкой ПО».
Группы, связанные с разработкой ПО
Представляет собой коллектив сотрудников (руководителей и технических специалистов), чьи обязанности заключаются не в непосредственном участии в процессах разработки и сопровождения ПО, а в их поддержке.
Примерами подобных инженерных областей могут служить обеспечение качества ПО и управление конфигурацией ПО.
Группа инженерии производственного процесса
В группу входят специалисты, занимающиеся определением, сопровождением и улучшением производственного процесса организации. В ключевых практиках эта группа обычно называется «группой, ответственной за операции ППО».
Группа системного проектирования
Является коллективом сотрудников (руководителей и технических специалистов), которые несут ответственность за определение системных требований; отнесение этих требований к оборудованию, ПО и другим компонентам; определение интерфейсов между оборудованием, ПО и другими компонентами; мониторинг проектирования и разработки этих компонентов, обеспечивающий их соответствие техническим требованиям.
Группа системного тестирования
Группа системного тестирования представляет собой коллектив сотрудников (руководителей и технических специалистов), которые несут ответственность за планирование и выполнение независимого системного тестирования ПО, проводимого в целях проверки программного продукта на соответствие требованиям.
Группа обеспечения качества ПО
Представляет собой коллектив сотрудников (руководителей и технических специалистов), которые несут ответственность за планирование и проведение проектных мероприятий по обеспечению качества, поддерживающих соответствие этапам и стандартам производственного процесса. Организационные вопросы обеспечения качества ПО обсуждаются в разделе 4.4.3.
Группа управления конфигурацией ПО
Представляет собой коллектив сотрудников (руководителей и технических специалистов), которые несут ответственность за планирование, координацию и реализацию формальных действий по управлению конфигурацией проекта разработки ПО.
Группа обучения
Состоит из сотрудников (руководителей и технических специалистов), отвечающих за координацию и проведение учебных мероприятий организации. Эта группа обычно готовит и проводит большинство учебных курсов и координирует использование других средств обучения.
7.4.3. Независимость и организационная структура
Организация должна следить за корректностью интерпретации и выполнения ключевых практик, реализующих концепцию независимости. Это имеет особенно большое значение для небольших проектов и организаций. Если технические или организационные пристрастия могут повлиять на качество продукта или проектные риски, ключевые практики рекомендуют использовать концепцию независимости. Два примера подобных практик:
Группа обеспечения качества (SQA) имеет канал отчетности перед старшим руководством, который независим от менеджера проекта, группы разработки ПО и других групп, связанных с разработкой (обязательство 1.2 из раздела «Обеспечение качества ПО»).
Системные и приемочные тестовые сценарии и процедуры планируются и готовятся группой тестирования, которая независима от разработчиков ПО (действие 7.3 из раздела «Инженерия разработки программного продукта»).
Необходимость независимого системного и приемочного тестирования обусловлена техническими факторами. Эта независимость гарантирует, что сотрудники группы тестирования не подвергнутся влиянию решений, принятых разработчиками или специалистами по технической поддержке ПО при его проектировании и реализации.
Независимость группы обеспечения качества диктуется тем, что график и бюджет проекта не должны влиять на работу членов этой группы. Отсутствие организационной независимости может значительно усложнить обеспечение эффективной оперативной независимости. Например, сотрудник, подотчетный менеджеру проекта, может быть вынужден прервать тестирование несмотря на существование серьезных проблем с совместимостью продукта.
Организации должны определить такую организационную структуру, которая поддерживала бы независимость операций, подобных обеспечению качества, в контексте своих стратегических бизнес-целей и бизнес-среды.
Независимость должна:
обеспечивать сотрудникам группы обеспечения качества организационную свободу, позволяющую им быть «глазами и ушами» старшего руководства проекта;
исключить вынесение оценки работы сотрудников группы обеспечения качества со стороны руководства того проекта, о котором они подают отчет;
обеспечить уверенность старшего руководства в объективности получаемых отчетов о производственном процессе и продуктах проекта.
Поскольку ключевые практики допускают различные трактовки критериев независимости, организация должна получить профессиональную оценку их соответствия целям группы ключевых процессов.
7.5. Применение профессиональной оценки
Чтобы обеспечить полный набор принципов, применяемых к самым различным ситуациям, в некоторых ключевых практиках изначально заложена возможность гибкой трактовки. В ключевых практиках используются такие размытые фразы, как «заинтересованные группы», «по обстановке» или «по мере необходимости». Значение таких нечетких терминов в ключевых практиках обычно уточняется различными примерами, приводимыми, по крайней мере, при первом употреблении термина. Эти фразы могут иметь различные значения для разных организаций, для разных проектов внутри одной организации или для одного проекта в различные моменты его жизненного цикла. Для каждого проекта или организации смысл этих фраз должен быть уточнен в соответствии с конкретной ситуацией.
Уточнение этих фраз требует от организации учета общего контекста их использования. При этом встает вопрос соответствия конкретной интерпретации одной или нескольких фраз целям группы ключевых процессов. Ответ на этот вопрос можно дать лишь с помощью профессиональной оценки.
Интерпретация ключевых практик и их значения для целей группы ключевых процессов также должна проводиться путем профессиональной оценки. Как правило, группа ключевых процессов описывает фундаментальный набор действий, которые должны выполняться любыми разрабатывающими организациями вне зависимости от их размера или их продукции. Однако ключевые практики СММ должны интерпретироваться в контексте бизнес-среды и конкретных условий организации. Такая интерпретация должна основываться на хорошем знании СММ, самой организации и ее проектов. Эту интерпретацию можно структурировать с помощью содержания целей групп ключевых процессов. Если реализация групп ключевых процессов отвечает их целям, но существенно отличается от ключевых практик, причины такой интерпретации должны быть документально обоснованы. Документальное обоснование поможет оценивающим группам понять, почему определенные практики реализованы тем или иным способом.
Применение профессиональной оценки ведет к вопросу об адекватном качестве производственного процесса. Модель СММ не выдвигает требований к такой адекватности, хотя ею устанавливаются минимальные критерии для «рационального» процесса во многих средах разработки ПО. Цель управления процессами заключается в установлении процессов, способных стать фундаментом для систематического усовершенствования на основе бизнес-потребностей организации.
Каковы же критерии «рационального» производственного процесса? Рациональный процесс должен эффективно наращивать производственный потенциал организации и удовлетворять большинству требований к определенному процессу. Более конкретно – он должен быть проверен на практике, документирован, обязателен, изучен, количественно оценен и иметь возможности для усовершенствования.
Может ли считаться рациональным установленный организацией процесс оценки, основанный на выборе случайных значений? Конечно, этот процесс можно документировать, а затем строго ему следовать. Некоторые могут даже утверждать, что он способен быть таким же реалистичным, как и многие другие методы оценки. Однако большинство профессиональных разработчиков не приемлет «кидание костей» в качестве рационального процесса оценки. Поскольку этот метод подчиняется лишь законам теории вероятностей, его нельзя усовершенствовать.
Насколько далеко ушло от способа «кидания костей» документирование процесса по методу «пойти и спросить Михалыча»? Этот метод может быть очень хорош для оценки. Он может быть даже последователен и воспроизводим, пока Михалыч рядом. Однако он не удовлетворяет нашим критериям, поскольку его не могут изучить другие сотрудники. Этот процесс ориентирован на личность и не может быть воспроизведен без Михалыча, поэтому он не способствует развитию производственного потенциала организации.
Выполнение оценки с использованием каких-либо вариантов метода Дельфи (метода, в котором эксперты в соответствующей области обсуждают поставленные проблемы и вырабатывают согласованные рекомендации по их решению) обычно считается рациональным процессом. Несмотря на то, что метод Дельфи ориентирован на личности, основанная на нем оценка объема удовлетворяет критериям рационального и эффективного процесса, а такая структурированная методика способствует развитию потенциала организации.
Основной смысл профессиональной оценки состоит в выявлении подобных различий. Формальное соответствие целям и адекватное качество бывает трудно отличить друг от друга. Цели подытоживают ключевые практики, которые, в свою очередь, описывают рациональный производственный процесс. Однако рациональность процесса не гарантирует его эффективности в достижении своих целей. Существует множество факторов, способных повлиять на успех организации и проекта. Например, успешный проект создания продукта, который никто не захочет купить, является провалом в коммерческом мире.
Атрибуты адекватности могут интерпретироваться лишь в контексте бизнес-среды и конкретных условий проекта и организации. Подобные оценки адекватности могут выполняться организацией только как часть ее цикла непрерывного усовершенствования производственного процесса. При этом нельзя достичь совершенства, а непрерывное усовершенствование процесса никогда не завершается.
ГЛАВА 8. УРОВЕНЬ 2: ПОВТОРЯЕМЫЙ УРОВЕНЬ
8.1. Управление требованиями
Группа ключевых процессов для уровня 2: повторяемый уровень.
Цель управления требованиями состоит в том, чтобы заказчик и разработчики смогли полностью согласовать требования, выдвигаемые к проекту разработки ПО.
Управление требованиями включает в себя достижение и поддержку соглашения с заказчиком по требованиям к проекту разработки. Это соглашение носит название «системных требований, установленных для ПО». Под «заказчиком» может подразумеваться группа системного проектирования, группа маркетинга, какая-либо другая внутренняя организация или внешний заказчик. Данное соглашение охватывает как технические, так и прочие требования (например, сроки поставки). Это соглашение формирует основу для оценки затрат, планирования, выполнения и отслеживания производства работ по проекту в течение всего жизненного цикла ПО.
Отнесение системных требований к ПО, оборудованию и другим компонентам системы (например, людям) может выполняться группой, внешней по отношению к группе разработки (например, группой системного проектирования), причем разработчики не должны непосредственно контролировать это распределение. Группа разработки предпринимает в рамках проекта соответствующие шаги, обеспечивающие контроль над теми требованиями, которые попадают в сферу ответственности разработчиков, а также их документирование.
Чтобы обеспечить этот контроль, группа разработки рассматривает исходные и переработанные системные требования к ПО и пытается решить возможные проблемы до того, как требования будут внедрены в проект разработки. Любое изменение системных требований сопровождается изменениями затронутых планов разработки, промежуточных продуктов и операций в целях их согласования с обновленными требованиями.
Цели
Цель 1
Установление контроля над системными требованиями к ПО в целях формирования базовой линии, используемой разработчиками ПО и руководством проекта.
Цель 2 Поддержка согласованности планов разработки, продуктов и операций с системными требованиями, отнесенными к ПО.
Обязательства по выполнению
Обязательство 1 Проект следует документу организационной политики управления системными требованиями, отнесенными к ПО.
В рамках этих практик системные требования, отнесенные к ПО, называются «установленными требованиями».
Установленные требования являются подмножеством системных требований, которые должны быть реализованы в программных компонентах системы. Установленные требования являются основной входной информацией для плана разработки ПО. Анализ требований к ПО позволяет конкретизировать, уточнить и документировать установленные требования.
Эта политика обычно состоит из следующих положений:
1. Установленные требования должны быть документированы.
2. Установленные требования рассматриваются:
? производственными менеджерами,
? другими задействованными группами.
Примеры групп, задействованных в проекте:
группа системного тестирования,
разработки ПО (включая все подгруппы, например, проектирования ПО),
системного проектирования,
обеспечения качества ПО,
управления конфигурацией ПО,
управления документацией.
3. Изменение установленных требований должно сопровождаться согласованными изменениями планов разработки, промежуточных продуктов и операций.
Необходимые предпосылки
Предпосылка 1 Для каждого проекта устанавливается сфера ответственности за анализ системных требований и их отнесение к оборудованию, ПО и другим компонентам системы.
Анализ и отнесение системных требований не входит в сферу ответственности группы разработчиков, но является предпосылкой для их работы.
Эта сфера ответственности включает в себя следующее:
1. Управление системными требованиями, их документирование и отнесение к соответствующим элементам в течение всего проекта.
2. Влияние на изменения системных требований и их отнесение к элементам проекта.
Предпосылка 2 Установленные требования должны быть документированы.
К установленным требованиям относятся следующие:
1. Требования нетехнического характера (т. е. соглашения, условия и договорные сроки), которые определяют операции проекта разработки ПО либо влияют на них.
Примеры соглашений, условий и договорных сроков: поставляемые продукты, сроки поставки, этапы проекта.
2. Технические требования к ПО. Примеры технических требований:
пользовательские, операторские, вспомогательные функции или функции интеграции; требования к рабочим характеристикам; проектные ограничения; язык программирования; требования к интерфейсу.
3. Критерии приемки, по которым будет оценено соответствие программных продуктов установленным требованиям.
Предпосылка 3 На управление установленными требованиями должны быть выделены соответствующие ресурсы и финансирование.
1. Для управления установленными требованиями должны быть назначены сотрудники, обладающие опытом и квалификацией как в прикладной области, так и в области разработки ПО.
2. Действия по управлению требованиями должны быть обеспечены вспомогательными инструментальными средствами.
Примеры вспомогательных инструментальных средств:
электронные таблицы,
инструменты управления конфигурацией,
инструментарий для отслеживания изменений,
инструментарий для управления тестированием.
Предпосылка 4 Члены группы разработки ПО и других смежных групп должны пройти соответствующее обучение для выполнения своих задач по управлению требованиями.
Примеры тем учебных занятий:
используемые в проекте методы, стандарты и процедуры;
предметная область.