Engenharia de Software
Desenvolvimento Ágil
Capítulo 4
Engenharia de Software
Roger Pressman
6a. Edição – McGrawHill
Manifesto Ágil
“Estamos evidenciando maneiras melhores de desenvolver software
fazendo-o nós mesmos e ajudando outros a fazê-lo. Através desse
trabalho, passamos a valorizar:
• Interação entre pessoas MAIS QUE processos e ferramentas;
• Software em funcionamento MAIS QUE documentação abrangente;
• Colaboração com o cliente MAIS QUE negociação de contratos;
• Responder a mudanças MAIS QUE seguir um plano.
Ou seja, mesmo tendo valor os itens à direita, valorizamos mais os
itens à esquerda.” Aliança Ágil – 2001.
Kent Beck, Robert C. Martin, Scott Ambler, Alistair Cockburn, Ward Cunningham, Ron
Jeffries, Steve Mellor, Mike Beedle, Arie van Bennekum, Martin Fowler, James
Grenning, Jim Highsmith, Andrew Hunt, Brian Marick, Ken Schwaber, Jeff Shuterland,
Dave Thomas
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
2
O que é agilidade?
Segundo Ivar Jacobson a agilidade tornou-se uma palavra
mágica que descreve um processo moderno de software.
Tudo é ágil …
- Equipe ágil, capaz de responder adequadamente a
modificações.
- Sendo que modificações envolve todo o desenvolvimento
de software, ou seja, modificações nos requisitos, membros
da equipe, tecnologias.
Na visão de Ivar Jacobson o acolhimento de modificações é
o principal guia para a agilidade
Outras definições podem ser consideradas….
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
3
O que é agilidade?
Segundo a Aliança Ágil existem 12 princípios a serem considerados para
alcançar a agilidade.
1.
Nossa maior prioridade é satisfazer ao cliente desde o início por
meio de entregas contínua de software valioso.
2.
Modificações de requisitos são bem vindas, mesmo que tardias no
desenvolvimento .
3.
Entrega de software funcionando ferqüentemente, a cada duas
semanas até dois meses, de preferência no menor espaço de tempo.
4.
O pessoal de negócio e de desenvolvimento devem trabalhar juntos
diariamente durante todo o projeto
5.
Contrução de projetos em torno de indivíduos motivados.
6.
O método mais eficiente e efetivo de levar informação para dentro de
uma equipe de desenvolvimento e a conversa face a face
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
4
O que é agilidade?
7.
Software funcionando é a principal medida de progresso.
8.
Processos ágeis promovem desenvolvimento sustentável.
9.
Atenção contínua a excelência técnica e ao bom projeto facilitam a
agilidade
10. Simplicidade
11. As melhores arquiteturas, requisitos e projetos surgem de equipes
auto-organizadas.
12. Em intervalos regulares, a equipe reflete sobre como se torna mais
efetiva, então sintoniza e ajusta adequadamente seu comportamento.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
5
Modelos Ágeis de Processo







Extreme Programming(XP)
Desenvolvimento Adaptativo de Software
Desenvolvimento Dinâmico de Sistemas
SCRUM
Família Crystal
Desenvolvimento Guiado por
Características
Modelagem Ágil
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
6
XP (eXtreme Programming)
XP - Extreme Programming
• “O XP (eXtreme Programming) é uma
metodologia ágil para equipes pequenas e
médias desenvolvendo software com
requisitos vagos e em constante mudança“.
Kent Beck, criador da XP.
• É baseado em 4 valores e 12 práticas.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
8
Valores do XP

Comunicação;

Simplicidade;

Realimentação;

Coragem.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
9
Valores do XP

Comunicação: A comunicação não é limitada a
procedimentos formais, há preferência por uma comunicação
mais ágil. Como um telefonema pode ser melhor que um email, a presença física melhor que a comunicação remota ou
um código auto-explicativo melhor que uma documentação
escrita;

Simplicidade: A solução adotada deve ser sempre a mais
simples possível que alcance os objetivos esperados. São
utilizadas tecnologias, projetos, algoritmos e técnicas simples,
que permitirão atender aos requerimentos do usuário final.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
10
Valores do XP

Realimentação (Feedback): Garante que todos entendam
como os resultados estão satisfazendo o cliente. Permite maior
agilidade: erros detectados e corrigidos imediatamente,
requisitos e prazos reavaliados mais cedo, facilidade na
tomada de decisão, permitem estimativas mais precisas, maior
segurança e menos riscos para investidores.

Coragem: É preciso ter coragem para tomar as decisões certas
nas horas certas.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
11
Práticas do XP






Cliente “on-site”
Jogo de planejamento
Metáfora
Releases Curtos
Projeto Simples
Testes antes da
Codificação






Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
Padrões
Refactoring
Programação em pares
Propriedade coletiva
Integração Contínua
Semana de 40 horas
12
Práticas do XP
Cliente “on site” (sempre presente): O cliente fica junto
com o time de desenvolvimento, escreve cartões de estória,
faz realimentação diariamente, fornece exemplos para testes
de integração razoáveis, gerencia testes de aceite, etc..;

