segunda-feira, 26 de março de 2012

Os Modelos de Desenvolvimento de Software

A Linha de Desenvolvimento de um Software...
Hoje em dia nos deparamos com várias metodologias para o desenvolvimento de um projeto, mas temos os modelos de desenvolvimento, que falando em um modo de herança seriam os país das metodologias. Os modelos de desenvolvimento é dividido em três partes principais, o desenvolvimento em Cascata, Iterativo e Incremental. O desenvolvimento em cascata é o mais tradicional dos três, por parecer ser mais simples e organizado, porém durante o desenvolvimento do projeto pode ocorrer inúmeras falhas decorrentes desse modelo Cascata, por isso veio os métodos Iterativo e Incremental, com a ideia de substituir o modelo Cascata e acabar com as suas falhas, mas como nada é perfeito eles também tem as suas falhas, mas vamos conhecer um pouco de cada e entender qual pode ser a melhor opção na hora de desenvolver um software.

Modelo em Cascata
O modelo cascata tornou-se muito conhecido na década de 70 e é comentado na maioria dos livros de engenharia de software. Nesse modelo as atividades do processo de desenvolvimento são estruturados em um cascata onde a saída de uma etapa é a entrada para a próxima etapa. As suas principais atividades são:
  • Estudo de Viabilidade
  • Análise e Especificação de Requisitos
  • Design da Arquitetura
  • Design Detalhado
  • Codificação e Testes de Unidades
  • Integração e Testes do Sistema
  • Entrega e Instalação
  • Manutenção
Existem variações desse modelo apresentando, porem, a principal característica comum é um fluxo linear e sequencial de atividades semelhantes a descritas anteriormente.
O modelo Cascata é criticado por ser linear, rígido e monolítico. Inspirados em modelos de outras atividades de engenharia, este modelo argumenta que cada atividade apenas deve ser iniciada quando a outra estiver terminada e verificada. Ele é considerado monolítico por não introduzir a participação de clientes e usuário durante as atividades do desenvolvimento, mas apenas o software ter sido implementado e entregue. Não existe como o cliente verificar antecipadamente qual o produto final para detectar eventuais problemas.
Vantagens:
  • Torna o processo de desenvolvimento estruturado;
  • Tem uma ordem sequencial de fases;
  • Cada fase cai em cascata na próxima e cada fase deve estar terminada antes do início da seguinte;
  • Todas as atividades identificadas nas fases do modelo são fundamentais e estão na ordem certa;
  • Esta abordagem é atualmente a norma e provavelmente permanecerá por um tempo, mas temos o desenvolvimento agil chegando com muita força na maioria das empresas de grande porte;
Desvantagens:
  • Não fornece feedback entre as fases e não permite a atualização ou redefinição das fases anteriores;
  • Não suporta modificações nos requisitos;
  • Não prevê a manutenção;
  • Não permite a reutilização;
  • É excessivamente sincronizado;
  • Se ocorrer um atraso todo o processo é afetado;
  • Demora muito para ser entrege o software;

