20
Измеряй и властвуй Или сказ о том, как сбор и анализ характеристик программного продукта и процесса его создания сделают вас чемпионом

Measurement in software development

Embed Size (px)

Citation preview

Измеряй и властвуй

Или сказ о том, как сбор и анализ характеристик программного продукта и процесса его создания сделают вас чемпионом

Где мы, кто мы и зачем все это?

Мы, как КОМАНДА, в рамках ПРОИЗВОДСТВЕННЫХ ПРОЦЕССОВ, создаем ПРОДУКТЫ, которые нужны КЛИЕНТАМ, и которые позволяют нам развивать БИЗНЕС

Где мы, кто мы и зачем все это?

• Продукты должны быть качественными и полезными

• Бизнес должен приносить доход

• Клиенты должны быть счастливы

• Процессы должны быть оптимальными

• Команда должна становиться круче

Как нам контролировать все эти объекты?

Мы не можем контролировать то, что мы не можем измерить. Следовательно, для контроля нам прежде всего следует измерять наши пять объектов, и лишь потом пытаться управлять ими.

На х@# глаз, если есть ватерпас!

Метрика - мера, позволяющая получить численное значение некоторого свойства программного обеспечения, его окружения или его

спецификаций

Ур́овень или Ватерпа́с (нидерл. waterpas) — измерительный инструмент для оценки соответствия поверхностей вертикальной или горизонтальной плоскости

Метрики – как способ измерить все

• Метрики продукта

• Метрики процесса

• Метрики команды

• Метрики клиента

• Метрики бизнеса

Метрики клиента и метрики бизнеса • Тема за рамками доклада, но, как и все остальные метрики,

метрики клиента и бизнеса является частью Системы Сбалансированных Показателей

Финансы

Клиенты Процессы

Развитие и обучение

Цели

Метрики продукта

• Цели – Обеспечить высокое качество продукта – Обеспечить устойчивость к внесению изменений – Обеспечить достижение бизнес-целей

• Внешние – Количество аварий на боевых серверах – Количество бизнес-фич/поддерживаемых бизнес-сценариев

• Внутренние – Количество уровней в иерархиях – Количество методов в классах – Цикломатическая сложность – Связность и зацепление – Степень покрытия кода юнит-тестами – Степень покрытия бизнес-сценариев интеграционными тестами

Метрики продукта: как собирать?

• Bug/Issue tracker (Jira, Redmine)

• Инструменты для статического анализа исходного кода (ReSharper, pmd, встроенные средства IDEA, Sonar)

• Инструменты для трассировки требований (Jira, IBM ClearQuest)

Метрики процесса

• Цели – Знать, за сколько команда способна реализовать сферическую фичу в

реальных условиях – Знать, какие этапы процесса требуют оптимизации – Быстро поставлять новые фичи – Сокращать время простоя

• Velocity - скорость команды, выраженная в единицах измерения сложности за определенное время (обычно за спринт)

• Cycle Time – время, которое задача находилась в разработке от момента, когда ей начали заниматься, до момента, когда она прошла фазу конечной поставки.

• Lead Time – время от появления задачи до ее конечной поставки. Включает Cycle Time и время ожидания в очереди на реализацию.

• Wasted Time – время, которое задача проводит в различных очередях, а не непосредственно в работе.

Метрики процесса

• Effectiveness – процент времени, которое тратится непосредственно на работу с задачей, а не на ожидания в различных очередях.

• Throughput – количество задач, которое может выполнять команда в единицу времени (день, неделя, месяц).

• Task Estimation Accuration – точность оценки задач

• Overtime – время переработки

• Focus-factor – показатель того, на сколько команда была сфокусирована на задачах спринта

Ваши метрики следуют из ваших целей Цель процесса Метрики

Быстро выйти на рынок - Длительность цикла разработки

Обеспечить высокое качество - Количество дефектов - Степень покрытия кода тестами

Точные предварительные оценки - Степень «недооцененности» проектов

- Velocity (скорость) - Throughput (пропускная

способность)

Быстрая поставка новых фич - Lead time - Cycle time (все время на задачу) - Wasted time (% времени простоя

задачи) - Effectiveness (% времени работы

над задачей)

Оставаться в рамках графика и бюджета - Число изменений в требованиях

Метрики процесса: как собирать?

• Пожалуйста, не собирайте метрики вручную. Используйте Jira/Redmine/Trello/TFS. Используйте хоть что-нибудь!

• Исходные данные это время и оценки

• Все, что требуется от команды – дисциплина в изменении состояний задач. Сделал свою работу – отметь это

Метрики процесса: нюансы

• Используйте метрики по назначению

Метрики процесса: нюансы • Заточите свой workflow

Метрики команды

• Текучка кадров

• Утилизация ресурсов

• Степень удовлетворения команды

• Программы обучения

• Предложения сотрудников

Метрики команды: как собирать?

• Просто

– Разговаривайте с людями

• Еще проще

– Отмечайте палками/галками/крестами свершившиеся события

Я фсе собрал. Что мне делать?

• Пример 1 - Отрицательная динамика Focus Factor – Сокращайте итерации. Или вообще переходите на Kanban – еще больше привлекайте заказчика к планированию

спринтов

• Пример 2 - Положительная динамика количества багов в старой функциональности – Включайте в процесс регрессионное тестирование

• Пример 3 - Положительная динамика переработок – включайте в процесс покер планирования

• Пример 4 – Растущий технический долг – Начтите, наконец, заниматься архитектурным

проектированием – включите в процесс рефакторинг

Аналитика головного мозга

• Не измеряйте ради измерения (CLOS, количество сертификатов у команды, количество совершенный приложением бизнес-операций)

• Проверяйте качество метрик – Постоянны – Легко измерить – Выражается в абсолютных числах или

в % – Соответствует контексту

С чего мне начать

• Определите цели. Начните с чего-то одного – например с продукта или с процесса

• Выберете 2, максимум 3 метрики

• Автоматизируйте сбор и анализ