Buscar

Engenharia de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ENGENHARIA DE 
SOFTWARE
Izabelly Soares de Morais
Conhecer as fases de ciclo 
de vida do software
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Reconhecer os problemas de um projeto e a influência de ciclo de 
vida de software. 
 � Identificar as fases de ciclo de vida de software genérico. 
 � Caracterizar o funcionamento das fases modelo.
Introdução
O ciclo de vida de software pode ser conceituado como uma estru-
tura contendo processos, atividades e tarefas envolvidas na criação, na 
operação ou na manutenção de um software. Ele abrange toda a vida 
de um sistema desde o início, em que a definição de seus requisitos é 
reconhecida, até o final, quando ele não é mais utilizado. No começo de 
um projeto de software, o tipo de ciclo de vida geralmente é a primeira 
decisão a ser tomada.
Neste capítulo, você irá adquirir conhecimentos fundamentais para 
avançar no aprendizado sobre o ciclo de vida de software. Atualmente, 
contamos com um grande conjunto de ciclos de vida de software, sendo 
alguns deles: Cascata, Modelo em V, Incremental, Evolutivo, RAD, Proto-
tipagem, Espiral e Modelo de Ciclo de Vida Associado ao RUP. Cada um 
deles tem características que podem ser uma vantagem ou uma desvan-
tagem, dependendo do contexto do software que será desenvolvido.
Ciclo de vida de um software
Atualmente, uma enorme indústria de software tornou-se fator dominante nas 
economias do mundo industrializado. Equipes de especialistas em software, 
cada qual concentrando-se numa parte da tecnologia necessária para distribuir 
uma aplicação complexa, substituíram o programador solitário de antigamente. 
Esses são conceitos trazidos por Pressman e Maxim (2016, p. 4), que retrará a 
realidade social e a necessidade de se ter técnicas para produzir um software. 
Para justificar sua afirmação, o autor selecionou algumas perguntas:
 � Por que a conclusão de um software leva tanto tempo?
 � Por que os custos de desenvolvimento são tão altos?
 � Por que não conseguimos encontrar todos os erros antes de entregarmos 
o software aos clientes?
 � Por que gastamos tanto tempo e esforço realizando a manutenção de 
programas existentes?
 � Por que ainda temos dificuldades de medir o progresso de desenvolvi-
mento e a manutenção de um software? 
Um dos objetivos da Engenharia de Software é trazer metodologias para 
desenvolvimento de software, para isso, os modelos de ciclo de vida de software 
retratam as técnicas que podem ser utilizadas para desenvolver um sistema 
na prática. Devido ao avanço dos recursos tecnológicos, podemos notar a 
evolução pela qual esses modelos passaram, e, com isso, o impacto que esse 
processo trouxe para o software, até mesmo porque termos como produto final 
um sistema funcional, o qual deverá atender às necessidades de um cliente. 
O cliente é o indivíduo que gostaria que um produto fosse criado (desen-
volvido). Os desenvolvedores são os membros de uma equipe responsável pela 
criação desse produto. Os desenvolvedores podem ser os responsáveis por 
todos os aspectos do processo, desde o levantamento das necessidades até as 
etapas subsequentes, ou então ser responsáveis apenas pela implementação 
de um produto já concebido (SCHACH, 2010, p. 24).
Geralmente um software é concebido para trazer soluções para problemas 
específicos, dessa forma, são desenvolvidos com base em diversas especifi-
cações. Após a definição do objetivo do projeto, ou seja, do software, em que 
todas as necessidades do cliente são descritas, deve haver uma análise do 
que é válido ou não para ser implementado, inserido, no sistema. Devemos 
estar cientes de que nem toda informação passada pelo cliente é válida para 
solucionar o seu problema, e, dessa forma, para ser inserida no processo de 
produção.
Para Schach (2010, p. 36), “[...] o desenvolvimento de software é considera-
velmente diferente na prática por duas razões. Primeiramente, os profissionais 
de software são seres humanos e, portanto, cometem erros. Em segundo lugar, 
Conhecer as fases de ciclo de vida do software2
as necessidades do cliente podem mudar enquanto o produto de software está 
sendo desenvolvido”. Esse é um dos motivos pelos quais o software passa por 
diversos processos para ser classificado como pronto. Outro fato importante 
sobre esse assunto é que um software nunca é finalizado, no sentido de que 
nunca irá passar por alguma modificação futura. Na verdade, ele está em 
constante evolução, pois pode muito bem passar por atualizações conforme 
a necessidade do cliente. Veremos mais adiante, neste capítulo, um ciclo 
genérico de produção de software.
Há muitos mecanismos de avaliação de processos de software que possibilitam 
às organizações determinar o nível de “maturidade” de seu processo de software. 
Entretanto, a qualidade, o cumprimento de prazos e a viabilidade em longo prazo 
do produto que se desenvolve são os melhores indicadores da eficácia do processo 
utilizado (PRESSMAN; MAXIM, 2016, p. 41).
Fases do ciclo de vida de um software 
O processo pode ser definido como um conjunto de atividades de trabalho, 
ações e tarefas realizadas quando algum artefato de software deve ser criado. 
Cada uma dessas atividades, ações e tarefas se alocam dentro de uma meto-
dologia ou um modelo que determina sua relação com o processo e umas com 
as outras. Cada atividade metodológica é composta por um conjunto de ações 
de Engenharia de Software. Cada ação é definida por um conjunto de tarefas, 
o qual identifica as tarefas de trabalho a serem completadas, os artefatos 
de software que serão produzidos, os fatores de garantia da qualidade que 
serão exigidos e os marcos utilizados para indicar progresso (PRESSMAN; 
MAXIM, 2016, p. 35).
Podemos relacionar a Engenharia de Software com um procedimento 
organizacional, em que o processo é a base para as técnicas trazidas pela 
Engenharia. Ela é composta por algumas camadas. Dentre elas, podemos 
destacar: as ferramentas, que fornecem suporte, muitas vezes por meio de 
software específico automatizando a solução dos processos; os métodos que 
3Conhecer as fases de ciclo de vida do software
trazem as técnicas de desenvolvimento; o processo, o qual já definimos an-
teriormente; e o foco na qualidade, que demonstrará a eficiência do software 
diante das necessidades do cliente. 
Segundo Sommerville (2011, p. 18), um processo de software é um con-
junto de atividades relacionadas que levam à produção de um produto de 
software. Essas atividades podem envolver o desenvolvimento de software 
em uma linguagem de programação. No entanto, em razão da exigência do 
mercado, os sistemas passaram a ser desenvolvidos tendo como base extensões 
e modificações por meio de integrações entre componentes já existentes ou 
até mesmo criação de novos. O autor diz que, apesar de existirem diferentes 
processos de software, todos devem incluir quatro atividades fundamentais:
1. Especificação de software
2. Projeto e implementação de software
3. Validação de software
4. Evolução de software
Essas atividades possuem outras subatividades, tais como validação de 
requisitos, projeto de arquitetura, testes unitários, dentre outros. As descrições 
do processo, de acordo com Sommerville (2011, p. 19), podem incluir:
 � Produtos, que são os resultados de uma das atividades do processo.
 � Papéis, que refletem as responsabilidades das pessoas envolvidas no 
