LVEE 2007 15
Материал из Linux Vacation/Eastern Europe (LVEE).
Оценка Open Source проекта по CMMI
Василий В. Савин - Вильнюс, Литва
В последнее время Открытое ПО становится всё популярнее. Правительства многих стран, крупные корпорации стали рассматривать Linux, OpenOffice.org и другое свободное ПО как достойную альтернативу коммерческим программам. Однако сам процесс создания свободного ПО изучен достаточно плохо. Пожалуй, единственная широко известная работа по данной тематике - «Собор и Базар» Эрика Рэймонда[1]. К сожалению, данная работа была написана 10 лет назад и на сегодняшний день несколько устарела. А другие авторы в основном изучали социальные и экономические аспекты OS проектов[2]. И только в последние несколько лет появилось несколько работ, где открытое ПО рассматривается с точки зрения инженерии ПО. В своём докладе я бы хотел представить выводы, полученные в процессе написания дипломной работы. Целью моей работы было изучить, насколько возможна оценка Open Source проектов по модели CMMI.
Что такое CMMI[2]?
CMMI (Capability Maturity Model) был создан институтом инженерии ПО по заказу минобороны США. Он был призван решить задачу оценки зрелости процессов и повысить эффективность данных процессов. На данный момент CMMI являтся de facto стандартом оптимизации процессов по созданию ПО. Внедрение СMMI позволило организациям добиться значительного улучшения качества, уменьшить количество дефектов и сократить время разработки.
Существует несколько разных моделей – для управления субподрядчиками, закупками (Acquisition) и наиболее интересного с точки зрения разработчика ПО - модель процесса разработки систем (CMMI for Development). Данная модель позволяет описать любой процесс разработки, в том числе и ПО. Для этого весь жизненный цикл разбивается на 4 категории и 22 области процесса
Что такое Agile[3] методики?
Agile стал ответом программистского сообщества на попытку навязать традиционный подход к созданию ПО. По мнению сторонников Agile, попытки устранить из проектов неопределённость заранее обречены на неудачу. Так как даже в идеальном случае, если клиент получит ту систему, которую он заказывал полгода назад, то совершенно необязательно она удовлетворит его потребности сегодня и будет пригодна для расширения в нужном для него направлении.
Agile предлагает не устранять неопределённость, а её контролировать путём более коротких итераций, фиксацией сроков, а не функциональности и более тесного контакта с клиентом.
Выводы и результаты. Изучая модели процессов создания свободного ПО в различных проектах, я пришёл к выводу, что единого процесса, характерного для всех Open Source проектов не существует, так как проекты достаточно сильно отличаются друг от друга: размерами, задачами, целевой аудиторией.
Поэтому моей первой задачей стало создать классификацию процессов создания ПО а Open Source проектах. В результате были выделен ряд параметров, на основании которых возможно объединить проекты в эквивалентные классы:
- Разработчики: один или команда
- Местоположение команды: централизованно\локально или распределенно\глобально
- Целевая аудитория: конкретный заказчик или массовый потребитель
- Коммерциализация: коммерческий или некоммерческий проект
- Степень сотрудничества: близкое\плотное или слабое
Охарактеризовав проект свободного ПО по этим параметрам можно составить достаточно точный портрет данного проекта.
Следующей моей задачей стало оценить проект свободного ПО по CMMI. Однако прямой подход - дословно интерпретировать требования модели, бесперспективен, так как ряд задач в проектах свободного ПО достигается иными способами. Кроме того ряд описываемых практик малополезен для проектов свободного ПО. Поэтому были изучены способы оценки Agile методик, к которым можно причислить и модель создания открытого ПО.
В качестве эксперимента я оценивал проект plone.org по следующим областям:
- Планирование проекта
- Упраление проектом
- Управление кофигурацией
- Измерения и анализ
- Обеспечение качества процесса
- Определение требований пользователей
Ссылки:
1.http://www.catb.org/~esr/writings/cathedral-bazaar/
2.http://opensource.mit.edu/online_papers.php

