Adaptive Software Development
![]() | Foram assinalados vários problemas nesta página ou se(c)ção: |
Adaptive Software Development (ASD)[1], em português: Desenvolvimento de Software Adaptativo[2] ou Desenvolvimento adaptável de software[3] é uma técnica para o desenvolvimento de softwares complexos, proposta por Jim Highsmith.
O apoio filosófico do ASD concentra-se na colaboração humana e na auto-organização.
A auto-organização aparece quando agentes individuais independentes cooperam para criar resultados emergentes. Um resultado emergente é uma propriedade além da capacidade de qualquer agente individual.
Características
Características do ASD[4]:
- Iterativo e incremental
- Sistemas grandes e complexos
- Arcabouço para evitar o caos
- Cliente sempre presente
- Desenvolvimento de aplicações em conjunto (Joint Application development – JAD)
Propriedades
ASD é caracterizado por seis propriedades:[3][4]
Orientado a missões (Mission Driven)
Para cada iteração do ciclo de desenvolvimento justifica-se através de uma missão, que pode mudar ao longo do projeto.
Baseado em componentes (Component-Based)
Desenvolvimento orientado a componentes, desenvolvendo o software em pequenas partes.
Iterativo (Iterative)
Desenvolvimento de pequenos ciclos (iterações), com o objetivo de resultar em uma implementação satisfatória para cada missão definida por iteração. O ASD possui foco em refazer do que fazer corretamente já na primeira vez.
Prazos pré-fixados (Time Boxed)
Fixação de prazos para evitar ambigüidade em projetos, com prazos tangíveis forçando com que a equipe defina severamete decisões do projeto logo cedo
Tolerância a mudanças (Change-Tolerant)
Característico do método:
- As mudanças são freqüentes.
- É sempre melhor estar pronto a adaptá-las do que controlá-las.
- Constante avaliação de quais componentes podem mudar.
Orientado a riscos (Risk-Driven)
Todos itens que são considerados características de alto risco tem seu desenvolvimento priorizado.
Iterações
O "ciclo de vida" do ASD é composto por três fases: especulação, colaboração e aprendizado.
- Especulação: iniciação do projeto e planejamento adaptativo.
- Colaboração: pessoal motivado trabalha junto de um modo que multiplica seus talentos e resultados criativos.
- Aprendizado que pode ocorrer de três modos: foco nos grupos, revisão técnicas formais e pós-conclusão.
Especulação
Na fase de especular são feitas algumas atividades gerenciais, com a iniciação do projeto e o planejamento de ciclos adaptáveis. Na iniciação é recomendada a utilização de sessões JAD (joint application development), para que sejam definidos os objetivos do projeto, requisitos básicos, restrições do projeto, riscos e também estimando o tamanho e o escopo. Os requisitos básicos serão utilizados para definir o conjunto de ciclos da versão, ou seja, os incrementos de software operacional. Vale salientar que esse plano de ciclos sofrerá mudanças. Após completar cada ciclo o plano é revisto e ajustado para que tenhamos o trabalho reajustado à realidade que a equipe ASD está trabalhando. A seguir deve-se definir os períodos de implementação para todo o projeto, o número de ciclos necessários, um objetivo ou tema para cada um deles, as características que serão implementadas, as tecnologias utilizadas e, se desejado, uma lista de tarefas. A maioria dessas definições deve ser feita em conjunto com o cliente, obtendo seu consentimento.[5]
Colaboração
Na fase de implementação do sistema ocorre a colaboração, que é um tema bastante discutido e enfatizado nos métodos ágeis. Os desenvolvedores devem tentar promover ao máximo a comunicação e colaboração entre as pessoas e entre times, como, por exemplo, ao realizar discussões em lousas ou em conversas pessoais, ou até aplicar práticas como a programação em pares e autoria coletiva do XP. Os gerentes devem facilitar essas práticas, se preocupando com a concorrência na implementação.[5] A colaboração envolve confiança, críticas sem animosidade, auxílio, trabalho árduo, comunicação dos problemas ou preocupações de forma a conduzir ações efetivas, etc. Dessa forma, a colaboração ajuda bastante no levantamento de necessidades, especificações, etc.
Aprendizado
Por fim, devem ser feitas revisões da qualidade pela gerência, avaliando o que foi entregue pelos desenvolvedores. Essas informações são retro-alimentadas ao ciclo, permitindo que sejam feitos planejamentos mais adequados posteriormente. Além disso, deve-se avaliar o desempenho das iterações, observando os seguintes aspectos[6]:
- Qualidade resultante sob a perspectiva do cliente.
- Qualidade resultante sob a perspectiva técnica.
- O funcionamento do time de desenvolvimento e as práticas que os seus membros empregam.
- O status do projeto.
Essas informações permitem o maior entendimento do andamento do projeto e suas perspectivas, além de serem úteis para as conclusões que devem ser tiradas ao final do projeto, em seu post-morten.
O ASD também enfatiza que o aprendizado é um elemento-chave para que possamos conseguir uma equipe auto-organizada. Highsmith argumenta que os desenvolvedores superestimam o seu próprio entendimento quanto à tecnologia, processo ou mesmo quanto ao projeto. Dessa forma, Highsmith enfatiza que o aprendizado irá ajudar a todos os desenvolvedores a aumentar os níveis reais de entendimento. Com base nisso, as equipes ASD aprendem através de três maneiras: grupos focados, revisões técnicas e autópsias de projetos.[5]
Cargos e Responsabilidades
Este método não descreve cargos em detalhes [4]:
- Executivo responsável (Executive Sponsor)
Participantes de uma sessão (workshop) do desenvolvimento de aplicações em conjunto (JAD).
- Facilitador (Facilitator): Liderar e planejar as sessões.
- Escriba (Scribe): Efetuar anotações.
- Cliente (Customer): Sempre presente.
- Gerente de Projetos (Project Manager)
- Desenvolvedores (Developers)
Veja também:
Referências
- ↑ «"Site Oficial ASD"» (em inglês). Consultado em 26 de março de 2015
- ↑ «Guia de Projeto de Sistemas com Práticas de Métodos Ágeis e Terceirização do Desenvolvimento para o SISP». Brasília: Secretaria de Logística e Tecnologia da Informação. 2 de fevereiro de 2015. p. 6. 89 páginas. Consultado em 26 de março de 2015
- ↑ a b César Sanz Gutierrez; Eduardo Yukio Miyake; Fábio Henrique Pereira Lima; Nick Lazur (2009). «Engenharia de Requisitos na Metodologia Ágil» (pdf). Orientadora: Dra. Judith Pavón. Universidade Anhembi Murumbi. 144 páginas. Consultado em 26 de março de 2015
- ↑ a b c dos Santos, Rogério Guaraci; Giulian Dalton Luz. «Métodos Ágeis» (PDF)
- ↑ a b c Siqueira, Fábio Levy. «Métodos Ágeis» (pdf)
- ↑ Highsmith, Jim (2002). Agile Software Development Ecosystems (em inglês). [S.l.]: Addison Wesley. ISBN 978-0201760439