O documento discute métodos ágeis de desenvolvimento de software, como Programação Extrema (XP), Scrum, Programação Pareada e Orientado a Testes. Ele descreve os princípios, práticas e benefícios desses métodos, além de casos de sucesso em sua aplicação.
3. O que são métodos ágeis de desenvolvimento?
• Metodologias de desenvolvimento que nos permita alterar
constantemente o código sem comprometer sua qualidade.
Quanto mais Estabilidade da
relação custo e
funcionalida
funcionalidade
des maior o
custo
4. Principais Métodos
• Abordadas • Outros métodos
• Programação extrema • Adaptive Software Development
• Scrum • Crystal
• Programação pareada • Pragmatic Programming
• Orientado a testes
5. Casos de sucesso !!!!
• Assembléia Legislativa do Estado de São Paulo
• Ikwa
• ITM
• Paggo
• Parceria com Scopus e LARC
• Sistema Janus
• LocaWeb
7. Programação
eXtrema (XP)
É uma metodologia ágil para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e
em constante mudança. Para isso, adota a estratégia de constante acompanhamento e realização de vários
pequenos ajustes durante o desenvolvimento de software. Desenvolvedor (KENT BECK)
Valores
• Comunicação
• Simplicidade
• Retroalimentação (Feedback)
• Coragem
• Respeito
Comunicação
• A maioria dos problemas e erros são causados por falta de comunicação
• Maximizar a comunicação entre a equipe e o cliente
• Comunicação entre pessoas: direta
• Comunicação entre pessoas e artefatos:
• estes devem ser de leitura fácil e estar atualizados
8. Programação
eXtrema (XP)
Valores contrários a programação XP
• Comunicação
– preferir papel a olho-no-olho
• Simplicidade
– fazer mais do que o necessário para resolver o problema atual
pensando em antecipar a resolução de problemas futuros
• Retroalimentação (Feedback)
– Retroalimentação só bem perto do final. Contrato assinado.
• Coragem
• Respeito
– Longas jornadas de trabalho para terminar o projeto
9. Programação
eXtrema (XP)
Princípios da programação XP
• Humanidade
• Economia
• Benefício mútuo
• Auto similaridade
• Melhora contínua
• Diversidade
• Reflexão
• Oportunidade
• Redundância
• Falha
• Qualidade
• Passos de bebê
• Responsabilidade aceita
10. Programação
eXtrema (XP)
Praticas da programação XP
• Categorias • Fatores relacionados a equipes e fatores humanos
– Análise de Requisitos e Planejamento – Sentar junto
– Fatores relacionados a equipes e fatores humanos – Time inteiro
– Projeto (Design) – Ambiente de trabalho informativo
– Codificação e lançamento (liberação) de código – Trabalho energizado
– Programação Pareada
• Análise de Requisitos e Planejamento
• Projeto (Design)
– Ciclo semanal
– Ciclo quinzenal – Design incremental
– Folga – Programação com testes primeiro
11. Programação
eXtrema (XP)
Praticas da programação XP
• Codificação e lançamento (liberação) de código
– Build de dez minutos (compilar)
– Integração contínua
• Codificação e lançamento (liberação) de código
– Código e testes
– Código compartilhado
– Base de código única
– Entrega (deployment) diária
13. Programação
Scrum
eXtrema (XP)
• O Scrum é um processo de desenvolvimento iterativo e incremental para
gerenciamento de projetos e desenvolvimento ágil de software.
• Scrum possui seu foco na gerenciamento de projeto da organização onde é
difícil planejar à frente.
14. Programação
Scrum
eXtrema (XP)
Características
• Processo de controle e gerenciamento
• Processo iterativo de inspeção e adaptação
• Usado para gerenciar projetos complexos
• Entrega valor de negócio periodicamente
• Compatível com CMMi até o nível 3, ISO e outras metodologias
• Extremamente simples, mas muito difícil
15. Programação
Scrum
eXtrema (XP)
• Princípios do SCRUM
• Os envolvidos trabalham em equipe com:
• – Responsabilidade
• – Transparência
• – Honestidade
• – Auto-organização
• Fornecer software funcionando
• – De forma incremental
• – Potencialmente empregável
16. Programação
Scrum
eXtrema (XP)
• Tipos de processo SCRUM
• Processo prescritivo
– Funciona em ambientes controlados
• Processo empírico
– Funciona para processos complexos e imprevisíveis
18. Programação Programação
Scrum
eXtrema (XP) pareada
• Programação pareada é a prática onde um ou mais programadores
trabalham lado a lado em um computador colaborando no mesmo
projeto, algoritmo, código ou teste.
Principal vantagem
Quando se está trabalhando em par se trabalha o dia todo. Pois ao
trabalhar sozinho, você vê o seu e-mail, lê blogs e etc. E essas coisas
não acontecem com programação em par. Ao fim de um dia de
programação em par você está cansado, pois você realmente pensou
e trabalhou o dia todo. Mas você fica contente, pois sabe que teve o
trabalho realizado
19. Programação Programação
Scrum
eXtrema (XP) pareada
• O par é composto de:
• Um motorista: que digita no computador ou registra o projeto
• Um navegador: que observa o trabalho do motorista e identifica
problemas, clarifica questões e faz sugestões.
• Os parceiros devem trocar de papéis de tempos em tempos para compartilhar o
trabalho igualmente e obter o máximo da sua experiência com a programação
pareada.
20. Programação Programação
Scrum
eXtrema (XP) pareada
• Importante
• Um controla o teclado e o mouse
• O outro observa criticamente
• Os dois estão continuamente dialogando
• De tempos em tempos, o controle muda de mãos
• Ao longo de um projeto, os companheiros são trocados
21. Programação Programação
Scrum
eXtrema (XP) pareada
• Vale a pena ?
• Aparentemente não...
• Usa dois “recursos” em vez de um
• Pagar o salário de dois desenvolvedores para trabalharem num mesmo
problema???
• Os dois usam o mesmo computador a maior parte do tempo (o outro fica ocioso...)
22. Programação Programação
Scrum
eXtrema (XP) pareada
• Por que fazer ?
• Pesquisas mostraram que:
• Aumenta a qualidade do software
• As tarefas são completadas em menos tempo(mas não necessariamente em menos
da metade do tempo que um programador sozinho gasta)
• Tão importante quanto a programação pareada são a análise pareada e o projeto
(design) pareado
24. Programação Programação Orientado a
Scrum
eXtrema (XP) pareada testes
• Orientada no modelo cascata
– Licitação de requisitos
– Projeto
– Construção (implementação ou codificação)
– Integração
– Teste e depuração
– Instalação
– Manutenção de software
26. Programação Programação Orientado a
Scrum
eXtrema (XP) pareada testes
• Teste de Software:
– Executar o programa a ser testado com alguma entrada e conferir visualmente os
resultados obtidos
• Teste Automatizado:
– Programa ou script executável que roda o programa a ser testado e faz verificações
automáticas em cima dos efeitos colaterais obtidos.
• Testar NÃO é depurar
– Testar é verificar a presença de erros
– Depurar é seguir o fluxo para identificar um erro conhecido
27. Programação Programação Orientado a
Scrum
eXtrema (XP) pareada testes
Principais Métodos
• Referencias
• BECK, Kent. Simple Smalltalk Testing: With Patterns.
• http://www.xprogramming.com/testfram.htm
• http://www-128.ibm.com/developerworks/java/library/•
• http://www.instrumentalservices.com/media/articles
• http://www.prowareness.com/blog/pair-programing-an-xp-practice-benefits/
Livro: Metodologias Ágeis: Engenharia de Software sob Medida - José Henrique
Teixeira de Carvalho Sbrocco e Paulo Cesar de Macedo