SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
CIÊNCIA DA COMPUTAÇÃO - FCG

     Qualidade de Software

     Aula 08: Metodologias Ágeis

     (Adaptação do capítulo 10 de Koscianski & Soares, 2006)



     Prof.º Msc. Sidney Roberto de Sousa
Metodologias de desenvolvimento de software


   Nas últimas décadas, várias metodologias
    foram criadas a fim de sistematizar o
    desenvolvimento de software
   Tais metodologias podem ser divididas em:
       Tradicionais: ênfase na documentação de cada
        passo do desenvolvimento do software
       Ágeis: paradigma mais recente de engenharia de
        software, o qual promete melhorias de
        produtividade e qualidade

                       Ciência da Computação - FCG       2
Atividades comuns a metodologias

   Especificação: definição das funcionalidades e
    demais características do produto
   Projeto e Implementação: produção do software de
    acordo com as especificações. Propõe-se modelos os
    quais serão implementados em alguma linguagem de
    programação
   Validação:revisão e testes quem visam a garantia de
    cumprimento dos requisitos
   Evolução: manutenção ou criação de novas
    funcionalidade a fim de adaptar o software a novas
    necessidades do cliente
                      Ciência da Computação - FCG         3
Metodologias Tradicionais

   Consideradas por muitos com ”pesadas” ou
    ”orientadas a documentação”
   Surgiram em um contexto de desenvolvimento de
    software muito diferente do atual → baseado em
    mainframes e terminais burros
   Em tal época, o custo de manutenção era muito caro
    → dificuldade de acesso a computadores e a
    escassez de ferramentas de apoio ao
    desenvolvimento de software
   Assim, todo o software era planejado e documentado
    antes de ser implementado
                      Ciência da Computação - FCG        4
Modelo Cascata

   Também conhecido como modelo clássico, é
    considerada a principal metodologia tradicional
   Estabele uma sequência de etapas
   Após o término de cada etapa é criada uma
    documentação que deve ser aprovada para
    que a próxima etapa possa ser iniciada




                    Ciência da Computação - FCG       5
Modelo Cascata




   Ciência da Computação - FCG   6
Modelo Cascata

   Divide o projeto em fases de forma inflexível
   Ex.: após a fase de desenvolvimento não são
    previstas mudanças de requisitos
   O modelo espiral permite o retorno a etapas
    anteriores, porém não dá suporte à execução
    de etapas de forma paralela
   Este paralelismo é necessário em alguns tipos
    de projeto → ex.: desenvolvimento de módulos
    concorrentes
                    Ciência da Computação - FCG     7
Modelo Cascata



 Assim, o modelo cascata é recomendável em
projetos com requisitos estáveis → Isto existe?




                 Ciência da Computação - FCG      8
Custo de modificação no Modelo Cascata




              Ciência da Computação - FCG   9
Modelo Cascata

   O modelo cascata dominou a forma de se
    desenvolver software até o inícios dos anos 90
   Tal dominância ocorreu mesmo sob
    advertência de pesquisadores de engenharia
    de software e o relato negativo de
    desenvolvedores de software
   Autores como Brooks (Brooks, 1986)
    demonstraram como a idéia de se especificar
    um software por inteiro antecipadamente pode
    ter riscos sérios
                    Ciência da Computação - FCG      10
Experiências da indústria

   Dados de 1994 usando como base 8380 projetos
    mostram que apenas 16,2% destes foram entregues
    respeitando prazos, custos e requisitos
   Cerca de 31% foram cancelados antes de seu término
    e 52,7% foram entregues → com prazos e custos
    maiores OU com diminuição de requisitos
   Causa? Pressão sobre desenvolvedores →
    quadruplica o número de erros!
   Modelo cascata → dificuldades em alterar requisitos


                      Ciência da Computação - FCG         11
Experiências da indústria
   No fim da década de 90, pesquisas mostraram
    resultados mais ”animadores”
   15% dos projetos terminaram sem mostrar resultados
   66% dos projetos não atenderam as necessidades
    dos usuários
   Média de atrasos caiu para 63%
   Projetos custaram em média 45% a mais que o
    planejado
   28% dos projetos cumpriram o planejado → porém, a
    maioria destes projetos foram superestimados –
    exageros de até 150%
                     Ciência da Computação - FCG         12
Experiências da indústria

   Dentre os motivos da melhoria, o principal foi o uso de
    ferramentas CASE no processo de modelagem e
    implementação
   As ferramentas de gestão de requisitos também foram
    responsáveis pela melhoria
   Por fim, também ajudou a melhoria da qualidade dos
    processos de desenvolvimento
   As pesquisas do final dos anos 90 recomendaram o
    desenvolvimento de software baseado em modelos
    incrementais → evitar falhas

                       Ciência da Computação - FCG        13
Métodos ágeis
   Adequados para situações em que a mudança de
    requisitos é frequente
   Um método ágil aceita a mudança ao invés de tentar
    prever o futuro
   O termo se tornou comum em 2001, quando 17
    especialistas em processos de desenvolvimento de
    software – representando as metodologias XP, Scrum,
    DSDM, Crystal, entre outros, estabeleceram os
    princípios comuns compartilhados por todos estes
    métodos
   Criou-se assim a Aliança Ágil e o Manifesto Ágil
                      Ciência da Computação - FCG        14
Métodos ágeis




  Ciência da Computação - FCG   15
Métodos ágeis

   O Manifesto Ágil não rejeita processos e
    ferramentas, documentação, negociação de
    contratos ou planejamento
   Porém, ele mostra que estes tem menos
    importância que os indivíduos, o software
    executável, a colaboração dos clientes e as
    respostas rápidas às mudanças
   Aproximação da forma como pequenas e
    médias empresas trabalham e respondem às
    mudanças
                    Ciência da Computação - FCG   16
Conceitos-chave do Manifesto Ágil

   Indivíduos e interações ao invés de processos
    e ferramentas
   Software executável ao invés de documentação
   Colaboração com o cliente ao invés de
    negociações de contratos
   Respostas rápidas a mudanças ao invés de
    seguir planos



                    Ciência da Computação - FCG     17
