ВВЕДЕНИЕ
В настоящий момент многие компании – разработчики ПО столкнулись с проявлениями кризиса в виде падения объемов продаж, замедления роста бизнеса, ужесточения требований банков к получателям кредитов. Чтобы сохранить эффективность, организациям требуется существенно повысить результативность процесса разработки ПО. Для этого необходимо решать сложные проблемы, связанные с:
планированием (расхождение первоначально запланированных и фактических трудозатрат в процессе реализации проекта);
управлением задачами (потеря со стороны менеджера проекта контроля над задачами и сроками их выполнения, в том числе отсутствие понимания, сколько времени сотрудники реально тратят на ту или иную работу, какова производительность проектной команды и т.д., что особенно актуально для больших распределенных команд);
управлением изменениями (заказчик в процессе разработки меняет требования, при этом внесение изменений отдельно не оплачивается; как следствие, чтобы сдать проект, команде приходится увеличивать объем работ и, соответственно, трудозатраты);
приемо-сдаточными испытаниями (отсутствие четких критериев сдачи-приемки проекта приводит к недовольству заказчика и, как следствие, к затягиванию сроков завершения проекта и появлению незапланированных работ);
управлением рисками (отсутствие формализованного управления рисками может привести в процессе реализации проекта к событиям, которые потребуют изменения объема работ);
проектными коммуникациями, как внутрикомандными, так и с заказчиком (время на коммуникации тратится неэффективно, особенно эта проблема касается географически распределенных команд);
конфигурационным управлением (программный код хранится локально, не поддерживается версионность; сборка производится спорадически, в нее случайно включается устаревший, неактуальный код; силы команды тратятся на выяснение актуальной версии сборки).
Все вышеперечисленные проблемы ведут к одному результату – расхождению значений изначально запланированных и фактических трудозатрат, что снижает показатели эффективности и доходности проектов.
Решение перечисленных проблем весьма затруднительно без внедрения автоматизированной системы управления. Автоматизация поможет создать прозрачную среду управления, связав проектные активности на всем протяжении жизненного цикла проекта в единое целое, что, в свою очередь, позволит эффективно управлять проектными трудозатратами.
Считается, что автоматизация проектной деятельности – достаточно дорогостоящее мероприятие. Тем более сложно ожидать, что руководство компании пойдет на дополнительные затраты в условиях кризиса. Найти выход из подобной ситуации можно, используя готовые решения, интегрированные в единую систему.
В свое время компания «Люксофт», проанализировав и опробовав в реальных проектах ряд доступных продуктов, создала интеграционное решение для автоматизации процесса разработки – LUXproject.
При создании данного решения были поставлены следующие цели:
комплексная поддержка жизненного цикла разработки ПО (от заключения контракта до поддержки клиента);
поддержка распределенной разработки;
поддержка различных методологий разработки;
снижение затрат на разработку и внедрение системы за счет использования готовых решений (как коммерческих, так и бесплатных).
LUXproject по сути является «процессной оболочкой», которая интегрирует в себе следующие технологии и продуты: JIRA, Confluence, GreenHopper, Cruise Control, Subversion, FishEye, WebDAV и др.
Они хорошо зарекомендовали себя на рынке, накоплен богатый опыт их использования.
Одним из достоинств данных продуктов является большой потенциал их кастомизации. Существуют целые сообщества программистов, занимающихся разработкой open-source-плагинов1 для JIRA и Confluence. Также на рынке имеется много коммерческих плагинов, существенно расширяющих функционал.
В результате было создано решение, которое можно отнести к системам ALM (Application Lifecycle Management), объединяющим в себе:
инструменты управления проектами и процессами;
инструменты разработки и тестирования;
средства коммуникаций для распределенных команд.
Поскольку учет трудозатрат осуществляется на всем протяжении разработки ПО, то автоматизация управления должна «пронизывать» все проектные процессы жизненного цикла создания ПО.
При этом чтобы не вводить читателя в заблуждение, стоит отметить, что речь идет не о специальных инструментах разработки или тестирования, а в первую очередь о средствах управления. При этом не исключается интеграция инструментов, используемых для управления и для непосредственной работы.
Далее будут описаны основные направления, концепции и способы автоматизации проектов разработки ПО, благодаря которым возможно эффективно управлять проектными трудозатратами, предотвращая появление незапланированных трудозатрат. В качестве практического примера будет рассмотрена реализация функционала LUXproject.
При управлении проектами важно не только правильно спланировать работы, но и отслеживать их выполнение, постоянно контролируя ход проекта.
Применительно к проектам разработки ПО одним из недостатков популярных систем календарного планирования и управления (типа MS Project) является отсутствие возможности связывать задачи с другими проектными активностями и устанавливать зависимость между элементами их жизненных циклов.
Для решения данной проблемы все чаще используются системы с возможностью отслеживать состояние проектных активностей (issue tracking).
Трекер (от англ. track, что значит «след») – специальная система для отслеживания состояния проектных активностей (задач, требований, дефектов). Подобные системы появились в конце 1990-х гг. для обнаружения ошибок в коде при проведении тестирования в проектах разработки ПО. Впоследствии выяснилось, что можно успешно применять эти системы для отслеживания и других проектных активностей. Обычно в трекере для каждой проектной активности установлен определенный жизненный цикл, однако во многих представленных на рынке системах предусмотрена возможность гибкой настройки жизненного цикла в зависимости от требований проекта.
В LUXproject применяется трекер JIRA компании Atlassian. Благодаря гибкой архитектуре трекера можно создавать разнообразные жизненные циклы с учетом проектных требований.
Например, в компании используются несколько методологий ведения проектов разработки ПО:
agile-практики;
методологии, основанные на RUP-подобных процессах;
проекты, связанные с поддержкой пользователей.
В этой ситуации для каждого процесса создается свой уникальный набор жизненных циклов, соответствующий конкретным требованиям методологии разработки ПО.