СОВЕРШЕНСТВОВАНИЕ ПРОЦЕССА СОЗДАНИЯ ПО

СОВЕРШЕНСТВОВАНИЕ ПРОЦЕССА СОЗДАНИЯ ПО

Термин «процесс» слишком перегружен. В организациях, ориентированных на создание ПО, существует много процессов разного масштаба. Я буду использовать слово «процесс» в трех различных значениях.
■ Метапроцесс: политика, приемы и практика, которые присущи некоей организации при ведении интенсивного бизнеса, связанного с ПО. В центре этого процесса находятся экономика организации, долговременная стратегия и возврат инвестиций в ПО.
■ Макропроцесс: политика, приемы и практика, которые присущи некоему проекту по созданию законченного ПО с учетом определенных ограничений по стоимости, срокам и качеству. В центре этого процесса находится создание адекватного варианта метапроцесса для конкретного набора ограничений.
■ Микропроцесс: политика, приемы и практика, присущие команде разработчиков некоего проекта и направленные на получение некоторых результатов в процессе создания ПО. Главным для микропроцесса является создание промежуточного продукта адекватного качества с адекватными функциональными возможностями настолько экономично и быстро, насколько это осуществимо на практике.
Эти три уровня процесса несколько перекрывают друг друга, но у них разные цели, участники, метрики, отношения и временной масштаб (см. таблицу 3.4). Макропроцесс — это процесс уровня проекта в целом, который оказывает влияние на модель оценки стоимости, обсуждаемую в данной главе.
Для достижения успеха большинству проектов по созданию ПО требуется невероятно сложная паутина последовательных и параллельных шагов. По мере роста проекта приходится включать дополнительные шаги лишь для того, чтобы управиться с этой сложной паутиной. Все процессы, связанные с проектом, состоят из производительных и непроизводительных видов деятельности. Производительные виды деятельности приводят к осязаемому прогрессу на пути к конечному продукту. Если речь идет о создании ПО, то в эти виды деятельности входят создание прототипа, моделирование, кодирование, отладка и подготовка документации для пользователей. Непроизводительные виды деятельности, которые не имеют непосредственного влияния на конечный продукт, включают в себя подготовку планов и документации, мониторинг хода работ, оценку рисков, финансовые оценки, управление конфигурацией, оценку качества, интеграцию, тестирование, отбраковку и доработку на поздних стадиях, управление, подготовку персонала, бизнес-администрирование, а также решение ряда других задач. К непроизводительным видам деятельности относятся такие работы, которые повышают конечную ценность продукта, но в общем случае, чем меньше сил на них тратится, тем больше усилий может быть направлено на производительные виды деятельности. Целью улучшения процесса является максимизация ресурсов,.
направленных на производительные виды деятельности, и минимизация влияния непроизводительных видов деятельности на такие ресурсы, как персонал, компьютеры и график.
Таблица 3.4.
Три уровня процесса и их атрибуты
Атрибуты
Метапроцесс
Макропроцесс
Микропроцесс
Предмет
Стратегия бизнеса
Проект
Итерация
Цели
Прибыльность стратегии бизнеса.
Конкурентоспособность
Прибыльность проекта.
Управление рисками.
Бюджет проекта, сроки, качество
Управление ресурсами.
Разрешение рисков.
Промежуточный бюджет, сроки, качество
Участники
Лица, ответственные за приобретение, заказники.
Менеджеры организации
Менеджеры проекта Разработчики ПО
Менеджеры.
составляющих.
проектов.
Разработчики ПО
Метрики
Предсказуемость.
проекта.
Получение дохода, контролируемый сегмент рынка
Необходимость уложиться в бюджет и в сроки.
Успешное достижение основных контрольных точек.
Отбраковка и переделка в рамках проекта
Необходимость уложиться в бюджет и в сроки.
Успешное выполнение основных контрольных точек.
Отбраковка и переделка в рамках отдельных итераций/версий
Отношения
Бюрократия против стандартизации
Качество против.
финансовой.
эффективности
Содержание против сроков
Временной.
масштаб
От 6 до 12 месяцев
От 1 года до нескольких лет
От 1 до 6 месяцев
Возможно, кого-то раздражает то, что я отношу отбраковку и переделку на поздних стадиях, а также подготовку персонала к категории непроизводительных видов деятельности, которые следует минимизировать. Я специально определил отбраковку и переделку как позднюю, чтобы отличать их от отбраковки и переделки, являющихся естественным побочным продуктом при создании прототипа. Отбраковка и переделка на ранних стадиях являются производственной необходимостью для большинства проектов, так как позволяют определить бесчисленное множество неизвестных в области принятия решений. Но они крайне нежелательны на поздних стадиях жизненного цикла. Совершенно очевидно, что для хорошего процесса поздние отбраковка и переделка абсолютно излишни.
Многие будут спорить, доказывая, что подготовка персонала не может быть плохой вещью, но мы утверждаем это с точки зрения проекта.
Подготовка персонала является организационной задачей, а не задачей в рамках выполнения проекта. Любому менеджеру проекта, которому приходится нести бремя обучения людей процессам, технологиям или инструментарию, приходится намного хуже, чем менеджеру проекта, который располагает полностью подготовленной рабочей силой. Возможно, обеспечение всех проектов подготовленными работниками не представляется возможным, но при прочих равных условиях привлечение подготовленных людей всегда лучше, чем неподготовленных. В этом смысле подготовка не может рассматриваться как вид деятельности, повышающей конечную ценность продукта.
Качество процесса создания ПО сильно влияет на о^ъем работы, который необходимо выполнить, и, следовательно, на сроки создания программного продукта. На практике отличие хорошего процесса от плохого способно изменять общую оценку стоимости на величину от 50% до 100%, а уменьшение объема работ позволяет сократить сроки выполнения. Лучший процесс может оказать еще более существенное влияние на сокращение времени, требующегося команде для получения представления о продукте известного качества. Почему это так?.
Сокращение сроков возможно по крайней мере по трем направлениям.
1.
Рассматривая процесс, состоящий из N шагов, мы можем повышать эффективность каждого шага.
2.
Рассматривая процесс, состоящий из N шагов, мы можем исключить некоторые шаги, получив процесс, состоящий из М шагов.
3.
Рассматривая процесс, состоящий из N шагов, мы можем использовать более конкурентоспособные виды деятельности или ресурсы.
Многие организационные стратегии, ускоряющие выход продукта на рынок, делают упор на первом направлении. Однако в центре внимания большинства усовершенствований процесса, описываемых в настоящей книге, лежит стремление к достижению результатов по второму и третьему направлениям, в которых сокрыт гораздо больший потенциал. В частности, совершенствуя процесс, необходимо уделять внимание нахождению адекватного решения за минимальное количество итераций и исключению, насколько это возможно, отбраковки и переделки, требующих возврата к более ранним стадиям.
Каждый случай переделки предполагает повторное решение соответствующего множества задач. Представим себе, что команда, завершая последовательные действия по анализу, разработке, кодированию и тестированию некоей функциональной возможности, при тестировании обнаруживает изъян. В этом случае приходится последовательно выполнять процедуры повторной разработки, повторного кодирования и повторного тестирования. Последовательное выполнение задач является самым главным препятствием на пути к сокращению сроков. Несмотря на некоторые технологические приемы, позволяющие исключать из процесса целые шаги, самой важной задачей улучшения процесса является сокращение отбраковки и переделки на поздних стадиях жизненного цикла.
В идеальном мире разработки ПО с безупречно сформулированной проблемой, очевидным пространством решений, командой разработчиков, состоящей из опытных гениев, с необходимыми ресурсами и заинтересованными сторонами, объединенными общими целями, мы могли бы завершить процесс разработки ПО за одну итерацию практически без всяких отбраковок и переделок. Однако мир не идеален, и нам следует так управлять процессом разработки, чтобы вид кривой отбраковок и переделок не влиял на условия достижения успеха любой из заинтересованных сторон. Это утверждение служит основополагающей предпосылкой практически для всех улучшений процесса.