Buscar

Prévia do material em texto

Aula 30 (Profs Diego
Carvalho e Fernando
Pedrosa)
Concursos da Área Fiscal - Curso Básico
de Tecnologia da Informação - 2023
Autor:
Fernando Pedrosa Lopes , Thiago
Rodrigues Cavalcanti, Erick
Muzart Fonseca dos Santos,
Paolla Ramos e Silva , Diego
Carvalho, Renato da Costa, Equipe
Informática e TI
29 de Maio de 2023
https://t.me/kakashi_copiador
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Índice
..............................................................................................................................................................................................1) Metodologias de Desenvolvimento - Parte 2 3
..............................................................................................................................................................................................2) Questões Comentadas - Metodologias de Desenvolvimento - Parte 2 - Multibancas 21
..............................................................................................................................................................................................3) Lista de Questões - Metodologias de Desenvolvimento - Parte 2 - Multibancas 33
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
2
41
 
Galera, essa é a continuação da aula anterior! Dessa vez, nós vamos falar sobre modelos 
evolucionários e seus subtipos, e também vamos falar sobre diversos modelos específicos que não 
se encaixam em nenhuma das categorias vistas anteriormente. Esses modelos caem menos em 
prova do que aqueles que vimos na aula anterior, mas eles também são importantes. Vem 
comigo que essa aula é tranquilaaaaaaaaça... 
 
 
 
 
Galera, todos os tópicos da aula possuem Faixas de Incidência, que indicam se o assunto cai 
muito ou pouco em prova. Diego, se cai pouco para que colocar em aula? Cair pouco não significa 
que não cairá justamente na sua prova! A ideia aqui é: se você está com pouco tempo e precisa ver 
somente aquilo que cai mais, você pode filtrar pelas incidências média, alta e altíssima; se você tem 
tempo sobrando e quer ver tudo, vejam também as incidências baixas e baixíssimas. Fechado? 
 
 
 
 
 
Além disso, essas faixas não são por banca – é baseado tanto na quantidade de vezes que caiu em 
prova independentemente da banca e também em minhas avaliações sobre cada assunto... 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
3
41
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
4
41
 
Antes de começarmos, eu acho oportuno dizer que a imensa maioria dos autores consideram o 
modelo evolucionário/evolutivo como um tipo de modelo iterativo conforme mostra a imagem 
acima! Um dos nossos autores consagrados, Roger Pressman afirma: “os modelos evolucionários 
são iterativos, apresentando características que possibilitam desenvolver versões cada vez mais 
completas do software”. Agora é hora de ver isso melhor... 
 
Ele também afirma que softwares, assim como outros sistemas complexos, evoluem ao longo do 
tempo. Conforme o desenvolvimento do projeto avança, as necessidades de negócio e de produto 
mudam, tornando inadequado seguir um planejamento em linha reta de um produto final. Prazos 
apertados tornam impossível completar um produto de software abrangente, porém uma versão 
limitada tem de ser introduzida para aliviar e/ou atender às pressões comerciais ou da concorrência. 
 
Em determinadas situações, faz-se necessário um modelo de processo que tenha sido projetado 
especificamente para desenvolver um produto que evolua ao longo do tempo e os modelos 
evolucionários possibilitam desenvolver versões cada vez mais completas de software. Eu já sei que 
você está com uma dúvida na ponta da língua: professor, qual é a diferença entre o modelo 
incremental e o modelo evolucionário? Pois é... 
 
Na última edição do livro do Ian Sommerville, ele simplesmente desapareceu com o termo modelo 
evolucionário e o considerou como sinônimo de modelo incremental – como se não houvesse 
nenhuma diferença entre eles! Já Roger Pressman trata ambos quase como idênticos, a não ser por 
uma diferença bastante sutil: de acordo com o autor, o modelo incremental sempre apresenta 
uma funcionalidade operacional ou um produto de trabalho a cada iteração. 
 
Já o modelo evolucionário, durante as primeiras iterações, pode gerar versões compostas apenas 
por modelos em papel, documentação ou produtos não operacionais para o usuário. É possível, por 
exemplo, ter uma iteração utilizada só para estudar melhor o produto. Isso é uma funcionalidade 
operacional para o cliente? Não! É importante mencionar que muitas questões ignoram essa 
diferença e simplesmente tratam o modelo evolucionário como modelo incremental! 
 
Bem, pessoal... as implementações mais famosas do modelo evolucionário são: prototipagem e 
espiral! Vamos estudá-las um pouco melhor :) 
 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
5
41
Frequentemente, o cliente define uma série de objetivos gerais para o software, mas não identifica 
detalhadamente os requisitos para funções e recursos. Em outros casos, o desenvolvedor encontra-
se inseguro quanto à eficiência de um algoritmo, quanto à adaptabilidade de um sistema 
operacional ou quanto à forma em que deva ocorrer a interação homem/máquina. Em situações 
assim e em muitas outras, o paradigma de prototipação pode ser a melhor abordagem. 
 
Embora a prototipação possa ser utilizada como um modelo de processo isolado (stand-alone 
process), ela é mais comumente utilizada como uma técnica passível de ser implementada no 
contexto de outros processos. Independentemente da forma como é aplicado, quando os 
requisitos estão obscuros, o paradigma da prototipação auxilia os interessados a compreender 
melhor o que está para ser construído . 
 
A prototipagem é utilizada quando não se conhecem bem os requisitos. Trata-se de uma forma de 
entendê-los melhor para posteriormente desenvolver o software. Ela se configura como um 
processo iterativo, interativo e rápido de desenvolvimento e o protótipo serve como um mecanismo 
de identificação dos requisitos do software, que servirão para uma futura especificação ou serão 
refinados e entregues ao cliente. 
 
Um protótipo é uma versão inicial de um sistema de software utilizado para demonstrar 
conceitos, experimentar opções de projeto e, geralmente, conhecer mais sobre o problema e 
suas possíveis soluções. O desenvolvimento rápido e iterativo do protótipo é essencial para que os 
custos sejam controlados e os stakeholders do sistema possam experimentá-lo no início do 
processo de software. 
 
Um protótipo de software pode ser usado em um processo de desenvolvimento de software para 
ajudar a antecipar as mudanças que podem ser requisitadas: 
 
a) No processo de engenharia de requisitos, um protótipo pode ajudar na elicitação e validaçãode requisitos do sistema. 
b) Processo de projeto do sistema, um protótipo pode ser usado para estudar soluções 
específicas de software e apoiar o projeto de interface com o usuário. 
 
Protótipos do sistema permitem aos usuários ver quão bem o sistema dá suporte a seu 
trabalho. Eles podem obter novas ideias para requisitos e encontrar pontos fortes e fracos do 
software; podem, então, propor novos requisitos do sistema. Além disso, o desenvolvimento do 
protótipo pode revelar erros e omissões nos requisitos propostos. A função descrita em uma 
especificação pode parecer útil e bem definida. 
 
No entanto, quando essa função é combinada com outras, os usuários muitas vezes percebem que 
sua visão inicial foi incorreta ou incompleta. A especificação do sistema pode então ser 
modificada para refletir o entendimento dos requisitos alterados. Enquanto o sistema está em 
projeto, um protótipo do sistema pode ser usado para a realização de experimentos de projeto 
visando à verificação da viabilidade da proposta. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
6
41
 
Por exemplo: um projeto de banco de dados pode ser prototipado e testado para verificar se suporta 
de modo eficiente o acesso aos dados para as consultas mais comuns dos usuários. Prototipação 
também é uma parte essencial do processo de projeto da interface de usuário. Devido à natureza 
dinâmica de tais interfaces, descrições textuais e diagramas não são bons o suficiente para 
expressar seus requisitos. 
 
Dessa forma, a prototipação rápida com envolvimento do usuário final é a única maneira 
sensata de desenvolver interfaces gráficas de usuário para sistemas de software. Um modelo de 
processo para desenvolvimento de protótipos é apresentado na imagem seguinte. Os objetivos da 
prototipação devem ser explicitados desde o início do processo (Ex: prototipar a interface de 
usuário, prototipar um sistema para validação dos requisitos funcionais do sistema, etc). 
 
 
 
O mesmo protótipo não pode cumprir todos os objetivos. Se os objetivos não são declarados, a 
gerência ou os usuários finais podem não entender a função do protótipo. Consequentemente, eles 
podem não obter os benefícios que esperavam do desenvolvimento do protótipo. O próximo 
estágio do processo é decidir o que colocar e, talvez mais importante ainda, o que deixar de fora do 
sistema de protótipo. 
 
