segunda-feira, 21 de maio de 2012

Conceitos, Definição e Modelos de Processos de Software


Conforme vimos na Apostila Processos de Software; o modelo de processo de software é uma representação abstrata de um processo de software onde cada perspectiva é definida pela engenharia de software agrupando em fase as atividades a serem desenvolvidas produzindo várias entradas e saídas definindo quem faz o quê, quando  e como para atingir certo objetivo.
No modelo processo software sua definição esta relacionada com a redução dos problemas relacionados a treinamento, revisão e suporte à ferramentas; experiências adquiridas nos projetos  e a economia  de tempo. O modelo cascata tem como principal característica a sequencia de atividades onde cada fase transcorre completamente e seus produtos são vistos com E/S para uma nova fase.
As principais vantagens deste modelo são:
*Cada etapa segue uma sequência agrupada em tarefas;
*O cliente participa do projeto;
*Prever fazer alterações de forma  a contemplar alterações funcionais ou técnicas.
Suas desvantagens são:
*Dificuldade em acomodar mudanças depois de sua execução.
*Partição inflexível do projeto em estágios distintos;
*Dificuldade em responder as mudanças dos requisitos;
*Difícil adaptação para modelos linear sequencial;
*Cliente esperar resultado;
*Alto custo de correção dos específicos;
        Já o modelo espiral o projeto é atacado como uma serie de pequenos ciclos, cada um finalizando uma versão de software executável.
Entre suas vantagens podemos citar:
*Permite que  ao longo de cada interação se obtenha versões do sistema recorrendo a prototipagem;
*Permite a abordagem do refinamento seguido pelo modelo em cascata;
Entre suas desvantagens podemos citar:
*Exige considerável experiência na avaliação dos riscos e baseia-se na experiência para o sucesso.
*O protótipo pode não cumprir os  requisitos de desempenho.
*Pode levar ao desenvolvimento em paralelo de múltiplas partes do projeto.

Após a avaliação de risco um modelo de desenvolvimento para o sistema é relacionado, se os riscos da interface como o usuário forem dominantes, um modelo de desenvolvimento apropriado pode ser a prototipação. Se o principal risco for a integração de subsistema, o modelo de desenvolvimento em cascata pode ser o mais apropriado para a situação. Portanto, o modelo cascata deve ser usado apenas quando os requisitos forem bem compreendidos e houver pouca probabilidade de mudanças radicais durante o desenvolvimento do sistema. Uma abordagem evolucionária para desenvolvimento de software é frequentemente mais eficaz do que a abordagem em cascata na produção de sistemas que atendam as necessidades imediatas dos clientes.

Modelo Espiral

O modelo espiral completo está ilustrado na Figura. A dimensão radial representa o custo acumulado atualizado e a dimensão angular representa o progresso através da espiral. Cada setor da espiral corresponde a uma tarefa (fase) do desenvolvimento. No modelo original foram propostas quatro tarefas (fases ou quadrantes) ilustrada na Figura
Um ciclo se inicia com a "Determinação de objetivos, alternativas e restrições "(primeira tarefa) onde ocorre o comprometimento dos envolvidos e o estabelecimento de uma estratégia para alcançar os objetivos. Na segunda tarefa "Avaliação de alternativas, identificação e solução de riscos", executa-se uma análise de risco.
Prototipação é uma boa ferramenta para tratar riscos. Se o risco for considerado inaceitável, pode parar o projeto. Na terceira tarefa ocorre o desenvolvimento do produto. Neste quadrante pode-se considerar o modelo cascata. Na quarta tarefa o produto é avaliado e se prepara para iniciar um novo ciclo.


        A manutenção de um software utilizando este modelo de ciclo de vida é tratada da mesma forma que o desenvolvimento.  A razão para se colocar em discussão este modelo na disciplina engenharia de software está no fato dele chamar a atenção para vários pontos importantíssimos no desenvolvimento de software. Variações do modelo espiral consideram entre três e seis tarefas ou setores da espiral. Um exemplo são as regiões: Comunicação com o cliente; Planejamento; Análise de risco; Engenharia; Construção e liberação; e Avaliação do cliente.

Modelo Incremental

Os modelos de processo interativos como incremental apresentam um ciclo de atividades, que evitam um comprometimento prematuro em relação a uma especificação ou até um projeto.
A atividade de definir requisitos é fundamental, esta porta é que faz a coleta de dados para desenvolver o tipo de projeto.
A essência do processo incremental é que o cliente identifica facilmente os serviços que serão fornecidos pelo sistema e participa do processo de incrementar tanto a sua opinião.
Mais com tudo isso existe problema devido a sua relatividade incremental pequena sendo de até 20 mil linhas de código.
A vantagem de um processo de software baseado na abordagem evolucionaria é que as especificações podem ser desenvolvidas de forma incremental. No entanto a abordagem tem dois problemas, o processo não é visível, os gerentes precisam de produtos regulares para medir o progresso, a analise insuficiente do software, os usuários esperam um desempenho do software igual do protótipo, os clientes podem tornar-se unidos demais ao seus protótipos.
Exemplos de Modelos de processos de softwares que poderiam ser usados como base para gerenciar desenvolvimento de alguns sistemas:
* Sistema para controlar anti-bloqueador de sistemas de freios de um automóvel, usa-se o modelo evolucionário de prototipação. O modelo evolucionário é direcionado para sistemas complexos e pequenos.
* Sistema de realidade virtual para apoiar a manutenção de software, usa-se o modelo por componentes, basicamente um componente de realidade virtual para construir outro.
* Sistema de contabilidade de universidade que substitui um sistema existente, usa-se o modelo de desenvolvimento evolucionário exploratório.
* Sistema interativo que permite aos passageiros encontrar o horário dos trens por meio de terminais instalados nas estacoes, neste caso a solução mais viável e a junção do modelo cascata com o modelo por componentes.

Fonte: Aulas de Engenharia de Software e apostila de Processos de Software.

6 comentários:

  1. Cada modelo tem um estilo próprio de ser identificado e estes são muito importante para o desenvolvimento do software mais um deles que nos mostra que tem relação um com o outro são os modelo espiral e incremental ambos possui alguma relação em comum mais como disse cada um tem um estilo próprio que o difere um do outro.

    ResponderExcluir
  2. Muito interessante galera ...Podemos notar que a utilização de um processo de software têm sido apontada como um fator primordial para o sucesso de empresas de desenvolvimento de software.

    ResponderExcluir
  3. o modelo processo software sua definição esta relacionada com a redução dos problemas estar relacionados a revisão e suporte à ferramentas; nos modelo espiral e incremental.joao andre...

    ResponderExcluir
  4. O modelo de processo de software é muito importante na area de desenvolvimento de software, para tal existem 3 modelos de software que podem ser escolhidos pelo desenvolvedor para criação de um software eficiente.

    ResponderExcluir
  5. A Engenharia de software baseada em componentes, baseia-se na existência de um numero significativo de componentes reusáveis. O processo de desenvolvimento do sistema enfoca a integração desses componentes, em vez de desenvolvê-los a partir do zero.

    ResponderExcluir
  6. A gestão do serviço clientela: o cliente gosta de saber que é conhecido na empresa e não suporta ter de recapitular, a cada contato, o historial da sua relação à empresa.

    ResponderExcluir