processo.
 � Pré e pós-condições, que são declarações verdadeiras antes e depois de 
uma atividade do processo ou da produção de um produto.
Assim como o entendimento e a interpretação do modo representativo de 
um ser humano, que, neste caso, se configura como o papel de nosso cliente, 
um processo de software é algo bem complexo, tendo em vista que envolve 
ferramentas práticas para desenvolvimento de software e diversas tomadas de 
decisões que influenciarão diretamente no resultado final, ou seja, no software.
Uma metodologia de processo genérica para Engenharia de Software esta-belece também cinco atividades metodológicas: comunicação, planejamento, 
modelagem, construção e entrega. Além disso, um conjunto de atividades de 
apoio é aplicado ao longo do processo, como o acompanhamento e o controle 
do projeto, a administração de riscos, a garantia da qualidade, o gerenciamento 
Conhecer as fases de ciclo de vida do software4
das configurações, as revisões técnicas, entre outras. Um fluxo de processo, 
como apresentado na Figura 1 a seguir, descreve como são organizadas as 
atividades metodológicas, bem como as ações e as tarefas que ocorrem dentro 
de cada atividade em relação à sequência e ao tempo (SCHACH, 2010, p. 31).
Figura 1. Metodologia do processo de software.
Fonte: Adaptada de Schach (2010, p. 31).
Devemos ter em mente que, apesar de termos todas essas informações, 
não temos obrigação nenhuma de utilizá-las da maneira que são expostas. 
Não existe um modelo ou uma técnica ideal, dita como correta, para todas 
as situações. A escolha dos processos e das métricas deverá ser realizada 
conforme o contexto do projeto. 
5Conhecer as fases de ciclo de vida do software
Em sua obra, Pressman e Maxim (2016, p. 41) indicam 
um “jogo de simulação de processos”, que inclui os mais 
importantes modelos de processo prescritivos. Pode ser 
encontrada em:
https://goo.gl/1pmbqv
Caracterizar o funcionamento das fases modelo
As etapas comuns em todos os modelos de processo de software têm como 
função nortear as demais fases que vão sendo inseridas conforme os modelos de 
processo foram sendo criados. Sabemos que a era tecnológica está sempre em 
movimento, pois cada vez mais recursos estão sendo desenvolvidos. Citamos 
anteriormente quatro atividades fundamentais da Engenharia de Software 
diante dos processos de software: especificação, projeto e implementação, 
validação e evolução de software. Porém, outras atividades vistas como com-
plementares são citadas por Schach (2010, p. 43):
1. Fase de levantamento de necessidades
2. Fase de análise (especificação)
3. Fase de projeto
 ■ Projeto de arquitetura (extrair os módulos)
 ■ Projeto detalhado