Para reduzir os custos de prototipação e acelerar o cronograma de entrega, pode-se deixar alguma 
funcionalidade fora do protótipo. Você pode optar por relaxar os requisitos não funcionais, como 
tempo de resposta e utilização de memória. Gerenciamento e tratamento de erros podem ser 
ignorados, a menos que o objetivo do protótipo seja estabelecer uma interface de usuário. Padrões 
de confiabilidade e qualidade de programa podem ser reduzidos. 
 
O estágio final do processo é a avaliação do protótipo. Durante esse estágio, provisões devem ser 
feitas para o treinamento do usuário, e os objetivos do protótipo devem ser usados para derivar 
um plano de avaliação. Os usuários necessitam de um tempo para se sentir confortáveis com um 
sistema novo e para se situarem em um padrão normal de uso. Uma vez que estejam usando o 
sistema normalmente, eles descobrem erros e omissões de requisitos. 
 
Já Pressman entende a prototipação conforme apresenta a imagem ao lado: o paradigma de 
prototipação começa com a comunicação. Faz-se uma reunião com os envolvidos para definir os 
objetivos gerais do software, identificar quais requisitos já são conhecidos e esquematizar quais 
áreas necessitam, obrigatoriamente, de uma definição mais ampla. Uma iteração de prototipação 
é planejada rapidamente e ocorre a modelagem (na forma de um “projeto rápido”). 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
7
41
 
Um projeto rápido se concentra em uma representação daqueles aspectos do software que serão 
visíveis aos usuários finais (Por exemplo: o layout da interface com o usuário ou os formatos de 
exibição na tela). O projeto rápido leva à construção de um protótipo, que é empregado e avaliado 
pelos envolvidos, que fornecerão um retorno (também chamado de feedback), que servirá para 
aprimorar os requisitos. 
 
A iteração ocorre conforme se ajusta o protótipo às necessidades de 
vários interessados e, ao mesmo tempo, possibilita a melhor 
compreensão das necessidades que devem ser atendidas. Na sua forma 
ideal, o protótipo atua como um mecanismo para identificar os requisitos 
do software. Caso seja necessário desenvolver um protótipo operacional, 
pode-se utilizar partes de programas existentes ou aplicar ferramentas 
que possibilitem gerar rapidamente tais programas operacionais. 
 
O que fazer com o protótipo quando este já serviu ao propósito descrito anteriormente? Na maioria dos 
projetos, o primeiro sistema dificilmente é utilizável. Pode estar muito lento, muito grande, muito 
estranho em sua utilização ou as três coisas juntas. Não há alternativa, a não ser começar de novo 
e desenvolver uma versão redesenhada na qual esses problemas são resolvidos. O protótipo pode 
servir, portanto, como “o primeiro sistema” – que pode ser jogado fora! 
 
No entanto, essa pode ser uma visão idealizada. Embora alguns protótipos sejam construídos como 
“descartáveis”, outros são evolucionários, no sentido de que evoluem lentamente até se 
transformar no sistema real. Tanto os interessados como os engenheiros de software gostam do 
paradigma da prototipação. Os usuários podem ter uma ideia prévia do sistema final, ao passo que 
os desenvolvedores passam a desenvolver algo imediatamente. 
 
Em outras palavras, protótipos são inviáveis de serem utilizados na maioria dos casos, por ser muito 
lento e/ou muito grande e/ou muito difícil de utilizar. Em geral, os protótipos são descartados assim 
que os objetivos de levantamento de requisitos são alcançados. No entanto, alguns preferem 
refiná-los iterativamente até evoluir ao sistema final requisitado pelo usuário. O que vocês precisam 
guardar de tudo isso? 
 
Em suma, o que vocês precisam saber é que o modelo de prototipação/prototipagem se baseia na 
ideia de construção de um protótipo que auxiliem a construção do produto de duas maneiras: (1) 
ou para levantar os requisitos do sistema junto aos usuários e depois ser efetivamente 
descartado; ou (2) para ser refinado, refinado e refinado até chegar ao sistema final desejado 
pelos usuários. 
 
O objetivo do processo de desenvolvimento exploratório é trabalhar com o cliente para 
explorar os requisitos e entregar um sistema final. O desenvolvimento começa com as 
partes do sistema compreendidas. O sistema evolui por meio da adição de novas 
características propostas pelo cliente. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
8
41
O objetivo do processo de prototipação throwaway é compreender os requisitos do cliente 
e, a partir disso, desenvolver melhor definição de requisitos para o sistema. O protótipo se 
concentra na experimentação dos requisitos mal compreendidos do cliente, mas é 
posteriormente descartado. 
 
 
Quando uma questão não especificao tipo de prototipação, geralmente se trata de Prototipação 
Throw-away/Descartável e, não, Evolucionária/Exploratória. Ian Sommerville declara: “O uso o 
termo prototipação no sentido de processo iterativo de desenvolvimento de um sistema experimental 
que não é destinado à disponibilização ao cliente”. 
 
O Modelo em Espiral foi proposto 
originalmente, em 1988, por Boehm. Sua 
ideia era representar um processo de 
software orientado a riscos. Em vez de 
representar o processo como uma 
sequência de atividades com algum 
retorno entre uma atividade e outra, o 
processo é representado como uma 
espiral. Ele combina atividades de 
desenvolvimento com aspectos gerenciais 
(Planejamento, Tomada de Decisão, 
Análise de Riscos, etc). 
 
O modelo em espiral é também conhecido como prototipagem-em-etapas, por combinar, em 
geral, o modelo em cascata com a prototipação. Cada loop representa uma fase do processo de 
software. Dessa forma, o loop mais interno pode estar relacionado à viabilidade do sistema; o 
próximo loop, à definição de requisitos; o próximo, ao projeto de sistema e assim por diante. Divide-
se em quatro setores: 
 
Definem-se os objetivos da do projeto (aumentar performance, consertar 
funcionalidade, melhorar qualidade), identificam-se alternativas (reúso de 
componentes, comprar pronto) e identificam-se restrições impostas (custo, 
cronograma, entre outros). 
Avaliam-se as alternativas identificadas em relação aos objetivos e 
restrições. Frequentemente, esse processo identifica áreas de incerteza 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
9
41
(custos excessivos, falta de recursos) e resolve ou reduz os riscos 
identificados - um protótipo pode ser construído. 
Após a redução dos riscos, um modelo de desenvolvimento para o sistema é 
selecionado (Exemplo: prototipação evolucionária, modelos formais, 
modelo em cascata, modelos baseados em componentes). O software é 
desenvolvido e, posteriormente, testado. 
Revisa-se o projeto e decide-se sobre o prosseguimento ao próximo loop da 
espiral. Se a decisão for pelo prosseguimento, são elaborados planos para a 
próxima fase do projeto, e terminamos um loop. 
 
 
 
 
 
De acordo com Pressman, cada espiral é dividida em cinco setores1: 
 
É a comunicação em si 
Estimativa de custos, cronograma e análise de riscos 
Análise e design 
Codificação e teste 
Entrega e feedback 
 
Vocês entenderam isso? O Pressman explica isso por meio da imagem acima! Percebam que o loop 
mais interno (1) pode tratar do projeto de desenvolvimento de conceito, o segundo loop (2) pode 
tratar do projeto de desenvolvimento de um produto, o terceiro loop (3) pode tratar do projeto de 
melhoria e o último (4), mais claro, pode tratar do projeto de manutenção. Pode tratar de todo ciclo 
de vida... 
 
 
1 Na edição anterior, eram seis etapas no Modelo em Espiral (Planejamento, Análise de Riscos, Engenharia, Construção e Liberação, Avaliação do 
Cliente e Comunicação com Cliente). Variações do modelo consideram entre três e seis setores da espiral. Infelizmente, cada autor pega a versão 
original e adapta, criando sua versão, portanto vocês verão muitos nomes diferentes para cada setor. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
10
41
Cada loop é uma fase e a fase é escolhida de acordo com as necessidades do negócio! Já os 
setores do processo são fixos para todos os loops. No entanto, Boehm utiliza uma divisão de setores 
diferente do Pressman. No caso de dúvida na hora da prova, considerem a versão original do 
Modelo de Boehm. Além disso, ao final de cada loop, há uma tomada de decisão a respeito do 
projeto. 
 
Vocês perceberam, pela imagem exibida anteriormente, que existem protótipos que são utilizados 
para verificar a viabilidade do projeto. Ao final de cada loop na espiral, deve-se decidir se o 
projeto continuará ou se será interrompido. Pessoal, por que esse modelo se destaca em relação 
aos outros modelos? Porque ele enfatiza bastante um aspecto que o diferencia dos demais: Análise 
de Riscos. 
 
