Организация
структур технических и программных средств проектирования и управления.
Средства взаимодействия, структуры данных, международные стандарты
Применение системы управления проектами Redmine при поддержке жизненного
цикла веб приложения gamer.ru
Е.В. Фатеев,
программ., spaceflow@gmail.com,
Gaming Media, г.
Москва
Аннотация
Данная статья кратко
описывает основные идеи и цели управления проектами. Рассматривает особенности
современных веб приложений. Раскрывает основные особенности системы управления
проектами Redmine и приводит схему ее применения при поддержке жизненного цикла
веб приложения gamer.ru
Abstract
This article briefly describes the basic ideas and goals of the project
management. It shows the most important features of modern web applications. It
also reveals the main features of the Redmine project management system and
leads the scheme of gamer.ru web application's life-cycle support.
Введение
За последние несколько
десятилетий с момента возникновения и развития информационных технологий, как
самостоятельной отрасли произошло большое количество изменений. Прежде всего,
эти изменения касаются увеличения области и сложности решаемых задач. Одной из
первоначальных задач являлась автоматизация архивной деятельности предприятия
(картотек) путем создания файловых систем [1]. Такие программы обычно
обеспечивали поддержку на уровне отдела, а данные хранились в
децентрализованном виде. Дальнейшее развитие привело к возникновению
централизованных баз данных и прикладных программ для доступа и выполнения иных
операций над этими данными. Помимо этого, менялись и парадигмы
программирования. На смену структурной парадигмы, предложенной Э. Дейкстрой в
1970-х годах, пришла объектно-ориентированная парадигма, началом которой
принято считать 1980-е года (появление объектно-ориентированного языка
Smalltalk). Расширялись и области применения информационных технологий, а с
появлением глобальной сети интернет, их влияние стало заметным практически в
каждой сфере человеческой жизнедеятельности. Все это позволяет говорить о
постоянно возрастающей сложности задач и их решений. Однако этот процесс не
является полностью искусственным. Его, скорее, можно рассматривать как
естественный ответ на эволюцию человеческого общества. В качестве аналогии,
достаточно проследить развитие самого общества. От первобытных племен и общин –
до современного государства, обладающего, несомненно, более сложной структурой.
Иными словами, подобно возникновению государства, как ответ на удовлетворение
возросших социальных потребностей общества, современные информационные
технологии направлены на решение задач, сложность которых также обусловлена
развитием общества и его потребностей. Таким образом, разработка программных и
аппаратных средств становится результатом взаимодействия большого количества
участников, использования различных методологий и технологий. Это приводит к
необходимости не только планирования, но и управления проектом.
1. Цели и задачи управления проектом
Следуя определению
руководства к своду знаний по управлению проектами (A Guide
to the Project Management Body of Knowledge - PMBOK)[2],
проект – это временное предприятие, предназначенное для создания уникальных
продуктов, услуг или результатов. Управление проектом – это приложение знаний,
навыков, инструментов и методов к работам проекта для удовлетворения
требований, предъявляемых к проекту.
Как правило, проект
рассматривается в виде тройственной ограниченности [3] (трех взаимосвязанных
аспектов), представленных на рис. 1.
рис. 1 Представление проекта в виде тройственной ограниченности
В качестве трех аспектов
выступают: время (time), стоимость (cost) и содержание (scope) проекта. Время – это запланированные сроки, при
наступлении которых проект должен быть завершен. Стоимость определяется
бюджетом проекта, включая все возможные затраты при разработке проекта.
Содержание определяется требованиями, предъявляемыми к проекту, т.е.
функционалом, который необходимо реализовать. Данный подход имеет широкое
распространение, однако в современных условиях при управлении проектами, трех
аспектов уже не достаточно. Необходимо строго контролировать качество (quality) разрабатываемых продуктов для обеспечения их
максимальной конкурентоспособности. Риски (risks) – другая важная составляющая современного управления
проектами. Под риском понимается неопределенное событие или условие, которое, в
случае наступления, влияет хотя бы на одну цель проекта [2]. Иными словами,
необходимо идентифицировать и анализировать наиболее возможное количество
рисков, а также разрабатывать стратегии поведения в случае реального
возникновения рисков. Еще одним немаловажным аспектом являются человеческие
ресурсы - команда проекта (human
resources). Грамотное руководство командой проекта позволяет
существенно повысить эффективность разработки продукта. Таким образом,
тройственная ограниченность проекта трансформируется в шестиугольную
ограниченность – рис. 2.
рис. 2 Представление проекта в виде шестиугольной
ограниченности
Рассмотренные аспекты
находятся в тесной взаимосвязи. Например, при достижении целей проекта может
потребоваться сократить сроки производства. В этом случае, вероятно,
потребуются дополнительные человеческие ресурсы и, как следствие, увеличение
бюджета, либо уменьшение содержания проекта. То есть, изменение одного из
аспектов в шестиугольной ограниченности проекта влечет за собой изменение
другого (или других) аспектов. Подобные идеи приводят к основополагающей цели
управления проектом, которая заключается в поиске оптимального соотношения
между всеми аспектами и его поддержании в течение всего процесса разработки.
Рассматривая в качестве
проекта разработку программного продукта, необходимо дополнительно учитывать
специфические аспекты. Наиболее значимым из них является нелинейная зависимость
сроков выполнения проекта от количества участников команды. Эта идея
формулируется в законе Ф. Брукса: «Если проект не укладывается в сроки, то
добавление рабочей силы задержит его еще больше» [4]. Таким образом, управление
проектом играет одну из важнейших ролей в процессе разработки и создания
продукта, в том числе программного, обеспечивая существенное увеличение
эффективности процесса разработки.
2. Особенности современных веб приложений
Веб приложение является одним
из видов программных продуктов. В настоящее время в интернет среде широко
распространен термин веб 2.0, который выделяет несколько ключевых особенностей
современных веб приложений. Наиболее подробно эти особенности раскрыты в статье
Тима О'Рейли «Что такое веб 2.0» [5]. Среди них можно выделить следующие:
· Веб как единая платформа. Открытые стандарты, активное
межсетевое взаимодействие. Появление и развитие таких технологий, как (JavaScript, Flash, JavaFX, PHP, Ruby, ActionScript, Ajax) позволило использовать веб в качестве платформы для
разработки полноценных приложений, доступных тысячам пользователей по всему
миру и практически ничем не уступающих настольным приложениям;
· Пользователь как один из основных генераторов
контента. На заре зарождения веб, за содержанием интернет ресурсов следили в
основном компании-разработчики. Постепенно ситуация изменялась и сейчас
наиболее активными источниками генерации контента являются пользователи
различных ресурсов, таких как блоги, социальные сети, сообщества и т.д.;
· Данные – наиболее ценный компонент веб приложения. С
приходом открытых стандартов стало возможным создавать веб приложения путем
интеграции существующих сервисов (готовых решений). Значение алгоритмов стало
менее важным в сравнении со значением контента веб приложения;
· Цикл разработки предполагает непрерывную поддержку
сервиса, оперативную реакцию на изменения и гибкий процесс разработки.
Современные веб-приложения в основном позиционируются как постоянно
развивающиеся сервисы, беспрерывно функционирующие во времени. Это означает,
что компаниям необходимо обеспечивать постоянную поддержку таких приложений,
быстро реагировать на изменения и гибко управлять процессами разработки.
Последняя описанная
особенность позволяет представить требования, предъявляемые к методологии
управления веб проектом. Она должна быть достаточно гибкой, чтобы обеспечивать
быстрый цикл разработки дополнительных сервисов, поддерживать взаимодействие и
быстрый обмен информацией между всеми участниками проекта. Примерами таких
методологий могут служить SCRUM, Agile Development, Unified
Process (UP). Однако
какой бы ни была методология, для наиболее эффективного достижения целей
проекта, необходимо соответствующее программное обеспечение, способное
реализовать поддержку используемой методологии управления проектом.
3. Система управления проектами Redmine
Redmine является одним из
программных решений в области управления проектами. К другим решениям относятся
JIRA, Trac, Request Tracker и многие другие программные продукты, однако Redmine обладает большим количеством особенностей, которые играют
важную роль в современном процессе управления проектами. Прежде всего, Redmine
является Open Source продуктом и выпускается под лицензией GPL (GNU General
Public License v2). Кроме того, он написан на веб-фреймворке Ruby on Rails и
является кроссплатформенным. Это означает, что Redmine будет работать на большинстве популярных платформах,
таких как GNU Linux, Windows и Mac OS.
Помимо этого, Redmine обладает широким функционалом, возможностями добавления
дополнительных модулей и разработкой собственных. Ключевыми функциями Redmine
являются:
- Простота развертывания и установки. Для запуска
Redmine достаточно иметь установленный интерпретатор Ruby и библиотеку Rails.
Веб-сервер включается в поставку, и в случае необходимости, может быть заменен
на альтернативный (Nginx, Thin, Unicorn);
- Возможность ведения нескольких проектов. Redmine позволяет одновременно создавать и управлять
несколькими проектами. При этом возможно связывание проектов между собой
(например, проект А является составной частью проекта Б);
- Все данные хранятся в базе данных. Данные проекта
(пользователи, роли, задачи и т.д.) хранятся в базе данных. Это позволяет
создавать резервные копии, а также использовать различные реляционные СУБД с
минимальными изменениями в конфигурации;
- Гибкая система формирования задач. Каждая задача
относится к определенному классу, например: ошибка, дизайн, новый сервис и т.д.
При формировании задачи, помимо существующих атрибутов (исполнитель, время
выполнения, приоритет, описание и др.), возможно создавать собственные;
- Назначение ролей. Каждому пользователю назначается
роль, в соответствии с которой он получает набор определенных прав при
взаимодействии с системой. Права имеют гибкую систему конфигурации и
определяются администратором Redmine;
- Вики страницы. Для каждого проекта возможно создание
вики страниц для обеспечения накопления знаний в области разрабатываемого
проекта;
- Учет временных затрат. Для каждого проекта возможно
получить общую статистику временных затрат, сформировать календарный план и
построить диаграмму Гантта;
- Гибкая система оповещений. Возможность настройки
оповещений о наступлении различных событий (создания, завершения задач и др.) с
помощью почтовой рассылки или RSS потоков;
- Поддержка контроля версиями кода. Redmine позволяет
интегрировать существующий репозиторий с исходным кодом проекта для просмотра
изменений, дерева исходного кода или автоматического завершения задач при совершенных
фиксациях (коммитах);
- Персонализированная личная страница. Возможность
настройки личной страницы для каждого пользователя в соответствии с его
потребностями и предпочтениями.
4. Применение Redmine при
поддержке жизненного цикла веб приложения gamer.ru
Социальная сеть gamer.ru
представляет собой тематический ресурс, посвященный компьютерным играм. Вокруг
каждой игры существует блог с возможностью публикации постов и комментариев.
Помимо этого, существует ряд дополнительных возможностей, в числе которых:
голосование за понравившуюся игру, пост или комментарий, добавление игр в ленту
избранного, личные сообщения, ролевые элементы в виде магической системы,
специальных способностей и многие другие.
Являясь веб 2.0 приложением,
проект gamer.ru активно развивается, и в силу частых изменений, имеет
сравнительно короткое время выпуска новых версий. Для обеспечения взаимодействия
внутри команды и успешного управления проектом в gamer.ru используется Redmine.
Типичная схема разработки и выпуска новой версии представлена на рис. 3.
рис. 3. Схема добавления и разработки новой функции
веб приложения gamer.ru
При разработке новой функции
менеджер (manager) проекта создает новую
задачу (New Task) в Redmine. Обычно он присваивает задаче приоритет, назначает
исполнителя и приводит описание требований. Затем исполнитель (worker) принимает задачу, изменяя ее статус (In progress) и
начинает ее выполнение. В ходе работы над задачей у исполнителя могут
возникнуть вопросы, которые он оформляет с помощью Redmine в виде примечаний к
задаче (Updated). Если исполнитель считает, что задача завершена или требуется
дополнительное обсуждение, он снова изменяет статус (Resolved). В этом случае,
менеджер проекта принимает решение о том, удовлетворяет ли задача поставленным
требованиям. Если удовлетворяет, задача изменяет статус и считается закрытой
(Closed). В ином случае, после необходимых обсуждений, исполнитель продолжает
работу над задачей до момента появления новых вопросов или завершения задачи.
После выполнения требуемых задач (со статусом Closed), из репозитория исходного
кода формируется новая версия проекта и происходит ее развертывание (релиз).
Таким образом, система
управления проектами Redmine является центральным связующим звеном между
менеджером проекта и командой разработчиков. Она отвечает за создание новых
задач и отслеживание изменений в ходе их выполнения. Помимо этого, менеджер
проекта использует Redmine для учета времени, затраченного на выпуск очередной
версии, построения календарных планов и диаграммы Гантта. Использование Redmine
существенно уменьшает затраты на коммуникации внутри команды проекта, повышает
качество и скорость разработки.
Литература
1. Коннолли Т., Бегг К. Базы Данных. Проектирование,
реализация и сопровождение. – Вильямс. 2003.
2.
A Guide to the Project Management Body of Knowledge. -
Project Management Institute, Inc. 2008.
3.
Чатфилд К., Джонсон Т. Microsoft Office Project 2003. Официальный учебный курс. – Эком. 2005.
4. Брукс Ф. Как создаются программные системы. Мифический
человеко-месяц. – Символ. 2010.
5.
O'Reilly Т. What is web 2.0.
Design patterns and business models for the next generation of software -
O'Reilly. 2005.