Desenvolvimento agil

Preview:

DESCRIPTION

Desenvolvimento Ágil de Software

Citation preview

Desenvolvimento Ágil de Software

UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULSISTEMAS DE INFORMAÇÃO ENGENHARIA DE SOFTWARE

Prof.ª Adriana dos Santos Caparróz Carvalho

Introdução

CAOS

EXCESSO

DE PADRÕES

NOVA

ORDEM

Cada um fazia do seu jeito...Cada um fazia do seu jeito...

Software de baixa qualidadeSoftware de baixa qualidadeMal estar entre desenvolvedor e cliente.Mal estar entre desenvolvedor e cliente.então a Ordem... a Engenharia de Softwareentão a Ordem... a Engenharia de Software

Surgimento de Modelos de SoftwareSurgimento de Modelos de SoftwareModelo em Cascata, em Espiral, de Modelo em Cascata, em Espiral, de PrototipaPrototipaççãoão, , Iterativo e Incremental.Iterativo e Incremental.

••As mudanAs mudançças são as são dificeisdificeis e caras;e caras;••Baixa satisfaBaixa satisfaçção do cliente e da equipe de ão do cliente e da equipe de desenvolvimento.desenvolvimento.

Um pouco de história...

� Início do desenvolvimento de software: CAOS!�Cada um fazia do seu jeito!�Resultados

� Software de baixa qualidade� Mal estar entre desenvolvedores e clientes

Um pouco de história...

� “Necessidade de Organização: ORDEM�A busca pela Engenharia de Software�Processos Descritivos de Software

� RUP, EUP, etc...

�Resultados� Software de baixa qualidade� Mal estar entre desenvolvedores e clientes

Qual a solução?

8080

Caos

88

�� Baixa qualidade do Baixa qualidade do softwaresoftware

�� Baixa satisfaBaixa satisfaçção de ão de clientes e equipe de clientes e equipe de desenvolvimentodesenvolvimento

Ordem

Movimento Ágil

� Movimento político emergente que ataca a velha guarda e propõe mudanças revolucionárias

� Movimento iniciado por programadores experientes e consultores em desenvolvimento de software.

� Os métodos ágeis foram desenvolvidos em um esforço para vencer as fraquezas percebidas e reais da engenharia de software convencional.

Movimento Ágil

� Questionam e se opõe a uma série de mitos/práticas adotadas em abordagens tradicionais de Engenharia de Software e Gerência de Projetos.

� Manifesto Ágil:• Assinado por 17 desenvolvedores em Utah em

fevereiro/2001.

O Manifesto Ágil � “Estamos descobrindo melhores

maneiras/práticas de desenvolver software,fazendo-o e ajudando outros a fazê-lo.

Através deste trabalho passamos a valorizar:

� Indivíduos e interações mais que processos e ferramentas.� Software que funciona mais que documentação detalhada.� Colaboração do cliente mais que negociações contratuais.

� Responder às mudanças mais que seguir um plano.

� Isto é, embora haja valor nos itens do lado direito,nós valorizamos mais os do lado esquerdo.”

� http://www.agilemanifesto.org

O Manifesto Ágil

� Indivíduos e interações valem mais que processos e ferramentas�Quem desenvolve o software?�Melhores ferramentas não são segurança de

trabalho bem feito� “Um idiota com uma ferramenta ainda é um idiota”

O Manifesto Ágil

� Um software funcionando vale mais do que documentação extensa�O que um cliente gostaria de receber? O software

ou um documento explicando o software??�Clientes não entendem documentos técnicos!

O Manifesto Ágil

� A colaboração do cliente vale mais do que a negociação do contrato�Apenas os clientes podem dizer o que querem

(não somos adivinhos!)�Eles nunca acertam da 1ª vez!�Contrato é importante

� Direitos e deveres

�Contrato não substitui a comunicação

O Manifesto Ágil

� Responder a mudanças vale mais do que seguir um plano�As pessoas mudam de prioridade!�O ambiente, as necessidades mudam�Plano de Projeto é essencial, mas deve ser

maleável

O Manifesto Ágil

� Objetivo: satisfazer o cliente entregando, rapidamente e com freqüência, sistemas com algum valor.�Entregar versões funcionais em prazos curtos.

�Estar preparado para requisitos mutantes.

�Pessoal de negócios e desenvolvedores juntos.

�Troca de informações através de conversas diretas.

O que é agilidade?

� Agilidade é a habilidade tanto para criar quanto

para responder à mudança, de forma a obter lucro

em um ambiente turbulento de negócios.

� Mais do que simplesmente diminuir a quantidade de documentação e de processos, também são aspectos importantes da agilidade:� o foco nas pessoas e suas interações;� a capacitação de indivíduos para tomar decisões

rapidamente;� a adaptação de seus próprios processos.

12 Princípios da Aliança Ágil

� Nossa maior prioridade é satisfazer o cliente desde o início por meio de entrega contínua de software valioso.

� Modificações de requisitos são bem-vindas, mesmo que tardias no desenvolvimento.

� Entrega de software funcionando freqüentemente no menor espaço de tempo.

12 Princípios da Aliança Ágil

� O pessoal de negócio e os desenvolvedores devem trabalhar juntos diariamente durante todo o projeto.

� Construção de projetos em torno de indivíduos motivados.

� O método mais efetivo de levar informação para uma equipe de desenvolvimento é por meio da conversa face a face.

12 Princípios da Aliança Ágil

� Software funcionando é a principal medida de progresso.

� Processos ágeis promovem desenvolvimento sustentável.

� Atenção contínua à excelência técnica e ao bom projeto facilitam a agilidade.

12 Princípios da Aliança Ágil

� Simplicidade: a arte de maximizar a qualidade de trabalho efetuado.

� As melhores arquiteturas, requisitos e projetos surgem de equipes auto-organizadas.

� Em intervalos regulares, a equipe reflete sobre como se tornar mais efetiva, então sintoniza e ajusta adequadamente seu comportamento

Suposições-chave do processo ágil

� É difícil prever quais requisitos de software vão persistir e quais serão modificados.

� Para muitos tipos de software, o projeto e a construção são intercalados.

� Análise, projeto, construção e testes não são tão previsíveis como gostaríamos.

Um processo ágil, portanto, deve ser

� Adaptável.�Mas a adaptação contínua sem progresso

realiza pouco. Assim,

� Deve ser adaptado incrementalmente.�Abordagem iterativa: o cliente a avalia o

incremento de software regularmente, fornece o feedback necessário à equipe de software e influencia as adaptações do processo feitas para acomodar o feedback.

Modelos Ágeis de Processo

� Há muitas semelhanças (em filosofia e prática) entre as abordagens de desenvolvimento ágil.

� É preciso enfatizar as características que tornam cada método singular.

� Todos os modelos ágeis satisfazem (em maior ou menor grau) o Manifesto para o Desenvolvimento Ágil.

Modelos Ágeis de Processo

� Scrum� Dynamic Systems Development Method – DSDM� Adaptive Software Development - ASD� Crystal� Feature-Driven Development - FDD� Extreme Programming - XP� Rational Unified Process - RUP � Open Source Software Development� Pragmatic Programming

Modelos Ágeis de Processo

� Qual a filosofia do modelo?� Como se organiza a prática do modelo?� Quais as atividades de “arcabouço”?� Ferramentas� Métricas� Aplicações