Este é um modelo complexo que precisa ser gerenciado por pessoas que tenham grande 
experiência na avaliação de riscos. Geralmente, o modelo é utilizado em sistemas críticos e grandes! 
Por fim, vamos ver um tema mais polêmico: ele é evolucionário ou é incremental? Pressman diz que 
é iterativo, mas, não, incremental – sendo, então, evolucionário. Logo, é nele em que vamos nos 
basear! 
 
O conceito essencial do modelo é minimizar os riscos pelo uso repetido de protótipos e outros 
meios. Ao contrário de outros modelos, em cada fase a análise de risco é realizada. O modelo 
funciona através da construção de versões progressivamente mais completas do software, 
iniciando no centro da espiral para o exterior. A cada volta, o cliente avalia o trabalho e são feitas 
sugestões. 
 
O modelo, então, se diferencia por ter uma abordagem cíclica, para aumentar incrementalmente 
o grau de definição e de implementação de um sistema enquanto diminui seu grau de risco; e por 
ter conjunto de marcos de ancoragem, para garantir o comprometimento dos interessados com 
soluções exequíveis e mutuamente satisfatórias para o sistema. Vamos ver agora suas maiores 
vantagens e desvantagens: 
 
Suporta mecanismos de redução de riscos. 
Exige analistas de risco bastante experientes. 
 
Obtêm-se versões do sistema a cada iteração. 
Exige uma equipe de desenvolvimento extremamente 
qualificada. 
Entregando produtos cada vez mais refinados e de 
melhor qualidade. 
Exige um gerenciamento de processo mais complexo. 
Reflete as práticas reais de engenharia atual. 
 
Não é recomendado resolver problemas mais simples e 
pequenos. 
Apresenta uma abordagem sistemática. 
 
 
Apresenta estimativas realistas. 
 
 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
11
41
==5617c==
Pessoal, é importante ver como esse modelo é tratado por Roger Pressman. De acordo com o autor, 
o modelo espiral é um modelo de processo de software evolucionário que acopla a natureza 
iterativa da prototipação com os aspectos sistemáticos e controlados do modelo cascata. Fornece 
potencial para o rápido desenvolvimento de versões cada vez mais completas do software. 
Usando-se o modelo espiral, o software será desenvolvido em uma série de versões evolucionárias. 
 
Nas primeiras iterações, a versão pode 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. Assim que esse processo evolucionário começa, a equipe de software 
realiza atividades indicadas por um circuito em torno da espiral no sentido horário, começando pelo 
seu centro. Os riscos são considerados à medida que cada revolução é realizada. 
 
Diferente de outros modelos de processo, que terminam quando o software é entregue, o modelo 
espiral pode ser adaptado para ser aplicado ao longo da vida do software. Em sua essência, a espiral 
permanece em operação até que o software seja retirado. Trata-se de uma abordagem realista para 
o desenvolvimento em larga escala. Pelo fatode o software evoluir à medida que o processo 
avança, desenvolvedor e cliente compreendem e reagem melhor aos riscos em cada evolução. 
 
Esse modelo usa a prototipação como mecanismo de redução de riscos e torna possível a 
aplicação da prototipação em qualquer estágio do processo evolutivo do produto. Mantém a 
abordagem em etapas sugerida pelo ciclo de vida clássico, mas a incorpora em uma metodologia 
iterativa que reflete mais o mundo real. O modelo espiral requer consideração direta dos riscos 
técnicos em todos os estágios e é capaz de reduzir riscos antes de se tornarem problemáticos. 
 
 
Agora vamos falar sobre alguns modelos específicos que caem bem menos que os anteriores! 
Professor, por que esse nome? Bem, é só para agrupar modelos que não se encaixam diretamente 
em outros grupos. Comecemos pelos Métodos Formais, termo usado para indicar atividades que 
contem com representações matemáticas de software, especificação formal, prova de 
especificação, desenvolvimento transformacional, entre outros. 
 
Esse modelo é utilizado em ambientes extremamente complexos com requisitos rigorosos. São 
bastante lentos e dispendiosos, além de exigirem um treinamento intensivo. Em geral, são 
utilizados para o desenvolvimento de sistemas que necessitam de grande robustez e confiabilidade 
diante da possibilidade de perda de vidas ou sério prejuízo, caso haja falhas. Os chamados métodos 
formais não são amplamente usados no desenvolvimento de software industrial. 
 
A maioria das empresas de desenvolvimento de software não considera adequados com relação 
aos seus custos. Por outro lado, a especificação formal é uma excelente maneira para descobrir 
erros de especificação e apresentar a especificação do sistema de modo não ambíguo. As poucas 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
12
41
organizações que têm feito investimentos em métodos formais têm constatado menos erros no 
software entregue aos clientes e tudo isso sem aumento de custos. 
 
Os métodos formais podem ser adequados em termos de custo caso seu uso seja limitado a 
partes do núcleo do sistema e caso as empresas desejem fazer alto investimento inicial nessa 
tecnologia. Professor, pode dar um exemplo de método formal? Sim! O Método Cleanroom, que trata 
o desenvolvimento semelhante a uma sala limpa de cirurgia. Vamos ver mais alguns detalhes 
importante... 
 
Métodos Formais são métodos utilizados para elaboração de sistemas computacionais dando 
prioridade a sua coesão, isto porque estes métodos são desenvolvidos a partir de princípios 
matemáticos que garantem a sua exatidão na capacidade de expressão das ideias vinculadas ao 
projeto de software. Estes métodos foram desenvolvidos para auxiliar todas as etapas de 
desenvolvimento de software2. Vejamos as etapas: 
 
Busca formalizar os requisitos descobertos utilizando algum método formal, criando 
uma modelagem com o uso de elementos. 
 
Busca conceber o projeto de software, ou seja, nesta fase é pensado na arquitetura 
do sistema com seus diversos componentes e suas interfaces, dados e 
relacionamentos entre os mesmos. 
Busca gerar esqueleto de código, a partir do modelo refinado, que pode servir como 
base para implementação real do sistema. 
 
Busca elaborar um protótipo funcional do sistema para validar se o mesmo, atende 
as necessidades do cliente. 
 
Busca verificar se o sistema desenvolvido foi concebido atendendo a todos os 
Requisitos Funcionais e Não-Funcionais elicitados. 
 
 
O uso de métodos formais pode ser aplicado durante todas as etapas de desenvolvimento do 
software ou somente em algumas etapas ou partes do projeto de desenvolvimento. De acordo com 
Roger Pressman, os métodos formais possibilitam especificar, desenvolver e verificar um sistema 
baseado em computador através da aplicação de uma notação matemática rigorosa. Eles oferecem 
um mecanismo que elimina muitos dos problemas difíceis de ser superados com outros modelos. 
 
Ambiguidade, incompletude e inconsistência podem ser descobertas e corrigidas mais 
facilmente — não por meio de uma revisão local, mas devido à aplicação de análise matemática. 
Quando são utilizados métodos formais durante o projeto, servem como base para verificar a 
 
2 Pode ser utilizado também para modelar hardwares. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
13
41
programação e, portanto, possibilitam que se descubra e se corrijam erros que, de outra forma, 
poderiam passar despercebidos. 
 
Embora não seja uma abordagem predominante, ele oferece a promessa de software sem defeitos. 
No entanto, foram mencionados motivos para preocupação a respeito de sua aplicabilidade em um 
ambiente de negócios: (1) atualmente, o desenvolvimento de modelos formais consome muito 
tempo e dinheiro; (2) pelo fato de poucos desenvolvedores de software possuírem formação e 
experiência necessárias para aplicação dos métodos formais, é necessário treinamento extensivo. 
 
(3) É difícil usar os modelos como um meio de comunicação com clientes tecnicamente 
despreparados (não sofisticados tecnicamente). Apesar de tais preocupações, a abordagem de 
métodos formais tem conquistado adeptos entre os desenvolvedores de software que precisam 
desenvolver software com fator crítico de segurança, bem como entre desenvolvedores que 
sofreriam pesadas sanções econômicas se ocorressem erros no software. 
 
Já Ian Sommerville afirma que, por mais de 30 anos, muitos pesquisadores têm defendido o uso 
de métodos formais de desenvolvimento de software. Os métodos formais são abordagens 
baseadas em matemática para o desenvolvimento de software, em que é definido um modelo 
formal do software. É possível analisar formalmente esse modelo e usá-lo como base para uma 
especificação formal de sistema. 
 
Em princípio, é possível começar com um modelo formal de software e provar que o programa 
desenvolvido é consistente com o modelo, eliminando-se, assim, falhas de software resultantes de 
erros de programação. O ponto de partida para todos os processos formais de desenvolvimento é 
um modelo formal de sistema, que serve como uma especificação de sistema. Para criar esse 
modelo, você traduz os requisitos de usuário do sistema. Como assim, Diego? 
 