4. Fase de implementação
 ■ Codificar os módulos em uma linguagem de programação apropriada
 ■ Integrar
5. Manutenção pós-entrega
6. Retirada do produto
Conhecer as fases de ciclo de vida do software6
Figura 2. Desenvolvimento ideal 
de software.
Fonte: Pressman e Maxim (2016, p. 36).
Levantamento
de necessidade
Análise
Projeto
Implementação
Desenvolvimento
Apesar de obviamente ter algumas etapas em comum, Schach (2010) traz 
algumas atividades complementares a cada uma das fases, como podemos 
visualizar na Figura 2. Porém, vamos debater um pouco sobre as principais, que 
são comuns a todos os modelos, seguindo as definições de Sommerville (2011):
7Conhecer as fases de ciclo de vida do software
1. Especificação de software: “[...] é o processo de compreensão e definição 
dos serviços requisitados do sistema e identificação de restrições relati-
vas à operação e ao desenvolvimento do sistema.” (SOMMERVILLE, 
2011, p. 24). Os requisitos são bem importantes nesta fase, pois, por 
estar presente na fase inicial do desenvolvimento, todas as demais etapas 
irão depender dela. Algumas informações complementares podem ser 
visualizadas na Figura 3.
Figura 3. Requisitos da Engenharia de Processos.
Fonte: Sommerville (2011, p. 25).
Estudo de
viabilidade
Relatório de
viabilidade
Elicitação
e análise
Modelos de
Sistema
cação
Req. Usuário e
de sistema
Validação
Documento
Requisitos
2. Projeto e implementação de software: “[...] é o processo de conversão 
de uma especificação do sistema em um sistema executável. Sempre 
envolve processos de projeto e programação de software, mas, se for 
usada uma abordagem incremental para o desenvolvimento, também 
pode envolver o refinamento da especificação do software.” (SOM-
MERVILLE, 2011, p. 25). Após essa definição dada por Sommerville 
(2011), já começa a ficar mais claro que uma etapa depende, de alguma 
maneira, da sua etapa anterior. Como já dito, pode haver outras etapas 
adicionais em cada uma delas, o que chamamos de subatividades, porém, 
as principais sempre serão utilizadas. Podemos visualizá-las na Figura 4.
Conhecer as fases de ciclo de vida do software8
Figura 4. Um modelo geral do processo de projeto.
Fonte: Sommerville (2011, p. 26).
Informação
de plataforma
Especificação
de requisitos
Descrição
de dados
Projeto
de arquitetura
Projeto
de interface
Projeto de
compenentes
Projeto de banco de dados
Arquitetura
de sistema
Especificação de
banco de dados
Especificação
de interface
Especificação
de componentes
Entradas de projeto
Atividades de projeto
Saídas de projeto
3. Validação de software: É uma fase conhecida também como de ve-
rificação e validação(V&V), “[...] tem a intenção de mostrar que um 
software se adequa a suas especificações ao mesmo tempo em que 
satisfaz as especificações do cliente do sistema.[...] A validação também 
pode envolver processos de verificação, como inspeções e revisões, em 
cada estágio do processo de software, desde a definição dos requisitos 
de usuários até o desenvolvimento do programa.” (SOMMERVILLE, 
2011, p. 27). A Figura 5 traz os estágios do processo de teste.
Figura 5. Estágio de processo de teste.
Fonte: Adaptada de Sommerville (2011, p. 27).
Teste
de Componente
Teste de
Sistema
Teste de
Aceitação
9Conhecer as fases de ciclo de vida do software
4. Evolução do software: “Historicamente, sempre houve uma separação
entre o processo de desenvolvimento e o de evolução do software, ou
seja, a manutenção de software. [...] Poucos sistemas de software são
completamente novos, e faz muito mais sentido ver o desenvolvimento 
e a manutenção como processos contínuos.” (SOMMERVILLE, 2011,
p. 29).
As mudanças são inevitáveis. O que podemos aprender diante dos conceitos 
vistos é que temos essas ferramentas para auxiliar a equipe desenvolvedora a 
produzir o software com qualidade no processo e, por fim, no sistema final.
Conhecer as fases de ciclo de vida do software10
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem profissional. 
8. ed. Porto Alegre: AMGH, 2016.
SCHACH, S. R. Engenharia de software: os paradigmas clássicos e orientado a objetos. 
7. ed. Porto Alegre: AMGH, 2010.
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson, 2011.
Leituras recomendadas
OLIVEIRA. R. C. Engenharia de software. 2011. Disponível em: <http://www.facom.
ufu.br/~ronaldooliveira/ESOF-2011-2/Aula8-ESOF-AnaliseEstruturada.pdf>. Acesso 
em: 13 ago. 2017.
SLACK, N. et al. Gerenciamento de operações e de processos: princípios e práticas de 
impacto estratégico. 2. ed. Porto Alegre: Bookman, 2013.
YOURDON, E.; CONSTANTINE, L. L. Structured design: fundamentals of a discipline of 
computer program and systems design. Englewood Cliffs: Prentice-Hall, 1979.
ENGENHARIA 
DE SOFTWARE 
Aline Zanin 
Conhecer os modelos 
tradicionais 
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Reconhecer o modelo cascata, seu funcionamento, suas vantagens 
e suas desvantagens.
 � Aplicar o modelo prototipação, seu funcionamento, suas vantagens 
