Вы находитесь на страницах старой версии сайта.
Переходите на новую версию Interface.Ru

Принципы совершенствования производственных процессов по разработке ПО

© Ян Спенс (Ian Spence),
Статья была опубликована на сайте http://www.citforum.ru/

Нет ничего более трудного, чем введение нового порядка. Автору новаций придется столкнуться с враждебностью тех, кому было хорошо раньше, и с равнодушием тех, кому может стать хорошо в новых условиях.

- Никколо Макиавелли, 1513 г.

Изменить процесс разработки ПО достаточно трудно, даже применительно к одному небольшому пилотному проекту. Если же вы имеете дело с большим проектом, программой, крупным подразделением или организацией, то сложность возрастает многократно. В данной статье мы расскажем о том, что делает изменение крупномасштабного процесса столь сложным, обсудим значение формализованных программ совершенствования производственного процесса в реализации эффективных организационных изменений и представим ряд проверенных практикой принципов, которым можно следовать в целях успешного осуществления программы изменений.

Изменение производственных процессов есть изменение организационной структуры

Прежде чем приступить к обсуждению программ совершенствования производственных процессов (Process Improvement Programs) и их результатов, следует сделать шаг назад и познакомиться с основными концепциями, которые используются в любой компании, разрабатывающей программное обеспечение. В основе всей организации лежат четыре фундаментальных понятия:

Между этими четырьмя понятиями имеются следующие взаимосвязи:

В этой модели отсутствует то, что связывает воедино эти понятия, - это корпоративная культура (см. рисунок).

Корпоративная культура составляет инфраструктуру компании-разработчика ПО

Рис. Корпоративная культура составляет инфраструктуру компании-разработчика ПО

Корпоративную культуру можно рассматривать как философию и методологию, которые совместно формируют облик компании, спектр производимых ею продуктов, а также круг ее клиентов.

Для компаний, бизнес которых связан с программной инженерией, корпоративная культура представляет собой сочетание базовой деловой культуры и методики ведения бизнеса, культуры вышестоящей компании, операционных процедур и среды разработки программного обеспечения (software development environment). Последняя включает в себя все то, что нужно для разработки проекта, развертывания и сопровождения продукта, в частности, производственные процессы, инструментальные средства, руководящие принципы, шаблоны и технологии.

Это также та составляющая, которая напрямую влияет на эффективность компании, занимающейся разработкой ПО, и на которую большинство организаций воздействуют, когда пытаются добиться повышения эффективности своей деятельности. Основная мысль этой статьи состоит в том, что нельзя воздействовать на среду разработки, и, следовательно, на процесс разработки ПО, отдельно от корпоративной культуры. Любое значительное изменение среды разработки программного обеспечения будет, и должно, оказывать влияние на корпоративную культуру.

В действительности, чтобы добиться устойчивого улучшения эффективности деятельности компании, разрабатывающей ПО, необходимо:

Наиболее эффективный метод внесения фундаментального изменения в среду разработки программного обеспечения обычно состоит в изменении основного процесса разработки. Это предполагает наличие программы изменений организационной структуры.

Почему так трудно изменить организационную структуру?

Чтобы идти в ногу со временем и реагировать на изменения внешней среды, компании сами должны изменяться. Если отказываться и отгораживаться от перемен, потребность в изменениях будет накапливаться, пока не произойдет кризис. Так почему же организационные изменения настолько трудно осуществить, что дело доходит до кризисов?

К несчастью, людям свойственно противиться переменам. На деле, то из-за инертности, то из-за страха перед неизвестным, люди часто противодействуют изменениям или, по меньшей мере, замедляют до приемлемого с их точки зрения темпа. Чтобы изменить организационную структуру, нужно представлять себе эти силы и заставлять их помогать, а не мешать изменениям. В своей статье "Affecting Organizational Change" Роджер Хебден (Roger Hebden) сформулировал движущие силы изменений простой формулой:

неудобство + желание = изменение

Основной смысл ее заключается в том, что изменение в конечном итоге вызвано эмоциями. Испытываемое неудобство и желание его исправить являются движущими силами для совершения изменения. Неудобство служит катализатором, инициирующим изменение, а желание - той силой, которая ведет нас к цели. Для успешного развития необходимо понимать и уметь управлять уровнем восприятия неудобства и степенью желания. Д. Коннор назвал это "устранением боли и подбором лекарства".