Os requisitos de usuário são expressos em linguagem natural, diagramas e tabelas – a ideia é 
representá-los em uma linguagem matemática que defina formalmente a semântica. A 
especificação formal é uma descrição inequívoca do que o sistema deve fazer (sem ambiguidades). 
Usando métodos manuais ou apoiados por ferramentas, é possível verificar se o comportamento 
de um programa é consistente com a especificação. 
 
As especificações formais não são apenas essenciais para uma verificação do projeto e 
implementação do software. Elas são a maneira mais precisa de especificação dos sistemas e, 
assim, de redução da possibilidade de mal-entendidos. Além disso, a construção de uma 
especificação formal força uma análise detalhada dos requisitos, e essa é uma maneira eficaz 
de descobrir problemas de requisitos. 
 
Em uma especificação em linguagem natural, os erros podem ser ocultados pela imprecisão da 
linguagem. Já as especificações formais, em geral, são desenvolvidas como parte de um processo 
baseado em planos, no qual o sistema é completamente especificado antes do desenvolvimento. 
Apesar dessas vantagens, os métodos formais tiveram um impacto limitado no 
desenvolvimentoprático de software, mesmo para sistemas críticos. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
14
41
 
 
Pessoal, vocês já pararam para pensar por que a disciplina de Engenharia 
de Software é denominada Engenharia de Software? Vamos contar essa 
história: esse conceito surgiu em 1968, em uma conferência 
organizada para discutir a Crise do Software. Essa crise foi o resultado 
da introdução de circuitos integrados em computadores. E isso era 
ruim, professor? Não, pelo contrário! 
 
Desde o ingresso dos circuitos integrados, tornou-se possível e viável fazer aplicações 
extremamente complexas. No entanto, o desenvolvimento de software era bastante informal e 
incipiente, criando softwares, cujo custo superava as previsões, não confiáveis, difíceis de manter 
e de desempenho insatisfatório. Naquela época, os custos de hardware estavam caindo, enquanto 
os custos de software aumentavam rapidamente. 
 
Novas técnicas e métodos eram necessários para controlar a complexidade inerente aos grandes 
sistemas de software. E por que o nome engenharia de software? Porque foi uma tentativa de 
contornar a crise ao utilizar princípios de engenharia, a fim de obter um software de maneira 
econômica e que fosse confiável, dando um tratamento mais sistemático e controlado (comum às 
engenharias) ao desenvolvimento de sistemas de software complexos. 
 
Pessoal, pensem comigo: a engenharia evolui seus métodos há centenas de anos, enquanto o 
desenvolvimento de software é bastante recente! Logo, faz sentido utilizar os conceitos 
consolidados de engenharia para melhorar seus processos de desenvolvimento de software. Não 
acham? Ok, professor! Mas o que isso tem a ver com reúso de componentes? Ora, a Engenharia é 
especializada em produzir componentes reusáveis. 
 
Engenheiros raramente fabricam um componente a partir do nada. Eles baseiam seus projetos em 
componentes exaustivamente testados em outros sistemas. Quando se fala em Modelo baseado 
em Componentes, refere-se a uma estratégia de engenharia de software na qual o processo de 
desenvolvimento é voltado à reusabilidade. E qual a vantagem disso? Isso resulta em redução de 
custos de produção e manutenção, entregas mais rápidas e aumento de qualidade. 
 
A abordagem para desenvolvimento de software Component-Based Software Engineering (CBSE) 
tem utilizado o reúso como peça principal. Essa abordagem depende de uma grande base de 
componentes reusáveis e algum framework de integração. Apesar não termos valores precisos, 
sabemos que os custos de desenvolvimento são menores que os custos de integração e de 
teste. 
 
Esses custos aumentam porque é necessário assegurar que os componentes utilizados realmente 
satisfazem às especificações e funcionam com outros componentes. Agora voltando um pouco: o 
que seria exatamente um componente? Pressman afirma que é um bloco de construção modular, 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
15
41
isto é, uma parte do sistema modular, executável, implantável, independente, padronizada e 
reutilizável que encapsula a implementação e expõe um conjunto de interfaces do sistema. 
 
 
 
Tem o objetivo de traduzir as informações coletadas durante a atividade de análise em um 
documento que define um conjunto de requisitos de software. Devem ser incluídos dois tipos 
de requisitos nesse documento: os Requisitos de Usuário e Requisitos de Sistema. 
 
Nesta fase, é feita uma busca pelos componentes para implementar essa especificação. 
Geralmente, não existe uma correspondência exata entre o componente encontrado e o 
procurado. Muitas vezes, os componentes que podem ser usados fornecem apenas parte da 
funcionalidade necessária. 
Os requisitos são analisados usando as informações sobre os componentes encontrados, que 
são modificados para refletir os componentes disponíveis. Quando as modificações são 
impossíveis, a atividade de análise de componentes pode ser novamente realizada para 
procurar alternativas. 
O framework do sistema é projetado ou um framework existente é reutilizado. Os projetistas 
levam em consideração os componentes reusados. Pode ser necessário projetar algum 
software novo caso os componentes reusáveis não estejam disponíveis para aquisição para o 
sistema. 
Software que não pode ser adquirido externamente é desenvolvido e os componentes e os 
sistemas COTS são integrados para criar os novos sistemas. A integração de sistema, neste 
modelo, pode ser parte do processo de desenvolvimento, em vez de ser uma atividade 
separada. 
Processo de verificação de se um sistema atende às necessidades e expectativas do cliente. 
Professor, o que são Sistemas COTS? Esse é o acrônimo de Commercial Off-The-Shelf, que 
é um conjunto de soluções pré-fabricadas e disponíveis no mercado, podendo ser compradas 
ou licenciadas, i.e., uma grande biblioteca de componentes prontos. 
 
Os Componentes COTS são desenvolvidos por vendedores que os oferecem como produtos, 
disponibilizam a funcionalidade almejada juntamente com as interfaces bem definidas, sendo que 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
16
41
essas interfaces permitem que o componente seja integrado ao software a ser desenvolvido. O 
modelo de desenvolvimento baseado em componentes incorpora muitas das características do 
modelo espiral. 
 
Ele é evolucionário por natureza, demandando uma abordagem iterativa para a criação de 
software. O modelo de desenvolvimento baseado em componentes desenvolve aplicações a partir 
de componentes de software pré-empacotados e conduz ao reúso do software; sendo que essa 
reusabilidade proporciona uma série de benefícios mensuráveis aos engenheiros de software. 
O modelo evolucionário assume que recursos adicionais podem ser adicionados, se necessários. 
 
No entanto, componentes de software de prateleira (COTS) não podem ser atualizados por uma 
equipe de desenvolvimento particular. A ausência de código-fonte barra a equipe de 
desenvolvimento de ajustar estes componentes de software para suas necessidades. Então, apesar 
de conter algumas características do modelo em cascata e do modelo evolucionário, ele não pode 
ser considerado como parte desses modelos. 
 
 
A maioria dos processos de desenvolvimento de software vem considerando sistemas com 
unidades cada vez menores de desenvolvimento, isto é, vem modularizando cada vez mais os 
sistemas. A Engenharia de Software provê as bases para o desenvolvimento de software, já as 
linguagens de programação permitem a abstração de unidades e composição destas de 
inúmeras formas possíveis. 
 
Sabe-se que no desenvolvimento de software existem propriedades que não se enquadram em 
componentes da decomposição funcional, tais como: tratamento de exceções, restrições de tempo 
real, distribuição e controle de concorrência. Vocês compreendem isso? A grande maioria das 
unidades de programação podem ser decompostas em uma função, porém existem unidades 
que não podem. 
 
Qual o problema, professor? Bem, essas unidades normalmente ficam espalhadas em diversos 
componentes do sistema afetando a performance e a semântica da aplicação.Vamos traduzir? 
Quando nós modularizamos um sistema, torna-se mais fácil e intuitivo entender o 
funcionamento de uma aplicação; essas unidades que não podem ser decompostas em funções 
atrapalham esse entendimento. 
 
Imaginem que temos um método que recebe um valor, realiza um processamento e devolve outro 
valor. Uma função dentro desse método possui um tratamento de exceção! Galera, tratamento 
de exceção não faz parte da funcionalidade principal, no entanto – mesmo assim – ela fica presente 
no código (atrapalhando a modularização e o acoplamento). De fato, essas unidades podem ser 
visualizadas e analisadas relativamente em separado. 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
17
41
No entanto, sua implementação utilizando linguagens orientadas a objeto ou estruturadas torna-
se confusa e seu código encontra-se espalhado através do código da aplicação, dificultando a 
separação da funcionalidade básica do sistema dessas propriedades. A Programação Orientada 
a Aspectos (POA) é uma abordagem que permite a separação dessas propriedades ortogonais3 
dos componentes funcionais de uma forma natural e concisa. 
 
