Modelos de Processo de Software - gabrielf7/Engenharia-Software-ERROR418 GitHub Wiki

Modelos de Processo de Software

Existem vários modelos de processo de software, em que cada um representa uma tentativa de colocar ordem em uma atividade inerentemente caótica.

O Modelo Sequencial Linear

  • Chamado de Modelo Cascata
  • O Modelo de Prototipação
  • O Modelo RAD (Rapid Application Development)

Modelos Evolutivos de Processo de Software

  • O Modelo Incremental
  • O Modelo Espiral
  • O Modelo de Montagem de Componentes
  • O Modelo de Desenvolvimento Concorrente
  • Modelo de Métodos Formais
  • Técnicas de Quarta Geração

Modelo Cascata: Possui elementos sequenciais que orientam o desenvolvimento dos softwares, permitindo que todas as funções sejam estruturadas corretamente, incluindo desde o estudo de viabilidade para desenvolvê-los até mesmo a implementação. O modelo cascata configura-se como um modelo de engenharia projetado para ser usado no desenvolvimento de diferentes tipos de software. O objetivo principal deste sistema é que as diferentes fases de desenvolvimento seguem uma sequência: A primeira etapa se direciona para a segunda e esta se movimenta para a terceira e assim por diante. Uma das vantagens do modelo cascata é de que uma tarefa só avança para a outra quando há a validação dos produtos financeira da tarefa atual. Versão também diminui o impacto do entendimento adquirido no decorrer de um projeto, visto que se um processo não pode ser retrocedido para alterar os modelos e finalizações das tarefas anteriores, consequentemente, as ideias sobre o sistema não terão proveito.

Modelo de Prototipação: é um processo importante no desenvolvimento de software, pois, além de servir como um primeiro rascunho de um produto ou serviço tem como objetivo amadurecer ideias e engajar pessoas no processo de criação. Com a prototipação, os envolvidos em um projeto verificam as funcionalidades de um software de maneira simplificada e conferem se todos os recursos estão atendendo os requisitos estabelecidos. Além do baixo custo, a prototipação no desenvolvimento de software tem como característica reduzir os riscos e permitir que todas as validações sejam feitas antes da implementação.

Um protótipo pode ser desde um desenho na folha de papel, até algo elaborado em software especializado, e mais parecido com a solução final.

Tipos de Protótipos:

  • Protótipos de baixa Fidelidade: Este tipo de protótipo também é conhecido como rascunho, wireframe e sketche. Como o material utilizado para elaborar este protótipo é simples, consequentemente, o custo dessa solução é baixo.
  • Protótipos de Média Fidelidade: Este tipo de protótipo já demanda um pouco mais de tempo para ser elaborado e está mais próximo do que foi idealizado para o projeto. Apesar de ser uma solução mais elaborada, o custo desse tipo de protótipo continua relativamente baixo.
  • Protótipos de Alta Fidelidade: Este tipo de protótipo oferece uma fidelidade mais próxima possível do resultado final do software. Neste tipo de prototipagem, pode ocorrer a implementação de algumas partes do sistema.

Modelo RAD (Rapid Application Development)