Jogo do planejamento: Conhecedores de negócio e de
software decidem conjuntamente em que ordem o sistema
deve ser implementado;

Metáfora: Explicação de alto nível, facilmente entendida que
usa convenções de nomenclatura.

Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
13
Práticas do XP
Releases Curtos: As funcionalidades devem ser entregues
tão cedo e tão freqüentemente quanto possível (tipicamente 3
semanas);

Projeto
Simples:
Toda
funcionalidade
deve
ser
implementada da forma mais simples possível. Considerações
sobre projeto arquitetônico devem ser postergadas, tudo que
pode ser postergado deve ser postergado;

Testes antes da codificação: Ênfase em código livre de
defeitos, os testes de unidade são escritos para validar a
implementação dos cartões de estória. Apenas após o primeiro
teste estiver pronto é que se faz a codificação.

Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
14
Práticas do XP
Padrões: São definidos pela equipe e permitem que
qualquer membro entenda qualquer código.

Refactoring (Refabricação): Abordagem disciplinada para
reestruturação de código.

Programação em pares: Pares de desenvolvedores em uma
máquina desenvolvem todo o código de produção. Revisão
acontece enquanto o código é escrito, uma pessoa lidera com
teclado e mouse e a outra analisa. Os papéis são trocados
periodicamente.


Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
15
Práticas do XP
Propriedade Coletiva: Qualquer um pode mudar código, e
todos são responsáveis por todo o código.

Integração Contínua: medida em que cada cartão de
estórias é implementado e o código passa pelos testes de
unidade, ele é imediatamente integrado e os testes de
integração são executados. Os resultados podem ser
visualizados por toda a equipe e pelo cliente.