Ela se utiliza de mecanismos de abstração e de composição para a produção de código executável. 
Vocês podem me perguntar: Professor, por que não podemos utilizar programação orientada a 
objetos ou programação estruturada? Atualmente, conhecem-se vários problemas de programação 
em que as técnicas de orientação a objetos ou de programação estruturada não são suficientes para 
separar claramente todas as decisões de projeto que o programa deve implementar. 
 
Isto se deve ao fato de que as abordagens mais utilizadas se concentram em encontrar e 
compor unidades funcionais da decomposição do sistema. Já outras questões importantes não 
são bem localizadas no projeto funcional. Exemplos disto podem ser propriedades que envolvem 
várias unidades funcionais, tais como: sincronização, restrições de tempo, concorrência, 
distribuição de objetos, persistência, etc. 
 
Em suma, POA é um paradigma de desenvolvimento de software que separa responsabilidades, 
requisitos e interesses de um sistema. A modularização dos aspectos produz uma arquitetura fácil 
de projetar, implementar e manter. Muitos acham que esse paradigma veio para substituir a 
Programação Orientada a Objetos (POO). Está certo isso? Claro que não! POA veio para 
complementar a POO (visto que utilizá-la isoladamente não traz benefícios para o projeto). 
 
Para tal, ela mantém o foco na separação de interesses (Separation of Concerns), que são 
requisitos específicos que devem ser atendidos para satisfazer o objetivo de um sistema, mas 
que não pertencem ao domínio do negócio. Há dois tipos: (1) Interesses Principais (Core 
Concerns): capturam as funcionalidades centrais de um módulo; (2) Interesses Ortogonais 
(Crosscutting Concerns): capturam funcionalidades periféricas. 
 
Por que separar interesses? Porque, dessa forma, gera-se código de melhor qualidade; gera-se 
maior modularidade; facilita-se atribuição de responsabilidade entre módulos distintos; promove-
se a reusabilidade de código; facilita-se a evolução de software; viabiliza-se a análise do problema 
dentro de domínios específicos; entre outras tantas vantagens. Ok, professor... mas o que são 
exatamente aspectos? 
 
Aspectos são propriedades de um sistema envolvendo diversos componentes funcionais que não 
podem ser expressos usando notações e linguagens atuais de uma maneira precisa (Ex: 
sincronização, persistência, interação entre componentes, etc). Os interesses são carregados em 
 
3 Quando duas propriedades sendo programadas devem ser compostas de maneira diferente e ainda coordenarem-se é dito que elas são ortogonais 
entre si. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
18
41
um módulo chamado aspecto. Professor, um aspecto é um componente? Não, componentes podem 
ser encapsulados em um procedimento generalizado (objeto, método, procedimento, etc). 
 
Aspectos, em geral, não são unidades de decomposição funcional do sistema, mas propriedades 
que envolvem diversas unidades de um sistema, afetando a semântica dos componentes funcionais 
sistematicamente. Por exemplo: controle de concorrência em operações em uma mesma conta 
bancária, registro das transações de uma determinada conta, política de segurança de acesso aos 
usuários de um sistema, restrições de tempo real associadas à entrega de mensagens. 
 
Dada a definição de componentes e aspectos, é possível colocar o objetivo da programação 
orientada a aspectos: oferecer suporte para o programador na tarefa de separar claramente os 
componentes dos aspectos, os componentes entre si e os aspectos entre si, utilizando-se de 
mecanismos que permitam a abstração e composição destas, produzindo o sistema desejado4. E o 
que Roger Pressman tem a dizer sobre esse paradigma? Vejamos... 
 
Independentemente do processo de software escolhido, os desenvolvedores de software 
complexos, invariavelmente, implementam um conjunto de recursos, funções e conteúdo 
localizados. Essas características de software localizadas são modeladas como componentes (por 
exemplo, classes orientadas a objetos) e, em seguida, construídas dentro do contexto da 
arquitetura do sistema. 
 
À medida que os modernos sistemas baseados em computadores se tornam mais sofisticados, 
certas restrições – propriedades exigidas pelo cliente ou áreas de interesse técnico — se estendem 
por toda a arquitetura. Algumas restrições são propriedades de alto nível de um sistema (Ex: 
segurança, tolerância a falhas). Outras afetam funções (Ex: a aplicação de regras de negócio), sendo 
que outras são sistêmicas (Ex: sincronização de tarefas ou gerenciamento de memória). 
 
De acordo com o autor, o modelo orientado a aspectos é um paradigma de engenharia de software 
relativamente novo que oferece uma abordagem metodológica e de processos para definir, 
especificar, projetar e construir aspectos. Já Ian Sommerville nos oferece uma visão mais detalhada 
– ele nos introduz o assunto da seguinte maneira: na maioria dos sistemas de grande porte, os 
relacionamentos entre requisitos e componentes de programa são complexos. 
 
Um único requisito pode ser implementado por uma série de componentes, e cada componente 
pode incluir elementos de vários requisitos. Na prática, isso significa que mudar requisitos pode 
envolver o entendimento e a alteração de vários componentes. Como alternativa, um componente 
pode prover alguma funcionalidade central, mas também incluir o código que implementa vários 
requisitos de sistema. 
 
Mesmo quando parece haver reúso significativo em potencial, pode ficar caro reusar tais 
componentes. O reúso pode envolver sua alteração para remover um código extra que não esteja 
 
4 AspectJ é a mais famosa linguagem de programação orientada a aspectos. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
19
41
associado com a funcionalidade central do componente. O modelo orientado a aspectos é uma 
abordagem para desenvolvimento de software que se propõe a resolver esse problema e tornar os 
programasmais fáceis de manter e reusar. 
 
Ela é baseada em abstrações chamadas aspectos, que implementam funcionalidade de sistema que 
pode ser requerida em vários lugares diferentes em um programa. Eles encapsulam a 
funcionalidade que cruza e coexiste com outra funcionalidade que existe no sistema e são usados 
junto com outras abstrações, como objetos e métodos. O principal benefício de uma abordagem 
orientada a aspectos é que ela suporta a separação de interesses. 
 
Separar interesses em elementos diferentes em vez de incluir interesses diferentes na mesma 
abstração lógica é uma boa prática de engenharia de software. Ao apresentar interesses 
transversais como aspectos, esses interesses podem ser entendidos, reusados e modificados de 
forma independente, sem a preocupação de onde o código é usado. Um exemplo clássico é a 
autenticação de usuário... 
 
A autenticação de usuário é uma funcionalidade que pode ser representada como um aspecto que 
requisita um nome de usuário e uma senha. Isso pode ser automaticamente embutido no programa 
sempre que uma autenticação for requerida. Digamos que você tenha um requisito de que a 
autenticação de usuário seja requerida antes de qualquer alteração dos detalhes pessoais ser feita 
no banco de dados – isso pode ser um aspecto. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
20
41
 
1. (CESPE / Polícia Federal – 2021) Embora não seja dirigido a riscos, o modelo de 
desenvolvimento de sistemas espiral de Boehm inclui, em seu framework, a etapa de análise e 
validação dos requisitos. 
 
Comentários: 
 
O Modelo em Espiral foi proposto originalmente, em 1988, por Boehm. Sua ideia era representar 
um processo de software orientado a riscos. Em vez de representar o processo como uma sequência 
de atividades com algum retorno entre uma atividade e outra, o processo é representado como uma 
espiral. Ele combina atividades de desenvolvimento com aspectos gerenciais (Planejamento, 
Tomada de Decisão, Análise de Riscos, etc). 
 
Gabarito: Errado 
 
2. (VUNESP / TJM-SP – 2021) Algumas atividades que fazem parte do modelo espiral de 
desenvolvimento de software são: 
 
Construção – Implantação – Comunicação – 
Planejamento – Modelagem 
 
A ordem correta com que tais atividades são executadas, considerando o modelo espiral, é: 
 
a) Comunicação, Planejamento, Modelagem, Construção e Implantação. 
b) Construção, Implantação, Comunicação, Modelagem e Planejamento. 
c) Modelagem, Planejamento, Construção, Implantação e Comunicação. 
d) Planejamento, Construção, Implantação, Comunicação e Modelagem. 
e) Planejamento, Modelagem, Comunicação, Construção e Implantação. 
 
Comentários: 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
21
41
 
 
As atividades do modelo espiral são: Comunicação, Planejamento, Modelagem, Construção e 
Implantação (ou Emprego). 
 
