SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
Engenharia de Software
Unidade III – Desenvolvimento Ágil
de Projetos de Software

Objetivo: Enfatizar o modelo e as práticas ágeis de
desenvolvimento de software
                               Prof. Nécio de Lima Veras
Roteiro...
 Manifesto Ágil
 Agilidade e Processos Ágeis
   Frameworks
   TDD
   BDD
   User Stories
   Velocity

 Modelos Ágeis
     SCRUM e XP;
Manifesto Ágil
 Um grupo em fevereiro de 2001, chamado de Agile
  Alliance, começou a descobrir maneiras melhores e mais
  leves de desenvolver software valorizando:
      pessoas e interações ao invés de processos e
       ferramentas;
      softwares funcionando no lugar de documentações
       abrangentes;
      colaborações com clientes do que negociações de
       contratos e respostas à mudanças por planos fechados.
Manifesto Ágil
 O modelo é baseado em            mudanças
    abrangentes;
 O desenvolvedor deve melhorar
    continuamente um protótipo
    incompleto até que o cliente fique feliz com o
    resultado;
   O Manifesto Ágil está reforçado com outros DOZE
    princípios que regem a filosofia de criar softwares com
    agilidade [BECK, 2001].
Os doze princípios
1. Nossa maior prioridade é satisfazer o cliente através da entrega contínua e
   adiantada de software com valor agregado.


2. 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.


3. Entregar frequentemente software funcionando, de poucas semanas a
   poucos meses, com preferência à menor escala de tempo.


4. Pessoas de negócio e desenvolvedores devem trabalhar diariamente em
   conjunto por todo o projeto.
Os doze princípios
5. 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.


6. 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.


7. Software funcionando é a medida primária de progresso.


8. Os processos ágeis promovem desenvolvimento sustentável. Os
   patrocinadores, desenvolvedores e usuários devem ser capazes de manter um
   ritmo constante indefinidamente.
Os doze princípios
9. Contínua atenção à excelência técnica e bom design aumenta a
   agilidade.


10.Simplicidade (a arte de maximizar a quantidade de trabalho não
   realizado) é essencial.


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


12.Em intervalos regulares, a equipe reflete sobre como se tornar
   mais eficaz e então refina e ajusta seu comportamento de acordo.
 Agilidade e Processos Ágeis
   Frameworks
   TDD
   BDD
   User Stories
   Velocity
Agilidade
     Você não tem que escolher entre
    agilidade e engenharia de software.
  Em vez disso, defina uma abordagem de
   engenharia de software que seja ágil.
Test Driven Development


“A grande maioria das pessoas já teve alguma
experiência com um software que não funcionou como
esperado. Softwares que não funcionam corretamente
podem levar a muitos problemas, incluindo financeiro,
tempo e reputação das empresas. Podendo, inclusive,
chegar a influenciar na integridade das pessoas”
[ISTQB 2011].
Test Driven Development
 Podemos associar a qualidade de um software à
  quantidade de falhas percebidas no mesmo;
     O teste de software ajuda a medir e/ou garantir essa
      qualidade;

 Níveis de Teste:
   Unidade (componente)
   Integração (interface entre componentes)
   Sistema (comportamento)
   Aceitação (apropriado para uso).
Test Driven Development
 Modos de Testar:
 Manual
     Ex.: Inspeção manual de Código
 Automático
     Ex.: Asserção com JUnit

 No contexto de testes automáticos se sobressaem duas
  abordagens:
     TDD (Testing-Driven Development) ou Desenvolvimento dirigido por
      testes
     BDD (Behavior-Driven Design) ou Projeto guiado por comportamento
TDD
 TDD se apoia nos passos:
   Escreva o teste, para a funcionalidade, antes de
    estar implementada (os testes irão falhar)
   Escreva o código de modo a fazer os teste
    passar
   Refatore o código
   Repita o processo
Test Driven Development
Behavior Driven Development
 Sobre BDD podemos fazer as seguintes considerações
 [Fox e Patterson 2012]:
   BDD faz perguntas sobre comportamentos antes e
    durante o desenvolvimento, visando reduzir falhas na
    comunicação dentro do projeto.
   Requisitos são escritos como estórias de usuários. São
    criadas descrições simples de como a aplicação deve
    ser utilizada.
   BDD se concentra no comportamento da aplicação
    versus a implementação da aplicação e os testes são
    conduzidos utilizando TDD.