e suas desvantagens.
 � Caracterizar e identificar o modelo espiral, seu funcionamento, suas 
vantagens e suas desvantagens.
Introdução
Os modelos clássicos foram criados entre os anos 1970 e 1990 por evolu-
ções ocorridas no desenvolvimento de software para resolver problemas 
que representavam barreiras na criação de sistemas de alta qualidade. 
O modelo cascata foi um dos primeiros a serem propostos, referenciado 
em livros e amplamente conhecido até hoje. Após sua criação, diversos 
problemas foram apontados, levando ao surgimento de outros modelos, 
como o espiral e o prototipação. Ainda, houve a evolução dos modelos de 
ciclo de vida, possibilitando atualmente a utilização de diversos modelos. 
Para aprender sobre os modelos atuais, é muito importante entender os 
modelos tradicionais,identificar quais foram as evoluções que ocorreram 
e o motivo da presença de determinadas características nos modelos 
que utilizamos hoje.
Neste capítulo, você adquirirá conhecimentos fundamentais sobre os 
modelos de ciclo de vida tradicionais. Para isso, abordaremos os modelos 
cascata, espiral e prototipação, apresentando conceitos básicos sobre 
eles, além de suas vantagens e desvantagens.
1 Modelo cascata
Oficialmente, foi o primeiro modelo de ciclo de vida de desenvolvimento de 
software, motivo pelo qual é o mais conhecido entre os profissionais e estu-
dantes da área de desenvolvimento de sistemas, sobretudo de engenharia de 
software. O modelo recebe o nome de cascata por ser um processo executado 
em sequência, sem que de uma etapa posterior seja possível retornar a uma 
etapa anterior — esse fluxo se assemelha ao do funcionamento de uma cascata, 
na qual o fluxo da água é contínuo para apenas uma direção. 
Também chamado de ciclo de vida clássico, esse modelo sugere uma abor-
dagem sequencial e sistemática para o desenvolvimento de software, come-
çando com a especificação dos requisitos do cliente, avançando pelas fases 
de planejamento, modelagem, construção e disponibilização, e culminando 
no suporte contínuo do software concluído (Figura 1) (PRESSMAN 2011).
Figura 1. Modelo cascata. 
Fonte: Adaptada de Pressman (2011). 
Comunicação
 início do projeto
 levantamento de requisitos
Planejamento
 estimativas
 cronograma
 acompanhamento
Modelagem
 análise
 projeto
Construção
 código
 teste
Entrega
 entrega
 suporte
 feedback
