Metodologia Para Desenvolvimento de Sistemas

         Aula 3
Modelos de Ciclo de Vida de
    Desenvolvimento
 Prof. André Constantino da Silva
              MDP


               23 de agosto de 2012
Na Aula Anterior...

• Ciclo de Vida do Software



• Ciclo de Vida de Desenvolvimento
  – O modelo Cascata ou Clássico
Críticas
• O modelo Cascata somente possibilita ao
  cliente ver o produto no final do processo

• O cliente pode não saber tudo o que deseja
  no software

• Pode haver problemas na compreensão do
  que o cliente deseja
Prototipação
Vantagens do Modelo Portotipação
• Maior garantia de sucesso técnico e
  psicológico

• Redução no fator tempo: “O usuário gosta de
  ver o sistema funcionando”

• Ideal para sistemas gerenciais e de apoio a
  decisão
Desvantagens do Modelo Prototipação
• O cliente quer resultados
• O cliente não entenderá que um protótipo
  pode estar longe do software ideal
  – A gerência de desenvolvimento cede às
    reclamações e tenta encurtar o prazo de entrega
Desvantagens do Modelo Prototipação
• O desenvolvedor é pressionado a colocar um
  protótipo em funcionamento
  – Usa um SO ou linguagem de programação
    imprópria por simplesmente estar a disposição ou
    estar mais familiarizado
  – Essa atitude poderá levar à um algoritmo
    ineficiente
Espiral
Análise de Riscos
• Risco: fatores que podem impactam no
  andamento do projeto, aumentado seu custo ou
  tempo
• Nessa atividade os riscos são identificados,
  analisados, avaliados e ordenados
  – Se a análise resultante indicar incertezas sobre os
    requisitos, a prototipação pode ser utilizada na
    próxima atividade
  – De acordo com o resultado da Análise de Risco, é
    tomada a decisão de prosseguir ou não com a
    evolução do software.
Vantagens do Espiral
• Reúne características dos modelos Cascata e
  Prototipação acrescentando ainda em sua
  base a análise de riscos
• Quanto mais iterações na espiral, menor serão
  os riscos sobre o projeto
• Execução de atividades de verificação
  presentes ao final de cada iteração
  – permitem um melhor controle gerencial sobre o
    projeto
Desvantagens do Espiral
• Dificuldade em convencer os clientes de que a
  abordagem evolutiva é controlável
• Necessidade de experiência para a identificação e
  avaliação dos riscos técnicos e gerenciais para
  que realmente se possa diminuir o impacto que
  estes possam vir a causar
• Não é adequado para projetos considerados
  simples e os riscos são moderados
  – Muita flexibilidade e alto gerencialmento de riscos
Ciclo de Vida Incremental
Vantagens do Incremental
• Várias versões do software
  – O primeiro incremento é freqüentemente
    chamado de núcleo do produto
• Requisitos podem ser adicionados em novas
  versões futuras do software
• Tempo de entrega de uma nova versão é
  menor devido ao “paralelismo” de atividades
• Possibilita o cliente avaliar o produto que está
  sendo construído
Modelo de Desenvolvimento Rápido
       de Aplicações - RAD
Vantagens do RAD
• O ciclo de desenvolvimento deve ser
  extremamente curto
  – períodos de 60 a 90 dias
  – deve-se utilizar de técnicas de reuso
• Várias versões
  – cada função principal é desenvolvida por uma
    equipe RAD distinta. Ao término da
    implementação de cada função, elas são
    integradas formando o produto final
Desvantagens do RAD
• Exige que os desenvolvedores compreendam
  bem os requisitos e que o objetivo do projeto
  seja restrito
• Nem todos os sistemas são candidatos a
  serem desenvolvidos seguindo esse modelo
  – O sistema necessita ser modularizado
  – Cada função principal precisa ser desenvolvida em
    até 3 meses (90 dias)
• Exige a criação de equipes adequadas
• Modelos estudados:
  – Cascata ou Clássico
  – Prototipação
  – Incremental
  – Espiral
  – RAD


• Esses modelos são chamados tradicionais
Métodos Ágeis
• Ao longo dos anos, a Engenharia de Software
  determinou técnicas e artefatos para o
  desenvolvimento
• Surgiu uma vertente para desenvolver
  software de forma mais rápida e menos
  burocrática
