Процесс непрерывного улучшения в производстве ПО Оксана Щирба oschirba@gmail.com 29.05.2013 Почему возникла эта тема? Product Краткосрочная выгода VS Process Долгосрочная выгода Кайдзен Кайдзен – японская философия или практика, которая фокусируется на непрерывном совершенствовании процессов производста, разработки, вспомогательных бизнес-процессов и управления, а также на всех аспектах жизни. Принципы Кайдзен Принцип непрерывного совершенствования. Без совершенствования не должно проходить ни дня. Всеобщий контроль качества. “Качество – все, что можно улучшить.” Масааки Имаи. Один из инструментов контроля качества – цикл Деминга или цикл PDCA (Планируй – Делай – Проверяй – Воздействуй). Вовлеченность персонала и открытое признание проблем. Там где нет проблем, совершенствование невозможно. Встраивание качества в процесс. “Качество должно встраиваться в процесс. Проверка не создает качества.” Э. Деминг. Стандартизация. Межфункциональный менеджмент. Устранение основной причины проблемы и предотвращение рецидивов. Цикл Деминга Планируй – Делай – Проверяй – Воздействуй Использование Кайдзен в разработке ПО Scrum - “гибкая” методология разработки, позволяющая в жёстко фиксированные небольшие промежутки времени предоставлять конечному пользователю работающее ПО с новыми возможностями. Использует итерационный подход и кроссфункциональные команды. Kanban - “гибкая” методология разработки, ориентированная на уменьшение WIP (Work In Progress). Использует одноименный принцип Кайдзен – Канбан. DevOps – методология разработки, ориентированная на улучшение взаимодействия между разработчиками и операционной ИТ-командой. Использует принцип Встраивания качества в процесс. Что нужно чтобы Кайдзен работал? Каждый член команды отвечает за то, что он делает и как он это делает. Каждый член команды отвечает за общий результат проекта. Открытое признание проблем. Межфункциональное взаимодействие. Возможная реализация Кайдзен Проектная папка + проектная wiki, к которой имеет доступ вся проектная команда. В папке содержится вся управленческая документация по проекту. Описание текущих стандартов разработки. Wiki. Доступ у всей проектной команды. Ежедневные межфункциональные 20-минутные встречи, на которых обсуждается что сделано за день, что планируется сделать за следующий день, проблемы проекта и процесса, разрабатываются варианты решения. Принятые решения публикуются в проектной wiki. Еженедельные межфункциональные одночасовые встречи, на которых обсуждаются статус проекта, план на следующую неделю, проблемы проекта и процесса, разрабатываются варианты решения. Принятые решения публикуются в проектной wiki. Ретроспективные межфункциональные встречи по результатам релиза, на которых обсуждаются все примененные улучщения и принимается решение о добавлении этих улучшений в стандарт. Отранжированный реестр проблем и рисков. Система предложений. Мотивационная схема, направленная на общий результат. Встраивание качества в процесс: основные принципы Чем раньше вы обнаружите проблемы / ошибки, тем проще и дешевле их исправить. Каждое изменение в системе должно порождать обратную связь. Обратная связь должна быть предоставлена как можно быстрее. Команда проекта должна оперативно получать и обрабатывать обратную связь. Встраивание качества в процесс: основные инструменты CI – Непрерывная интеграция (TeamCity, Bamboo, Jenkins, Hudson, CruiseControl). Позволяет отловить ошибки интеграции на раннем этапе. UT – Модульное тестирование. Позволяет выявлять регрессионные ошибки. Компонентное тестирование. Позволяет выявлять регрессионные ошибки. (soapUI) Автоматизированное UI – тестирование (Cucumber, JMeter, Selenium). Автоматизированное тестирование нефункциональных требований. (JMeter, Selenium - нагрузка, Xspider - безопасность) Автоматизация процесса развертывания. Вопросы Литература Кайдзен. Ключ к успеху японских компаний. Масааки Имаи. Continuous Delivery. Reliable Software Releases through Build, Test and Deployment Automation. J. Humble, D. Farley.