Desenvolvimento de Software

27
Métodos Ágeis para o Desenvolvimento de Software Autor: Adilmar Coelho Dantas (Sistemas para internet)

Transcript of Desenvolvimento de Software

Page 1: Desenvolvimento de Software

Métodos Ágeis para o Desenvolvimento de Software

Autor: Adilmar Coelho Dantas

(Sistemas para internet)

Page 2: Desenvolvimento de Software

IntroduçãoConceitos e Objetivos

Page 3: Desenvolvimento de Software

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

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

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

Programação eXtrema (XP)

Page 7: Desenvolvimento de Software

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

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

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

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

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

Gerenciamento de Equipescom Scrum

Page 13: Desenvolvimento de Software

• 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

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

• 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

• 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

Programação pareada

Page 18: Desenvolvimento de Software

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

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

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

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

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

Orientada a testes

Page 24: Desenvolvimento de Software

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

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

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

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