3. Modelos de Processo de Software - franAnder/Engenharia-de-software-FACIMP GitHub Wiki
Sommerville afirma que um processo de software é um conjunto de atividades e resultados associados que produzem um produto de software. Portanto, um processo de software se dá pela estruturação de um conjunto de atividades que resultam num produto software. Um processo deve contribuir na redução de custos, aumento de qualidade e de produção. Um processo que não suporta esse objetivo não é considerado um processo adequado.
Um processo de software pode conter diversas atividades. As principais atividades que normalmente todo processo possui são: especificação, projeto, implementação, validação, manutenção e evolução. As atividades constituem um conjunto mínimo para se obter um produto de software. Com a evolução do software, inúmeras oportunidade têm surgido. Com ferramentas, modelos e processos apoiando o seu desenvolvimento, o software mundialmente falado tem se tornado um produto cada vez mais demandado. No entanto, é necessário lembrar-se de que nem sempre foi assim. Cada modelo representa cada abordagem usada para a criação do software. Os modelos de processo são: modelo em cascata, desenvolvimento evolucionário, espiral, incremental, RAD, desenvolvimento forma de sistema, desenvolvimento formal de sistemas, desenvolvimento orientado a reuso, modelo em v, modelo do processo unificado, modelo praxis.
Modelo Em Cascata
O modelo em cascata foi o primeiro modelo publicado para o processo de desenvolvimento de software. O modelo representa o desenvolvimento gradual com uma sequência ordenada de passo a ser seguidos rigorosamente. As fases do modelo em cascata são executadas em sequência, ou seja, uma fase só executada quando a anterior termina sua execução.
Modelo de desenvolvimento evolucionário
O modelo de desenvolvimento evolucionário representa o desenvolvimento do software desde o protótipo inicial. Esse modelo possui algumas vantagens:
- O executável final pode ser mostrado antes do término do projeto para o cliente.
- Neste modelo há uma melhor comunicação entre os desenvolvedores e usuários para melhor tratamento de erro.
Modelo espiral
O modelo em espiral é um modelo que trabalha o tempo todo com riscos e dividi o projeto em outros menores. O movimento em espiral possui uma estrutura que dá base para se tentar chegar ao fim do projeto com todos, ou quase todos, os risco eliminados.
O modelo em espiral procura sempre dar as bases para que todos os requisitos do projeto estejam bem definidos e entendidos por todos da equipe inclusive pelo cliente. Com essa estrutura o produto reconhecimento de problemas.
Modelo incremental
O modelo incremental possui uma estrutura que permite que os documentos de uma fase possam ser mexidos para melhorias, mesmo se esses documentos estivessem em uma fase que foi completada, o que não acontece no modelo em cascata. No modelo incremental, diferentemente do modelo em cascata, a mudança de fase pode ocorrer mesmo se a anterior não tenha sido completada.
O modelo incremental é formado por ciclos que por sua vez são formados por fases de análise, projeto, implementação e teste.
Modelo RAD
RAD(Rapid application development) representa modelo de desenvolvimento rápido. O modelo de desenvolvimento rápido é usado em projetos que necessita de uma velocidade maior de desenvolvimento que o normal. Esse modelo é usado em projeto com prazos muito curtos para entrega. Este modelo formalizado por james martin em 1991, como evolução da "prototipagem rápida", destaca-se pelo desenvolvimento rápido da aplicação. O ciclo de vida é extremamente comprimido, de forma a encontrarem-se exemplos, na literatura, da duração de 60 a 9 dias. É ideal para clientes buscando lançar soluções pioneiras noo mercado.
Modelo desenvolvimento formal de sistemas
O modelo de desenvolvimento formal de sistemas necessita que os clientes estejam mais preparados e que saibam quais os requisitos que desejam no projeto. Nesse modelo os engenheiros de software devem possuir pleno conhecimento dos requisitos de negócio para não errar nas etapas de desenvolvimento.
Pelo fato de tanto os clientes quanto os engenheiros terem um bom conhecimento do projeto esse modelo é muito usado por ter clareza e precisão de especificação dos requisitos.
Modelo de desenvolvimento orientado a reuso
O Modelo de software orientado ao reuso surgiu da ideia de se reutilizar um software já existente, que contem componentes reusáveis. Com base nisso é avaliados os componentes se adequando aos requisitos. A prática de reuso não era muito comum entre os softwares mais antigos, essa ideia começou a ser escritas de alguns anos pra cá.
Modelo em V
O modelo em V é comparado com o modelo em cascata, mas os testes desses modelos são diferentes. É durante a fase de análise, no modelo em V, que os teste são planejados e durante a execução da fase de implementação que esses testes são preparados, para que na fase de teste sejam executados.
Modelo do processo unificado
No modelo do processo unificado o software é desenvolvido de forma iterativa e utiliza em sua estrutura de desenvolvimento caso de uso. Os casos de uso servem para a aquisição dos requisitos que o usuário necessita para utilizar no software. Esse modelo é formado por cinco elementos principais: Papéis, atividades, artefatos, fluxos de trabalho e disciplinas. O processo unificado ele surgiu para realizar o desenvolvimento de software visando a construção de sistemas orientados a objetos. Este modelo de desenvolvimento de software é iterativo e adaptativo, desta forma consegue produzir um sistema de grande porte como se fosse vários pequenos sistemas, o que diminui o risco do projeto.