Пока различные отделы ФБР занимаются «привычными» делами вроде контрразведки, расследований должностных преступлений и обеспечения кибербезопасности, в штаб-квартире ФБР рождается новый облик ведомства. Здесь сотрудники и подрядчики ФБР вместе работают над созданием Sentinel — системы управления делами, которая призвана изменить применяемые ведомством принципы сбора, хранения и сопоставления данных.
Sentinel обещает сократить объемы бумажной работы, улучшить связь между региональными офисами, обеспечить возможность корреляции данных по множеству дел, уменьшить избыточность и затраты времени на административные задачи. Система призвана кардинально изменить методы работы ФБР, но, чтобы ее создать, самому ведомству пришлось превратиться в высокоэффективную организацию по разработке программного обеспечения.
Федеральный ИТ-проект, отстающий от графика
Требования к проекту Sentinel были сформулированы еще в 2004 году, и изначально это был обыкновенный государственный проект разработки ПО, осуществляемый на основе традиционной каскадной методологии, однако по мере продвижения проекта выяснилось, что эта методология слишком затратна и нерезультативна.
Первоначально команда проекта, состоящая из сотрудников ФБР, выдвинула обширный список требований для корпорации Lockheed Martin, которую наняли для разработки в качестве подрядчика, однако разобщенность между разработчиками и координаторами привела к проблемам с интерпретацией и реализацией требований ввиду непонимания их разработчиками. Поскольку структура проекта и требования к нему составлялись заранее, разработчики не имели возможности для изменений по мере появления новых пожеланий пользователей.
В проекте участвовала слишком большая команда разработчиков и менеджеров, состоящая почти из 300 человек, что привело к проблемам со взаимодействием, особенно между разработчиками. Последним не удавалось скоординированно применять методы объектно-ориентированного программирования, а тестирование нередко выявляло дефекты, вызванные незнанием разработчиками архитектуры системы. Sentinel превратилась в затянувшийся, дорогостоящий и отстающий от графика государственный ИТ-проект, в результате чего цель создания необходимой ФБР системы управления делами, основанной на современных технологиях, не была достигнута.
Переход на «скорую» разработку
В декабре 2008 года ФБР пригласило на должность ИТ-директора Чеда Фулхэма, который сразу оценил всю совокупность проблем проекта Sentinel и решил изменить принципы его осуществления путем передачи ФБР ответственности за управление проектом и его риски. Однако, чтобы управлять проектом собственными силами, ФБР необходимо было превратиться в организацию, способную быстро создавать критически важные программные системы вопреки бюрократическим ограничениям и надзору «сверху».
Вначале было решено выбрать новую методологию написания ПО — ею стала методология скорой (agile) разработки, отдающая предпочтение личностям перед процессами, гибкости перед следованием плану и работающему ПО перед подробной документацией.
Скорый процесс разработки основан на том принципе, что изменения требований и приоритетов предсказать трудно, поэтому проектирование и разработка должны происходить практически одновременно. В agile-проектах обычно участвуют относительно малые команды разработчиков, которые выпускают работающее ПО короткими итеративными циклами. Команда должна обладать высокой технической компетенцией и быть самоорганизующейся. Более того, agile-проекты делают упор на частое непосредственное общение между заказчиками и разработчиками и включают в себя множество демонстраций продукта и его прототипов.
В ФБР решили воспользоваться agile-методологией, чтобы преодолеть возникшие у Sentinel проблемы, связанные с отставанием от графика и изоляцией от заказчиков, что нередко случается с большими государственными проектами разработки ПО. Ввиду небольших непроизводительных издержек на процессы и составление документации agile-команды оказываются компактнее команд, работающих на основе традиционных методологий. При скорой разработке программные продукты можно выпускать быстрее и чаще. Agile-методологии опираются на приоритетно-ориентированный подход к разработке, в рамках которого вначале реализуются первоочередные требования, причем сразу в полностью интегрированном программном продукте, благодаря чему сводится к минимуму вероятность провала проекта в целом при приближении срока сдачи.
Хотя «скорые» методологии доказали свою действенность для многих проектов, agile-подход чаще всего используется для систем с невысокой критичностью, а в госсекторе при помощи этой методологии создаются лишь немногие приложения. Кроме того, главный принцип agile — это постоянная адаптация к меняющемуся набору требований, что противоречит организации большинства крупных государственных ИТ-проектов, в которых фиксированные требования служат инструментом контроля. Поэтому ФБР понадобилось адаптировать agile-методологии к разработке крупномасштабных критически важных программных систем в условиях ограничений, свойственных госструктурам.
Применение и адаптация методологии
Учитывая, что различные организации все чаще занимаются самостоятельной разработкой ПО, опыт проекта Sentinel в ФБР ценен с точки зрения практических знаний о том, как федеральные ведомства и другие традиционно далекие от создания ПО учреждения могут эффективно применять agile-методы.
Формирование малой команды
Первый, непростой для ФБР этап ведения обновленного проекта Sentinel состоял в наборе команды талантливых разработчиков, специалистов по тестированию и менеджеров. В соответствии с принципом компактности agile-команд была отобрана группа из 15 технических специалистов и 30 координаторов — из числа собственных сотрудников ФБР и представителей подрядчика, входивших в состав первоначальной большой команды.
Учитывая меньшую численность участников, отбор проводился более тщательно, и в результате была сформирована слаженная группа. В команду по разработке вошли оперативные сотрудники ФБР, которые одновременно пишут код и являются конечными пользователями программы.
Команда разработчиков организована по принципу коллективной ответственности, что согласуется с еще одним принципом agile — разработчики берутся за поставленные задачи, даже если те выходят за рамки их основного набора навыков. Ни один разработчик не монополизирует какую-то одну область деятельности, хотя некоторые берут на себя обязанности согласно своей специализации. Благодаря отсутствию иерархии решения о структуре принимаются сообща — коллективное решение группы важнее, чем решение одного человека. Кроме того, команда Sentinel наладила тесную связь с высшим руководством ФБР — Фулхэм выступает в качестве представителя команды перед руководством ФБР и внешними заинтересованными сторонами, а директор по технологиям Джеффри Джонсон выполняет роль соруководителя и «спонсора» программы. Для ежедневного контакта с командой разработчиков он перенес свой кабинет в их офис, принимает окончательные решения по проекту и помогает преодолевать барьеры проектного уровня. Благодаря его доступу к высокопоставленным руководителям значительно сокращается время, затрачиваемое на принятие важнейших решений, и обеспечивается поддержка инициатив команды Sentinel.
Применение итеративной разработки
ФБР следует ключевой концепции agile-подхода и придерживается итеративной разработки. Для контроля над реализацией Sentinel была выбрана методология управления проектами Scrum — Марк Крэнделл был назначен agile-инструктором и Scrum-мастером. В Scrum разработка происходит итеративными циклами — «спринтами», на каждом из которых реализуется небольшое число задач.
В ФБР адаптировали Scrum, организовав двухнедельные спринт-циклы. В начале каждого спринта разработчики совместно с координаторами определяют очередные приоритеты, а затем разработчики встречаются для трансляции выбранных приоритетов в конкретные задачи, которые распределяются между членами команды.
Спринт-цикл обычно начинается с фазы коллективной работы, затем протекает более «спокойный» этап, когда каждый разработчик занят своим заданием, после чего наступает последняя стадия — команда снова собирается для интеграции наработанного кода и сборки проекта. По окончании каждого спринт-цикла разработчики проводят демонстрацию проекта для координаторов и внешних заинтересованных лиц, в том числе для высокопоставленных должностных лиц ФБР.
Благодаря итеративному процессу координаторы и разработчики более тесно взаимодействуют на каждом этапе и в определенные моменты могут привлекать к участию внешних заинтересованных лиц. Адаптируемость требований и задач позволяет команде по мере необходимости менять направление развития проекта.
Адаптация к контролю «сверху»
Одна из трудностей проекта состояла в адаптации к неизбежному внешнему контролю — он не должен был слишком обременять команду Sentinel. Для ее преодоления в ФБР использовали концепцию обзорных встреч (review meeting), поделив их между различными аудиториями.
Обзорные встречи по итогам спринта проводились в два сеанса. На техническом собрании с разработчиками, заказчиком и другими заинтересованными лицами подтверждалось выполнение всех технических требований спринт-цикла. Затем проводилась отдельная демонстрация текущих достижений команды для более широкой аудитории.
Управление рисками
После перехода на внутреннее управление проектом Sentinel риски, связанные с созданием масштабной, критически важной системы, перешли от подрядчика к ФБР, а для управления этими рисками была приглашена внешняя команда аудиторов из Университета Карнеги-Меллона, которая провела аттестацию процесса разработки, используемого в ФБР. Кроме того, была внедрена обширная система автоматизированного тестирования, в том числе обеспечивавшая проверку на выполнение требований и наличие регрессионных ошибок.
Демонстрация достижений, проводимая для заинтересованных сторон в конце каждого спринт-цикла, помогает команде придерживаться целей проекта.
Управление расходами
Особенности контрактов с правительством создают существенные препятствия для использования agile-методов — правительственные ведомства обычно предпочитают контракты с фиксированной ценой, поскольку они проще в управлении и сопряжены с меньшим риском. Однако такие контракты несовместимы с принципами agile-разработки — они не гибки, опираются на фиксированные требования и предварительное планирование. К тому же федеральные нормы обязывают управлять всеми государственными проектами разработки по методу освоенного объема (Earned Value Management, EVM). Данный метод сильно зависит от качества и завершенности плана проекта, в то время как agile-проекты опираются на принцип невозможности заранее определить весь масштаб проекта и его требования.
Agile-проект разработки Sentinel финансируется исходя из принципов «издержки плюс фиксированная прибыль» и «время и расходы». Эти схемы более трудны в управлении, чем контракты с твердо фиксированной ценой, но более терпимы к итеративным изменениям в требованиях и планах. ФБР удовлетворяет требованию EVM путем применения комбинированного подхода к управлению проектами — ведется учет традиционных показателей EVM, применяются графики прогресса разработки и контролируюся скорости, характерные для agile-принципов проектного управления. Контроль уровня затрат и сроков осуществляется по принципу соотнесения усилий, затраченных на реализацию функциональных требований, с полученными результатами.
***
С 2010 года, когда проект Sentinel был преобразован в agile-проект, удалось реализовать немало новых функций, отвечающих потребностям будущих пользователей, благодаря более тесной связи между координаторами и разработчиками, а также между командой Sentinel и другими заинтересованными лицами. Система скоро будет готова к внедрению, а ее авторы уверены, что она будет принята руководством ФБР и пользователями. Фактически в недрах штаб-квартиры ФБР создан стартап по разработке программного обеспечения, а сама система Sentinel изменила принципы организации работы этого ведомства.
Чед Фулхэм (chad.fulgham@ic.fbi.gov) — ИТ-директор ФБР; Джеффри Джонсон — помощник директора подразделения ФБР по ИТ-инженерии; Марк Крэнделл — agile-инструктор и Scrum-мастер; Лео Джексон — оперативный сотрудник ФБР; Натан Бэрроуз — старший оперативный сотрудник ФБР.