É uma metodologia de desenvolvimento de software que prioriza um ciclo de trabalho curto, iterativo e incremental. Trata-se de um método que foi projetado para substituir as tradicionais técnicas de desenvolvimento, como o modelo cascata, que apresentavam processos mais lentos e pouco flexíveis. Afinal, o método não se prende a um desenvolvimento rígido e sequencial. Além disso, a metodologia ainda trabalha com a reutilização de componentes do software, o que ajuda a aperfeiçoar o processo de desenvolvimento, garantindo uma entrega mais rápida e uma redução no desperdício de tempo e dados. Modelos Evolutivos de Processo de Software

  • O Modelo Incremental: O Modelo Incremental foi desenvolvido através da combinação entre os modelos linear e prototipação. Cada etapa produz um sistema totalmente funcional, apesar de ainda não cobrir todos os requisitos. O Modelo Incremental apresenta diversas vantagens para o desenvolvimento de um software, especialmente se os requisitos não estão claros inicialmente. Isto é, os requisitos básicos são implementados, e os detalhes suprimidos.

  • O Modelo Espiral: O famoso modelo espiral foi proposto por Boehm. Esse é um modelo de processo de software evolucionário que também é iterativo como a prototipação, porém com aspectos sistemáticos e controlados do modelo cascata. O modelo espiral fornece um grande potencial para que possamos ter rápido desenvolvimento de versão cada vez mais completas. Um modelo espiral possui diversas atividades definidas pela engenharia de software, onde cada uma dessas atividades representa um segmento do caminho espiral.

  • O Modelo de Montagem de Componentes: O modelo de montagem de componenetes incorpora características de tecnologias orientadas a objetos no modelo espiral, a sua demanda uma abordagem iterativa para a criação de software, o modelo compõe aplicações a partir de componentes “empacotados”.

  • O Modelo de Desenvolvimento Concorrente: Um modelo de processo concorrente é conduzido por necessidades do usuário, decisões da gerência e resultados de re revisão. É representado como uma série de grandes atividades técnicas, tarefas e seus estados associados. Assim, o modelo de processo concorrente define uma série de eventos que vão disparar transições de estado para estado, para cada uma das atividades de engenharia de software. O modelo de processo concorrente é aplicável a todos os tipos de desenvolvimento de software e fornece um panorama preciso do estado atual de um projeto. Não segue uma seqüência de eventos, define uma rede de atividades, que transitarão de um estado a outro. Modelo de Métodos Formais Métodos formais permitem ao engenheiro de software especificar, desenvolver e verificar um sistema baseado em computador, pela aplicação de uma rigorosa notação matemática. Esse modelo oferece a promessa de software livre de defeito, pois problemas como ambiguidade, inconclusão, e inconsistência que seriam difíceis de resolver através das revisões comuns, podem ser descobertos e corrigidos mais facilmente com aplicação de análise matemática. Além disso, métodos formais servem como base para a verificação do programa e assim permitem que o engenheiro de software descubra e corrija erros que poderiam passar despercebidos.

  • Atualmente esse modelo é muito lento e caro. Como poucos desenvolvedores de software têm o preparo necessário para aplicar métodos formais, torna-se necessário um treinamento extensivo. É difícil usar tais modelos como meio de comunicação com a maioria dos clientes.

Técnicas de Quarta Geração

Metodologias de Desenvolvimento Tradicionais ou «Pesadas»
  • As metodologias consideradas tradicionais, também chamadas de «pesadas», têm como característica marcante serem divididas em etapas e/ou fases.
  • Essas fases são muito bem definidas e englobam atividades como Análise, Modelagem, Desenvolvimento e Testes.
  • Cada fase concluída gera um marco, que geralmente é algum documento, protótipo do software ou mesmo uma versão do sistema.
  • Esses marcos, dependendo do final de que etapa foram criados, podem ser documentos, como Diagramas de UML, ou algum protótipo do software.
  • O maior expoente das metodologias «pesadas» é o RUP, principal framework utilizado comercialmente no mercado, um Processo de Engenharia de Software criado pela Rational Software Corporation e oriundo do Processo Unificado – UP – para descrever como desenvolver um software usando técnicas comerciais com o objetivo de aumentar a qualidade dos softwares gerados pela empresa desenvolvedora.
  • O RUP é aplicável em classes de projetos variadas, sendo considerado um framework genérico para os processos de desenvolvimento e deve ser configurado de acordo com o tamanho e a necessidade de cada projeto ou da empresa desenvolvedora.
Metodologias de Desenvolvimento Ágeis ou «Leves»
  • No começo de 2001, motivados pela observação de equipes de desenvolvimento, perdidas entre os processos que existiam na época, alguns experts da indústria do desenvolvimento de softwares se uniram para encontrar valores e princípios relacionados ao desenvolvimento, que seriam capazes de fazer com que as equipes de desenvolvimento pudessem responder mais rápido às mudanças nas especificações e que o projeto fosse desenvolvido mais rapidamente.

  • Uma das principais metodologias ágeis encontradas na literatura especializada é a XP que apresenta uma nova abordagem aos projetos, de uma maneira mais simples, direta e eficiente.

  • Responder às mudanças ao invés de seguir um plano.