Behavior Driven Development
 Um exemplo simples considerando a seguinte
 narrativa:
   Como um usuário
   Eu quero comprar produtos em promoção
   E então receber um email de confirmação


   Scenario: Verificar produtos em promoção
   Given Que uma loja possui 10 produtos
   and Que 5 estão em promoção
   When Eu verifico quais estão em promoção
   Then Preencho minha sacola apenas com produtos
    em promoção
Behavior Driven Development
public class PromocaoSteps extends PtBRSteps {
        Loja loja               = new Loja();
        Sacola sacola   = new Sacola();
        List<Produto> listaProdutoPromocao;
        int quantidadeProdutoPromocao;
 
        @Given("Que uma loja possui $quant produtos")
        public void populaLoja(Integer quantidade) {
                loja.inicializaProdutos(quantidade);
        }
 
        @Given("Que $quant estão em promoção")
        public void informaProdutosPromocao(Integer quantidade) {
                loja.colocaProdutosPromocao(quantidade);
                quantidadeProdutoPromocao = quantidade;
        }
 
        @When("Eu verifico quais estão em promoção")
        public void verificaProdutosPromocao() {
                listaProdutoPromocao = loja.retornaProdutosPromocao();
        }
 
        @Then("Preencho minha sacola apenas com produtos em promoção")
        public void populaSacola() {
                sacola.populaSacola(listaProdutoPromocao);
 
                Assert.assertEquals(listaProdutoPromocao.size(),
quantidadeProdutoPromocao);
        }
}
Behavior Driven Development
 Assim temos:
   “Given” é a condição inicial
   “When” é a ação realizada para a obtenção do
    resultado
   “Then” a conclusão/comportamento esperado
User Story
 Story vem de conto (estória) e não de história (relato de fatos);
 É basicamente uma lista de requisitos, funções que o dono do
   negócio solicita e que espera que elas sejam entregues, descritas
   em linguagem coloquial.
 Aspectos críticos:
       Deve ser escrita em cartões (ou post-its), pois devem ser pequenas;
       Deve identificar uma funcionalidade;
       Deve ser definida uma forma de validação.
       Devem ser independentes umas das outras;
       Não são contratos, mas sim lembretes. Por isso devem ser
        informais;
       Devem agregar valor ao cliente;
       Devem ser estimáveis;
       Devem ser testáveis.
User Story - Exemplos
Velocity
 Uma das mais importantes métricas para um time Ágil;
 Em termos de gerenciamento de projetos, Velocity é o “valor
  de trabalho” que um time precisa completar em um dado
  período de tempo (entre 1 e 4 semanas);
 Este “valor de trabalho” é número total de estórias que o
  time estimou;
 Assim, Velocity é simplesmente o trabalho dividido pelo
  time;
 Para isso é feito um cálculo de produtividade baseado no
  total de funcionalidades codificadas, seu grau de
  importância e o tempo gasto;
Modelos ágeis:
SCRUM e XP
Scrum
    É um modo á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 Sewaber e
     Beedle.
Scrum
    Princípios:
     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 do
      software “que podem ser inspecionados,
      ajustados, testados, documentados e
      expandidos”.
Scrum
    Princípios:
     O trabalho de desenvolvimento e o pessoal que o
      realiza é dividido “em 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 a “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.)”
SCRUM
eXtreme Programming
 O XP usa uma abordagem orientada a objetos
  como seu paradigma de desenvolvimento
  predileto.
 Inclui um conjunto de regras e práticas que
  ocorrem no contexto de quatro atividades:
     planejamento,
     projeto,
     codificação e
     teste.
Extreme Programming (XP)
   Planejamento:
       Começa com a criação de
        um conjunto de histórias
        (histórias do usuário) que
        descrevem as
        características e
        funcionalidades
        requeridas para o
        software a ser construído.
       Cada história é escrita
        pelo cliente e é colocada
        em um cartão de
        indexação.
