Agile
Agile (на русский обычно не переводится, хотя иногда говорят о “гибких методах”) — серия подходов к разработке программного обеспечения, ориентированных на использование интерактивной разработки, динамическое формирование требований и обеспечение их реализации в результате постоянного взаимодействия внутри самоорганизующихся рабочих групп, состоящих из специалистов различного профиля.
В системной инженерии “железных” систем методы agile пока используются мало, но в последние годы ситуация быстро меняется: разработка определения системы в существенной мере оказывается похожей на разработку программного обеспечения, и в ней для разработки моделей могут быть использованы практики, зарекомендовавшие себя при разработке ПО.
Содержание
Agile-манифест разработки ПО
Мы постоянно открываем для себя более совершенные методы разработки программного обеспечения, занимаясь разработкой непосредственно и помогая в этом другим. Благодаря проделанной работе мы смогли осознать, что:
- Люди и взаимодействие важнее процессов и инструментов
- Работающий продукт важнее исчерпывающей документации
- Сотрудничество с заказчиком важнее согласования условий контракта
- Готовность к изменениям важнее следования первоначальному плану
То есть, не отрицая важности того, что справа, мы всё-таки больше ценим то, что слева. Важно понимать, что мы не отрицаем то, что написано в правой части манифеста. Мы только говорим о том, что мы больше ценим написанное в левой части чем то, что написано в правой части.
Основополагающие принципы Agile-манифеста
- Наивысшим приоритетом для нас является удовлетворение потребностей заказчика, благодаря регулярной и ранней поставке ценного программного обеспечения.
- Изменение требований приветствуется, даже на поздних стадиях разработки. Agile-процессы позволяют использовать изменения для обеспечения заказчику конкурентного преимущества.
- Работающий продукт следует выпускать как можно чаще, с периодичностью от пары недель до пары месяцев.
- На протяжении всего проекта разработчики и представители бизнеса должны ежедневно работать вместе.
- Над проектом должны работать мотивированные профессионалы. Чтобы работа была сделана, создайте условия, обеспечьте поддержку и полностью доверьтесь им.
- Непосредственное общение является наиболее практичным и эффективным способом обмена информацией как с самой командой, так и внутри команды.
- Работающий продукт — основной показатель прогресса.
- Инвесторы, разработчики и пользователи должны иметь возможность поддерживать постоянный ритм бесконечно. Agile помогает наладить такой устойчивый процесс разработки.
- Постоянное внимание к техническому совершенству и качеству проектирования повышает гибкость проекта.
- Простота — искусство минимизации лишней работы — крайне необходима.
- Самые лучшие требования, архитектурные и технические решения рождаются у самоорганизующихся команд.
- Команда должна систематически анализировать возможные способы улучшения эффективности и соответственно корректировать стиль своей работы.
Из этих принципов важно понять, что главная цель – удовлетворить заказчика (бизнес, стейкхолдеров, пользователей).
Agile манифест заявил, что изменяющиеся требования – это не зло, а благо и не надо с этим бороться, так как оно позволяет заказчику достигать конкурентного преимущества. То есть это и есть тот очень важный инструмент, с помощью которого мы сможем удовлетворить заказчика.
Следует также знать, что единственной метрикой того, как идет разработка продукта – является сам продукт (работающий продукт). Никакие метрики, никакие отчёты напрямую не показывают насколько вы успешны в достижение требуемой цели.
Agile в качестве определенной аксиомы ставит условие взаимного сотрудничества и уважения. С самого начала авторы Agile говорят о том, что работать по таким принципам возможно и следует только в условиях, когда люди работающие над общим продуктом (в том числе заказчики, пользователи и представители бизнеса), выстраивают свое сотрудничество на основе взаимного доверия.
Постоянное самосовершенствование является одним из ключевых факторов достижения цели проекта.
Роли
Ответственность за результат делится между тремя ролями:
- Владелец продукта
- определяет проектные цели,
- разрабатывает оптимальный график при заданных проектных параметрах,
- адаптирует процесс выполнения проекта к изменившимся требованиям,
- устанавливает приоритеты в характеристиках продукта
- Scrum мастер
- устанавливает приоритеты в выполнении задач командой проекта,
- устраняет возникающие затруднения, препятствующие выполнению задач
- Члены команды
- выполняют большинство поставленных задач,
- осуществляют ежедневный менеджмент,
- создают отчеты о ходе выполнения проекта,
- контролируют качество продукта
Agile-методологии
- Feature Driven Development (FDD), 1997 г.
- Dynamic Systems Development Method (DSDM), 1994 г.
- Crystal Methods, 1992 г.
- XP (Extreme programming), 1995 г.
- Scrum, 1995 г.
Ссылки
Примеры внедрения agile и других гибких методов в системной инженерии:
- организация хода разработок в компании SpaceX. Главная там фраза — focus on tools not rules. А потом test rigorously and often.
- производство автомобиля: видеорассказ, описание автомобиля, eXtreme manufacturing, TDD for hardware. Главное там было — обеспечить высокую скорость изменений, и указывались примерно те же механизмы, что и в SpaceX (обмен информацией через сеть вместо традиционных control boards, даже была оговорка, что ещё лет пять назад это было бы невозможно по причине недоразвитости сетевых сервисов, а лет десять назад всех этих сервисов вообще не существовало).
- lean systems engineering. Это всё бесполезно читать, если вы не прочли про «непереводимое» на русский lean manufacturing (наиболее точно тут будет «не делать ничего лишнего»). Но и с прочтённым тоже может быть не просто.
- Пример связи подходов lean и agile может быть найден в книге «Kanban and Scrum. Making the most of both» (это для софта, но там довольно популярно изложено несколько идей общего вида. Русский перевод!).
- concurrent engineering по духу близко к agile. Впечатляющий пример – как стадион разбили на 12 секторов, и пока один сектор проектировали, предыдущий строили, а пред-предыдущий отделывали (6й сезон 14й фильм из замечательной серии телевизионных документальных фильмов про мастерство инженеров).