• Nenhum resultado encontrado

metodologiaAgil

N/A
N/A
Protected

Academic year: 2021

Share "metodologiaAgil"

Copied!
59
0
0

Texto

(1)

Engenharia de Software:

Metodologias Ágeis

...

Pasqueline Dantas

(2)

Metodologias tradicionais

Fluxo do processo

 Seqüência de atividades que geram artefatos até

se atingir o objetivo do projeto

 Idéia inicial: receita de bolo

 “Se seguirmos todos os passos, o projeto terá sucesso”  Foco está no processo

Hoje

 Tem-se mudado o foco para pessoas

(3)

Agilidade

O que é agilidade?

 Habilidade de entregar em um tempo curto algo de valor para o cliente

 É preciso parar de tentar evitar mudanças

Metodologias ágeis

 Coleção de práticas

 “Filosofia” onde muitas “metodologias” se encaixam

 Definem um conjunto de atitudes e não um processo

prescritivo

(4)

Metodologias ágeis

Reação às metodologias tradicionais

“Manifesto ágil“ (2001)

 Princípios

Indivíduos e interações são mais importantes que

processos e ferramentas

Software funcionando é mais importante que

documentação completa

Colaboração com o cliente é mais importante que

negociação com contratos

Adaptação às mudanças é mais importante que seguir

(5)

Características gerais

Procuram minimizar riscos desenvolvendo

software em pequenos espaços de tempo

(iterações)

Cada iteração é como um pequeno projeto

 Objetivo de cada iteração

 produzir componentes de software

 Arquitetura vai sendo desenhada a partir da refatoração

dos componentes

Enfatizam comunicação “cara a cara” em

(6)

Comparação entre

abordagens

Métodos Preditivos Métodos Adaptativos

 Ênfase: planejamento de ações

em detalhe

 Ênfase: mudanças e suas

conseqüentes adaptações

 Equipe: sabe que funcionalidades

e tarefas farão nas etapas seguintes no processo de desenvolvimento

 Equipe: não sabe o que irá fazer a

médio e longo prazo

 Mudanças: podem obrigar a

refazer todo o planejamento

 Mudanças: conseqüências e

problemas são encarados à medida que eles chegam

 Iteração: definida por objetivo  Iteração: curta, de tempo fixo, em

(7)

Conceitos equivocados

Métodos ágeis são geralmente comparados a

metodologias orientadas ao “planejamento”

 Mas não são orientadas à predição

Geralmente associado ao estilo “cowboy”

Em geral, requer mais disciplina que metodologias

preditivas

É uma metodologia à parte

 Descrevem práticas, “atitudes” e princípios

(8)

Críticas

Não provê documentação necessária

Dificuldades “após o projeto”

Funciona apenas para equipes experientes

 Práticas disciplinadas e rigorosas

Pouca atenção ao projeto de software

 Arquitetura é definida “de baixo pra cima”

Requer uma grande mudança cultural na

organização para ser adotado

(9)

Quando usar...

Metodologias ágeis Metodologias preditivas

 Projetos pouco críticos  Projetos altamente crítico

 Equipe experiente  Equipe iniciante

 Com mudanças constantes  Com poucas mudanças

 Pequena equipe (≤ 10 )  Equipes maiores ( ≥ 20)

 Equipe co-localizada  Equipe distribuída

(10)

eXtreme Programming

(11)

XP - valores

 Metodologia baseada em um conjunto de práticas e

valores (feedback, comunicação, simplicidade, coragem)

 Feedback

Cliente aprende com o sistema que utiliza e re-avalia suas

necessidades, ele realimenta a equipe com as necessidades que serão implementadas

 Mecanismo para que o cliente direcione suas atenções para

aquilo que irá gerar mais valor

 Comunicação

 Mais direta e eficaz: face-a-face

(12)

XP - valores

 Simplicidade

 Implementar apenas aquilo que é suficiente para atender as

necessidades do cliente

 Problemas são os de hoje!

 Coragem

Acreditar nas práticas  Mudanças profundas

 Manter o sistema simples

 permitir que o cliente priorize as funcionalidades  desenvolver em pares

 investir tempo em refatoramento e testes  estimar diante do cliente

 expor seu código para outras pessoas

 abrir mão da documentação que serve como defesa  propor contratos de escopo variável

