Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

https://t.me/kakashi_copiador
ENGENHARIA DE SOFTWARE: 
CONCEITOS BÁSICOS E MODELOS DE 
CICLO DE VIDA
Prof. Fernando Pedrosa
https://t.me/kakashi_copiador
Bibliografia
❏ Pressman, Roger S. Software Engineering: A Practiotioner’s 
Approach. Editora: McGraw-Hill. 
❏ Sommerville, Ian. Software Engineering. Editora: Addison 
Wesley
https://t.me/kakashi_copiador
Engenharia de Software: O que é
❏ Disciplina de engenharia preocupada com todos os aspectos sobre a 
produção de software, incluindo:
❏ Processos
• Racionalizam o desenvolvimento de Software
❏ Métodos
• Conhecimento técnico; “Como” fazer
❏ Ferramentas
• Suporte automatizado para processos e métodos
Desenvolver software não é só programar!
https://t.me/kakashi_copiador
Camadas da Engenharia de Software
https://t.me/kakashi_copiador
Objetivos
❏ Obter software de qualidade
❏ Com produtividade no seu desenvolvimento, 
operação e manutenção
❏ Dentro de custos, prazos e níveis de qualidade 
controlados
❏ Com o melhor custo-benefício entre Qualidade e 
Produtividade
https://t.me/kakashi_copiador
ESW vs. Eng. de Sistemas
❏ Engenharia de Sistemas é algo maior: preocupa-se com 
todos os aspectos de sistemas baseados em computador 
• Software
• Hardware
• Processos
• Pessoas e outros sistemas, etc.
❏ Engenharia de Software é apenas parte deste processo
https://t.me/kakashi_copiador
Exercícios
(TRE/BA – CESPE 2010)
A engenharia de software está relacionada com todos os aspectos da produção de 
software, desde os estágios iniciais de especificação do sistema até sua 
manutenção, depois que este entrar em operação. A engenharia de sistemas diz 
respeito aos aspectos do desenvolvimento e da evolução de sistemas complexos, 
nos quais o software desempenha um papel importante.
(CESPE - 2013 - TRT - 10ª REGIÃO (DF e TO) - Analista Judiciário - Tecnologia da 
Informação) A engenharia de software engloba processos, métodos e ferramentas. 
Um de seus focos é a produção de software de alta qualidade a custos 
adequados.
https://t.me/kakashi_copiador
Exercícios
(IBGE – CONSULPLAN 2009)
 Segundo Pressman (1995), Engenharia de Software é o estabelecimento e uso de sólidos 
