desenvolvimento de software
TRANSCRIPT
![Page 1: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/1.jpg)
Métodos Ágeis para o Desenvolvimento de Software
Autor: Adilmar Coelho Dantas
(Sistemas para internet)
![Page 2: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/2.jpg)
IntroduçãoConceitos e Objetivos
![Page 3: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/3.jpg)
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
funcionalidades maior
o custo
Estabilidade da relação
custo e funcionalida
de
![Page 4: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/4.jpg)
Principais Métodos
• Abordadas
• Programação extrema
• Scrum
• Programação pareada
• Orientado a testes
• Outros métodos
• Adaptive Software Development
• Crystal
• Pragmatic Programming
![Page 5: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/5.jpg)
Casos de sucesso !!!!
• Assembléia Legislativa do Estado de São Paulo
• Ikwa
• ITM
• Paggo
• Parceria com Scopus e LARC
• Sistema Janus
• LocaWeb
![Page 6: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/6.jpg)
Programação eXtrema (XP)
![Page 7: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/7.jpg)
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
![Page 8: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/8.jpg)
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 atualpensando 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
![Page 9: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/9.jpg)
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
![Page 10: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/10.jpg)
Programação eXtrema (XP)
Praticas da programação XP
• Categorias
– Análise de Requisitos e Planejamento– Fatores relacionados a equipes e fatores humanos– Projeto (Design)– Codificação e lançamento (liberação) de código
• Análise de Requisitos e Planejamento
– Ciclo semanal– Ciclo quinzenal– Folga
• Fatores relacionados a equipes e fatores humanos
– Sentar junto– Time inteiro– Ambiente de trabalho informativo– Trabalho energizado– Programação Pareada
• Projeto (Design)
– Design incremental– Programação com testes primeiro
![Page 11: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/11.jpg)
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
![Page 12: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/12.jpg)
Gerenciamento de Equipescom Scrum
![Page 13: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/13.jpg)
• 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.
Programação eXtrema (XP)
Scrum
![Page 14: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/14.jpg)
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
Programação eXtrema (XP)
Scrum
![Page 15: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/15.jpg)
• 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
Programação eXtrema (XP)
Scrum
![Page 16: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/16.jpg)
• Tipos de processo SCRUM
• Processo prescritivo
– Funciona em ambientes controlados
• Processo empírico
– Funciona para processos complexos e imprevisíveis
Programação eXtrema (XP)
Scrum
![Page 17: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/17.jpg)
Programação pareada
![Page 18: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/18.jpg)
Programação eXtrema (XP)
Scrum Programação 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
![Page 19: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/19.jpg)
Programação eXtrema (XP)
Scrum Programação 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.
![Page 20: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/20.jpg)
Programação eXtrema (XP)
Scrum Programação 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
![Page 21: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/21.jpg)
Programação eXtrema (XP)
Scrum Programação 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...)
![Page 22: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/22.jpg)
Programação eXtrema (XP)
Scrum Programação 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
![Page 23: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/23.jpg)
Orientada a testes
![Page 24: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/24.jpg)
Programação eXtrema (XP)
Scrum Programação pareada
• 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
Orientado a testes
Modelo Cascata
![Page 25: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/25.jpg)
Programação eXtrema (XP)
Scrum Programação pareada
• Tipos de testes
• Unidade
• Integração
• Interface de Usuário
• Aceitação
• Mutação
• Desempenho
• Estresse
• Segurança
Orientado a testes
![Page 26: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/26.jpg)
Programação eXtrema (XP)
Scrum Programação pareada
• 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
Orientado a testes
![Page 27: Desenvolvimento de Software](https://reader035.vdocuments.pub/reader035/viewer/2022062307/557e09e2d8b42a20128b53fa/html5/thumbnails/27.jpg)
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
Programação eXtrema (XP)
Scrum Programação pareada
Orientado a testes