(13)

A importância da presença

do cliente...

(14)

Tradicionalmente...

Delega-se ao cliente a tarefa de manifestar

suas necessidades e a equipe de

implementar

 Distanciamento entre eles

No XP, a visão é bem diferente...

 Cliente deve está presente no dia-a-dia do

projeto, literalmente

 A sua participação viabiliza a simplicidade do

processo

(15)

As estórias...

Funcionalidades = estórias

 Convite ao diálogo

 desenvolvedores precisam entender melhor as estórias,

evitando as especulações

 Assim que implementadas devem ser mostradas

ao cliente – feedback (detalhes podem ser adicionados)

 Quanto mais rápido o feedback, mais rápido será o

(16)

Por que é difícil ter o cliente?

 Indisponibilidade para estar presente

Sempre ocupado

Cultura <-> mudança

 Comum considerar que a presença não é recomendável  Convencer o cliente da sua importância no projeto

 Algumas técnicas

 Sala de guerra com o cliente (empresa-cliente disponibiliza

uma sala para o projeto: um representante do cliente será deslocado para lá)

Sala de guerra em outro prédioReuniões freqüentes (semanais)

 Uso de mecanismos síncronos de comunicação. E-mail só em

(17)

Cliente ausente

 O que fazer se o cliente não estiver presente?

 Provavelmente, XP não é a metodologia mais adequada  Desenvolvedores devem evitar

 Decidir pelo cliente - Gente técnica toma decisões técnicas e

gente de negócio toma decisões de negócio!

 Inventar "coisas legais" para colocar no software. Quem sabe o

que é "legal" é o cliente

 Decidir em que ordem as estórias serão implementadas. Eles

podem alertar o cliente quanto a dependências entre estórias que podem afetar a ordem e podem pedir para colocar as de mais alto risco na frente.

 Decidir que funcionalidade cortar quando prazos podem

estourar. Quem sabe o que tem menos Business Value e pode ser cortado é o cliente.

(18)

XP - práticas

1.

Cliente Presente

 Conduz o desenvolvimento de acordo com o

feedback do sistema

 É ativo no processo de desenvolvimento

 No levantamento das estórias  Na realização das estimativas  Priorização

 Testes de aceitação: definindo e executando

(19)

XP - práticas

2.

Jogo do planejamento

 Reunião onde o cliente avalia as funcionalidades

e as prioriza

 Projeto dividido em “partes menores”

 Diferentes oportunidades de se reunir para revisar o

planejamento

 Funcionalidades descritas em pequenos cartões –

chamadas de estórias

No jogo, as estórias são estimadas para que o

cliente conheça o custo da sua implementação  Estimativas são feitas usando uma unidade especial

(20)

XP - práticas

3.

Stand up meeting

 Reuniões a cada manhã que avaliam o trabalho

do dia anterior e priorizam as atividades do dia

 Reunião rápida e objetiva: membros ficam de pé

 Útil para que todos tenham uma idéia do

andamento e progresso da implementação das estórias

(21)

XP - práticas

4.

Programação em pares

 Implementação do código ocorre em pares

Código revisado permanentemente

 Nivelamento de competências: uniformidade

 Aprendizado

(22)

XP - práticas

5.

Desenvolvimento guiado por testes

 Testes para cada funcionalidade antes da

codificação

 Bom porque...

 Aprofundam o entendimento das necessidades do

cliente – aprimora a análise

 Se preocupam com as interfaces externas dos

métodos/classes antes da codificação – melhora o projeto

(23)

XP - práticas

6.

Refatoramento (refactoring)

 Técnica de melhoramento de código, sem adição

de novas funcionalidades

 Para o sistema crescer incrementalmente deve

ser fácil de ser compreendido

 Reforça a existência dos testes  Refina a arquitetura

(24)

XP - práticas

7.

Código coletivo

 Sistema é segmentado em partes

Cada par de desenvolvedores é responsável por

uma delas

 Todos têm acesso as todas as partes e podem

alterar aquilo que julgarem importantes sem a autorização de alguém

(25)

XP - práticas

8. Código padronizado

 Endentação: mesma largura de tabulação, mesmo

