Modelos de Processo de Software
Modelos de Processo de Software
Nesta webaula vamos ver alguns Modelos de Processos de Software, disponíveis no mercado, sendo que alguns
são bem antigos, mas, mesmo assim, são utilizados em vários projetos. Todos os modelos possuem a finalidade
de evitar o caos no desenvolvimento e estabelecer um Fluxo de Trabalho. Na verdade, tudo depende do tipo de
software a ser produzido, combinado com as expectativas do cliente.
Para o gerenciamento das atividades de Processo de Software são utilizados os Modelos de Processos de
Software.
Modelo de Processo de Software é um guia exclusivo para as atividades da Engenharia de Software, definindo
um fluxo de todas as atividades, ações e tarefas, o nível de interação entre as atividades, os artefatos que
serão produzidos e a organização do trabalho que deve ser realizado (Pressman, 2016).
Existem diversos Modelos de Processos de Softwares que possuem características diferentes. Destacam-se os
seguintes: Modelos Prescritivos, Modelos de Processos Especializados e Modelos de Desenvolvimento Ágil.
As tarefas ocorrem de forma sequencial, com diretrizes bem definidas, uma vez que indicam uma série de
atividades metodológicas, ações, tarefas, artefatos, garantias de qualidade e mecanismos de controle de
mudanças para cada projeto. Para cada Modelo de Processo Prescritivo também é indicado um Fluxo de Processo
(Pressman, 2016).
Alguns dos Modelos de Processos Prescritivos são os seguintes: Modelo Cascata, Modelo Incremental, Modelos
Evolucionários (divididos em: Prototipação e Espiral) e Modelos Concorrentes.
Modelo Cascata
Conhecido como Ciclo de Vida Clássico de um Sistema ou abordagem Top-down, o modelo cascata possui enfoque
sistemático e sequencial dos processos, cada fase é iniciada somente após a conclusão da fase anterior.
MODELO CASCATA
Análise e
Especificação
Projeto
Implementação e Teste de
unidade
Integração e Verificação
operação e manuten
O modelo em cascata é considerado o modelo mais tradicional e simples, com especificação das atividades de
forma clara, além de ser uma base para modelos que surgiram posteriormente e de fácil gerenciamento. Todavia,
o desenvolvimento de um software pode se estender ao longo de meses, dependendo da complexidade do
projeto, uma vez que as tarefas são realizadas de forma sequencial e o atraso em uma das etapas reflete nas
demais.
Modelo Incremental
É um modelo iterativo que visa, a partir de requisitos iniciais, criar pequenas versões do software, que vão sendo
entregues ao cliente, e posteriormente expandir o software em novas versões até o sistema ideal ser totalmente
construído (Sommerville, 2011). Nesse modelo, uma versão é um incremento, e cada incremento (ou versão)
incorpora parte da funcionalidade requisitada pelo cliente.
No modelo incremental ao invés do cliente receber o software em uma única entrega, ele receberá “pedaços” do
software (versões), a cada incremento, até que o Software seja desenvolvido por completo. Esses “pedaços” são
módulos que acrescentam, ou melhoram as funcionalidades do sistema. Cada incremento (entrega) é lançado
como uma nova versão, do software, até que se atinja a versão final.
Modelo Evolucionário
Esse modelo produz uma versão cada vez mais completa do software. Esse tipo de modelo é iterativo e evolui ao
longo do tempo, o que se alinha perfeitamente a um o projeto do Software, pois os requisitos do negócio e do
produto não são estáveis, eles mudam (evoluem) e o Software pode ser desenvolvido pensando nesta evolução
(Pressman, 2016). No Modelo de Processo Evolucionário aparecem dois Modelos: Prototipação e Espiral.
Modelo de Prototipação
Fonte: Pressman (2016, p. 45).
Saiba Mais
Modelo Espiral
Fonte: Falbo (2012, p. 14).
O Modelo Espiral (um tipo do Modelo Evolutivo) é iterativo como a prototipação, mas utiliza os aspectos
sistemáticos e controlados do Modelo Cascata (Pressman, 2016). O objetivo do Modelo Espiral é fornecer um
rápido desenvolvimento de versão, que a cada ciclo possa gerar versões mais completas.
Modelos Concorrentes
São representados graficamente por uma série de tarefas e técnicas maiores e estados associados a elas e que
são utilizados como um paradigma para o desenvolvimento de aplicações Cliente/Servidor. Os Modelos
Concorrentes são utilizados em projetos que envolvem diferentes equipes de desenvolvimento e, conforme
Pressman (2016), os planos de projeto devem ser considerados documentos vivos e a evolução de cada processo
deve ser avaliada com frequência e revisada levando em consideração as alterações. Os Modelos de Processos
Concorrentes podem ser aplicados a diversos tipos de desenvolvimento de softwares e, diferentemente do
Modelo Cascata, ele não segue uma sequência de atividades, mas estabelece uma rede de atividades que se
movimentam de uma atividade para outra.
Fornece um processo e abordagem metodológica para definir, especificar, projetar e construir aspectos. O
código do Software é separado de acordo com sua importância (classes orientadas a objetos é um exemplo
de aspecto) e os requisitos são modelados transcendendo várias funcionalidades do Sistema.
Conhecida também como RUP – Rational Unified Process) aproveita as características dos Modelos de
Processos tradicionais (Prescritivos), mas implementa alguns princípios da metodologia Ágil (abordada mais
adiante nesta seção); é considerado um Modelo iterativo e incremental.
O princípio do Desenvolvimento Ágil é focado nas entregas, priorizando também a comunicação entre os
envolvidos de forma ativa e contínua para realizar entregas incrementais (procurando a satisfação do cliente).
(Pressman, 2016).
Segundo Pressman (2016), o Processo de Desenvolvimento Ágil visa reduzir drasticamente a documentação,
tornando o processo de desenvolvimento flexível e reduzindo a burocracia (presente em outros Modelos de
Processos de Softwares). Nesse universo, dois Métodos Ágeis se destacam: XP (Extreme Programming) e Scrum.
Metodologia Scrum
Determina um processo de desenvolvimento iterativo e incremental, e pode ser utilizado em processos gerenciais.
Esse método define um conjunto de regras e práticas de gestão, para alcançar o sucesso dos projetos como, por
exemplo, o trabalho em equipe e comunicação melhorada. O Scrum possui as seguintes atividades metodológicas:
Requisitos, Análise, Projeto, Evolução e Entrega; e em cada atividade ocorrem as seguintes tarefas principais:
Backlog
Sprints
Reunião de planejamento
Reuniões Scrum
+
Quando o projeto inicializa, são definidas as ideias e funcionalidades iniciais do produto a ser desenvolvido,
estas ideias são chamadas Histórias e o conjunto de todas as Histórias forma o Product Backlog.
As reuniões são conduzidas pelo Scrum Master que conduz o processo e realiza avaliações das respostas de
cada integrante da equipe, detectando de forma precoce eventuais problemas, como atrasos ou dificuldade
de entendimento de algum requisito.
No término da Sprint os requisitos são concluídos e o funcionamento é avaliado, melhorando o processo para
a Sprint sequencial. Cada Sprint se encerra com um incremento ao produto (ou Product Backlog).
Na metodologia Scrum sempre é montado um quadro (board) para acompanhar as tarefas. No quadro são
inseridas as atividades Stories, To Do, In Progress, Testing e Done .
Esse quadro pode ser adaptado para a realidade de cada equipe de desenvolvimento.
Fonte: Shutterstock.
Existem ainda outros métodos de Desenvolvimento Ágil, Pressman (2016) lista os seguintes: Método de
Desenvolvimento de Sistemas Dinâmicos (DSDM), Modelagem Ágil e Processo Unificado Ágil. Todos os métodos
ágeis enfatizam a colaboração humana e a auto-organização como elementos chaves.
Vimos os Modelos de Processos de Software e seus diferentes tipos: Modelos Prescritivos, Modelos Especializados
e Modelos Ágeis. Todos os Modelos apresentados são amplamente utilizados nas empresas de desenvolvimento
de software. São fatores determinantes para a escolha do tipo de modelo a ser usado: o tipo de software que
deverá ser produzido e a experiência dos Analistas de Sistemas (envolvidos nos projetos).
Pesquise mais!
Para conhecer mais sobre o Processo de Software para Metodologias Ágeis, consulte o capítulo 1: Processos
de Software, no livro: Engenharia de software [recurso eletrônico] de VETTORAZZO, A. de S. Revisão técnica:
Fábio Josende Paz. Porto Alegre: SAGAH, 2018, p. 12-23. O livro está disponível na Biblioteca Virtual.
00:00 / 03:55 1x