Extreme Programming (XP)

   Método ágil para equipes pequenas/médias
    que desenvolvem software baseado em
    requisitos vagos e rapidamente mutáveis
   Principais diferenças entre a XP e as
    metodologias clássicas:
       Feedback contínuo
       Abordagem incremental
       Encorajamento da comunicação interpessoal


                      Ciência da Computação - FCG   18
Extreme Programming (XP)
   As práticas da XP podem ser ”chocantes” à primeira vista
    → ou mesmo não fazer sentido, se observadas de forma
    isolada
   Porém, a sintonia do seu conjunto que faz com que a
    metodologia seja sucessiva
   A XP enfatiza o desenvolvimento rápido do projeto, a
    garantia de satisfação do cliente e o cumprimento das
    estimativas
   Suas práticas/valores oferecem um ambiente agradável
    de desenvolvimento de software aos seus seguidores →
    conduzindo-os por quatro valores: comunicação,
    simplicidade, feedback e coragem
                        Ciência da Computação - FCG            19
XP - Comunicação

   Manter o melhor relacionamento possível entre
    clientes e desenvolvedores
   Prefere-se conversas pessoais ao invés de
    outros meios de comunicação
   A comunicação entre desenvolvedores e
    gerente de projeto também é encorajada




                   Ciência da Computação - FCG   20
XP - Simplicidade
   Permitir a criação de código enxuto, que não deve
    possuir funções desnecessárias
   Código simples → implementar o software com o
    menor número possível de componentes como
    classes e métodos
   Preocupação com requisitos atuais, evitando-se
    adicionar funcionalidades que não são úteis no
    momento → escopo bem definido
   XP aposta na implementação rápida de um produto
    simples → espera-se que alterações e evoluções
    futuras custarão menos do que criar desde o início um
    software grande e complexo
                      Ciência da Computação - FCG       21
XP – Feedback constante
   Programador deve ter informações constantes sobre o
    código e o cliente
   A informação sobre o código é obtida por testes constantes
    → indicação de erros unitários e de integração
   O cliente obtem frequentemente incrementos de software
    funcionais para que posso avaliá-los
   Com isto, o cliente tem subsídios para sugerir novas
    características e informação aos desenvolvedores
   Não-conformidades são identificadas rapidamente e
    corrigidas em novas versões/incrementos
   O produto tende a estar de acordo com as reais expectativas
    do cliente
                         Ciência da Computação - FCG         22
XP - Coragem

   Necessária para implantar os três valores
    anteriores
   Nem todas as pessoas tem facilidade de
    comunicação e têm bom relacionamento
   A coragem também é necessária para
    experimentar a simplificidade no software
    implementado
   Por fim, é preciso coragem para ouvir o
    feedback do cliente!
                    Ciência da Computação - FCG   23
Práticas da XP

   A XP baseia-se em 12 práticas
   Não exige-se a implementação simultânea de
    todas as práticas → recomenda-se que sejam
    aplicadas gradativamente
   Algumas práticas não são inovadores → na
    verdade, são usadas há anos na indústria de
    software



                   Ciência da Computação - FCG    24
Prática 1 - Planejamento
   Decidir o que é necessário fazer o que pode ser adiado no
    projeto
   A XP baseia-se em requisitos atuais reais para
    desenvolvimento de software → não em possíveis requisitos
    futuros
   Procura-se evitar problemas de relacionamento entre a área
    de negócios e a de desenvolvimento → ambas devem
    cooperar para o sucesso e cada uma deve focar partes
    específicas do projeto
   Área de negócios → escopo, composição das versões e as
    datas de entrega
   Desenvolvedores → estimativas de prazo, processo de
    desenvolvimento e cronograma detalhado
                        Ciência da Computação - FCG             25
Prática 2 – Entregas frequentes
   Construir software simples e atualizado à medida que
    novos requisitos surgem
   Cada incremento deve ser o mais compacto possível
    → apenas os requisitos mais valiosos
   Incrementos devem ser entregues a cada mês ou no
    máximo a cada dois meses → feedback mais rápido
    do cliente
   Evita-se surpresas → grandes modificações
   Torna as avaliações mais precisas e aumenta a
    chance da concordância do software com as
    necessidades do cliente
                      Ciência da Computação - FCG          26
Prática 3 - Metáfora



Descrições de um software sem a utilização de
 termos técnicos, com o intuito de guiar o seu
              desenvolvimento




                 Ciência da Computação - FCG     27
Prática 4 – Projeto simples

   O software deve ser o mais simples possível e
    satisfazer os requisitos atuais
   Possíveis requisitos futuros só são adicionados
    ao projeto quando sua implementação é
    realmente necessária → K.I.S.S.
   Oposto ao raciocínio ”implemente para hoje e
    projete para amanhã”



                    Ciência da Computação - FCG     28
Prática 5 - Testes

   Foco na validação do projeto durante todo o
    processo de desenvolvimento
   Os desenvolvedores implementam o software
    cirando primeiramente os casos de testes →
    TDD




                    Ciência da Computação - FCG   29
Prática 6 – Programação em pares

   Implementação de software feita em dupla → 2 devs
    em um único computador
   Um dev implementa; o outro revisa continuamento o
    trabalho feito → procura-se identificar erros sintáticos
    e semânticos, além de planejar refatorações
   Estes dois papéis devem ser trocados continuamente
   Desenvolvedores aprendem juntos
   Maior possibilidade de corretude de código
   Possibilidade de revisões já na fase de
    implementação
                        Ciência da Computação - FCG            30
Prática 7 - Refatoração

   Foco no aperfeiçoamento do projeto do
    software
   Presente em todo o desenvolvimento
   Deve ser feita sempre que possível
   A idéia é simplificar código sem que haja perda
    de funcionalidades




                    Ciência da Computação - FCG   31
Prática 8 – Propriedade coletiva

   O código é de todos os membros da equipe!
   Qualquem membro pode agregar valor ao código →
    mesmo que não o tenha desenvolvido (desde que
    realize os testes necessários)
   Todos são responsáveis pelo software inteiro!
   Caso um membro da equipe deixe o projeto
    (momentânea ou definitivamente) antes de sua
    conclusão, a equipe ainda é capaz de continuar o
    projeto com poucas dificuldades
   Menor dependência de heróis individuais
                      Ciência da Computação - FCG      32