Empregamos o modelo cascata em casos nos quais os requisitos de um 
problema são bem compreendidos e razoavelmente estáveis, ou seja, quando 
o trabalho flui da comunicação à disponibilização de modo relativamente 
linear (PRESSMAN 2011).
Justamente por sua característica sequencial, esse modelo apresenta etapas 
muito bem definidas, o que facilita o gerenciamento dos projetos que o adotam. 
Isso acontece porque a cada etapa são gerados produtos entregáveis, o que 
possibilita que os gestores do projeto acompanhem claramente os resultados.
Outra vantagem do método cascata, também relacionada à separação do 
projeto em etapas, reside no fato de que os requisitos costumam estar bem 
definidos. O modelo não prevê alterações de requisitos no meio do processo, 
mas apenas uma definição detalhada no início que será implementada crite-
riosamente para ser entregue ao final do fluxo.
Conhecer os modelos tradicionais2
Contudo, embora a definição de requisitos no início do projeto permita um 
detalhamento maior, esse modelo desperta um problema clássico da engenha-
ria de software: mudanças de requisitos, sejam por necessidades do cliente, 
necessidades tecnológicas ou viabilidade de mercado, não são bem recebidas 
e podem causar grandes transtornos para o projeto. Isso porque os requisitos 
nesse modelo são alterados apenas após a entrega da última etapa do modelo 
cascata, motivo pelo qual as mudanças podem ser significativas e demandar 
um alto tempo e custo.
Ainda, assim como os requisitos não são mutáveis, quando identificada 
uma falha na etapa imediatamente anterior à etapa corrente, o processo não 
permite que se retroceda a uma fase para realizar a correção, obrigando a 
seguir o fluxo até o final, uma característica que eventualmente se torna uma 
dificuldade ou até mesmo um empecilho para a execução real desse modelo.
Por fim, outra de suas desvantagens é que o cliente apenas visualizará 
o produto que está comprando e terá a oportunidade de ofertar feedback no 
último ciclo, faltando uma interação maior do cliente com a equipe de desen-
volvimento e entre a própria equipe de uma fase para outra.
O modelo cascata considera as fases de análise e definição de requisitos, projeto de 
sistema e de software, implementação e teste de unidades, integração e teste de 
sistemas, operação e manutenção.
2 Modelo prototipação
Assemelha-se ao modelo cascata, considerando que também tem etapas bem 
definidas, mas apresenta uma peculiaridade como característica principal: tem 
em conta uma prototipação ao início do ciclo de vida. Essa prototipação é feita 
após um primeiro contato com o cliente e objetiva que todos os envolvidos 
consigam interagir com esse protótipo, tendo uma ideia de como o software 
funcionará para aprovar ou sugerir modificações. 
3Conhecer os modelos tradicionais
O processo de prototipar antes do início da criação do sistema apresenta 
vantagens e desvantagens. A principal vantagem consiste no fato de que os 
requisitos se tornam mais visuais e intuitivos, uma vez que o profissional 
redigirá o documento de especificação de requisitos tendo o protótipo como 
base. Além disso, possibilita que o cliente tenha maior certeza de que expressou 
suas necessidades corretamente e que, por isso, receberá o software esperado. 
Contudo, o protótipo pode ser considerado uma fonte de retrabalho e 
alto custo, uma vez que, caso o protótipo inicial não atenda às necessidades 
do cliente, precisará ser reconstruído, e, mesmo que seja aceito o primeiro 
protótipo, sua criação representa uma etapa extra, que envolve um trabalho 
de produção e validação. Além disso, por considerar um tempo de criação 
e validação do protótipo, o ciclo de vida do software como um todo pode 
demandar maior tempo para ser executado, processo visualizado na Figura 2.
Figura 2. Modelo prototipação.
Fonte: Adaptada de Schach (2009, p. 53).
Desenvolvimento
Manutenção
Descontinuação
do produto
Manuteção
pós-entrega
Implementação
Projeto
Análise
Protótipo
rápido
Necessidades
de alteração
Conhecer os modelos tradicionais4
3 Modelo espiral
Trata-se de um modelo que busca reunir características dos demais modelos 
de ciclos de vida tradicionais, considera também a criação de protótipos e a 
execução por fases bem definidas. 
Sua principal diferença em relação ao modelo cascata é que o modelo espiral 
acrescenta ao cascata uma análise criteriosa de riscos ao início de cada etapa, 
beneficiando-se, assim, da principal característica do modelo prototipação, 
a criação de protótipos.
Pelo fato de unificar características dos demais modelos, o modelo espiral 
também tem vantagens e desvantagens quanto aos outros, pois apresenta 
requisitos e etapas bem definidos, mas com um alto custo de execução, por 
considerar diversas prototipações, uma para cada fase percorrida.
Criado por Barry Boehm em 1988, o modelo espiral é uma melhoria do mo-
delo incremental e teve seu nome cunhado em virtude de sua representação, 
em que cada volta no espiral percorre todas as fases do processo de software 
(DIAS, 2019). De acordo com Pressman (2011) e Boehm e Hansen (2001), 
o modelo espiral de desenvolvimento é um gerador de modelos de processos 
dirigidos a riscos e utilizado para guiar a engenharia de sistemas com muito 
software, que ocorre de forma concorrente e tem vários envolvidos. Além disso, 
há duas características principais que o distinguem: a primeira consiste em 
uma estratégia cíclica voltada para ampliar, de modo incremental, o grau de 
definição e a implementação de um sistema, enquanto diminui o seu grau de 
risco; e a segunda reside no fato de dispor de uma série de marcos de pontos-
-âncora para garantir o comprometimento dos envolvidos quanto à busca de 
soluções de sistema mutuamente satisfatórias e viáveis. O modelo de ciclo 
de vida espiral (BOEHM, 1998 apud SCHACH, 2009) pode ser observado 
na Figura 3. 
5Conhecer os modelos tradicionais
Figura 3. Modelo espiral de Boehm.
Fonte: Adaptada de Boehm (2000).
Custo
acumulado
Avanço
nas etapas
Avaliar alternativas, identi�car
e minimizar os riscos
Análise
de riscosAnálise
de riscosAnálise
de riscos
Protótipo
2
Protótipo
1A
ná
lis
e
de
 ri
