Гибкость, возведенная в Абсолют или как настроить процесс разработки программного
обеспечения
Контекст Модели ЖЦ
Software Engineering Coordinating Committee, IEEE, ISO, ГОСТ
Методологии разработки DOD, IBM, Microsoft, Agile-сообщество…
Процессы ООО «Рога и копыта»
Модели ЖЦ: что имеем?
• Водопад • Итерационная (инкрементальная) модель • Модель Боема (спиральная модель)
Методологии разработки: что имеем?
• ГОСТ 19, ГОСТ 34 • RUP/EUP • MSF • PSP • Agile • …
А теперь натягиваем методологию на реальность
Процессы: что имеем?
Процесс разработки в вашей команде
• Оптимален с любой точки зрения • Идеал грации и красоты • Великолепен • Строг и справедлив • Прекрасен • Грациозен • Грандиозен • Просто душка
Разумеется, процесс в ваше команде обладает всеми атрибутами зрелого процесса
• Осознанность • Документированность • Переносимость • Конкретность области применимости • Пригодность к анализу • Наличие ресурсов для поддержки и
развития
• Процесс, который мы создаем, часто
является идеальным на тот момент времени, для которого он создавался (в лучшем
случае)
Процесс идеален – зачем что-то менять?
Сопротивление изменениям бесполезно!
• Изменения во внешней среде • Изменение состава команды • Изменение стадии проекта
Изменение во внешней среде
• Компания изменила рынок сбыта • Изменилось законодательство • Директор компании прочитал статью про
Agile/EUP/MSF • …
Изменение состава команды
• Вы наняли в штат Чака Норриса • Вы наняли в штат гражданина название
страны вычеркнуто отделом цензуры • Ваш гениальный архитектор уехал работать
в IBM
Изменение стадии проекта
• Стадии проекта по Unified Process – Inception – Elaboration – Construction – Transition
Обычная ситуация на стадии Inception
Обычная ситуация на стадии Transition
Один процесс? Да ладно
Внешняя среда
Состав и уровень команды
Стадии проекта
Впрочем, а почему бы и нет?
Гибкость – наше все!
А что, собственно, можно гнуть?
• Набор шагов (этапов) процесса • Содержание шагов (роли, артефакты,
активности, техники) • Длину итераций (если у вас они есть) • Методологию • Модель
Набор этапов и их содержание
• Зачем команде нужен конкретный этап? • Зачем команде нужен артефакт «Б»
(существуют артефакты, удобные заказчику) • Есть ли в команде люди, которые могут
сделать этот артефакт? • Зачем команде нужна техника «А» • Готова ли команда применять эту технику и
хочет ли она ее применять?
Длина итераций
• На разных стадиях проекта длины итераций могут быть разными
• У вас вообще может не быть итераций • У вас может быть итерация длинной в год
Как понять, что пора что-то менять
Управляйте рисками
Как понять, что пора что-то менять
Измеряйте
Как понять, что пора что-то менять
Постоянно задавайте себе вопрос: «А не фигню ли я делаю?»
Какие риски принимать во внимание?
• Любые риски могут повлиять на процесс
Риск Что делаем с процессом
Новые технологии Включаем в процесс R&D стадию
Некачественные и изменяющиеся требования
Не «паримся» подробным ТЗ. Детализируем требования непосредственно перед реализацией.
Недостаточный уровень технологической экспертизы в команде
Включаем в процесс активности по обсуждению технологических вопросов, привлекаем экспертов
Низкая производительность команды Вводите в процесс итерации
Любые другие риски - Любые изменение в процессе - Не все риски можно убрать
изменениями в процессе
Что измерять?
Цель процесса Метрики
Быстро выйти на рынок - Длительность цикла разработки
Обеспечить высокое качество - Количество дефектов - Степень покрытия кода тестами
Точные предварительные оценки - Степень «недооцененности» проектов
- Velocity - Throughput
Быстрая поставка новых фич - Lead time - Cycle time - Wasted time - Effectiveness
Оставаться в рамках графика и бюджета - Число изменений в требованиях
• Цели процесса определяют метрики
Окей, я все измерил. Что дальше?
• Пример 1. – Focus Factor уменьшается с каждой итерацией –
сокращаем итерации. Или вообще переходим на Kanban. Или п….м аналитиков.
• Пример 2 – Растет Wasted time – автоматизируйте рутину,
посмотрите в сторону Continuous Integration и Continuous Delivert
• Пример 3 – Растет технический долг – выторговывайте время на
него • …
И в качестве постскриптума
• Не возводите все в абсолют. Даже гибкость