Desenvolvimento de software adaptativo - conceitos

Neste capítulo, vamos entender os vários conceitos de Desenvolvimento de Software Adaptativo.

Teoria dos Sistemas Adaptativos Complexos (CAS)

Brian Arthur e seus colegas, do Instituto de Santa Fé, usaram a teoria dos Sistemas Adaptativos Complexos (CAS) para revolucionar a compreensão da Física, Biologia, Evolução e Economia.

Brian Arthur culminou em mais de duas décadas tentando convencer os economistas tradicionais de que sua visão, dominada por suposições fundamentais de retornos decrescentes, equilíbrio e dinâmica determinística, não era mais suficiente para entender a realidade. O novo mundo apresenta retornos crescentes, instabilidade e incapacidade de determinar causa e efeito.

Os dois mundos diferem em comportamento, estilo e cultura. Eles pedem -

  • Diferentes técnicas de gestão
  • Estratégias Diferentes
  • Entendimento Diferente

Desenvolvimento de software complexo

Com o escopo dos Aplicativos de Software explodindo, até mesmo as organizações de desenvolvimento de software estão acumulando contradições semelhantes às mencionadas acima.

  • Um Mundo é representado pelo desenvolvimento Determinístico, derivado de práticas de gestão que estão enraizadas nos princípios de estabilidade e previsibilidade (o que nos termos de Arthur significa retornos decrescentes)

  • O Segundo Mundo é representado pelas indústrias que mudam de ambientes de retorno decrescente para crescente que são imprevisíveis, não lineares e rápidos.

Para abordar as questões deste segundo mundo, Jig Highsmith ofereceu um framework, Adaptive Software Development, que é diferente do Deterministic Software Development.

O Adaptive Software Development se concentra em lidar com sistemas complexos -

  • Desenvolvimento de Software Adaptativo para o ciclo de vida do desenvolvimento.

  • Técnicas de gerenciamento adaptativo que exigem uma mentalidade diferente daquela das práticas tradicionais de gerenciamento de projetos.

Neste tutorial, você pode entender essas duas implementações.

O Adaptive Software Development (ASD) é baseado em duas perspectivas -

  • Perspectiva conceitual baseada na teoria de Complex Adaptive Systems (CAS), conforme apresentada na primeira seção deste capítulo.

  • Perspectiva prática baseada em

    • Anos de experiência com metodologias de desenvolvimento de software determinísticas.

    • Consultar, praticar e escrever sobre técnicas de Desenvolvimento Rápido de Aplicativos (RAD); e trabalhar com empresas de software de alta tecnologia no gerenciamento do desenvolvimento de seus produtos.

Neste capítulo, você entenderá a perspectiva conceitual do Desenvolvimento de Software Adaptativo.

Conceitos de sistemas adaptativos complexos (CAS)

A teoria dos Sistemas Adaptativos Complexos (CAS) tem muitos conceitos. O Desenvolvimento de Software Adaptativo é baseado em dois desses conceitos -

  • Emergence
  • Complexity

Emergência

Em projetos complexos de desenvolvimento de produtos de software, os resultados são inerentemente imprevisíveis. No entanto, produtos de sucesso surgem desses ambientes o tempo todo.

Isso pode acontecer por Emergência, conforme ilustrado na teoria dos Sistemas Adaptativos Complexos (CAS). Isso pode ser entendido por um exemplo simples, comportamento de bando de pássaros.

Quando você observa um bando de pássaros, você percebe que -

  • Cada pássaro tenta

    • Mantenha uma distância mínima de outros objetos no ambiente, incluindo outras aves.

    • Combine velocidades com pássaros em sua vizinhança.

    • Mova-se em direção ao centro de massa de pássaros percebido em sua vizinhança.

  • Não existem regras de comportamento para o grupo. As únicas regras são sobre o comportamento de pássaros individuais.

  • No entanto, existe um comportamento emergente, o bando de pássaros. Quando os pássaros errantes correm para alcançá-los, o bando se divide em torno dos obstáculos e se reforma do outro lado.

Isso mostra a exigência das mais difíceis mudanças do modelo mental no Desenvolvimento Adaptativo - das formas de gerenciar e organizar essa liberdade individual à noção de que uma nova ordem criativa emerge de forma imprevisível da auto-organização espontânea.

Além do desenvolvimento, a emergência é o conceito mais importante também do ponto de vista da gestão.

Complexidade

No contexto de Desenvolvimento de Software, Complexidade é sobre -

  • Os indivíduos de uma equipe, como desenvolvedores, clientes, fornecedores, concorrentes e acionistas, seus números e sua velocidade.

  • Tamanho e complexidade tecnológica.

Práticas de desenvolvimento de software adaptativo

O Adaptive Software Development oferece uma perspectiva diferente sobre as práticas de gerenciamento de software. Nas seções abaixo, você pode compreender as duas práticas importantes - Qualidade e RAD, ambas com ramificações para reunir requisitos.

Você pode encontrar os detalhes de todas as práticas no capítulo, Práticas de desenvolvimento de software adaptativo neste tutorial.

Qualidade

Em um ambiente complexo, a prática milenar de "Faça certo da primeira vez" não funciona, pois você não pode prever o que é certo no início. Você precisa ter uma meta para produzir o valor certo. No entanto, em um ambiente complexo, as combinações e permutações de componentes de valor como escopo (recursos, desempenho, níveis de defeito), cronograma e recursos são tão vastas que nunca pode haver um valor ideal. Portanto, o foco é mudar para entregar o melhor valor no mercado competitivo.

Práticas RAD

As Práticas RAD geralmente envolvem uma combinação do seguinte -

  • Ciclo de Vida Evolucionário
  • Grupos de foco do cliente, sessões JAD, análises técnicas
  • Gerenciamento de projeto com limite de tempo
  • Engenharia de Software Contínua
  • Equipes dedicadas com salas de guerra

Os projetos RAD têm um sabor adaptativo inerente e emergente. Muitas organizações de TI são contra RAD. No entanto, a Microsoft e outros produziram softwares incrivelmente grandes e complexos usando técnicas comparáveis ​​ao RAD porque levanta questões sobre sua visão de mundo fundamental.

As práticas RAD e o processo da Microsoft são exemplos de Desenvolvimento Adaptativo em ação. Dar a eles um rótulo (ou seja, Desenvolvimento Adaptativo) e perceber que há um corpo crescente de conhecimento científico (ou seja, teoria CAS) explica por que eles funcionam. Isso deve fornecer uma base para um uso mais extensivo dessas práticas.