quinta-feira, 27 de agosto de 2009

Modelos prescritivos de desenvolvimento de software

Na Engenharia de Software, processo é um conjunto de passos parcialmente ordenados, cujo objetivo é atingir uma meta: entregar um produto de software de maneira eficiente, previsível e que atinja as necessidades de negócio. Geralmente inclui "atividades" como análise de requisitos, programação, testes, entre outras tarefas.

Conlui-se portanto que um processo é composto por atividades relacionadas e os modelos servem para dar uma visão de como é um processo.

Um modelo de processo de software define o que deve ser realizado em cada fase do desenvolvimento e dá as instruções de como realizar essas atividades. Ele serve como
um guia, um roteiro para a execução de um processo de desenvolvimento.

Um modelo descritivo retrata como um processo é executado em um ambiente em particular. Já um "modelo prescritivo" retrata como um processo deveria ser executado.

Sendo assim um modelo prescritivo é uma espécie de recomendação que pode ser adaptada ou melhorada (veja os modelos de melhoria de processo CMMI e SPICE) pela empresa de software que for adotá-la.

Esses modelos abrangem três elementos principais:

  • Processos: determinam quais são as tarefas necessárias e em que ordem elas devem ser executadas.
  • Métodos: fornecem detalhes fundamentais de como fazer para executar as tarefas necessárias.
  • Ferramentas: proporcionam apoio automatizado ou semi-automatizado aos processos e métodos.

Existem um conjunto de atividades que aparecem na maioria dos modelos de processos prescritivos de software, diferindo-se apenas com relação ao fluxo de trabalho. São elas:

  1. Comunicação: levantamento de requisitos em colaboração com o cliente.
  2. Planejamento: estabelece as tarefas, os riscos, os recursos, os produtos e um cronograma.
  3. Modelagem: criação de modelos que permitam ao desenvolvedor entender melhor o projeto e seus requisitos. Ações: Análise – modelos de especificação de requisitos e Projeto – modelos de especificação de projeto.
  4. Construção: geração de código e testes.
  5. Implantação: entrega do software ao cliente.
Bom, mas vamos deixar de bla bla bla e falar do que realmente interessa - Os modelos prescritivos de desenvolvimento.
MODELO EM CASCATA

O modelo em cascata é o modelo prescrito mais antigo e por isso é considerado um modelo clássico. Ele sugere uma abordagem sequencial para as atividades do processo.



Projetos reais raramente seguem o fluxo seqüencial, pois é difícil estabelecer todos os requisitos inicialmente e por conta disso o modelo em cascata possui uma série de limitações ou desvantagens:

  • Uma versão executável do software só fica disponível no final do processo.
  • Nesse modelo ocorrem o que chamamos de estados de bloqueio: membros da equipe ficam esperando outros membros terminarem a sua parte.
  • É adequado quando os requisitos são bem entendidos, como em aperfeiçoamentos de um sistema existente.

MODELO INCREMENTAL

O modelo incremental pode ser considerado uma evolução do modelo em cascata. Este modelo é composto pelas atividades do modelo em cascasta porém estas atividades são realizadas repetidamente, ou seja, de forma iterativa.



Cada seqüência produz incrementos do software passíveis de serem entregues, fornecendo assim, progressivamente mais funcionalidade ao primeiro incremento que é chamado de núcleo de produto.

Esse modelo é particularmente útil quando não há mão-de-obra/recursos disponíveis para uma implementação completa.

MODELO RAD (Rapid Application Development)

No caso da equipe ser grande, um modelo possível é o modelo RAD. Ele é recomendável quando uma aplicação pode ser modularizada.



Desvantagens do modelo RAD:

  • Exige pessoal suficiente para criar várias equipes RAD.
  • Desenvolvedores e clientes têm que estar comprometidos com atividades rápidas.
  • Exige que o sistema seja modularizável.

No próximo post falaremos sobre outros modelos.

Abs,

HUGO

6 comentários:

thimer disse...

Parabens pelo blog Hugo.
Tenho uma duvida, gostaria de saber se Prototipagem e o modelo espiral estam definidos dentro do "modelo evolucionario" de processo OU ele fazem parte dos "modelos prescritivos"?
Resumindo, prototipagem e esperal sao processos prescritivos ou evolucionarios?


Obrigado!

Fellipe disse...

Parabéns pelo post Hugo.
Estava com algumas dúvidas sobre o assunto mais consegui o que queria aqui. Vlw

carliane disse...

vlw hugo consegui o que estava procurando,muito bom!!!

Cláudia disse...

Muito bom o artigo, simples mas com as informações mais importantes e suficientes!!

Ítalo disse...

Ótimo blog, conciso e objetivo.

Hugo Maia disse...

thimer, o modelo espiral é um modelo prescritivo e clássico também. Já a prototipação, a meu ver, é uma técnica que permite uma maior participação dos stakeholders no processo de desenvolvimento. Essa técnica é muito utilizada em processos evolutivos ou evolucionários, onde o sistema é entregue em partes. Exemplo: Um sistema de controle de veículos. Em uma primeira fase é entregue a funcionalidade de cadastro de motoristas e numa segunda, é entregue a funcionalidade de cadastro de veículos. Espero ter ajudado. Abs