Gabarito: Letra A 
 
3. (CESPE / SERPRO – 2021) No modelo formal, as etapas do desenvolvimento do software 
incluem especificação formal para definição de requisitos, refinamento para concepção de 
projeto e prova para a verificação. 
 
Comentários: 
 
As etapas são especificação formal para definição de requisitos, refinamento para concepção de 
projeto, síntese para implementação, prototipagem para a validação e prova para a verificação. 
Logo, todas essas listadas no enunciado estão contempladas. 
 
Gabarito: Correto 
 
4. (COSEAC / UFF – 2019) Nos projetos, quando o time quebra o produto em vários pedaços 
menores, trabalhando e entregando uma parte de cada vez, sem se preocupar com agilidade, e 
somente quando esta parte estiver pronta o time parte para outro pedaço, iniciando uma nova 
fase, constata-se um ciclo de vida: 
 
a) preditivo. 
b) iterativo e incremental. 
c) adaptativo. 
d) RUP. 
e) cascata. 
 
Comentários: 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
22
41
Quebra o produto em vários pedaços menores? Entrega uma parte de cada vez? São todas 
características do modelo iterativo e incremental. Somente quando essa parte estiver pronta o time 
parte para outro pedaço? Sim, a equipe que está trabalhando no subsistema funcional somente 
partirá para o outro subsistema funcional quando terminá-lo. 
 
Gabarito: Letra B 
 
5. (IF-PA / IF-PA – 2019) Tem-se como boas práticas em projetos de software a definição dos seus 
requisitos funcionais e suas funcionalidades. No decorrer dessa definição, pode surgir a 
necessidade de fornecer, de forma prioritária, um conjunto de funcionalidades iniciais básicas e, 
após esse fornecimento, podemos melhorar e expandir as funcionalidades em versões de 
software posteriores, até atingir todos os requisitos definidos. Nesse caso, estamos aplicando 
um modelo de processo de software denominado: 
 
a) Métodos Formais. 
b) Business Process Management (BPM). 
c) Capability Maturity Model Integration (CMMI) 
d) Incremental. 
e) Entidade e Relacionamento. 
 
Comentários: 
 
“Fornecer, de forma prioritária, um conjunto de funcionalidades iniciais básicas e, após esse 
fornecimento, podemos melhorar e expandir as funcionalidades em versões de software posteriores, 
até atingir todos os requisitos definidos” – todas são características do modelo incremental. 
 
Gabarito: Letra D 
 
6. (FADESP / IF-PA – 2019) O princípio fundamental é que, a cada ciclo, uma versão operacional 
do sistema será produzida e entregue para uso ou avaliação detalhada do cliente. Os requisitos 
têm de ser levantados e é preciso constatar que o sistema é modular. Esse é o modelo: 
 
a) Incremental. 
b) Espiral. 
c) Cascata. 
d) RAD. 
e) XP. 
 
Comentários: 
 
Uma versão operacional a cada ciclo para avaliação do cliente em um sistema modular é uma 
característica do modelo incremental. 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
23
41
Gabarito: Letra A 
 
7. (CETREDE / Prefeitura de São Gonçalo do Amarante - CE – 2019) Sobre Engenharia de 
Software, marque a opção INCORRETA. 
 
a) O modelo Cascata tem como característica intercalar as atividades de especificação, 
desenvolvimento e validação. Esta abordagem, permite a entrega de um produto ao fim de um 
longo ciclo de desenvolvimento e com baixa perspectiva de falha funcional. 
 
b) A engenharia de software baseada em componentes baseia-se na existência de um número 
significativo de componentes reusáveis, enfocando o desenvolvimento na integração destes 
componentes. 
 
c) No desenvolvimento exploratório, o objetivo do processo é trabalhar com o cliente para 
explorar os requisitos e entregar o sistema final. 
 
d) No processo de engenharia de requisitos, a etapa de elicitação e análise dos requisitos é 
responsável pela derivação de requisitos através da observação de sistemas existentes, 
discussões com usuários potenciais,análise de tarefas etc. 
 
e) Especificação, projeto e implementação, validação e evolução do software são etapas 
comuns em qualquer processo de software. 
 
Comentários: 
 
Todos os itens estão corretos, exceto o primeiro. A questão trata do modelo evolucionário ou 
incremental (depende da versão do livro) e, não, do modelo em cascata. 
 
Gabarito: Letra A 
 
8. (CESPE / SLU-DF – 2019) No modelo de desenvolvimento de software em cascata, a 
abordagem é orientada ao risco e as tarefas são organizadas nos seguintes ciclos: determinar 
objetivos, identificar e resolver riscos, desenvolver e testar, e planejar a próxima iteração. 
 
Comentários: 
 
Opa... as fases e a característica de ser orientado a risco tratam do modelo em espiral e, não, do 
modelo em cascata. 
 
Gabarito: Errado 
 
9. (COSEAC / UFF – 2019) Dos modelos de desenvolvimento de software, aquele que prioriza a 
análise dos riscos envolvidos no desenvolvimento de cada parte do software é o modelo: 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
24
41
 
a) em cascata. 
b) de prototipação. 
c) incremental. 
d) espiral. 
e) baseado em componentes. 
 
Comentários: 
 
O modelo que prioriza a análise de riscos envolvidos no desenvolvimento é o modelo em espiral. 
 
Gabarito: Letra D 
 
10. (CESPE / MPC-PA – 2019) Os modelos espiral e RAD (Rapid Application Development) são 
classificados, respectivamente, como modelos de processo de desenvolvimento 
de software dos tipos 
 
a) incremental e sequencial. 
b) evolutivo e incremental. 
c) evolutivo e sequencial. 
d) incremental e evolutivo. 
e) evolutivo e evolutivo. 
 
Comentários: 
 
Ambos são classificados como modelos de desenvolvimento de software do tipo evolutivo e 
incremental. 
 
Gabarito: Letra B 
 
11. (INSTITUTO AOCP / UFFS – 2019) Assinale a alternativa que apresenta uma característica do 
modelo espiral para engenharia de software. 
 
a) Na etapa “engenharia”, são identificadas as alternativas e as restrições. 
b) Contempla a análise de riscos, além das melhores características do ciclo de vida clássico e 
prototipação. 
c) O modelo espiral veio para substituir o modelo cascata, que caiu em desuso por sua alta 
complexidade. 
d) Esse modelo contempla as seguintes atividades: engenharia de sistemas, análise, projeto, 
codificação, teste e manutenção. 
e) Esse modelo define que, na etapa de desenvolvimento, deve ser adotada uma metodologia 
ágil de desenvolvimento. 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
25
41
Comentários: 
 
(a) Errado, essa é a etapa de planejamento; (b) Correto, tanto que é conhecido como uma 
prototipação em etapas; (c) Errado, ele não veio para substituir o modelo em cascata e o modelo 
em cascata não é altamente complexo; (d) Errado, as atividades são: planejamento, análise de 
riscos, engenharia, construção e liberação, avaliação do cliente e comunicação com cliente; (e) 
Errado, não existe essa definição. 
 
Gabarito: Letra B 
 
12. (COVEST-COPSET / UFPE – 2019) A respeito de modelos de processo de software, assinale a 
alternativa correta: 
 
a) O modelo em cascata é inconsistente com outros modelos de processos de engenharia, tendo 
documentação produzida em cada fase do ciclo. Dessa forma, o processo torna-se pouco visível, 
dificultando o monitoramento do progresso pelos gerentes, de acordo com o plano de 
desenvolvimento. 
 
b) No modelo espiral de Boehm, o processo de software é representado como uma espiral em 
que cada volta representa uma fase do processo de software. O modelo não se tornou popular 
devido a problemas ligados ao gerenciamento de riscos de projeto. 
 
c) Existem alguns tipos de sistema para os quais o desenvolvimento e a entrega incrementais 
não são a melhor abordagem. Por exemplo, alguns sistemas críticos, em que todos os requisitos 
devem ser analisados na busca por iterações capazes de comprometer a proteção ou a 
segurança do sistema. 
 
d) Um modelo de processo para desenvolvimento de protótipos em que os objetivos da 
prototipação são descobertos ao final de cada iteração, depois que os usuários experimentarem 
os diversos protótipos produzidos ao longo do processo. Isso torna a abordagem pouco 
previsível e mais incerta. 
 
e) Na entrega incremental, os clientes podem usar os incrementos iniciais como protótipos e 
visualizar o avanço gradativo no desenvolvimento, mas necessitam reaprender o uso do sistema 
quando sua versão final estiver disponível. 
 
Comentários: 
 