Prática 9 – Integração contínua

   O código (testado) produzido por uma equipe
    deve ser integrado ao sistema, o qual também
    deve ser testado
   O software é construído e verificado
    continuamente
   Maior facilidade de isolar erros e suas causas
   Recomenda-se utilizar uma única máquina de
    integração, o qual pode ser acessado
    livremente por toda a equipe
                    Ciência da Computação - FCG      33
Prática 10 – Trabalho semanal de 40 horas

   Horas extras não devem se tornar um costume
   Caso seja necessário trabalhar mais de 40 horas pela
    segunda semana consecutiva, existe um problema no
    projeto!
   Tal problema não deve ser resolvido com mais horas
    de trabalho → e sim com planejamento
   Focos na pessoas → não em processos e
    planejamentos
   Alteração dos planos Vs. Sobrecarga de pessoal


                      Ciência da Computação - FCG        34
Prática 11 – Cliente presente

   O cliente DEVE participar durante todo o projeto
   O cliente DEVE estar sempre disponível para
    sanar todas as dúvidas sobre requisitos
   Evita atrasos e implementações errôneas
   O cliente pode ser mantido como parte
    integrande da equipe do desenvolvimento → ex.:
    escrevendo história de usuário
   Pergunta: o que são histórias de usuário? (BDD)

                     Ciência da Computação - FCG   35
Prática 12 – Código padrão

   Regras de escrita → estilo, formato de
    comentários, nomenclatura de variáveis, etc.
   Favorece o trabalho em equipe e a propriedade
    coletiva do código




                    Ciência da Computação - FCG    36
Planejamento na XP

   O cliente participa ativamente no processo de
    desenvolvimento → pode até fazer parte da
    equipe de desenvolvimento
   Esclarecimento de dúvidas facilitado → uso de
    histórias
   Cada tarefa/requisito é descrito como uma
    história → possivelmente, pelo cliente
   As história são distribuídas aos
    desenvolvedores, os quais se encarregam de
    implementar as funcionalidades descritas
                    Ciência da Computação - FCG     37
Scrum



… na próxima aula! ;)




    Ciência da Computação - FCG   38
Conclusões – Métodos ágeis

   Pesquisas mostram que projetos utilizando métodos
    ágeis obtiveram melhores resultados em termos de
    cumprimento de prazos, custos e padrões de
    qualidade
   Cada vez mais projetos/equipes maiores tem utilizado
    métodos ágeis
   Outras pesquisas mostraram que o uso adequado de
    XP pode ajudar organizações alcançarem os níveis
    CMM 2 e 3 → Boeing, por exemplo, alcançou o nível
    CMM 5 sem muitas alterações após adotar o XP

                      Ciência da Computação - FCG       39
Conclusões – Vantagens da XP

   XP é ideal a projetos em que os stakeholders
    não sabem exatamente o que desejam
   O feedback contínuo permite a rápida
    adaptação do produto
   Entregas frequentes do software executável e
    funcional → diminuir a ansiedade do cliente e
    obter o seu feedback a respeito do trabalho
    realizado
   Integração e testes contínuos → melhoria e
    garantia de qualidade
                    Ciência da Computação - FCG     40
Conclusões – Algumas desvantagens da XP

    Muitos acreditam que seja a volta do processo caótico
     de desenvolvimento de software → ”codifica-remenda”
     O uso errôneo da XP pode ”mascarar” práticas
     positivas de desenvolvimento → ex., análise de
     problemas utilizando diagramas
    Alguns clientes podem não gostar da informalidade no
     levantamento de requisitos
    Além disso, alguns clientes podem enxergar a
     refatoração como amadorismo ou mesmo
     incompetência

                       Ciência da Computação - FCG       41
Bibliografia
KOSCIANSKI, A., SOARES, M. S. Qualidade de Software. Segunda edição.
Editora Novatec. São Paulo, 2006.
BROOKS, F. P. No Silver Bullet – Essence and Accident in Software
Engineering. Proceedings of IFIP Tenth World Computing Conference, H.-J.
Kugler, ed., Elsevier Science B. V., Amsterdam, NL (1986) pp. 1069-1076.




                            Ciência da Computação - FCG               42

Mais conteúdo relacionado

Mais procurados

Processos Ágeis - Scrum, Kanban ou ScrumBan
Processos Ágeis - Scrum, Kanban ou ScrumBanProcessos Ágeis - Scrum, Kanban ou ScrumBan
Processos Ágeis - Scrum, Kanban ou ScrumBanSamuel Cavalcante
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREErnesto Bedrikow
 
Toc aplicada a gestão de projetos
Toc aplicada a gestão de projetosToc aplicada a gestão de projetos
Toc aplicada a gestão de projetosAragon Vieira
 
Metodologias ágeis de desenvolvimento trabalho
Metodologias ágeis de desenvolvimento   trabalhoMetodologias ágeis de desenvolvimento   trabalho
Metodologias ágeis de desenvolvimento trabalhoRuan Pozzebon
 
AULA 1 - CONCEITOS GERAIS APLICADOS NO CICLO DE VIDA DO SOFTWARE E MODELOS ...
AULA 1 - CONCEITOS GERAIS  APLICADOS NO CICLO DE VIDA  DO SOFTWARE E MODELOS ...AULA 1 - CONCEITOS GERAIS  APLICADOS NO CICLO DE VIDA  DO SOFTWARE E MODELOS ...
AULA 1 - CONCEITOS GERAIS APLICADOS NO CICLO DE VIDA DO SOFTWARE E MODELOS ...Janynne Gomes
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De SoftwareCursoSENAC
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentaçãoerysonsi
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de softwarediha36
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaFernando Palma
 
Colocando o Scrum em prática
Colocando o Scrum em práticaColocando o Scrum em prática
Colocando o Scrum em práticaAragon Vieira
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANFernando Palma
 
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
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de softwareYuri Garcia
 

Mais procurados (20)

Processos Ágeis - Scrum, Kanban ou ScrumBan
Processos Ágeis - Scrum, Kanban ou ScrumBanProcessos Ágeis - Scrum, Kanban ou ScrumBan
Processos Ágeis - Scrum, Kanban ou ScrumBan
 