sc
os
Protótipo
3
Protótipo
operacional
Conceito de
operação
Plano de levantamento
de necessidades
Plano de ciclo
de vida
Divisão da
responsabilidade
Plano de
desenvolvimento
Revisão
Determinar
objetivos,
alternativas,
restriçõesValidação das
necessidades
Necessidades
de software
Projeto do
produto de
software
Projeto 
detalhado
Código
Teste
de uni-
dadesTeste de
integração
Teste de
aceitação
Implementação
Planejar próxima fase
Plano de
integração
e testes
Veri�cação e validação
do projeto
Desenvolver, veri�car
produto do próximo nível
Simulações, modelos e benchmarks
Na Figura 3, a dimensão radial representa o custo acumulado até o momento, 
e a dimensão angular o processo ao longo da espiral. Os ciclos correspondem 
às fases, em que uma fase se inicia (no quadrante superior esquerdo) concomi-
tantemente à determinação de seus objetivos, com alternativas para atingi-los 
e restrições impostas sobre eles. Na sequência, essa estratégia é analisada 
sob o ponto de vista de riscos, que passam por tentativas de minimização, 
construindo-se, em alguns casos, protótipos. Se os riscos não puderem ser mi-
nimizados, o projeto pode ser interrompido imediatamente; contudo, se forem 
minimizados com sucesso, a próxima etapa de desenvolvimento é iniciada 
(quadrante direito inferior, que corresponde ao modelo cascata clássico). Por 
fim, os resultados são avaliados e se planeja a fase seguinte (SCHACH, 2009). 
Conhecer os modelos tradicionais6
Pressman (2011) também aponta que, com o uso do modelo espiral, 
o software será desenvolvido em uma série de versões evolucionárias, que, 
nas primeiras, iterações poderão consistir em um modelo ou em um protótipo. 
Já nas iterações posteriores, são produzidas versões cada vez mais completas do 
sistema que passa pelo processo de engenharia. Ainda de acordo com o autor, 
o modelo espiral divide-se em um conjunto de atividades que representam um 
segmento do caminho espiral, no qual, assim que o processo evolucionário 
começa, a equipe de software realiza atividades indicadas por um circuito 
em torno da espiral, no sentido horário, iniciando pelo seu centro. Para tal, os 
riscos são levados em conta à medida que se realiza cada revolução. Por fim, 
o primeiro circuito em volta da espiral pode resultar no desenvolvimento de 
uma especificação de produto, enquanto as passagens subsequentes em torno 
da espiral podem ser usadas para desenvolver um protótipo e, então, progressi-
vamente, versões cada vez mais sofisticadas do software (PRESSMAN, 2011). 
A empresa Xpto tem trabalhado em um projeto com o objetivo desenvolver um 
sistema de um e-commerce. 
 � Caso opte por utilizar o modelo cascata, reunir-se-á com o cliente uma única vez, 
documentará os requisitos que o cliente solicitou e os apresentará para validação 
do cliente. Uma vez aceitos os requisitos, o e-commerce é criado e o cliente apenas 
o visualiza após todos os testes terem sido executados e o projeto encerrado.
 � Caso se opte pelo modelo prototipação, antes de iniciar o desenvolvimento, 
os profissionais criarão as telas do e-commerce e as mostrarão para o cliente. O cliente 
deverá interagir como se estivesse usando o software real, para, então, aprovar 
o desenvolvimento ou sugerir alterações.
 � No caso de utilizar o modelo espiral, será feito inicialmente o protótipo de uma tela 
de cadastro dos produtos, que será avaliada pelo cliente e, depois, desenvolvida. 
Em seguida, será feita uma tela para compras, também avaliada pelo cliente e, 
então, desenvolvida, e assim sucessivamente, prototipando cada parte do pro-
grama antes de ele ser desenvolvido. Além da prototipação, a cada etapa serão 
analisados os riscos possíveis em cada etapa, por exemplo, ter um estagiário que 
está se formando e que precisará deixar a equipe, uma mudança de versão de 
alguma tecnologia durante o processo, entre outros riscos previsíveis que, nesse 
modelo, são analisados previamente a cada ciclo.
7Conhecer os modelos tradicionais
BOEHM, B. Spiral development: experience, principles, and refinements spiral develop-
ment workshop. 2000. Disponível em: https://resources.sei.cmu.edu/library/asset-view.
cfm?assetid=5053. Acesso em: 08 jun. 2020.
BOEHM, B.; HANSEN, W. J. The spiral model as a tool for evolutionary software acquisition. 
2001. Disponível em: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.642.8
250&rep=rep1&type=pdf . Acesso em: 08 jun. 2020.
DIAS, R. P. O modelo em espiral de Boehm. 2019. Disponível em: https://medium.com/
contexto-delimitado/o-modelo-em-espiral-de-boehm-ed1d85b7df. Acesso em: 
08 jun. 2020.
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7. ed. Porto 
Alegre: AMGH, 2011.
SCHACH, S. R. Engenharia de software: os paradigmas clássico e orientado a objetos. 
Porto Alegre: AMGH, 2009.
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de 
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade 
sobre qualidade, precisão ou integralidade das informações referidas em tais links.
Conhecer os modelos tradicionais8
ENGENHARIA 
DE SOFTWARE
Aline Zanin
Revisão técnica:
Jeferson Faleiro Leon
Desenvolvimento de Sistemas 
Especialista em Formação Pedagógica de Professores
Catalogação na publicação: Karin Lorien Menoncin CRB-10/2147
M827e Morais, Izabelly Soares de.
 Engenharia de software [recurso eletrônico] / Izabelly
 Soares de Morais, Aline Zanin ; revisão técnica : Jeferson
 Faleiro Leon. – Porto Alegre : SAGAH, 2017.
 
 ISBN 978-85-9502-253-9
 Engenharia. 2. Engenharia de software auxiliada por 
 computador. I. Zanin, Aline. II. Título.
 