(a) Errado, é um modelo consistente com outros modelos e o processo é visível, facilitando o 
monitoramento do progresso; (b) Errado, ele se tornou popular justamente por ser voltado a riscos; 
(c) Correto; (d) Errado, são descobertos no início do processo – além disso, isso torna a abordagem 
mais previsível e certeira; (e) Errado, não é necessário reaprendê-lo visto que o sistema vai sendo 
incrementado aos poucos, logo – ao final – estará da maneira especificada pelo usuário. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
26
41
 
Gabarito: Letra C 
 
13. (FCC / TRF - 3ª REGIÃO – 2019) No modelo em espiral de processo de software (Boehm), antes 
de cada atividade de prototipação, é sempre realizada uma atividade de: 
 
a) plano de desenvolvimento. 
b) validação de requisitos. 
c) teste de aceitação. 
d) análise de riscos. 
e) plano de ciclo de vida. 
 
Comentários: 
 
 
 
Antes de cada atividade de prototipação, é realizada a análise de riscos. 
 
Gabarito: Letra D 
 
14. (FCC / TRF - 3ª REGIÃO – 2019) Considere o modelo de ciclo de vida de software constituído 
por rotinas de trabalho com a participação de todos os membros da equipe, onde falhas não são 
toleráveis e por isso, entre as atividades, duas têm grande importância no processo: uma delas 
dedicada ao planejamento da etapa e outra à de análise de riscos. As atividades são apoiadas 
pela geração de protótipos. Suporta o desenvolvimento de sistemas complexos e de grande 
porte. Trata-se do modelo: 
 
a) Interativo e Incremental. 
b) RAD - Rapid Application Development. 
c) Espiral. 
d) Cascata. 
e) Evolutivo. 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
27
41
Comentários: 
 
Todas as características apresentadas no enunciado nos remetem ao modelo espiral – com ênfase 
na análise de riscos. 
 
Gabarito: Letra C 
 
15. (IBFC / Prefeitura de Cuiabá - MT – 2019) Heitor é gerente de projeto e precisa decidir qual 
modelo utilizará no processo de desenvolvimento do próximo software da empresa Brasil. 
Quanto a alguns dos modelos do ciclo de vida de desenvolvimento de software, assinale a 
alternativa incorreta. 
 
a) Modelo Espiral: produto final é entregue rapidamente 
b) Modelo Incremental: produzem o sistema de forma incremental até a sua versão final 
c) Metodologias Ágeis: dura de 1(uma) a 4(quatro) semanas e aofinal de cada iteração deve 
haver entrega ao cliente 
d) Modelo em Cascata: componente do sistema é entregue por fases, podendo acontecer 
paralelamente 
 
Comentários: 
 
(a) Correto, é a principal característica do RAD, mas o modelo espiral também tem esse potencial; 
(b) Correto; (c) Correto, apesar de se referir especificamente ao Scrum; (d) Errado, tudo é entregue 
ao final e as fases não podem ocorrer paralelamente. 
 
Gabarito: Letra D 
 
16. (COSEAC / UFF – 2019) Em relação aos modelos de processos de software, avalie se são 
verdadeiras (V) ou falsas (F) as afirmativas a seguir: 
 
I. O modelo de desenvolvimento orientado a reúso tem a vantagem da redução de riscos e de 
custos. 
II. O modelo de desenvolvimento incremental possui a vantagem da facilidade de mapear os 
requisitos dos clientes dentro de incrementos de tamanho correto. 
III. O modelo em cascata deve ser utilizado somente quando os requisitos forem bem 
compreendidos. 
 
As afirmativas I, II e III são, respectivamente: 
 
a) V, F e V. 
b) F, V e V. 
c) V, F e F. 
d) F, F e V. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
28
41
e) V, V e V. 
 
Comentários: 
 
(I) Correto, o modelo de desenvolvimento orientado a reúso realmente tem a vantagem da redução 
de riscos e de custos; (II) Errado, apesar disso eu não consigo identificar o erro da questão, mas esse 
foi o gabarito definitivo; (III) Correto, ele é adequado justamente quando os requisitos forem bem 
compreendidos. 
 
Gabarito: Letra A 
 
17. (CESGRANRIO / PETROBRAS – 2018) O chefe dos desenvolvedores de sistemas de uma 
empresa acompanhou o seguinte diálogo entre um de seus subordinados, um usuário e o diretor 
de operações. 
 
Diretor – Acho que já poderíamos começar o desenvolvimento daquele sistema que o 
departamento de esportes pediu. 
 
Usuário – Não é cedo demais? Ainda não temos todas as funcionalidades bem definidas. 
 
Desenvolvedor – É verdade, mas acho que já é possível especificar e implementar algumas 
funcionalidades mais importantes e construir uma primeira versão até o final do mês. Depois 
acrescentaríamos outras funcionalidades à medida que as fôssemos construindo, gerando, a 
partir da experiência do uso, versões sucessivas e cada vez mais completas. 
 
Diretor – Acho isso ótimo, assim já teremos uma noção do impacto que o sistema poderá causar 
no desempenho dos atletas. Comecemos logo, não temos um efetivo tão grande em TI. 
 
Usuário – OK, vamos em frente, mas não contem nada para aquele especialista em risco. Já 
temos muito trabalho pela frente. Nossa estrutura ainda não suporta esse tipo de cuidado; se 
entrarmos nessa, o projeto vai atrasar. E mantenham o contato e o foco no objetivo: um produto 
simples, mas de qualidade. 
 
A partir desse episódio e refletindo sobre o que ouvira, o chefe dos desenvolvedores deverá optar 
pelo modelo de processo de software: 
 
a) RAD 
b) incremental 
c) cascata 
d) espiral 
e) baseado em componentes 
 
Comentários: 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
29
41
 
(a) Errado. No RAD, não há versões intermediárias, visto que se trata de um processo de 
desenvolvimento extremamente rápido; (b) Correto. O modelo incremental é realmente indicado 
quando não há funcionalidades bem definidas, logo se inicia pelas mais importantes e são lançadas 
versões sucessivas e cada vez mais completas posteriormente; (c) Errado. Se ainda não há 
funcionalidades bem definidas, não se deve utilizar o modelo em cascata; (d) Errado. O modelo em 
espiral é dirigido a riscos e a conversa deixa claro que não se deve contar com o especialista em risco 
– como o risco não é considerado, não é recomendável utilizar o modelo em espiral; (e) Errado. Não 
há nada que leve a crer que se trata do modelo baseado em componentes. 
 
Gabarito: Letra B 
 
18. (IADES / CFM – 2018) O Modelo Espiral (Spiral) foi originalmente proposto por Boehm (1986) e 
é fortemente orientado à redução de riscos. 
 
WAZLAWICK, R. S. Engenharia de Software: Conceitos e práticas. São Paulo: Elsevier, 2013. 
 
 
Considerando o exposto e o Modelo Espiral de ciclo de vida de software, assinale a alternativa 
correta: 
 
a) O Modelo Espiral realiza uma etapa de cada vez, partindo para a próxima etapa apenas após 
a anterior estar totalmente validada. 
 
b) Tal modelo de ciclo de vida tem foco apenas na resolução de riscos de requisitos mal 
compreendidos, fornecendo tempo suficiente para que estes possam ser entendidos e 
implementados. 
 
c) O projeto é dividido em subprojetos, cada qual abordando um ou mais elementos de alto 
risco, até que todos os riscos identificados tenham sido tratados. 
 
d) Cada iteração é iniciada sem planejamento prévio, resolvendo-se os problemas no momento 
em que surgem. 
 
e) O início do ciclo de vida do projeto se parece mais com o Modelo Cascata. 
 
Comentários: 
 
(a) Errado, esse item trata do modelo em cascata; (b) Errado, não se trata apenas de riscos de 
requisitos mal compreendidos, mas diversos outros tipos de riscos como riscos de desempenho, 
arquitetural, entre outros; (c) Correto, o projeto é realmente dividido em subprojetos abordando 
um ou mais elementos de alto risco até que todos os riscos sejam identificados; (d) Errado, o 
planejamento é realizado com base nos riscos identificados, e, em cada nova interação, é definida 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
30
41
==5617c==
uma abordagem; (e) Errado, ele divide o projeto em partes, no início com protótipos, identifica os 
principais riscos, e, em cada ciclo, os riscos são mitigados. 
 
Gabarito: Letra C 
 
19. (FADESP / IF-PA – 2018) Usando o modelo ____________, o sistema é desenvolvido em ciclos, 
sendo que os primeiros ciclos podem não conter todas as atividades. O produto resultante de 
um primeiro ciclo pode ser uma especificação do produto ou um estudo de viabilidade. Os ciclos 
subsequentes podem ser protótipos, chegando progressivamente a versões operacionais do 
software, até se obter o produto completo. Modelos podem ser úteis para ajudar a levantar e 
validar requisitos, mas pode ocorrer de os clientes e usuários só terem uma verdadeira dimensão 
do que está sendo construído se forem colocados diante do sistema. Nestes casos, o uso da 
__________________ é fundamental. 
 