Aula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWAREAula 1- ENGENHARIA DE SOFTWARE
Aula 1- ENGENHARIA DE SOFTWARE
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 
Toc aplicada a gestão de projetos
Toc aplicada a gestão de projetosToc aplicada a gestão de projetos
Toc aplicada a gestão de projetos
 
Metodologias ágeis de desenvolvimento trabalho
Metodologias ágeis de desenvolvimento   trabalhoMetodologias ágeis de desenvolvimento   trabalho
Metodologias ágeis de desenvolvimento trabalho
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
AULA 1 - CONCEITOS GERAIS APLICADOS NO CICLO DE VIDA DO SOFTWARE E MODELOS ...
AULA 1 - CONCEITOS GERAIS  APLICADOS NO CICLO DE VIDA  DO SOFTWARE E MODELOS ...AULA 1 - CONCEITOS GERAIS  APLICADOS NO CICLO DE VIDA  DO SOFTWARE E MODELOS ...
AULA 1 - CONCEITOS GERAIS APLICADOS NO CICLO DE VIDA DO SOFTWARE E MODELOS ...
 
Engenharia De Software
Engenharia De SoftwareEngenharia De Software
Engenharia De Software
 
Modelo cascata apresentação
Modelo cascata apresentaçãoModelo cascata apresentação
Modelo cascata apresentação
 
Ciclo de vida de software
Ciclo de vida de softwareCiclo de vida de software
Ciclo de vida de software
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
APS - RAD x Ágeis
APS - RAD x ÁgeisAPS - RAD x Ágeis
APS - RAD x Ágeis
 
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo RochaMetodologias ágeis de desenvolvimento de software por Givanaldo Rocha
Metodologias ágeis de desenvolvimento de software por Givanaldo Rocha
 
Colocando o Scrum em prática
Colocando o Scrum em práticaColocando o Scrum em prática
Colocando o Scrum em prática
 
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBANDesenvolvimento ágil de software: análise sintética a partir de KANBAN
Desenvolvimento ágil de software: análise sintética a partir de KANBAN
 
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
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
Metodologias de desenvolvimento
Metodologias de desenvolvimentoMetodologias de desenvolvimento
Metodologias de desenvolvimento
 

Destaque

[CEFETMG] [ESw] Aula 3 - Processos tradicionais x metodologia ágil
[CEFETMG] [ESw] Aula 3 - Processos tradicionais x metodologia ágil[CEFETMG] [ESw] Aula 3 - Processos tradicionais x metodologia ágil
[CEFETMG] [ESw] Aula 3 - Processos tradicionais x metodologia ágilUniversidade Federal de Minas Gerais
 
Ágil X Tradicional: quem ganha com esta discussão?
Ágil X Tradicional: quem ganha com esta discussão?Ágil X Tradicional: quem ganha com esta discussão?
Ágil X Tradicional: quem ganha com esta discussão?Júnior Alves
 
Comparativo Método Tradicional e Método Ágil
Comparativo Método Tradicional e Método ÁgilComparativo Método Tradicional e Método Ágil
Comparativo Método Tradicional e Método ÁgilJúlio César Caldas
 
Utilização da Gestão do Conhecimento nas Metodologias Ageis para Melhoria da ...
Utilização da Gestão do Conhecimento nas Metodologias Ageis para Melhoria da ...Utilização da Gestão do Conhecimento nas Metodologias Ageis para Melhoria da ...
Utilização da Gestão do Conhecimento nas Metodologias Ageis para Melhoria da ...Felipe J. R. Vieira
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareEmerson Henrique
 
Desenvolvimento ágil de software
Desenvolvimento ágil de softwareDesenvolvimento ágil de software
Desenvolvimento ágil de softwareSompo Seguros
 
Es capítulo 2 - processos de software
Es   capítulo 2  - processos de softwareEs   capítulo 2  - processos de software
Es capítulo 2 - processos de softwareFelipe Oliveira
 
UnP Eng. Software - Aula 3
UnP Eng. Software - Aula 3UnP Eng. Software - Aula 3
UnP Eng. Software - Aula 3Hélio Medeiros
 
T1 g13.modelo cascata
T1 g13.modelo cascataT1 g13.modelo cascata
T1 g13.modelo cascatawilsonguns
 
01- Introdução a programação e modelo RAD v1.0
01- Introdução a programação e modelo RAD v1.001- Introdução a programação e modelo RAD v1.0
01- Introdução a programação e modelo RAD v1.0César Augusto Pessôa
 
Cap 6 O Processo De Design De InteraçãO
Cap 6 O Processo De Design De InteraçãOCap 6 O Processo De Design De InteraçãO
Cap 6 O Processo De Design De InteraçãOMarcelo Bitencourt
 
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilApresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilMarcio Garcia
 
Disciplina_Análise de Projeto de Sistema I - Metodologia Cascata e Processos ...
Disciplina_Análise de Projeto de Sistema I - Metodologia Cascata e Processos ...Disciplina_Análise de Projeto de Sistema I - Metodologia Cascata e Processos ...
Disciplina_Análise de Projeto de Sistema I - Metodologia Cascata e Processos ...Rogério Almeida
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Cláudio Amaral
 

Destaque (20)

[CEFETMG] [ESw] Aula 3 - Processos tradicionais x metodologia ágil
[CEFETMG] [ESw] Aula 3 - Processos tradicionais x metodologia ágil[CEFETMG] [ESw] Aula 3 - Processos tradicionais x metodologia ágil
[CEFETMG] [ESw] Aula 3 - Processos tradicionais x metodologia ágil
 
Ágil X Tradicional: quem ganha com esta discussão?
Ágil X Tradicional: quem ganha com esta discussão?Ágil X Tradicional: quem ganha com esta discussão?
Ágil X Tradicional: quem ganha com esta discussão?
 
Comparativo Método Tradicional e Método Ágil
Comparativo Método Tradicional e Método ÁgilComparativo Método Tradicional e Método Ágil
Comparativo Método Tradicional e Método Ágil
 