CDU 004.41
Conhecer modelo 
incremental
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Relacionar os elementos dos modelos linear e prototipação com o
modelo incremental.
 � Identificar os incrementos.
 � Descrever o funcionamento, as vantagens e as desvantagens do
modelo incremental.
Introdução
No modelo incremental, o sistema é dividido em partes que são 
desenvolvidas e entregues de forma independente. Quando uma 
dessas partes é finalizada, ela é “incrementada” ao sistema, formando,
ao final, o sistema completo. Conhecer este modelo é muito interes-
sante, pois muitas empresas ainda o utilizam quando existe pouca mão 
de obra para implementar um software.
Neste capítulo, você vai adquirir conhecimentos fundamentais para 
avançar no aprendizado sobre o modelo incremental. Vamos abordar 
conceitos básicos sobre o modelo e as suas vantagens/desvantagens.
Como o modelo incremental se relaciona ou se 
diferencia dos modelos cascata e prototipação
Para falarmos do modelo incremental, vamos primeiramente instanciar a 
relação dele com os demais modelos que já foram ou serão estudados neste 
curso, ou seja, os modelos cascata (linear) e prototipação. 
O modelo incremental considera diversas entregas parciais do produto 
antes de uma entrega final, sendo esta a sua principal diferença em relação aos 
modelos prototipação e cascata. Nesses modelos, o ciclo de desenvolvimento é 
contínuo e o cliente recebe um entregável do produto solicitado apenas quando 
o todo for concluído, ou seja, quando percorridas as seguintes etapas: análise 
e definição de requisitos, projeto de sistema e de software, implementação e 
teste de unidades, integração e teste de sistemas, operação e manutenção e, 
ainda, a prototipação no modelo de prototipação. Já no modelo incremental, 
são intercaladas as atividades de especificação, desenvolvimento e valida-
ção. Neste sentido, o sistema é desenvolvido como uma série de versões 
(incrementos), de maneira que cada versão adiciona funcionalidade à anterior 
(SOMMERVILE, 2011).
Figura 1. Exemplo de incrementos de funcionalidades.
Fonte: Nepomuceno (2012).
Comunicação
Comunicação
Comunicação
Planejamento
Planejamento
Planejamento
Modelagem
Modelagem
Modelagem
Construção
Construção
ConstruçãoImplantação
Implantação
Implantação
Incremento 1
Incremento 2
Fu
n
ci
o
n
al
id
ad
e
s 
e
 c
ar
ac
te
rí
st
ic
as
 d
o
 P
ro
je
to
Tempo do Projeto
Entrega 1 - núcleo do
produto
Entrega 2
Entrega n
Incremento n
Identificar os incrementos
Como descrito anteriormente, o princípio fundamental do modelo incremental 
é a presença de ciclos de incrementos. Pode-se dizer que o modelo incremental 
une os modelos cascata e prototipação justamente por reunir características de 
Conhecer modelo incremental2
ambos. Desta forma, o princípio básico para a identificação de um incremento 
neste modelo é analisar as etapas do processo de desenvolvimento que estão 
sendo executadas. 
Um incremento sempre inicia no levantamento das necessidades ou dos 
requisitos, sendo que, se estiver sendo executado o início do processo de 
desenvolvimento, esse incremento irá iniciar pela conversa com o cliente 
e pela identificação das necessidades dele. Já no caso de um incremento 
que complementa ou é realizado para corrigir algo no software que está em 
desenvolvimento, inicia-se analisando aquilo que já foi programado e compa-
rando com o que foi solicitado pelo cliente. Em um processo ideal, o cliente 
participa do processo, analisando cada entrega ao final de um incremento e 
especificando o que espera do próximo incremento.
A empresa Xpto está desenvolvendo um site para divulgação de produtos atendidos por 
um determinado representante comercial. Em um primeiro momento, foi desenvolvida 
a página principal em que são exibidos os produtos. Ao analisar a página recebida, 
o cliente solicitou mudanças de layout. Sendo assim foi executado um incremento 
em que foi adicionado ao site as melhorias solicitadas. Já em um terceiro momento, 
foi incrementado ao site uma página “Fale Conosco”, para que o cliente possa solicitar 
o produto ao vendedor.
Vantagens e desvantagens do modelo 
incremental
A utilização deste modelo apresenta algumas vantagens para as empresas que 
optam por utilizá-lo. Todas as vantagens estão diretamente relacionadas com 
a estrutura de trabalho por incrementos. A seguir, listamos algumas dessas 
vantagens (IFSC, 2006):
 � Redução dos custos com manutenção do sistema: esta vantagem se ma-
nifesta uma vez que, quando acontecem problemas no desenvolvimento 
por erros técnicos ou por não entendimento dos requisitos do cliente, 
os problemas serão rapidamente identificados, dado que cada ciclo é 
executado de forma curta e completa.
3Conhecer modelo incremental
 � Melhor controle de cronograma: por estarem executando pequenos 
