segunda-feira, 9 de junho de 2014

Metodologias de Desenvolvimento de Software - Tradicionais e Clássicos!

Modelos Tradicionais ou Clássicos



  1.   Modelo Cascata

      O modelo cascata é o mais antigo modelo utilizado e representou um avanço no desenvolvimento de software, foi proposto por Royce em 1970.  Até meados da década de 1980 foi o único modelo com aceitação geral. Comparado com outros modelos de desenvolvimento de software, este é mais rígido e menos administrativo, pois: inicialmente, é necessário compreender completamente o problema a ser resolvido, requisitos e restrições; após, projeta-se soluções que atendam a todos os requisitos e restrições. Na sequência, inicia-se a implementação do projeto e ao ser finalizada, o produto é verificado e validado junto ao cliente e por fim, a entrega final é efetuada. Na figura a seguir, é possível visualizar o modelo segundo.
Figura 1- Modelo em Cascata
 

As principais vantagens desse modelo são: 
  •  tornar o processo de desenvolvimento estruturado, sequenciando cada fase e criando dependência entre elas;
  •  todas as atividades são identificadas nas fases do modelo;
  •  avança para a tarefa seguinte quando o cliente valida e aceita os produtos finais da tarefa atual.
As principais desvantagens do modelo cascata são: 
  • não fornece feedback entre as fases e não permite a atualização ou redefinição das fases anteriores;
  • não prevê a manutenção;
  • as atividades são sincronizadas e inflexíveis;
  • o produto é entregue somente no final do projeto;
  • não suporta modificações de requisitos;
  • dependência entre as fases compromete o projeto como um todo, caso haja um atraso.

2. Modelo Iterativo e Incremental
O modelo iterativo e incremental foi criado em resposta às fraquezas do modelo cascata. Podemos entendê-lo como: 

  • incremental: gerar novas versões incrementadas a cada release;
  • iterativo: ter várias iterações na linha do tempo do projeto. A saída de uma iteração é examinada para modificação, e especialmente para revisão dos objetivos das iterações sucessivas. 
A ideia base da abordagem iterativa é desenvolver um sistema de software incremental, permitindo ao desenvolvedor extrair benefícios daquilo que foi aprendido durante a fase inicial de desenvolvimento de uma versão do sistema. O aprendizado ocorre simultaneamente tanto para o desenvolvedor, quanto para o usuário do sistema [11]. Na figura 2, o modelo é ilustrado:

Figura 2 - Modelo Iterativo e Incremental 
 Modelo Iterativo e Incremental
As principais vantagens do modelo são: 
  • baseia-se fortemente na participação e uma boa comunicação entre desenvolvedores e usuários;
  • envolvimento do usuário e do cliente. Caso ocorram divergências, elas são rapidamente tratadas;
  • apresentação de resultados rápidos;
  • a cada ciclo do sistema os usuários e cliente poderão utilizar o sistema diretamente, eles são os "testadores" no processo de desenvolvimento e eles estarão interagindo com o sistema durante o desenvolvimento;
  •  administração de riscos por ciclo do sistema;
  •  feedback ao final de cada iteração permite que ações rápidas sejam tomadas em caso de mudanças no sistema;
  •  alterações nos requisitos podem ser rapidamente incorporada no processo de desenvolvimento;
  •  versões são geradas após cada iteração;
  •  flexibilidade e facilidade para gerenciar processo mais administráveis e fazer um software melhor com uma melhor estrutura;
  •  simplicidade dos testes.

As principais desvantagens do modelo iterativo e incremental são: 
  • necessidade de  adaptação e refinamento do sistema pode acarretar mudança da ideia original ao final do desenvolvimento;
  • aumento de escopo constante;
  • inexperiência de gerentes que não estão acostumados com essa forma de trabalho;
  • necessidade de conhecimento para iniciar a utilização do modelo;
  • podem surgir problemas relacionados à arquitetura do sistema, pois não há uma visão completa dos requisitos;
  • as releases do sistema devem ser pequenas.

 3. Modelo Prototipação 

     Este modelo é baseado em uma visão evolutiva do desenvolvimento de software, afetando o processo como um todo. Abrange a produção de versões iniciais – protótipos (comparável às maquetes para a arquitetura) - de um sistema futuro com o qual é possível realizar verificações e experimentos, com o objetivo de avaliar algumas de suas características antes de sua construção definitiva [12] [13]. A figura (Figura 3) a seguir apresenta a visão do modelo.
  

Figura 3 - Modelo Prototipação
 Modelo Prototipação

As vantagens desse modelo são:  
  • diferenças entre as percepções do cliente e dos desenvolvedores são clarificadas;
  • um sistema funcional é mostrado antecipadamente;
  • o protótipo pode servir de base para especificação do sistema;
  • identificação de necessidade de treinamento dos usuários e esquema de testes;
  • contribuição para desenvolvimento de partes complexas do sistema;
  • envolvimento do cliente na avaliação do protótipo.

As principais desvantagens do modelo são:  
  •  questões gerenciais, tais como esquemas menos estruturados e dificuldade de planejamento de competências do time para o desenvolvimento do sistema;
  • problemas de manutenção ocasionadas pelas constantes mudanças na estrutura do sistema;
  • problemas contratuais.

3. Modelo Espiral  
       O modelo em espiral foi proposto por Boehm em 1988 como forma de integrar os diversos modelos existentes à época, abrangendo as melhores características tanto do ciclo de vida clássico como da prototipação, adicionando, ao mesmo tempo, um novo aspecto - a análise de riscos - que falta a esses modelos. Este modelo assume que o processo de desenvolvimento ocorre em ciclos, cada um contém fases de avaliação e planejamento, onde a escolha de abordagem para a próxima fase (ou ciclo) é determinada. 

O modelo espiral está dividido em quatro atividades principais: 
  1. Planejamento: determinação dos objetivos, alternativas e restrições;
  2. Análise dos riscos: análise de alternativas e identificação/resolução de problemas e riscos;
  3. Engenharia: desenvolvimento do produto e verifica-lo no próximo nível;
  4. Avaliação feita pelo cliente: avaliação dos resultados da engenharia.
     
Na figura a seguir, é possível visualizar todos os detalhes do ciclo desse modelo.
 
Figura 4 - Modelo Espiral
 Espiral

As vantagens do modelo são:  
  • permite que ao longo de cada iteração se obtenham versões do sistema cada vez mais completas, recorrendo à prototipação para  redução de riscos;
  • permite o refinamento seguido pelo modelo cascata, mas que incorpora um desenvolvimento iterativo.

As desvantagens do modelo são:  
  • necessidade de conhecimento e experiência na avaliação de riscos;
  • não tem sido amplamente utilizado;
  • desenvolvimento em paralelo de múltiplas partes do projeto, cada uma sendo abordada de modo diferenciado, por isso é necessário o uso de técnicas específicas para estimar e sincronizar cronogramas, bem como para produzir os indicadores de custo e progresso mais apropriados.


Um comentário:

  1. Olá engenheiro! Gostei muito do artigo… A minha maior duvida esta entre modelos, metodologia, método, técnica e rup no desenvolvimento de sistemas de informação.
    E outra duvida esta entre o modelo de desenvolvimento rápido de aplicações e técnica de quarta geração… Obrigada!

    ResponderExcluir