Utilização da Gestão do Conhecimento nas Metodologias Ageis para Melhoria da ...
Utilização da Gestão do Conhecimento nas Metodologias Ageis para Melhoria da ...Utilização da Gestão do Conhecimento nas Metodologias Ageis para Melhoria da ...
Utilização da Gestão do Conhecimento nas Metodologias Ageis para Melhoria da ...
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 
Desenvolvimento ágil de software
Desenvolvimento ágil de softwareDesenvolvimento ágil de software
Desenvolvimento ágil de software
 
Aula 3
Aula 3Aula 3
Aula 3
 
Aula2 processos sw
Aula2 processos swAula2 processos sw
Aula2 processos sw
 
Es capítulo 2 - processos de software
Es   capítulo 2  - processos de softwareEs   capítulo 2  - processos de software
Es capítulo 2 - processos de software
 
UnP Eng. Software - Aula 3
UnP Eng. Software - Aula 3UnP Eng. Software - Aula 3
UnP Eng. Software - Aula 3
 
Mesopredadores
MesopredadoresMesopredadores
Mesopredadores
 
Under engineer
Under engineerUnder engineer
Under engineer
 
Modelo em Cascata
Modelo em CascataModelo em Cascata
Modelo em Cascata
 
T1 g13.modelo cascata
T1 g13.modelo cascataT1 g13.modelo cascata
T1 g13.modelo cascata
 
01- Introdução a programação e modelo RAD v1.0
01- Introdução a programação e modelo RAD v1.001- Introdução a programação e modelo RAD v1.0
01- Introdução a programação e modelo RAD v1.0
 
Cap 6 O Processo De Design De InteraçãO
Cap 6 O Processo De Design De InteraçãOCap 6 O Processo De Design De InteraçãO
Cap 6 O Processo De Design De InteraçãO
 
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento ÁgilApresentação - Uniararas - JEE e Desenvolvimento Ágil
Apresentação - Uniararas - JEE e Desenvolvimento Ágil
 
Disciplina_Análise de Projeto de Sistema I - Metodologia Cascata e Processos ...
Disciplina_Análise de Projeto de Sistema I - Metodologia Cascata e Processos ...Disciplina_Análise de Projeto de Sistema I - Metodologia Cascata e Processos ...
Disciplina_Análise de Projeto de Sistema I - Metodologia Cascata e Processos ...
 
1 introdução
1  introdução1  introdução
1 introdução
 
Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002Projeto de Sistemas - Aula002
Projeto de Sistemas - Aula002
 

Semelhante a Métodos Ágeis

Metodos Ageis alternativa.pptx
Metodos Ageis alternativa.pptxMetodos Ageis alternativa.pptx
Metodos Ageis alternativa.pptxRicardo Santos
 
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
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilRebecca Betwel
 
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
 
Extreming Programming XP
Extreming Programming XPExtreming Programming XP
Extreming Programming XPGabriel Galdino
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimentoledsifes
 
Gestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com ScrumGestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com ScrumMarcos Garrido
 
Introdução às metodologias ágeis
Introdução às metodologias ágeisIntrodução às metodologias ágeis
Introdução às metodologias ágeisComunidade Tá safo!
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareDaniel Cukier
 
O uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareO uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareEverton vitor
 
Extreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilExtreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilJaffer Veronezi
 
Introdução às metodologias ágeis de desenvolvimento de software
Introdução às metodologias ágeis de desenvolvimento de softwareIntrodução às metodologias ágeis de desenvolvimento de software
Introdução às metodologias ágeis de desenvolvimento de softwareJaime Schettini
 

Semelhante a Métodos Ágeis (20)

Metodos Ageis alternativa.pptx
Metodos Ageis alternativa.pptxMetodos Ageis alternativa.pptx
Metodos Ageis alternativa.pptx
 
Métodos ágeis de desenvolvimento2
Métodos ágeis de desenvolvimento2Métodos ágeis de desenvolvimento2
Métodos ágeis de desenvolvimento2
 
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)
 
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento ÁgilEngenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
Engenharia de software aula 6 - Introdução ao Desenvolvimento Ágil
 
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
 
SCRUM.pptx
SCRUM.pptxSCRUM.pptx
SCRUM.pptx
 
Extreming Programming XP
Extreming Programming XPExtreming Programming XP
Extreming Programming XP
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
Aula01 introducao
Aula01 introducaoAula01 introducao
Aula01 introducao
 
Leds zeppellin infraestrutura de apoio ao desenvolvimento
Leds zeppellin   infraestrutura de apoio ao desenvolvimentoLeds zeppellin   infraestrutura de apoio ao desenvolvimento
Leds zeppellin infraestrutura de apoio ao desenvolvimento
 
Gestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com ScrumGestão Ágil de Projetos com Scrum
Gestão Ágil de Projetos com Scrum
 
38484931 questionario-es
38484931 questionario-es38484931 questionario-es
38484931 questionario-es
 
Introdução às metodologias ágeis
Introdução às metodologias ágeisIntrodução às metodologias ágeis
Introdução às metodologias ágeis
 
Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008Tudo são Dados - PHP Conference 2008
Tudo são Dados - PHP Conference 2008
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
 
O Gerenciamento de Projetos de Software Desenvolvidos à Luz das Metodologias ...
O Gerenciamento de Projetos de Software Desenvolvidos à Luz das Metodologias ...O Gerenciamento de Projetos de Software Desenvolvidos à Luz das Metodologias ...
O Gerenciamento de Projetos de Software Desenvolvidos à Luz das Metodologias ...
 
O uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de softwareO uso de metodos ageis no desenvolvimento de software
O uso de metodos ageis no desenvolvimento de software
 
Gerenciamento de projetos de TI
Gerenciamento de projetos de TIGerenciamento de projetos de TI
Gerenciamento de projetos de TI
 
Extreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia ÁgilExtreme Programming (XP) Metodologia Ágil
Extreme Programming (XP) Metodologia Ágil
 
Introdução às metodologias ágeis de desenvolvimento de software
Introdução às metodologias ágeis de desenvolvimento de softwareIntrodução às metodologias ágeis de desenvolvimento de software
Introdução às metodologias ágeis de desenvolvimento de software
 

Mais de Sidney Roberto

Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stackSidney Roberto
 
Personagens negros na cultura nerd
Personagens negros na cultura nerdPersonagens negros na cultura nerd
Personagens negros na cultura nerdSidney Roberto
 
Mantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBMantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBSidney Roberto
 
Regulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IVRegulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IVSidney Roberto
 
Regulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IVRegulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IVSidney Roberto
 
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQRegulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQSidney Roberto
 
Tecnologias e Mercado de Trabalho
Tecnologias e Mercado de TrabalhoTecnologias e Mercado de Trabalho
Tecnologias e Mercado de TrabalhoSidney Roberto
 
Introdução à Programação de Computadores com Python
Introdução à Programação de Computadores com PythonIntrodução à Programação de Computadores com Python
Introdução à Programação de Computadores com PythonSidney Roberto
 
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS AquidauanaPalestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS AquidauanaSidney Roberto
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaSidney Roberto
 
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQRegulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQSidney Roberto
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidSidney Roberto
 
Minha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiroMinha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiroSidney Roberto
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação ISidney Roberto
 
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Sidney Roberto
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Sidney Roberto
 

Mais de Sidney Roberto (20)

Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stack
 
Personagens negros na cultura nerd
Personagens negros na cultura nerdPersonagens negros na cultura nerd
Personagens negros na cultura nerd
 
Mantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDBMantendo os dados do seu app web offline com PouchDB
Mantendo os dados do seu app web offline com PouchDB
 
Regulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IVRegulamento da batalha campal do DCN IV
Regulamento da batalha campal do DCN IV
 
Regulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IVRegulamento dos concursos de cosplay e cospobre do DCN IV
Regulamento dos concursos de cosplay e cospobre do DCN IV
 
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQRegulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
Regulamento Cosplay e Cospobre - DCN 3 IFMS-AQ
 
Tecnologias e Mercado de Trabalho
Tecnologias e Mercado de TrabalhoTecnologias e Mercado de Trabalho
Tecnologias e Mercado de Trabalho
 
Introdução à Programação de Computadores com Python
Introdução à Programação de Computadores com PythonIntrodução à Programação de Computadores com Python
Introdução à Programação de Computadores com Python
 
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS AquidauanaPalestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
Palestra de boas vindas aos estudantes do curso TSI do IFMS Aquidauana
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQRegulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
Regulamento do Concurso de Cosplay - Dia da Cultura Nerd IFMS-AQ
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para Android
 
Minha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiroMinha opinião sobre o sistema educacional de base brasileiro
Minha opinião sobre o sistema educacional de base brasileiro
 
Apostila - Linguagem de Programação I
Apostila - Linguagem de Programação IApostila - Linguagem de Programação I
Apostila - Linguagem de Programação I
 
Listas (parte 2 de 3)
Listas (parte 2 de 3)Listas (parte 2 de 3)
Listas (parte 2 de 3)
 
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
Vamos aprender algo diferente? Introdução à linguagem Python (parte 2)
 
Listas (parte 1)
Listas (parte 1)Listas (parte 1)
Listas (parte 1)
 
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
Vamos aprender algo diferente? Introdução à linguagem Python (aula 1)
 
Fatores Humanos
Fatores HumanosFatores Humanos
Fatores Humanos
 
Laços de Repetição
Laços de RepetiçãoLaços de Repetição
Laços de Repetição
 

