В то же время многие руководители предприятий считают, что их методы разработки программного обеспечения мало изменились с 1980-х годов. Повсеместно распространены предиктивные, основанные на планировании, каскадные методы разработки, несмотря на горы доказательств того, что эти процессы часто не в состоянии предоставить своевременно реальную ценность и поэтому препятствуют развитию способности компаний реагировать на быстро меняющиеся требования клиентов и условий рынка. И ситуация только ухудшается.
Современные IT-организации должны эффективно координировать распределенные по всему миру команды разработки программного обеспечения, встраивая ранее разработанные приложения в более гибкие, сервис-ориентированные архитектуры. Очевидно, что мы нуждаемся в новом подходе к управлению и разработке программного обеспечения, чтобы оставаться конкурентоспособными.
Для решения этих проблем был создан ряд более гибких и адаптивных методов разработки, которые позволяют организациям быстрее поставлять программное обеспечение высокой ценности. Scrum – один из таких проверенных методов, применяемых на многих предприятиях по разработке программного обеспечения.
В этом документе подробно объясняется, как высшие руководители могут внедрить Scrum на уровне предприятия, включая масштабирование среди большого количества различных применений и создание команд, а также рассказывается о вызовах, с которыми придется столкнуться, и наградах, которые можно получить. Документ предоставляет сценарий по адаптации Scrum на предприятиях, для которых создание качественного программного обеспечения и его количество – ключ к успеху в конкурентной борьбе на рынке.
Это «набор» идей по реализации Scrum в рамках предприятия, и это скорее сценарий, чем руководство, потому что каждая организация уникальна. Реализация Scrum в одной организации будет отличаться от реализации в другой. Типы препятствий, вещи, нуждающиеся в изменении, трудность в реализации этих изменений и люди, которые будут проводить эти изменения, везде разные, поэтому графики, приоритеты и усилия в каждой организации также будут разными.
1.2. Обзор Scrum и гибкой разработки программного обеспечения
На первый взгляд Scrum – очень простой процесс: это техника управления разработкой программного обеспечения, которая имеет относительно небольшой набор взаимосвязанных методов и правил, не слишком предписывающего характера, которым можно быстро научиться и получить возможность почти сразу повысить производительность.
Scrum естественным образом фокусирует всю организацию на создании успешных продуктов. Он обеспечивает создание через регулярные промежутки времени полезных функций, таких как требования, архитектура, дизайн, даже при использовании нестабильных технологий. Вы можете применять Scrum в начале проекта или в середине, он поможет сэкономить усилия при разработке.
Scrum эффективен, потому что оптимизирует атмосферу разработки, устраняет организационную надстройку и непосредственно синхронизирует рыночные требования со скоростью доставки необходимых функций. Scrum, основанный на современной теории контроля, производит лучшее из возможного программного обеспечения при помощи доступных ресурсов, приемлемого уровня качества и в требуемые сроки. В своей основе Scrum – итеративно-инкрементальный процесс разработки любого продукта или управления любой деятельностью. Он производит потенциально готовый к выпуску набор функциональности к концу каждой итерации.
Отличительные черты Scrum:
• инструмент, который может быть использован для достижения гибкости;
• гибкий процесс для контроля и управления разработкой;
• упаковка для существующих инженерных практик и методов;
• командный метод разработки систем в условиях, когда требования меняются быстро;
• контролирует хаос в условиях конфликта интересов и потребностей;
• улучшает коммуникации и обеспечивает максимальное сотрудничество;
• обнаруживает и устраняет все препятствия, стоящие на пути разработки и выпуска продукции;
• представляет собой способ добиться максимальной производительности;
• масштабируется от отдельных проектов до целых организаций и может управлять разработкой множества взаимозависимых продуктов и проектов с командой из более чем тысячи участников;
• позволяет каждому получать удовольствие от своей работы, вклада в общее дело и осознания, что сделал максимум возможного.
Подробное описание методов Scrum выходит за рамки этого документа (см. Швабер, 2004, и Швабер, 2002). В двух словах метод можно описать созданием бэклога продукта, где все требуемые функции организованы в список по их приоритетности (рис. А3.1).
Рис. А3.1. Модель эмпирического процесса для Scrum
Владелец продукта отвечает за утверждение изменений в бэклоге продукта. Реализация происходит после 30-дневных итераций, называемых спринтами, которые фокусируются в верхних пунктах списка в бэклоге продукта. Цель каждого спринта – поставка потенциально готового к выпуску инкремента продукта. В течение спринта контрольные точки разработки обсуждаются на совещаниях, называемых Scrum-митингами. На них сообщается прогресс и деятельность каждого члена команды и определяются проблемы, которые могут блокировать этот прогресс. Это позволяет Scrum-мастеру контролировать прогресс в отношении общих обязательств спринта и давать советы по корректировке процесса разработки для обеспечения успешного завершения спринта. Процесс разработки показан на рис. А3.1.
1.2.1. Принципы Scrum
Помимо освоения механизмов работы Scrum, для руководителей важно понимать, что Scrum руководствуется несколькими основными принципами:
• верой, что эффективная разработка программного обеспечения лучше осуществляется через эмпирический процесс, а не через процесс планирования;
• убеждением, что после устранения организационных препятствий самоорганизованная и самоуправляемая команда естественным образом будет создавать лучшее программное обеспечение, чем было бы в противном случае;
• допущением, что вы можете получить наиболее ценное программное обеспечение в отведенное время и в рамках выделенного бюджета и все же вы не можете окончательно спрогнозировать точную функциональность, которую команда будет в состоянии предоставить.
Scrum заявляет, что признание этих ключевых принципов освобождает организацию от многих ограничений, препятствующих эффективной разработке программного обеспечения. Тем не менее высшее руководство должно признавать, что применение этих ключевых принципов предполагает значительные изменения в организации, которая сделала выбор по их внедрению. Так как эти принципы составляют основу Scrum, каждый заслуживает некоторого дополнительного обсуждения.