ciclos completos de desenvolvimento, as equipes têm maior certeza de 
que, ao chegar ao último ciclo o programa, atenderão o esperado pelo 
cliente e, assim, evitam problemas de cronograma ocasionados por 
mudanças ou correções inesperadas.
 � Maior probabilidade de atendimento dos requisitos do cliente: por estar 
realizando entregas contínuas e o cliente recebendo pequenas partes do 
produto solicitado, o cliente consegue ter uma melhor visão do produto 
que está sendo desenvolvido e, com isso, tem oportunidade de reportar 
quando os requisitos não estão sendo atendidos, desta forma, recebendo, 
ao final, um produto dentro do esperado.
Porém, como todos os processos, este modelo tem algumas desvantagens, 
dentre elas (IFSC, 2006):
 � dificuldade de gerenciamento: isso ocorre porque as fases de do ciclo 
podem estar ocorrendo de forma simultânea.
 � para que o projeto tenha sucesso, o cliente precisa estar disposto a 
prover feedbacks constantes.
 � a arquitetura do projeto precisa ser bem estruturada para que possa 
receber os incrementos quando solicitado.
 � o cliente precisa estar ciente de que é um processo incremental e que 
não estará recebendo, nas primeiras entregas, o software final. Por isso, 
pode não estar completo.
Você pode aprender mais assistindo um vídeo que ilustra 
o modelo incremental. (INFORMÁTICA, 2015) 
Veja em:
https://goo.gl/MWn9gy
Conhecer modelo incremental4
Para saber mais sobre este processo, você pode ver artigos interessantes, que estão 
disponíveis gratuitamente na Internet, utilizando o seu site de buscas preferido. Busque 
por “wiki edu ciclo de vida iterativo e incremental”. Com isso, você encontrará materiais 
bem interessantes sobre o assunto que está sendo estudado.
1. No primeiro incremento do modelo 
incremental, que tipo de solução é 
oferecido ao cliente? 
a) São oferecidos elementos 
do sistema que permitem a 
operação básica ao usuário.
b) É oferecido um sistema 
completo, com todas 
as funcionalidades.
c) São oferecidas partes do sistema 
que ainda apresentam erros.
d) É oferecido apenas um 
protótipo de telas para o 
cliente saber como o sistema 
será implementado.
e) Não é oferecido um sistema 
funcional, já que este modelo 
linear só oferece o produto 
ao final de todo o projeto.
2. O que é esperado do 
cliente ao término de cada 
incremento? 
a) Um manual de utilização 
do sistema.
b) Descarte do protótipo.
c) Uso exaustivo do sistema 
para encontrar erros.
d) Uso, avaliação e feedback 
sobre o sistema.
e) Pagamento pelo projeto.
3. No final do último incremento, o que 
é esperado na entrega? 
a) Apenas uma parte, um 
incremento ou uma 
funcionalidade básica do 
sistema que esteja em 
funcionamento e bem testado.
b) Um sistema parcialmente 
funcional.
c) Espera-se um sistema 
completo e funcional.
d) Espera-se que o cliente tenha 
as funcionalidades básicas 
do sistema funcionando 
bem e testadas, mas não 
funções complementares.
e) Espera-se um sistema que não 
atenda a nenhum dos requisitos.
4. Qual destas é uma vantagem do 
modelo incremental? 
a) Podem surgir problemas 
com a integração de cada 
entrega incremental.
b) Usuários podem solicitar 
modificações no sistema 
durante o desenvolvimento.
c) Os usuários podem ver um 
protótipo de tela antes do 
5Conhecer modelo incremental
ddsilva
Caixa de texto
desenvolvimento do sistema.
d) O sistema é entregue 
somente no final do projeto 
de forma integral.
e) O custo do projeto é 
sempre respeitado.
5. Qual destas opções é uma 
desvantagem do modelo 
incremental? 
a) O orçamento previsto do 
projeto pode ser ultrapassado.
b) O sistema é desenvolvido 
respeitando os prazos.
c) Redução de riscos de 
atraso da entrega.
d) As partes entregues 
durante os incrementos não 
oferecem integração.
e) O projeto é alinhado com as 
necessidades do cliente.
IFSC. Ciclo de Vida Iterativo e Incremental. Wiki Instituto Federal de Santa Catarina, 
São José, out. 2006. Disponível em: <https://wiki.sj.ifsc.edu.br/wiki/index.php/Ci-
clo_de_Vida_Iterativo_e_Incremental>. Acesso em: 31 ago. 2017.
INFORMÁTICA 2014 IFRS. Iterativo Incremental. YouTube, 2015. Disponível em: <https://
www.youtube.com/watch?v=A5xWN3i1aUE>. Acesso em: 15 set. 2017.
NEPOMUCENO, D. Modelos Incremental, Espiral e de Prototipação. Blog Engenharia 
de Software, Jequié, dez. 2012. Disponível em: <http://engenhariadesoftwareuesb.
blogspot.com.br/2012/12/blog-post.html/>. Acesso em: 27 ago. 2017.
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson, 2011.
Conhecer modelo incremental6
ddsilva
Caixa de texto

Outros materiais