posicionamento de chaves

Uso de letras maiúsculas e minúsculasComentários: procure evitá-los

Uso de nomes: não defina por conveniência!

9. Design simples

10. Metáfora

Mecanismo usado para transmitir idéias complexas de

forma simples. Uso de uma linguagem simples entre equipe e cliente

(26)

XP - práticas

11. Ritmo sustentável

40 horas semanais

 Nada de fazer hora extra!

12. Integração contínua

A incorporação de uma funcionalidade pode afetar outras

que estavam funcionando

Garante funcionamento harmonioso

Os pares integram o seu código ao dos demais várias vezes

ao dia

 Testes são executados a cada integração

 Diminui a probabilidade de pequenos problemas se tornarem

(27)

XP - práticas

13.

Releases curtos

 Equipe produz um conjunto reduzido de

funcionalidades e coloca em produção

rapidamente de modo que o cliente já possa utilizar o software no dia-a-dia

(28)

Papéis

 Cliente

Quem define os requisitos (em geral, um usuário)

 Gerente

Facilitador do projeto

 Testador

Define os critérios de aceitação junto ao clienteNão deve participar do desenvolvimento

 Desenvolvedor

Responsável pela análise, projeto e implementação

 Rastreador ou documentador

Coleta sinais do projeto (métricas) - Avalia desempenhoPode ser um desenvolvedor

 Técnico (Coach ou líder)

Especialista do processo. Dá suporte técnico à equipe. Garante o

cumprimento das práticas do processo

(29)
(30)

O sentido do jogo

 XP planeja para assegurar que a equipe esteja

trabalhando naquilo que irá gerar maior valor para o cliente

Acontece diversas vezes durante o projeto: mudança de

prioridades e adequação de novos requisitos

 Todas as estórias são registradas em cartões

Escritas sempre pelo cliente. Não existe formato definido.  Deve-se respeitar o espaço do cartão (10 linhas)

Interessante escrever os cartões porque...

 O cliente é forçado a pensar nas funcionalidades

 Vínculo psicológico – responsabilidade sobre aquilo que está

pedindo

(31)

Estórias

 Algumas estórias...

Apresente ao cliente as 10 tarifas mais baratas para uma

determinada rota

 Para cada conta, computar o saldo fazendo a adição de

todos os depósitos e subtração de todas as deduções

 A tela de login deve permitir que o usuário pule o login.

Neste caso, o usuário entrará no sistema como guest

O usuário deve poder alterar o seu perfil (email, senha,

primeiro, ultimo nome). Dois campos de senha para confirmação

 Depois de levantadas, os desenvolvedores escolhem

(32)

Estórias e tarefas

 Acontece de algumas estórias consumirem muito

tempo (uma ou mais semanas)

Neste caso, a estória é dividida em tarefas que são mais

uma vez distribuídas em novos cartões

(33)

As estimativas

 Necessárias para que o cliente priorize as estórias

 Qual é o custo previsto para cada uma delas?

 No XP uma unidade de medida diferente é utilizada

As estimativas não se baseiam em tempo previsto já que

isso acaba causando distorções.

 A mudança de prioridade de uma estória pode acarretar

atividades extra

 Ao invés de horas, ou dias, a medida utilizada é o DIA IDEAL DE

DESENVOLVIMENTO: se eu tiver o dia todo para implementar a estória, quantos dias levarei para finalizá-la?

O dia ideal de um par de desenvolvedores é chamado

(34)

O ponto

Usado para estimar e acompanhar as

estórias

 Simplifica a comunicação

 Semântica pode mudar de projeto para projeto

 Mas deve ser compreendida por todos

Como utilizá-lo?

No canto superior esquerdo do cartão define-se as

estimativas

 No canto direito a quantidade real de pontos

(35)

Estimar... uma tarefa difícil!

Estimativas

 Por comparação

 A base de experiência: estórias que já foram

implementadas

Em equipe

 Conhecimentos acumulados pela equipe aproximam mais

as estimativas da realidade

 Cliente presente

 Durante as estimativas as dúvidas que surgem podem ser

esclarecidas pelo cliente, evitando que premissas equivocadas sejam assumidas

(36)