• Métodos Ágeis
  – Manifesto Ágil
Extreme Programming - XP
Vantagens do XP
• Desenvolvimento de versões
• Participação do cliente na escrita dos requisitos
  (user stories)
• Cliente avalia cada versão produzida
• Requisitos podem ser adicionados em novas
  versões futuras do software
• Foco na comunicação e não na documentação
• XP pode ser aplicado a projetos de altos riscos e
  requisitos dinâmicos
Desvantagens do XP
• A equipe precisa estar comprometida
• O cliente precisa participar efetivamente
  – Escrevendo as user stories
  – Escolhendo as user stories que serão
    implementadas
  – Avaliando a versão
• A documentação pode ficar comprometida
XP
• Mais que um modelo de Ciclo de Vida, um conjunto de
  técnicas para desenvolvimento:
   – User Stories: características do sistema escritas pelos próprios
     clientes
       • As estimativas de tempo são realizadas pelos programadores
         analisando as user stories
   – Programação em pares
   – Especificação e elaboração de testes antes da codificação
   – Refactoring: melhorar código existente
• Equipes de pequeno e médio porte, sugerindo entre três a
  vinte membros
• São utilizados códigos padrões
• Uma equipe dinâmica e comprometida
A base do XP
• Define valores
  – Os indivíduos e suas interações acima de
    procedimentos e ferramentas
  – O funcionamento do software acima de
    documentação abrangente
  – A colaboração dos clientes acima da negociação
    de contratos
  – A capacidade de resposta à mudanças acima de
    um plano pré-estabelecido
A base do XP
• Define princípios
  – Feedback rápido
  – Simplicidade
  – Mudanças incrementais e apenas quando necessárias
  – Trabalho com qualidade
  – Rápida adaptação às mudanças
  – Projetos surgem através de indivíduos motivados, e
    que deve existir uma relação de confiança
  – ...
Tarefa
• Fazer uma pesquisa e escrever um texto (1
  página) sobre:
  – Documento de Requisitos


  – User Stories


• Foco: diferenças entre esses documentos.
• Data: 30/08
Conclusões
• Desenvolver sistemas computacionais é uma
  atividade complexa
• Devemos empregar metodologias para
  desenvolver
  – Variedade de Metodologias
  – Qual usar?

