Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

40
Conceitos Básicos Sobre Metodologias Ágeis Para Desenvolvimento de Software Charles Sá

Transcript of Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Page 1: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Conceitos Básicos Sobre Metodologias Ágeis Para

Desenvolvimento de Software

Charles Sá

Page 2: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

•Formado em Ciências da Computação

•Pós-Graduado em Engenharia de Sistemas

•Pós-Graduado em EAD

•Gerente de Projetos do Núcleo de Tecnologia da Informação da Universidade Vale do Acaraú – NTI UVA

•Desenvolvedor Autônomo Java, PHP e Delphi

/felizardocharles/charlessoftwares

[email protected]

Page 3: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Clássicos/Tradicionais

Page 4: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Clássicos/Tradicionais

lBaseados em processos e planejamento;

lModelo “cascata”, seguem rigorosamente uma cronologia;

lSupõe-se que é possível prever o futuro;

lPouca interação com o cliente;

lÊnfase em burocracias (documentação);

lInflexibilidade (controle rígido);

lFalhas de comunicação interna.

Page 5: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Clássicos/Tradicionais

FUNCIONA?

Page 6: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis

Velocidade?

Page 7: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis

Não! Adaptação às mudanças.

Page 8: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis

Maior interatividade.

Page 9: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Metodologias ÁgeislNasceu como uma resposta aos métodos “pesados” a partir de 1990, por programadores experientes e consultores em desenvolvimento de software;

l17 “gurus” publicaram o MANIFESTO ÁGIL em 2001 em uma estação de esqui em Utah, EUA;

Page 10: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – Missão dos GuruslDefinir um estilo de desenvolvimento de software que trate dos riscos que envolvem esse processo;

lComunicar essa disciplina da maneira mais clara possível para programadores, gerentes e clientes;

lDefinir recomendações para adaptá-lo às condições locais;

l– Kent Beck

Page 11: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – MudançaslRequisitos mudam;

lO projeto muda;

lOs negócios mudam;

lA tecnologia muda;

lO time (parte ou todo) muda;

l“DEVE-SE TER HABILIDADE PARA LIDAR COM A MUDANCA QUANDO ELA ACONTECER”.

Page 12: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – RiscoslDeslizes no cronograma

lProjeto cancelado

lO sistema "azeda"

lAlta taxa de erros

lNegocio mal compreendido

lMudanças de requisitos

lFalsa riqueza de funcionalidades

lRotatividade da equipe

Guarde este slide!!!

Page 13: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – O que são?lNão há uma definição precisa;

lVisam a melhoria constante do trabalho;

lPráticas específicas variam muito e a maioria dos métodos ágeis possuem conceitos similares;

lAbordagem de planejamento e execução interativa voltado para processos empíricos (complexos, caóticos e com muitas incertezas);

lPrincipais métodos: XP (Extreme Programming), Scrum, FDD (Feature Driven Development), MSF (Microsoft Solution Framework), DSDM (Dynamic System Development Model), Crystal Clear, etc.

Page 14: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – Problemáticas

“Em um novo projeto de software, os requisitos nunca serão completamente conhecidos até que o usuário os tenha utilizado.”

Watts Humphrey, IBM Research

“A incerteza é inerente e inevitável nos processos de desenvolvimento de software e produtos.”

Hadar Ziv, University of California

Page 15: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – Problemáticas

Relatório do Caos (Chaos Report) - 2004

Page 16: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – Problemáticas

Relatório do Caos (Chaos Report) - 2004

Mais de 64% de um sistema de software quase nunca não é utilizado!

Page 17: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – O Manifesto Ágil

“Estamos descobrindo maneiras melhores de desenvolver software, fazendo-o nós mesmos e ajudando outros a

fazerem o mesmo. Através deste trabalho, passamos a valorizar:”

Page 18: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – O Manifesto Ágil

Page 19: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Princípios Ágeisl Nossa maior prioridade é satisfazer o cliente através da

entrega contínua e adiantada de software com valor agregado.

l Mudanças nos requisitos são bem-vindas, mesmo tardiamente no desenvolvimento. Processos ágeis tiram vantagem das mudanças visando vantagem competitiva

para o cliente.

l Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à

menor escala de tempo.

Page 20: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Princípios Ágeisl Pessoas de negócio e desenvolvedores devem trabalhar

diariamente em conjunto por todo o projeto.

l Construa projetos em torno de indivíduos motivados. Dê a eles o ambiente e o suporte necessário e confie neles

para fazer o trabalho.

l O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de

desenvolvimento é através de conversa face a face.

Page 21: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Princípios ÁgeislSoftware funcionando é a medida primária de progresso.

l Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e