princípios de engenharia para que se possa obter economicamente um software que seja 
confiável e que funcione eficientemente em máquinas reais, abrangendo um conjunto de 
três elementos 
fundamentais (métodos, ferramentas e procedimentos).
Assinale a alternativa INCORRETA:
A) Métodos de Engenharia de Software proporcionam os detalhes de “como fazer” para 
construir o software.
B) As ferramentas proporcionam apoio automatizado ou semi-automatizado aos métodos.
https://t.me/kakashi_copiador
Exercícios
C) Procedimentos constituem o elo de ligação dos métodos e das ferramentas e 
possibilitam o desenvolvimento racional e oportuno de software.
D) Métodos envolvem um amplo conjunto de tarefas que incluem: planejamento e 
estimativa de projeto, análise de requisitos de software e sistemas, projeto de estrutura 
de dados, arquitetura de programa e algoritmo de processamento, codificação, teste e 
manutenção.
E) Ferramentas são roteiros para o desenvolvimento de software
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Histórico (60s e 70s)
❏ Década de 60: a chamada “Crise do Software”
• Desenvolvimento fora de controle
• Iniciou como um problema de Custo e Produtividade.
• Mais importante: era um problema de Qualidade
❏ Década de 70
• Programação Estruturada 
• Projeto Estruturado
https://t.me/kakashi_copiador
Histórico (80s e 90s)
❏ Década de 80 
• Análise Estruturada (DFDs, Dicionário de Dados, Diagrama ER, de 
Estados, etc.)
• Ferramentas CASE
❏ Década de 90
• Análise e Projeto OO. 
• Java, UML, Processo Unificado
https://t.me/kakashi_copiador
Histórico (anos 2000)
❏ Anos 2000
• Metodologias Ágeis
• Novos paradigmas: SOA, Aspectos, Model-Driven Architecture, 
etc.
• Cloud Computing
https://t.me/kakashi_copiador
Terminologia
Software
❏ Programa de computador e documentação associada
❏ Produtos de software podem ser desenvolvidos para um 
cliente particular ou podem ser desenvolvidos para um 
mercado geral
❏ Novos softwares podem ser criados desenvolvendo-se 
novos programas ou reusando softwares existentes
https://t.me/kakashi_copiador
Terminologia (cont.)
Processo
❏ Uma série conectada de ações, com a intenção de satisfazer um 
objetivo
❏ Define quem está fazendo o quê, quando e como para atingir um 
certo objetivo 
Entrada
Processo
(atividades e sub-processos)
Saída
https://t.me/kakashi_copiador
Terminologia (cont.)
Processo de Software
❏ Um conjunto estruturado de atividades para 
desenvolver um sistema de software
• Especificação
• Projeto
• Validação
• Evolução
https://t.me/kakashi_copiador
Exercícios
(CESPE - 2016 – TCE/PR – Analista de Sistemas – E) O conceito de software se 
restringe ao desenvolvimento do código em determinada linguagem e seu 
armazenamento em arquivos 
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Modelos de Ciclo de Vida
❏ “São uma representação abstrata e simplificada do 
processo de desenvolvimento software, apresentada a 
partir de uma perspectiva específica”
❏ Tipicamente contêm:
• “Esqueleto do processo”
• Ordem de precedência das atividades
• Principais artefatos e produtos gerados
https://t.me/kakashi_copiador
Conceitos
https://t.me/kakashi_copiador
Conceitos (cont.)
https://t.me/kakashi_copiador
Fases do Desenvolvimento de Software
❏ Planejamento
• Esboçar escopo e requisitos
• Fazer estimativas razoáveis sobre recursos, custos e prazos
❏ Análise e Especificação de Requisitos
• Refinar requisitos e escopo
• Entender o domínio do problema, com comportamento e 
funcionalidades esperados
https://t.me/kakashi_copiador
Fases do Desenvolvimento de Software
❏ Projeto
• Incorporar requisitos tecnológicos aos requisitos essenciais do 
sistema
• Projetar a arquitetura do sistema
❏ Implementação
• Traduzir o projeto em uma forma passível de execução pela 
máquina
• Codificação
https://t.me/kakashi_copiador
Fases do Desenvolvimento de Software
❏ Testes
• Realizar diversos níveis de teste, de forma a fazer a verificação do 
software.
❏ Implantação, Operação e Manutenção
• Colocar o software em produção
• Treinar pessoas
• Manter o software
• Gerenciar os serviços
https://t.me/kakashi_copiador
Exercícios
(Quadrix - 2021 - CRP - MG - Analista de Desenvolvimento de Sistemas e 
Informação)
No que se refere à engenharia de software, assinale a alternativa que apresenta o 
estágio do modelo em cascata em que o projeto do software é desenvolvido 
como um conjunto de programas ou de unidades de programa e há a verificação 
de que cada unidade atende a sua especificação.
A análise e definição de requisitos
B implementação e teste unitário 
C projeto de sistema e software
D integração e teste de sistema
E operação e manutenção
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Principais Modelos
https://t.me/kakashi_copiador
Modelo em Cascata
❏ Modelo “Clássico”, teve origem na indústria de 
manufatura e construção
❏ Sua estrutura é composta por várias etapas que são 
executadas de forma sistemática e sequencial
❏ Na falta de uma abordagem estruturada, foi a primeira 
tentativa de formalizar uma metodologia de 
desenvolvimento de software
https://t.me/kakashi_copiador
Modelo em Cascata (Pressman)
https://t.me/kakashi_copiador
Modelo em Cascata 
(Sommerville)
https://t.me/kakashi_copiador
Características (Cascata)
❏ Minimiza o planejamento, organiza as atividades em uma 
sequência com entregas bem definidas
❏ Funciona bem para requisitos estáveis e bem 
compreendidos
• O modelo pressupõe que os requisitos ficarão estáveis ao longo 
do projeto
❏ É facilmente aplicável em equipes inexperientes
Porém, atrasa a redução de riscos!
https://t.me/kakashi_copiador
Cascata atrasa a resolução de riscos
https://t.me/kakashi_copiador
Vantagens e Desvantagens
 