Устранение боли означает выявление и формулирование ключевой проблемы (как показывает наш опыт, основная проблема часто заключена в процессе, используемом организацией, или в его отсутствии), а также обоснование необходимости изменения. Подбор лекарства предусматривает два действия: предложение решения и планирование изменений. Недостаточно описать идеальную цель. Чтобы обозначить решение, требуется провести весь путь от точки, где вы находитесь, до той точки, куда вы намерены попасть, при этом достаточно четко определяя промежуточные этапы.

Изменения не происходят по одной лишь указке руководства. Легко рассуждать о проблемах и решениях. Есть одно общее требование к тому, какими должны быть проекты: каждый проект должен следовать методологии Rational Unified Process. Однако само по себе оно мало чем помогает изменениям.

Чтобы успешно реализовать изменения организационной структуры, компания должна:

Если какое-то крупномасштабное организационное изменение завершается неудачей, это может быть обусловлено одной из следующих причин:

Именно такие проблемы нетехнического характера препятствуют многим компаниям в их попытках фундаментального изменения среды разработки ПО.

Внедрение программы совершенствования процессов

Изменения производственных процессов оказывают более глубокое воздействие на компании и сотрудников, нежели изменения технологий и инструментальных средств. Ведь они затрагивают основные убеждения и ценности людей, меняя представления персонала о работе. В ряде случаев изменения могут доходить даже до системы поощрений, физических условий труда, культуры бизнеса и стиля поведения. Изменения также воздействуют на работу на уровне проектов, подразделений и взаимоотношений с другими организациями. Как отмечает Айвар Джейкобсон в своей книге "Software Reuse: Architecture, Process, and Organization for Business Success", подобного рода изменение процессов равносильно модернизации самой структуры разработки ПО.

Чтобы организовать изменения такого рода, при осуществлении руководства, при планировании, взаимодействии, продвижении, реализации и оценке результатов необходимо следовать формализованной программе совершенствования производственных процессов.

Такая программа должна затрагивать следующие аспекты:

Также следует принимать во внимание более широкое сообщество партнеров и заинтересованных лиц. Оно включает следующие категории:

Программа совершенствования процессов является в первую очередь агентом осуществления организационных изменений. Ее основной вклад в осуществление изменений состоит в том, чтобы улучшить процесс разработки ПО и набор соответствующих инструментальных средств поддержки.

Подход к совершенствованию процессов на основе практического опыта

Наш опыт показывает, что повысить шансы программы Process Improvement Program на успех может применение ряда основных принципов:

Далее каждый из этих принципов будет рассмотрен более детально.

Запускайте программу как коммерческую - думайте о возврате инвестиций

Организовывайте и планируйте действия по совершенствованию производственного процесса так, как вы планируете любые другие действия в бизнесе. Установите промежуточные этапы, выделите ресурсы, руководите и добивайтесь исполнения, как для любой другой программы. При планировании действий думайте о возврате инвестиций, сосредоточьтесь на тех компонентах, для которых отдача превосходит затраты.

В некоторых программах совершенствования процессов до начала реализации проекта слишком много времени и ресурсов тратится на выработку подробных руководящих инструкций, а также на подготовку дополнительных материалов. Здесь можно выделить четыре основные проблемы:

Ни одна компания не согласится ждать несколько лет, пока процесс будет доведен до совершенства и полностью описан. Никто не будет так долго ждать конкретных усовершенствований и отдачи от вложенных средств. Программа совершенствования процессов, какую бы конечную цель она ни ставила, должна предусматривать значительную выгоду для затрагиваемых ею проектов.

Осмысление существующей среды

Прежде чем приступать к реализации любой серьезной программы по совершенствованию процессов, необходимо четко уяснить себе существующую среду разработки, в том числе:

Без понимания этих основ нельзя принимать решения о расстановке приоритетов по совершенствованию процесса и о критериях оценки усовершенствований.

Используйте готовые, проверенные решения - не изобретайте велосипед

Программа совершенствования процесса должна основываться на прочном фундаменте. Для его построения есть три источника:

Помните, что целью является не преобразование среды "одним мощным ударом", а постепенное совершенствование. В связи с этим программа совершенствования процессов должна быть направлена на основной вид деятельности компании, все предложения должны быть проверены применительно к конкретным проектам с целью удостовериться, что они ведут к росту, а не к снижению эффективности бизнеса.