Extreme Programming (XP)
    Planejamento:
        O cliente atribui um
         valor (prioridade) para a
         história, com base no
         valor de negócio global
         da característica ou da
         função.
        Membros da equipe XP
         avaliam então cada
         história e lhe atribuem
         um custo – medido em
         semanas de
         desenvolvimento.
Extreme Programming (XP)
    Planejamento:
        Se a história precisar
         mais do que três
         semanas de
         desenvolvimento, pede-
         se ao cliente para
         dividir a história em
         histórias menores e a
         atribuição de valor e
         custo ocorre
         novamente.
        Novas histórias podem
         ser escritas a qualquer
         momento.
Extreme Programming (XP)
    Planejamento:




                           Histórias
Extreme Programming (XP)
    Projeto:
        O projeto XP segue rigorosamente o princípio KIS
         (keep it simple – mantenha a simplicidade).
        Um projeto simples é sempre preferível em
         relação a uma representação mais complexa.
        Além disso, o projeto fornece diretrizes de
         implementação para uma história como ela está
         escrita – nada mais e nada menos.
        O XP encoraja o uso de cartões CRC (Class
         Responsability Colaborator) como um mecanismo
         efetivo para raciocinar sobre o software no
         contexto orientado a objetos.
Extreme Programming (XP)
    Características:
        Encoraja a refatoração;
        A Programação em par;
        Desenvolvimento incremental;
        A integração contínua;
        Testes!!!
Extreme Programming (XP)
Exercícios
Referências
 Beck, K., et al. (2001). "Manifesto for Agile
  Software Development". Agile Alliance.
  http://agilemanifesto.org/. Acessado em 18 de
  agosto de 2012.
 Fox, A., Patterson, D. (2012). “Engineering
  Long-Lasting Software: An Agile Approach
  Using SaaS and Cloud Computing”, Alpha
  Edition. Strawberry Canyon LLC, 2012.

Contenu connexe

Tendances

Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme ProgrammingDenis L Presciliano
 
Extreme programming (xp) - Resumo
Extreme programming (xp) - ResumoExtreme programming (xp) - Resumo
Extreme programming (xp) - ResumoDaniel Brandão
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)Renato Pina
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme ProgrammingMilfont Consulting
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Claudia Melo
 
Extreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilExtreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilJaffer Veronezi
 
Gestão da qualidade metodologia ágil v01 (2)
Gestão da qualidade   metodologia ágil v01 (2)Gestão da qualidade   metodologia ágil v01 (2)
Gestão da qualidade metodologia ágil v01 (2)Sabrina Mariana
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Softwarealexandre_malaquias
 
SCRUM e PMBOK unidos no gerenciamento de projetos
SCRUM e PMBOK unidos no gerenciamento de projetosSCRUM e PMBOK unidos no gerenciamento de projetos
SCRUM e PMBOK unidos no gerenciamento de projetosGUGP SUCESU-RS
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Tradução resumida do livro "The Elements of Scrum"
Tradução resumida do livro "The Elements of Scrum"Tradução resumida do livro "The Elements of Scrum"
Tradução resumida do livro "The Elements of Scrum"Henrique Bueno
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumRafael Souza
 
Jornada do backlog do produto
Jornada do backlog do produtoJornada do backlog do produto
Jornada do backlog do produtoIvan Ferraz
 

Tendances (20)

Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme Programming
 
38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
Qualidade desenvolvimento-produtos
Qualidade desenvolvimento-produtosQualidade desenvolvimento-produtos
Qualidade desenvolvimento-produtos
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Extreme programming (xp) - Resumo
Extreme programming (xp) - ResumoExtreme programming (xp) - Resumo
Extreme programming (xp) - Resumo
 
eXtreme Programming (xp)
eXtreme Programming (xp)eXtreme Programming (xp)
eXtreme Programming (xp)
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme Programming
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)
 
Extreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilExtreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia Ágil
 
Lista de Práticas Ágeis
Lista de Práticas ÁgeisLista de Práticas Ágeis
Lista de Práticas Ágeis
 
