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

3.http://www.sei.cmu.edu/cmmi/

4.http://en.wikipedia.org/wiki/Agile_software_development

Личные инструменты