Добивайтесь реальных, постепенных улучшений

Осуществляйте изменения среды, процессов и инструментальных средств постепенно, чтобы не перегружать группы разработчиков проектов чересчур большим потоком проблем. Внедряйте новую среду по частям, шаг за шагом. Тем самым вы повысите вероятность успеха, а при тщательном анализе организации работ будете знать, какие части процесса следует затронуть в первую очередь. Обычно лучше всего начинать с наиболее проблемных областей.

Например, возможен такой подход:

Сосредоточьтесь на проектах и продуктах, а не на организационной структуре

Во многих инициативах по совершенствованию процессов уделять внимание организационной структуре, связанной с поддержкой желаемого процесса, пытаются еще до того, как сам процесс будет проверен или одобрен. При этом рассуждают так: если расставить все компоненты по нужным местам, они автоматически будут правильно работать и выдавать правильные результаты. Другой типичный вариант рассуждений: если построить структуру, все остальное заработает само по себе. Такой подход в лучшем случае является наивным, а в худшем - пагубным.

Организационная структура должна зависеть от производственных процессов, а не наоборот. Выбираемый процесс должен зависеть от проектов, реализуемых вашей компанией, и от продуктов, производимых ею. Создать оптимальную организационную структуру - что является целью программы совершенствования процессов - можно только при наличии процесса. Требуемая организационная структура должна стать органичным выражением общего успеха программы совершенствования процессов. Фактически для разработки, создания и внедрения продуктов в соответствии с программой совершенствования процессов обычно необходим ряд промежуточных переходных организационных структур.

Критерии оценки эффективности организационной структуры те же, что и для программы совершенствования процессов: качество производимых продуктов и эффективность проектов, в соответствии с которыми они производятся. Прежде чем приступать к серьезной реструктуризации самой компании, сосредоточьте свое внимание на продуктах и проектах.

Любой процесс, рекомендованный программой совершенствования процессов, должен закладывать прочную основу для непрерывной эволюции номенклатуры продуктов, производимых компанией. Процесс должен быть масштабируемым, способным к непрерывному совершенствованию и развитию вместе с тем бизнесом, которому он содействует. По мере роста и изменения бизнеса сам производственный процесс начинает диктовать и формировать соответствующую организационную структуру.

Наиболее успешные программы совершенствования процессов начинаются с небольшой работы, ориентированной на конкретные проекты, при сохранении существующей структуры. Помните: консультанты, центры передового опыта, лучшие команды разработчиков, ударные группы и т.д. - это всего лишь инструменты, которые используются как часть действующей программы совершенствования процессов.

Применяйте методы убеждения, а не принуждения. Помогайте, а не критикуйте

Руководители-наставники - движущая сила изменений. Опыт показывает, что роль наставников крайне важна для успешного внедрения нового процесса. Без этого существует риск, что люди вернутся к старым привычным условиям работы.

Выделите необходимые ресурсы и тщательно спланируйте руководство. В программе совершенствования процессов необходимо предусмотреть ресурсы и средства для руководящей деятельности и наставничества при принятии проектов и адаптации производственного процесса. Затраты на одобрение нового процесса не должны идти только на принятие проектов. Наряду с поддержкой штата разработчиков проекта важно, чтобы ответственный за процесс работал совместно с руководителем проекта и оказывал ему содействие. Это гарантирует, что изменение процесса и работа над проектом будут положительно влиять друг на друга.

Руководитель-наставник должен сосредоточиться на передаче знаний и делегировании ответственности участникам команды, работающей над проектом, и в конечном итоге - нивелировании своей роли. Наставники также должны помнить о своей доле ответственности за реализацию программы совершенствования процесса, включая:

Некоторые компании используют пассивный подход к совершенствованию процессов, основанный на критике. Вместо того, чтобы активно работать с проектами для продвижения и освоения новых процессов, они пытаются добиться успеха, применяя критику и угрозы. Такой "принудительный" подход является в корне неверным, поскольку освоение нового процесса в рамках проектов практически всегда запаздывает и в конечном итоге мешает, а не способствует как принятию нового процесса, так и работе над проектом. Во многих случаях без руководителя-наставника вся реализация нового процесса оканчивается неудачей.

Распределение ответственности за производственный процесс