Modelo Iterativo e Incremental
Desenvolvimento Incremental é uma estratégia de planejamento estagiado em que várias partes do sistema são desenvolvidas em paralelo, e integradas quando completas. Não implica, requer ou pressupõe desenvolvimento iterativo ou em cascata – ambos são estrategias de retrabalho. A alternativa ao desenvolvimento incremental é desenvolver todo o sistema com uma integração única.
Desenvolvimento Iterativo é uma estrategia de planejamento de retrabalho em que o tempo de revisão e melhorias de partes do sistema é pré-definido. Isto não pressupõe desenvolvimento incremental, mas funciona muito bem com ele. Uma diferença típica é que a saída de um incremento não é necessariamente assunto de um refinamento futuro, e seu teste ou retorno do usuário não é utilizado como entrada para planos de revisão ou especificações para incrementos sucessivos. Ao contrario, a saída de uma iteração é examinada para modificação, e especialmente para revisão dos objetivos das iterações sucessivas.
A idéia básica por trás da abordagem iterativa é desenvolver um sistema de software incremental, permitindo ao desenvolvedor tirar vantagem 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.
Vantagens do Modelo Iterativo
  • Baseia-se fortemente na participação e uma boa comunicação entre desenvolvedores e usuários.
  • Hã um grande envolvimento do utilizador e do cliente cliente. Isto leva a mal-entendimentos por causa da divergências entre os desenvolvedores e usuários que rapidamente podem ser superados. Porque há resultados mais rápidos e "tangíveis", os usuários também serão capazes de dar um melhor feedback;
  • Os resultados mostrados permitirá que os usuários tenham confiança em um bom resultado;
  • A cada ciclo do sistema os usuários e cliente poderam utilizar o sistema diretamente, eles são os "testadores" no processo de desenvolvimento e eles estarão iteragindo com o sistema durante o desenvolvimento;
  • Os riscos podem ser melhor administrados por pequenos pedaços do sistema a serem desenvolvidos em pequenos espaços de tempo;
  • Os sistemas complexos são mais claros e menos complexos para implementá-los aos poucos, sem a necessidade de começar a implementação do zero;
  • Ao fim de cada iteração pode-se ter um feedback para ter noção de como está o projeto, mesmo se não estiver de acordo ainda há tempo para mudanças, com o modelo Cascata isso não é possível;
  • Alterações nos requisitos podem ser rapidamente incorporada no processo de desenvolvimento.
Desvantagens do Modelo Iterativo
  • Durante o processo de desenvolvimento necessita-se adaptar e refinar o sistem, com isso pode ser que no final saia totalmente diferente da ideia original;
  • Pode acontecer a continuação do sistema e aparacição de muitos requisitos novos, esse sistema nunca irá terminar. Isso é chamado de aumento de escopo;
  • Gerentes que estão acostumados com a forma linear do desenvolvimento de um software pode ter alguns problemas na hora de ir para uma forma mais flexível;
  • Inexperiência com a forma de trabalhar do modelo Iterativo pode levar a problemas posteriores, por isso é necessário certo conhecimento para começar a usar esse modelo;
Vantagens do Modelo Incremental
  • As versões são fornecidos após cada iteração do modelo incremental;
  • O Modelo Incremental inclui o uso do software pelo usuário para que as mudanças sejam feitas de acordo com o mesmo;
  • Esse modelo não afeta o lado financeiro, porque ele prove o "core" do software que o cliente precisa, o que vai ajudar o cliente a manter o negócio da mesma forma, sem alterações no lado financeiro;
  • É flexível e fácil de gerenciar processo mais administráveis e fazer um software melhor com uma melhor estrutura;
  • Melhor gerenciamento de riscos, porque você pode confirmar o resultado com o cliente depois de cada versão do sistem e sempre verificar se estão fazendo o que está de acordo com o plano ou não, e corrigi-los na próxima versão do software;
  • Os testes são simples;
Desvantagens do Modelo Incremental
  • Cada fase de uma iteração é rígida e não se sobrepõem uns aos outros;
  • Podem surgir problemas relativos à arquitetura do sistema, porque nem todos os requisitos estão reunidos na frente de todo o ciclo de vida do software.
  • O modelo Incremental precisa ser relativamente pequeno.
Há uma década, vem se tentando encontrar um processo ou metodologia previsível e repetível que melhore a produtividade e qualidade. Alguns tentaram sintetizar e formalizar a tarefa aparentemente incontrolável de escrever um software. Outros aplicaram técnicas de gerenciamento de projeto na escrita de software. Sem o gerenciamento de projeto, projetos de software podem facilmente sofrer atraso ou estourar o orçamento. Como um grande número de projetos de software não atendem suas expectativas em termos de funcionalidades, custo, ou cronograma de entrega, ainda não existe um modelo de processo perfeito para todas aplicações.

Acesse o nosso site YaW Tecnologia, para mais informações sobre assuntos na área de desenvolvimento e veja os cursos disponíveis. 

5 comentários:

Postar um comentário