VANTAGENSDESVANTAGENS
É simples de entender e fácil de aplicar, facilitando 
o planejamento.
Divisão inflexível do projeto em estágios distintos.
Fixa pontos específicos para a entrega de 
artefatos.
Dificuldade em incorporar mudanças de requisitos.
Funciona bem para equipes tecnicamente fracas. Clientes só visualizam resultados próximos ao final do 
projeto.
É fácil de gerenciar, devido a sua rigidez. Atrasa a redução de riscos.
 
Realiza documentação extensa por cada fase ou 
estágio.
Apenas a fase final produz um artefato de software 
entregável.
Possibilita boa aderência a outros modelos de 
processo.
Cliente deve saber todos os requisitos no início do 
projeto.
Funciona bem com projetos pequenos e com 
requisitos bem conhecidos.
Modelo inicial (Royce) não permitia feedback entre as 
fases do projeto.
  Pressupõe que os requisitos ficarão estáveis ao longo 
do tempo.
  Não funciona bem com projetos complexos e OO, 
apesar de compatível.
https://t.me/kakashi_copiador
Resumo Esquemático
https://t.me/kakashi_copiador
Exercícios
(CESPE / CEBRASPE - 2022 - Petrobras - Analista de Sistemas – Processos de 
negócio)
No modelo de desenvolvimento Waterfall, a partir da coleta de requisitos e da 
elaboração do projeto desenvolve-se uma implementação inicial, que é 
apresentada para a apreciação dos usuários; esse ciclo continua com a criação de 
várias versões, até que o sistema final seja desenvolvido por meio da execução 
das etapas de desenvolvimento e testes de forma intercalada. 
https://t.me/kakashi_copiador
Exercícios
(IDECAN - 2021 - IF-CE - Analista de Tecnologia da Informação) No contexto da 
Engenharia de Software, um modelo de processo é visualizado como um ciclo de 
vida constituído da especificação, do desenvolvimento, da validação e da 
evolução. Nesse modelo, as fases são representadas separadas umas das outras, 
tais como especificação de requisitos, projeto de software, implementação e 
testes. Esse modelo de processo é denominado modelo em
 A cascata. 
 B espiral.
 C eventos.
 D módulos.
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Modelos Iterativos
❏ Motivação: requisitos de sistema sempre evoluem 
durante o projeto
❏ Deve-se dividir para conquistar
https://t.me/kakashi_copiador
Desenvolvimento Incremental
❏ A ideia é de desenvolver e entregar o software 
em incrementos, com cada incremento 
entregando parte da funcionalidade requerida
❏ Requisitos são definidos antes do 
desenvolvimento do incremento, sendo os mais 
críticos priorizados
https://t.me/kakashi_copiador
Desenvolvimento Incremental (cont.)
❏ Um “mini projeto em cascata” é executado em 
cada iteração, progredindo até a entrega final do 
produto
https://t.me/kakashi_copiador
Iterativo vs. Incremental
Incremental: são adicionados “pedaços completos”
Iterativo: esboços ou pedaços incompletos do produto são adicionados a cada 
iteração
https://t.me/kakashi_copiador
Exercícios
(CESGRANRIO - 2019 - UNIRIO - Analista de Tecnologia da Informação) O modelo de 
processo incremental é iterativo por natureza e produz a cada incremento uma versão 
operacional do produto, diferente de outros modelos, como, por exemplo, a prototipagem. 
Esse modelo incremental
A) gera incrementos logo nas primeiras etapas, mas estes não podem ser entregues ao 
cliente.
B) possui unicamente atividades de codificação e teste nos seus incrementos.
C) deve ter, no máximo, 1 a 5 sprints quando planejados e gerenciados com métodos ágeis.
D) possui atividades de teste fora do incremento, realizadas por outra equipe que vai 
integrando incrementalmente o produto a cada etapa do teste.
E) combina elementos do modelo cascata, aplicado de maneira iterativa, sendo também 
essa filosofia incremental usada em processos ágeis.
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Modelo RAD
❏ Rapid Application Development
❏ Modelo de desenvolvimento iterativo e 
incremental que enfatiza ciclo de 
desenvolvimento curto (60 a 90 dias)
❏ Utiliza reuso de componentes à exaustão
https://t.me/kakashi_copiador
RAD - Fases
❏ Modelagem de Negócio
• Qual informação é gerada, por quem, para onde vai e 
quem processa?
❏ Modelagem de Dados
• O fluxo de informação é refinado em um modelo de 
dados que suporta o negócio
• Atributos e relacionamentos são definidos
https://t.me/kakashi_copiador
RAD - Fases
❏ Modelagem de Processo
• Descreve o processamento necessário para adicionar, 
modificar, deletar ou buscar objetos de dados
❏ Geração da Aplicação
• Utiliza ferramentas automatizadas para facilitar a 
construção do software
https://t.me/kakashi_copiador
RAD - Fases
❏ Teste e Modificação
• Novos componentes são testados e integrados
• Como o modelo enfatiza o reuso, muitos componentes 
já estão testados e isso reduz o tempo necessário para 
testes
https://t.me/kakashi_copiador
Quando usar RAD?
❏ A aplicação não necessita de softwares auxiliares 
(standalone); 
❏ É possível fazer uso de classes pré-existentes; 
❏ A performance não é o mais importante;
❏ O risco técnico é reduzido;
❏ A distribuição do produto no mercado é pequena; 
❏ O escopo do projeto é restrito; 
❏ O sistema pode ser dividido em vários módulos; 
❏ O risco de mudança tecnológica é baixo.
https://t.me/kakashi_copiador
Vantagens
❏ Permite o desenvolvimento rápido e/ou a 
prototipagem de aplicações
❏ Reutiliza componentes
❏ Desenvolvimento em alto nível de abstração
❏ Redução na codificação manual (wizards)
❏ Envolvimento maior do usuário
❏ Etc...
https://t.me/kakashi_copiador
Desvantagens
❏ Custo alto do conjunto de ferramentas
❏ Perda de precisão científica
❏ Pode levar ao retorno de práticas caóticas de 
desenvolvimento
❏ Pode construir funções desnecessárias
https://t.me/kakashi_copiador
Exercícios
(CESPE – 2008 – TST - Analista Judiciário - Análise de Sistemas) O modelo RAD 
(Rapid Application Development) consiste em uma forma de prototipação para 
esclarecer dúvidas da especificação do software.
(CESPE – 2004 – BASA – Analista de Sistemas) O modelo embasado em 
prototipagem é um modelo de processo incremental que enfatiza um ciclo de 
desenvolvimento extremamente curto. A primeira fase do processo é a 
modelagem de negócio e a última é a fase de teste e entrega.
(CESPE – 2005 – MPE/AM – Analista Judiciário – Analista de Sistemas) O modelo 
RAD (rapid application development) é específico para projetos de software que 
empregam linguagens de programação de terceira geração.
https://t.me/kakashi_copiador
Exercícios
(CESPE – 2011 – AL/ES – Analista de Sistemas – C) O ciclo de vida RAD (Rapid 
Application Development), por privilegiar a rapidez do desenvolvimento, não 
possui etapa de modelagem.
(CESPE – 2005 – IGEPREV – Analista de Sistemas – B) O modelo Rapid Application 
Development (RAD) é apropriado para projetos que envolvem grandes riscos 
técnicos.
(CESPE – 2003 – IPEA – Analista de Sistemas) O RAD (Rapid Application 
Development) é um modelo de processo de software incremental que assume um 
ciclo de desenvolvimento curto e utiliza uma abordagem de construção com base 
em componentes.
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Modelos Evolucionários
❏ São baseados na ideia de uma implementação 
inicial que evolui por meio de várias versões
❏ Lida bem com mudanças e permite o feedback 
rápido entre as atividades
❏ Cada versão incorpora as mudanças necessárias e 
refina a versão anterior
❏ Podem ser considerados modelos iterativos
https://t.me/kakashi_copiador
Desvantagens de Modelos Evolucionários
❏ O processo não é visível: se os sistemas são desenvolvidos 
rapidamente, não é viável economicamente produzir 
documentos para cada versão do sistema.
 