Распределение ответственности за осуществление процесса среди участников проекта способствует развитию чувства сопричастности, снижает сопротивление изменениям и дает возможность применить опыт сотрудников на благо всей компании. Процесс будет реализован более качественно, если реальные специалисты - люди, которые работают над проектом - сами будут принимать участие в его разработке. Распределение ответственности снижает вероятность того, что проекты будут слишком сильно зависеть от сторонних консультантов, и помогает участникам проекта почувствовать себя частью программы, а не ее потенциальными жертвами.

Следует как можно скорее исходя из уровня квалификации выделить сотрудникам, работающим над проектами, их собственные зоны ответственности за совершенствование производственного процесса. Это должны быть люди, хорошо знающие свою область, способные руководить другими участниками проекта и являющиеся сторонниками применения программы совершенствования процессов к данному проекту.

Они должны нести основной груз ответственности за формирование и выпуск отдельных составных частей процесса, а также должны помогать тем, кто отвечает за другие части процесса, в определении, настройке и описании процесса.

Информирование и привлечение людей

Наиболее серьезная угроза для любого организационного изменения кроется в естественном сопротивлении сотрудников любым переменам. Внедрение новых процессов и инструментальных средств подразумевает необходимость изменения подходов к ведению деятельности и в этой связи в лучшем случае порождают массовое неудовольствие. При этом есть риск возникновения негативной цепной реакции: отрицательное отношение может привести к плохим результатам, что порождает еще более негативное отношение и т.д.

Для предотвращения такой нежелательной ситуации можно предпринять следующие действия:

Программа совершенствования процессов как агент изменения

Программа совершенствования процессов - это механизм для осуществления изменений, а не структурное подразделение компании. Хотя на начальном этапе программа будет отвечать за поддержку формирования среды разработки ПО и доведение ее до оптимального состояния, она также должна противодействовать чрезмерной централизации и гигантомании.

Как мы отмечали, основные препятствия на пути успешного осуществления организационных изменений носят политический и личностный характер и не связаны с методологией, образом действий и инструментальными средствами. Руководителям программы следует иметь в виду следующие моменты:

Для отдельных проектов также будет необходима настройка процессов с учетом ограничений, определяемых корпоративной культурой. Процесс должен учитывать это и предоставлять механизм для обратной передачи отдельных усовершенствований процесса в программу совершенствования, чтобы сделать их доступными для всей компании.

Пользуйтесь существующей средой разработки программного обеспечения (т.е. применяйте то, что у вас есть). Используйте концепции, методы, инструменты и методики предлагаемого решения для создания самого решения. Например:

Фактически этот совет применим к большинству затрагиваемых программой областей: выполняйте все действия с использованием нового процесса, которому, по вашему плану, должна следовать компания.

Жизненный цикл совершенствования процесса

Если удалось преуспеть в реализации программы совершенствования процессов, то совершенствование самого производственного процесса станет одним из важнейших, базовых принципов вашей корпоративной культуры. Программа совершенствования процессов может никогда не завершаться; она будет продолжать функционировать в соответствии с основным итеративным циклом, представленным на рисунке:

Цикл функционирования программы совершенствования процессов

Рис. Цикл функционирования программы совершенствования процессов

Current process

Текущий процесс

1. Assess Current State 1. Оценка текущего положения
2. Set (or Revise) Goals 2. Установка (или корректировка) целей
3. Identify Risks 3. Определение рисков
4. Plan Process Implementation 4. Планирование реализации процесса
5. Execute Process Implementation 5. Осуществление реализации процесса
6. Evaluate Process Implementation 6. Оценка реализации процесса
New Process Completely Implemented Новый процесс полностью реализован

Сама программа совершенствования процессов состоит из нескольких фаз, и все они следуют циклу, представленному на рис. 3. Каждая фаза предусматривает планирование и реализацию для конкретного набора усовершенствований процесса в рамках основной инфраструктуры процесса, причем с возможностью ее расширения. По мере того, как процесс становится частью корпоративной культуры, вся компания должна двигаться в направлении непрерывного совершенствования процессов (см. рисунок).

Непрерывное совершенствование процесса

Рис. Непрерывное совершенствование процесса

На ранних фазах основное внимание уделяется созданию среды разработки ПО. После того, как она полностью реализована, на последующих фазах программы осуществляется настройка, сопровождение и поддержка. Следует постоянно искать возможности совершенствования процесса. Необходимо извлекать уроки из опыта, постоянно развивать и совершенствовать как производственный процесс, так и корпоративную культуру.

