sábado, 10 de setembro de 2016

Modelos de desenvolvimento de software

Foto: Mlife/MTS India

Esse texto - que posto aqui como resumo - eu colhi no blog Protocolo TI E é muito útil para quem desenvolve software, claro, mas também para quem desenvolve projetos e deseja seguir uma metodologia simples como o Scrum.
Por exemplo, trabalhando sozinho em projetos simples eu uso o modelo em cascata; trabalhando com outros profissionais ou projetos complexos ou caros uso o modelo iterativo.

O artigo:

Os Modelos de Desenvolvimento de Software

Há mais de 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.


A Linha de Desenvolvimento de um Software

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, foram criados os métodos Iterativo e Incremental, com a ideia de substituir o modelo Cascata e acabar com as suas falhas, mas como nada é perfeito - e eles também tem as suas falhas - vamos conhecer um pouco de cada e entender qual pode ser o melhor:

Modelo em Cascata

Imagem: Fluxograma.net


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

A principal característica é o fluxo linear e sequencial de atividades

O modelo Cascata é criticado por ser linear, rígido e monolítico. É 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. Linear por argumentar que cada atividade apenas deve ser iniciada quando a outra estiver terminada e verificada.

Vantagens do modelo Cascata:

  • 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 ágil chegando com muita força;
Desvantagens do modelo Cascata:
  • Sem fornece feedback entre as fases e sem atualização ou redefinição das fases anteriores;
  • Sem modificações nos requisitos;
  • Não prevê a manutenção;
  • Não permite a reutilização;
  • Excessivamente sincronizado;
  • Atrasos afetam todo o processo;
  • Entrega demorada do software;

Modelo Incremental e Iterativo 

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 (linear) – ambos são estrategias de retrabalho. A alternativa ao desenvolvimento incremental é desenvolver todo o sistema com uma integração única.

Vantagens do Modelo Incremental
  • As versões são fornecidos após cada iteração (ciclo) 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;
  • Não afeta o lado financeiro, porque ele provê o "core"/essência 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, facilita gerenciar processos 
  • Faz um software melhor com uma melhor estrutura;
  • Melhor gerenciamento de riscos; você pode (a) confirmar o resultado com o cliente depois de cada versão do sistema e (b) 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.

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
  • Forte participação e comunicação entre desenvolvedores e usuários.
  • Grande envolvimento do utilizador e do cliente. Mal-entendidos entre os desenvolvedores e usuários rapidamente podem ser superados pois há resultados mais rápidos e "tangíveis", 
  • Melhor feedback os usuários;
  • Os resultados mostrados permitirão que os usuários tenham confiança em um bom resultado;
  • A cada ciclo do sistema os usuários e cliente poderão utilizar o sistema diretamente, pois também eles são os "testadores" do sistema, durante o processo;
  • Os riscos podem ser melhor administrados em pequenos pedaços do sistema desenvolvidos em pequenos espaços de tempo;
  • Sistemas complexos ficam mais claros e menos complexos pois a implementação é aos poucos, (não é feita do zero);
  • Ao fim de cada iteração pode-se ter feedback para ter noção de como está o projeto, mesmo havendo desacordo há tempo para mudanças (o contrário do modelo Cascata).
  • Alterações nos requisitos podem ser rapidamente incorporada ao desenvolvimento.
Desvantagens do Modelo Iterativo
  • Como durante o processo de desenvolvimento o sistema é adaptado e refinado, o final pode ser totalmente diferente do inicial;
  • Aumento de escopo; com aparição de requisitos novos, o sistema pode nunca terminar. 
  • Gerentes acostumados com modelo cascata pode ter problemas ao migrar para esse modelo mais flexível;
  • É necessário certo conhecimento para começar a usar esse modelo; inexperiência com a forma de trabalhar no modelo Iterativo pode levar a problemas posteriores;


2 comentários:

  1. Amigo, você ja achou aquela materia sobre o linux para iniciantes ?

    ResponderExcluir
    Respostas
    1. Não, amigo, não tenho acesso a todos os textos do arquivo, mas se conseguir recuperar lhe aviso; grato por ter me lembrado.

      Excluir