usuários devem ser capazes de manter um ritmo constante indefinidamente.

l Contínua atenção à excelência técnica e bom design aumenta a agilidade.

Page 22: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Princípios Ágeisl Simplicidade – a arte de maximizar a quantidade de

l trabalho não realizado – é essencial.

l As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis.

l Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu

comportamento de acordo.

Page 23: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágil

Page 24: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 1 - O JOGO DO PLANEJAMENTO

lReuniões periódicas, a cada ciclo de iteração;

lEvita planejamento extenso e rígido;

lPossibilidade de correções de rota durante o processo;

lPlanejamento das próximas entregas;

lFacilita estimativas de custo e gerenciamento.

Page 25: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 2 – DESENVOLVIMENTO ORIENTADO A TESTES

lTestes constantes e não só ao final do processo;

lDesenvolvimento limpo e organizado;

lDescarte das partes desnecessárias do código a cada iteração.

Page 26: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 3 – PROGRAMAÇÃO EM PARES

l2 desenvolvedores em uma mesma aplicação, ao mesmo tempo, em uma só máquina;

l“Fiscalização” constante da codificação;

lDesenvolvedores codificando sozinhos são mais propensos a erros;

lCódigo de qualidade, menos propenso à falhas.

Page 27: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 4 – INTEGRAÇÃO CONTÍNUA

l Possibilidade de integrar constantemente e rapidamente os códigos desenvolvidos em um ambiente de integração automatizada para o ambiente de produção.

Page 28: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 5 – REFATORAÇÃO CONSTANTE

lReestruturar o código sempre que necessário, sem alterar seu comportamento externo;

lMelhoria da qualidade interna do software para que ele não “azede” quando chegar em produção;

lReduzir a complexidade da programação.

Page 29: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 6 - SIMPLICIDADE

lNenhuma linha de código será escrita caso não tenha um valor real para o sistema e seus usuários;

lDeve-se fazer somente o necessário, nada mais

lO melhor design é o design funcional.

Page 30: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 7 – CICLOS CURTOS DE ENTREGA

lEm um método tradicional, o cliente só entra em contato com o software quando um grande número de funcionalidades já foram finalizadas e entregues;

lEntregas pequenas garantem maior agilidade ao processo de desenvolvimento, permitindo que o usuário utilize o sistema logo no início, estimulando a colaboração e os ajustes no código em uma fase mais adequada do projeto.

Page 31: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 8 - METÁFORA

lDescrição mental de como o sistema funciona.

l 9 – PROPRIEDADE COLETIVA DO CÓDIGO

lQualquer desenvolvedor pode alterar qualquer parte do código a qualquer momento;

lNão existe “dono do código”.

Page 32: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 10 – RITMO SUSTENTÁVEL

lSemana de 40 horas;

lSem horas-extras;

lDiminui a evasão de colaboradores do time.

Page 33: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 11 – CLIENTE PRESENTE

lO cliente como parte integrante do time;

lPossibilita feedbacks constantes;

lAumenta o tempo de resposta à mudanças de escopo no meio do processo.

Page 34: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

12 Práticas do Desenvolvimento Ágill 12 – PADRÕES DE CODIFICAÇÃO

lCódigo padronizado agrega qualidade;

lDar a impressão de que todo o código foi escrito por uma única pessoa.

Page 35: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Métodos Ágeis – RiscoslDeslizes no cronograma = ciclos curtos de entrega;

lProjeto cancelado = menor release priorizado pelo negócio /entregas frequentes;

lO sistema "azeda" = testes abrangentes;

lAlta taxa de erros = testes desenvolvedor e cliente;

lNegócio mal compreendido = cliente presente como parte do time;

lMudanças de requisitos = ciclos curtos de entrega;

lFalsa riqueza de funcionalidades = priorizado pelo negocio;

lRotatividade da equipe = estimativa pelo desenvolvedor.

Guardou este slide??

Page 36: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Analogia

Page 37: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

AnalogialDirigir não é manter-se sempre na mesma direção;

lDirigir é prestar atenção constantemente, fazendo uma pequena correção para um lado, outra pequena correção para o outro

lMesmo que as coisas pareçam perfeitamente bem, nunca tirar o olho da estrada.

Page 38: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Moral da HistórialEm um projeto de software, se o software não faz o que o cliente quer, você falhou;

lNosso trabalho, como desenvolvedor ágil, é fornecer feedbacks constantes sobre a nossa posição na estrada;

l Você deve observar a estrada e fazer correções contínuas para se manter no caminho.

Page 39: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

Principais Certificações

Page 40: Conceitos Básicos Sobre Metodologias Ágeis para Desenvolvimento de Software

/felizardocharles/charlessoftwares

[email protected]