Métodos Ágeis

  • 1. CIÊNCIA DA COMPUTAÇÃO - FCG Qualidade de Software Aula 08: Metodologias Ágeis (Adaptação do capítulo 10 de Koscianski & Soares, 2006) Prof.º Msc. Sidney Roberto de Sousa
  • 2. Metodologias de desenvolvimento de software  Nas últimas décadas, várias metodologias foram criadas a fim de sistematizar o desenvolvimento de software  Tais metodologias podem ser divididas em:  Tradicionais: ênfase na documentação de cada passo do desenvolvimento do software  Ágeis: paradigma mais recente de engenharia de software, o qual promete melhorias de produtividade e qualidade Ciência da Computação - FCG 2
  • 3. Atividades comuns a metodologias  Especificação: definição das funcionalidades e demais características do produto  Projeto e Implementação: produção do software de acordo com as especificações. Propõe-se modelos os quais serão implementados em alguma linguagem de programação  Validação:revisão e testes quem visam a garantia de cumprimento dos requisitos  Evolução: manutenção ou criação de novas funcionalidade a fim de adaptar o software a novas necessidades do cliente Ciência da Computação - FCG 3
  • 4. Metodologias Tradicionais  Consideradas por muitos com ”pesadas” ou ”orientadas a documentação”  Surgiram em um contexto de desenvolvimento de software muito diferente do atual → baseado em mainframes e terminais burros  Em tal época, o custo de manutenção era muito caro → dificuldade de acesso a computadores e a escassez de ferramentas de apoio ao desenvolvimento de software  Assim, todo o software era planejado e documentado antes de ser implementado Ciência da Computação - FCG 4
  • 5. Modelo Cascata  Também conhecido como modelo clássico, é considerada a principal metodologia tradicional  Estabele uma sequência de etapas  Após o término de cada etapa é criada uma documentação que deve ser aprovada para que a próxima etapa possa ser iniciada Ciência da Computação - FCG 5
  • 6. Modelo Cascata Ciência da Computação - FCG 6
  • 7. Modelo Cascata  Divide o projeto em fases de forma inflexível  Ex.: após a fase de desenvolvimento não são previstas mudanças de requisitos  O modelo espiral permite o retorno a etapas anteriores, porém não dá suporte à execução de etapas de forma paralela  Este paralelismo é necessário em alguns tipos de projeto → ex.: desenvolvimento de módulos concorrentes Ciência da Computação - FCG 7
  • 8. Modelo Cascata Assim, o modelo cascata é recomendável em projetos com requisitos estáveis → Isto existe? Ciência da Computação - FCG 8
  • 9. Custo de modificação no Modelo Cascata Ciência da Computação - FCG 9
  • 10. Modelo Cascata  O modelo cascata dominou a forma de se desenvolver software até o inícios dos anos 90  Tal dominância ocorreu mesmo sob advertência de pesquisadores de engenharia de software e o relato negativo de desenvolvedores de software  Autores como Brooks (Brooks, 1986) demonstraram como a idéia de se especificar um software por inteiro antecipadamente pode ter riscos sérios Ciência da Computação - FCG 10
  • 11. Experiências da indústria  Dados de 1994 usando como base 8380 projetos mostram que apenas 16,2% destes foram entregues respeitando prazos, custos e requisitos  Cerca de 31% foram cancelados antes de seu término e 52,7% foram entregues → com prazos e custos maiores OU com diminuição de requisitos  Causa? Pressão sobre desenvolvedores → quadruplica o número de erros!  Modelo cascata → dificuldades em alterar requisitos Ciência da Computação - FCG 11
  • 12. Experiências da indústria  No fim da década de 90, pesquisas mostraram resultados mais ”animadores”  15% dos projetos terminaram sem mostrar resultados  66% dos projetos não atenderam as necessidades dos usuários  Média de atrasos caiu para 63%  Projetos custaram em média 45% a mais que o planejado  28% dos projetos cumpriram o planejado → porém, a maioria destes projetos foram superestimados – exageros de até 150% Ciência da Computação - FCG 12
  • 13. Experiências da indústria  Dentre os motivos da melhoria, o principal foi o uso de ferramentas CASE no processo de modelagem e implementação  As ferramentas de gestão de requisitos também foram responsáveis pela melhoria  Por fim, também ajudou a melhoria da qualidade dos processos de desenvolvimento  As pesquisas do final dos anos 90 recomendaram o desenvolvimento de software baseado em modelos incrementais → evitar falhas Ciência da Computação - FCG 13
  • 14. Métodos ágeis  Adequados para situações em que a mudança de requisitos é frequente  Um método ágil aceita a mudança ao invés de tentar prever o futuro  O termo se tornou comum em 2001, quando 17 especialistas em processos de desenvolvimento de software – representando as metodologias XP, Scrum, DSDM, Crystal, entre outros, estabeleceram os princípios comuns compartilhados por todos estes métodos  Criou-se assim a Aliança Ágil e o Manifesto Ágil Ciência da Computação - FCG 14
  • 15. Métodos ágeis Ciência da Computação - FCG 15
  • 16. Métodos ágeis  O Manifesto Ágil não rejeita processos e ferramentas, documentação, negociação de contratos ou planejamento  Porém, ele mostra que estes tem menos importância que os indivíduos, o software executável, a colaboração dos clientes e as respostas rápidas às mudanças  Aproximação da forma como pequenas e médias empresas trabalham e respondem às mudanças Ciência da Computação - FCG 16
  • 17. Conceitos-chave do Manifesto Ágil  Indivíduos e interações ao invés de processos e ferramentas  Software executável ao invés de documentação  Colaboração com o cliente ao invés de negociações de contratos  Respostas rápidas a mudanças ao invés de seguir planos Ciência da Computação - FCG 17
  • 18. Extreme Programming (XP)  Método ágil para equipes pequenas/médias que desenvolvem software baseado em requisitos vagos e rapidamente mutáveis  Principais diferenças entre a XP e as metodologias clássicas:  Feedback contínuo  Abordagem incremental  Encorajamento da comunicação interpessoal Ciência da Computação - FCG 18
  • 19. Extreme Programming (XP)  As práticas da XP podem ser ”chocantes” à primeira vista → ou mesmo não fazer sentido, se observadas de forma isolada  Porém, a sintonia do seu conjunto que faz com que a metodologia seja sucessiva  A XP enfatiza o desenvolvimento rápido do projeto, a garantia de satisfação do cliente e o cumprimento das estimativas  Suas práticas/valores oferecem um ambiente agradável de desenvolvimento de software aos seus seguidores → conduzindo-os por quatro valores: comunicação, simplicidade, feedback e coragem Ciência da Computação - FCG 19
  • 20. XP - Comunicação  Manter o melhor relacionamento possível entre clientes e desenvolvedores  Prefere-se conversas pessoais ao invés de outros meios de comunicação  A comunicação entre desenvolvedores e gerente de projeto também é encorajada Ciência da Computação - FCG 20
  • 21. XP - Simplicidade  Permitir a criação de código enxuto, que não deve possuir funções desnecessárias  Código simples → implementar o software com o menor número possível de componentes como classes e métodos  Preocupação com requisitos atuais, evitando-se adicionar funcionalidades que não são úteis no momento → escopo bem definido  XP aposta na implementação rápida de um produto simples → espera-se que alterações e evoluções futuras custarão menos do que criar desde o início um software grande e complexo Ciência da Computação - FCG 21
  • 22. XP – Feedback constante  Programador deve ter informações constantes sobre o código e o cliente  A informação sobre o código é obtida por testes constantes → indicação de erros unitários e de integração  O cliente obtem frequentemente incrementos de software funcionais para que posso avaliá-los  Com isto, o cliente tem subsídios para sugerir novas características e informação aos desenvolvedores  Não-conformidades são identificadas rapidamente e corrigidas em novas versões/incrementos  O produto tende a estar de acordo com as reais expectativas do cliente Ciência da Computação - FCG 22
  • 23. XP - Coragem  Necessária para implantar os três valores anteriores  Nem todas as pessoas tem facilidade de comunicação e têm bom relacionamento  A coragem também é necessária para experimentar a simplificidade no software implementado  Por fim, é preciso coragem para ouvir o feedback do cliente! Ciência da Computação - FCG 23
  • 24. Práticas da XP  A XP baseia-se em 12 práticas  Não exige-se a implementação simultânea de todas as práticas → recomenda-se que sejam aplicadas gradativamente  Algumas práticas não são inovadores → na verdade, são usadas há anos na indústria de software Ciência da Computação - FCG 24
  • 25. Prática 1 - Planejamento  Decidir o que é necessário fazer o que pode ser adiado no projeto  A XP baseia-se em requisitos atuais reais para desenvolvimento de software → não em possíveis requisitos futuros  Procura-se evitar problemas de relacionamento entre a área de negócios e a de desenvolvimento → ambas devem cooperar para o sucesso e cada uma deve focar partes específicas do projeto  Área de negócios → escopo, composição das versões e as datas de entrega  Desenvolvedores → estimativas de prazo, processo de desenvolvimento e cronograma detalhado Ciência da Computação - FCG 25
  • 26. Prática 2 – Entregas frequentes  Construir software simples e atualizado à medida que novos requisitos surgem  Cada incremento deve ser o mais compacto possível → apenas os requisitos mais valiosos  Incrementos devem ser entregues a cada mês ou no máximo a cada dois meses → feedback mais rápido do cliente  Evita-se surpresas → grandes modificações  Torna as avaliações mais precisas e aumenta a chance da concordância do software com as necessidades do cliente Ciência da Computação - FCG 26
  • 27. Prática 3 - Metáfora Descrições de um software sem a utilização de termos técnicos, com o intuito de guiar o seu desenvolvimento Ciência da Computação - FCG 27
  • 28. Prática 4 – Projeto simples  O software deve ser o mais simples possível e satisfazer os requisitos atuais  Possíveis requisitos futuros só são adicionados ao projeto quando sua implementação é realmente necessária → K.I.S.S.  Oposto ao raciocínio ”implemente para hoje e projete para amanhã” Ciência da Computação - FCG 28
  • 29. Prática 5 - Testes  Foco na validação do projeto durante todo o processo de desenvolvimento  Os desenvolvedores implementam o software cirando primeiramente os casos de testes → TDD Ciência da Computação - FCG 29
  • 30. Prática 6 – Programação em pares  Implementação de software feita em dupla → 2 devs em um único computador  Um dev implementa; o outro revisa continuamento o trabalho feito → procura-se identificar erros sintáticos e semânticos, além de planejar refatorações  Estes dois papéis devem ser trocados continuamente  Desenvolvedores aprendem juntos  Maior possibilidade de corretude de código  Possibilidade de revisões já na fase de implementação Ciência da Computação - FCG 30
  • 31. Prática 7 - Refatoração  Foco no aperfeiçoamento do projeto do software  Presente em todo o desenvolvimento  Deve ser feita sempre que possível  A idéia é simplificar código sem que haja perda de funcionalidades Ciência da Computação - FCG 31
  • 32. Prática 8 – Propriedade coletiva  O código é de todos os membros da equipe!  Qualquem membro pode agregar valor ao código → mesmo que não o tenha desenvolvido (desde que realize os testes necessários)  Todos são responsáveis pelo software inteiro!  Caso um membro da equipe deixe o projeto (momentânea ou definitivamente) antes de sua conclusão, a equipe ainda é capaz de continuar o projeto com poucas dificuldades  Menor dependência de heróis individuais Ciência da Computação - FCG 32
  • 33. Prática 9 – Integração contínua  O código (testado) produzido por uma equipe deve ser integrado ao sistema, o qual também deve ser testado  O software é construído e verificado continuamente  Maior facilidade de isolar erros e suas causas  Recomenda-se utilizar uma única máquina de integração, o qual pode ser acessado livremente por toda a equipe Ciência da Computação - FCG 33
  • 34. Prática 10 – Trabalho semanal de 40 horas  Horas extras não devem se tornar um costume  Caso seja necessário trabalhar mais de 40 horas pela segunda semana consecutiva, existe um problema no projeto!  Tal problema não deve ser resolvido com mais horas de trabalho → e sim com planejamento  Focos na pessoas → não em processos e planejamentos  Alteração dos planos Vs. Sobrecarga de pessoal Ciência da Computação - FCG 34
  • 35. Prática 11 – Cliente presente  O cliente DEVE participar durante todo o projeto  O cliente DEVE estar sempre disponível para sanar todas as dúvidas sobre requisitos  Evita atrasos e implementações errôneas  O cliente pode ser mantido como parte integrande da equipe do desenvolvimento → ex.: escrevendo história de usuário  Pergunta: o que são histórias de usuário? (BDD) Ciência da Computação - FCG 35
  • 36. Prática 12 – Código padrão  Regras de escrita → estilo, formato de comentários, nomenclatura de variáveis, etc.  Favorece o trabalho em equipe e a propriedade coletiva do código Ciência da Computação - FCG 36
  • 37. Planejamento na XP  O cliente participa ativamente no processo de desenvolvimento → pode até fazer parte da equipe de desenvolvimento  Esclarecimento de dúvidas facilitado → uso de histórias  Cada tarefa/requisito é descrito como uma história → possivelmente, pelo cliente  As história são distribuídas aos desenvolvedores, os quais se encarregam de implementar as funcionalidades descritas Ciência da Computação - FCG 37
  • 38. Scrum … na próxima aula! ;) Ciência da Computação - FCG 38
  • 39. Conclusões – Métodos ágeis  Pesquisas mostram que projetos utilizando métodos ágeis obtiveram melhores resultados em termos de cumprimento de prazos, custos e padrões de qualidade  Cada vez mais projetos/equipes maiores tem utilizado métodos ágeis  Outras pesquisas mostraram que o uso adequado de XP pode ajudar organizações alcançarem os níveis CMM 2 e 3 → Boeing, por exemplo, alcançou o nível CMM 5 sem muitas alterações após adotar o XP Ciência da Computação - FCG 39
  • 40. Conclusões – Vantagens da XP  XP é ideal a projetos em que os stakeholders não sabem exatamente o que desejam  O feedback contínuo permite a rápida adaptação do produto  Entregas frequentes do software executável e funcional → diminuir a ansiedade do cliente e obter o seu feedback a respeito do trabalho realizado  Integração e testes contínuos → melhoria e garantia de qualidade Ciência da Computação - FCG 40
  • 41. Conclusões – Algumas desvantagens da XP  Muitos acreditam que seja a volta do processo caótico de desenvolvimento de software → ”codifica-remenda”  O uso errôneo da XP pode ”mascarar” práticas positivas de desenvolvimento → ex., análise de problemas utilizando diagramas  Alguns clientes podem não gostar da informalidade no levantamento de requisitos  Além disso, alguns clientes podem enxergar a refatoração como amadorismo ou mesmo incompetência Ciência da Computação - FCG 41
  • 42. Bibliografia KOSCIANSKI, A., SOARES, M. S. Qualidade de Software. Segunda edição. Editora Novatec. São Paulo, 2006. BROOKS, F. P. No Silver Bullet – Essence and Accident in Software Engineering. Proceedings of IFIP Tenth World Computing Conference, H.-J. Kugler, ed., Elsevier Science B. V., Amsterdam, NL (1986) pp. 1069-1076. Ciência da Computação - FCG 42