Тяжеловесные и облегченные процессы


 

В XXI веке потребности общества в программном обеспечении информационных технологий достигли экстремальных значений. Программная индустрия букваль­но «захлебывается» от потока самых разнообразных заказов. «Больше процессов

разработки, хороших и разных!» — скандируют заказчики. «Сейчас,сейчас! Толь­ко об этом и думаем!» — отвечают разработчики.

Традиционно для упорядочения и ускорения программных разработок предлага­лись строго упорядочивающие тяжеловесные (heavyweight) процессы. В этих про­цессах прогнозируется весь объем предстоящих работ, поэтому они называются прогнозирующими (predictive) процессами. Порядок, который должен выполнять при этом человек-разработчик, чрезвычайно строг— «шаг вправо, шаг влево-виртуальный расстрел!». Иными словами, человеческие слабости в расчет не при­нимаются, а объем необходимой документации способен отнять покой н сон у «со­вестливого» разработчика.

В последние годы появилась группа новых, облегченных (lightweight) процессов [29]. Теперь их называют подвижными (agile) процессами [8], [25], [36]. Они при­влекательны отсутствием бюрократизма, характерного для тяжеловесных (прогно­зирующих) процессов. Новые процессы должны воплотить в жизнь разумный ком­промисс между слишком строгой дисциплиной и полным ее отсутствием. Иначе говоря, порядка в них достаточно для того, чтобы получить разумную отдачуотразработчиков.

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

Более того, подвижные процессы учитывают особенности современного заказчи­ка, а именно частые изменения его требований к программному продукту. Извест­но, что для прогнозирующих процессов частые изменения требований подобны смерти. В отличие от них, подвижные процессы адаптируют изменения требова­ний и даже выигрывают от этого. Словом, подвижные процессы имеют адаптив­ную природу.

Таким образом, в современной инфраструктурепрограммной инженерии суще­ствуют два семейства процессов разработки:

- семейство прогнозирующих (тяжеловесных) процессов;

- семейство адаптивных (подвижных, облегченных) процессов. У каждого семейства есть свои достоинства, недостатки и область применения:

- адаптивный процесс используют при частых изменениях требований, малочис­ленной группе высококвалифицированных разработчиков и грамотном заказ­чике, который согласен участвовать в разработке;

- прогнозирующий процесс применяют при фиксированных требованиях и мно­гочисленной группе разработчиков разной квалификации.