Новая книга Тома Гилба (Tom Gilb, Competitive Engineering) - попытка построить методологию надёжной и предсказуемой разработки сложных систем.
Книга повествует о технологическом менеджменте, управлении рисками и серьезных прорывах в бизнесе, применительно к сложным системам, проектам и процессам. Речь в ней идет о разработке систем в приложении ко всем формам планирования, определении требований, проектировании и управлении проектами. Данная книга -очередная попытка построить методологию, с помощью которой можно будет надежно и предсказуемо разрабатывать сложные системы, причем не обязательно программные. Она применима к самым разным вопросам управления организациями.
Книга заслуживает внимания по ряду причин. Во-первых, на базе работ Гилба построен стандарт CMMI Level 4. Кроме того, методики, описанные в книге, проверены на практике в таких компаниях, как HP, IBM, Intel, Philips, Nokia, Ericsson и Boeing. Ну и, наконец, она выглядит разумно и практически применимо.
Одна из ключевых позиций книги звучит примерно так: «мы инженеры, и мы должны уметь считать». Действительно, никто не проектирует мост исходя из соображений типа: «по идее, он выдержит целую толпу людей». Существует методика подсчета нагрузочной способности конструкций, и ни один мост без соответствующих вычислений не строится. В программировании же запросто допускаются неисчислимые сущности, например, требования. Возьмем простое требование — «продукт должен быть переносим на ОС Linux». На первый взгляд, такое требование кажется разумным. С другой стороны, строго говоря, любой программный продукт переносим на платформу Linux — по крайней мере, ценой его разработки с нуля. Получается, подобное требование лишено смысла. А «вот переносим с затратой не более чем пять человеко-месяцев» — уже лучше. Книга детально объясняет, почему требования должны быть исчислимы, как находить уместные единицы измерения и каким ещё правилам должны соответствовать требования.
Во многих проектах не делается численной оценки соответствия дизайна требованиям. Вообще говоря, для того чтобы принять то или иное проектное решение нужно знать, в какой степени оно решает поставленные задачи. В книге описывается методика, названная Impact Estimation, позволяющая проследить влияние проектных решений на достижение целей. В результате появляется возможность более аргументированного выбора подходов к проектированию системы и, что не менее важно, выявлять приоритеты задач нижнего уровня исходя из целей, поставленных на самом верхнем уровне, делая в первую очередь то, что нужно для проекта в целом, а не то, что приятно, легко или кажется сейчас нужным.
Следующий аспект, разбираемый в книге — эволюционное управление проектами. Вспомним итерации в RUP или в XP: эволюционный метод есть развитие этих идей. В книге вводится специальный язык Planguage (for Plan Language) — совокупность четко специфицированных терминов. Применение этого языка позволяет автору (и тем, кто использует его методики) не только избежать терминологических ошибок на всех этапах работы, но и быть чрезвычайно точным в описании методик и сущностей. С помощью Planguage книга описывает весь процесс ведения проекта от сбора требований до его окончания. Основная ценность этого языка в том, что он вводит стройную систему логично взаимосвязанных сущностей. Каждый термин не просто четко определен — определена его взаимосвязь с другими, а процессы описаны однозначно и строго. В то же время, автор предлагает рассматривать имеющиеся в книге описания процессов как «комплект для начала» — читатель должен расширить или модифицировать их для своих нужд, сообразно задаче. Впрочем, это вполне в духе CMMI и довольно естественно.
Planguage описывает следующие виды процессов: спецификация требований, проектирование, контроль качества спецификаций, оценка влияния (проектных решений на достижение заявленных целей) и эволюционное управление проектами. При этом отдельно оговаривается, что с точки зрения автора управление рисками не есть отдельный процесс — он пронизывает все виды деятельности, как бы встроен во все процессы. Тем не менее, ему уделяется довольно большое внимание. При этом автор не столько озабочен вопросом «что делать с рисками», сколько задачей их минимизации — по сути, сама задача построения данной (да и любой другой) методологии есть попытка снизить риски, связанные с ведением больших проектов.
Для руководителя верхнего звена или менеджера огромного проекта ценность книги в том, что описанные в ней методики ведения проекта в целом позволяют сделать проект подконтрольным и более предсказуемым. Для аналитиков и менеджеров небольших проектов более ценными, видимо, будут описания конкретных методик — в частности, связанных со сбором требований.
Tom Gilb, Competitive Engineering. Elsevier Butterworth-Heinemann, 2005, ISBN 07-506-6507-6, 448 р.