Aula 3

  • 1.
    Metodologia Para Desenvolvimentode Sistemas Aula 3 Modelos de Ciclo de Vida de Desenvolvimento Prof. André Constantino da Silva MDP 23 de agosto de 2012
  • 2.
    Na Aula Anterior... •Ciclo de Vida do Software • Ciclo de Vida de Desenvolvimento – O modelo Cascata ou Clássico
  • 3.
    Críticas • O modeloCascata somente possibilita ao cliente ver o produto no final do processo • O cliente pode não saber tudo o que deseja no software • Pode haver problemas na compreensão do que o cliente deseja
  • 4.
  • 5.
    Vantagens do ModeloPortotipação • Maior garantia de sucesso técnico e psicológico • Redução no fator tempo: “O usuário gosta de ver o sistema funcionando” • Ideal para sistemas gerenciais e de apoio a decisão
  • 6.
    Desvantagens do ModeloPrototipação • O cliente quer resultados • O cliente não entenderá que um protótipo pode estar longe do software ideal – A gerência de desenvolvimento cede às reclamações e tenta encurtar o prazo de entrega
  • 7.
    Desvantagens do ModeloPrototipação • O desenvolvedor é pressionado a colocar um protótipo em funcionamento – Usa um SO ou linguagem de programação imprópria por simplesmente estar a disposição ou estar mais familiarizado – Essa atitude poderá levar à um algoritmo ineficiente
  • 8.
  • 9.
    Análise de Riscos •Risco: fatores que podem impactam no andamento do projeto, aumentado seu custo ou tempo • Nessa atividade os riscos são identificados, analisados, avaliados e ordenados – Se a análise resultante indicar incertezas sobre os requisitos, a prototipação pode ser utilizada na próxima atividade – De acordo com o resultado da Análise de Risco, é tomada a decisão de prosseguir ou não com a evolução do software.
  • 10.
    Vantagens do Espiral •Reúne características dos modelos Cascata e Prototipação acrescentando ainda em sua base a análise de riscos • Quanto mais iterações na espiral, menor serão os riscos sobre o projeto • Execução de atividades de verificação presentes ao final de cada iteração – permitem um melhor controle gerencial sobre o projeto
  • 11.
    Desvantagens do Espiral •Dificuldade em convencer os clientes de que a abordagem evolutiva é controlável • Necessidade de experiência para a identificação e avaliação dos riscos técnicos e gerenciais para que realmente se possa diminuir o impacto que estes possam vir a causar • Não é adequado para projetos considerados simples e os riscos são moderados – Muita flexibilidade e alto gerencialmento de riscos
  • 12.
    Ciclo de VidaIncremental
  • 13.
    Vantagens do Incremental •Várias versões do software – O primeiro incremento é freqüentemente chamado de núcleo do produto • Requisitos podem ser adicionados em novas versões futuras do software • Tempo de entrega de uma nova versão é menor devido ao “paralelismo” de atividades • Possibilita o cliente avaliar o produto que está sendo construído
  • 14.
    Modelo de DesenvolvimentoRápido de Aplicações - RAD
  • 15.
    Vantagens do RAD •O ciclo de desenvolvimento deve ser extremamente curto – períodos de 60 a 90 dias – deve-se utilizar de técnicas de reuso • Várias versões – cada função principal é desenvolvida por uma equipe RAD distinta. Ao término da implementação de cada função, elas são integradas formando o produto final
  • 16.
    Desvantagens do RAD •Exige que os desenvolvedores compreendam bem os requisitos e que o objetivo do projeto seja restrito • Nem todos os sistemas são candidatos a serem desenvolvidos seguindo esse modelo – O sistema necessita ser modularizado – Cada função principal precisa ser desenvolvida em até 3 meses (90 dias) • Exige a criação de equipes adequadas
  • 17.
    • Modelos estudados: – Cascata ou Clássico – Prototipação – Incremental – Espiral – RAD • Esses modelos são chamados tradicionais
  • 18.
    Métodos Ágeis • Aolongo dos anos, a Engenharia de Software determinou técnicas e artefatos para o desenvolvimento • Surgiu uma vertente para desenvolver software de forma mais rápida e menos burocrática • Métodos Ágeis – Manifesto Ágil
  • 19.
  • 20.
    Vantagens do XP •Desenvolvimento de versões • Participação do cliente na escrita dos requisitos (user stories) • Cliente avalia cada versão produzida • Requisitos podem ser adicionados em novas versões futuras do software • Foco na comunicação e não na documentação • XP pode ser aplicado a projetos de altos riscos e requisitos dinâmicos
  • 21.
    Desvantagens do XP •A equipe precisa estar comprometida • O cliente precisa participar efetivamente – Escrevendo as user stories – Escolhendo as user stories que serão implementadas – Avaliando a versão • A documentação pode ficar comprometida
  • 22.
    XP • Mais queum modelo de Ciclo de Vida, um conjunto de técnicas para desenvolvimento: – User Stories: características do sistema escritas pelos próprios clientes • As estimativas de tempo são realizadas pelos programadores analisando as user stories – Programação em pares – Especificação e elaboração de testes antes da codificação – Refactoring: melhorar código existente • Equipes de pequeno e médio porte, sugerindo entre três a vinte membros • São utilizados códigos padrões • Uma equipe dinâmica e comprometida
  • 23.
    A base doXP • Define valores – Os indivíduos e suas interações acima de procedimentos e ferramentas – O funcionamento do software acima de documentação abrangente – A colaboração dos clientes acima da negociação de contratos – A capacidade de resposta à mudanças acima de um plano pré-estabelecido
  • 24.
    A base doXP • Define princípios – Feedback rápido – Simplicidade – Mudanças incrementais e apenas quando necessárias – Trabalho com qualidade – Rápida adaptação às mudanças – Projetos surgem através de indivíduos motivados, e que deve existir uma relação de confiança – ...
  • 25.
    Tarefa • Fazer umapesquisa e escrever um texto (1 página) sobre: – Documento de Requisitos – User Stories • Foco: diferenças entre esses documentos. • Data: 30/08
  • 26.
    Conclusões • Desenvolver sistemascomputacionais é uma atividade complexa • Devemos empregar metodologias para desenvolver – Variedade de Metodologias – Qual usar?