conceitos básicos sobre metodologias Ágeis para desenvolvimento de software

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

Upload: felizardo-charles

Post on 15-Apr-2017

224 views

Category:

Software


1 download

TRANSCRIPT

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]