Semana de 40 horas: Pequenos incrementos de trabalho
possibilitam que a maioria dos dias termine com a finalização
de uma tarefa.

Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
16
XP - Extreme Programming sob o ponto
de vista de processo de desenvolvimento
Sob o ponto de vista das fases clássicas de processo de desenvolvimento as
atividades chaves do XP estão distribuídas da seguinte forma:
Planejamento:
• Criação dos cartões de estórias, escritas pelos clientes, que descrevem as
características e funcionalidades do software (várias estórias devem ser
contadas;
• O cliente atribui uma prioridade para cada estória;
• Equipe de desenvolvimento (líder) avaliam cada estória e atribuem prazo e
custo. Se a estória precisar de mais de 3 semanas, geralmente pede-se ao
cliente que divida a estória em estórias menores;
• Cliente e equipe de desenvolvimento (líder) decidem a ordem de
implementação de cada estória (versões a serem entregues).
Obs: A qualquer momento o cliente pode adicionar, mudar a prioridade, alterar ou
eliminar estórias. A equipe de desenvolvimento (líder) reconsidera todas as
versões remanescentes e modifica os planos.
Enfoque: Comunicação e Coragem.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
17
XP - Extreme Programming sob o ponto
de vista de processo de desenvolvimento
Projeto:
• Enfoque na simplicidade;
• É projetado pela equipe de desenvolvimento (programadores) o que foi
descrito (nada mais, nada menos);
• Pode-se utilizar cartões CRC (Class Responsability Colaboration);
• Se um problema difícil é encontrado, o XP recomenda a criação de um
protótipo pela equipe de desenvolvimento (programadores) para avaliação
do cliente, visando diminuir riscos;
• Encoraja a refabricação;
Refabricação é um processo de modificar um sistema de software de tal
modo que ele não altere comportamento externo, mas aperfeiçoe a estrutura
interna. É um modo adequado de limpar, alterar e simplificar o projeto interno
visando minimizar defeitos, ou seja, aperfeiçoar o projeto de código depois
que foi escrito.
Obs: O XP praticamente não possui nenhuma metodologia, notação e
documentação.
Enfoque: Simplicidade e Realimentação (Feedback).
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
18
XP - Extreme Programming sob o ponto
de vista de processo de desenvolvimento
Codificação:
• Cria-se uma série de testes unitários, pela equipe de
desenvolvimento (programadores), que exercitarão cada
uma das estórias antes da implementação;
• Programação em pares.
Enfoque: Simplicidade e Realimentação (Feedback).
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
19
XP - Extreme Programming sob o ponto
de vista de processo de desenvolvimento
Teste:
• Elaboração e execução de testes unitários, integração e
validação, pela equipe de desenvolvimento (Quality
Assurance);
• Testes de aceitação, pelos clientes.
Enfoque: Comunicação e Realimentação (Feedback).
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
20
“Conclusões” do XP

As propostas de XP são bastante heterodoxas;

Há uma grande quantidade de experiências sendo
realizadas no mundo todo;

A definição de orçamento ainda não está resolvida;

O nível de qualidade é duvidoso no XP. E possível
obter uma certificação?

A manutenção do sistema por outras equipes de
desenvolvimento pode ser complicada;

Para projetos curtos e com equipes pequenas,
parece funcionar muito bem.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
21
SCRUM
O que é Scrum?
 O Scrum (o nome é derivado de uma atividade do jogo
de rugby) é um modelo ágil de processo que foi
desenvolvido por Jeff Sutherland e por sua equipe no início
da década de 1990.
 Nos últimos anos foi realizado desenvolvimento
adicional de métodos Scrum por Scwaber e Beedle.
 É um processo ágil que permite manter o foco na
entrega do maior valor do negócio, no menor tempo
possível.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
23
Características do Scrum
O Scrum é consistente com o manifesto ágil:
 Pequenas equipes de trabalho são organizadas de
modo a “maximizar a comunicação, minimizar a supervisão
e maximizar o compartilhamento de conhecimento tácito
informal”;
 O processo precisa ser adaptável tanto a modificações
técnicas quanto de negócios “para garantir que o melhor
produto possível seja produzido”;
 O processo produz frequentes incrementos de software
“que podem ser inspecionados, ajustados, testados,
documentados e expandidos”;
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
24
Características do Scrum
 O trabalho de desenvolvimento e o pessoal que o
realiza é divido “partições claras, de baixo acoplamento, ou
em pacotes”;
 Testes e documentação constantes são realizados à
medida que o produto é construído;
 O processo Scrum fornece “habilidade de declarar o
produto ´pronto´ sempre que necessário (porque a
concorrência acabou de entregar, porque a empresa
precisa de dinheiro, porque o usuário/cliente precisa das
funções, porque foi para essa data que foi prometido ...)”.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
25
Forma de trabalho do Scrum
A figura 9 representa o fluxo de processo Scrum.
15 minutos de reunião diária.
Sprint Backlog
Registro de Pendências
Características associadas a
um sprint
a cada
24 horas
2a4
semanas
Product Backlog
Pendência de Produtos:
Características priorizadas
do produto desejado pelo cliente
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
Nova funcionalidade
Ao final do sprint
26
Forma de trabalho do Scrum
 Pendência de Produtos (Product Backlog): uma lista
priorizada de requisitos ou características do projeto que
fornecem valor de negócio para o cliente. Itens podem ser
adicionados à pendência a qualquer momento (é assim que
as modificações são introduzidas). O gerente de produto
avalia a pendência e atualiza as prioridades quando
necessário;
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
27
Forma de trabalho do Scrum
 Registro de Pendências (Sprints Backlog): Consiste
de unidades de trabalho que são necessárias para
satisfazer a um requisito definido na pendência que precisa
ser cumprido em um intervalo de tempo pré-definido
(tipicamnete de 2 a 4 semanas). Durante o sprint, os itens
em pendência a que as unidades de trabalho do sprint se
destinam são congeladas, ou seja não são introduzidas
modificações durante o sprint. Assim, os membros da
equipe trabalham em um ambiente de curto prazo, mas
estável;
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
28
Forma de trabalho do Scrum
 Reuniões Scrum: são reuniões curtas (normalmente de
15 minutos) feitas diariamente pela equipe Scrum. Três
questões chaves são formuladas e respondidas por todos
os membros da equipe.
O que você fez desde a última reunião de
equipe?
Que obstáculos você está encontrando?
O que você planeja realizar até a próxima
reunião de equipe?
Essas reuniões diárias ajudam a equipe a descobrir
problemas potenciais tão cedo quanto possível, e
promovem uma equipe auto-organizada e a socialização do
conhecimento.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
29
Forma de trabalho do Scrum
 Novas funcionalidades: entrega o incremento de
software ao cliente de modo que a funcionalidade
implementada possa ser demonstrada e avaliada pelo
cliente.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
30
Equipe do Scrum
Equipe padrão de trabalho do Scrum
 Scrum Master: Auxilia no desenvolvimento da equipe,
resolvendo impedimentos e assegurando que tudo está de
acordo para que o objetivo estabelecido no sprint seja
alcançado e lidera a reunião diária;
 Product Owner: Representa a voz do cliente/usuário e
muitas vezes é o próprio. É responsável por criar o Product
Backlog;
 Scrum Time: Grupo de desenvolvimento do sprint
(programadores, testadores e etc...).
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
31
Copyright © 2007 - 2014 Profa. Ana Paula Gonçalves Serra.
Todos direitos reservados. Reprodução ou divulgação total ou parcial
deste documento é expressamente proibido sem o consentimento
formal, por escrito, da Profa. Ana Paula Gonçalves Serra.
Profa. Dra. Ana Paula Gonçalves Serra - Engenharia de Software I
32
Download

Apresentação do PowerPoint