Gestão da qualidade metodologia ágil v01 (2)
Gestão da qualidade   metodologia ágil v01 (2)Gestão da qualidade   metodologia ágil v01 (2)
Gestão da qualidade metodologia ágil v01 (2)
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Software
 
SCRUM e PMBOK unidos no gerenciamento de projetos
SCRUM e PMBOK unidos no gerenciamento de projetosSCRUM e PMBOK unidos no gerenciamento de projetos
SCRUM e PMBOK unidos no gerenciamento de projetos
 
Extreme programming (xp)
 Extreme programming   (xp) Extreme programming   (xp)
Extreme programming (xp)
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
Tradução resumida do livro "The Elements of Scrum"
Tradução resumida do livro "The Elements of Scrum"Tradução resumida do livro "The Elements of Scrum"
Tradução resumida do livro "The Elements of Scrum"
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e Scrum
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Jornada do backlog do produto
Jornada do backlog do produtoJornada do backlog do produto
Jornada do backlog do produto
 
Teste Ágeis para todo o time
Teste Ágeis para todo o timeTeste Ágeis para todo o time
Teste Ágeis para todo o time
 

Similaire à Desenvolvimento ágil de software

Workshop Agilizando Projetos com SCRUM
Workshop Agilizando Projetos com SCRUMWorkshop Agilizando Projetos com SCRUM
Workshop Agilizando Projetos com SCRUMElumini Outdoing IT
 
Lean Thinking e Agile para desenvolvimento de software
Lean Thinking e Agile para desenvolvimento de softwareLean Thinking e Agile para desenvolvimento de software
Lean Thinking e Agile para desenvolvimento de softwareTiago França
 
Governança Ágil - Ágiles 2009
Governança Ágil - Ágiles 2009Governança Ágil - Ágiles 2009
Governança Ágil - Ágiles 2009Clavius Tales
 
Fdd em uma casca de banana
Fdd em uma casca de bananaFdd em uma casca de banana
Fdd em uma casca de bananaejedelmal
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixCris Fidelix
 
Gerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMGerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMLucas Vinícius
 
Gestão de Produtos com Scrum e algo mais...
Gestão de Produtos com Scrum e algo mais...Gestão de Produtos com Scrum e algo mais...
Gestão de Produtos com Scrum e algo mais...Fábio Aguiar
 
Scrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosScrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosWilliam Lima
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCPFrank Coelho
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcpFrank Coelho
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Fábio Nogueira de Lucena
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 
Apostila Scrum: Fundamentos do Scrum
Apostila Scrum: Fundamentos do ScrumApostila Scrum: Fundamentos do Scrum
Apostila Scrum: Fundamentos do ScrumMindMasterBrasil
 

Similaire à Desenvolvimento ágil de software (20)

Workshop Agilizando Projetos com SCRUM
Workshop Agilizando Projetos com SCRUMWorkshop Agilizando Projetos com SCRUM
Workshop Agilizando Projetos com SCRUM
 
Lean Thinking e Agile para desenvolvimento de software
Lean Thinking e Agile para desenvolvimento de softwareLean Thinking e Agile para desenvolvimento de software
Lean Thinking e Agile para desenvolvimento de software
 
Governança Ágil - Ágiles 2009
Governança Ágil - Ágiles 2009Governança Ágil - Ágiles 2009
Governança Ágil - Ágiles 2009
 
Fdd em uma casca de banana
Fdd em uma casca de bananaFdd em uma casca de banana
Fdd em uma casca de banana
 
Gerenciamento ágil de projetos com scrum
Gerenciamento ágil de projetos com scrumGerenciamento ágil de projetos com scrum
Gerenciamento ágil de projetos com scrum
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
 
Gerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUMGerenciamento ágil de processos - SCRUM
Gerenciamento ágil de processos - SCRUM
 
Gestão de Produtos com Scrum e algo mais...
Gestão de Produtos com Scrum e algo mais...Gestão de Produtos com Scrum e algo mais...
Gestão de Produtos com Scrum e algo mais...
 
Scrum - Gerenciamento de Projetos
Scrum - Gerenciamento de ProjetosScrum - Gerenciamento de Projetos
Scrum - Gerenciamento de Projetos
 