❏ Os sistemas são frequentemente mal estruturados: 
mudanças contínuas tendem a corromper a estrutura do 
software e tornar mudanças difíceis e caras.
https://t.me/kakashi_copiador
Prototipagem Evolucionária
❏ O objetivo é trabalhar junto aos clientes para evoluir o 
sistemaa partir de uma especificação inicial resumida
• Entregar resultado o mais rápido possível
❏ Deve começar com requisitos bem compreendidos
❏ Novas funcionalidades são adicionadas à medida que o 
cliente as propõem
❏ Aplicável em sistemas pequenos ou médios com curto 
tempo de vida
https://t.me/kakashi_copiador
Problemas da Prototipagem Evolucionária
❏ Falta de visibilidade do progresso
• O sistema está sempre evoluindo, nunca está 
“terminado”
❏ Os sistemas acabam tornando-se pobremente 
estruturados
❏ A documentação pode ser esquecida
❏ Os padrões de qualidade podem ser “relaxados”
https://t.me/kakashi_copiador
Prototipagem Descartável
❏ Assim como na prototipagem evolucionária, pequenas 
versões prototípicas são disponibilizadas ao clientes para 
avaliação
❏ Porém, o objetivo aqui é entender e clarificar os requisitos 
do sistema
❏ Deve-se começar com os requisitos mais difíceis e menos 
compreendidos
❏ Ao final, descarta-se o protótipo e a implementação do 
software continua
https://t.me/kakashi_copiador
Prototipagem Descartável
❏ É útil para sistemas grandes e complicados, e 
quando o cliente não sabe exatamente o que 
quer
❏ Protótipos descartáveis podem ser aplicados no 
contexto de qualquer modelo de processo
• Cascata
• Espiral
• Iterativo/Incremental, etc. 
https://t.me/kakashi_copiador
Exercícios
(INSTITUTO AOCP - 2021 - FUNPRESP-JUD - Analista de Tecnologia da 
Informação - Desenvolvimento de Sistemas) O modelo de processo evolucionário 
é uma variação no modelo cascata. Esse modelo descreve a relação entre as ações 
de garantia da qualidade e as ações relacionadas à comunicação, à modelagem e 
às atividades de construção iniciais.
(CESPE – 2008 – TJ/DF – Analista de Sistemas) A prototipação evolucionária não 
gera problemas de manutenção de sistema porque o desenvolvimento é rápido e 
não sofre grandes mudanças.
https://t.me/kakashi_copiador
Exercícios
(CETAP - 2021 - SEPLAD - PA - Técnico em Gestão Pública - Informática) Algumas 
vezes, a engenharia de software necessita de um processo que possa acondicionar 
um produto que evolui ao longo do tempo, devido à constante atualização dos 
requisitos, ou o tempo para implantação é curto para entrega do sistema 
completo. Para este tipo de situação, qual modelo se adequa melhor? 
 A) Cascata. 
 B) Evolutivo (como o espiral). 
 C) De Métodos Formais. 
 D) Modelo em “V”.
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Modelo em Espiral
❏ O processo é representado como uma espiral em 
vez de uma sequência de atividades
❏ Cada volta na espiral representa uma fase no 
processo
❏ Os loops na espiral são escolhidos dependendo 
do que for necessário
https://t.me/kakashi_copiador
Modelo em Espiral
https://t.me/kakashi_copiador
Modelo em Espiral (Pressman)
https://t.me/kakashi_copiador
Setores do Modelo em Espiral
❏ Planejamento
• Qual é o objetivo? (aumentar performance, corrigir 
bugs, melhorar qualidade, etc.)
• Quais são as alternativas? (comprar pronto, reutilizar 
componentes, etc.)
• Quais são as restrições? (custo, cronograma, etc.)
https://t.me/kakashi_copiador
Setores do Modelo em Espiral
❏ Análise de Riscos
• Pode ser construído um protótipo para analisar os 
riscos envolvidos
• Quais são as incertezas ? (custo excessivo, falta de 
recursos, etc.)
❏ Engenharia
• O software é desenvolvido e testado
https://t.me/kakashi_copiador
Setores do Modelo em Espiral
❏ Avaliação do Cliente e Feedback
• Revisa-se o projeto e se obtém feedback do cliente 
quanto à entrega realizada para as próximas fases
https://t.me/kakashi_copiador
Modelo em Espiral
❏ Acrescenta aspectos gerenciais ao 
desenvolvimento de software
• Planejamento, tomada de decisão
• Análise de Riscos
Porém, é complexo e requer experiência na 
avaliação de riscos!
https://t.me/kakashi_copiador
Exercícios
(CESPE - 2018 - FUB - Técnico de Tecnologia da Informação) O modelo espiral é um tipo de 
modelo iterativo de desenvolvimento em que cada ciclo se encerra com a entrega de uma 
versão final do software.
(CESPE - 2018 - IPHAN - Analista I - Área 7) Situação hipotética: Uma organização implantou 
o framework de processo de software dirigido a riscos proposto por Boehm (modelo espiral), 
seguindo as atividades descritas pelo framework, em que a espiral é dividida em quatro 
setores. As atividades de criação do protótipo operacional, assim como os testes de 
integração e unitário, foram inseridas no setor de avaliação e redução de riscos. Assertiva: 
Nessa situação, foi correta a inserção da atividade de protótipo no setor de avaliação e 
redução de riscos, porém as atividades de testes não poderiam ter sido inseridas, pois essas 
não são abrangidas por esse framework. 
https://t.me/kakashi_copiador
Exercícios
(FURB - 2019 - Prefeitura de Porto Belo - SC - Analista de Sistemas II) Em engenharia de 
software, uma das metodologias de desenvolvimento mais conhecidas é o Modelo em 
Espiral, proposto por Barry Bohem, em 1988, e que combina as iterações do modelo de 
prototipagem com o controle e sistematização do modelo em cascata. O Modelo em Espiral 
é dividido em:
 A) Projeto, Análise, Codificação e Implantação.
 B) Planejamento, Engenharia, Testes e Atualização.
 C) Planejamento, Análise dos Riscos, Engenharia e Atualização. 
 D) Planejamento, Modelagem, Engenharia e Implantação.
 E) Projeto, Análise de Riscos, Engenharia e Implantação.
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Modelo Baseado em Componentes
❏ Abordagem para desenvolvimento de software 
que utiliza o reuso como peça principal
❏ Depende de uma grande base de componentes 
reusáveis e algum framework de integração
❏ Propicia redução de custos, entregas mais rápidas 
e aumento de qualidade (componentes já são 
previamente testados)
https://t.me/kakashi_copiador
O que é um Componente?
❏ É um “bloco de construção modular”
❏ Executável
❏ Independente
❏ Padronizado
❏ Reutilizável
❏ Expõe um conjunto de interfaces 
https://t.me/kakashi_copiador
Processo genérico baseado em componentes
https://t.me/kakashi_copiador
Exercícios
(CESPE – 2010 – TRE/BA – Técnico Judiciário – Programação de Sistemas) Na engenharia de 
software baseada em componentes, na qual se supõe que partes do sistema já existam, o 
processo de desenvolvimento concentra-se mais na integração dessas partes que no seu 
desenvolvimento a partir do início. Essa abordagem é baseada em reúso para o 
desenvolvimento de sistemas de software.
(CESPE – 2004 – SERPRO – Analista de Sistemas) O grande objetivo do uso de engenharia 
de software por componentes é a produção de software de alta qualidade e baixo custo.
(CESPE – 2008 – SERPRO – Analista de Sistemas) O modelo orientado a reúso parte de um 
software existente para que se crie outro, no todo ou apenas em parte de seus 
componentes.
https://t.me/kakashi_copiador
Exercícios
(UFBA - 2009 - UFBA - Analista de Tecnologia da Informação) No processo de 
software baseado em componentes, cada componente projetado para reuso é 
uma entidade executável independente, que deve manipular exceções.
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Métodos Formais
❏ Modelo baseado em técnicas matemáticas para 
especificar, desenvolver e verificar software
❏ O software é especificado usando técnicas 
formais (matemáticas), e após a “prova” da 
especificação é transformado em código
esp. 2esp. 1 imple
ment.
https://t.me/kakashi_copiador
Vantagens de Métodos Formais
❏ O próprio processo de desenvolvimento garante 
que o programa faz exatamente o que foi 
especificado
❏ É possível gerar programas corretos e completos 
por construção
https://t.me/kakashi_copiador
Desvantagens de Métodos Formais
❏ São bastante lentos e dispendiosos
❏ Exigem treinamento intensivo e uma equipe de 
especialistas
❏ Normalmente são usados apenas em ambientes 
muito complexos
• A “indústria” não considera que métodos formais têm 
um bom custo-benefício
https://t.me/kakashi_copiadorExercícios
(CESPE – 2008 – SERPRO – Analista de Sistemas) Para a especificação de software 
e verificação de sistemas, uma alternativa que se fundamenta na matemática 
discreta e na lógica é o modelo incremental.
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador
Modelo Orientado a Aspectos
❏ Programação orientada a aspectos é um 
paradigma que separa responsabilidades, 
requisitos e interesses de um sistema
❏ A modularização dos aspectos produz uma 
arquitetura fácil de projetar e manter
❏ É um complemento à Programação Orientada a 
Objetos
https://t.me/kakashi_copiador
Separação de Interesses
Há dois tipos de interesses (concerns) de acordo com 
o modelo em aspectos:
❏ Interesses Principais (Core Concerns)
• Capturam as funcionalidades principais de um módulo
❏ Interesses Ortogonais (Crosscutting Concerns)
• Capturam funcionalidades periféricas
https://t.me/kakashi_copiador
O que são Aspectos?
❏ Propriedades de um sistema que envolvem 
diversos componentes funcionais
❏ Não podem ser expressos utilizando linguagens 
convencionais de maneira precisa
❏ Exemplos: sincronização, persistência, 
distribuição, logging, etc.
https://t.me/kakashi_copiador
O que são Aspectos? (cont.)
❏ Ao contrário de Componentes, que normalmente 
tratam uma única funcionalidade, Aspectos 
envolvem diversas unidades de um sistema
https://t.me/kakashi_copiador
Exemplo
Código com o aspecto 
“anotado”
Aspecto
https://t.me/kakashi_copiador
Exercícios
(CESPE - 2017 - SEDF - Analista de Gestão Educacional - Tecnologia da 
Informação) Normalmente, aspectos (aspects) são utilizados no nível de análise, 
enquanto preocupação (concern) é mais utilizado no nível de implementação
https://t.me/kakashi_copiador
Exercícios
(VUNESP - 2016 - Prefeitura de Presidente Prudente - SP - Analista de Sistema 
Web) Há diversos conceitos específicos quando se considera a análise e o projeto 
orientados a aspectos. Um desses conceitos está no fato de que um “interesse” 
pode estar implementado em diversos métodos. O conceito descrito corresponde 
a um “interesse”
 A de alerta.
 B de componente.
 C interno.
 D concentrado.
 E transversal.
https://t.me/kakashi_copiador
OBRIGADO
Prof. Fernando Pedrosa
https://t.me/kakashi_copiador
https://t.me/kakashi_copiador

Mais conteúdos dessa disciplina