As expressões que completam corretamente os espaços em branco, respectivamente, são: 
 
a) espiral, prototipação. 
b) cascata, prototipação. 
c) XP, conversa com os clientes. 
d) espiral, cascata. 
e) incremental, prototipação. 
 
Comentários: 
 
Usando o modelo espiral, o sistema é desenvolvido em ciclos, sendo que os primeiros ciclos podem 
não conter todas as atividades. O produto resultante de um primeiro ciclo pode ser uma 
especificação do produto ou um estudo de viabilidade. Os ciclos subsequentes podem ser 
protótipos, chegando progressivamente a versões operacionais do software, até se obter o produto 
completo. Modelos podem ser úteis para ajudar a levantar e validar requisitos, mas pode ocorrer de 
os clientes e usuários só terem uma verdadeira dimensão do que está sendo construído se forem 
colocados diantedo sistema. Nestes casos, o uso da prototipação é fundamental. 
 
Gabarito: Letra A 
 
20. (AOCP / UNIR – 2018) O desenvolvimento formal de sistemas é uma abordagem que tem 
pontos diferentes ao modelo em cascata e usa uma base da transformação matemática modal 
de uma especificação de sistemas em um programa executável. 
 
Comentários: 
 
O desenvolvimento formal de sistemas é uma variação do modelo em cascata, logo os pontos são 
muito parecidos. Ademais, ele utiliza uma base de transformação matemática formal e, não, 
modal. 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
31
41
 
Gabarito: Errado 
 
 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
32
41
 
 
 
 
1. (CESPE / Polícia Federal – 2021) Embora não seja dirigido a riscos, o modelo de 
desenvolvimento de sistemas espiral de Boehm inclui, em seu framework, a etapa de análise e 
validação dos requisitos. 
 
2. (VUNESP / TJM-SP – 2021) Algumas atividades que fazem parte do modelo espiral de 
desenvolvimento de software são: 
 
Construção – Implantação – Comunicação – 
Planejamento – Modelagem 
 
A ordem correta com que tais atividades são executadas, considerando o modelo espiral, é: 
 
a) Comunicação, Planejamento, Modelagem, Construção e Implantação. 
b) Construção, Implantação, Comunicação, Modelagem e Planejamento. 
c) Modelagem, Planejamento, Construção, Implantação e Comunicação. 
d) Planejamento, Construção, Implantação, Comunicação e Modelagem. 
e) Planejamento, Modelagem, Comunicação, Construção e Implantação. 
 
3. (CESPE / SERPRO – 2021) No modelo formal, as etapas do desenvolvimento do software 
incluem especificação formal para definição de requisitos, refinamento para concepção de 
projeto e prova para a verificação. 
 
4. (COSEAC / UFF – 2019) Nos projetos, quando o time quebra o produto em vários pedaços 
menores, trabalhando e entregando uma parte de cada vez, sem se preocupar com agilidade, e 
somente quando esta parte estiver pronta o time parte para outro pedaço, iniciando uma nova 
fase, constata-se um ciclo de vida: 
 
a) preditivo. 
b) iterativo e incremental. 
c) adaptativo. 
d) RUP. 
e) cascata. 
 
5. (IF-PA / IF-PA – 2019) Tem-se como boas práticas em projetos de software a definição dos seus 
requisitos funcionais e suas funcionalidades. No decorrer dessa definição, pode surgir a 
necessidade de fornecer, de forma prioritária, um conjunto de funcionalidades iniciais básicas e, 
após esse fornecimento, podemos melhorar e expandir as funcionalidades em versões de 
software posteriores, até atingir todos os requisitos definidos. Nesse caso, estamos aplicando 
um modelo de processo de software denominado: 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
33
41
 
a) Métodos Formais. 
b) Business Process Management (BPM). 
c) Capability Maturity Model Integration (CMMI) 
d) Incremental. 
e) Entidade e Relacionamento. 
 
6. (FADESP / IF-PA – 2019) O princípio fundamental é que, a cada ciclo, uma versão operacional 
do sistema será produzida e entregue para uso ou avaliação detalhada do cliente. Os requisitos 
têm de ser levantados e é preciso constatar que o sistema é modular. Esse é o modelo: 
 
a) Incremental. 
b) Espiral. 
c) Cascata. 
d) RAD. 
e) XP. 
 
7. (CETREDE / Prefeitura de São Gonçalo do Amarante - CE – 2019) Sobre Engenharia de 
Software, marque a opção INCORRETA. 
 
a) O modelo Cascata tem como característica intercalar as atividades de especificação, 
desenvolvimento e validação. Esta abordagem, permite a entrega de um produto ao fim de um 
longo ciclo de desenvolvimento e com baixa perspectiva de falha funcional. 
 
b) A engenharia de software baseada em componentes baseia-se na existência de um número 
significativo de componentes reusáveis, enfocando o desenvolvimento na integração destes 
componentes. 
 
c) No desenvolvimento exploratório, o objetivo do processo é trabalhar com o cliente para 
explorar os requisitos e entregar o sistema final. 
 
d) No processo de engenharia de requisitos, a etapa de elicitação e análise dos requisitos é 
responsável pela derivação de requisitos através da observação de sistemas existentes, 
discussões com usuários potenciais, análise de tarefas etc. 
 
e) Especificação, projeto e implementação, validação e evolução do software são etapas 
comuns em qualquer processo de software. 
 
8. (CESPE / SLU-DF – 2019) No modelo de desenvolvimento de software em cascata, a 
abordagem é orientada ao risco e as tarefas são organizadas nos seguintes ciclos: determinar 
objetivos, identificar e resolver riscos, desenvolver e testar, e planejar a próxima iteração. 
 
9. (COSEAC / UFF – 2019) Dos modelos de desenvolvimento de software, aquele que prioriza a 
análise dos riscos envolvidos no desenvolvimento de cada parte do software é o modelo: 
Fernando Pedrosa Lopes , Thiago Rodrigues Cavalcanti, Erick Muzart Fonseca dos Santos, Paolla Ramos e Silva , Diego Carvalho, Renato da Costa, Equipe Informática e TI
Aula 30 (Profs Diego Carvalho e Fernando Pedrosa)
Concursos da Área Fiscal - Curso Básico de Tecnologia da Informação - 2023
www.estrategiaconcursos.com.br
https://t.me/kakashi_copiador
34
41
 
a) em cascata. 
b) de prototipação. 
c) incremental. 
d) espiral. 
e) baseado em componentes. 
 
10. (CESPE / MPC-PA – 2019) Os modelos espiral e RAD (Rapid Application Development) são 
classificados, respectivamente, como modelos de processo de desenvolvimento 
de software dos tipos 
 
a) incremental e sequencial. 
b) evolutivo e incremental. 
c) evolutivo e sequencial. 
d) incremental e evolutivo. 
e) evolutivo e evolutivo. 
 
11. (INSTITUTO AOCP / UFFS – 2019) Assinale a alternativa que apresenta uma característica do 
modelo espiral para engenharia de software. 
 
a) Na etapa “engenharia”, são identificadas as alternativas e as restrições. 
b) Contempla a análise de riscos, além das melhores características do ciclo de vida clássico e 
prototipação. 
c) O modelo espiral veio para substituir o modelo cascata, que caiu em desuso por sua alta 
complexidade. 
d) Esse modelo contempla as seguintes atividades: engenharia de sistemas, análise, projeto, 
codificação, teste e manutenção. 
e) Esse modelo define que, na etapa de desenvolvimento, deve ser adotada uma metodologia 
ágil de desenvolvimento. 
 
12. (COVEST-COPSET / UFPE – 2019) A respeito de modelos de processo de software, assinale a 
alternativa correta: 
 
a) O modelo em cascata é inconsistente com outros modelos de processos de engenharia, tendo 
documentação produzida em cada fase do ciclo. Dessa forma, o processo torna-se pouco visível, 
dificultando o monitoramento do progresso pelos gerentes, de acordo com o plano de 
desenvolvimento. 
 
b) No modelo espiral de Boehm, o processo de software é representado como uma espiral em 
que cada volta representa uma fase do processo de software. O modelo não se tornou popular 
devido a problemas ligados ao gerenciamento de riscos de projeto. 
 
c) Existem alguns tipos de sistema para os quais o desenvolvimento e a entrega incrementais 
não são a melhor abordagem. Por exemplo, alguns sistemas críticos,

Mais conteúdos dessa disciplina