Artigo23
Artigo23Artigo23
Artigo23
 
Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.Specflow - Criando uma ponte entre desenvolvedores.
Specflow - Criando uma ponte entre desenvolvedores.
 
1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP1- Apresentacao Metodologia RCP
1- Apresentacao Metodologia RCP
 
1 apresentacao metodologia rcp
1  apresentacao metodologia rcp1  apresentacao metodologia rcp
1 apresentacao metodologia rcp
 
Processos Ágeis
Processos Ágeis Processos Ágeis
Processos Ágeis
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
 
Desmistificando Agile & Scrum
Desmistificando Agile & ScrumDesmistificando Agile & Scrum
Desmistificando Agile & Scrum
 
Artigo
ArtigoArtigo
Artigo
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
 
Desenvolvimento Ágil
Desenvolvimento ÁgilDesenvolvimento Ágil
Desenvolvimento Ágil
 
Apostila Scrum: Fundamentos do Scrum
Apostila Scrum: Fundamentos do ScrumApostila Scrum: Fundamentos do Scrum
Apostila Scrum: Fundamentos do Scrum
 

Plus de Nécio de Lima Veras

Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosNécio de Lima Veras
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Nécio de Lima Veras
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoNécio de Lima Veras
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados Nécio de Lima Veras
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesNécio de Lima Veras
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsNécio de Lima Veras
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesNécio de Lima Veras
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 

Plus de Nécio de Lima Veras (20)

Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introdução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmosIntrodução à analise e complexidade de algoritmos
Introdução à analise e complexidade de algoritmos
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Versionamento com git
Versionamento com gitVersionamento com git
Versionamento com git
 
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
Uma Abordagem Baseada em Agentes para Planejamento e Monitoramento de Serviço...
 
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMoIntrodução à Engenharia de Software Orientada a Agentes com JaCaMo
Introdução à Engenharia de Software Orientada a Agentes com JaCaMo
 
Jason: Componentes personalizados
Jason: Componentes personalizados Jason: Componentes personalizados
Jason: Componentes personalizados
 
Agentes inteligentes com jason
Agentes inteligentes com jasonAgentes inteligentes com jason
Agentes inteligentes com jason
 
Ambientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentesAmbientes em Sistemas Multi-agentes
Ambientes em Sistemas Multi-agentes
 
Arquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agentsArquiteturas concretas de agentes inteligentes - bdi agents
Arquiteturas concretas de agentes inteligentes - bdi agents
 
Revisão de matemática
Revisão de matemáticaRevisão de matemática
Revisão de matemática
 
Especificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentesEspecificações iniciais de agentes inteligentes
Especificações iniciais de agentes inteligentes
 
Notas sobre agentes inteligentes
Notas sobre agentes inteligentesNotas sobre agentes inteligentes
Notas sobre agentes inteligentes
 
Anotações do mapeamento OR
Anotações do mapeamento ORAnotações do mapeamento OR
Anotações do mapeamento OR
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Mapeamento de herança OR
Mapeamento de herança ORMapeamento de herança OR
Mapeamento de herança OR
 
Relacionamentos do mapeamento OR
Relacionamentos do mapeamento ORRelacionamentos do mapeamento OR
Relacionamentos do mapeamento OR
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Java swing
Java swingJava swing
Java swing
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 

