Опыт создания и внедрения интегрированной системы автоматизации процессов разработки программного обеспечения Грачев Антон Гаврилов Евгений LUXOFT Проблемы автоматизации процессов разработки ПО Сложность быстрого получения информации о различных данных в проекте и ее сопоставления в едином визуальном «интерфейсе» Проблемы распределенной разработки ПО Увеличение количества инструментов под разные методологии разработки Начало пути Цели разработки интегрированной системы: Комплексная поддержка жизненного цикла разработки программного обеспечения (от сбора требований до поддержки); Поддержка распределенной разработки ПО Поддержка различных систем разработки ПО (возможности их взаимной интеграции) Единый визуальный интерфейс Опыт LUXOFT LUXOFT начал разрабатывать интегрированную систему под названием «LUXProject» с 2006 г. К настоящему моменту LUXProject, это: 1. Поддержка проектов основанных на различных методологиях («классические» (RUP-like) процессы, Agile) 2. Web-доступ из любой точки мира 3. Возможность ролевого доступа в систему (включая доступ Заказчику проекта) 4. Возможность быстрой кастомизации функционала Компоненты LUXProject $ $ Project Stakeholder Only ONE (!) System Administrator Our project manager Our development team Client project manager Client development team Our Analyst Client Analyst Subcontractors teams Subcontractors teams Our Quality Assurance Client Quality Assurance SOAP Web Container Apache Tomcat Java-COM Bridge Auto alerts and notifications / LUXproject event-driven core Indexing and Search Service Apache Lucene LDAP Central Administration /Security/ OpenLDAP IM Server /Jabber/ Wildfire WebDAV File Management Apache Slide Calendar and Planning iCalendar std. Reporting, Metrics, History, Statistics Web Access to Source Code ViewCVS/FishEye Process Improvement - metrics - statistic JMX Management MS Word Documents XML-RSS MS Outlook Calendar, Tasks Software Engineering Processes / LUXproject event-driven workflow engine JIRA engine Management of Requirements Task, Resource, Time, Risk, Issue, Defects Custom Workflows Confluence Wiki engine Knowledge Base Text Search Document Versioning Mail Indexing Service Document Templates Discussion Forum Source Code Repository Versioning, releases, Peer review. Subversion, CVS, etc In progress, the closest release Future releases MS Excel Timesheet, Reports XMPP/Jabber Single SignOn Implemented MS Project / to LUXproject initial project setup / Java Standard Edition 5.0 RFP/RFI Response Subsystem Continues Integration / Build / Server CrouseControl Adobe Acrobat Documents, Reports Event Queue ICQ/Miranda/GoogleTalk IM Messaging RMI/IIOP LUXProject Функционал LUXProject для проектов использующих «классические» процессы (в т.ч. поддержка CMMI модели) Управление задачами; Управление рисками; Формирование отчетности; Управление требованиями; Управление изменениями; Управление сборкой; Управление тестированием (включает управление test cases и дефектами); Управление качеством (процессные аудиты и анализ статистических данных); Управление конфигурацией; Управление коммуникациями (возможность вести базу знаний); LUXproject Пример функционального модуля “Risks” LUXProject Функционал LUXProject для проектов использующих Agile-практиках Управление задачами (в части - ведение бэклога продукта, управление релизами, ведение бэклога итерации, персональный план работ); Управление рисками; Управление дефектами; Управление коммуникациями (Scrum and retrospective meetings); Управление конфигурацией; Интеграция интерфейсов пользователя Задачи: Единая точка входа Общая навигация (header, footer) Единый стиль Проблемы Разные идеологии UI Конфликты терминологии Интеграция интерфейсов пользователя: решение LUXproject Confluence JIRA FishEye … Функциональная интеграция Административные функции создание проектов, пользователей Процессные функции Мониторинг активностей (Timeline) создание кросскомпонентных сущностей Агрегация данных в Dashboards Отображение JIRA items, commits на Wiki-страницах Функциональная интеграция: решение Единый язык доменной модели (не зависящий от языка компонентов) Использование механизма событий (Publish/Subscribe) – независимость ядра системы от компонент Потенциальная взаимозаменяемость компонент Простой upgrade компонент на новые версии Распределенная модель взаимодействия компонент Внедрение LUXproject Схемы внедрения: Установка с «нуля» Компания хочет получить новый опыт и прогрессивные практики В компании не используются аналогичные системы Установка с последующей кастомизацией функционала системы и миграцией данных. Компания считает что процессы в компании «зрелые» или уникальные Компания использует аналогичные «tracking» системы (например JIRA, ClearQuest, Bugzilla) и хочет сохранить исторические данные. Внедрение LUXproject Процессный шаблон - это совокупность настроек функциональных модулей системы, под конкретную методологию разработки. Выбор конкретной методологии разработки при открытии проекта Кастомизация проекта в процессе проекта Возможность сохранить кастомизированный шаблон и использовать его в дальнейшем Внедрение LUXproject Пример процессного шаблона – “Agile”. LUXProject Вопросы?