Planejamento dos releases

 As entregas sempre são incrementais: projeto é

quebrado em releases

Releases são curtos, em torno de 2 meses e possuem

tamanho fixo

 Como planejar?

1. Cliente define os objetivos de cada release

 R1: processamento de compras on-line ...

2. A equipe informa ao cliente quantos pontos é capaz de

implementar

 Serve como base para escolher as estórias mais prioritárias

3. Cliente distribui as estórias para o release – não é

necessário escrever todas as estórias

(37)

Planejamento das iterações

 Releases são quebrados em iterações

 Pequeno espaço de tempo dedicado para a implementação

de um conjunto de estórias

Iterações: 1-3 semanas, 2 semanas é mais usualO tamanho da iteração é fixo

 Se preciso, o tamanho do escopo pode ser alterado

 Planejamento da iteração visa definir as estórias a

serem implementadas (cliente)

A equipe precisa definir a velocidade da iteração (VI)

VI = quantos pontos podem ser implementados na iteraçãoComo calcular?

(38)

Projeto R5 R4 R3 R2 R1 2 meses

(39)

Velocidade da iteração

Cenário

 Tamanho da iteração = 2 semanas (10 dias úteis)  3 pares de desenvolvedores

 Desconto

 2 dias - planejamento + encerramento da iteração

 Dias úteis = 8

1 par/dia = ponto

 1 par em 8 dias = 8 pontos x (3 pares) = 24  Velocidade da iteração = 24 pontos

(40)

Velocidade da iteração

A equipe é capaz de implementar 24 pontos

a cada iteração

 Teoricamente, porque ao longo do projeto parte

da equipe pode assumir outras atividades: um teste de desempenho

 Finalizando as estórias, os pares devem

acompanhar o número de pontos consumidos

 Essa quantidade corresponde a velocidade da iteração

porque é esse número que será fornecido para a próxima iteração

 Se a equipe implementou as estórias em um número

menor de pontos?

(41)

Encerramento da

iteração/release

Último dia é reservado para a reunião de

encerramento

 O cliente executará todos os testes de aceitação  Validação do sistema

 Se necessário, mudanças podem ser feitas,

reparos podem ser importantes

Depois da última iteração do release

 O sistema posto em produção

(42)

Desenvolvimento guiado

por testes...

(43)

Testes

 Todo mundo sabe que é importante mas ninguém

quer fazer!

Consome muito tempo do desenvolvimento – se der

tempo.... É chato, não é valorizado até o usuário reclamar!

 Aprendizado está relacionado ao tempo do feedback

 Se os testes são feitos durante o desenvolvimento, o

desenvolvedor tem como saber o que causou o erro, não repetindo-o mais.

 Prevenir ou remediar?

 Desenvolvimento x Depuração

 Custos aumentam em função do tempo gasto para encontrar o

(44)

Testes

 Tornam o desenvolvimento mais barato

 Expõe o defeito assim que ele entra no sistema  Fornece pistas...

 XP e os testes

 Sempre gerados em primeiro lugar

 De unidade: verificação sobre cada classe do sistema  De aceitação: sobre cada estória

Quando fazer testes de unidade?

 Antes da implementação, sempre!

 Se a interface de um método não estiver totalmente clara  Necessidade de fazer refatoramento

 Se um problema é encontrado em um código já escrito:

isolamento

(45)

Automatizando um teste

Classes que testam outras classes (1-1)

Todos os testes devem estar reunidos em

uma classe especial responsável por

executar as verificações

 Testes de classe isolados não são eficientes!

(46)

Teste de unidade

O cliente definiu uma estória que se refere a

validação de um número de inscrição

estadual

Qual deve ser o primeiro passo do

desenvolvedor?

 Entender a interface do método

 O que deve ser passado como parâmetro, o que é

retornado na saída?

(47)

Criando uma classe de teste

Estenda a classe junit.framework.TestCase

Sua subclasse de TestCase deverá

simplesmente invocar os testes na ordem

que você desejar

 Adota-se como padrão para o nome da classe de

teste o uso do sufixo "Tester" após o nome da classe que esta sendo testada

Ao executar o JUnit, as expectativas são

(48)

package testes;

import dominio.InscricaoEstadual; import junit.framework.TestCase;

