Адаптивная разработка программного обеспечения - концепции

В этой главе мы поймем различные концепции адаптивной разработки программного обеспечения.

Теория сложных адаптивных систем (CAS)

Брайан Артур и его коллеги из института Санта-Фе использовали теорию сложных адаптивных систем (CAS), чтобы произвести революцию в понимании физики, биологии, эволюции и экономики.

Брайан Артур завершил свои более чем двадцатилетние попытки убедить основных экономистов в том, что их точка зрения, основанная на фундаментальных предположениях об уменьшающейся доходности, равновесии и детерминированной динамике, более недостаточна для понимания реальности. Новый мир - это мир растущей отдачи, нестабильности и неспособности определить причину и следствие.

Эти два мира отличаются поведением, стилем и культурой. Они призывают -

  • Различные методы управления
  • Различные стратегии
  • Различное понимание

Комплексная разработка программного обеспечения

С ростом объема программных приложений даже организации, занимающиеся разработкой программного обеспечения, сталкиваются с аналогичными противоречиями, о которых говорилось выше.

  • Единый мир представлен детерминированным развитием, происходящим из управленческих практик, основанных на основах стабильности и предсказуемости (что, по словам Артура, означает уменьшение отдачи).

  • Второй мир представлен отраслями, переходящими от спада к возрастающей среде возврата, которая является непредсказуемой, нелинейной и быстрой.

Для решения проблем этого второго мира Джиг Хайсмит предложил структуру, адаптивную разработку программного обеспечения, которая отличается от детерминированной разработки программного обеспечения.

Адаптивная разработка программного обеспечения фокусируется на решении сложных систем -

  • Адаптивная разработка программного обеспечения для жизненного цикла разработки.

  • Методы адаптивного управления, требующие отличного от традиционных методов управления проектами мышления.

В этом руководстве вы можете понять обе эти реализации.

Адаптивная разработка программного обеспечения (ASD) основана на двух точках зрения:

  • Концептуальная перспектива, основанная на теории сложных адаптивных систем (CAS), изложенная в первом разделе этой главы.

  • Практическая перспектива на основе

    • Многолетний опыт работы с детерминированными методологиями разработки программного обеспечения.

    • Консультации, практика и написание статей о методах быстрой разработки приложений (RAD); и работа с высокотехнологичными компаниями-разработчиками программного обеспечения по управлению разработкой их продуктов.

В этой главе вы поймете концептуальную перспективу адаптивной разработки программного обеспечения.

Концепции сложных адаптивных систем (CAS)

Теория сложных адаптивных систем (CAS) имеет множество концепций. Адаптивная разработка программного обеспечения основана на двух из этих концепций:

  • Emergence
  • Complexity

Возникновение

В сложных проектах по разработке программных продуктов результаты непредсказуемы по своей природе. Однако успешные продукты появляются из таких сред постоянно.

Это может произойти в результате появления, как показано в теории сложных адаптивных систем (CAS). Это можно понять на простом примере стайного поведения птиц.

Когда вы наблюдаете стаю птиц, вы замечаете, что -

  • Каждая птица пытается

    • Держитесь на минимальном расстоянии от других объектов в окружающей среде, включая других птиц.

    • Сопоставьте скорости с птицами в окрестностях.

    • Двигайтесь к предполагаемому центру масс птиц по соседству.

  • Для группы нет правил поведения. Единственные правила касаются поведения отдельных птиц.

  • Однако существует эмерджентное поведение - стая птиц. Когда заблудшие птицы бросаются догонять, стая разбивается вокруг препятствий и переходит на другую сторону.

Это показывает необходимость самых сложных изменений ментальной модели в адаптивном развитии - от способов управления и организации этой индивидуальной свободы до представления о том, что творческий новый порядок непредсказуемо возникает в результате спонтанной самоорганизации.

Помимо развития, эмерджентность также является наиболее важным понятием с точки зрения менеджмента.

Сложность

В контексте разработки программного обеспечения сложность означает -

  • Отдельные лица команды, такие как разработчики, клиенты, поставщики, конкуренты и акционеры, их количество и скорость.

  • Размер и технологическая сложность.

Практики адаптивной разработки программного обеспечения

Адаптивная разработка программного обеспечения предлагает другой взгляд на методы управления программным обеспечением. В разделах ниже вы можете понять две важные практики - качество и RAD, каждая из которых имеет разветвления для сбора требований.

Вы можете найти подробную информацию обо всех практиках в главе «Практики адаптивной разработки программного обеспечения» в этом руководстве.

Качество

В сложной среде извечная практика «Делай правильно с первого раза» не работает, поскольку вы не можете предсказать, что будет правильным с самого начала. У вас должна быть цель, чтобы производить правильную ценность. Однако в сложной среде комбинации и перестановки компонентов ценности, таких как объем (функции, производительность, уровни дефектов), расписание и ресурсы, настолько обширны, что никогда не может быть оптимального значения. Следовательно, акцент делается на том, чтобы обеспечить максимальную отдачу на конкурентном рынке.

Практика RAD

Практика RAD обычно включает комбинацию следующего:

  • Эволюционный жизненный цикл
  • Фокус-группы для клиентов, сессии JAD, технические обзоры
  • Ограниченное по времени управление проектом
  • Непрерывная разработка программного обеспечения
  • Выделенные команды с боевыми комнатами

Проекты RAD обладают неотъемлемой адаптивностью и эмерджентностью. Многие ИТ-организации выступают против RAD. Однако Microsoft и другие разработали невероятно большое и сложное программное обеспечение, используя методы, сопоставимые с RAD, потому что это вызывает вопросы об их фундаментальном мировоззрении.

Практики RAD и процесс Microsoft являются примерами адаптивной разработки в действии. Присвоение им ярлыка (например, «Адаптивное развитие») и осознание того, что существует растущий объем научных знаний (например, теория CAS), объясняет, почему они работают. Это должно обеспечить основу для более широкого использования этих практик.