Разработка и поставка продукта является смысловой конструкцией, которая характеризует наличие, понимание, использование инженерных подходов и инструментов для разработки программного обеспечения. Активное использование инженерных практик позволяет выпускать продукт высокого качества инкрементно и итеративно, соответствующего потребностям стейкхолдеров.
В данной статье предложена система метрик для измерения и дальнейшего анализа атрибутов организации разработки и поставки программного продукта.
Остальные части программы оценки готовности к трансформации:
SCRUM: Понимание и применение фреймворка
SCRUM: Гибкое управление продуктовыми направлениями
SCRUM: Развитие сотрудников и продуктовых команд
Инженерная практика CI/CD
Инженерная практика CI (непрерывная интеграция) / CD (непрерывная поставка) позволяет активировать эмпирический процесс инспекции рабочей функциональности продукта с большой частотой для дальнейшей адаптации в части решения найденных проблем. Идея данной практики заключается в том, что любые изменения разработчика в части ПО должны быть слиты в общий репозиторий кодовой базы как можно чаще; далее должна происходить компиляция сборки из общего репозитория как можно чаще для инспекции изменений.
Характеристика | Метод исследования | Метрика |
GIT инструменты | Наблюдение за инструментом GIT | GIT инструмент есть - 0 баллов GIT инструмент нет - 5 баллов |
Частота CI | Наблюдение за периодичностью CI, выполняемым одним разработчиком | менее раза в сутки - 0 баллов 1 раз в сутки - 1 балл 4 раз в сутки - 3 балла более 5 раз - 5 баллов |
Время CI | Наблюдение за временем CI, выполняемым одним разработчиком | более 4 ч. - 0 баллов от 1 ч. до 4 ч. - 1 балл от 30 мин. до 1 ч. - 3 балла от 5 мин. до 30 мин. - 5 баллов |
Частота CD | Наблюдение за периодичностью CD, выполняемое на стенде разработки | менее раза в сутки - 0 баллов от 2 - 4 раз в сутки - 1 балл более 5 раз в сутки - 3 балла при каждом CI - 5 баллов |
Время CD | Наблюдение за временем CD, выполняемое на стенде разработки | более 8 часов - 0 балов от 3 ч. до 8 ч. - 1 балл от 1 ч. до 3 ч. - 3 балла менее 1 ч. - 5 баллов |
Роль DevOps | Наблюдение за присутствием роли DevOps в контуре разработки | роль отсутствует - 0 баллов роль присутствует - 5 баллов |
Количество сред | Наблюдение за применяемыми средами в процессе разработки | более 3 сред - 0 баллов 3 среды - 5 баллов |
Количество веток | Наблюдение за используемыми ветками в процессе разработки | более 2 веток - 0 баллов 2 ветки - 5 баллов |
[0 - 28] - низкий результат, свидетельствующий об отсутствии инженерной практики CI/CD как класса. Управление средой разработки и поставками происходит хаотичным образом с повышенными временными и экономическими затратами. При данном результате, необходимо переосмыслить текущий подход в части его трансформации и зафиксировать в плане мероприятий для улучшения каждой из характеристик. Не рекомендуется проводить мероприятия вне контекста общей программы трансформации.
[28 - 33] - средний результат, свидетельствующий о наличии инженерной практики CI/CD как класса, однако, существуют определенные ограничения для его эффективного использования. В рамках данного результата, необходимо рассмотреть мероприятия, направленные для улучшения характеристик с низкой оценкой. Допускается проводить внедрение мероприятий изолировано от общей программы.
[34 - 40] - максимальный результат, свидетельствующий о использовании инженерной практики CI/CD, как это задумано по определению. В случае данного результата, целесообразно зафиксировать процессы и практики для разработки регламента в целях масштабирования на новые продукты. Рекомендуется также рассмотреть следующее свойство: непрерывное обеспечение качеством (CQ), так как в паре c CI/CD достигается больший синергетический эффект.
Непрерывное обеспечение качества CQ
В отличие от QA (quality assurence), которое фокусируется на решении возникших проблем с использованием инструмента доступных регламентов и процедур, система непрерывного обеспечения качества CQ (continious quality) создает условия для решения проблем через непрерывное улучшение процессов и компетенций сотрудников. Одним из основополагающих принципов CQ является создание оптимальных контуров обратной связи (тестирования) в части нахождения дефектов программного обеспечения, а также частоты запуска обозначенных контуров.
Характеристика | Метод исследования | Метрика |
Unit тесты | Опрос разработчиков о наличии unit тестов. | 0 - 30% покрытие - 0 баллов 30 - 50 % покрытие - 1 балл 50 - 80 % покрытие - 3 балла 80 - 100% покрытие - 5 баллов |
Функциональные тесты | Опрос разработчиков о наличии функциональных тестов. | 0 - 30% покрытие - 0 баллов 30 - 50 % покрытие - 1 балл 50 - 80 % покрытие - 3 балла 80 - 100% покрытие - 5 баллов |
Регрессионные тесты | Опрос разработчиков о наличии регрессионных тестов. | 0 - 30% покрытие - 0 баллов 30 - 50 % покрытие - 1 балл 50 - 80 % покрытие - 3 балла 80 - 100% покрытие - 5 баллов |
Нагрузочные тесты | Опрос разработчиков о наличии нагрузочных тестов. | 0 - 30% покрытие - 0 баллов 30 - 50 % покрытие - 1 балл 50 - 80 % покрытие - 3 балла 80 - 100% покрытие - 5 баллов |
Автотесты | Опрос разработчиков о наличии автотестов. | 0 - 30% покрытие - 0 баллов 30 - 50 % покрытие - 1 балл 50 - 80 % покрытие - 3 балла 80 - 100% покрытие - 5 баллов |
Частота unit тестирования | Наблюдение за периодичностью unit тестирования | не проводится - 0 баллов менее 1 раз в день - 1 балл 1 раз в день - 3 балла при каждом MR - 5 баллов |
Частота регрессионого тестирования | Наблюдение за периодичностью регрессионного тестирования в окружении разработки | по запросу - 0 баллов при выпуске версии - 1 балл при выпуске фичи - 5 баллов |
Частота нагрузочного тестирования | Наблюдение за периодичностью нагрузочного тестирования в окружении разработки | по запросу - 0 баллов при выпуске версии - 1 балл при выпуске фичи - 5 баллов |
Частота функционального тестирования | Наблюдение за периодичностью функционального тестирования в окружении разработки | по запросу - 0 баллов при выпуске версии - 1 балл при выпуске фичи - 5 баллов |
Частота запуска автотестов | Наблюдение за периодичностью запуска автотестов в окружении разработки | не проводятся - 0 баллов 1 раз в неделю - 1 балл пару раз в неделею - 3 балла при каждом CD - 5 баллов |
[0 - 35] - низкий результат, свидетельствующий об отсутствии системы непрерывного обеспечения качеством (CQ) как отдельного организационного класса. Производственный процесс разработки программного обеспечения является дефектно ориентированным при котором запускаются циклы “тестирование - исправление” при каждом выполнении регрессионного тестирования. Отдельно стоит упомянуть про технический долг, который растет по экспоненте. При данном результате, рекомендуется переосмыслить текущие подходы и разработать программу мероприятий для улучшения каждой из характеристик. Не рекомендуется проводить мероприятия вне контекста общей программы трансформации.
[35 - 50] - средний результат, свидетельствующий о наличии системы непрерывного обеспечения качеством (CQ) как класса, но присутствуют ограничения для его эффективного проявления. При данной оценке уже наблюдаются проявления подхода “сначала тестирование - потом программирование” , однако он не выделен в отдельную сущность как часть культуры CQ. Рост технического долга имеет линейную зависимость от выпущенных версий. В рамках данного результата, необходимо рассмотреть мероприятия, направленные для улучшения характеристик с низкой оценкой. Допускается проводить внедрение мероприятий изолировано от общей программы.
[42 - 50] - максимальный результат, свидетельствующий о ярко выраженном свойстве, которое развивается и характеризует производственный процесс разработки ПО, как функционально-ориентированным (feature driven). Любые активности, связанные с тестирование, рассматриваются как очевидные и рутинные операции, которые не требуют время для планирования и выполняются в едином производственном потоке.
Оптимальный организационный поток
Оптимальный организационный поток - принцип организации производства разработки продукта при котором минимизируются административные барьеры для осуществления всего комплекса работ от стадии идеи до поставки инкремента в продуктивную среду клиента. Под административными барьерами понимаются созданные группы по функциональному признаку и наличие сотрудников с выделенной функцией управления. При оптимальном потоке снижается время ожидания ответа на вопрос, что приводит к снижению времени выпуска протестированного и работоспособного инкремента продукта.
Характеристика | Метод исследования | Метрика |
Время ожидания ответа на запрос принятия решения | Наблюдение за средним временем ожидания ответа на вопрос в контексте принятия решения или блокирования работы | более 8 ч. - 0 баллов от 1 ч. до 8 ч. - 1 балл от 30 мин. до 1 ч. - 3 балла менее 30 мин. - 5 баллов |
Принцип организации групп | Наблюдение за принципом организации групп | функциональный принцип - 0 баллов продуктовый принцип - 8 баллов |
Звенья управления | Наблюдение за количеством сотрудников с функцией управления на пути движения задачи | более 2х звеньев - 0 баллов 2 звена управления - 5 балла 1 звено управления - 8 баллов |
Транспарентность коммуникаций | Наблюдение за инструментом коммуникаций в разрезе контентных вопросов | хаотичные каналы - 0 баллов фиксированные каналы - 5 баллов |
Транспарентность триггеров событий | Наблюдение за триггерами при которых должно произойти определенное событие (тестирование, авторская приемка, новый билд) | ручная нотификация - 0 баллов автоматизированная - 5 баллов |
Отношение решенных задач к открытым | Наблюдение за графиком роста решенных задач в отношении к открытым | преобладают пологие участки - 0 баллов стабильный рост - 5 баллов |
Визуализация организационного потока | Наблюдение за применяемыми подходами в части визуализации движения задачи по потоку | отсутствует визуализация - 0 баллов присутствует в контексте функциональной задачи - 1 балл применяются SCRUM, Kanban доски для визуализации общего потока - 5 баллов |
[0 - 29] - низкий результат, свидетельствующий об неоптимальном организационном потоке которому свойственно до 50% времени ожидания на решение задач, а также фокусирование на задачах, которые быстро теряют свою актуальность. В первую очередь, рекомендуется сделать акцент на снижение звеньев управления на пути движения задачи и изменить принцип организации групп на предметный (продукт, сервис, компонент). Данные мероприятия необходимо зафиксировать в программе трансформации.
[29 - 34] - средний результат, свидетельствующий о формировании оптимального организационного потока, однако существуют ограничения для его эффективного использования. Рекомендуется разработать мероприятия с акцентом на снижение времени ожидания и формирование культуры визуализации рабочего потока с помощью инструментов доступных инструментов (SCRUM и Kanban доски).
[35 - 41] - высокий результат, свидетельствующий о наличии оптимального организационного потока при котором соблюдается принцип транспарентности и предметно-ориентированная группа сфокусирована на задачах, которые имеют актуальность в текущий момент времени. Время предоставления ответов на вопросы внутри предметно-ориентированной группы сводится к минимуму , что сказывается на уменьшении времени релизного цикла. Рекомендуются зафиксировать данное свойство, как эталонной и включить в программу обучения и коучинга.
Управление рисками
По определению, риск - это неопределённое событие или условие, которое в случае возникновения имеет позитивное или негативное воздействие на репутацию компании, приводит к приобретениям или потерям в денежном выражении. Процесс идентификации риска и его приоритезации лежит в основе эмпирического процесса его инспекции по необходимым атрибутам (природа, степень влияния, последствия) и дальнейшей адаптации в части запланированных мероприятий, включаемых в бэклог. Можно выделить три категории рисков:
Финансовый риск - можем ли мы заплатить за продукт?
Бизнес риск - будет ли продукт использоваться ? продукт решает проблему?
Технический риск - можем ли разрабатывать и поддерживать продукт?
На всех уровнях разработки программного обеспечения должно присутствовать понимание о природе риска и мероприятиях, которые позволяют ими управлять.
Характеристика | Метод исследования | Метрика |
Финансовый риск | Наблюдение за частотой выпуска релизов на продуктивную среду клиента | более 3 мес. - 0 баллов от 2 мес. до 3 мес. - 3 балла до 2 мес. - 5 баллов |
Бизнес риск | Наблюдение за частотой демонстрации инкремента продукта стейкхолдерам | при выпуске версии - 0 баллов при выпуске инкремента - 5 баллов |
Технический риск | Наблюдение за объемом технического долга | технический долг растет с каждой версией - 0 баллов технический долг снижается с каждой версией - 5 баллов |
Наблюдение за фактом появления критических ошибок после выпуска версии в продуктивную среду | пользователь воспроизвел критическую версию - 0 баллов пользователь не воспроизвел критическую ошибку - 5 баллов |
Мы не будем определять интегральную шкалу оценки свойства “управление рисками”, в связи с тем, что каждая категория риска является самодостаточной характеристикой и требует индивидуального подхода в интерпритации и разработки мероприятий. В случае низких оценок для финансового и бизнес рисков, рекомендуется рассмотреть мероприятия, разработанные в рамках исследования метрика для гибкого управления продуктовыми направлениями. Мероприятия в рамках технического риска, необходимо рассматривать по результату изучения CI/CD инженерной практики и непрерывного обеспечения качества CQ.