public class InscricaoEstadualTest extends TestCase {

final public void testIsValid() {

boolean b = InscricaoEstadual.isValid("81501319"); assertEquals(true,b);

} }

(49)
(50)

A classe em Java

 A classe Java InscricaoEstadual oferece uma

interface simples  Método IsValid

 para testar se o número de inscrição estadual

informada é válida.

Regra de negócio:

 o número informado deve conter 8 dígitos

 Se o resto da divisão por 11 for menor ou igual a 1

(um), então o dígito verificador será = 0. Se não, o dígito será 11 menos o resto.

(51)
(52)

Mais testes... Testes de

aceitação

(53)

Testes de aceitação (TA)

Importante que se verifique se as classes

envolvidas em uma estória estão se

relacionando corretamente

 TA procuram simular a interação do usuário com o

sistema e verificar se o seu comportamento está correto

É um roteiro que possui um conjunto de

respostas esperadas

 Para a estória existe um passo-a-passo, cada ação

(54)

Testes de Aceitação

 Quem cria?

Cliente + testador

 Quando são escritos?

Antes da implementação das estórias  No primeiro dia da iteração  Dos roteiros  Caminhos válidos, exceções, peculiaridades

Estória Vizualizar itens do carrinho de

compras

Num Ação Resposta

1 Entrar no site Visualizar o carrinho Exibir msg: “Carrinho de compras vazio” 2 Adicionar o produto “Pendrive 512” Visualizar o carrinho Exibir: Pendrive 512- 1 unid. – R$ 70,00 3 Adicionar o produto “Notebook Acer” Visualizar o carrinho Exibir: Pendrive 512- 1 unid. – R$ 70,00 Notebook Acer – 1 unid. – R$ 2.600,00

(55)
(56)

Ambiente de trabalho

(57)

Ambiente

 Mesas

 Permitir o trabalho em pares

Células de trabalho: desaconselhável

 Equipamentos

Máquinas com muito processamento fazem diferença na

produtividade

 Telefone e comida

 Mural

Paredes servem como canal de comunicação

 Cartões: não-iniciados, em andamento, finalizados

(58)

Documentação

Estórias

Testes de aceitação e unidade

Javadoc

Diagrama de classes

Modelo de dados

Processos de negócio

Manual do usuário

(59)

Primeiros dias usando XP...

 1a iteração é a mais crítica

 Organizar a infra-estrutura sem afetar a velocidade do

desenvolvimento

Administrar as expectativas negativas da equipe e

ansiedade do cliente

Estimar sem ter um histórico

 Infra-estrutura

 Ambiente de desenvolvimento (IDE) - Eclipse

 Code completion, assistente de importação, code inspection,

refatoramento

 Ferramenta de build – Ant  Controle de versão – CVS  Ferramentas de teste

Referências

Documentos relacionados

5.2- nas dependências operacionais e junto ao depósito devem ser mantidos recipientes com serragem, areia e calcário (para possibilitar o recolhimento de vazamentos),

Na apresentação dos dados estatísticos, ficou demonstrada à todos os participantes a dimensão da pesquisa, abrangendo o setor produtivo como um todo, enfocando a produção

Diante de resultados antagônicos, o presente estudo investigou a relação entre lesões musculares e assimetrias bilaterais de força de jogadores de futebol medidas por meio

Constatou-se que os artigos publicados concentram-se na área das ciências biológicas, evidenciando uma lacuna de pesquisa para que acadêmicos das ciências sociais aplicadas

Fica estabelecido que no caso de não ser efetuado pela empresa o pagamento dos salários até o quinto dia útil do mês subseqüente ao vencido, bem como do 13º salário e

Ind-1A - Atividade industrial, não incômoda, compatível à vizinhança residencial no que diz respeito às características de ocupação dos lotes, de acesso, de localização,

Marcela Martins Marques Indeferido Parasitose dos Animais – MVP 880 Romário Cerqueira Leite Paulo Roberto de Oliveira Fernanda Ciolfi Deferido Problemas Sanitários Especiais

As recentes técnicas não destrutivas para a localização e quantificação da extensão da infestação proporcionam uma avaliação, de longe, mais precisa das implicações