Desenvolvimento ágil de software

  • 1. Engenharia de Software Unidade III – Desenvolvimento Ágil de Projetos de Software Objetivo: Enfatizar o modelo e as práticas ágeis de desenvolvimento de software Prof. Nécio de Lima Veras
  • 2. Roteiro...  Manifesto Ágil  Agilidade e Processos Ágeis  Frameworks  TDD  BDD  User Stories  Velocity  Modelos Ágeis  SCRUM e XP;
  • 3. Manifesto Ágil  Um grupo em fevereiro de 2001, chamado de Agile Alliance, começou a descobrir maneiras melhores e mais leves de desenvolver software valorizando:  pessoas e interações ao invés de processos e ferramentas;  softwares funcionando no lugar de documentações abrangentes;  colaborações com clientes do que negociações de contratos e respostas à mudanças por planos fechados.
  • 4. Manifesto Ágil  O modelo é baseado em mudanças abrangentes;  O desenvolvedor deve melhorar continuamente um protótipo incompleto até que o cliente fique feliz com o resultado;  O Manifesto Ágil está reforçado com outros DOZE princípios que regem a filosofia de criar softwares com agilidade [BECK, 2001].
  • 5. Os doze princípios 1. Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado. 2. 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. 3. Entregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo. 4. Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto.
  • 6. Os doze princípios 5. 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. 6. 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. 7. Software funcionando é a medida primária de progresso. 8. Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente.
  • 7. Os doze princípios 9. Contínua atenção à excelência técnica e bom design aumenta a agilidade. 10.Simplicidade (a arte de maximizar a quantidade de trabalho não realizado) é essencial. 11.As melhores arquiteturas, requisitos e designs emergem de equipes auto-organizáveis. 12.Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo.
  • 8.  Agilidade e Processos Ágeis  Frameworks  TDD  BDD  User Stories  Velocity
  • 9. Agilidade Você não tem que escolher entre agilidade e engenharia de software. Em vez disso, defina uma abordagem de engenharia de software que seja ágil.
  • 10. Test Driven Development “A grande maioria das pessoas já teve alguma experiência com um software que não funcionou como esperado. Softwares que não funcionam corretamente podem levar a muitos problemas, incluindo financeiro, tempo e reputação das empresas. Podendo, inclusive, chegar a influenciar na integridade das pessoas” [ISTQB 2011].
  • 11. Test Driven Development  Podemos associar a qualidade de um software à quantidade de falhas percebidas no mesmo;  O teste de software ajuda a medir e/ou garantir essa qualidade;  Níveis de Teste:  Unidade (componente)  Integração (interface entre componentes)  Sistema (comportamento)  Aceitação (apropriado para uso).
  • 12. Test Driven Development  Modos de Testar:  Manual  Ex.: Inspeção manual de Código  Automático  Ex.: Asserção com JUnit  No contexto de testes automáticos se sobressaem duas abordagens:  TDD (Testing-Driven Development) ou Desenvolvimento dirigido por testes  BDD (Behavior-Driven Design) ou Projeto guiado por comportamento
  • 13. TDD  TDD se apoia nos passos:  Escreva o teste, para a funcionalidade, antes de estar implementada (os testes irão falhar)  Escreva o código de modo a fazer os teste passar  Refatore o código  Repita o processo
  • 15. Behavior Driven Development  Sobre BDD podemos fazer as seguintes considerações [Fox e Patterson 2012]:  BDD faz perguntas sobre comportamentos antes e durante o desenvolvimento, visando reduzir falhas na comunicação dentro do projeto.  Requisitos são escritos como estórias de usuários. São criadas descrições simples de como a aplicação deve ser utilizada.  BDD se concentra no comportamento da aplicação versus a implementação da aplicação e os testes são conduzidos utilizando TDD.
  • 16. Behavior Driven Development  Um exemplo simples considerando a seguinte narrativa:  Como um usuário  Eu quero comprar produtos em promoção  E então receber um email de confirmação  Scenario: Verificar produtos em promoção  Given Que uma loja possui 10 produtos  and Que 5 estão em promoção  When Eu verifico quais estão em promoção  Then Preencho minha sacola apenas com produtos em promoção
  • 17. Behavior Driven Development public class PromocaoSteps extends PtBRSteps { Loja loja = new Loja(); Sacola sacola = new Sacola(); List<Produto> listaProdutoPromocao; int quantidadeProdutoPromocao;   @Given("Que uma loja possui $quant produtos") public void populaLoja(Integer quantidade) { loja.inicializaProdutos(quantidade); }   @Given("Que $quant estão em promoção") public void informaProdutosPromocao(Integer quantidade) { loja.colocaProdutosPromocao(quantidade); quantidadeProdutoPromocao = quantidade; }   @When("Eu verifico quais estão em promoção") public void verificaProdutosPromocao() { listaProdutoPromocao = loja.retornaProdutosPromocao(); }   @Then("Preencho minha sacola apenas com produtos em promoção") public void populaSacola() { sacola.populaSacola(listaProdutoPromocao);   Assert.assertEquals(listaProdutoPromocao.size(), quantidadeProdutoPromocao); } }
  • 18. Behavior Driven Development  Assim temos:  “Given” é a condição inicial  “When” é a ação realizada para a obtenção do resultado  “Then” a conclusão/comportamento esperado
  • 19. User Story  Story vem de conto (estória) e não de história (relato de fatos);  É basicamente uma lista de requisitos, funções que o dono do negócio solicita e que espera que elas sejam entregues, descritas em linguagem coloquial.  Aspectos críticos:  Deve ser escrita em cartões (ou post-its), pois devem ser pequenas;  Deve identificar uma funcionalidade;  Deve ser definida uma forma de validação.  Devem ser independentes umas das outras;  Não são contratos, mas sim lembretes. Por isso devem ser informais;  Devem agregar valor ao cliente;  Devem ser estimáveis;  Devem ser testáveis.
  • 20. User Story - Exemplos
  • 21. Velocity  Uma das mais importantes métricas para um time Ágil;  Em termos de gerenciamento de projetos, Velocity é o “valor de trabalho” que um time precisa completar em um dado período de tempo (entre 1 e 4 semanas);  Este “valor de trabalho” é número total de estórias que o time estimou;  Assim, Velocity é simplesmente o trabalho dividido pelo time;  Para isso é feito um cálculo de produtividade baseado no total de funcionalidades codificadas, seu grau de importância e o tempo gasto;
  • 23. Scrum  É um modo á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 Sewaber e Beedle.
  • 24. Scrum  Princípios:  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 do software “que podem ser inspecionados, ajustados, testados, documentados e expandidos”.
  • 25. Scrum  Princípios:  O trabalho de desenvolvimento e o pessoal que o realiza é dividido “em 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 a “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.)”
  • 26. SCRUM
  • 27. eXtreme Programming  O XP usa uma abordagem orientada a objetos como seu paradigma de desenvolvimento predileto.  Inclui um conjunto de regras e práticas que ocorrem no contexto de quatro atividades:  planejamento,  projeto,  codificação e  teste.
  • 28. Extreme Programming (XP)  Planejamento:  Começa com a criação de um conjunto de histórias (histórias do usuário) que descrevem as características e funcionalidades requeridas para o software a ser construído.  Cada história é escrita pelo cliente e é colocada em um cartão de indexação.
  • 29. Extreme Programming (XP)  Planejamento:  O cliente atribui um valor (prioridade) para a história, com base no valor de negócio global da característica ou da função.  Membros da equipe XP avaliam então cada história e lhe atribuem um custo – medido em semanas de desenvolvimento.
  • 30. Extreme Programming (XP)  Planejamento:  Se a história precisar mais do que três semanas de desenvolvimento, pede- se ao cliente para dividir a história em histórias menores e a atribuição de valor e custo ocorre novamente.  Novas histórias podem ser escritas a qualquer momento.
  • 31. Extreme Programming (XP)  Planejamento: Histórias
  • 32. Extreme Programming (XP)  Projeto:  O projeto XP segue rigorosamente o princípio KIS (keep it simple – mantenha a simplicidade).  Um projeto simples é sempre preferível em relação a uma representação mais complexa.  Além disso, o projeto fornece diretrizes de implementação para uma história como ela está escrita – nada mais e nada menos.  O XP encoraja o uso de cartões CRC (Class Responsability Colaborator) como um mecanismo efetivo para raciocinar sobre o software no contexto orientado a objetos.
  • 33. Extreme Programming (XP)  Características:  Encoraja a refatoração;  A Programação em par;  Desenvolvimento incremental;  A integração contínua;  Testes!!!
  • 36. Referências  Beck, K., et al. (2001). "Manifesto for Agile Software Development". Agile Alliance. http://agilemanifesto.org/. Acessado em 18 de agosto de 2012.  Fox, A., Patterson, D. (2012). “Engineering Long-Lasting Software: An Agile Approach Using SaaS and Cloud Computing”, Alpha Edition. Strawberry Canyon LLC, 2012.