Масштаб, количество, содержание и продолжительность фаз в составе программы зависят от того, насколько детально известна структура компании, состояние текущих процессов и область действия программы совершенствования. В базе знаний RUP имеется подробное руководство с примерами типовых реализаций процессов и используемых подходов.

Другим важнейшим источником для получения руководящих указаний является Институт проблем разработки программного обеспечения (Carnegie Mellon Software Engineering Institute). Помимо создания модели Capability Maturity Model® for Software (CMM, модель зрелости для ПО), которая сама по себе выступает в качестве каркаса для совершенствования процессов, Институтом программной инженерии SEI (Carnegie Mellon Software Engineering Institute) была разработана модель IDEAL, которая служит ориентиром при планировании и реализации эффективной программы совершенствования процесса разработки ПО.5 Эта модель, основанная на CMM, предлагает более формальный и подробно документированный итеративный жизненный цикл, чем простая модель, представленная на рис. 3.

Выводы

разрабатывающей ПО, необходимо внедрить потребность самосовершенствования в саму основу корпоративной культуры и придерживаться комплексного подхода, при котором непрерывно совершенствуется поддержка всех аспектов деятельности компании. Это предполагает развертывание программы организационных изменений.

Наиболее эффективный метод реализации фундаментальных изменений в среде разработки ПО состоит в изменении основного процесса разработки с помощью программы совершенствования производственного процесса. Программа предусматривает планирование и руководство, как и любая другая бизнес-программа, с четко выраженной ориентацией на получение прибыли от вложенных средств и с реализацией в несколько этапов.

Советы по стратегии достижения успеха:

Участникам проектных команд, отвечающим за реализацию программы совершенствования процессов, следует:

Не следует пытаться построить универсальный производственный процесс на все случаи жизни. Процесс всегда будет требовать локальной адаптации; при этом он в нем видятся три составляющие:

Реализация нового производственного процесса, новых инструментальных средств и, возможно, новой технологии делает график выполнения проектов разработки ПО более изменчивым. Позаботьтесь о выделении достаточного времени и ресурсов для реализации процесса, обучения людей и других мероприятий на всех итерациях его жизненного цикла. Помните: при выполнении программы совершенствования процессов необходимо постоянно информировать всех заинтересованных лиц и вовлекать их в работу.

Литература

Книги и статьи

  1. D. Conner, Managing at the Speed of Change. Random House, 1992.
  2. J. Jellison, Overcoming Resistance: A Practical Guide to Producing Change in the Workplace. Simon & Schuster, 1993.
  3. Ivar Jacobson, Martin Griss, and Patrik Jonsson, Software Reuse: Architecture, Process and Organization for Business Success. Addison-Wesley, 1997.
  4. Roger Hebden, "Affecting Organizational Change." Rational Software, 1995.
  5. Mark C. Paulk, Bill Curtis, Mary Beth Chrissis, and Charles V. Weber, "Capability Maturity Model for Software, Version 1.1." Software Engineering Institute, CMU/SEI-93-TR-24, DTIC Number ADA263403, февраль 1993.
  6. Mark C. Paulk, Charles V. Weber, Suzanne M. Garcia, Mary Beth Chrissis, and Marilyn W. Bush, "Key Practices of the Capability Maturity Model, Version 1.1." Software Engineering Institute, CMU/SEI-93-TR-25, DTIC Number ADA263432, февраль 1993.
  7. Robert McFeeley, IDEAL: A User's Guide for Software Process Improvement. Software Engineering Institute CMU/SEI-96-HB-001, февраль 1996.

Rational Unified Process

При написании этой статьи активно использовались материалы из следующих разделов курса Environment Discipline в составе базы знаний Rational Unified Process (RUP):

Дополнительная информация

За дополнительной информацией обращайтесь в компанию Interface Ltd.

Обсудить на форуме IBM Rational Software

Рекомендовать страницу

INTERFACE Ltd.
Телефон/Факс: +7 (495) 925-0049
Отправить E-Mail
http://www.interface.ru
Rambler's Top100
Ваши замечания и предложения отправляйте редактору
По техническим вопросам обращайтесь к вебмастеру
Дата публикации: 14.02.06