Logo Passei Direto
Buscar

Disciplina_Engenharia de Software

Ferramentas de estudo

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

Disciplina
Engenharia de Software
Unidade 1
Introdução à engenharia de software
Aula 1
Introdução à engenharia de software
Introdução
Olá, estudante! Vamos explorar os fundamentos dessa disciplina essencial no desenvolvimento
de sistemas de software con�áveis e e�cientes. A Engenharia de Software nos capacita a criar
soluções que desempenham um papel fundamental na indústria tecnológica e impactam
diretamente a sociedade moderna. 
No decorrer dessa disciplina, entenderemos as principais práticas e etapas usadas no
desenvolvimento de software, da idealização até a melhoria contínua. Vamos conhecer
metodologias ágeis, modelos de processos e princípios que são base para as futuras atividades
pro�ssionais.  
Espero que esta disciplina contribua signi�cativamente para o desenvolvimento de habilidades e
conhecimentos para criar produtos de alta qualidade que atendam às necessidades dos clientes
e usuários. 
Disciplina
Engenharia de Software
A Engenharia de Software é uma área dinâmica e desa�adora. É importante lembrar que cada
linha de código traz impacto direto na vida das pessoas.  
Objetivos fundamentais da engenharia de software
A história da engenharia de software é marcada por uma notável evolução, mas também por
desa�os e crises que moldaram a maneira como desenvolvemos e mantemos software. Desde
seus primórdios até os dias de hoje, essa disciplina passou por transformações signi�cativas,
impulsionadas tanto pelo progresso tecnológico quanto pelas complexidades inerentes à criação
de sistemas cada vez mais so�sticados. 
Nos anos 1950 e 1960, a engenharia de software estava em sua infância. Programadores
individuais escreviam códigos sem muita padronização. À medida que a demanda por software
cresceu, tornou-se claro que abordagens mais estruturadas eram necessárias para evitar a
ine�ciência e a manutenção problemática. Surgiram as metodologias em cascata e em V, que
enfatizavam o planejamento detalhado e a divisão do desenvolvimento em fases. 
De acordo com Fabris e Perini (2014) apesar da década de 1970 trazer consigo métodos de
engenharia de software como como Análise Estruturada (DcMarco, 1978), infelizmente, trouxe
também a primeira crise de software.  
Projetos maiores frequentemente ultrapassavam prazos e orçamentos, resultando em sistemas
instáveis. A abordagem em cascata mostrou-se rígida para acomodar mudanças frequentes e
evolução dos requisitos. Isso levou à busca por métodos mais �exíveis, culminando no
Disciplina
Engenharia de Software
surgimento das metodologias ágeis nas décadas seguintes. O Manifesto Ágil de 2001, destacou
a colaboração, a adaptação e a entrega contínua como princípios-chave. 
Na esteira da crescente complexidade dos sistemas, a engenharia de software enfrentou novos
desa�os. A ascensão da internet e das aplicações distribuídas trouxe à tona questões de
segurança e escalabilidade. As abordagens tradicionais muitas vezes não eram adequadas para
lidar com esses cenários, o que levou ao desenvolvimento de arquiteturas orientadas a serviços
(SOA) e microsserviços. 
A segunda metade dos anos 2000 testemunhou a proliferação de práticas DevOps. A separação
tradicional entre desenvolvimento e operações mostrou-se ine�ciente para entregar software de
alta qualidade de maneira rápida e con�ável. O DevOps uniu essas equipes, promovendo a
automação, a integração contínua e a entrega contínua, acelerando o ciclo de desenvolvimento. 
No entanto, a evolução da engenharia de software também trouxe novos desa�os. A
complexidade levou ao surgimento de problemas de segurança, com ataques cibernéticos
explorando vulnerabilidades em sistemas e aplicativos. A crescente dependência de bibliotecas
de terceiros também introduziu o risco de falhas devido a componentes obsoletos ou
comprometidos. 
Além disso, o avanço da interconexão de dispositivos na era da Internet das Coisas (IoT) gerou
desa�os de compatibilidade, interoperabilidade e privacidade. A explosão de dados e a
necessidade de análise em tempo real impulsionaram o desenvolvimento de novas técnicas de
engenharia de software, como aprendizado de máquina e inteligência arti�cial. 
Assim, a engenharia de software evoluiu de abordagens ad hoc para metodologias estruturadas
e, posteriormente, para abordagens ágeis e DevOps. Essa evolução foi impulsionada por desa�os
como a crise do software, que destacou a necessidade de métodos mais �exíveis e
colaborativos.  
No entanto, novas complexidades surgiram à medida que a tecnologia avançou, demandando
maior atenção à segurança, escalabilidade e compatibilidade. Conforme entramos em uma era
cada vez mais conectada e tecnologicamente avançada, a engenharia de software continua a se
adaptar e se reinventar para atender às demandas em constante evolução. 
Evolução e desa�os: a história da engenharia de software
Disciplina
Engenharia de Software
Para garantir que o desenvolvimento de software seja e�ciente, con�ável e capaz de atender às
necessidades dos usuários e das organizações, existem objetivos que são o alicerce sobre o
qual as práticas de engenharia de software são construídas. A seguir, os principais tópicos sobre
a natureza do software e da engenharia de software segundo Fabris e Perini (2014): 
1. Qualidade e con�abilidade do software: um dos principais objetivos da engenharia de
software é produzir software de alta qualidade e con�ável. Isso envolve a criação de
sistemas que atendam aos requisitos especi�cados, sejam robustos o su�ciente para lidar
com situações adversas e tenham um baixo número de defeitos. A busca por qualidade
inclui testes rigorosos, revisões de código e processos de garantia de qualidade que visam
identi�car e corrigir problemas antes que o software seja implantado.
2. Entrega pontual e e�ciente: a engenharia de software visa entregar projetos dentro dos
prazos e orçamentos de�nidos. Isso envolve a utilização de metodologias de
gerenciamento de projetos e�cazes, como a metodologia ágil, que promove ciclos de
desenvolvimento curtos, iterações frequentes e colaboração entre as equipes de
desenvolvimento e os stakeholders. A e�ciência também é alcançada por meio da
automação de processos, integração contínua e práticas DevOps, que aceleram o
desenvolvimento e a entrega de software.
3. Adaptação às mudanças: em um cenário tecnológico em constante evolução, a engenharia
de software deve ser capaz de se adaptar às mudanças nos requisitos e nas condições do
ambiente. Isso signi�ca projetar sistemas de maneira modular e �exível, de modo que as
alterações possam ser incorporadas sem afetar todo o sistema. As metodologias ágeis,
Disciplina
Engenharia de Software
por exemplo, incentivam a adaptação contínua, permitindo que os requisitos sejam
ajustados ao longo do ciclo de desenvolvimento.
4. Satisfação do cliente: a engenharia de software visa atender às necessidades dos clientes
e usuários �nais. Isso envolve entender profundamente os requisitos e expectativas dos
stakeholders, garantindo que o software entregue atenda a essas necessidades de maneira
e�caz. A comunicação constante e a colaboração com os clientes são essenciais para
garantir a satisfação do cliente ao longo do desenvolvimento do projeto.
5. Documentação e manutenção adequadas: a criação de documentação clara e abrangente é
um objetivo crucial da engenharia de software. Isso facilita a compreensão do sistema por
parte dos desenvolvedores, facilitando a manutenção e a evolução contínua do software. A
documentação também é valiosa para os usuários �nais, ajudando-os a utilizar o software
de maneira e�ciente. 
Desse modo, os objetivos da engenharia de software visam garantir a qualidade, con�abilidade,
e�ciência, adaptação e satisfação do cliente no desenvolvimento de software. Esses objetivos
são alcançados por meio de práticas rigorosas, metodologias ágeis, colaboração e comunicação
e�cazes, além de um foco contínuo na melhoria dos processos e na evolução das tecnologias.  
Moldando o caminho: modelos e evolução de processos de desenvolvimento
de software
Ao longo dasdécadas, várias abordagens foram desenvolvidas para guiar as equipes de
desenvolvimento desde a concepção até a entrega e manutenção do software. Segue lista de
modelos e evolução de processos de desenvolvimento de software: 
1. Modelos de desenvolvimento de software  
Modelo em cascata: introduzido na década de 1970, o modelo em cascata é um dos
primeiros e de acordo com Fabris e Perini (2014, p. 80) a�rmam que é “referenciado na
maioria dos livros de engenharia de software ou manuais de padrões de software”. Ele
divide o desenvolvimento em fases sequenciais, como requisitos, design, implementação,
testes e manutenção. Cada fase depende da conclusão da anterior. Embora tenha
Disciplina
Engenharia de Software
limitações na acomodação de mudanças de requisitos e na interação com os clientes,
ainda é usado em cenários onde os requisitos são estáveis e bem compreendidos. 
Modelo em espiral: surgindo na década de 1980, o modelo em espiral incorpora a
�exibilidade necessária para acomodar mudanças e incertezas. Ele divide o
desenvolvimento em ciclos, cada um envolvendo planejamento, riscos, engenharia,
avaliação e ação. Cada ciclo reavalia e aprimora o produto com base no feedback e nas
lições aprendidas. Segundo Fabris e Perini (2016, p. 82) “sua principal inovação é guiar o
processo de desenvolvimento gerado a partir desse modelo com base em análise de riscos
e um planejamento que é realizado durante toda a evolução do desenvolvimento”. 
Modelo iterativo e incremental: a abordagem iterativa e incremental, popularizada nas
metodologias ágeis, divide o projeto em pequenas iterações, cada uma resultando em um
incremento funcional do software. Isso permite que as equipes entreguem valor ao cliente
mais cedo, colham feedback e realizem ajustes conforme necessário. 
2. Evolução dos ciclos de vida 
Ciclo de vida em cascata: o ciclo de vida em cascata, associado ao modelo em cascata, foi
o precursor dos processos de desenvolvimento formais. Embora tenha sido útil em projetos
bem de�nidos, sua rigidez levou à busca de abordagens mais �exíveis. 
Ciclo de vida incremental: O ciclo de vida incremental introduzido pela abordagem iterativa
foi uma resposta à necessidade de adaptação a mudanças e à entrega contínua de valor.
Ele permite a entrega de partes funcionais do sistema em cada iteração, bene�ciando-se
do feedback e melhorando continuamente. 
Ciclo de vida ágil: ele representa uma mudança signi�cativa na forma como o
desenvolvimento é realizado. Metodologias como Scrum e Kanban enfatizam iterações
curtas, colaboração contínua com os clientes e adaptação constante. Essa abordagem
coloca a satisfação do cliente e a entrega contínua no centro do processo. 
Ciclo de vida devops: o ciclo de vida DevOps incorpora a colaboração entre as equipes de
desenvolvimento e operações, enfatizando a automação e a integração contínua. Ele visa
acelerar a entrega de software, mantendo a qualidade e a con�abilidade. 
Ciclo de vida em espiral: Embora tenha sido menos adotado do que outras abordagens, o
ciclo de vida em espiral continua a ser relevante para projetos que envolvem riscos
signi�cativos e incertezas. Ele enfatiza a avaliação constante dos riscos e a adaptação em
cada ciclo.  
Ao longo das décadas, observamos a evolução dos modelos e ciclos de vida de desenvolvimento
de software, cada um projetado para abordar diferentes necessidades e desa�os. O modelo em
cascata, pioneiro na década de 1970, trouxe estrutura, mas limitações na adaptação a
mudanças.  
Com o surgimento do modelo em espiral na década de 1980, a �exibilidade tornou-se uma
prioridade, permitindo acomodar incertezas e riscos. No entanto, foi com a abordagem iterativa e
incremental, popularizada pelas metodologias ágeis, que se alcançou uma entrega mais rápida e
feedback contínuo, colocando o cliente no centro do processo.  
Além disso, novos ciclos de vida, como o DevOps, trouxeram colaboração intensiva e automação
para acelerar a entrega sem comprometer a qualidade. A variedade de abordagens disponíveis
nos mostra que não existe uma solução única, mas sim a importância de escolher a que melhor
Disciplina
Engenharia de Software
se adapta às necessidades especí�cas de cada projeto, mantendo sempre a busca pela
satisfação do cliente e a melhoria contínua como princípios fundamentais do desenvolvimento
de software.] 
Videoaula: Introdução à engenharia de software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Adentrar o mundo da engenharia de software é embarcar em uma jornada de
descobertas. Desde os primeiros dias da programação até os complexos sistemas atuais, a
evolução tem sido constante. Neste vídeo resumo, exploraremos como a engenharia de software
evoluiu ao longo do tempo, os objetivos que a guiam e os modelos de desenvolvimento que
moldaram nossa abordagem. Vamos desvendar os mistérios por trás das metodologias ágeis,
ciclos de vida e muito mais. Vamos começar! 
Saiba mais
Disciplina
Engenharia de Software
O Manifesto Ágil é um pequeno documento de texto baseado em 4 valores e 12 princípios para o
desenvolvimento ágil de software. Con�ra o artigo “O que é o Manifesto Ágil: direto ao ponto!”,
para saber mais sobre o assunto. 
SILVA, E. O que é o Manifesto Ágil: direto ao ponto! Geekhunter. Carreira de programador. 2020. 
Referências
FABRIS, P. P. G; PERINI, L. C. Processos de software. Londrina: Editora e Distribuidora Educacional
S.A., 2014. 
BECK, K. S. K. S. J. E. A. Manifesto for Agile Software Development. Disponível em:
http://agilemanifesto.org acesso em setembro de 2023.  
Aula 2
Requisitos
Introdução
https://blog.geekhunter.com.br/manifesto-agil/
http://agilemanifesto.org/
Disciplina
Engenharia de Software
Olá, estudante! Na engenharia de software, os requisitos desempenham um papel fundamental
ao estabelecerem a base para o desenvolvimento de sistemas e�cazes e bem-sucedidos. São as
especi�cações que de�nem as funcionalidades, características e restrições de um software,
servindo como guia para os desenvolvedores durante todo o ciclo de vida do projeto.  
A correta identi�cação e documentação dos requisitos asseguram que todas as partes
interessadas tenham uma compreensão clara e concisa do que o software irá realizar e como ele
deve operar.  
Através de processos de elicitação, análise e validação, os requisitos são moldados para atender
às necessidades dos usuários e ao contexto do sistema, evitando ambiguidades e garantindo a
base para o planejamento, o projeto e a implementação bem-sucedidos do software.  
Fundamentos cruciais para o desenvolvimento de software
Disciplina
Engenharia de Software
A engenharia de requisitos é o alicerce sobre o qual repousa o desenvolvimento de software
e�ciente e bem-sucedido. Ela se refere ao processo de elicitação, análise, documentação e
gerenciamento dos requisitos de um sistema. Para compreender sua importância, é importante
explorar dois tipos de requisitos: os funcionais e os não funcionais. 
De acordo com Artero (2016) os requisitos funcionais são funções que o sistema deve ser capaz
de executar. Eles descrevem o que o sistema deve fazer em termos de entradas, processamento
e saídas, como em um sistema de gerenciamento de biblioteca, os requisitos funcionais podem
incluir a capacidade de cadastrar novos livros, pesquisar e emprestar exemplares. 
A origem dos requisitos funcionais remonta às primeiras fases da história da engenharia de
software. Durante os anos 1960 e 1970, quando os primeiros sistemas complexos começaram a
ser desenvolvidos, os engenheiros perceberam a necessidade de uma abordagem estruturada
para de�nir as capacidades dos sistemas. Esse foi um passo crucial para a evolução da
engenharia de requisitos. 
Enquanto os requisitos funcionais se concentram no "o que" do sistema, os requisitos não
funcionais abordam o "como". Eles especi�cam as características quenão são diretamente
relacionadas às funcionalidades, mas que são cruciais para a qualidade e o desempenho do
sistema. Isso pode incluir aspectos como desempenho, segurança, usabilidade e con�abilidade. 
Os requisitos não funcionais têm suas raízes na necessidade de estabelecer critérios claros para
a aceitação e o desempenho dos sistemas. À medida que os sistemas se tornaram mais
complexos e integrados em diversas esferas da sociedade, como na área da saúde e na indústria
aeroespacial, a importância dos requisitos não funcionais cresceu exponencialmente. 
Disciplina
Engenharia de Software
A integração e�caz de requisitos funcionais e não funcionais é o cerne da engenharia de
requisitos. Isso implica não apenas identi�car e documentar esses requisitos, mas também
gerenciá-los ao longo do ciclo de vida do projeto. Isso garante que as necessidades dos
stakeholders sejam atendidas de forma abrangente e que o sistema entregue esteja alinhado
com as expectativas. 
Ao longo dos anos, diversas abordagens e metodologias foram desenvolvidas para aprimorar a
prática da engenharia de requisitos. Desde os modelos de processos tradicionais, como o
modelo em cascata, até abordagens ágeis e colaborativas, como o Scrum, a disciplina tem
evoluído para se adaptar às demandas e complexidades crescentes dos projetos de
desenvolvimento de software. 
Em última análise, a engenharia de requisitos é o alicerce que sustenta a construção de sistemas
de software de alta qualidade. Ao compreender e aplicar de forma e�caz os requisitos funcionais
e não funcionais, os engenheiros de software são capazes de criar soluções que atendem não
apenas às expectativas dos stakeholders, mas também aos padrões de desempenho e qualidade
exigidos pelo cenário tecnológico atual. É assim que a engenharia de requisitos continua a
desempenhar um papel central na evolução e na inovação da indústria de software. 
Integrando funcionalidades e e�ciência
Na criação de sistemas de software, a Engenharia de Requisitos desempenha um papel central. É
ela que traça o caminho, desde a concepção das funcionalidades essenciais até a garantia de
que o sistema atenda aos mais elevados padrões de e�ciência e desempenho. Para tanto,
Disciplina
Engenharia de Software
segundo Sommerville e Kontoya (2011), são necessários dois tipos distintos de requisitos: os
funcionais e os não funcionais. 
Os requisitos funcionais são a espinha dorsal do sistema pois moldam as operações que o
sistema deve ser capaz de realizar, de�nindo claramente o que ele é capaz de fazer. Em um
sistema de gerenciamento de vendas, por exemplo, os requisitos funcionais podem incluir a
capacidade de cadastrar produtos, calcular preços, processar pagamentos e gerar relatórios.  
Esses requisitos são os que muitas vezes vêm à mente quando pensamos no desenvolvimento
de software, pois estão diretamente ligados às funcionalidades visíveis e utilizáveis pelo usuário.
Eles são a ponte entre a concepção da ideia e a implementação prática do sistema. 
Enquanto os requisitos funcionais são a melodia, os requisitos não funcionais são a harmonia
que a complementa. Eles não descrevem o que o sistema faz, mas sim como ele o faz. Esses
requisitos incluem características como desempenho, segurança, usabilidade e con�abilidade.  
Por exemplo, determinar que o sistema deve ser capaz de processar milhares de transações por
segundo é um requisito não funcional crucial em sistemas de pagamento on-line. Embora
possam não ser tão evidentes quanto os requisitos funcionais, os requisitos não funcionais são
igualmente vitais. Eles de�nem a qualidade e a e�ciência do sistema, garantindo que ele seja
capaz de desempenhar suas funções de maneira con�ável e e�caz, mesmo sob condições
adversas. 
A Engenharia de Requisitos atua como o maestro desta sinfonia de funcionalidades e e�ciência.
Ela coordena a elicitação, análise e documentação de todos os requisitos, sejam eles funcionais
ou não funcionais. Além disso, garante que esses requisitos sejam gerenciados ao longo do ciclo
de vida do projeto, assegurando que o sistema resultante esteja em total sintonia com as
expectativas e necessidades dos stakeholders. 
Ao integrar de forma e�caz requisitos funcionais e não funcionais, a Engenharia de Requisitos
permite que o sistema não apenas cumpra suas tarefas, mas o faça de maneira otimizada,
segura e con�ável. Essa disciplina é o elo que transforma uma ideia em um sistema robusto e de
alta qualidade, capaz de superar desa�os e se destacar em um cenário competitivo. 
Em suma, a Engenharia de Requisitos é a partitura que guia o desenvolvimento de software. Ao
compreender e aplicar de forma e�caz os requisitos funcionais e não funcionais, os engenheiros
de software são capazes de criar sistemas que não apenas atendem às expectativas dos
usuários, mas também de�nem novos padrões de e�ciência e excelência na indústria de
software.  
É assim que a Engenharia de Requisitos continua a ser a base sólida e melódica sobre a qual
repousa o sucesso dos projetos de desenvolvimento de software.  
Requisitos funcionais, não funcionais e a arte da engenharia de requisitos
Disciplina
Engenharia de Software
A Engenharia de Requisitos é o alicerce sobre o qual repousa o desenvolvimento de software
e�caz. Ela guia o processo desde a concepção da ideia até a materialização do sistema
desejado. Para compreender sua importância, é essencial explorar dois tipos de requisitos: os
funcionais e os não funcionais, e observar como a Engenharia de Requisitos os une em uma
abordagem prática. 
Os requisitos funcionais delineiam as operações que um sistema deve ser capaz de realizar. Eles
representam o "o que" do sistema, descrevendo as funcionalidades que ele deve possuir. Por
exemplo, em um sistema de e-commerce, os requisitos funcionais podem incluir a capacidade de
adicionar produtos ao carrinho, calcular o total da compra e �nalizar a transação. 
Vamos imaginar o desenvolvimento de um aplicativo de agenda virtual. Os requisitos funcionais
podem abranger a capacidade de criar, editar e excluir eventos, além de enviar noti�cações para
lembretes. Esses requisitos funcionais de�nem as operações essenciais que o sistema oferecerá
ao usuário, fornecendo um quadro claro do que é esperado do produto. 
Enquanto os requisitos funcionais focam no "o que", os requisitos não funcionais se concentram
no "como". De acordo Artero (2016), são características qualitativas do sistema, dada uma
funcionalidade e não estão diretamente ligadas às operações do sistema, mas que são cruciais
para a sua qualidade e desempenho. Isso pode incluir aspectos como a segurança, a
escalabilidade, a usabilidade e a con�abilidade do sistema. 
Voltando ao exemplo do aplicativo de agenda, os requisitos não funcionais podem abordar a
necessidade de o sistema ser capaz de suportar milhares de usuários simultaneamente,
garantindo uma experiência de uso �uida e sem interrupções. Além disso, podem especi�car a
importância da segurança dos dados, exigindo criptogra�a para proteger informações sensíveis. 
A Engenharia de Requisitos atua como o arquiteto do projeto, unindo requisitos funcionais e não
funcionais em uma abordagem coesa. Ela envolve a elicitação, análise e documentação de todos
os requisitos, garantindo que sejam claros, completos e consistentes.  
Disciplina
Engenharia de Software
Também, a Engenharia de Requisitos se estende ao longo do ciclo de vida do projeto,
assegurando que os requisitos sejam gerenciados de forma e�caz à medida que o sistema é
desenvolvido e evolui. 
Suponha que uma equipe de desenvolvimento esteja criando um sistema de gestão de estoque
para uma empresa. A Engenharia de Requisitos entraria em ação para de�nir os requisitos
funcionais, como a capacidade de adicionar, remover e atualizar produtos no inventário. Ao
mesmo tempo, garantiria que os requisitos não funcionais, como a necessidade de o sistema ser
capaz de lidar com picos de demanda durante períodos de promoção, também fossem
considerados. 
Em última análise, a Engenharia de Requisitosé a ligação vital entre concepção e realização. Ao
compreender e aplicar de forma e�caz os requisitos funcionais e não funcionais, os engenheiros
de software podem criar sistemas que não apenas atendem às expectativas dos usuários, mas
também de�nem novos padrões de e�ciência e excelência na indústria de software. É assim que
a Engenharia de Requisitos continua a ser o alicerce sólido sobre o qual repousa o sucesso dos
projetos de desenvolvimento de software.  
Videoaula: Requisitos
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Este vídeo resumo desvendará os segredos por trás da engenharia de software.
Exploraremos os componentes essenciais no desenvolvimento de aplicativos e sistemas de
software: os requisitos funcionais, os requisitos não funcionais e a engenharia de requisitos.
Juntos, vamos entender como esses elementos moldam cada aspecto do software que usamos
diariamente. Vamos começar nossa jornada rumo ao conhecimento profundo da criação de
software de qualidade. 
Saiba mais
Disciplina
Engenharia de Software
Pode ser uma tarefa difícil de�nir o que são requisitos funcionais. Um requisito funcional pode
ser um recurso óbvio, mas às vezes pode não ser tão óbvio assim. O artigo “O que são Requisitos
Funcionais: Exemplos, De�nição, Guia Completo” é realmente um guia completo para leitura. 
VISURE. O que são Requisitos Funcionais: Exemplos, De�nição, Guia Completo. Visure Solutions. 
Referências
https://visuresolutions.com/pt/blog/functional-requirements/
Disciplina
Engenharia de Software
ARTERO, M. A. Gestão de projetos de software. Londrina: Editora e Distribuidora Educacional S.A.,
2016. 
SOMMERVILLE, I.; KOTONYA, G. Engenharia de software. 9. ed. São Paulo:  Pearson, 2011.  
Aula 3
Métodos ágeis
Introdução
Disciplina
Engenharia de Software
Olá, estudante! Métodos ágeis representam uma abordagem inovadora para o gerenciamento e
desenvolvimento de projetos, especialmente no cenário de tecnologia e software. Surgindo como
resposta aos desa�os das metodologias tradicionais, os métodos ágeis enfatizam a �exibilidade,
colaboração e adaptação contínua.  
O Manifesto Ágil, publicado em 2001, destaca valores fundamentais como a valorização de
indivíduos e interações, entrega de software funcionando, colaboração com clientes e resposta à
mudança.  
Scrum, Kanban, Extreme Programming (XP) são algumas das práticas ágeis amplamente
adotadas. A iteração constante, o foco em pequenas entregas incrementais e a contínua
retroalimentação são características centrais desses métodos, permitindo equipes a se
adaptarem rapidamente a mudanças nas necessidades dos clientes e no ambiente de negócios.  
Explorando as características centrais dos métodos ágeis
Disciplina
Engenharia de Software
Os Métodos Ágeis representam uma abordagem revolucionária na gestão de projetos, focando
na �exibilidade, colaboração e adaptação constante. Surgiram como resposta à rigidez dos
métodos tradicionais de gestão de projetos, como o modelo cascata, que muitas vezes
resultavam em projetos atrasados e insatisfatórios para os clientes.  
Segundo Pressmann (2011), o movimento Ágil teve início no início dos anos 2000, quando 17
desenvolvedores de software se reuniram para discutir uma nova forma de abordar o
desenvolvimento de software. O resultado foi o Manifesto Ágil, um documento que estabelece os
valores e princípios fundamentais para a gestão de projetos ágeis. Entre os valores destacam-se
o indivíduo e a interação sobre processos e ferramentas, e a resposta à mudança sobre a seguir
um plano estrito.  
O Scrum é um dos métodos ágeis mais populares e amplamente utilizados. Ele se baseia na
divisão do trabalho em ciclos curtos e iterativos chamados de "sprints". Cada sprint tem duração
�xa, geralmente entre duas e quatro semanas, durante as quais uma equipe se compromete a
entregar um conjunto de funcionalidades prontas para uso.  
O papel do Scrum Master é essencial nesse processo, sendo responsável por facilitar a equipe e
remover obstáculos que possam impedir o progresso. O Product Owner, por sua vez, é
responsável por de�nir as prioridades do projeto e garantir que a equipe esteja focada nas
entregas mais valiosas para o cliente. 
Disciplina
Engenharia de Software
O XP é outro método ágil que enfatiza a colaboração e a qualidade do software. Ele promove
práticas como programação em pares, testes automatizados e integração contínua, visando a
redução de erros e a produção de um código mais limpo e e�ciente. Uma das práticas distintivas
do XP é a programação em pares, em que dois programadores trabalham juntos em um mesmo
código. Isso possibilita a revisão constante do código, a troca de conhecimento e a redução de
erros.  
Os Métodos Ágeis trouxeram uma série de benefícios para a gestão de projetos. A �exibilidade
proporcionada pela abordagem ágil permite uma maior capacidade de adaptação a mudanças
nos requisitos do projeto, o que é especialmente importante em ambientes de rápida evolução
tecnológica.  
Além disso, a colaboração intensiva entre os membros da equipe promove um ambiente mais
motivador e engajador, resultando em produtos de maior qualidade e que atendem de forma
mais e�caz às necessidades dos clientes.  
Desse modo, os Métodos Ágeis, com destaque para o Scrum e o XP, representam uma revolução
na gestão de projetos. Suas práticas e valores transformaram a forma como equipes
desenvolvem software, resultando em produtos mais alinhados com as expectativas do cliente e
em processos mais e�cientes e adaptativos.  
Ao adotar essas abordagens ágeis, as organizações estão mais bem posicionadas para enfrentar
os desa�os de um mundo em constante evolução tecnológica e atender às demandas dos
clientes de maneira e�caz e inovadora. 
Transformando a engenharia de software: métodos ágeis em ação
Disciplina
Engenharia de Software
Os Métodos Ágeis representam uma abordagem dinâmica e �exível na gestão de projetos,
destacando-se por sua capacidade de adaptação a mudanças e ênfase na colaboração entre
equipes. Dois dos métodos ágeis mais proeminentes são o Scrum e o Extreme Programming
(XP), cada um com suas próprias características distintas. 
Princípios fundamentais dos Métodos Ágeis: guiados por uma série de princípios
fundamentais que incluem a valorização da colaboração entre indivíduos e equipes,
priorizando a entrega contínua de software funcional e adaptando-se a mudanças de
requisitos ao invés de seguir um plano rígido. Além disso, enfatizam a comunicação clara e
e�caz, bem como a busca constante pela excelência técnica. 
Scrum: é um método ágil amplamente utilizado, especialmente na gestão de projetos de
desenvolvimento de software. Ele opera em ciclos chamados "sprints", geralmente com
duração de duas a quatro semanas. Durante cada sprint, a equipe se compromete a
Disciplina
Engenharia de Software
entregar um conjunto especí�co de funcionalidades prontas para uso.  O Scrum Master
desempenha um papel vital ao facilitar a colaboração e remover obstáculos que possam
prejudicar o progresso da equipe. O Product Owner, por outro lado, é encarregado de de�nir
as prioridades do projeto e garantir que a equipe se concentre nas entregas mais valiosas
para o cliente. 
Extreme Programming (XP): O XP é outro método ágil notável, focando na excelência
técnica e na produção de software de alta qualidade. Ele viabiliza práticas como a
programação em pares, em que dois programadores trabalham juntos em um mesmo
código, oferecendo revisões constantes e trocas de conhecimento.  Além disso, o XP
valoriza testes automatizados e integração contínua, o que reduz signi�cativamente a
ocorrência de erros e ajuda na manutenção de um código limpo e e�ciente. 
Etapas comuns nos Métodos Ágeis 
Independentemente do método escolhido, os Métodos Ágeis compartilham algumas etapas
comuns. Inicialmente, ocorre a concepção doprojeto, em que os objetivos e requisitos são
de�nidos. Em seguida, a equipe planeja os sprints (no caso do Scrum) ou iterações (no caso do
XP), dividindo o trabalho em tarefas especí�cas.  
Durante a execução, a equipe realiza reuniões diárias de acompanhamento do progresso e ajusta
as estratégias conforme necessário. Ao �nal de cada interação, é feita uma revisão para avaliar o
que foi alcançado e planejar o próximo ciclo. 
Assim, os Métodos Ágeis, incluindo o Scrum e o XP, representam uma abordagem inovadora na
gestão de projetos. Seus princípios, características e etapas proporcionam às equipes as
ferramentas necessárias para lidar com projetos de forma e�caz, adaptando-se às mudanças e
entregando produtos de alta qualidade. 
O incremento do uso de ferramentas digitais em processos industriais também favoreceu nas
últimas décadas a utilização dos métodos ágeis em ambientes fabris, contribuindo para o
controle à distância de linhas de produção e manutenção de processos.  
Metodologias ágeis na prática
Disciplina
Engenharia de Software
Os Métodos Ágeis, incluindo o Scrum e o Extreme Programming (XP), desempenham um papel
crucial na engenharia de software, revolucionando a forma como os projetos são planejados,
executados e entregues. Essas abordagens promovem uma mentalidade de �exibilidade,
colaboração e foco na entrega de valor ao cliente.  
Primeiro, é importante destacar que os Métodos Ágeis são altamente adaptáveis e podem ser
personalizados para atender às necessidades especí�cas de cada projeto de engenharia de
software. Isso contrasta com os métodos tradicionais, que seguem planos rígidos e in�exíveis. 
Ainda que muitos gestores de projetos industriais ou projetos de manutenção industrial
considerem que métodos ágeis não possam substituir totalmente, todos os tipos de projetos, as
metodologias mais tradicionais e antigas de controle e gestão de projetos, eles podem ser
utilizados em pacotes de trabalho isolados de tais projetos.   
O Scrum é amplamente utilizado na engenharia de software. Ele organiza o trabalho em iterações
chamadas "sprints", geralmente com duração de duas a quatro semanas. Durante cada sprint, a
equipe de desenvolvimento trabalha em um conjunto de funcionalidades especí�cas, priorizadas
pelo Product Owner. A equipe se auto-organiza para planejar, projetar, codi�car e testar essas
funcionalidades. 
O Scrum Master atua como facilitador, garantindo que a equipe tenha as condições ideais para o
trabalho e removendo obstáculos que possam surgir. O foco está na colaboração contínua e na
entrega de incrementos de software funcionais. Ao �nal de cada sprint, há uma revisão para
demonstrar o trabalho concluído e uma retrospectiva para melhorar o processo. 
O XP, por sua vez, coloca uma ênfase ainda maior na qualidade do código e na colaboração. Os
programadores frequentemente trabalham em pares, revisando e melhorando constantemente o
Disciplina
Engenharia de Software
código. Testes automatizados são fundamentais, garantindo que as alterações não causem
regressões. 
A integração contínua é uma prática central no XP, em que as alterações são integradas no
repositório principal de forma frequente e automática, veri�cando a estabilidade do software. O
cliente está envolvido de perto no processo, dando feedback constante e priorizando os recursos
desejados. 
Ambos os métodos ágeis incentivam a comunicação aberta e transparente entre a equipe e os
stakeholders, o que é essencial na engenharia de software para garantir que todos tenham uma
compreensão clara dos objetivos e progresso do projeto. 
Portanto, os Métodos Ágeis, como o Scrum e o XP, são aplicados na engenharia de software de
maneira a promover a �exibilidade, a colaboração e a entrega contínua de valor ao cliente. Eles
se destacam pela adaptação constante às mudanças, pela ênfase na qualidade do código e pela
participação ativa dos clientes no processo de desenvolvimento.  
Essas abordagens têm revolucionado a forma como os projetos de engenharia de software são
conduzidos, resultando em produtos mais e�cientes e alinhados com as necessidades do
mercado.
Videoaula: Métodos ágeis
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo exploraremos dois dos principais frameworks ágeis: Scrum e
Extreme Programming (XP). Vamos mergulhar nas características que tornam essas abordagens
tão e�cazes e entender como elas podem transformar a maneira como enfrentamos desa�os de
desenvolvimento. Preparado? Vamos lá!  
Saiba mais
Disciplina
Engenharia de Software
O artigo “Metodologias Ágeis: o que são, como implementar as 4 principais” vai te ajudar a
entender o conceito por trás da metodologia ágil e os principais métodos para aplicar da melhor
forma em uma empresa.  
VINAL, V. Metodologias Ágeis: o que são, como implementar as 4 principais. RockContent. 2018. 
Referências
https://rockcontent.com/br/blog/metodologias-ageis/
Disciplina
Engenharia de Software
PRESSMANN, R. S. Engenharia de software: uma abordagem pro�ssional. 7. ed. Porto Alegre:
AMGH, 2011. 
Aula 4
Controle de versões
Introdução
Disciplina
Engenharia de Software
Olá, estudante! O controle de versões de software é uma prática fundamental no
desenvolvimento de programas, permitindo o rastreamento e gerenciamento das mudanças ao
longo do tempo. Ele proporciona uma abordagem estruturada para acompanhar as edições,
correções e aprimoramentos feitos em um código-fonte, garantindo a integridade e a
colaboração e�ciente entre os membros da equipe.  
Com o uso de sistemas de controle de versões, como Git e Subversion, os desenvolvedores
podem registrar alterações, criar ramos para experimentações e fusionar contribuições de forma
organizada.  
Além disso, o controle de versões oferece a capacidade de reverter para estados anteriores,
facilitando a resolução de problemas e o desenvolvimento iterativo. Dessa forma, essa prática é
essencial para otimizar a colaboração, a estabilidade e a evolução contínua de projetos de
software.  
Gerenciamento de versões e mudanças de software: fundamentos e
benefícios
Disciplina
Engenharia de Software
O versionamento de código fonte é uma prática essencial no desenvolvimento de software
moderno, permitindo que equipes de programadores trabalhem de forma colaborativa e
mantenham um registro organizado das alterações feitas ao longo do tempo.  
Esta disciplina envolve a utilização de sistemas de controle de versão, como Git, Subversion e
Mercurial, para monitorar e documentar todas as modi�cações realizadas no código, na
documentação e nos recursos do projeto. 
A história do versionamento de código remonta ao início da computação. Um dos primeiros
sistemas de controle de versão foi o SCCS (Source Code Control System), criado pela Bell Labs
na década de 1970. Desde então, a prática evoluiu signi�cativamente, dando origem a uma
variedade de ferramentas e metodologias robustas para gerenciamento de versões. 
Uma parte crucial do versionamento de código é a de�nição de marcos conhecidos como
"baseline" e "release". A "baseline" representa um estado estável e bem-sucedido do código em
um determinado momento, servindo como uma referência sólida para futuras comparações e
desenvolvimentos.  
Por sua vez, a "release" é uma versão especí�ca do software que é disponibilizada para os
usuários �nais. Ela marca um ponto de entrega o�cial, indicando que o produto atingiu um nível
de estabilidade e funcionalidade que a equipe considera adequado para uso externo. 
Além disso, o versionamento de código possibilita a criação de ramos (branches) de
desenvolvimento, o que permite que diferentes partes da equipe trabalhem em funcionalidades
ou correções separadas sem interferir diretamente no código principal. Isso impulsiona a
experimentação com novas ideias sem comprometer a integridade do projeto principal.  
Disciplina
Engenhariade Software
Posteriormente, esses ramos podem ser unidos (merged) ao código principal de forma
organizada e controlada. Outra vantagem signi�cativa é a capacidade de reverter ações. Se um
problema ou erro for identi�cado, é possível retornar a uma versão anterior do código,
desfazendo as modi�cações problemáticas. Isso é particularmente valioso em situações de
crises, permitindo que as equipes restabeleçam rapidamente a funcionalidade estável anterior e
resolvam problemas com maior agilidade. 
Assim, o versionamento de código é uma prática fundamental no desenvolvimento de software
moderno. Ela promove a colaboração e�caz, a organização estruturada das modi�cações, a
facilidade na solução de problemas e a garantia da integridade do código ao longo do tempo.  
Ao adotar sistemas de controle de versão, as equipes de desenvolvimento estão mais bem
preparadas para enfrentar os desa�os do desenvolvimento de software e criar produtos de alta
qualidade de maneira mais e�caz. 
A Importância das versões de itens de con�guração
Disciplina
Engenharia de Software
No desenvolvimento de software, o conceito de versões não se limita apenas ao código-fonte,
mas se estende a todos os elementos que compõem um sistema, incluindo documentos,
recursos e con�gurações.  
Esses elementos, conhecidos como "itens de con�guração", são gerenciados através de um
sistema de controle de con�guração que permite o controle preciso de suas versões ao longo do
tempo. Esse processo, conhecido como "versões de itens de con�guração", desempenha um
papel vital na garantia da estabilidade, rastreabilidade e colaboração no desenvolvimento de
software. 
As versões de itens de con�guração são essenciais para rastrear mudanças em todos os
aspectos de um projeto de software. Isso inclui não apenas o código-fonte, mas também
documentos como especi�cações de requisitos, manuais do usuário e diagramas de arquitetura.
Disciplina
Engenharia de Software
Ao atribuir uma versão única e identi�cável a cada alteração, os desenvolvedores podem
acompanhar a evolução de todos os componentes do sistema de forma granular e organizada. 
Um dos principais benefícios das versões de itens de con�guração é a capacidade de recriar o
estado do sistema em qualquer ponto do tempo. Isso é fundamental para garantir a
reprodutibilidade e a consistência do desenvolvimento, bem como para atender a requisitos
regulatórios e de conformidade.  
Se necessário, é possível retroceder para versões anteriores de itens de con�guração
especí�cos, permitindo que equipes corrijam erros e problemas sem comprometer o
desenvolvimento contínuo. Além disso, o gerenciamento de versões de itens de con�guração
facilita a colaboração entre equipes.  
Com a capacidade de compartilhar e acessar versões especí�cas de documentos, recursos e
con�gurações, as equipes podem trabalhar de forma coordenada e consistente, minimizando a
possibilidade de con�itos e garantindo que todos os membros estejam alinhados com a versão
mais recente. 
Outra vantagem é a rastreabilidade. Quando cada mudança é registrada com uma versão, é
possível identi�car rapidamente qual versão introduziu um problema ou qual versão
implementou um determinado recurso. Isso simpli�ca a resolução de problemas e ajuda a
manter um registro claro das decisões tomadas ao longo do desenvolvimento.  
Ademais, o gerenciamento de versões de itens de con�guração promove a con�abilidade e a
robustez do processo de desenvolvimento. Ao manter um histórico completo de todas as
modi�cações, as equipes têm a capacidade de entender e corrigir possíveis erros de forma mais
e�ciente, resultando em um software mais estável e con�ável. 
Em suma, as versões de itens de con�guração são um componente vital do gerenciamento de
con�guração de software. Elas oferecem controle, rastreabilidade e colaboração aprimorados,
permitindo que equipes de desenvolvimento controlem todas as facetas de um projeto de
maneira organizada e controlada.  
Ao adotar uma abordagem estruturada para o gerenciamento de versões de itens de
con�guração, as equipes estão mais bem equipadas para lidar com a complexidade do
desenvolvimento de software e entregar produtos de alta qualidade de maneira consistente.  
O processo de versionamento proporciona não apenas um registro preciso das mudanças, mas
também uma base sólida para aprimorar a e�ciência e a con�abilidade em todas as fases do
desenvolvimento de software.  
Baseline e Release: marcos essenciais no gerenciamento de software
Disciplina
Engenharia de Software
No contexto do gerenciamento de software, "baseline" e "release" são dois conceitos importantes
que desempenham papéis vitais na organização e no progresso de um projeto. Ambos são
marcos fundamentais que contribuem para a estabilidade, rastreabilidade e comunicação e�caz
em todo o ciclo de vida do desenvolvimento de software. 
Uma baseline é uma referência estável e controlada de um conjunto especí�co de itens de
con�guração em um determinado momento. Ela serve como ponto de partida seguro para o
desenvolvimento subsequente, capturando o estado atual do software, documentação e outros
componentes.  
A criação de uma baseline é frequentemente feita em marcos signi�cativos do projeto, como o
término de uma fase de desenvolvimento ou a conclusão bem-sucedida de uma etapa
importante. A partir dessa baseline, as alterações são registradas e gerenciadas, permitindo que
as equipes controlem as mudanças em relação a um ponto de referência con�ável.  
Uma release, por outro lado, é a disponibilização de um conjunto especí�co de funcionalidades e
melhorias para os usuários ou clientes. Ela marca o momento em que um conjunto de alterações
aprovadas é considerado pronto para o uso.  
Cada release é uma versão do software que atende aos critérios de qualidade e funcionalidade
estabelecidos, sendo frequentemente numeradas ou rotuladas com versões, permitindo que os
usuários identi�quem claramente a iteração do software que estão utilizando. 
A relação entre baseline e release é fundamental para a gestão do desenvolvimento de software.
A baseline serve como a base a partir da qual as releases são construídas. Cada release é uma
progressão ordenada a partir da baseline correspondente, integrando alterações e melhorias
desde a criação da baseline até o lançamento da release. A baseline fornece o contexto e a
Disciplina
Engenharia de Software
estabilidade necessários para avaliar a prontidão de uma release, garantindo que ela seja
consistente e con�ável para os usuários �nais. 
No que diz respeito às ferramentas utilizadas para gerenciar baselines e releases, existem várias
opções disponíveis no mercado. Algumas das mais populares incluem o Git, que é um sistema
de controle de versão distribuído amplamente utilizado, e o Subversion (SVN), um sistema de
controle de versão centralizado. Além dessas, há também outras ferramentas especí�cas para
gerenciamento de con�guração, como o Apache Maven e Jenkins, que facilitam a criação de
builds e a automação de processos de release. 
A prática de criar baselines e lançar releases é essencial para o sucesso do desenvolvimento de
software em várias frentes. Primeiro, ajuda a equipe a manter o foco e a visibilidade durante o
processo de desenvolvimento, permitindo que os membros da equipe compreendam claramente
as mudanças ocorridas desde a última baseline.  
Em segundo lugar, proporciona aos stakeholders uma visão concreta do progresso do projeto,
uma vez que as releases re�etem os incrementos de funcionalidade e valor entregues. Por �m, a
criação de baselines e a liberação de releases facilitam a resolução de problemas, uma vez que é
possível isolar e analisar o estado especí�co do software em cada ponto do tempo. 
Assim, esses são conceitos essenciais no gerenciamento de software. A baseline fornece
estabilidade e controle, enquanto a release disponibiliza melhorias concretas aos usuários �nais.
Juntas, essas práticas contribuem para a organização e�ciente, a transparência e a qualidade do
desenvolvimento de software.O uso de ferramentas como Git, Subversion, Apache Maven e Jenkins aprimora ainda mais a
gestão de baselines e releases, proporcionando às equipes as capacidades necessárias para um
desenvolvimento bem-sucedido e consistente.  
Videoaula: Controle de versões
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Exploraremos os conceitos essenciais de baseline e release no desenvolvimento
de software. Descobriremos como as baselines estabelecem referências sólidas para o
progresso, enquanto as releases entregam funcionalidades aos usuários. Aprenderemos como
esses marcos vitais mantêm o desenvolvimento organizado, transparente e focado.  
Saiba mais
Disciplina
Engenharia de Software
Saiba mais sobre o que é controle de versão e as suas vantagens, no artigo indicado a seguir: 
MICROSOT LEARN. O que é controle de versão?. 2023. 
Referências
https://learn.microsoft.com/pt-br/devops/develop/git/what-is-version-control
Disciplina
Engenharia de Software
ARTERO, M. A. Gestão de projetos de software. Londrina: Editora e Distribuidora Educacional S.A.,
2016.  
Aula 5
Revisão da unidade
Conceitos-chave para o sucesso no desenvolvimento de software
No universo do desenvolvimento de software, é importante dominar conceitos fundamentais que
formam a base para a criação de aplicações e�cazes e de alta qualidade. Vamos explorar quatro
desses pilares essenciais.  
Compreender os fundamentos da engenharia de software é o ponto de partida para qualquer
desenvolvedor. Isso abrange a compreensão da teoria por trás do desenvolvimento de software,
bem como a evolução dessa disciplina ao longo dos anos. Desde os primeiros métodos ad hoc
até os processos estruturados e orientados a objeto, é vital ter um entendimento sólido da
história e das teorias que moldaram a engenharia de software.  
Além disso, conhecer os modelos de processos é essencial. Isso envolve a compreensão de
abordagens como o modelo em cascata, que segue uma sequência linear, e os modelos ágeis,
Disciplina
Engenharia de Software
que promovem uma abordagem mais �exível e adaptativa. Cada modelo tem seus pontos fortes
e fracos, e saber quando e como aplicá-los é uma habilidade valiosa. 
Entender os requisitos de software é a chave para o sucesso de qualquer projeto. Isso signi�ca
compreender as necessidades e expectativas dos clientes, transformando-as em uma
documentação clara e precisa que servirá como guia para o desenvolvimento.  
A engenharia de requisitos se concentra em técnicas e processos para elicitar, analisar,
documentar e validar esses requisitos. Uma parte crucial dessa etapa é a capacidade de
comunicar e�cazmente com os stakeholders para garantir que todos tenham uma compreensão
clara das metas do projeto. Isso também envolve habilidades de negociação e gerenciamento de
expectativas. 
Os métodos ágeis revolucionaram a forma como os projetos de software são abordados. Entre
esses métodos, o Scrum e o Extreme Programming (XP) se destacam. O Scrum organiza o
trabalho em sprints, ciclos curtos e iterativos, enquanto o XP se concentra na qualidade do
código, promovendo práticas como programação em pares e testes automatizados.
Compreender esses métodos não apenas permite uma abordagem mais e�caz ao
desenvolvimento, mas também promove a colaboração e a responsabilidade da equipe, fatores
essenciais para o sucesso de qualquer projeto. 
O controle de versões é uma peça fundamental na gestão de projetos de desenvolvimento de
software. Permite o acompanhamento das alterações no código-fonte, documentação e outros
recursos do projeto. Isso garante que as equipes possam colaborar de maneira e�ciente, rastrear
o progresso do desenvolvimento e, se necessário, reverter para versões anteriores. 
Ferramentas como Git e SVN desempenham um papel importante nesse processo, oferecendo
funcionalidades robustas para rastreamento e gerenciamento de versões. 
Dominar esses conceitos fundamentais no desenvolvimento de software não apenas estabelece
uma base sólida, mas também capacita os desenvolvedores a enfrentarem desa�os complexos
de forma e�caz e a entregar produtos de alta qualidade.  
Portanto, dedicar tempo para compreender e aplicar esses princípios é um investimento valioso
para qualquer pro�ssional de desenvolvimento de software.  
Videoaula: Revisão da unidade
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo, abordaremos os fundamentos da engenharia de software,
modelos de processos, requisitos de software, métodos ágeis como Scrum e XP, e o crucial
controle de versões. Esses conhecimentos são essenciais para se tornar um desenvolvedor de
software excepcional. Não perca essa oportunidade de aprimorar suas habilidades! Assista
agora e fortaleça sua jornada na programação. 
Disciplina
Engenharia de Software
Estudo de caso
Considere que você está trabalhando como pro�ssional desenvolvedor de software e enfrenta
um desa�o crucial em sua empresa. Você foi escolhido para liderar um projeto de
desenvolvimento de uma aplicação de gerenciamento de tarefas. A empresa está buscando uma
solução e�ciente para otimizar a organização e acompanhamento das atividades da equipe. 
O projeto requer uma abordagem estruturada de Engenharia de Software para garantir que as
necessidades do cliente sejam compreendidas e atendidas de forma precisa. Portanto, é
essencial de�nir claramente os requisitos e o escopo do sistema, assegurando que a aplicação
�nal satisfaça as expectativas e requisitos do cliente. 
Além disso, para lidar com a dinâmica do projeto e as possíveis alterações nas demandas do
cliente ao longo do tempo, a equipe optou por adotar práticas ágeis. Essa escolha permitirá
entregas incrementais e funcionais, mantendo a �exibilidade para adaptar-se a mudanças nos
requisitos do projeto. 
Por �m, a equipe reconhece a necessidade de um e�caz sistema de Controle de Versões para
gerenciar o código de forma organizada e e�ciente. A escolha desta ferramenta proporcionará a
capacidade de rastrear e gerenciar alterações no código-fonte, facilitando o desenvolvimento
colaborativo e a integração de novas funcionalidades. 
Você deve criar uma aplicação de gerenciamento de tarefas que atenda às necessidades
especí�cas do cliente, proporcionando uma solução e�caz para a organização e
acompanhamento de atividades da equipe. Para alcançar esse objetivo, é fundamental aplicar
práticas de Engenharia de Requisitos e adotar uma abordagem ágil no processo de
desenvolvimento.  
______________
Re�ita
Disciplina
Engenharia de Software
No contexto do projeto liderado por você, a criação de uma aplicação de gerenciamento de
tarefas bem-sucedida depende de várias estratégias fundamentais. Aqui estão algumas
recomendações-chave que podem ser aplicadas para enfrentar esse desa�o: 
 
Compreensão profunda das necessidades do cliente: antes de iniciar o desenvolvimento, é
importante conduzir uma análise detalhada das necessidades do cliente. Isso envolve a
realização de reuniões de levantamento de requisitos e a documentação cuidadosa de
todas as expectativas e funcionalidades desejadas. 
Prototipagem e validação contínua: a criação de protótipos funcionais pode ser uma
ferramenta valiosa para validar a compreensão dos requisitos do cliente. Ao fornecer
protótipos iterativos, a equipe pode garantir que a aplicação esteja no caminho certo desde
o início. 
Iterações ágeis e comunicação constante: a abordagem ágil é essencial para lidar com as
mudanças de requisitos e manter a �exibilidade durante o desenvolvimento. Sprints
regulares e reuniões de revisão permitem que a equipe ajuste o curso conforme necessário
e promove a colaboração contínua. 
Testes rigorosos e garantia de qualidade: implementaruma estratégia de testes abrangente
é importante para identi�car e corrigir problemas antes da entrega �nal. Testes unitários, de
integração e de aceitação do usuário devem ser realizados de forma consistente. 
Controle de versões e gestão de código: a seleção da ferramenta de controle de versões é
crucial para manter o código organizado e permitir a colaboração e�caz entre os membros
da equipe. A capacidade de rastrear e gerenciar alterações no código é fundamental para
um desenvolvimento bem-sucedido. 
 
Ao aplicar essas estratégias, você e sua equipe estarão bem-posicionados para enfrentar o
desa�o de criar uma aplicação de gerenciamento de tarefas que atenda às expectativas do
cliente e ofereça uma solução e�caz para a organização e acompanhamento de atividades da
equipe.  
A combinação de práticas de Engenharia de Requisitos e abordagens ágeis proporcionará uma
base sólida para o sucesso do projeto. 
Videoaula: Resolução do estudo de caso
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Disciplina
Engenharia de Software
Você enfrentou os desa�os apresentados no projeto de desenvolvimento da aplicação de
gerenciamento de tarefas com uma abordagem meticulosa e estratégica. Diante da necessidade
de uma solução e�ciente para otimizar a organização e acompanhamento das atividades da
equipe, você optou por adotar o Scrum como metodologia ágil. O Scrum foi escolhido por suas
vantagens de permitir entregas incrementais, manter a �exibilidade para responder a mudanças
nos requisitos do projeto e promover a colaboração e�caz da equipe. 
A aplicação da Engenharia de requisitos foi essencial para compreender plenamente as
necessidades do cliente. Você conduziu entrevistas detalhadas com analistas e stakeholders,
garantindo que todos os requisitos fossem claramente de�nidos. Isso assegurou que a aplicação
�nal atendesse às expectativas e exigências do cliente, proporcionando uma solução e�caz para
a gestão de tarefas da equipe. 
Além disso, você reconheceu a importância do Git como a ferramenta de Controle de Versões
escolhida. Essa escolha permitiu o rastreamento e a gestão e�caz das alterações no código-
fonte. Commits regulares e a criação de branches especí�cos para funcionalidades facilitaram o
desenvolvimento colaborativo e a integração de novas funcionalidades. 
Ao enfrentar o desa�o de integrar uma nova funcionalidade de noti�cações em tempo real, você
e sua equipe adotaram a abordagem do XP. A programação em pares, uma prática comum do XP,
permitiu uma revisão constante do código, garantindo a qualidade e a robustez do sistema.
Testes automatizados foram implementados para veri�car continuamente a integridade do
software, contribuindo para um desenvolvimento mais con�ável. 
Ao �nal de cada sprint, a equipe realizou revisões para analisar o progresso e planejar os
próximos passos. Graças à abordagem ágil do Scrum, que permitiu entregas contínuas e
adaptação às mudanças, juntamente com a e�ciência do Git no Controle de Versões e as
práticas do XP, a aplicação de gerenciamento de tarefas evoluiu de forma consistente e alinhada
às expectativas do cliente. 
Você demonstrou habilidades notáveis ao enfrentar os desa�os do projeto. Sua abordagem
estratégica, combinando o Scrum como metodologia ágil, práticas e�cazes de Engenharia de
requisitos e o uso do Git para o Controle de Versões, resultou em um progresso consistente e na
criação de uma aplicação que promete atender de forma e�caz às necessidades da equipe e do
cliente.  
Essa experiência destaca a importância de abordagens bem pensadas e integração de práticas
e�cazes na Engenharia de Software. 
Resumo visual
Disciplina
Engenharia de Software
Veja o resumo visual da unidade:
Disciplina
Engenharia de Software
Referências
Disciplina
Engenharia de Software
ARTERO, Marcio M. Aparecido. Gestão de projetos de software. Londrina: Editora e Distribuidora
Educacional S.A., 2016. 
BECK, K. S. K. S. J. E. A..; Manifesto for Agile Software Development. Disponível em:
http://agilemanifesto.org. Acesso em:  23 de setembro de 2023. 
FABRIS, Polyanna P. Pacheco P. G.omes; FABRIS, Luis L. Cláudio C. Perini. Processo de software.
[S. l.]: Editora e Distribuidora Educacional S.A., 2014. 
PRESSMANN, R.oger S. Engenharia de software: uma abordagem pro�ssional. 7. ed. Porto
Alegre: AMGH, 2011   
SOMMERVILLE, I.an; KOTONYA, Gerald. Engenharia de software. 4. ed. São Paulo: Pearson
Addison, 2011. 
,
Unidade 2
Qualidade de software
Aula 1
Introdução à qualidade de software
Introdução
http://agilemanifesto.org/
Disciplina
Engenharia de Software
Olá, estudante! Nesta aula abordaremos a qualidade de software. 
A qualidade de software envolve a avaliação da excelência e adequação de um sistema de
software. Erros são desvios do comportamento esperado, enquanto falhas são manifestações
visíveis desses erros em tempo de execução. Defeitos representam falhas não resolvidas, e bugs
são erros especí�cos que causam defeitos. 
A garantia de qualidade de software é o conjunto de práticas para garantir que um produto
atenda aos padrões estabelecidos. Isso inclui revisões de código, testes de software e
conformidade com padrões de desenvolvimento. 
Métricas de qualidade permitem a medição objetiva da qualidade do software. Elas podem incluir
taxas de defeitos por milhão de linhas de código, tempo médio entre falhas, cobertura de teste e
conformidade com padrões de codi�cação. 
Esses conceitos são fundamentais para o desenvolvimento de software de alta qualidade,
garantindo que ele atenda às expectativas do usuário e seja con�ável em seu desempenho. 
 Qualidade de software
Disciplina
Engenharia de Software
Qualidade de software é um conceito fundamental no desenvolvimento de aplicações, e
compreender seus elementos-chave é essencial para produzir software con�ável e e�caz.
Baseado nas contribuições de autores como Pressman e Weinberg (2021), pode-se explorar os
principais conceitos associados à qualidade de software. 
Erros: são discrepâncias entre o que o software deve fazer e o que realmente faz. Eles são
falhas humanas no processo de desenvolvimento e podem incluir equívocos na análise de
requisitos, codi�cação incorreta ou má interpretação de especi�cações. 
Falhas: são o resultado visível dos erros. São ocorrências que prejudicam o funcionamento
do software durante a execução. Quando um erro não detectado se manifesta em uso,
chamamos isso de falha. 
Defeitos: são erros identi�cados durante a fase de teste ou após a entrega do software.
São problemas que precisam ser corrigidos para que o software funcione conforme o
esperado. A correção de defeitos é uma parte crucial do ciclo de desenvolvimento. 
Qualidade: a qualidade de software se refere aos atributos que determinam o quão bem o
software atende às necessidades dos usuários. Isso inclui e�ciência, con�abilidade,
usabilidade, segurança e outros aspectos que contribuem para a satisfação do cliente. 
Bugs: embora o termo "bug" seja frequentemente usado de forma intercambiável com "erro"
ou "defeito", originalmente, referia-se a problemas causados por insetos físicos que
interferiam em sistemas computacionais. Atualmente, é uma forma informal de se referir a
erros ou defeitos no software. 
Garantir a qualidade de software envolve a identi�cação e correção atempada de erros e
defeitos, bem como a busca constante pela melhoria dos atributos de qualidade. Pressman e
outros especialistas enfatizam a importância de processos de desenvolvimento bem de�nidos,
Disciplina
Engenharia de Software
testes rigorosos e a participação ativa dos stakeholders ao longo do ciclo de vida do software
para alcançar a qualidade desejada.  
Em última análise, a qualidade de software não é apenas sobre a ausência de erros, mas também
sobre a entrega de um produto que atenda às expectativas e necessidades dos usuários. 
Garantia de Qualidade deSoftware
A Garantia de Qualidade de Software (GQS) é um componente essencial do processo de
desenvolvimento de software, cujo objetivo principal é assegurar que um produto de software
atenda aos mais altos padrões de qualidade e satisfaça as expectativas dos usuários. É um
conjunto abrangente de práticas, processos e procedimentos que visam identi�car e corrigir
problemas de qualidade ao longo do ciclo de vida do software, desde a concepção até a
manutenção. 
A GQS abrange várias áreas-chave: 
Planejamento de qualidade: de�ne os objetivos de qualidade, os critérios de aceitação e os
processos a serem seguidos durante o desenvolvimento. 
Garantia de processo: garante que os processos de desenvolvimento de software sejam
seguidos de maneira consistente e e�ciente, identi�cando áreas de melhoria. 
Controle de qualidade: envolve a veri�cação de produtos de trabalho especí�cos para
garantir que atendam aos requisitos de qualidade estabelecidos. 
Disciplina
Engenharia de Software
Testes de software: realiza testes rigorosos para identi�car defeitos e veri�car se o
software está funcionando conforme o esperado. 
Revisões e inspeções: envolve revisões sistemáticas de código, design e documentação
para identi�car problemas precocemente. 
Padrões e normas: adesão a padrões de qualidade e normas da indústria, como o CMMI
("Capability Maturity Model Integration") e o ISO 9001 – (International Organization for
Standardization (Organização Internacional para Normalização, em português). 
Melhoria Contínua: promove a avaliação e melhoria contínua dos processos e práticas de
desenvolvimento. 
A GQS desempenha um papel crítico na redução de riscos e custos associados a defeitos e
falhas em software. Isso não apenas melhora a con�abilidade do software, mas também
aumenta a satisfação do cliente e a competitividade no mercado. 
A automação desempenha um papel crescente na GQS, com ferramentas de teste automatizado
e integração contínua e entrega contínua (CI/CD) facilitando a detecção precoce de problemas.
Além disso, a GQS não é uma tarefa isolada, mas uma responsabilidade compartilhada por toda
a equipe de desenvolvimento, que deve estar comprometida com a qualidade desde o início do
projeto. 
Assim, a garantia de qualidade de software é um conjunto de práticas essenciais para garantir
que o software seja desenvolvido com alto nível de qualidade, atendendo aos requisitos dos
usuários e às expectativas do mercado, ao mesmo tempo em que minimiza riscos e custos
associados a problemas de qualidade.
Métricas de qualidade
Disciplina
Engenharia de Software
Métricas de qualidade são ferramentas essenciais no mundo do desenvolvimento de software e
em muitos outros domínios. Elas oferecem uma maneira objetiva de medir, avaliar e acompanhar
a qualidade de produtos, processos ou serviços.  
Essas métricas desempenham um papel fundamental na tomada de decisões informadas, na
identi�cação de áreas de melhoria e no acompanhamento do progresso em direção a objetivos
de qualidade especí�cos. 
Existem diversas métricas de qualidade, cada uma com seu propósito e aplicação especí�cos.
Alguns exemplos incluem: 
Taxa de defeitos: essa métrica mede o número de defeitos encontrados em um produto de
software em relação a uma métrica de tamanho, como o número de linhas de código. Ela
Disciplina
Engenharia de Software
ajuda a avaliar a estabilidade do software. 
Cobertura de testes: essa métrica indica a porcentagem de código ou funcionalidades que
foram testadas em relação ao total. Uma cobertura de testes mais alta geralmente está
associada a um menor risco de defeitos não detectados. 
Tempo Médio Entre Falhas (MTBF): é uma métrica comum em sistemas críticos, medindo o
tempo médio que um sistema funciona sem falhas. Quanto maior o MTBF, mais con�ável é
o sistema. 
Tempo de resolução de defeitos: mede o tempo necessário para identi�car, relatar e corrigir
defeitos. Um tempo menor indica uma equipe de desenvolvimento mais e�ciente. 
Satisfação do cliente: essa métrica avalia a satisfação dos clientes com o produto ou
serviço. Ela pode ser medida por meio de pesquisas de satisfação, feedback direto dos
clientes ou taxas de retenção. 
Complexidade ciclomática: usada para medir a complexidade do código-fonte, ajudando a
identi�car áreas que podem ser difíceis de manter e entender. 
Taxa de rejeição de requisitos: mede a proporção de requisitos inicialmente especi�cados
que foram posteriormente alterados ou rejeitados. Isso pode indicar problemas na
compreensão inicial dos requisitos. 
Índice de vulnerabilidades: em segurança de software, essa métrica rastreia o número e a
gravidade das vulnerabilidades identi�cadas no código. 
E�ciência de processo: avalia a e�ciência dos processos de desenvolvimento, medindo o
tempo, os recursos e os custos envolvidos na produção de um produto ou serviço. 
Taxa de entregas no prazo: mede quantos projetos ou entregas são concluídos dentro do
prazo estabelecido, o que é crucial para o cumprimento de compromissos. 
É importante notar que a escolha das métricas deve ser alinhada aos objetivos e ao contexto do
projeto ou organização. Além disso, métricas de qualidade não devem ser usadas isoladamente;
elas devem ser consideradas em conjunto para uma visão holística da qualidade. 
Em resumo, métricas de qualidade desempenham um papel vital na avaliação e no
aprimoramento da qualidade de produtos, processos e serviços. Elas fornecem uma base sólida
para a tomada de decisões informadas, permitindo que as organizações alcancem níveis mais
altos de qualidade, satisfação do cliente e e�ciência operacional. 
Videoaula: Introdução à qualidade de software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo veremos como os Conceitos de Qualidade de Software
envolvem erros (desvios nas especi�cações), falhas (manifestações visíveis de erros em tempo
Disciplina
Engenharia de Software
de execução), defeitos (erros identi�cados durante testes), qualidades (atributos como e�ciência
e segurança) e bugs (termo informal para erros/defeitos). 
A Garantia de Qualidade de Software é um conjunto de práticas para garantir padrões de
desenvolvimento, incluindo revisões, testes e conformidade com normas. 
Métricas de Qualidade são medidas objetivas usadas para avaliar a qualidade do software, como
taxa de defeitos, cobertura de teste e satisfação do cliente, auxiliando na gestão e melhoria dos
processos. 
Saiba mais
A qualidade de software é um elemento crítico no desenvolvimento de sistemas de informação e
aplicações em nossa era digital. Para compreender plenamente a qualidade de software, é
fundamental explorar conceitos-chave que moldam nossa abordagem à criação de programas
con�áveis e e�cazes.  
Neste contexto, examinaremos os conceitos de erros, falhas, defeitos, qualidades e bugs, que
constituem os pilares fundamentais da qualidade de software.  
Vamos adentrar cada um desses conceitos e explorar como eles se entrelaçam na busca pela
excelência no desenvolvimento de software. 
CAMPOS, F. M. Qualidade, Qualidade de Software e Garantia da Qualidade de Software são as
mesmas coisas? Linha de código.  
Métricas de software são medidas quantitativas usadas para avaliar características e aspectos
do desenvolvimento de software. Elas permitem acompanhar o desempenho, a qualidade e a
e�ciência dos processos e produtos de software.  
http://www.linhadecodigo.com.br/artigo/1712/qualidade-qualidade-de-software-e-garantia-da-qualidade-de-software-sao-as-mesmas-coisas.aspx
http://www.linhadecodigo.com.br/artigo/1712/qualidade-qualidade-de-software-e-garantia-da-qualidade-de-software-sao-as-mesmas-coisas.aspx
Disciplina
Engenharia de Software
Essas métricas incluem elementos como a taxa de defeitos, a cobertura de testes, a
complexidade do código e outros indicadores que auxiliam no gerenciamento e melhoria dosprojetos de software.  
O uso adequado de métricas de software é essencial para tomar decisões informadas, melhorar
a qualidade do software e atender às necessidades dos clientes.  
CAMPOS, F. M. Métricas de Software Como Ferramenta de Apoio ao Gerenciamento de Projetos
de Software. Linha de código.  
Referências
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9.ed. Porto
Alegre: AMGH, 2021.  
IEEE Transactions on Software Engineering. ISSN: 0098-5589.  
Aula 2
Qualidade de produto
Introdução
http://www.linhadecodigo.com.br/artigo/453/metricas-de-software-como-ferramenta-de-apoio-ao-gerenciamento-de-projetos-de-software.aspx
http://www.linhadecodigo.com.br/artigo/453/metricas-de-software-como-ferramenta-de-apoio-ao-gerenciamento-de-projetos-de-software.aspx
Disciplina
Engenharia de Software
Olá, estudante! Nesta aula, falaremos sobre a gestão da qualidade do produto que é um pilar
essencial para o sucesso de qualquer organização, independentemente de seu tamanho ou setor.
Ela se estende além da simples criação de um produto, envolvendo a aplicação de padrões
rigorosos, medições precisas, e avaliações minuciosas para garantir que o produto atenda não
apenas às expectativas dos clientes, mas também aos padrões internacionais de qualidade.  
Abordaremos como medir a qualidade, que não é apenas quanti�car a ausência de defeitos, mas
também avaliar a e�cácia, con�abilidade e satisfação do cliente. Ferramentas e métricas
precisas são empregadas para medir aspectos como con�abilidade operacional, tempo médio
entre falhas (MTBF), satisfação do cliente e conformidade com padrões prede�nidos.  
A qualidade do produto começa com uma compreensão detalhada dos requisitos do cliente.
Estabelecer requisitos claros e mensuráveis é crucial. A avaliação da qualidade implica em
garantir que o produto atenda a esses requisitos em todos os estágios do desenvolvimento,
desde a concepção até a entrega �nal ao cliente. Isso envolve processos robustos de teste,
revisões detalhadas e feedback contínuo dos clientes. 
A International Organization for Standardization (ISO) estabelece normas globalmente
reconhecidas que de�nem critérios para sistemas de gestão da qualidade. Normas como a ISO
9001 fornece diretrizes precisas para estabelecer e manter sistemas de gestão da qualidade
e�cazes. A conformidade com essas normas não apenas garante a qualidade do produto, mas
também impulsiona a e�ciência operacional e a satisfação do cliente. 
 Gestão da qualidade do produto
Disciplina
Engenharia de Software
A Gestão da Qualidade do Produto é um conjunto de práticas e processos que visam garantir a
entrega de produtos ou serviços que atendam ou superem as expectativas dos clientes.
Fundamentada em princípios como melhoria contínua, liderança, engajamento dos
colaboradores e foco no cliente, a gestão da qualidade do produto tornou-se uma pedra angular
para o sucesso empresarial. 
No cerne desse conceito está o compromisso de criar produtos que se destaquem não apenas
pela funcionalidade, mas também pela durabilidade, con�abilidade e experiência do usuário. A
gestão da qualidade envolve a de�nição rigorosa de padrões de qualidade, a implementação de
processos de produção e�cientes e a realização de avaliações regulares para identi�car áreas de
melhoria. 
A implementação e�caz da gestão da qualidade do produto resulta em inúmeros benefícios.
Clientes satisfeitos são mais propensos a se tornarem clientes �éis, recomendando os produtos
a outras pessoas. Além disso, a reputação da empresa é fortalecida, levando a um aumento da
con�ança dos investidores e parceiros de negócios. Internamente, promove um ambiente de
trabalho positivo, onde os funcionários se sentem valorizados pelo seu papel na produção de
produtos de alta qualidade. 
A gestão da qualidade do produto também está intimamente ligada à inovação. Empresas que
buscam consistentemente melhorar a qualidade de seus produtos muitas vezes acabam por
criar soluções inovadoras para as necessidades dos clientes, mantendo-se à frente da
concorrência. 
No contexto dinâmico dos negócios modernos, medir, entender os requisitos e avaliar a
qualidade, tornaram-se pilares essenciais para o sucesso organizacional. A medição é o
Disciplina
Engenharia de Software
processo de quanti�car características e desempenho, proporcionando dados tangíveis para
análise. Através da medição, as empresas podem identi�car padrões, monitorar progressos e
tomar decisões baseadas em evidências. 
Entender os requisitos, por sua vez, é vital. São as necessidades e expectativas dos clientes e
stakeholders que de�nem o curso de um projeto. Um profundo entendimento dos requisitos é o
alicerce de qualquer produto ou serviço de qualidade. Isso não apenas envolve o que os clientes
pedem explicitamente, mas também antecipar suas necessidades latentes, garantindo assim
uma experiência completa e satisfatória. 
Desse modo, a avaliação da qualidade é o processo crítico de examinar produtos, processos ou
serviços em relação a padrões prede�nidos. Envolve uma análise minuciosa para garantir que o
que foi produzido esteja em conformidade com os requisitos estabelecidos. Ela não apenas
identi�ca defeitos, mas também destaca áreas de excelência, fornecendo insights valiosos para
melhorias contínuas. 
As Normas ISO de Qualidade são um conjunto de diretrizes e critérios estabelecidos pela
International Organization for Standardization (ISO) para assegurar a qualidade e e�ciência de
produtos, serviços e sistemas em organizações ao redor do mundo. Essas normas não apenas
de�nem padrões técnicos, mas também incorporam as melhores práticas e experiências globais
para promover a qualidade, segurança e con�abilidade em diversos setores. 
O objetivo primordial das Normas ISO de Qualidade é fornecer às organizações um quadro claro
e consistente para alcançar a excelência operacional. Elas estabelecem critérios rigorosos para
processos, produtos e serviços, abordando áreas como gestão ambiental, gestão de segurança
da informação, qualidade de serviços de saúde, entre outras.  
A conformidade com essas normas não apenas valida a qualidade dos produtos ou serviços,
mas também aumenta a credibilidade da organização no mercado global. 
As normas ISO não são estáticas; elas evoluem para acompanhar as mudanças nas tecnologias,
práticas e expectativas do cliente. Ao seguir esses padrões, as organizações podem melhorar
continuamente seus processos e operações, resultando em maior e�ciência, redução de
desperdícios e melhoria na satisfação do cliente. 
Além disso, as Normas ISO de Qualidade oferecem uma vantagem competitiva signi�cativa. As
empresas que obtêm certi�cações ISO demonstram seu compromisso com a qualidade e a
excelência, o que pode atrair novos clientes, parceiros de negócios e investidores.
Compreensão e conhecimento sobre qualidade do produto
Disciplina
Engenharia de Software
A compreensão e o conhecimento profundo da gestão da qualidade do produto são cruciais para
qualquer organização que busque a excelência e a satisfação do cliente. Signi�ca não apenas
entender os princípios teóricos, mas também aplicá-los de maneira prática e adaptável a
contextos especí�cos. Isso envolve uma compreensão detalhada das técnicas de medição, dos
requisitos precisos do cliente e das normas de qualidade relevantes.  
Também, requer habilidades em implementar e monitorar sistemas de gestão de qualidade,
liderar equipes para alcançar padrões elevados e analisar dados para identi�car áreas de
melhoria contínua. A verdadeira expertise em gestão da qualidade do produto não apenas
assegura que os produtos atendam ou superem as expectativas dos clientes, mas também ajuda
as organizações a alcançar e�ciência operacional, minimizar desperdícios, aumentar a con�ança
dos clientes e fortalecer sua posição no mercado.  
Em última análise, o domínio da gestão da qualidade do produto é um investimento valioso para
qualquer pro�ssional ou organização que busque qualidade, inovação e sucesso sustentável. 
O conhecimentoprofundo sobre medição, requisitos e avaliação da qualidade são essenciais
para garantir a excelência em qualquer produto ou serviço. A medição é a base objetiva para
avaliar o desempenho, proporcionando dados tangíveis sobre e�ciência, con�abilidade e
satisfação do cliente.  
Entender como medir corretamente é crucial para tomar decisões informadas e melhorar
continuamente. Por outro lado, a de�nição precisa dos requisitos é o alicerce sobre o qual
qualquer projeto é construído. Saber identi�car e documentar claramente o que o cliente precisa
é fundamental para atender às expectativas.  
A avaliação da qualidade é o processo contínuo de comparar o resultado com esses requisitos,
assegurando que cada detalhe seja examinado e que qualquer desvio seja corrigido
rapidamente.  
Ter uma compreensão sólida desses conceitos não apenas garante que o produto �nal seja de
alta qualidade, mas também permite a adaptação às mudanças do mercado, promovendo a
Disciplina
Engenharia de Software
satisfação do cliente e impulsionando a inovação e a competitividade.  
Portanto, a compreensão e o conhecimento em medição, requisitos e avaliação da qualidade são
a chave para alcançar padrões superiores e estabelecer um diferencial competitivo signi�cativo
no cenário global. 
As normas ISO de qualidade são vitais para qualquer organização que busque excelência e
padrões internacionais em seus produtos ou serviços. Elas oferecem diretrizes e melhores
práticas globalmente aceitas, garantindo que as organizações estejam alinhadas com os
critérios de qualidade reconhecidos internacionalmente.  
Ter um profundo entendimento dessas normas não apenas demonstra o compromisso da
empresa com a qualidade e a satisfação do cliente, mas também proporciona um conjunto claro
de diretrizes para a gestão e�caz dos processos e sistemas.  
Conhecer as normas ISO permite que as organizações melhorem continuamente seus produtos e
serviços, otimizem a e�ciência operacional, reduzam custos, minimizem riscos e mantenham
uma vantagem competitiva no mercado global.  
Assim sendo, a compreensão e o conhecimento aprofundados das normas ISO capacitam as
organizações a atingir padrões de qualidade consistentes, construir uma reputação sólida e
estabelecer relacionamentos de con�ança com os clientes em todo o mundo. 
As normas ISO evoluíram desde meados da década de 1990, na direção de articular uma
estrutura única ou modelo único de gestão e evolução, para as diversas atividades exercidas
pelas empresas. Em tal evolução, os temas qualidade, meio ambiente, segurança do trabalho,
segurança da informação, energia, ativos e riscos ganharam, cada um, sua própria norma de
sistema de gestão. No ano de 2012, este modelo único de normas de sistemas de gestão foi
renovado, uniformizando a estrutura e metodologia de auditoria, permitindo que as empresas
uni�cassem o seu sistema de gestão em um sistema único onde cada norma poderia ser
adotada, sem a necessidade de criação de estruturas distintas dentro de uma organização. 
Aplicações de gestão de qualidade
Disciplina
Engenharia de Software
A aplicação efetiva da gestão da qualidade do produto, juntamente com medição, requisitos e
avaliação da qualidade, aliada ao cumprimento das normas ISO de qualidade, é um imperativo
para organizações que buscam se destacar em um mercado global competitivo.  
A gestão da qualidade do produto envolve não apenas a eliminação de defeitos, mas também a
criação de produtos que se alinham perfeitamente às expectativas dos clientes. Isso começa
com uma compreensão profunda dos requisitos do cliente, orientando o desenvolvimento do
produto desde as fases iniciais até a entrega �nal. 
A evolução das normas de qualidade, desde meados da década de 1990, adicionou ao conceito
de qualidade a visão a longo prazo de objetivos e metas, para manter ou aprimorar
continuamente a satisfação do cliente e também, mais recentemente, a visão de gestão de
riscos, para aumentar a resiliência da organização frente a constantes mudanças de tecnologia
no mercado. 
Períodos de guerras, recessão econômica e pandemia passaram a compor a análise crítica
contínua de cenários de todas as organizações e ao longo dos anos �cou cada vez mais difícil
separar a qualidade dos serviços e produtos de uma empresa de seus canais de marketing,
vendas e pós-vendas. Desde o pequeno artesão, até uma grande empresa multinacional, todos
dependem de pelo menos um sistema integrado de vendas ou relacionamento com o cliente.  
A medição é essencial para quanti�car o desempenho e a e�cácia dos processos, enquanto a
avaliação contínua da qualidade garante que o produto �nal atenda aos padrões exigidos. 
A conformidade com as normas ISO de qualidade, como a ISO 9001(ISO, 2015), proporciona um
guia estruturado para estabelecer e manter sistemas de gestão de qualidade e�cazes. Adotar
Disciplina
Engenharia de Software
essas normas garante consistência nos processos e confere con�ança aos clientes, mostrando
que a organização está comprometida com a excelência e a melhoria contínua.  
As normas ISO fornecem um conjunto abrangente de diretrizes, desde a de�nição de requisitos
até a medição e avaliação da qualidade, estabelecendo um padrão globalmente reconhecido. 
Ao integrar a gestão da qualidade do produto, medição precisa, requisitos claros e a adesão
rigorosa às normas ISO, as organizações podem criar um ambiente onde a inovação �oresce, a
satisfação do cliente é maximizada e a reputação é solidi�cada. Essa abordagem não apenas
impulsiona a qualidade dos produtos, mas também melhora a e�ciência operacional, reduz os
custos associados a defeitos e fortalece a competitividade da organização no mercado
internacional.  
Assim, a aplicação combinada desses princípios não apenas garante produtos de alta qualidade,
mas também estabelece um caminho claro para a excelência sustentável e o sucesso a longo
prazo. 
Videoaula: Qualidade de produto
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo veremos como os conceitos de Gestão de Qualidade do
produto, aliados à medição de requisitos e avaliação da qualidade do produto, é fundamental
para as empresas. Saber utilizar é necessário para os pro�ssionais que pretendem interagir com
as diversas áreas de aplicação. Por outro lado, é importante conhecer as normas ISO de
qualidade e procurar garantir o uso destas para melhorar a qualidade dos produtos
desenvolvidos dentro das empresas.  
Saiba mais
Disciplina
Engenharia de Software
A gestão da qualidade do produto é um processo estratégico essencial para garantir que os
produtos atendam ou excedam as expectativas dos clientes. Envolve a de�nição de padrões
rigorosos de qualidade, desde a concepção até a entrega, incorporando métodos de medição
precisos, análise criteriosa dos requisitos do cliente e avaliação contínua do desempenho.  
Uma gestão e�caz da qualidade não apenas assegura a con�abilidade e durabilidade dos
produtos, mas também impulsiona a satisfação do cliente e a reputação da marca. Saiba mais
no artigo: “Gestão da qualidade: 5 motivos para fazer”. 
As normas ISO de qualidade, estabelecidas pela International Organization for Standardization
(ISO), são conjuntos de diretrizes técnicas globalmente aceitas que visam garantir a excelência e
a consistência em produtos, serviços e sistemas.  
Estas normas são fundamentais para organizações que buscam alcançar padrões internacionais
de qualidade e e�ciência. Elas oferecem um conjunto claro de regras e melhores práticas,
ajudando as empresas a melhorar a qualidade dos produtos, otimizar processos, aumentar a
e�ciência operacional e, por �m, aumentar a satisfação do cliente.  
A conformidade com as normas ISO não apenas valida a qualidade dos produtos e serviços, mas
também reforça a reputação da organização, garantindo aos clientes que estão lidando com uma
empresa queopera em níveis globalmente reconhecidos de excelência e con�abilidade. Saiba
mais no artigo disponível na base de artigos cientí�cos Scielo, intitulado “Contribuição dos
modelos de qualidade e maturidade na melhoria dos processos de software”, dos autores
Antônio Carlos Tonini, Marly Monteiro de Carvalho e Mauro de Mesquita Spinola. 
TONINI, A.C.; CARVALHO, M. M,; SPINOLA, M. M. Contribuição dos modelos de qualidade e
maturidade na melhoria dos processos de software. Produção, v. 18 n. 2, maio/ago. 2008, p. 275-
286.  
https://tworh.com.br/gestao-da-qualidade-5-motivos-para-fazer/
https://www.scielo.br/j/prod/a/hVWM5wDTD6vYzGRcq7FzSxc/?format=pdf&lang=pt
https://www.scielo.br/j/prod/a/hVWM5wDTD6vYzGRcq7FzSxc/?format=pdf&lang=pt
Disciplina
Engenharia de Software
Referências
ABNT - ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO 9001:2015: Sistemas
de gestão da qualidade – requisitos. Rio de Janeiro, 2008. 
BASILI, V. R. et al., Experimentation in software engineering, in IEEE Transactions on Software
Engineering, vol. SE-12, no. 7, pp. 733-743, Julho de 1986, doi: 10.1109/TSE.1986.6312975.  
PAULA FILHO, W. P. Engenharia de Software: projetos e processos. 4.ed. Rio de Janeiro: LTC,
2019.  
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9.ed. Porto
Alegre: AMGH, 2021.  
SOMMERVILLE, I. Engenharia de Software. 10.ed. São Paulo: Pearson Education do Brasil, 2018.  
Aula 3
Qualidade de processo
Introdução
Disciplina
Engenharia de Software
Olá, estudante! A Melhoria de Processo de Software Brasileiro (MPS.BR) é uma iniciativa nacional
que visa aprimorar os processos de desenvolvimento de software no Brasil. Essa abordagem
sistemática foi criada para elevar os padrões da indústria de software brasileira, promovendo a
excelência e a competitividade. O MPS.BR foi desenvolvido por especialistas brasileiros e é
adaptado às necessidades e realidades do cenário de TI do país. 
Para dar continuidade, iremos descrever os Modelos de Maturidade, como o Capability Maturity
Model (CMM) e seu sucessor, o Capability Maturity Model Integration (CMMI), representam
abordagens sistemáticas para avaliar e melhorar a maturidade dos processos de uma
organização. Esses modelos oferecem um caminho estruturado para aprimorar as práticas e os
procedimentos em organizações que estão envolvidas em atividades complexas, como o
desenvolvimento de software.  
O CMM, desenvolvido pelo Software Engineering Institute (SEI) nos Estados Unidos, foi pioneiro
nesse campo ao fornecer um conjunto de critérios para avaliar a maturidade dos processos de
desenvolvimento de software. 
Abordaremos, também, as normas ISO de qualidade de processos que são conjuntos de
diretrizes e critérios internacionalmente reconhecidos, estabelecidos pela International
Organization for Standardization (ISO), que de�nem padrões para garantir a excelência
operacional e a qualidade em diversas áreas da indústria.  
Essas normas proporcionam às organizações um conjunto claro de melhores práticas para
aprimorar seus processos, gerenciar riscos e alcançar a satisfação do cliente. Elas estabelecem
padrões elevados para a e�ciência e a e�cácia dos processos, mas também promovem a
inovação, a sustentabilidade e a competitividade global.  
Ao seguir as normas ISO de qualidade de processos, as organizações não apenas garantem a
conformidade com padrões internacionais, mas também demonstram um compromisso
inabalável com a melhoria contínua e a excelência em suas operações. 
Disciplina
Engenharia de Software
 Processo de software brasileiro
Na engenharia de software, em que a complexidade se encontra com a criatividade, a gestão da
qualidade do produto assume um papel central. É mais do que apenas eliminar defeitos; é sobre
criar sistemas que não apenas atendem às expectativas dos clientes, mas as superem. Na
essência da gestão da qualidade do produto está a criação de software que é robusto, seguro,
con�ável, e�ciente e, acima de tudo, valioso para o usuário �nal. 
O primeiro passo crucial na gestão da qualidade do produto é a de�nição de requisitos claros e
compreensíveis. Compreender exatamente o que o cliente precisa é a base de qualquer projeto
bem-sucedido. A análise cuidadosa dos requisitos, envolvendo todas as partes interessadas, é
essencial para evitar mal-entendidos e garantir que a visão do cliente seja totalmente
incorporada no produto �nal. 
A medição, requisitos e avaliação da qualidade são pilares fundamentais para garantir produtos e
serviços de alta qualidade em qualquer domínio, desde a engenharia de software até a produção
industrial.  
A medição envolve a aplicação de métricas especí�cas para quanti�car diversos aspectos do
processo ou do produto, permitindo uma compreensão objetiva do desempenho e identi�cando
áreas para melhorias.  
Por outro lado, a de�nição clara e detalhada dos requisitos é essencial. Os requisitos precisam
ser compreendidos profundamente, tanto em termos técnicos quanto nas expectativas dos
clientes, para orientar o processo de desenvolvimento na direção certa.  
Por �m, a avaliação da qualidade é um processo contínuo que envolve a comparação dos
resultados obtidos com os requisitos estabelecidos, veri�cando se o produto está conforme o
esperado e permitindo ajustes e melhorias contínuas. Em conjunto, esses três elementos
formam a espinha dorsal da garantia da qualidade, garantindo que os produtos e serviços
atendam aos padrões esperados, sejam eles relacionados à funcionalidade, con�abilidade,
segurança ou satisfação do cliente. 
Disciplina
Engenharia de Software
As normas ISO de qualidade, desenvolvidas pela International Organization for Standardization
(ISO), estabelecem diretrizes e padrões internacionalmente reconhecidos para garantir a
qualidade e a e�ciência em diversos setores.  
Essas normas oferecem um conjunto de melhores práticas, processos e critérios que as
organizações podem seguir para garantir a qualidade dos produtos, serviços e sistemas, bem
como para melhorar continuamente seu desempenho.  
Ao aderir às normas ISO de qualidade, as empresas demonstram um compromisso com a
excelência e a satisfação do cliente. Além disso, a conformidade com essas normas não apenas
melhora a qualidade dos produtos e serviços, mas também aumenta a e�ciência operacional,
reduz os custos, fortalece a reputação da empresa e, em última análise, contribui para o sucesso
e a competitividade no mercado global.  
As normas ISO, portanto, desempenham um papel fundamental na criação de padrões
consistentes de qualidade em escala internacional, bene�ciando tanto as organizações quanto
os consumidores. 
Melhoria do processo do software brasileiro
A interpretação e compreensão da Melhoria de Processo de Software Brasileiro, ou MPS.BR, são
fundamentais para as organizações que buscam aprimorar seus processos de desenvolvimento
de software no contexto brasileiro.  
O MPS.BR é uma iniciativa nacional que oferece um caminho estruturado para melhorar
continuamente os processos organizacionais, elevando a qualidade dos produtos de software e
a competitividade das empresas. 
Interpretar e conhecer o MPS.BR, envolve compreender os critérios e práticas de�nidos pelo
modelo, adaptados às necessidades especí�cas das empresas brasileiras. Isso inclui a
compreensão das diferentes etapas de maturidade, desde o nível F (incompleto) até o nível A
(em otimização), e a aplicação de práticas especí�cas para alcançar cada estágio. 
Disciplina
Engenharia de Software
Compreendê-lo, portanto, requer a familiaridade com as diretrizes do modelo e a capacidade de
as contextualizar nas operações da organização. Envolve identi�car áreas de melhoria nos
processos existentes, implementar as melhores práticas sugeridas pelo MPS.BR e monitorar
continuamente o progresso para garantir a conformidade com os padrões estabelecidos.  
Assim, é necessário engajamento ativo de todas as partes interessadas, desde líderes de equipe
até desenvolvedores e gerentes de projeto. Isso requer uma comunicação clara e e�cazpara
garantir que todos compreendam o propósito do MPS.BR, os benefícios que ele traz para a
organização e as responsabilidades de cada indivíduo no processo de implementação. 
Modelos de Maturidade, como o Capability Maturity Model (CMM) e o Capability Maturity Model
Integration (CMMI), são importantes para as organizações que buscam aprimorar seus
processos e alcançar padrões elevados de excelência operacional. Eles fornecem uma estrutura
sólida para avaliar a maturidade dos processos organizacionais, permitindo uma análise
profunda e uma melhoria estruturada. 
Interpretar o CMM envolve entender os cinco níveis de maturidade: Inicial, Repetitivo, De�nido,
Gerenciado e Otimizado. Cada nível representa um estágio especí�co de maturidade nos
processos da organização, desde a ausência de um processo de�nido até a melhoria contínua e
otimização. Compreender o CMM signi�ca aplicar as melhores práticas e os critérios de
avaliação em cada estágio, permitindo uma transição suave de um nível para outro. 
Já o CMMI expande essa compreensão para várias áreas de processo, incluindo
desenvolvimento, serviços, aquisição e gerenciamento. Interpretar o CMMI envolve identi�car as
áreas de processo relevantes para a organização e aplicar as práticas especí�cas em cada uma
delas.  
Além disso, compreender o CMMI signi�ca entender os diferentes níveis de capacidade e
maturidade para cada área de processo, desde processos inicialmente executados até
processos otimizados e em melhoria contínua. 
Interpretar normas como a ISO 9001, que se concentra em sistemas de gestão da qualidade,
envolve entender os requisitos especí�cos para estabelecer, implementar, manter e melhorar
continuamente um sistema de gestão de qualidade. Desse modo, deve-se analisar cada cláusula
da norma e adaptar suas diretrizes para atender às necessidades e às operações da
organização. 
Compreender as normas ISO de qualidade de processos requer um conhecimento profundo dos
princípios de gestão de qualidade, incluindo liderança, envolvimento das partes interessadas,
abordagem de processos, melhoria contínua, abordagem baseada em evidências e tomada de
decisões baseada em dados. É essencial traduzir esses princípios em práticas operacionais
tangíveis e alinhadas com os objetivos estratégicos da organização. 
A interpretação e compreensão das normas ISO também envolvem a capacidade de adaptar as
diretrizes padrão para o contexto especí�co da organização. Isso signi�ca personalizar os
processos e os sistemas de acordo com a natureza do negócio, o tamanho da organização, a
indústria em que atua e as expectativas dos clientes. 
Além disso, interpretar e compreender essas normas, implica em uma abordagem contínua de
aprendizado e melhoria. As organizações devem estar cientes das atualizações nas normas, bem
como das melhores práticas emergentes, para garantir que seus sistemas de gestão da
qualidade estejam sempre alinhados com os padrões mais recentes e e�cazes. 
Disciplina
Engenharia de Software
Aplicações de melhoria no processo do produto
A aplicação efetiva da gestão da qualidade do produto, juntamente com medição, requisitos e
avaliação da qualidade, aliada ao cumprimento das normas ISO de qualidade, é um imperativo
para organizações que buscam se destacar em um mercado global competitivo.  
A gestão da qualidade do produto envolve a eliminação de defeitos e a criação de produtos que
se alinham perfeitamente às expectativas dos clientes. Isso começa com uma compreensão
profunda dos requisitos do cliente, orientando o desenvolvimento do produto desde as fases
iniciais até a entrega �nal.  
A medição é essencial para quanti�car o desempenho e a e�cácia dos processos, enquanto a
avaliação contínua da qualidade garante que o produto �nal atenda aos padrões exigidos. 
A aplicação da Melhoria de Processo de Software Brasileiro, conhecido como MPS.BR, é um
marco signi�cativo para as organizações de desenvolvimento de software no Brasil. Trata-se de
uma iniciativa nacional que oferece uma estrutura estratégica e sistemática para melhorar os
processos de software, promovendo a qualidade, a e�ciência e a competitividade no mercado
global. 
Uma das principais características do MPS.BR é sua �exibilidade. Ele pode ser adaptado para
atender às necessidades especí�cas de diferentes tipos de empresas, independentemente do
seu tamanho ou setor de atuação. A aplicação envolve uma série de etapas, desde a avaliação
inicial da maturidade dos processos até a implementação de práticas e melhorias contínuas. 
A primeira etapa envolve uma avaliação rigorosa dos processos existentes na organização. Com
base nessa avaliação, são identi�cados pontos fortes e áreas de melhoria. Em seguida, um plano
de ação é desenvolvido para implementar práticas que estejam em conformidade com os
padrões estabelecidos pelo MPS.BR. Isso pode incluir treinamento de equipe, revisão e
reestruturação de processos, implementação de ferramentas de gerenciamento e monitoramento
contínuo do desempenho. 
Disciplina
Engenharia de Software
A aplicação dos Modelos de Maturidade, como o Capability Maturity Model (CMM) e o Capability
Maturity Model Integration (CMMI), é uma estratégia fundamental para organizações que
buscam aprimorar seus processos e atingir níveis mais altos de e�ciência e qualidade. Esses
modelos fornecem uma estrutura sólida e bem de�nida para avaliar a maturidade dos processos
organizacionais, permitindo uma melhoria gradual e estruturada. 
A aplicação envolve uma análise aprofundada dos processos existentes da organização,
classi�cando-os em cinco níveis de maturidade: Inicial, Repetitivo, De�nido, Gerenciado e
Otimizado. Cada nível representa um estágio especí�co de maturidade, desde processos
informais até processos altamente e�cientes e otimizados. Ao identi�car o nível atual de
maturidade, a organização pode desenvolver um plano de melhoria que inclui a implementação
de práticas especí�cas para elevar o nível de maturidade dos processos. 
Por outro lado, o CMMI expande essa aplicação para várias áreas de processo, incluindo
desenvolvimento, serviços, aquisição e gerenciamento. A organização deve identi�car as áreas
de processo relevantes para seu contexto e aplicar as práticas especí�cas de�nidas pelo CMMI.  
A aplicação bem-sucedida do CMMI requer uma abordagem integrada, em que as práticas são
aplicadas de forma interconectada para garantir uma melhoria abrangente dos processos 
A aplicação do modelo CMMI está intimamente ligada à gestão de projetos, uma vez que ao
avançar pelos níveis de maturidade a organização precisa articular e encadear projetos de curto,
médio e longo prazos, envolvendo tanto áreas internas, como externas à organização. 
Nessa gestão de projetos que envolve a evolução pelos níveis de maturidade, será possível notar
ao longo dos anos a respectiva evolução da empresa e seus produtos / serviços em relação ao
aprimoramento de sua qualidade e redução correspondente de custos e riscos. 
A aplicação das normas ISO de qualidade de processos é um passo fundamental para
organizações que buscam alcançar padrões internacionalmente reconhecidos de excelência
operacional. As normas da ISO (International Organization for Standardization) fornecem
diretrizes detalhadas e estruturadas para melhorar processos e sistemas organizacionais,
garantindo e�cácia, e�ciência e satisfação do cliente. 
Ao aplicar as normas ISO, as organizações precisam, primeiro, entender os requisitos especí�cos
de cada norma que se aplica ao seu setor e contexto. Por exemplo, a ISO 9001(ABNT,2015) foca
em sistemas de gestão de qualidade, enquanto a ISO 27001(ABNT, 2006) trata de sistemas de
gestão de segurança da informação. A aplicação bem-sucedida dessas normas envolve uma
análise profunda dos processos organizacionais existentes para identi�car pontos fortes e áreas
de melhoria em relação aos padrões de�nidos pela ISO. 
A implementação prática dessas normas requer um compromisso total da liderança e uma
participação ativa de todos os membros da organização. Isso implica a criação ea
documentação de processos claros e procedimentos operacionais que estejam em
conformidade com os requisitos da norma.  
Além disso, envolve a realização de auditorias internas regulares para garantir que os processos
continuem em conformidade e a preparação para auditorias externas, feitas por órgãos de
certi�cação, quando necessário. 
A aplicação das normas ISO não apenas eleva os padrões de qualidade e e�ciência, mas
também leva a uma cultura organizacional voltada para a melhoria contínua. Ao seguir os
princípios e as práticas recomendadas pelas normas, as organizações podem reduzir erros,
aumentar a con�abilidade de seus produtos e serviços, melhorar a satisfação do cliente e, por
consequência, fortalecer sua reputação no mercado. 
Disciplina
Engenharia de Software
Videoaula: Qualidade de processo
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo veremos conceitos de Melhorias do Processo de Software
Brasileiro, e interpretação e utilização dos modelos de Maturidade – CMM e CMMI, trataremos,
também, das normas da ISO utilizada para a qualidade de processos. Tudo isso aplicado nas
empresas do seguimento de projetos e desenvolvimento de software, no território brasileiro. É
muito importante compreender de forma a aplicar dentro das empresas, de forma a melhorar a
qualidade do software projetado.  
Saiba mais
A gestão de qualidade do produto é vital para empresas que buscam oferecer produtos que
atendam ou superem as expectativas dos clientes. Envolve a implementação de estratégias,
processos e técnicas para garantir que os produtos atendam aos padrões de qualidade
Disciplina
Engenharia de Software
estabelecidos. Isso inclui desde a concepção e desenvolvimento até a produção, distribuição e
suporte pós-venda.  
A gestão de qualidade do produto engloba a de�nição de requisitos claros, o controle rigoroso de
processos de produção, a realização de testes de qualidade detalhados e a monitorização
contínua do desempenho do produto no mercado. Além de assegurar que o produto atenda às
especi�cações técnicas, a gestão de qualidade do produto também visa garantir a segurança, a
con�abilidade e a durabilidade dos produtos, bem como a satisfação e a �delidade dos clientes.  
Uma gestão e�caz da qualidade do produto não apenas eleva a reputação da empresa, mas
também fortalece a relação com os clientes e impulsiona a competitividade no mercado. 
Saiba mais sobre o assunto no artigo cientí�co, disponível na base Scielo, intitulado “Alinhando
objetivos estratégicos e processo de desenvolvimento em empresas de software”, dos autores
André Leme Fleury, Mauro de Mesquita Spinola, Fernando José Barbin Laurindo e Marcelo
Schneck de Paula Pessôa. 
FLEURY, A. L. et al. Alinhando objetivos estratégicos e processo de desenvolvimento em
empresas de software. Produção, v. 24, n. 2, Abr/Jun. 2014, p. 379-39. 
Os Modelos de Maturidade, como o Capability Maturity Model (CMM) e o Capability Maturity
Model Integration (CMMI), representam padrões globalmente reconhecidos na área de
gerenciamento de processos e qualidade. Eles oferecem uma estrutura detalhada para avaliar e
melhorar a maturidade dos processos organizacionais. Ele foca em áreas especí�cas do
processo, fornecendo uma avaliação detalhada do estado atual e orientando as organizações
para melhorias incrementais.  
Por outro lado, uma expansão do CMM, abrange várias disciplinas, como desenvolvimento,
serviços e aquisição, permitindo uma abordagem mais ampla para avaliação e melhoria de
processos. Saiba mais sobre o assunto no artigo a seguir: 
THIAGO. CMMI (Capability Maturity Model Integration). DEVMEDIA. 2006. 
Referências
https://www.scielo.br/j/prod/a/pBFg7djgTHMt9HNsdpvjssy/?format=pdf&lang=pt
https://www.scielo.br/j/prod/a/pBFg7djgTHMt9HNsdpvjssy/?format=pdf&lang=pt
https://www.devmedia.com.br/cmmi-capability-maturity-model-integration/3530
https://www.devmedia.com.br/cmmi-capability-maturity-model-integration/3530
Disciplina
Engenharia de Software
ABNT – ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO/IEC 27001 –
Tecnologia da informação – Técnicas de segurança – Sistemas de gestão de segurança da
informação – Requisitos. 2006. 
ABNT - ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO 9001:2015: Sistemas
de gestão da qualidade – requisitos. Rio de Janeiro, 2008. 
BASILI, V. R. et al., Experimentation in software engineering, in IEEE Transactions on Software
Engineering, vol. SE-12, no. 7, pp. 733-743, Julho de 1986, doi: 10.1109/TSE.1986.6312975.  
PAULA FILHO, W. P. Engenharia de Software: projetos e processos. 4.ed. Rio de Janeiro: LTC,
2019.  
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021.  
SOMMERVILLE, I. Engenharia de Software. 10.ed. São Paulo: Pearson Education do Brasil, 2018.  
Aula 4
Auditoria de sistemas
Introdução
Disciplina
Engenharia de Software
Olá, estudante! Nesta aula falaremos sobre os conceitos de auditoria de tecnologia de
informação do produto, ciclos de vida da auditoria e Tipos de auditoria.  
A auditoria de tecnologia da informação é uma prática essencial que visa avaliar a e�cácia e a
segurança dos sistemas de informação de uma organização. Para conduzir auditorias e�cazes,
os pro�ssionais precisam entender os conceitos fundamentais da auditoria de tecnologia da
informação, incluindo metodologias de avaliação e práticas de revisão.  
Essas auditorias seguem ciclos de vida especí�cos, envolvendo a preparação, a execução, a
documentação dos resultados e a comunicação das descobertas. Existem diversos tipos de
auditorias de tecnologia da informação, como auditorias de segurança, de conformidade e de
desempenho, cada uma focada em aspectos especí�cos dos sistemas de informação.  
Compreender esses conceitos é essencial para garantir que as auditorias sejam conduzidas de
forma abrangente, identi�cando vulnerabilidades, garantindo a conformidade com padrões e
regulamentações, e promovendo a e�ciência operacional dos sistemas de TI da organização.  
 Conceitos de auditoria
Disciplina
Engenharia de Software
Os conceitos de auditoria de tecnologia da informação desempenham um papel essencial no
mundo digital da atualidade, pois a segurança e a e�ciência dos sistemas de informação são
fundamentais para o sucesso das organizações.  
A auditoria de tecnologia da informação refere-se à avaliação sistemática e independente dos
processos, sistemas e infraestrutura de TI de uma organização. Ela tem como objetivo avaliar a
integridade, con�dencialidade, disponibilidade e autenticidade das informações, bem como
identi�car e mitigar riscos relacionados à segurança cibernética.  
No contexto empresarial, a auditoria de TI ajuda a assegurar que os controles de segurança
estejam robustos, que as práticas estejam em conformidade com padrões e regulamentações, e
que os dados estejam protegidos contra ameaças internas e externas.  
Compreender os conceitos fundamentais desse processo é importante para pro�ssionais de TI,
auditores e gestores, pois permite uma abordagem estratégica e e�caz para garantir a
integridade e segurança dos ativos digitais de uma organização. 
Os ciclos de vida da auditoria representam as fases essenciais do processo, desde a fase de
planejamento até a comunicação dos resultados. Durante a fase de planejamento, os auditores
de�nem os objetivos, escopo e abordagem da auditoria.  
Em seguida, vem a fase de execução, em que os procedimentos de auditoria são aplicados,
dados são coletados e análises são realizadas. Após a execução, a fase de relatório começa,
nesse momento os resultados são documentados, incluindo descobertas, recomendações e
conclusões.  
Finalmente, na fase de acompanhamento, as ações corretivas são monitoradas para garantir que
as recomendações sejam implementadas. Esses ciclos de vida são vitais para garantirque a
auditoria seja conduzida de forma abrangente, objetiva e e�caz, proporcionando uma visão clara
do estado dos processos e controles auditados. 
Os tipos de auditorias formam uma categoria diversi�cada de práticas de avaliação, cada uma
focada em objetivos especí�cos dentro do campo da auditoria. Estes tipos incluem auditorias
Disciplina
Engenharia de Software
�nanceiras, que se concentram nas �nanças e contabilidade de uma organização, visando a
precisão e conformidade com regulamentos; auditorias operacionais, que avaliam e�ciência,
e�cácia e economia dos processos organizacionais; e auditorias de conformidade, que
asseguram que as operações estejam em linha com leis e regulamentações.  
Além disso, existem auditorias de segurança da informação que avaliam sistemas e controles de
segurança cibernética; auditorias ambientais, que focam em práticas sustentáveis e
conformidade ambiental; e auditorias de qualidade, que garantem que produtos ou serviços
atendam aos padrões de�nidos.  
Compreender esses diferentes tipos de auditorias é crucial para adaptar as estratégias de
avaliação de acordo com os objetivos especí�cos da organização, garantindo que sejam
conduzidas de maneira precisa, e�ciente e bené�ca para a empresa. 
Ciclo de vida das auditorias
Conceitos de auditoria de tecnologia da informação (TI) referem-se às práticas e processos
fundamentais empregados para avaliar, analisar e melhorar os sistemas de informação de uma
organização.  
A auditoria de TI envolve uma avaliação independente e sistemática dos controles, políticas,
procedimentos, estruturas organizacionais e salvaguardas tecnológicas de uma empresa. Seu
objetivo é assegurar que os sistemas de informação estejam operando e�cazmente, sejam
Disciplina
Engenharia de Software
seguros contra ameaças cibernéticas e estejam em conformidade com padrões regulatórios e
políticas internas. 
Os pro�ssionais dessa área examinam a infraestrutura tecnológica da organização, identi�cam
vulnerabilidades, avaliam a e�cácia dos controles de segurança e recomendam melhorias. Isso
não apenas garante a proteção dos ativos de informação da empresa, como também ajuda a
aumentar a e�ciência operacional e a con�abilidade dos sistemas. 
Os ciclos de vida da auditoria são estruturas fundamentais que de�nem as etapas e os
processos envolvidos na condução de uma auditoria e�caz. Essas etapas são projetadas para
garantir que a auditoria seja abrangente, objetiva e siga uma abordagem sistemática para
avaliação. Existem várias etapas-chave em um ciclo de vida típico de auditoria, começando pelo
planejamento, em que os objetivos da auditoria são estabelecidos, o escopo é de�nido e os
recursos são alocados. 
A próxima fase é a de execução, em que os procedimentos de auditoria são aplicados, dados são
coletados, evidências são examinadas e análises são realizadas. Essa etapa envolve entrevistas,
revisões de documentos, testes e outras atividades para veri�car a conformidade, precisão e
e�cácia dos controles e processos auditados. 
Após a execução, a fase de relatório entra em jogo. Nesse estágio, os resultados da auditoria são
documentados de forma clara e objetiva. Isso inclui descobertas, recomendações, conclusões e,
se necessário, planos de ação para correções ou melhorias. 
O relatório de auditoria deve ser claro em relação à premissas utilizadas para a auditoria, as
quais estabelecem os limites de abrangência de profundidade de cada tipo de erro,
vulnerabilidade ou problema que a auditoria tem como objetivo identi�car 
A auditoria não se encerra com a reunião de entrega do relatório �nal, pois os pontos elencados,
como não conformidades ou sugestões de melhoria, precisam ser atrelados a um responsável e
respectivo prazo para a resolução, formalizando um plano de ação consistente. 
Cada resolução poderá ainda, dentro do plano de ação resultante do relatório de auditoria, ser
dividida em duas partes. Uma primeira parte denominada disposição ou contenção, que visa
amenizar ou deter, os efeitos causados pelo problema detectado na auditoria e a segunda parte,
que constitui a resolução completa do problema, se esta não for possível ser imediatamente
implementada, devido à necessidade de modi�cação ou implementação de nova infraestrutura
de dados. 
As auditorias de software são processos essenciais que visam avaliar a qualidade, segurança e
conformidade dos sistemas e aplicativos de software em uma organização. Existem vários tipos
de auditorias de software, cada um com foco em aspectos especí�cos dos sistemas de TI. 
1. Auditoria de segurança de software: concentra-se na identi�cação de vulnerabilidades de
segurança nos sistemas de software. Os auditores examinam os controles de segurança,
as políticas de acesso e as práticas de criptogra�a para garantir que os dados e sistemas
estejam protegidos contra ameaças cibernéticas.
2. Auditoria de conformidade de software: nesse tipo de auditoria, os auditores avaliam se o
software e os sistemas estão em conformidade com regulamentações e padrões da
indústria. Isso é essencial para garantir que a organização cumpra requisitos legais,
contratuais e regulatórios, como leis de proteção de dados ou normas da indústria de
pagamento.
3. Auditoria de qualidade de software: tem como foco a qualidade do código e do processo de
desenvolvimento. Os auditores examinam o código-fonte, a arquitetura do software, os
Disciplina
Engenharia de Software
padrões de codi�cação e os processos de teste para garantir que o software seja robusto,
con�ável e livre de defeitos.
4. Auditoria de desempenho de software: neste tipo de auditoria, os auditores avaliam o
desempenho dos aplicativos e sistemas. Eles analisam tempos de resposta, escalabilidade,
carga máxima e e�ciência operacional para garantir que o software funcione de maneira
rápida e e�caz, mesmo sob carga intensa.
5. Auditoria de licenciamento de software: veri�ca se a organização está utilizando o software
de acordo com as licenças adquiridas. Isso é crucial para evitar problemas legais e
�nanceiros associados à violação de direitos autorais e licenças de software. 
Compreender os diferentes tipos de auditorias de software é fundamental para garantir que os
sistemas de TI estejam seguros, em conformidade e operando com e�ciência. Cada tipo de
auditoria desempenha um papel importante na proteção dos ativos digitais e na garantia da
con�ança dos usuários e clientes. 
Aplicações de auditorias
A aplicação dos conceitos de auditoria de tecnologia da informação é importante para garantir a
segurança, e�cácia e conformidade dos sistemas de informação em uma organização. Ao
aplicar esses conceitos, os pro�ssionais de auditoria podem realizar avaliações detalhadas dos
controles de segurança, políticas de acesso, práticas de gerenciamento de riscos e
conformidade com regulamentações. 
Ela ajuda a identi�car vulnerabilidades, detectar ameaças cibernéticas, avaliar a integridade dos
dados e garantir que os sistemas estejam alinhados com os objetivos estratégicos da empresa.
Também, veri�ca se as políticas de segurança estão sendo seguidas, se os dados estão sendo
protegidos adequadamente e se os sistemas estão operando com e�ciência. 
Ao realizar auditorias regulares, as organizações podem evitar violações de dados, minimizar
riscos de segurança, garantir a conformidade com regulamentações como GDPR (General Data
Protection Regulation - Regulamento Geral de Proteção de Dados), HIPAA (Health Insurance
Portability and Accountability Act - Lei de Portabilidade e Responsabilidade de Seguro de Saúde)
ou PCI DSS (Payment Card Industry Data Security Standard - Padrão de Segurança de Dados da
Indústria de Cartões de Pagamento), e melhorar a e�ciência operacional dos sistemas de TI.  
Disciplina
Engenharia de Software
Além disso, as auditorias de TI proporcionam transparência e con�ança aos stakeholders,
clientes e parceiros, demonstrando um compromisso sólido com a segurança da informação e a
integridade dos dados. 
A aplicação dos ciclos de vida da auditoria é essencialpara conduzir uma auditoria de forma
e�caz e abrangente em qualquer organização. Esses ciclos representam as fases cruciais pelas
quais uma auditoria passa, desde o planejamento até o acompanhamento das ações corretivas. 
Planejamento: a fase inicial do ciclo de vida envolve estabelecer os objetivos, de�nir o
escopo e determinar as metodologias e recursos necessários para a auditoria. Os auditores
elaboram um plano detalhado, identi�cam os riscos a serem avaliados e desenvolvem uma
estratégia de execução. 
Execução: durante essa fase, os procedimentos de auditoria são aplicados. Isso inclui
coletar dados, analisar documentos, realizar entrevistas, testes e outras atividades para
avaliar os controles, a conformidade e a e�cácia dos processos. 
Relatório: após a execução, os resultados são documentados em um relatório. Este
documento inclui descobertas, recomendações e conclusões derivadas da auditoria. O
relatório é uma peça fundamental, pois fornece informações claras sobre as áreas de
melhoria e as ações corretivas necessárias. 
Acompanhamento: esta fase é essencial para garantir que as recomendações da auditoria
sejam implementadas de forma adequada e e�caz. Os auditores monitoram as ações
corretivas, veri�cam se as melhorias foram feitas conforme recomendado e avaliam se os
controles estão operando conforme o esperado. 
Ao longo de alguns ciclos �nalizados de auditoria é possível atrelar gradualmente os resultados
das ações corretivas aos indicadores corporativos de melhoria de qualidade, redução de custos e
redução dos prazos de atendimento de demandas internas e externas. 
Embora o processo de auditorias de sistemas de gestão de dados seja uma evolução dos
sistemas de asseguramento da qualidade de produtos e serviços, ele possui características
especí�cas quanto à análise de riscos e de�nição de um sistema de contingências capaz de
bloquear ou pelo menos amenizar um problema, tão logo este seja detectado. 
A �nalização de alguns ciclos de auditoria também pode originar dentro da organização uma
matriz de riscos mais aprimorada, fornecendo premissas mais robustas para as auditorias
posteriores. A matriz de risco aprimorada ao longo de vários ciclos de auditoria também trará
para as equipes internas, uma visão mais clara de como detectar mais rapidamente erros
simples e como prevenir que problemas complexos possam ser pelo menos barrados em ações
de contingência mais e�cientes. 
Cada tipo de auditoria de software tem um foco especí�co, mas quando aplicados em conjunto,
oferecem uma visão completa e detalhada do ambiente de software de uma empresa. 
1. Auditoria de segurança de software: a auditoria de segurança de software foca em
identi�car vulnerabilidades e ameaças nos sistemas. Ela examina políticas de segurança,
con�gurações de �rewall, práticas de autenticação e autorização, bem como outros
controles de segurança. Ao identi�car e corrigir falhas de segurança, as organizações
podem proteger dados sensíveis contra acessos não autorizados e ataques cibernéticos.
2. Auditoria de conformidade de software: veri�ca se os sistemas e aplicativos estão em
conformidade com leis, regulamentações e padrões do setor. Isso inclui regulamentos
Disciplina
Engenharia de Software
como o GDPR, HIPAA e PCI DSS. Garantir a conformidade com essas leis é vital para evitar
multas e manter a con�ança dos clientes.
3. Auditoria de qualidade de software: a auditoria de qualidade de software avalia o código-
fonte, arquitetura do software e práticas de desenvolvimento. Isso ajuda a garantir que o
software seja robusto, e�ciente e livre de defeitos. Uma qualidade de software superior
reduz falhas, melhora a experiência do usuário e aumenta a e�ciência operacional.
4. Auditoria de desempenho de software: avalia a e�ciência operacional dos sistemas de
software. Ela analisa tempos de resposta, escalabilidade e e�ciência operacional sob
carga. Melhorar o desempenho do software garante uma experiência do usuário mais
rápida e con�ável.
5. Auditoria de licenciamento de software: esta auditoria veri�ca se os softwares estão sendo
usados de acordo com as licenças adquiridas. Isso é essencial para evitar penalidades
legais e garantir o uso ético e legal do software.
Existem empresas especializadas na execução, separadamente ou em conjunto, de cada um dos
5 tipos de auditoria elencados acima, mas uma equipe interna ou externa à organização que
receberá a auditoria, deverá ser formada para planejar e concluir a organização proveniente de
cada uma delas 
Tal equipe de coordenação geral, da auditoria e suas ações rami�cadas, será responsável por
encerrar cada ciclo, validando as ações concluídas dos planos de ação elaborados para resolver
as contingências e ações corretivas, originadas pela auditoria.
Videoaula: Auditoria de sistemas
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo veremos os conceitos de auditoria de tecnologia da
informação, é importante este conhecimento pela aplicação na área de tecnologia. Falaremos
sobre Regulamento Geral de Proteção de Dados, e os tipos de auditoria de software que existem.
Vejamos uma breve descrição sobre cada um destes itens, garantem um conhecimento na área
de engenharia de software.  
Saiba mais
Disciplina
Engenharia de Software
As auditorias de software desempenham um papel crucial na garantia da segurança, qualidade e
conformidade dos sistemas digitais. Existem diversos tipos de auditoria em software, cada um
com um enfoque especí�co.  
A auditoria de segurança de software, concentra-se na identi�cação e correção de
vulnerabilidades para proteger contra ameaças cibernéticas. Por outro lado, a auditoria de
conformidade de software assegura que os sistemas estejam alinhados com regulamentações e
padrões do setor, como o GDPR ou o HIPAA.  
A auditoria de qualidade de software avalia a robustez e con�abilidade do código-fonte,
melhorando a experiência do usuário e reduzindo defeitos. Em relação ao desempenho, a
auditoria de desempenho de software analisa a e�ciência operacional, garantindo que os
sistemas operem de forma rápida e e�caz mesmo sob carga intensa. 
E1IT. Auditoria de Software: 6 dicas para preparar a sua empresa. Marketing. 2018. 
A auditoria em software é um processo essencial que visa avaliar a integridade, segurança e
conformidade dos sistemas de computador e aplicativos em uma organização. Envolve uma
análise sistemática e detalhada do código-fonte, arquitetura, controles de segurança e práticas
de desenvolvimento.  
Os conceitos de auditoria em software abrangem diversas áreas, incluindo a identi�cação de
vulnerabilidades, análise de conformidade com regulamentações e padrões do setor, avaliação
da qualidade do código, desempenho e e�ciência operacional.  
Além disso, a auditoria em software também se estende à veri�cação de licenciamento para
garantir que os softwares sejam usados de acordo com as licenças adquiridas.  
SUNSOFTWARE BRASIL. Auditoria de TI: entenda quais são as principais e seus objetivos. 2018. 
Referências
https://e1it.com.br/post/auditoria-de-software-6-dicas-para-preparar-a-sua-empresa
https://www.sunsoftware.com.br/auditoria-de-ti/
Disciplina
Engenharia de Software
BASILI, V. R. et al., Experimentation in software engineering, in IEEE Transactions on Software
Engineering, vol. SE-12, no. 7, pp. 733-743, Julho de 1986, doi: 10.1109/TSE.1986.6312975.  
PAULA FILHO, W. P. Engenharia de Software: projetos e processos. 4. ed. Rio de Janeiro: LTC,
2019.  
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021.  
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil, 2018.  
Aula 5
Revisão da unidade
 Qualidade de produto e de processo
Disciplina
Engenharia de Software
A qualidade de software é uma disciplina crucial no desenvolvimentode sistemas, abrangendo
diversos conceitos essenciais. Erros, falhas e defeitos representam estágios distintos no
processo, começando com equívocos no código (erros), manifestando-se como
comportamentos indesejados (falhas) e resultando em desvios da especi�cação original
(defeitos).  
Para garantir a qualidade, é necessária uma abordagem estruturada, conhecida como garantia de
qualidade de software, que envolve atividades preventivas e de veri�cação para assegurar que os
processos e produtos atendam aos padrões estabelecidos. 
A avaliação da qualidade de software é apoiada por métricas, que proporcionam indicadores
mensuráveis para atributos como e�ciência, con�abilidade, manutenibilidade, usabilidade,
portabilidade e segurança. Essas métricas são cruciais para identi�car áreas de melhoria, tomar
decisões informadas e aprimorar continuamente os processos de desenvolvimento. 
Bugs, por sua vez, são imperfeições especí�cas no código que causam comportamentos
indesejados. A detecção e correção e�caz de bugs são aspectos críticos da garantia de
qualidade, visando garantir que o software atenda aos requisitos do usuário de maneira
consistente e con�ável. 
A gestão da qualidade do produto é uma abordagem integral que busca garantir a excelência em
todas as fases do ciclo de vida do produto. Isso envolve a de�nição clara de requisitos de
qualidade, medição precisa do desempenho do produto em relação a esses requisitos e
avaliação contínua para identi�car oportunidades de melhoria. 
A medição da qualidade do produto é essencial para avaliar o grau de conformidade com os
requisitos prede�nidos. Isso inclui a utilização de métricas especí�cas que abrangem
Disciplina
Engenharia de Software
características como con�abilidade, durabilidade, e�ciência e usabilidade. A coleta e análise
sistemática dessas métricas permitem uma visão objetiva do desempenho do produto. 
Os requisitos de qualidade desempenham um papel central na gestão da qualidade do produto,
de�nindo as expectativas e padrões a serem alcançados. Esses requisitos devem ser claros,
mensuráveis e alinhados às necessidades dos clientes. 
As normas ISO de qualidade desempenham um papel crucial na padronização e melhoria
contínua da gestão da qualidade do produto. A norma ISO 9001 (ABNT, 2015), por exemplo,
estabelece diretrizes para sistemas de gestão de qualidade, promovendo a e�ciência
operacional, satisfação do cliente e conformidade com requisitos regulamentares. 
O MPS.BR (Melhoria de Processo do Software Brasileiro) é uma iniciativa nacional que busca
aprimorar a qualidade e a maturidade dos processos de desenvolvimento de software no Brasil.
Esse modelo fornece um conjunto de práticas e critérios para avaliar e aprimorar os processos
de software, atendendo às necessidades especí�cas do contexto brasileiro. 
Os modelos de maturidade, como o CMM (Capability Maturity Model) e o CMMI (Capability
Maturity Model Integration), são frameworks internacionais que de�nem estágios evolutivos nos
processos de uma organização. O CMMI, em particular, oferece uma abordagem mais
abrangente, integrando diferentes áreas de processo e promovendo a melhoria contínua. 
Normas ISO, como a ISO/IEC 12207 (ISO, 1995) e a ISO/IEC 15504 (ISO, 2004), desempenham um
papel crucial na qualidade dos processos de software, fornecendo diretrizes para o ciclo de vida
do software e avaliação da capacidade de processo. Essas normas internacionais estabelecem
padrões reconhecidos globalmente, promovendo a interoperabilidade e a conformidade com as
melhores práticas. 
A implementação do MPS.BR, aliada aos modelos de maturidade e normas ISO, oferece às
organizações brasileiras uma estrutura robusta para aprimorar seus processos de
desenvolvimento de software. Essas abordagens promovem e�ciência, previsibilidade e
qualidade, resultando em produtos e serviços mais con�áveis e competitivos no cenário global. 
A auditoria de tecnologia da informação (TI) envolve a avaliação sistemática e independente dos
controles de tecnologia de uma organização para garantir a integridade, con�dencialidade e
disponibilidade de suas informações. Os ciclos de vida da auditoria de TI são compostos por
fases distintas, começando com o planejamento, seguido pela execução, comunicação de
resultados e, �nalmente, pelo acompanhamento e monitoramento contínuo. 
Existem diversos tipos de auditorias de TI, cada um direcionado a objetivos especí�cos. A
auditoria de conformidade veri�ca se os controles estão alinhados com padrões e
regulamentações, enquanto a auditoria operacional avalia a e�cácia dos processos internos. A
auditoria de segurança se concentra em identi�car vulnerabilidades e ameaças, enquanto a
auditoria de sistemas examina a integridade e a e�ciência dos sistemas de informação. 
Durante o ciclo de vida da auditoria, é essencial garantir a independência do auditor e a
objetividade na avaliação dos controles. A comunicação e�caz dos resultados da auditoria,
juntamente com recomendações para melhorias, é uma parte vital do processo, permitindo que a
organização fortaleça seus controles e proteja seus ativos de informação. 
Videoaula: Revisão da unidade
Disciplina
Engenharia de Software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo veremos como a gestão da qualidade do produto é essencial
para o desenvolvimento de sistemas, envolvendo a de�nição de requisitos, medição de
desempenho e avaliação contínua. Métricas especí�cas, como e�ciência e usabilidade, são
fundamentais na busca pela excelência. A norma ISO 9001 contribui para padronização e
melhoria contínua. Na gestão da qualidade de software, o MPS.BR busca aprimorar processos no
contexto brasileiro, enquanto modelos de maturidade como CMM e CMMI e normas ISO, como a
ISO/IEC 12207, fortalecem a qualidade internacionalmente. 
Ao abordar a auditoria de tecnologia da informação, o ciclo de vida inclui planejamento,
execução, comunicação de resultados e acompanhamento. Diversos tipos de auditorias, como
conformidade e segurança, garantem a integridade, con�dencialidade e disponibilidade das
informações, essenciais para a e�ciência das organizações no ambiente digital. 
Estudo de caso
Melhoria de processo de software em uma empresa brasileira 
Em uma empresa brasileira de desenvolvimento de software, a implementação do MPS.BR
(Melhoria de Processo do Software Brasileiro) foi adotada como parte integrante da estratégia
Disciplina
Engenharia de Software
para elevar a qualidade de seus produtos.  
O processo iniciou com a avaliação inicial dos processos existentes, identi�cação de lacunas e a
de�nição de metas especí�cas de melhoria, alinhadas aos requisitos do MPS.BR. A empresa
também buscou a certi�cação ISO 9001 para fortalecer sua abordagem de gestão da qualidade. 
Durante o processo de implementação, a empresa adotou métricas de qualidade, como
e�ciência e usabilidade, para monitorar o desempenho dos seus produtos. Além disso, foram
implementados modelos de maturidade, como CMMI, para aprimorar a maturidade dos
processos, buscando uma abordagem mais abrangente e integrada. 
Para garantir a conformidade com as práticas recomendadas e padrões estabelecidos, a
empresa também passou por auditorias internas e externas, incluindo auditorias de
conformidade, operacionais e de segurança de TI. Essas auditorias contribuíram para a
identi�cação de áreas de melhoria contínua, garantindo que os processos atendessem aos
padrões internacionalmente reconhecidos. 
Assim, quais foram os principais benefícios que a empresa obteve com a implementação do
MPS.BR, ISO 9001 e modelos de maturidade, os quais são três modelos de sistemas de gestão e
auditorias de dados? E como as auditorias contribuíram para a evolução dos processos? 
___________
Re�ita
A qualidade de software se refere à medida em que um produto atende aos requisitos e
expectativas dosusuários. Envolve a implementação de práticas e padrões que garantam a
e�ciência, con�abilidade, usabilidade e segurança do software. A aplicação desses padrões
asseguram totalmente a qualidade do software? 
Métricas especí�cas, como testes de desempenho e con�abilidade, são frequentemente
utilizadas para avaliar e melhorar a qualidade. Modelos de maturidade, como CMMI, fornecem
estruturas para aprimorar processos e garantir consistência. Tais métricas se mantém e�cazes
ao longo dos anos ou precisam ser constantemente revisadas?  
A gestão da qualidade de software inclui a identi�cação e correção de erros, defeitos e falhas ao
longo do ciclo de vida do desenvolvimento. Normas internacionais, como a ISO/IEC 9126,
proporcionam diretrizes para avaliação e garantia da qualidade de software. (TRUECHANGE,
2023).  
A qualidade do produto abrange a excelência nas características e desempenho de um produto,
garantindo que atenda ou supere as expectativas dos clientes. Envolve a de�nição clara de
requisitos, a implementação de processos e�cientes e a entrega de um produto con�ável e
durável. Como a de�nição clara de tais requisitos é assegurada? 
Métricas especí�cas, como con�abilidade, usabilidade e e�ciência, são cruciais na avaliação da
qualidade do produto. A gestão da qualidade do produto busca identi�car e corrigir possíveis
imperfeições ao longo do ciclo de vida, garantindo a satisfação do cliente. O indicador de
satisfação do cliente se mantém constante ao longo dos anos? 
Normas, como a ISO 9001 (ISO, 2015), fornecem diretrizes para sistemas de gestão da qualidade,
promovendo a consistência e a melhoria contínua na entrega de produtos. A qualidade do
produto é um fator determinante para a competitividade e a reputação de uma empresa no
mercado. Qualidade de software e qualidade do produto ou serviço �nal, signi�cam o mesmo
conceito para o cliente? Como diferenciá-los, quando necessário? 
Disciplina
Engenharia de Software
Videoaula: Resolução do estudo de caso
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Principais benefícios: 
Melhoria na qualidade do produto: a implementação do MPS.BR contribuiu para uma
melhoria signi�cativa na qualidade dos produtos, alinhando os processos com as melhores
práticas nacionais. 
E�ciência operacional: a certi�cação ISO 9001 fortaleceu a e�ciência operacional,
estabelecendo diretrizes claras para os processos de gestão da qualidade. 
Maturidade dos processos: a adoção de modelos de maturidade, como CMMI, elevou a
maturidade dos processos, resultando em maior consistência e previsibilidade nas
entregas. 
Contribuição das auditorias: 
Identi�cação de lacunas: as auditorias internas e externas identi�caram lacunas nos
processos, permitindo ações corretivas e preventivas. 
Conformidade: as auditorias de conformidade asseguraram que a empresa atendesse aos
requisitos especí�cos dos padrões, como o MPS.BR e ISO 9001. 
Aprimoramento contínuo: Através da retroalimentação das auditorias, a empresa
implementou melhorias contínuas nos processos, alinhando-se a práticas de classe
mundial. 
Tópicos necessários para a correção da questão: 
Descrição da implementação do MPS.BR e ISO 9001 na empresa. 
Destaque para a adoção de modelos de maturidade, como o CMMI. 
Discussão sobre as métricas de qualidade utilizadas para monitorar o desempenho dos
produtos. 
Explicação sobre os diferentes tipos de auditorias conduzidas, incluindo seus propósitos e
resultados. 
Análise dos benefícios obtidos, destacando como cada iniciativa contribuiu para a melhoria
global dos processos na empresa. 
Resumo visual
Disciplina
Engenharia de Software
Veja o resumo visual da unidade:
Referências
Disciplina
Engenharia de Software
ABNT - ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. ABNT NBR ISO 9001:2015: Sistemas
de gestão da qualidade – requisitos. Rio de Janeiro, 2008. 
BASILI, V. R. et al., Experimentation in software engineering, in IEEE Transactions on Software
Engineering, vol. SE-12, no. 7, pp. 733-743, Julho de 1986, doi: 10.1109/TSE.1986.6312975.  
ISO - INTERNATIONAL ORGANIZATION FOR STANDARDIZATION, International Standard 12207 –
Information Technology – Software Lifecycle Processes, Reference Number ISO / IEC 12207,
Primeira Edição, 1995. 
ISO - INTERNATIONAL ORGANIZATION FOR STANDARDIZATION, International Standard 15504 –
Information Technology – Process Assessment, Reference Number ISO / IEC 15504, Primeira
Edição, 2004. 
PAULA FILHO, W.  P. Engenharia de Software: projetos e processos. 4.ed. Rio de Janeiro: LTC,
2019.  
PRESSMAN, R.;  MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021.  
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil, 2018.  
TRUECHANGE, Entenda o conceito de qualidade de software e sua função. Disponível em:
https://truechange.com.br/blog/qualidade-de-
software/#:~:text=O%20que%20é%20e%20para%20que%20serve%20a%20qualidade%20de%20s
oftware&text=No%20desenvolvimento%20a%20qualidade%20de,o%20objetivo%20�nal%20do%2
0projeto. Acesso em: 27 nov. 2023.  
,
Unidade 3
https://truechange.com.br/blog/qualidade-de-software/#:~:text=O%20que%20%C3%A9%20e%20para%20que%20serve%20a%20qualidade%20de%20software&text=No%20desenvolvimento%20a%20qualidade%20de,o%20objetivo%20final%20do%20projeto
https://truechange.com.br/blog/qualidade-de-software/#:~:text=O%20que%20%C3%A9%20e%20para%20que%20serve%20a%20qualidade%20de%20software&text=No%20desenvolvimento%20a%20qualidade%20de,o%20objetivo%20final%20do%20projeto
https://truechange.com.br/blog/qualidade-de-software/#:~:text=O%20que%20%C3%A9%20e%20para%20que%20serve%20a%20qualidade%20de%20software&text=No%20desenvolvimento%20a%20qualidade%20de,o%20objetivo%20final%20do%20projeto
https://truechange.com.br/blog/qualidade-de-software/#:~:text=O%20que%20%C3%A9%20e%20para%20que%20serve%20a%20qualidade%20de%20software&text=No%20desenvolvimento%20a%20qualidade%20de,o%20objetivo%20final%20do%20projeto
Disciplina
Engenharia de Software
Teste de Software
Aula 1
Conceitos de teste de software
Introdução
Olá, estudante! Imagine construir uma casa sem consultar um arquiteto ou um engenheiro, sem
realizar inspeções, sem veri�car se os materiais estão corretos e sem garantir que cada canto
esteja seguro. Agora, aplique essa analogia ao desenvolvimento de software. A qualidade de um
software é como a solidez de uma construção - ela requer atenção cuidadosa, processos bem
de�nidos e testes rigorosos.  
A realização de testes é um dos momentos principais e críticos para garantir que o software
funcione corretamente, de modo a atender aos requisitos do cliente e que proporcione uma
experiência positiva aos usuários. Trata-se, então, de uma prática preventiva que ajuda a
identi�car defeitos antes que eles atinjam o cliente �nal. 
Por outro lado, a não realização dos testes por questões de economia de tempo e de recursos,
resultará em um alto custo a longo prazo. Defeitos não detectados, tanto na lógica de negócio
quanto na interface do software podem se transformar em falhas dispendiosas após o
lançamento. Conseguimos lembrar sobre a importância do teste de software pensando controle
de tráfego aéreo com erros não identi�cados - as consequências podem ser devastadoras. 
Disciplina
Engenharia de Software
Nesta aula, exploraremos três pilares da garantia de qualidade do software: casos de testes,
plano de testes e veri�cação e validação. Os casos de testes são como peças de quebra-cabeça
que montamos para garantir que o software funcione corretamente; o plano de testes, por sua
vez, representa um guia estratégico que nos orienta nessa jornada de testes; por �m, a
veri�cação e validação são os processos que nos asseguram que o software foi construído
corretamente e atende às necessidades dos usuários. 
 Fundamentos de teste de software
Agora, vamos mergulhar nos pilares fundamentaisdos testes de software, explorando os
conceitos essenciais de casos de testes, plano de testes e, por �m, a etapa de veri�cação e
validação. 
Ao compreender e dominar esses conceitos, você estará preparado para construir software
robusto, con�ável e valioso. Vamos mergulhar nesses tópicos, explorar suas nuanes e descobrir
como eles se encaixam no ciclo de desenvolvimento de software. 
Casos de Testes 
Como dito anteriormente, começaremos pelos casos de testes que são como cenários que
simulam diferentes situações pelas quais o software pode passar. Eles são criados com base em
requisitos e especi�cações, detalhando as condições de entrada, os passos a serem seguidos e
os resultados esperados.  
Disciplina
Engenharia de Software
Em outras palavras, são instruções precisas sobre como testar uma parte especí�ca do software,
ou seja, os casos de teste de�nem como o software será testado em relação a um conjunto
especí�co de condições (SOMMERVILLE, 2018). 
Os casos de teste de�nem o que deve ser feito para testar um sistema, incluindo as etapas
executadas no sistema, os valores dos dados de entrada que são inseridos no sistema e os
resultados esperados durante a execução do caso de teste.  
O uso de casos de teste permite que desenvolvedores e testadores descubram erros que
possam ter ocorrido durante o desenvolvimento ou defeitos que não foram percebidos durante
testes ad hoc (testes sem plano formal de�nido). 
Plano de Testes 
Um plano de teste é um documento detalhado que cataloga as estratégias de teste, objetivos,
cronograma, estimativas, prazos e recursos necessários para concluir aquele projeto. Pense
nisso como um plano para executar os testes necessários para garantir que o software esteja
funcionando corretamente – controlados pelos gerentes de teste. 
Um plano de teste bem elaborado é um documento dinâmico que muda de acordo com a
progressão do projeto e permanece sempre atualizado. Trata-se, então, do ponto de referência
com base no qual as atividades de teste são executadas e coordenadas entre uma equipe de
controle de qualidade. 
O plano de teste também é compartilhado com analistas de negócios, gerentes de projeto,
equipes de desenvolvimento e qualquer pessoa associada ao projeto. Isto oferece
principalmente transparência nas atividades de controle de qualidade para que todas as partes
interessadas saibam como o software será testado. 
O plano é elaborado por gerentes ou líderes de controle de qualidade com base nas
contribuições de membros da equipe de controle de qualidade (e às vezes não pertencentes ao
controle de qualidade). Sua criação não deve levar mais do que 1/3 do tempo alocado para todo
o projeto. 
Considere o plano de testes então como um roteiro criado para guiar todo o processo de teste,
sendo considerado uma abordagem estratégica que descreve: 
Quais casos de teste serão executados. 
Quem será responsável por cada teste. 
Quando esses testes serão realizados.  
Logo, trata-se de uma diretriz fundamental para garantir que todos os aspectos do software
sejam testados de maneira sistemática e organizada. Desse modo, podemos a�rmar que um
plano de testes identi�ca o que deve ser testado, quem fará os testes, como os testes serão
feitos e em que ordem eles serão executados (SOMMERVILLE, 2018). 
 Veri�cação e Validação 
A veri�cação se concentra em con�rmar se o software está sendo construído de acordo com as
especi�cações. Envolve revisões de código, testes unitários e outras técnicas que garantem que
o software seja desenvolvido corretamente.  
Por outro lado, a validação busca assegurar que o software atende às necessidades reais dos
usuários e ao propósito previsto. Em conjunto, veri�cação e validação fornecem uma abordagem
holística para garantir a qualidade do software. 
A veri�cação e validação em testes de software consistem em: 
Disciplina
Engenharia de Software
A veri�cação avalia artefatos de software (como requisitos, design, código etc.) para
garantir que atendam aos requisitos e padrões especi�cados. Ele garante que o software
seja construído de acordo com as necessidades e especi�cações do projeto. 
A validação avalia o software para atender às necessidades e requisitos do usuário. Ele
garante que o software atenda à �nalidade pretendida e atenda às expectativas do usuário. 
De acordo com Sommerville (2018), a veri�cação envolve veri�car que um sistema atenda às
suas especi�cações e a validação envolve veri�car que o sistema atenda às necessidades dos
usuários. Isso destaca a diferença fundamental entre con�rmar se o software foi construído
corretamente (veri�cação) e garantir que ele seja útil e relevante para os usuários (validação). 
Aprofundando o conhecimento
Disciplina
Engenharia de Software
Veremos, agora, aspectos da garantia de qualidade.  
Começaremos explorando os casos de testes e compreendendo os seus diferentes tipos. Já de
início, consideraremos um sistema de gerenciamento de biblioteca on-line. Um exemplo de caso
de teste seria "realizar uma pesquisa por título de livro e veri�car se os resultados correspondem
à pesquisa realizada". Isso envolveria inserir um termo de pesquisa, acionar a pesquisa e analisar
se os resultados exibidos correspondem ao termo fornecido. 
Os casos de testes podem ser categorizados em diferentes tipos, cada um com um foco
especí�co (PRESSMAN; MAXIM, 2021). Os tipos incluem: 
Testes funcionais: os testes funcionais são projetados para veri�car se o software executa
as funções conforme os requisitos (funcionais) estabelecidos. Eles são essenciais para
Disciplina
Engenharia de Software
garantir que cada funcionalidade do software esteja operando corretamente. 
Testes de usabilidade: os testes de usabilidade se concentram na experiência do usuário,
garantindo que o software seja intuitivo e fácil de usar. Aqui, a meta é veri�car se o �uxo de
interação do usuário é natural e se as interfaces são compreensíveis. 
Testes de desempenho: os testes de desempenho avaliam como o software se comporta
sob diferentes condições de carga. Isso inclui testar sua velocidade, e�ciência e
capacidade de escalabilidade. 
Criar um plano de testes e�caz requer uma abordagem estratégica que cubra todas as
dimensões do software. Por exemplo, para um aplicativo de comércio eletrônico, uma estratégia
de teste pode ser dividida em áreas como funcionalidade (testes de compra, pagamento),
desempenho (carga durante promoções) e usabilidade (navegação intuitiva). 
Existem diferentes tipos de planos de teste os quais variam de acordo com o foco e o estágio de
desenvolvimento do software. A seguir estão dois dos tipos mais comuns, de acordo com
Sommerville (2018): 
Plano de Testes de Aceitação do Usuário (UAT): esse plano se concentra em garantir que o
software atenda às necessidades reais dos usuários �nais. É conduzido após os testes
iniciais, permitindo que os usuários validem se o software está pronto para ser implantado. 
Plano de Testes de Integração: testa a integração entre diferentes módulos ou
componentes do software. Garante que as partes individuais funcionem bem juntas e que
não haja con�itos. 
Já a veri�cação e validação são duas etapas interligadas que garantem que o software seja
construído corretamente (veri�cação) e que ele atenda aos requisitos e expectativas dos
usuários (validação). Uma estratégia sólida de veri�cação envolve revisões de código, análise
estática, testes unitários e de integração (PRESSMAN, 2021). 
Analisaremos alguns tipos de casos de teste para veri�cação e validação: 
Veri�cação 
Testes unitários: veri�cam individualmente as partes do software, como funções ou
módulos, para garantir que eles funcionem corretamente. 
Testes de integração: veri�cam como diferentes partes do software se integram e
funcionam em conjunto. 
Validação: 
Testes funcionais: validam se o software atende aos requisitos funcionais especi�cados. 
Testes de Aceitação do Usuário (UAT): Validam se o software atende às necessidades reais
dos usuários �nais. 
Veri�cação e validação são etapas essenciais para garantir queo software atenda aos requisitos,
seja construído corretamente e proporcione uma experiência positiva aos usuários.
Exemplos de aplicações
Disciplina
Engenharia de Software
Vamos ver aplicações tanto com casos de testes, plano de teste, validação e veri�cação. 
Caso de teste 
Considere um aplicativo de mídia social. Dessa aplicação podemos gerar um caso de teste
chamado "publicar uma postagem e veri�car se ela é exibida corretamente no feed de notícias
dos seguidores", em que você precisaria simular a criação de uma postagem, publicá-la e
garantir que ela apareça corretamente para os seguidores. A seguir, são apresentados alguns
exemplos de cada um dos casos de testes. 
Teste funcional em um aplicativo de Comércio Eletrônico: 
Cenário: testar se o botão "Finalizar Compra" de um aplicativo de comércio eletrônico
processa a compra corretamente. 
Resultado esperado: a compra é processada, os itens são removidos do carrinho e um
recibo é gerado. 
Teste de usabilidade em um aplicativo de Música em Streaming: 
Cenário: testar se o processo de criar e compartilhar uma playlist é intuitivo para o usuário. 
Resultado esperado: o processo é simples e direto, permitindo ao usuário criar e
compartilhar playlists sem di�culdades. 
Teste de desempenho –  Aplicativo de E-Commerce Durante Promoção: 
Disciplina
Engenharia de Software
Cenário: testar como o aplicativo de e-commerce lida com muitos usuários acessando
simultaneamente durante uma promoção de vendas. 
Resultado esperado: o aplicativo deve manter a estabilidade e o tempo de resposta
aceitável mesmo sob carga intensa. 
Existem várias ferramentas para facilitar a criação e a execução de casos de testes, a principal
delas é o Selenium, uma ferramenta popular para testes automatizados de interfaces web,
permitindo a simulação de interações do usuário. 
Plano de teste 
Vejamos alguns exemplos práticos de planos de teste e discutir algumas ferramentas que
podem facilitar e agilizar o processo de planejamento e execução. 
Plano de Testes de Aceitação do Usuário (UAT) em um aplicativo de reserva em restaurantes: 
Cenário: garantir que os usuários possam realizar reservas de restaurantes de maneira
e�caz. 
Resultado esperado: os usuários validam se o processo de reserva é intuitivo e se atende
às suas expectativas. 
Plano de teste de integração em um sistema de reservas de viagem: 
Cenário: veri�car se os módulos de reserva de voos, hotéis e aluguel de carros funcionam
em conjunto. 
Resultado esperado: o sistema deve coordenar as informações corretamente e fornecer
uma reserva completa. 
No ambiente de desenvolvimento de software, existem várias ferramentas que podem ajudar no
planejamento e execução de testes, dentre elas o TestRail, uma ferramenta de gerenciamento de
testes que ajuda a planejar, rastrear e organizar casos de testes. 
Veri�cação e Validação 
A veri�cação e a validação são etapas fundamentais no processo de desenvolvimento de
software, deste modo, apresentaremos exemplos concretos, abordando diferentes cenários e
ferramentas relevantes para cada etapa. 
Exemplo de Veri�cação - Aplicativo de E-mail: 
Cenário: veri�car se um aplicativo de e-mail envia mensagens corretamente. 
Ação: enviar um e-mail para um destinatário e veri�car se a mensagem é entregue e exibida
corretamente na caixa de entrada. 
Exemplo de Validação - Sistema de Reservas de Voo: 
Cenário: validar se um sistema de reservas de voos con�rma reservas com as companhias
aéreas. 
Ação: fazer reservas de voos �ctícias e veri�car se as informações são enviadas
corretamente para as companhias aéreas. 
Como ferramentas temos:  
Disciplina
Engenharia de Software
ESLint: responsável por realizar uma análise de código e veri�car se este segue as regras
de estilo e melhores práticas. 
W3C Markup Validation Service:  que veri�ca se o código HTML de uma página web segue
os padrões e especi�cações do W3C. 
OWASP ZAP:  que veri�ca e valida a segurança de aplicações web, identi�cando
vulnerabilidades e ameaças. 
Por �m, cabe salientar que a criação criteriosa de Casos de Testes permite a avaliação detalhada
das funcionalidades, enquanto os Planos de Testes estabelecem estratégias para garantir a
cobertura adequada. Por outro lado, a Veri�cação assegura a conformidade do software com as
especi�cações, enquanto a Validação foca em atender às necessidades reais dos usuários. 
Videoaula: Conceitos de teste de software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo, desvendaremos os segredos, as principais de�nições e
ferramentas por de trás dos casos de teste, planos de teste, veri�cação e validação. Veremos
como esses elementos garantem a qualidade e con�abilidade do software que usamos todos os
dias.  
Saiba mais
Disciplina
Engenharia de Software
O Selenium é uma ferramenta essencial na área de testes de software, permitindo a automação
de testes de interface de usuário em aplicações web. Trata-se de uma ferramenta capaz de
agilizar testes repetitivos, aumentar a cobertura de testes e melhorar a e�ciência do processo de
desenvolvimento.  
Com suporte a diversas linguagens de programação, o Selenium é altamente relevante para
garantir a qualidade funcional e de usabilidade das aplicações.  
Para conhecer mais sobre suas funcionalidades e utilização, recomendo explorar a
documentação o�cial disponível no site do Selenium.  
Referências
https://www.selenium.dev/
https://www.selenium.dev/
Disciplina
Engenharia de Software
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021. 
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil, 2018. 
Aula 2
Estratégias de testes
Introdução
Disciplina
Engenharia de Software
Olá, estudante! Nesta aula, compreenderemos como as Estratégias de Teste de Software
desempenham um papel crucial na garantia da qualidade de um projeto de desenvolvimento de
software. Exploraremos os diferentes tipos de testes que são essenciais para o sucesso de
qualquer projeto de software. 
Iniciaremos nossos estudos abordando os testes de unidade e integração, que são as bases para
garantir que cada parte do código funcione individualmente e em conjunto. Durante os estudos,
você compreenderá como identi�car e corrigir erros em nível de componente, economizando
tempo e recursos a longo prazo. 
Em seguida, abordaremos o teste de validação, que avalia se o software atende aos requisitos do
cliente e se está pronto para ser implantado. 
Por �m, exploraremos o teste de sistema, que veri�ca o desempenho e a integração de todo o
sistema. Essa etapa é vital para garantir que o software funcione sem problemas em seu
ambiente de destino. 
Vamos começar! 
 Tipos de testes de software
Disciplina
Engenharia de Software
Entender os diferentes tipos de testes é essencial para garantir a qualidade e con�abilidade dos
sistemas de software que você desenvolverá ao longo da sua carreira. 
Testes de unidade e integração 
Os testes de unidade e integração são os primeiros passos na jornada de garantir que seu
software funcione corretamente. Vamos conceituar cada um deles: 
Teste de unidade: imagine o código-fonte do seu software como sendo um grande quebra-
cabeça, composto por muitas peças individuais. O teste de unidade concentra-se em
Disciplina
Engenharia de Software
veri�car se cada peça deste quebra-cabeça funciona corretamente por conta própria. Cada
peça (ou unidade) pode ser uma função, um método ou uma classe. A ideia aqui é testar
minuciosamente essas unidades para ter certeza de que elas desempenham suas funções
conforme o esperado. Um dos pioneiros nessa abordagem foi Kent Beck, que desenvolveu
o conceito de Test-Driven Development (TDD), onde os testes de unidade são escritos antes
do código em si. Isso garante que o código seja mais con�ávele robusto desde o início
(PRESSMAN; MAXIM 2021). 
Teste de integração: considerando a montagem de todas as peças do quebra-cabeça e
precisa veri�car se elas se encaixam perfeitamente, sem falhas na união. O teste de
integração é exatamente isso. Ele avalia como os diferentes componentes do seu software
interagem quando são combinados. À medida que o software cresce, é vital veri�car como
as partes se unem harmoniosamente. Isso ajuda a identi�car possíveis con�itos,
problemas de comunicação e falhas de integração que podem surgir quando as unidades
individuais se encontram (PRESSMAN; MAXIM, 2021). 
Esses dois tipos de teste, unidade e integração, trabalham em conjunto para garantir que cada
parte do software funcione individualmente e em conjunto como um sistema coeso. Eles
formam os alicerces da qualidade de software, pois se problemas são detectados nessa fase
inicial do desenvolvimento, eles podem ser corrigidos de maneira mais e�ciente e econômica
(SOMMERVILLE, 2018). 
Teste de validação: o teste de validação é a próxima etapa em nosso processo de teste. Ele
se concentra em responder à pergunta: "O software atende aos requisitos do cliente?".
Trata-se então de um teste vital veri�car se o software faz o que foi especi�cado no início
do projeto. 
Teste de sistema: o software é testado em seu ambiente real. Isso envolve avaliar o
desempenho, a segurança e a usabilidade do sistema como um todo, garantindo que ele
esteja pronto para implantação.
Compreendendo as estratégias de testes
Disciplina
Engenharia de Software
Vamos nos aprofundar ainda mais nas estratégias essenciais da Engenharia de Software.  
Teste de unidade e integração: complementando a qualidade 
Como vimos anteriormente, os testes de unidade se concentram na veri�cação de unidades
individuais de código, enquanto os testes de integração avaliam como essas unidades se
combinam para formar o sistema. Para entender a relação entre esses dois pilares, imaginemos
a construção de uma casa. Os testes de unidade seriam equivalentes à veri�cação de cada tijolo,
assegurando que cada um seja sólido e atenda aos padrões. São exemplos de teste de unidade
(SOMMERVILLE, 2018): 
Testes de caixa branca: examinam o código-fonte, avaliando sua estrutura e lógica interna.  
Testes de caixa preta: concentram-se nos resultados do código, sem se preocupar com sua
implementação interna. 
De outro modo, os testes de integração envolvem a inspeção de como esses tijolos se encaixam
para formar as paredes, garantindo que não haja vazamentos, rachaduras ou falhas de
comunicação entre eles. Como exemplos de teste de integração temos (SOMMERVILLE, 2018): 
Testes top-down: começam pelos módulos de nível superior e continuam testando os
módulos inferiores à medida que são incorporados. 
Testes bottom-up: iniciam pelos módulos de nível mais baixo e progridem para os módulos
superiores à medida que são incorporados. 
Ao combinar testes de unidade e testes de integração, você cria uma base sólida para seu
software, garantindo que cada parte funcione bem individualmente e em conjunto. Isso é crucial
para evitar problemas complexos no futuro e economizar tempo de depuração. 
Teste de validação: con�rmar a conformidade 
O próximo passo em nossa jornada de testes é o teste de validação. Ele é como uma inspeção
�nal antes de entregar a casa ao proprietário. Ele se concentra em responder à pergunta: "O
software atende às necessidades e expectativas do cliente?" 
Durante o teste de validação, os requisitos do cliente são cuidadosamente veri�cados. Isso
envolve a con�rmação de que todas as funcionalidades prometidas foram implementadas e
funcionam conforme o esperado. São exemplos para este tipo de teste (PRESSMAN, 2021): 
Testes funcionais: veri�cam se todas as funcionalidades do software estão de acordo com
os requisitos do cliente. 
Testes de aceitação do cliente: são executados pelo cliente ou usuários �nais para garantir
que o software atenda às suas expectativas. 
Testes de compatibilidade: avaliam como o software se comporta em diferentes
ambientes, sistemas operacionais e navegadores. 
O teste de validação desempenha um papel vital na garantia de que o software atenda às
especi�cações e às expectativas do cliente, sendo fundamental para a satisfação do mesmo e
para o sucesso do projeto. 
Teste de sistema: o ambiente real 
Essa é a etapa �nal antes da implantação do software no ambiente de produção. Esse teste é
como uma inspeção da casa completa, veri�cando se tudo está funcionando conforme o
esperado no ambiente real. São exemplos de teste de sistema (PRESSMAN, 2021): 
Disciplina
Engenharia de Software
Testes de carga: avaliam como o sistema se comporta sob pressão, veri�cando seu
desempenho em situações de alta demanda. 
Testes de segurança: identi�cam vulnerabilidades de segurança, protegendo o sistema
contra ameaças externas. 
Testes de recuperação de desastres: veri�cam a capacidade do sistema de se recuperar de
falhas inesperadas. 
Testes de usabilidade: avaliam a facilidade de uso e a experiência do usuário �nal. 
Essa abordagem garante que o software funcione sem problemas em seu ambiente de destino,
proporcionando con�abilidade e satisfação ao usuário �nal. 
Exemplos de aplicações das estratégias de testes
Agora, vamos explorar como aplicar efetivamente as estratégias de Testes de Unidade, Testes de
Integração, Teste de Validação e Teste de Sistema em um projeto de desenvolvimento de
software. Entender como essas estratégias se encaixam no ciclo de desenvolvimento é essencial
para garantir a qualidade do software. 
Teste de unidade: imagine que você está desenvolvendo um sistema de gerenciamento de
tarefas. Para aplicar o teste de unidade, seriam criados testes especí�cos para cada
função, como adicionar uma tarefa, marcar uma tarefa como concluída ou excluir uma
Disciplina
Engenharia de Software
tarefa. Cada teste se concentraria em veri�car se a funcionalidade especí�ca funciona
corretamente, sem considerar o restante do sistema. 
Teste de integração: continuando com o exemplo do sistema de gerenciamento de tarefas,
após a realização dos testes de unidade em cada função individual, você realizará testes de
integração para garantir que todas essas funções se integrem perfeitamente. Isso envolve
testar cenários em que, por exemplo, adicionar uma tarefa afeta corretamente a lista de
tarefas em exibição. 
Teste de validação: quando o sistema de gerenciamento de tarefas estiver completo, você
realizará testes de validação para garantir que ele satisfaça as necessidades do cliente.
Isso pode envolver testar o software em um ambiente semelhante ao ambiente do usuário
�nal, veri�cando se todas as funcionalidades prometidas estão presentes e funcionando
corretamente, como a capacidade de atribuir tarefas a diferentes usuários. 
Teste de sistema: para o sistema de gerenciamento de tarefas, o teste de sistema envolve
veri�car como ele se comporta no mundo real. Você pode realizar testes de carga para
veri�car como o sistema se comporta sob carga máxima de tarefas, testes de segurança
para garantir que os dados dos usuários estejam protegidos e testes de usabilidade para
avaliar a facilidade de uso da interface. 
É importante observar que essas estratégias não são etapas isoladas, mas sim
interdependentes. Os testes de unidade ajudam a identi�car problemas em nível de código, que
podem ser corrigidos antes que eles se propaguem para testes de integração, validação e
sistema.  Os testes de integração veri�cam a interação entre os componentes, garantindo que
eles funcionem em conjunto. Os testes de validação con�rmam que o software atende às
expectativas do cliente, e os testes de sistema garantem que ele funcione de forma con�ável no
ambiente real.  
A aplicação adequada dessas estratégias é essencial para garantir a qualidade do software e
evitar problemas dispendiosos no futuro. Ao realizar testes em cada estágio do desenvolvimento,
você reduz o risco de defeitos, economiza tempo de depuração e aumenta a satisfação do
cliente.
Videoaula:Estratégias de testes
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo, veremos um resumo da jornada essencial pelos Testes de
Unidade e Integração, Teste de Validação e Teste de Sistema na Engenharia de Software.
Descobriremos como essas estratégias se conectam, aprofundando seu conhecimento e
Disciplina
Engenharia de Software
preparando-o para aplicá-las com con�ança. Não perca essa oportunidade de fortalecer sua
expertise em testes de software! Vamos lá! 
Saiba mais
A Integração Contínua (CI) é uma prática-chave nos Testes de Sistema. Envolve a integração
automática de código em um repositório compartilhado, seguida de testes automatizados. Isso
acelera o desenvolvimento, melhora a qualidade do software e permite uma entrega contínua.  
Ao compreender a importância da CI, exploraremos uma prática essencial para o
desenvolvimento de software de alta qualidade. Saiba mais lendo o artigo “O que signi�ca
integração contínua?”.  
Referências
https://aws.amazon.com/pt/devops/continuous-integration
https://aws.amazon.com/pt/devops/continuous-integration
Disciplina
Engenharia de Software
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021. 
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil, 2018. 
Aula 3
Tipos de testes
Introdução
Disciplina
Engenharia de Software
Olá, estudante! Nesta aula exploraremos três abordagens distintas e igualmente cruciais para
garantir a qualidade e con�abilidade de nossos sistemas: o Teste do Caminho Básico, Testes
Baseados em Grafos e Testes Baseados em Modelos. 
Testar software é um aspecto essencial do desenvolvimento, pois busca identi�car e corrigir
defeitos que possam comprometer a funcionalidade, segurança e desempenho do sistema.
Compreender as diferentes técnicas de teste é fundamental para criar sistemas robustos e
con�áveis. 
Começaremos mergulhando no conceito de Teste do Caminho Básico, uma técnica que nos
ajuda a garantir que todas as combinações de caminhos possíveis em nosso código sejam
devidamente testadas. 
Em seguida, exploraremos os Testes Baseados em Grafos, uma abordagem que utiliza
representações grá�cas para modelar as interações entre componentes de software. Veremos
como essa técnica ajuda a identi�car cenários de teste abrangentes e a avaliar a cobertura de
testes. 
Por �m, investigaremos os Testes Baseados em Modelos, que empregam modelos formais para
descrever o comportamento do sistema. Aprenderemos como criar modelos de software e usá-
los para gerar casos de teste automatizados, aprimorando a e�ciência do processo de teste. 
Bons estudos! 
 Técnicas de teste de software
Disciplina
Engenharia de Software
Para começar, é fundamental compreender três técnicas essenciais: Teste do Caminho Básico,
Testes Baseados em Grafos e Testes Baseados em Modelos.  
Testes do caminho básico 
O Teste do caminho básico é uma técnica que busca garantir que todos os caminhos possíveis
em um programa de computador sejam testados pelo menos uma vez. Um caminho é uma
sequência única de comandos que começa em um ponto de entrada e termina em um ponto de
saída no código (SOMMERVILLE, 2018). 
Por exemplo, se você tiver uma função que calcula a raiz quadrada de um número, um caminho
básico poderia ser: “Entrada de um número -> Cálculo da raiz quadrada -> Saída do resultado”.
Para entender melhor: 
Caminho: um caminho é uma sequência única de comandos que começa em um ponto de
entrada e termina em um ponto de saída no código. Por exemplo, ao navegar por um site,
você segue um caminho especí�co ao clicar em links e interagir com os elementos da
página. 
Ponto de entrada: é o ponto inicial a partir do qual um caminho começa a ser percorrido.
Pode ser uma função, um método ou um evento que inicia a execução do programa. 
Ponto de saída: é o ponto onde um caminho termina. Geralmente, é onde se obtém o
resultado da execução. 
Essa técnica é especialmente útil para identi�car casos de teste que podem revelar erros lógicos
e �uxos inesperados em um programa. Ela ajuda a garantir uma boa cobertura do código, mas
Disciplina
Engenharia de Software
pode ser complexa em programas extensos devido à quantidade de caminhos possíveis. 
Testes baseados em grafos 
Os testes baseados em grafos são uma abordagem que utiliza representações grá�cas como
grafos, para modelar as interações entre os componentes de um software. Nesse contexto, um
grafo é uma estrutura composta por nós (ou vértices) e arestas que conectam esses nós
(SOMMERVILLE, 2018). 
Essa técnica ajuda a identi�car cenários de teste abrangentes e a avaliar a cobertura de testes.
Imagine um software de compras on-line, onde os nós do grafo representariam diferentes
páginas da web, e as arestas seriam os links que os conectam. 
A principal vantagem dessa técnica é que ela permite analisar de forma sistemática os caminhos
possíveis no software, garantindo que todos os cenários críticos sejam testados. Isso é crucial
para identi�car falhas de software que podem ocorrer em situações especí�cas. 
Testes baseados em modelos 
Os testes baseados em modelos envolvem a criação de modelos formais que descrevem o
comportamento do sistema. Esses modelos podem ser grá�cos, matemáticos ou baseados em
linguagens de especi�cação (SOMMERVILLE, 2018). 
Ao criar um modelo, podemos gerar casos de teste automaticamente a partir dele,
economizando tempo e melhorando a e�ciência do processo de teste. Isso é particularmente útil
em sistemas complexos, como sistemas de controle de tráfego aéreo. 
Explorando os tipos de testes
Disciplina
Engenharia de Software
Agora, vamos aprofundar nossos estudos em três técnicas essenciais de teste de software:
Teste do Caminho Básico, Testes Baseados em Grafos e Testes Baseados em Modelos. Vamos
detalhar as características importantes de cada uma e dar exemplos práticos de como aplicá-
las. 
O teste do caminho básico é uma técnica que visa cobrir todos os caminhos possíveis em um
programa de software (PRESSMAN; MAXIM, 2021). Aqui estão algumas características
importantes e um exemplo prático: 
Identi�cação de caminhos críticos: para aplicar o Teste do Caminho Básico de forma e�caz,
é fundamental identi�car os caminhos críticos, ou seja, aqueles que exercitam as partes
mais importantes e complexas do código. Por exemplo, em um programa de cálculo de
empréstimos, um caminho crítico pode ser aquele que veri�ca a validade das informações
do cliente. 
Priorização de testes: devido à complexidade de alguns programas, é impossível testar
todos os caminhos. Portanto, é importante priorizar os testes nos caminhos críticos para
garantir que as áreas mais arriscadas sejam bem avaliadas. 
Para ilustrar podemos imaginar um software de processamento de pedidos online. Um caminho
crítico pode ser aquele que envolve a seleção de produtos, o preenchimento de informações de
pagamento e a �nalização do pedido. Testar esse caminho é crucial para garantir que os pedidos
sejam processados sem erros. 
Os testes baseados em grafos são ideais para sistemas nos quais as interações entre
componentes são complexas (PRESSMAN; MAXIM, 2021). Aqui estão algumas características
importantes:  
Representação visual: a principal característica dos Testes Baseados em Grafos é a
representação visual das interações. Um exemplo prático é o uso de grafos direcionados
para representar os estados e transições de um aplicativo de jogos. Os nós podem
representar os estados do jogo, como "Início" e "Fim", e as arestas indicam como o jogador
pode se mover entre esses estados. 
Análise de cobertura: o uso de grafos permite uma análise clara da cobertura de testes.
Você pode veri�car visualmente quais estados e transições foram testados e quais
precisam de mais atenção. 
Vamos supor um texto em um sistema de reserva de voosonline. Cada nó do grafo pode
representar um estado, como "Seleção de Destino", "Escolha de Data" e "Pagamento". As arestas
indicam como os usuários podem navegar entre esses estados. Ao seguir esses caminhos no
grafo, você pode criar casos de teste especí�cos para garantir que o sistema funcione
corretamente em todas as situações. 
Os testes baseados em modelos envolvem a criação de modelos formais que descrevem o
comportamento esperado do sistema (PRESSMAN; MAXIM, 2021). Aqui estão algumas
características importantes e um exemplo prático: 
Diversidade de modelos: é possível criar diferentes tipos de modelos, como modelos
matemáticos, grá�cos ou baseados em linguagens de especi�cação. Por exemplo, é
possível criar um modelo grá�co de um sistema de automação industrial, representando os
estados das máquinas e as transições entre eles. 
Disciplina
Engenharia de Software
Geração automática de casos de teste: uma das maiores vantagens é a capacidade de
gerar automaticamente casos de teste a partir do modelo. Isso economiza tempo e garante
que todos os cenários sejam testados. 
Considere como exemplo um software de gerenciamento de estoque, onde você pode criar um
modelo matemático que descreve como o sistema deve calcular o estoque disponível com base
nas entradas e saídas. Usando esse modelo, é possível gerar automaticamente casos de teste
que veri�cam se o cálculo do estoque está correto em várias situações. 
Exemplos de aplicações
Vamos aprofundar nossa compreensão dessas técnicas e sua aplicação no contexto da
Engenharia de Software. 
Teste do caminho básico 
Imagine que você está trabalhando em um aplicativo de comércio eletrônico. Seu objetivo é
garantir que os clientes possam navegar pelo site, adicionar produtos ao carrinho, fazer o
checkout e concluir suas compras sem problemas. Para aplicar o teste do caminho básico, você
identi�caria todos os caminhos possíveis, como: 
Caminho 1: Pesquisar um produto -> Adicionar ao carrinho -> Realizar o checkout ->
Concluir a compra. 
Disciplina
Engenharia de Software
Caminho 2: Pesquisar um produto -> Visualizar detalhes -> Adicionar ao carrinho -> Realizar
o checkout -> Concluir a compra. 
Você continuaria identi�cando todos os caminhos alternativos e excepcionais, garantindo que
cada �uxo seja testado. Isso ajuda a evitar problemas como produtos desaparecendo do
carrinho ou erros no processo de pagamento. 
Testes baseados em grafos 
Imagine que você está trabalhando no desenvolvimento de um sistema de gerenciamento de
projetos para uma grande empresa de construção civil. Este sistema é crítico, pois controla todos
os projetos em andamento, desde a fase de planejamento até a conclusão. 
Para aplicar os testes baseados em grafos, você começa criando um grafo que representa os
estados e as transições possíveis no ciclo de vida de um projeto. Os nós do grafo representam
os estados, como "Planejamento", "Execução" e "Encerramento", enquanto as arestas indicam
como um projeto pode progredir de um estado para outro. Por exemplo, uma aresta saindo do
estado "Planejamento" pode representar a transição para o estado "Execução" quando todos os
recursos necessários foram alocados. 
Nesse momento, testes baseados em grafos se tornam poderosos. Ao examinar visualmente o
grafo, você pode identi�car cenários críticos. Por exemplo, você pode ver se há caminhos no
grafo que podem resultar em projetos �cando presos em um estado especí�co por muito tempo,
o que pode atrasar o cronograma. Pode, também, avaliar como o sistema lida com transições
inesperadas, como a reatribuição de recursos de um projeto para outro. 
Além disso, você pode criar casos de teste especí�cos com base nas transições do grafo, como
para testar a transição do estado "Planejamento" para "Execução", você pode simular alocar
recursos para um projeto e veri�car se o sistema faz essa transição corretamente. 
Testes baseados em modelos 
Considere um sistema de automação residencial que controla luzes, temperatura e segurança.
Você pode criar um modelo que descreva os diferentes estados do sistema, como "Luzes
Desligadas", "Temperatura Ajustada" e "Sistema de Segurança Armado". Com base nesse modelo,
você pode gerar automaticamente casos de teste que veri�cam se todas as combinações de
estados e transições funcionam corretamente.  
Isso é fundamental para garantir que a automação residencial funcione sem erros,
proporcionando conforto e segurança aos moradores. 
Esses exemplos ilustram como essas técnicas podem ser aplicadas em situações diversas para
garantir a qualidade e o desempenho do software. Ao compreender essas abordagens e suas
aplicações práticas, você estará preparado para enfrentar os desa�os da Engenharia de
Software, criando sistemas con�áveis e e�cazes que atendam às necessidades dos usuários. 
Videoaula: Tipos de testes
Disciplina
Engenharia de Software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo, mergulharemos nos fundamentos dos testes de software de
uma forma superinteressante, onde abordaremos o Teste do Caminho Básico, Testes Baseados
em Grafos e Testes Baseados em Modelos. Esses são conceitos que podem fazer toda a
diferença na qualidade dos softwares que construímos. Vamos lá! 
Saiba mais
A Integração Contínua (CI) é uma prática-chave nos Testes de Sistema. Envolve a integração
automática de código em um repositório compartilhado, seguida de testes automatizados. Isso
acelera o desenvolvimento, melhora a qualidade do software e permite uma entrega contínua.  
A gestão sociotécnica é uma abordagem complementar da integração contínua e um exemplo de
sua aplicação pode ser lido no artigo intitulado: “Gestão sociotécnica do teste de software em
projetos de sistemas de informação”, de autoria de Mauro Tosetto e Carlo Gabriel Porto Bellini,
disponível na base de artigos cientí�cos Scielo.   
TOSETTO, M.; BELINI, C. G. P. Gestão sociotécnica do teste de software em projetos de sistemas
de informação. Revista de Gestão da Tecnologia e Sistemas de Informação Journal of
https://www.scielo.br/j/jistm/a/xMpw9Y8PWgkSg6C7Zdd9Lkh/?lang=pt
https://www.scielo.br/j/jistm/a/xMpw9Y8PWgkSg6C7Zdd9Lkh/?lang=pt
Disciplina
Engenharia de Software
Information Systems and Technology Management Vol. 5, No. 2, 2008, p. 325-346. 
Referências
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021. 
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil, 2018. 
Aula 4
Desenvolvimento orientado a testes
Introdução
Disciplina
Engenharia de Software
Olá, estudante! Nesta aula, exploraremos os conceitos cruciais para o desenvolvimento de
software de alta qualidade. Nos concentraremos em três áreas fundamentais que desempenham
um papel central na garantia da qualidade do software. 
Primeiramente, abordaremos as "Ferramentas CASE para Testes de Software". Essas
ferramentas, conhecidas como Computer-Aided Software Engineering, são projetadas para
simpli�car a criação e a execução de testes de software. Descobriremos como elas podem
aprimorar a e�ciência do processo de teste, tornando-o mais preciso e e�caz na identi�cação de
problemas. 
Em seguida, mergulharemos no "Gerenciamento de Testes". Compreender como planejar,
organizar e supervisionar o processo de teste é fundamental para garantir que todos os aspectos
críticos do software sejam adequadamente avaliados. A gestão adequada dos testes é uma
habilidade essencial no desenvolvimento de software. 
Por �m, exploraremos o emocionante mundo dos "Testes Automatizados de Software".
Aprenderemos como a automação da execução de testes pode economizar tempo, melhorar a
consistência dos resultados e acelerar o ciclo de desenvolvimento de software. 
Fundamentos de teste e gerenciamento
Disciplina
Engenharia de Software
As Ferramentas CASE (Computer-AidedSoftware Engineering) são um conjunto de softwares
projetados para auxiliar no processo de desenvolvimento de software, e desempenham um papel
crucial no campo dos testes de software (PRESSMAN; MAXIM 2021).  
Essas ferramentas oferecem funcionalidades que simpli�cam a criação, execução e
gerenciamento de testes. Elas permitem que os engenheiros de software criem casos de teste de
maneira e�ciente, automatizem a geração de scripts de teste e facilitem o rastreamento de
requisitos, garantindo que cada requisito seja adequadamente testado.  
Outra característica marcante é o fato dessas ferramentas muitas vezes incluírem recursos
avançados de gerenciamento de defeitos, permitindo que os problemas identi�cados durante os
testes sejam registrados, rastreados e priorizados de forma e�caz.  
O uso de Ferramentas CASE para testes de software ajuda a melhorar a qualidade do software,
economiza tempo e recursos, e promove a colaboração entre membros da equipe. 
Gerenciamento de testes 
O gerenciamento de testes é uma disciplina crítica na engenharia de software, responsável por
coordenar e supervisionar todas as atividades relacionadas aos testes de software. Isso envolve
a criação de estratégias de teste que de�nem como os testes serão planejados e executados
(PRESSMAN; MAXIM, 2021).  
O gerenciamento de testes também inclui a alocação de recursos, como pessoal, ambientes de
teste e hardware necessário. Os gerentes de teste estabelecem critérios de aceitação para os
testes, monitoram o progresso das atividades e fornecem relatórios sobre o status deles. Além
disso, desempenham um papel importante na priorização de defeitos identi�cados e no
acompanhamento de sua resolução.  
Disciplina
Engenharia de Software
O gerenciamento e�caz de testes ajuda a garantir que sejam conduzidos de forma organizada,
abrangente e dentro do cronograma do projeto, contribuindo assim para a entrega de software de
alta qualidade. 
Testes automatizados de software 
Os testes automatizados de software são uma prática que envolve a criação de scripts e o uso
de ferramentas de automação para realizar testes de forma programada e repetitiva. Esses
testes são particularmente valiosos em ambientes de desenvolvimento ágil, onde as mudanças
frequentes no código exigem veri�cações constantes (PRESSMAN; MAXIM, 2021).  
Ao automatizá-los, as organizações podem acelerar o processo, garantir que os testes de
regressão sejam executados rapidamente e fornecer feedback imediato sobre a qualidade do
software. Os testes automatizados também desempenham um papel fundamental na
implementação de práticas de integração contínua (CI) e entrega contínua (CD), permitindo que
as atualizações de software sejam entregues de forma rápida e con�ável.  
No entanto, é importante lembrar que os testes automatizados não podem substituir
completamente os testes manuais, pois alguns aspectos do software exigem avaliação humana,
como a usabilidade e a experiência do usuário. 
Potencializando a qualidade do software
Vejamos, agora, como os conceitos de Ferramentas CASE para testes de software,
Gerenciamento de Testes e Testes Automatizados de Software se relacionam e se
Disciplina
Engenharia de Software
complementam, destacando suas importâncias e características. 
Ferramentas CASE para testes de software 
No contexto dos testes de software, as Ferramentas CASE oferecem uma ampla gama de
funcionalidades que simpli�cam, aprimoram e automatizam muitos aspectos do processo de
teste. Vamos aprofundar o entendimento sobre essas ferramentas e sua importância. 
Criação de casos de teste: as Ferramentas CASE permitem que os testadores criem casos
de teste de maneira e�ciente. Elas fornecem interfaces intuitivas para especi�car
condições de teste, entradas, saídas esperadas e critérios de aceitação (PRESSMAN;
MAXIM, 2021). Um exemplo notável é o TestRail, que permite a criação e documentação
detalhada de casos de teste de forma organizada. 
Rastreamento de Requisitos: uma característica crucial das Ferramentas CASE é a
capacidade de rastrear requisitos. Elas permitem que você associe casos de teste a
requisitos especí�cos, garantindo que cada funcionalidade do software seja testada. Isso é
particularmente valioso em projetos de grande escala. Ferramentas como o IBM
Engineering Requirements Management DOORS integram gerenciamento de requisitos com
testes de software. 
Automação de Testes: muitas Ferramentas CASE incluem recursos avançados de
automação de testes. Elas permitem que você crie scripts de teste automatizados e
execute testes de regressão com facilidade. Uma ferramenta poderosa para automação de
testes é o Selenium, que oferece suporte para testes de interface do usuário em diversos
navegadores. 
Relatórios e Métricas: para avaliar o progresso e a e�cácia dos testes, as Ferramentas
CASE oferecem recursos de geração de relatórios e métricas. Elas fornecem insights sobre
a cobertura de teste, a taxa de defeitos encontrados e outros indicadores-chave de
qualidade. O Relatório de Teste do TestLink, por exemplo, oferece uma visão clara do status
dos testes. 
Colaboração em Equipe: as Ferramentas CASE promovem a colaboração e�caz entre os
membros da equipe de teste e desenvolvimento. Elas oferecem recursos de
compartilhamento de informações e colaboração em tempo real. O TestCollab, por
exemplo, permite que equipes trabalhem juntas na criação e execução de casos de teste. 
Testes automatizados de software 
Um dos principais benefícios dos testes automatizados é a capacidade de realizar testes de
regressão de forma e�caz. À medida que novas funcionalidades são adicionadas ou alterações
são feitas no código, os testes de regressão garantem que as funcionalidades existentes não
sejam afetadas. Isso economiza tempo e ajuda a evitar a introdução de novos defeitos. 
Os testes automatizados são uma parte fundamental da Integração Contínua (CI). Nesse
processo, sempre que um desenvolvedor faz uma alteração no código, um conjunto de testes
automatizados é acionado automaticamente. Se algum teste falhar, a alteração não é integrada
ao código principal até que o problema seja resolvido. Isso ajuda a manter um código mais
estável e con�ável. 
Eles não se limitam apenas a testar a funcionalidade do software, mas também podem ser
usados para realizar testes de desempenho e carga, simulando condições de uso intensivo para
avaliar como o software se comporta sob estresse. Ferramentas como o Apache JMeter
permitem criar cenários de teste complexos para medir o desempenho do software. 
Disciplina
Engenharia de Software
Potencializando o teste de software
A respeito das ferramentas CASE, gerenciamento de testes e os Testes Automatizados, vamos
mergulhar em exemplos práticos para cada um desses tópicos e mostrar como eles se aplicam
no mundo real da engenharia de software. 
Ferramentas CASE para Testes de Software 
Considere que você está trabalhando em um projeto de desenvolvimento de software para um
sistema de gerenciamento de biblioteca. Sua equipe precisa criar e executar casos de teste para
garantir que o sistema atenda a todos os requisitos do cliente. Neste cenário, você pode utilizar
ferramentas CASE como o TestRail ou o TestLink para simpli�car o processo. 
Primeiro, você cria casos de teste detalhados, especi�cando as ações que devem ser
executadas, as entradas esperadas e os resultados desejados. Esses casos de teste podem ser
organizados em suítes, tornando a gestão mais e�ciente. 
Depois, associe esses casos de teste aos requisitos do sistema, garantindo que cada
funcionalidade seja testada. Isso ajuda a rastrear o progresso e a cobertura dos testes,
certi�cando-se de que nenhum requisito seja deixado de lado. 
Quando chega a hora de executá-los, você utilizará as ferramentas para registrar os resultados.
Se um caso de teste falhar, a ferramenta permite que você documente o defeito de forma
organizada, facilitando a comunicação com a equipe de desenvolvimento. 
Gerenciamento de testes 
Suponha que você está liderando a equipe de teste no mesmo projeto da biblioteca.Como
gerente de testes, sua responsabilidade é garantir que todas as atividades de teste sejam
Disciplina
Engenharia de Software
executadas de forma e�caz. 
Você utiliza uma ferramenta de gerenciamento de testes, como o qTest, para criar um plano de
teste abrangente. Nesse plano, você de�ne quais testes serão realizados, quem será responsável
por cada tarefa e os prazos para conclusão. 
Além disso, você aloca os recursos necessários, como máquinas de teste e pessoal, e prioriza os
testes de acordo com a importância e a criticidade das funcionalidades. 
À medida que os testes são executados, você monitora o progresso em tempo real por meio da
ferramenta de gerenciamento. Isso permite que você tome decisões informadas sobre quais
áreas precisam de mais atenção e quais podem ser consideradas como passadas. 
Testes Automatizados de Software 
Agora, vamos considerar que você está trabalhando em um projeto de comércio eletrônico. Para
garantir que o processo de compra funcione sem problemas em cada atualização do software,
você decide implementar testes automatizados. 
Você utiliza uma ferramenta como o Selenium para criar scripts de teste que simulam a interação
de um cliente real com a loja on-line. Esses scripts podem ser executados automaticamente
sempre que houver uma nova versão do software. 
Ao criar um script que simula a seleção de produtos, a adição ao carrinho de compras e o
processo de checkout. Esse script pode ser repetido quantas vezes forem necessárias,
detectando automaticamente qualquer falha, como um botão de "comprar" quebrado. 
Ao integrar esses testes automatizados em seu �uxo de trabalho de CI/CD, você garante que
cada atualização do software seja testada automaticamente, identi�cando problemas
imediatamente. Isso economiza tempo, evita erros humanos e aumenta a con�abilidade do
sistema. 
Videoaula: Desenvolvimento orientado a testes
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo, mergulharemos nos fundamentos dos testes de software de
uma forma superinteressante, em que abordaremos o Teste do Caminho Básico, Testes
Baseados em Grafos e Testes Baseados em Modelos. Esses são conceitos que podem fazer
toda a diferença na qualidade dos softwares que construímos. Vamos lá! 
Saiba mais
Disciplina
Engenharia de Software
Os testes de software em cada organização podem seguir processos um pouco distintos
daqueles elencados na literatura cientí�ca. Um bom artigo para visualizar tais diferenças é o
intitulado “A importância da atividade do teste no desenvolvimento de software”, de autoria de
Karla Pires de Souza e Angelita Moutin Segoria Gasparotto, fornecido pela Associação Brasileira
de Engenharia de Produção (ABEPRO).  
SOUZA, K. P. de; GASPAROTTO, A. M. S. A importância da atividade do teste no desenvolvimento
de software. XXXIII ENCONTRO NACIONAL DE ENGENHARIA DE PRODUCAO. A Gestão dos
Processos de Produção e as Parcerias Globais para o Desenvolvimento Sustentável dos
Sistemas Produtivos. Salvador, BA, Brasil, 2013. 
Referências
https://abepro.org.br/biblioteca/enegep2013_TN_STO_177_007_23030.pdf
https://abepro.org.br/biblioteca/enegep2013_TN_STO_177_007_23030.pdf
Disciplina
Engenharia de Software
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021. 
Aula 5
Revisão da unidade
 Testes de software
Disciplina
Engenharia de Software
Olá, estudante! Nesta unidade, demos os primeiros passos na jornada do teste de software e
adquiriu diversas competências neste processo. Deste modo, vamos resumir sete das principais
competências que você desenvolveu ao longo dessa etapa. 
Durante esta unidade, vimos os fundamentos essenciais dos testes de software.
Compreendemos a importância de testar sistemas de software para identi�car falhas e garantir a
qualidade. Falamos sobre os tipos de testes e como eles se encaixam no ciclo de
desenvolvimento de software.  Desenvolvemos a habilidade de elaborar casos de teste e�cazes.
Aprendemos a traduzir requisitos de software em cenários de teste detalhados, de�nindo
entradas, ações e critérios de veri�cação. Compreendemos, também, a importância de abordar
diferentes condições e �uxos de dados para garantir uma cobertura abrangente dos testes. 
Ao falarmos sobre automação de testes, entendemos seu papel na aceleração e na melhoria da
consistência dos testes de software. Conhecemos as principais ferramentas de automação,
como Selenium e JUnit, para criar e executar testes automatizados. Essa competência é valiosa
para agilizar o processo de teste em projetos de grande escala. 
Aprofundamos nosso conhecimento em estratégias avançadas de teste, de modo a
compreender a importância dos testes de integração, que avaliam a interação entre diferentes
módulos ou componentes de software. Além disso, explorou os testes de aceitação, que
garantem que o software atenda aos requisitos do cliente e aos critérios de aceitação de�nidos.  
Ainda, desenvolvemos as competências em gerenciamento de testes. Compreendemos o que é
planejar estrategicamente os testes de software, de�nindo objetivos, escopo, recursos
necessários e cronograma. Isso é fundamental para garantir que os testes sejam conduzidos de
forma e�caz e e�ciente. Compreendemos a importância da rastreabilidade de defeitos, que
permite acompanhar a relação entre requisitos, casos de teste e defeitos. Além disso,
desenvolvemos habilidades de controle e gerenciamento de defeitos de maneira sistemática,
garantindo que sejam identi�cados, priorizados e resolvidos de forma adequada. 
Disciplina
Engenharia de Software
Por �m, aprofundamos nosso conhecimento sobre a integração contínua e DevOps.
Compreendemos como os testes automatizados desempenham um papel fundamental nesse
contexto, garantindo que cada alteração de código seja testada automaticamente, permitindo
assim identi�car falhas rapidamente. 
Essas habilidades adquiridas até aqui são essenciais para garantir a qualidade do software e
contribuir para o sucesso de projetos de desenvolvimento.  
Videoaula: Revisão da unidade
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo, vamos apresentar um resumo abrangente da disciplina de
teste de software, explorando conceitos fundamentais que são essenciais para o
desenvolvimento das competências que são inerentes ao pro�ssional capacitado a partir desta
disciplina. Veremos os principais conceitos apresentados durante a disciplina, de modo a
recapitular pontos fundamentais e de realizar a �xação de conceitos que possam ter passado
por desapercebido.  
Estudo de caso
Disciplina
Engenharia de Software
Para contextualizar sua aprendizagem, imagine que você trabalha para uma empresa de
tecnologia que desenvolve um aplicativo de mobilidade urbana amplamente utilizado por
milhões de usuários em todo o país.  
Nos últimos meses, a empresa tem enfrentado um aumento signi�cativo nas reclamações dos
usuários devido a erros e falhas no aplicativo, o que está prejudicando a experiência do cliente e
afetando a reputação da empresa. 
A equipe de desenvolvimento realizou várias atualizações recentes no aplicativo para adicionar
novos recursos e melhorias, mas essas mudanças parecem ter introduzido novos problemas e
afetado a estabilidade geral do sistema. Como parte da equipe de teste de software, você foi
designado para abordar essa situação e restaurar a con�ança dos usuários no aplicativo. 
Desa�o: aplicar os testes de software para melhorar a qualidade do aplicativo de mobilidade
urbana.  
1. Casos de Testes e Plano de Testes
Elabore casos de teste abrangentes que cubram os principais recursos e funcionalidades
do aplicativo, levando emconsideração as reclamações dos usuários. 
Crie um plano de testes que inclua a estratégia de teste, os recursos necessários, os prazos
e os critérios de aceitação. 
2. Estratégias de testes de software
Realize testes de unidade para veri�car o funcionamento correto de cada componente do
aplicativo. 
Execute testes de integração para garantir que os diferentes módulos se comuniquem sem
problemas. 
Disciplina
Engenharia de Software
Valide os cenários de uso do aplicativo por meio de testes de validação. 
Realize testes de sistema abrangentes para garantir que o aplicativo funcione corretamente
em diferentes dispositivos e condições. 
3. Técnicas de teste de software
Utilize técnicas de teste do caminho básico para identi�car os principais �uxos de
navegação no aplicativo. 
Aplique testes baseados em grafos e modelos para explorar cenários complexos de
interação com o aplicativo. 
4. Ferramentas CASE para Testes de Software
Selecione e utilize ferramentas CASE apropriadas para facilitar a criação e execução de
casos de teste. 
Gerencie e�cazmente os casos de teste, resultados e defeitos por meio de uma ferramenta
de gerenciamento de testes. 
Automatize testes repetitivos e críticos para acelerar o processo de teste. 
Espera-se que, ao aplicar os conhecimentos e técnicas de teste de software aprendidos nesta
unidade, você seja capaz de identi�car e corrigir os problemas no aplicativo de mobilidade
urbana, melhorando a qualidade e a con�abilidade do sistema. Além disso, sua contribuição será
fundamental para restaurar a satisfação dos usuários e a reputação da empresa. 
________
Re�ita
Agora que você está imerso no estudo de caso de melhorar a qualidade de um aplicativo de
mobilidade urbana, vamos re�etir sobre como os conceitos estudados podem ser aplicados de
forma prática. 
Primeiramente, pense nos casos de teste e no plano de testes que você pode preparar.  
Eles serão cruciais para garantir uma cobertura completa do aplicativo?  
Certi�que-se de incluir cenários que reproduzam as principais reclamações dos usuários, como
erros durante a reserva de viagens ou problemas de localização. 
Os testes de unidade e integração são fundamentais para identi�car e corrigir possíveis
defeitos em componentes individuais e na interação entre eles? 
Lembre-se de que, ao realizar testes de validação e sistema, você está testando o aplicativo
como um todo, garantindo que ele atenda aos requisitos funcionais e de desempenho. 
A aplicação das técnicas de teste do caminho básico, testes baseados em grafos e testes
baseados em modelos ajuda a explorar todas as possíveis interações no aplicativo? 
Utilizar ferramentas CASE simpli�cará a criação e execução de casos de teste? 
Não se esqueça de gerenciar seus testes e resultados por meio de uma ferramenta de
gerenciamento de testes. 
Disciplina
Engenharia de Software
Lembre-se de que seu objetivo é identi�car e corrigir erros no aplicativo, melhorando sua
qualidade e a satisfação do usuário.  
Videoaula: Resolução do estudo de caso
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Agora que você está imerso na situação-problema de melhorar a qualidade de um aplicativo de
mobilidade urbana, vamos abordar como aplicar os conhecimentos adquiridos nas aulas de teste
de software para resolver esse desa�o. 
1. Casos de Testes e Plano de Testes: comece elaborando casos de teste que abranjam os
principais recursos e funcionalidades do aplicativo, levando em consideração as
reclamações dos usuários. Por exemplo, crie casos de teste para veri�car a reserva de
viagens, o cálculo de rotas e a funcionalidade de pagamento.
Em seguida, crie um plano de testes que inclua a estratégia de teste, os recursos necessários, os
prazos e os critérios de aceitação. Isso garantirá que seus esforços de teste sejam organizados
e bem direcionados. 
2. Estratégias de teste de software: realize testes de unidade para examinar componentes
individuais do aplicativo, como módulos de reservas e cálculos de tarifas. Isso ajudará a
identi�car erros de programação especí�cos.
Execute testes de integração para garantir que os diferentes módulos do aplicativo funcionem
corretamente juntos. Por exemplo, veri�que se a reserva de viagens interage adequadamente
com o sistema de pagamento. 
Valide os cenários de uso do aplicativo por meio de testes de validação. Isso envolve simular
ações reais de usuários, como solicitar uma viagem e veri�car se o resultado está correto. 
É importante criar uma classi�cação ou hierarquia de tipos de erros possíveis, oriundos da
interação homem-máquina ou da interação entre sistemas acessórios de bancos de dados ou
conteúdo disponível na Internet, desse modo, a equipe de gestão dos testes pode se certi�car
que todos os testes realizados atingirão o mesmo nível de profundidade, tanto em termos de
abrangência do erro ou problema, quanto a profundidade e impacto do erro na operação como
um todo. 
Realize testes de sistema em diversos dispositivos e condições para garantir que o aplicativo
funcione perfeitamente em todas as situações. 
Disciplina
Engenharia de Software
3. Técnicas de teste de software: utilize técnicas de teste do caminho básico para identi�car
os principais �uxos de navegação no aplicativo. Por exemplo, teste o processo de reserva
de viagens do início ao �m, veri�cando todas as etapas.
Aplique testes baseados em grafos e modelos para explorar cenários complexos de interação
com o aplicativo. Isso ajudará a identi�car combinações inesperadas de ações do usuário que
podem levar a erros. 
Para evitar que os testes sejam redundantes, ou seja, identi�quem apenas os mesmos tipos de
erros ou problemas, avalie os resultados separadamente, identi�cando quais classes de
problemas cada teste conseguiu efetivamente identi�car. 
4. Ferramentas CASE para Testes de Software: utilize ferramentas CASE adequadas para criar
casos de teste de forma e�ciente e automatizar partes dos testes.
Gerencie seus casos de teste, resultados e defeitos por meio de uma ferramenta de
gerenciamento de testes. Isso facilitará o acompanhamento do progresso e a comunicação com
a equipe. 
Considere a automação de testes para casos repetitivos ou críticos. Isso economizará tempo e
permitirá que você execute testes frequentemente. 
Lembre-se de documentar cuidadosamente todos os testes realizados, incluindo os cenários de
teste, resultados e qualquer defeito encontrado. Isso fornecerá uma base sólida para análise
posterior e garantirá que as correções sejam feitas de maneira e�caz. 
Existem empresas no mercado especializadas em realizar apenas testes de software em
diferentes escalas. Tais serviços terceirizados podem fornecer uma alternativa mais rápida para
testes generalistas e dedicados a erros simples, mas di�cilmente poderão prever interações mais
complexas com fornecedores, parceiros e clientes que realmente utilizarão o software
desenvolvido. 
Resumo visual
Disciplina
Engenharia de Software
Veja o resumo visual:
Disciplina
Engenharia de Software
Referências
Disciplina
Engenharia de Software
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021. 
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil, 2018. 
,
Unidade 4
Tópicos avançados em engenharia de software
Aula 1
Manutenção e evolução de software
Introdução
Disciplina
Engenharia de Software
Olá, estudante! Nesta aula, exploraremos conceitos cruciais que têm um impacto profundo na
qualidade e na longevidade dos sistemas de software. 
A engenharia de software é uma disciplina em constante evolução, e a manutenção de software
desempenha um papel central nesse cenário. Aprenderemos como identi�car e classi�car esta
atividade, compreendendo a importância de manter os sistemas de software atualizados. 
Ao �nal desta aula, conseguiremosidenti�car os tipos de manutenção, entender como a
engenharia reversa e a reengenharia podem ser aplicadas para melhorar sistemas existentes, e a
importância da evolução contínua no contexto das demandas em constante mudança. 
Conceitos da manutenção e evolução de software
Disciplina
Engenharia de Software
A manutenção de software é uma das fases mais críticas do ciclo de vida do desenvolvimento de
software. Envolve aprimorar, corrigir e adaptar o software após sua entrega inicial. Para
compreender essa complexa área, é fundamental conhecer os tipos de atividades de
manutenção. 
Manutenção corretiva: essa atividade lida com a correção de erros e defeitos identi�cados
após a entrega do software. Seu foco principal é restaurar o software ao seu estado
funcional original. 
Manutenção adaptativa: envolve a modi�cação do software para acomodar mudanças no
ambiente, como atualizações de sistemas operacionais ou hardware. O objetivo é garantir
que o software continue a funcionar de forma e�caz em novos cenários. 
Manutenção perfectiva: nesse caso, o software é aprimorado para adicionar novos
recursos ou melhorar o desempenho. A manutenção perfectiva visa atender às
necessidades em constante evolução dos usuários. 
Manutenção preventiva: Foca na antecipação de problemas futuros, evitando falhas
potenciais. Isso é feito por meio de análises e atualizações regulares para evitar o
envelhecimento prematuro do software. 
A engenharia reversa é o processo de analisar um software existente para extrair informações
sobre seu design, estrutura e funcionamento. Isso é útil quando a documentação original está
ausente ou desatualizada. Por outro lado, a reengenharia envolve a recriação ou reformulação de
um sistema existente para melhorar sua qualidade, desempenho ou manutenibilidade. 
Engenharia Reversa: 
Análise de código-fonte: A engenharia reversa começa com a análise do código-fonte
existente, identi�cando padrões e estruturas. 
Disciplina
Engenharia de Software
Diagramas UML: O uso de diagramas UML pode ajudar a visualizar a estrutura do software,
tornando-o mais compreensível. 
Reengenharia: 
Refatoração: essa técnica visa melhorar a estrutura interna do software sem alterar seu
comportamento externo. 
Modernização: atualização de tecnologias obsoletas ou migração para novas plataformas. 
A evolução de software refere-se à capacidade de um sistema de software de continuar a
atender às necessidades em constante mudança dos usuários e do ambiente. É uma parte vital
da manutenção de software e envolve: 
Melhorias contínuas: atualizações regulares para adicionar recursos, melhorar o
desempenho e corrigir erros. 
Adaptação a novos ambientes: certi�cando-se de que o software continue funcionando em
novos sistemas operacionais, hardware ou redes. 
Migração de dados: movendo dados de sistemas legados para novas soluções. 
Ferramentas de automação, como ferramentas de teste automatizado e implantação
automatizada, são cruciais para apoiar a evolução contínua do software. Os princípios da
evolução de software, como a capacidade de resposta às mudanças e a entrega de valor
constante, são fundamentais para garantir que o software permaneça relevante e competitivo. 
A evolução de software é essencial para garantir que os sistemas de software permaneçam
relevantes e úteis ao longo do tempo
Etapas, ferramentas e classi�cações fundamentais de manutenção e
evolução de software
Disciplina
Engenharia de Software
Agora, aprofundaremos nossos conhecimentos sobre os conceitos de Manutenção de Software,
Engenharia Reversa e Evolução de Software, explorando suas etapas, ferramentas e
classi�cações fundamentais. 
A manutenção de software é um processo complexo que requer um conjunto especí�co de
etapas e classi�cações para atender às diversas necessidades de um sistema de software. Aqui
estão os principais elementos desse conceito: 
1. Etapas da manutenção: 
Identi�cação de necessidades: a primeira etapa é identi�car as necessidades de
manutenção, que podem ser correções de erros, adaptações, melhorias ou prevenção de
problemas futuros. 
Disciplina
Engenharia de Software
Análise e planejamento: após identi�car as necessidades, é importante analisar o impacto
das mudanças propostas e planejar as atividades de manutenção. 
Implementação: nessa fase, as mudanças são implementadas, seja corrigindo erros,
adaptando o software a novos ambientes ou aprimorando-o. 
Teste e validação: após a implementação, o software é testado para garantir que as
mudanças não introduzam novos problemas ou afetem negativamente o funcionamento do
sistema. 
Documentação: É essencial documentar todas as mudanças realizadas para manter um
registro claro do que foi feito. 
2. Classi�cação da manutenção:  
Manutenção corretiva: corrige erros e falhas após a entrega do software. 
Manutenção adaptativa: adapta o software a mudanças no ambiente, como atualizações
de hardware ou sistemas operacionais. 
Manutenção perfectiva: melhora o software adicionando novos recursos ou otimizando o
desempenho. 
Manutenção preventiva: realiza atividades proativas para evitar futuros problemas e falhas. 
A engenharia reversa e reengenharia são abordagens fundamentais para entender e melhorar
sistemas existentes. Aqui estão os principais elementos desses conceitos: 
3. Etapas da engenharia reversa e reengenharia: 
Análise do código-fonte: inicia-se pela análise do código-fonte existente para compreender
a estrutura e a lógica do sistema. 
Extração de modelos: com base na análise, é possível extrair modelos de representação do
sistema, como diagramas UML. 
Identi�cação de padrões e funcionalidades: através da análise, é possível identi�car os
padrões de funcionamento e as principais funcionalidades do sistema. 
Tomada de decisões: com as informações obtidas, as decisões são tomadas,
determinando se a Reengenharia é necessária e como ela será realizada. 
A evolução de software é crucial para manter sistemas de software relevantes e funcionais. Aqui
estão os principais elementos desse conceito: 
4. Etapas da evolução de software: 
Avaliação contínua: a evolução começa com uma avaliação contínua das necessidades do
sistema e das oportunidades de melhoria. 
Atualizações incrementais: as atualizações são realizadas de forma incremental para
adicionar novos recursos, melhorar o desempenho e corrigir erros. 
Adaptação a novos ambientes: o software deve ser adaptado para funcionar em novos
ambientes, como atualizações de sistemas operacionais ou mudanças na infraestrutura de
TI. 
Migração de dados: a migração de dados de sistemas legados para novas soluções deve
ser cuidadosamente planejada e executada. 
Disciplina
Engenharia de Software
Compreender essas etapas, ferramentas e classi�cações é essencial para resolver problemas,
classi�car situações e interpretar as necessidades relacionadas à manutenção de software,
engenharia reversa e evolução de software.  
Manutenção de software, engenharia reversa e evolução de software em
cenários reais
Classi�cação e tipos de atividades de manutenção de software 
Imagine que você trabalha em uma empresa que desenvolve um software de gestão empresarial
amplamente utilizado por várias organizações. Com o tempo, os usuários começam a relatar
erros frequentes, desempenho lento e di�culdades de adaptação a novos requisitos legais. 
Aplicação na prática: 
Manutenção corretiva: você e sua equipe identi�cam os erros relatados pelos usuários,
priorizam-nos e começam a corrigi-los. Isso envolve a análise de código, a identi�cação
das causas raiz e a implementação de correções. 
Disciplina
Engenharia de Software
Manutenção adaptativa: você precisa adaptar o software para cumprir as novas
regulamentações governamentais. Isso requer a modi�cação de partes do sistema
afetadas pelas mudanças legais. 
Manutenção perfectiva: além das correções e adaptações, é possível melhorar a
usabilidade do software, redesenhando a interface do usuário e otimizando os processos. 
Engenharia reversa e reengenharia 
Em outro cenário,você é contratado por uma empresa que adquiriu um sistema legado de um
concorrente. No entanto, o sistema é antigo e mal documentado, e a equipe não tem
conhecimento completo sobre como funciona. 
Aplicação na prática: 
Engenharia reversa: para compreender o sistema, você começa com a análise do código-
fonte e da estrutura existente. Utilizando ferramentas de análise estática e dinâmica, você
extrai informações sobre o design e o funcionamento do sistema. 
Reengenharia: com base na análise, você toma a decisão de recriar partes do sistema para
melhorar a e�ciência e a manutenibilidade. Isso envolve refatorar o código, otimizar
algoritmos e atualizar bibliotecas desatualizadas. 
Evolução de software 
Agora, imagine que você é o gerente de um projeto de software em uma startup de rápido
crescimento. O software da empresa está em constante evolução para atender às necessidades
do mercado em rápida mudança. 
Aplicação na prática: 
Avaliação contínua: a equipe de desenvolvimento realiza avaliações contínuas do software
para identi�car oportunidades de melhoria. Isso inclui a coleta de feedback dos usuários e
a análise de métricas de desempenho. 
Atualizações incrementais: com base nas avaliações, a equipe implementa atualizações
incrementais do software, adicionando novos recursos e aprimorando a experiência do
usuário. 
Adaptação a novos ambientes: à medida que a empresa expande, você garante que o
software seja compatível com novas plataformas e sistemas operacionais, para que os
clientes possam acessá-lo em diferentes dispositivos. 
Migração de dados: quando a empresa migra para um sistema de gerenciamento de banco
de dados mais moderno, você planeja e executa a migração de dados para garantir a
continuidade das operações. 
Videoaula: Manutenção e evolução de software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
Disciplina
Engenharia de Software
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo abordaremos de forma concisa e envolvente os principais
conceitos de Manutenção de software, Engenharia Reversa, Reengenharia e Evolução de
software. Este vídeo será seu guia para revisitar os tópicos-chave que exploramos nesta aula,
preparando-o para o sucesso em suas futuras atividades e projetos na área de Engenharia de
Software.  
Saiba mais
Aqui estão algumas recomendações exclusivas de recursos que podem auxiliar você a
aprofundar seu conhecimento nos temas abordados nesta aula: 
Ferramentas de engenharia reversa: experimente ferramentas como o Jadx para análise de
aplicativos Android e o IDA Pro para análise de código de baixo nível. Essas ferramentas
são essenciais para engenheiros de software que trabalham com Engenharia Reversa. 
GitHub: explore repositórios no GitHub que contenham projetos de código aberto
relacionados à Manutenção de Software e Evolução de Software. Você pode aprender
muito ao estudar projetos reais e suas contribuições. 
Stack Over�ow: aproveite a comunidade do Stack Over�ow para fazer perguntas, buscar
respostas e aprender com outros engenheiros de software que enfrentam desa�os
https://github.com/skylot/jadx
https://hex-rays.com/ida-pro/
https://github.com/
https://stackoverflow.com/
Disciplina
Engenharia de Software
semelhantes. É uma excelente fonte de conhecimento prático. 
Plataformas de desenvolvimento: para aprofundar seus conhecimentos em programação e
desenvolvimento de software, considere explorar plataformas como LeetCode, HackerRank
e CodeSignal. Elas oferecem desa�os de programação que podem aprimorar suas
habilidades. 
Conferências e Meetups: participe de conferências e grupos de meetups locais ou online
relacionados à Engenharia de Software. Esses eventos são ótimas oportunidades para
networking e aprendizado prático. 
Lembre-se de que o aprendizado contínuo é essencial na área de Engenharia de Software, e
esses recursos podem ajudá-lo a se manter atualizado e aprofundar seus conhecimentos em
tópicos avançados. Explore cada um deles de acordo com suas necessidades especí�cas e
objetivos pro�ssionais.
Referências
BASILI, V. R. et al., Experimentation in software engineering, in IEEE Transactions on Software
Engineering, vol. SE-12, no. 7, pp. 733-743, Julho de 1986, doi: 10.1109/TSE.1986.6312975.  
HIRAMA, Kechi. Engenharia de Software: qualidade e produtividade com tecnologia. Rio de
Janeiro: Elsevier, 2011. 
PAULA FILHO, Wilson de Pádua. Engenharia de Software: projetos e processos. 4.ed. Rio de
Janeiro: LTC, 2019.  
PRESSMAN, Roger, e MAXIM, Bruce R. Engenharia de Software: uma abordagem pro�ssional.
9.ed. Porto Alegre: AMGH, 2021.  
https://leetcode.com/
https://www.hackerrank.com/
https://codesignal.com/developers/
https://codesignal.com/developers/
Disciplina
Engenharia de Software
SBROCCO, José Henrique T. de C. Metodologias ágeis: engenharia de software sob medida. 1.ed.
São Paulo: Érica, 2012. 
SEIJAS, P. L., THOMPSON, S. FRANCISCO, M. A. , Model extraction and test generation from JUnit
test suites. Software Quality Journal, V. 26 . pp. 1519-1552. 2018. ISSN 0963-9314.. 
SOMMERVILLE, Ian. Engenharia de Software. 10.ed. São Paulo: Pearson Education do Brasil,
2018.  
Aula 2
Gestão de risco
Introdução
Olá, estudante! A gestão de risco desempenha um papel fundamental na engenharia de software,
por isso precisamos aprender sobre os riscos associados ao desenvolvimento de programas.
Compreender estes riscos é essencial, pois eles podem afetar a qualidade, a e�cácia e até
mesmo a conclusão bem-sucedida desses projetos. 
Nesta jornada de aprendizado, será introduzido os conceitos de riscos de software e suas
diversas facetas. Aprenderemos a identi�car e prever riscos potenciais em projetos de
engenharia de software, uma habilidade crítica para qualquer pro�ssional da área. 
Além disso, exploraremos as estratégias de mitigação, monitoramento e gestão de riscos
(RMMM) que permitem que equipes de desenvolvimento minimizem ameaças e aproveitem
oportunidades. 
Disciplina
Engenharia de Software
A gestão de risco não é apenas teoria; ela tem aplicações práticas em todos os aspectos do
desenvolvimento de software. Nesse tópico essencial iremos moldar sua compreensão da
engenharia de software e o capacitar a enfrentar desa�os reais no seu cotidiano pro�ssional. 
 Gestão de risco em engenharia de software
Os três principais tópicos que exploraremos nesta aula são: Riscos de Software, Identi�cação e
Previsão do Risco e Mitigação, Monitoramento e Gestão de Riscos (RMMM). Esses temas são
cruciais para o sucesso em qualquer empreendimento de engenharia de software. 
Riscos de software: os riscos de software são eventos incertos que podem in�uenciar
positiva ou negativamente os objetivos de um projeto de software. Segundo Pressman e
Maxim (2014), "riscos de software referem-se a condições e eventos que podem resultar
em falhas ou atrasos no desenvolvimento do software".  Isso pode incluir desde desa�os
técnicos, como a complexidade do código, até fatores externos, como mudanças nas
demandas do mercado. Compreender os riscos inerentes à engenharia de software é
fundamental para a tomada de decisões informadas. 
Identi�cação e previsão do risco: a identi�cação e previsão do risco são passos cruciais na
gestão de riscos em engenharia de software. Conforme Sommerville (2018), a identi�cação
Disciplina
Engenharia de Software
de riscos envolve a busca ativa de eventos incertos que podem afetar o projeto. Isso pode
ser realizado através de técnicas como análise de requisitos detalhados, consulta a
especialistas e revisão de projetos semelhantes.  
A previsão do risco, por sua vez, emprega métodos como a técnica Delphi, que coleta opiniões de
especialistas para estimar a probabilidade de ocorrência de riscos futuros. Essas etapas são
cruciais para antecipar potenciais problemas e preparar estratégias de mitigação. 
Mitigação, Monitoramento e Gestão de Riscos (RMMM): a mitigação, monitoramentoe
gestão de riscos (RMMM) representam a fase de ação na gestão de risco. Como
enfatizado por Paula Filho (2019), a mitigação envolve a criação de planos de contingência
e estratégias para reduzir a probabilidade e o impacto dos riscos identi�cados. O
monitoramento é uma atividade contínua que visa rastrear a evolução dos riscos e a
e�cácia das estratégias de mitigação. A gestão de riscos é um ciclo iterativo que exige a
adaptação constante das estratégias com base nos dados obtidos durante o
monitoramento. 
Introduzimos os pilares fundamentais da gestão de risco em engenharia de software.
Compreendemos o signi�cado dos riscos de software, aprendemos a identi�cá-los e prever sua
ocorrência, e viu a importância da mitigação, monitoramento e gestão de riscos (RMMM). Estes
conceitos formam a base para uma gestão de risco e�caz em projetos de desenvolvimento de
software.  
A seguir, abordaremos estratégias práticas de mitigação de riscos e como elas podem ser
implementadas com sucesso em projetos de engenharia de software. 
Estratégias de identi�cação, previsão e mitigação de riscos
Disciplina
Engenharia de Software
Vamos, agora, explorar a importância intrínseca de cada um desses conceitos e como se
relacionam para garantir o sucesso em projetos de desenvolvimento de software. 
Riscos de software: entendendo a complexidade 
Os riscos de software são como as variáveis desconhecidas em uma equação. Podem surgir em
várias formas e têm o potencial de moldar o curso de um projeto. Eles podem estar relacionados
a fatores técnicos, como complexidade do código, ou a elementos externos, como mudanças
nas necessidades do cliente. Identi�car e compreender esses riscos desde o início é crucial, pois,
como mencionado por Pressman e Maxim (2021, p. 214), eles "podem resultar em falhas ou
atrasos no desenvolvimento do software". 
Identi�cação e previsão do risco: ferramentas para a antecipação 
A identi�cação e previsão do risco são etapas proativas na gestão de risco em engenharia de
software. A técnica SWOT (Forças, Fraquezas, Oportunidades e Ameaças), conforme sugerido
por Sommerville (2018), é uma bússola valiosa nesse contexto, Sommerville ressaltou a
importância de identi�car riscos em estágios iniciais do projeto.  
Esta matriz classi�ca os riscos com base na probabilidade de ocorrência e no impacto potencial,
auxiliando as equipes na priorização das ameaças mais signi�cativas. Além disso, a técnica
Delphi, que coleta opiniões de especialistas para prever a probabilidade de riscos futuros, é uma
ferramenta valiosa para antecipar possíveis desa�os. 
Mitigação, Monitoramento e Gestão de Riscos (RMMM): ação contínua 
Após identi�car e prever riscos, a mitigação e a gestão e�cazes desses riscos são cruciais. Paula
Filho (2019) ressalta que a mitigação envolve a criação de planos de contingência e estratégias
Disciplina
Engenharia de Software
para reduzir a probabilidade e o impacto dos riscos. Isso pode incluir a alocação de recursos
adicionais ou a implementação de medidas preventivas.  
O monitoramento contínuo é uma atividade essencial para garantir que as estratégias de
mitigação funcionem conforme o planejado. Ferramentas como o Grá�co de Gantt permitem o
acompanhamento visual do progresso do projeto e a detecção de desvios em relação ao plano
original. 
Conclusão: integrando os conceitos para o sucesso 
Neste bloco, exploramos os conceitos centrais da gestão de risco em engenharia de software e
como eles se relacionam para assegurar o sucesso do projeto. Compreendemos a complexidade
dos riscos de software, a importância da identi�cação e previsão proativa e a necessidade de
ações contínuas de mitigação e gestão. 
Agora, podemos aplicar esses conceitos em cenários reais de engenharia de software e
enfrentar desa�os com con�ança. A seguir, examinaremos exemplos práticos e situações do
mundo real para fortalecer ainda mais sua compreensão e habilidades em gestão de risco. 
Gestão de risco em engenharia de software em cenários reais
Vamos explorar exemplos e situações do cotidiano pro�ssional que ilustram a importância e a
utilidade desses conceitos em projetos de desenvolvimento de software. 
Riscos de software na prática 
Disciplina
Engenharia de Software
Imagine que você está liderando um projeto de desenvolvimento de um sistema de pagamento
on-line. Um risco de software comum nesse cenário é a segurança das transações. Os ataques
cibernéticos estão em constante evolução, representando uma ameaça signi�cativa. Para mitigar
esse risco, você pode implementar medidas de segurança robustas, como criptogra�a de dados
e autenticação de dois fatores, e monitorar continuamente a atividade suspeita.  
Outra situação seria um projeto de uma startup que está desenvolvendo um aplicativo de saúde
que coleta dados vitais dos pacientes e os envia para médicos em tempo real. Um risco crítico
nesse cenário é a segurança dos dados do paciente. Para mitigar esse risco, você precisa
implementar criptogra�a de ponta a ponta, autenticação forte e realizar testes de penetração
regulares. Além disso, é essencial monitorar constantemente a atividade do sistema em busca
de possíveis violações. 
Identi�cação e previsão do risco  
Em um projeto de desenvolvimento de um aplicativo de delivery de comida, a identi�cação de
riscos pode ser crucial. Considere um risco potencial relacionado à dependência de terceiros,
como restaurantes parceiros. Se esses restaurantes não conseguirem atender aos pedidos a
tempo, isso pode afetar a reputação do seu aplicativo. Usando a técnica Delphi, você pode
consultar os gerentes de restaurantes parceiros para prever a probabilidade de atrasos e criar
planos de contingência, como a inclusão de restaurantes alternativos. 
Mitigação, monitoramento e gestão de riscos na prática 
No desenvolvimento de um sistema de gerenciamento de projetos, você pode enfrentar o risco
de desvios de escopo. Para mitigar esse risco, é essencial de�nir claramente o escopo do projeto
desde o início e envolver os stakeholders em revisões regulares para garantir que o projeto
permaneça alinhado com as expectativas. O uso de ferramentas de monitoramento, como
Grá�cos de Controle, pode ajudar a detectar desvios rapidamente e tomar medidas corretivas. 
Desenvolvimento de habilidades 
Além dos aspectos técnicos, a gestão de risco em engenharia de software também envolve o
desenvolvimento de habilidades interpessoais. Suponha que você precise apresentar a um
cliente um risco signi�cativo relacionado a atrasos no projeto. Aqui, suas habilidades de
comunicação e empatia são essenciais. Saber comunicar de forma clara e empática pode ser
crucial para estabelecer con�ança com o cliente e trabalhar juntos para encontrar soluções. 
Após o conteúdo apresentado, você está preparado para enfrentar desa�os no mundo real e
aplicar esses conhecimentos em projetos de engenharia de software.  
Videoaula: Gestão de risco
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Disciplina
Engenharia de Software
Olá, estudante! Neste vídeo resumo descobriremos como identi�car, prever e mitigar riscos em
projetos de desenvolvimento de software, com exemplos do mundo real que ilustram a aplicação
prática desses conceitos. Além disso, exploraremos a importância das habilidades interpessoais
no contexto da gestão de risco. 
Saiba mais
Para aprofundar ainda mais seu conhecimento em gestão de risco em engenharia de software e
estar preparado para os desa�os do mercado de trabalho, leia o artigo intitulado “Gestão de
riscos em projetos de desenvolvimento de software com Scrum: um estudo de caso”, dos
autores Bruna Naira Milare e Claudio Luis Carvalho Larieira, disponível neste link. 
MILARE, B. N.; LARIEIRA, C. L .C. Gestão de riscos em projetos de desenvolvimento de software
com Scrum: um estudo de caso. Revista de Gestão e Projetos – GeP. 2019. 
Após a leitura do artigo,você também poderá explorar a seguir, algumas sugestões de recursos
valiosos: 
1. Gestão de projetos com agile e scrum: para uma compreensão aprofundada de como a
gestão de risco se integra a metodologias ágeis como o Scrum, você pode explorar
recursos como o "Scrum.org". Este site oferece cursos e materiais gratuitos sobre Scrum e
sua aplicação na gestão de projetos de software.
2. Ferramentas de Gestão de Risco: Para praticar a identi�cação e mitigação de riscos, você
pode experimentar ferramentas como o "RiskyProject", que oferece recursos avançados
para modelagem e análise de riscos em projetos de software.
https://pesquisa-eaesp.fgv.br/sites/gvpesquisa.fgv.br/files/arquivos/gestao_de_riscos_em_projetos_de_desenvolvimento.pdf
https://pesquisa-eaesp.fgv.br/sites/gvpesquisa.fgv.br/files/arquivos/gestao_de_riscos_em_projetos_de_desenvolvimento.pdf
https://pesquisa-eaesp.fgv.br/sites/gvpesquisa.fgv.br/files/arquivos/gestao_de_riscos_em_projetos_de_desenvolvimento.pdf
https://www.scrum.org/
https://www.scrum.org/
https://www.intaver.com/
Disciplina
Engenharia de Software
3. IEEE Transactions on Software Engineering: Essa revista cientí�ca é uma fonte con�ável
para artigos e pesquisas sobre engenharia de software e gestão de riscos.  
Referências
BASILI, V. R. et al., Experimentation in software engineering, in IEEE Transactions on Software
Engineering, vol. SE-12, no. 7, pp. 733-743, Julho de 1986, doi: 10.1109/TSE.1986.6312975.  
PAULA FILHO, W. P. Engenharia de Software: projetos e processos. 4. ed. Rio de Janeiro: LTC,
2019.  
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021.  
SEIJAS, P. L., THOMPSON, S. FRANCISCO, M. A. , Model extraction and test generation from JUnit
test suites. Software Quality Journal, V. 26 . pp. 1519-1552. 2018. ISSN 0963-9314. 
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil,
2018.  
Aula 3
Métricas e análise de software
Introdução da aula
https://www.computer.org/csdl/journal/ts
https://www.computer.org/csdl/journal/ts
Disciplina
Engenharia de Software
Olá, estudante! A engenharia de software é uma disciplina em constante evolução, e seu sucesso
depende, em grande parte, da capacidade de medir, analisar e aprimorar o processo de
desenvolvimento e os produtos resultantes.  
Imaginemos uma construção de um arranha-céu sem a habilidade de medir e avaliar seu
progresso. Da mesma forma, no desenvolvimento de software, a medição é fundamental. Ela nos
permite entender a qualidade do código, a e�ciência do processo de desenvolvimento, e até
mesmo identi�car possíveis riscos.  
Nesta aula, exploraremos como medir software, as métricas que utilizamos para avaliar produtos
de software e como aplicar métricas na fase de teste e manutenção. 
Iremos adquirir conhecimentos valiosos sobre métricas de software, compreenderemos como
elas contribuem para a qualidade e e�ciência do desenvolvimento de software, e aprenderá
como aplicá-las no mundo real. 
 Fundamentos das métricas de software
Disciplina
Engenharia de Software
Nesta aula abordaremos três áreas-chave: medição de software, métricas de produtos de
software e métricas para teste e manutenção. 
Medição de software: entendendo o básico 
A medição de software é a pedra angular da Engenharia de Software. Ela nos permite quanti�car
e quali�car aspectos essenciais do software em desenvolvimento. A medição é a base para a
análise, o controle e a melhoria contínua do processo de desenvolvimento de software. Em
outras palavras, você não pode melhorar o que não pode medir. 
Para entender a medição de software, é importante conhecer o conceito de métricas. As
métricas de software são parâmetros mensuráveis usados para avaliar diferentes características
do software. Elas podem variar desde o tamanho do código até a complexidade, a e�ciência e a
qualidade.  
Uma métrica comum é o número de linhas de código (LOC), que fornece uma medida do
tamanho do software. Outra métrica importante é a complexidade ciclomática, que avalia a
complexidade do �uxo de controle do programa. "Medição é a primeira etapa que conduz ao
controle e, eventualmente, à melhoria. Se você não pode medir algo, você não pode entender. Se
você não pode entender, você não pode controlar. Se você não pode controlar, você não pode
melhorar." (HARRINGTON, 1991, p. 57). 
Métricas de produtos de software: avaliando a qualidade 
As métricas de produtos de software são usadas para avaliar a qualidade e a e�cácia do próprio
software. Elas nos ajudam a determinar se um produto de software atende aos padrões de
qualidade esperados e se está em conformidade com as especi�cações. Métricas de produtos
incluem taxas de defeitos, con�abilidade, desempenho e usabilidade, entre outras. 
Disciplina
Engenharia de Software
Uma métrica importante nesta categoria é a Taxa de Defeitos por Linha de Código (DPLC), que
indica a qualidade do código em termos de defeitos por quantidade de código escrito. Outra
métrica relevante é a disponibilidade do software, que mede o tempo que o software está
disponível e funcionando corretamente. 
Métricas para teste e manutenção: garantindo a qualidade contínua 
Na fase de teste e manutenção de software, as métricas desempenham um papel essencial na
avaliação da qualidade do software e no direcionamento das atividades de correção e melhoria.
Métricas de teste incluem a cobertura de código, que mede a porcentagem do código que foi
testada, e a taxa de defeitos identi�cados durante os testes. 
Durante a manutenção de software, as métricas de manutenção são usadas para rastrear a
e�cácia das correções e atualizações. Isso inclui métricas como o tempo médio de resolução de
defeitos e a taxa de reintrodução de defeitos, que indicam a e�cácia das correções realizadas.
"Métricas de software são a chave para entender, controlar e melhorar o processo de
desenvolvimento de software. Elas são a bússola que nos orienta na busca pela qualidade e
e�ciência." (Autor Desconhecido) 
Métricas de software e qualidade: interpretações
Agora, vamos explorar em detalhes os conteúdos desta aula. 
Medição de software: uma janela para o desenvolvimento 
Disciplina
Engenharia de Software
A medição de software é a base para avaliar o processo de desenvolvimento e seus resultados.
Ela nos fornece informações cruciais para tomar decisões informadas durante todo o ciclo de
vida do projeto de software. Para realizar medições e�cazes, é importante entender os tipos de
métricas que podem ser usadas. 
Métricas de processo: essas métricas focam no processo de desenvolvimento de software
em si. Exemplos incluem a produtividade da equipe, o tempo médio de resolução de
defeitos e a e�cácia das revisões de código. Ao medir esses aspectos, podemos identi�car
oportunidades de melhoria no processo. 
Métricas de produto: essas métricas se concentram nos produtos de software, como
código-fonte e documentação. Exemplos incluem a complexidade ciclomática, a
quantidade de código não documentado e a taxa de defeitos por linha de código. Essas
métricas ajudam a avaliar a qualidade do software e a identi�car áreas problemáticas. 
Métricas de produtos de software: qualidade sob o microscópio 
A qualidade do software é um fator crítico para o sucesso de um projeto. As métricas de
produtos de software nos ajudam a avaliar e garantir a qualidade. Vamos aprofundar algumas
métricas importantes: 
Taxa de Defeitos por Linha de Código (DPLC): essa métrica nos ajuda a entender a
qualidade do código. Quanto menor a DPLC, melhor a qualidade, indicando que há menos
defeitos por quantidade de código escrito. 
Con�abilidade: métricas de con�abilidade avaliam a probabilidade de um sistema falhar
durante a operação. Uma métrica comum é o tempo médio entre falhas (MTBF). 
Desempenho: métricas de desempenho avaliam a capacidade do software de realizar suas
funções dentro dos limites de recursos disponíveis. 
Métricas para teste e manutenção: aperfeiçoando a qualidade 
Na fase de teste e manutenção,as métricas são importantes na avaliação da qualidade do
software e na orientação das atividades de correção e melhoria. Vamos aprofundar essas
métricas: 
Cobertura de código: essa métrica indica a porcentagem do código que foi testada. Uma
alta cobertura de código signi�ca que a maioria das partes do software foi testada,
reduzindo o risco de defeitos não detectados. 
Taxa de defeitos identi�cados durante os testes: essa métrica mostra quantos defeitos
foram identi�cados durante os testes em relação ao total de defeitos. Isso ajuda a avaliar a
e�cácia dos testes. 
Tempo médio de resolução de defeitos: essa métrica mede o tempo necessário para
corrigir defeitos identi�cados. Um tempo menor signi�ca uma resposta mais rápida a
problemas. 
Compreender e aplicar essas métricas de software é essencial para melhorar a qualidade,
e�ciência e con�abilidade do desenvolvimento de software. Ao interpretar essas métricas,
poderemos identi�car áreas de melhoria, tomar decisões embasadas em dados e entregar
produtos de alta qualidade
Disciplina
Engenharia de Software
Métricas de software na prática: impulsionando a qualidade
Vamos explorar como as métricas apresentadas podem ser usadas para aprimorar o
desenvolvimento de software e alcançar resultados excepcionais. 
Aplicação de métricas de processo: otimizando o desenvolvimento 
Imagine que você está liderando um projeto de desenvolvimento de software e deseja melhorar a
e�ciência do processo, para isso, decide utilizar métricas de processo. Uma métrica importante
nesse cenário é a Produtividade da Equipe, que mede a quantidade de trabalho realizado pela
equipe em um determinado período. 
Suponha que, após medir a produtividade, você identi�ca que a equipe está trabalhando abaixo
do seu potencial. Com base nessa métrica, você pode tomar medidas para otimizar o processo,
como alocar recursos de forma mais e�ciente, fornecer treinamento adicional ou ajustar prazos. 
Aplicação de métricas de produto: garantindo qualidade 
Agora, imagine que você é um desenvolvedor de software e está responsável por escrever código
de alta qualidade. Uma métrica relevante nesse contexto é a Complexidade Ciclomática, que
avalia a complexidade do código. Você pode usar ferramentas de análise estática de código para
calcular essa métrica. 
Ao analisar a complexidade ciclomática do seu código, você pode identi�car áreas que podem
ser simpli�cadas, reduzindo a complexidade e tornando o código mais fácil de entender e
manter. Isso não apenas melhora a qualidade do código, mas também economiza tempo de
desenvolvimento e reduz o risco de defeitos. 
Aplicação de Métricas para Teste e Manutenção: Melhorando a Con�abilidade 
Agora, vamos considerar a fase de teste e manutenção. Suponha que você seja um testador de
software e está encarregado de garantir a con�abilidade do sistema. Uma métrica valiosa nesse
contexto é a Cobertura de Código. 
Disciplina
Engenharia de Software
Você executa testes abrangentes e usa ferramentas de cobertura de código para determinar a
porcentagem de código que foi testada. Se a cobertura for baixa em certas áreas, isso indica que
essas partes do software não foram adequadamente testadas, o que aumenta o risco de defeitos
não detectados. 
Com base nessa métrica, você pode priorizar áreas de teste adicionais e melhorar a
con�abilidade do sistema, garantindo que todas as partes críticas do código sejam testadas
minuciosamente. 
Integrando métricas de software em sua carreira pro�ssional 
A aplicação de métricas de software não se limita apenas ao desenvolvimento de software. Elas
são amplamente utilizadas em toda a indústria de TI para melhorar a qualidade, e�ciência e
con�abilidade dos sistemas de software. 
Ao dominar a aplicação dessas métricas, você desenvolve habilidades valiosas de análise de
dados, resolução de problemas e tomada de decisões informadas. Essas habilidades são
altamente valorizadas no mercado de trabalho e podem abrir portas para oportunidades de
carreira signi�cativas. 
Lembre-se de que as métricas de software não são apenas números, são ferramentas poderosas
para impulsionar a qualidade e o sucesso em projetos de desenvolvimento de software. À
medida que você continua a sua jornada na Engenharia de Software, use essas métricas como
aliadas para alcançar resultados excepcionais. 
Videoaula: Métricas e análise de software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo exploraremos conceitos essenciais, aplicação prática e
recursos valiosos para aprimorar sua compreensão. Descobriremos como medir, interpretar e
aplicar métricas de software em projetos reais.  
Saiba mais
Disciplina
Engenharia de Software
O artigo intitulado “Controle de métricas no processo de desenvolvimento de software através de
uma ferramenta de work�ow”, dos autores Gustavo Zanini Kantorski, Marcelo Lopes Kroth,
possui uma boa complementação sobre métricas de software. 
KANTORSKI, G. Z.; KROTH, M. L. Controle de métricas no processo de desenvolvimento de
software através de uma ferramenta de work�ow.  Centro de Processamento de Dados
Universidade Federal de Santa Maria Santa Maria, RS, Brasil.  
Como material adicional sobre as métricas, após do artigo anterior, você também pode buscar na
Internet as seguintes plataformas: 
Ferramenta de Análise Estática de Código - SonarQube: essa ferramenta de análise estática
de código ajuda a identi�car problemas de qualidade, complexidade e vulnerabilidades em
seu código-fonte. É uma ferramenta amplamente utilizada na indústria de software para
melhorar a qualidade do código. 
Plataforma de gerenciamento de projetos - Jira: é uma plataforma de gerenciamento de
projetos que pode ser adaptada para projetos de desenvolvimento de software. Ele oferece
recursos avançados de rastreamento de tarefas, planejamento e relatórios. 
Livro de leitura complementar recomendado - Software Metrics: A Guide to Planning,
Analysis, and Application: de C. Ravindranath Pandian, esse livro fornece uma compreensão
aprofundada das métricas de software e sua aplicação prática. Ele explora diferentes tipos
de métricas, como métricas de processo, produto e projeto, e como usá-las e�cazmente
para melhorar a qualidade do software. 
Referências
https://www.ufsm.br/app/uploads/sites/350/2018/07/2540.pdf
https://www.ufsm.br/app/uploads/sites/350/2018/07/2540.pdf
https://www.sonarsource.com/products/sonarqube/
https://www.atlassian.com/br/software/jira
Disciplina
Engenharia de Software
HARRINGTON, H. J. Business Process Improvement. [S. l.]: McGraw-Hill, 1991. 
Aula 4
Engenharia de software avançada
Introdução
Disciplina
Engenharia de Software
Olá, estudante! Nesta aula, mergulharemos em três conceitos-chave: CI/CD (Integração Contínua
e Entrega Contínua), Domain Driven Design (DDD) e o reúso de software. 
A engenharia de software é uma disciplina em constante evolução, e dominar esses tópicos
avançados é fundamental para se destacar no mercado e entregar produtos de alta qualidade. 
Aprenderemos como CI/CD revoluciona o ciclo de desenvolvimento, acelerando a entrega de
software. O DDD permitirá que você projete sistemas que re�itam �elmente os domínios do
mundo real, melhorando a escalabilidade e a manutenção. Além disso, exploraremos estratégias
e�cazes para o reúso de código, economizando tempo e recursos. 
Prepare-se para uma jornada empolgante, repleta de insights valiosos e práticas que você poderá
aplicar diretamente em seu cotidiano pro�ssional.  
Vamos começar a explorar esses tópicos avançados e descobrir como eles moldam o presente e
o futuro da engenharia de software.  
 Entendendo as práticas de Engenharia de software avançada
Disciplina
Engenharia de Software
Vamos de�nir e explorar cada um dos conceitos fundamentais, fornecendo uma base sólida para
compreender como eles moldam a prática da engenharia de softwaremoderna. 
A Integração Contínua (CI) e a Entrega Contínua (CD) são práticas essenciais para acelerar o
desenvolvimento e a entrega de software. A Integração Contínua (CI) envolve a integração
frequente do código desenvolvido por várias equipes ou desenvolvedores individuais em um
repositório central. Isso é acompanhado por testes automatizados para garantir que as
mudanças não causem regressões. 
A Entrega Contínua (CD) leva a CI um passo adiante, permitindo a entrega automatizada e segura
das mudanças de código para ambientes de teste e produção. Isso resulta em ciclos de
desenvolvimento mais curtos e feedback rápido, garantindo que o software seja entregue com
qualidade e e�ciência. 
Disciplina
Engenharia de Software
"A Integração Contínua e a Entrega Contínua são práticas que visam acelerar o ciclo de
desenvolvimento, minimizar erros e garantir que o software seja entregue rapidamente e com
qualidade" (PRESSMAN; MAXIM, 2021, p. 129). 
O Domain Driven Design (DDD – Design Direcionado ao Domínio) é uma abordagem de design de
software que se concentra na modelagem do domínio de negócios. Ele busca mapear com
precisão as entidades, agregados e serviços do domínio, resultando em um software que re�ete
com �delidade a realidade do negócio. 
O DDD promove uma comunicação mais e�caz entre desenvolvedores e especialistas de
domínio, resultando em sistemas mais escaláveis, �exíveis e fáceis de manter. 
"O Domain Driven Design é uma abordagem que coloca o foco no domínio de negócios,
permitindo que o software seja desenvolvido de maneira mais alinhada com as necessidades
reais da empresa" (SOMMERVILLE, 2018). 
O reúso de software é uma prática que envolve o desenvolvimento de componentes de software
que podem ser reutilizados em diferentes partes de um sistema ou em projetos subsequentes.
Isso economiza tempo e recursos, além de melhorar a consistência e a qualidade do software. 
O reúso de software pode ocorrer por meio de bibliotecas de código, frameworks ou
microserviços, e é uma estratégia fundamental para aumentar a produtividade e a e�ciência no
desenvolvimento de software. 
"O reúso de software é uma estratégia essencial para acelerar o desenvolvimento e melhorar a
qualidade do software, aproveitando componentes já existentes" (PAULA FILHO, 2019, p. 236) 
Até aqui, adquirimos um entendimento mais profundo sobre CI/CD, Domain Driven Design (DDD)
e Reúso de Software. Esses conceitos são fundamentais para a prática da Engenharia de
Software Avançada, e dominá-los abrirá portas para o desenvolvimento de software de alta
qualidade, e�ciência e adaptabilidade.  
Compreendendo CI/CD, Domain Driven Design (DDD) e reúso de software
Disciplina
Engenharia de Software
A Integração Contínua (CI) e a Entrega Contínua (CD) são práticas intimamente relacionadas que
revolucionaram o desenvolvimento de software. A CI envolve a automação de testes e a
integração frequente do código. Esse processo rápido e automatizado ajuda a identi�car e
corrigir erros mais cedo, tornando o desenvolvimento mais e�ciente. 
A Entrega Contínua (CD) amplia a CI, possibilitando a entrega automatizada e segura das
mudanças de código para ambientes de teste e produção. Isso elimina a necessidade de
lançamentos manuais demorados, garantindo que novos recursos ou correções de bugs
cheguem aos usuários mais rapidamente. 
A interconexão entre CI/CD resulta em um ciclo de desenvolvimento mais curto, permitindo que
equipes desenvolvam, testem e entreguem software com agilidade, mantendo a qualidade. 
O Domain Driven Design (DDD) concentra-se na modelagem de domínio de negócios. Ele cria um
vocabulário compartilhado entre desenvolvedores e especialistas de domínio, permitindo uma
comunicação mais e�caz. Essa abordagem é particularmente útil em projetos complexos, em
que  é crucial compreender profundamente as regras de negócio. 
A interconexão entre DDD e CI/CD se manifesta na melhoria da qualidade do software. A
modelagem precisa do domínio simpli�ca os testes e a manutenção, enquanto a entrega
contínua garante que as mudanças no modelo de domínio sejam implementadas de forma
e�ciente. 
O reúso de software é uma prática que economiza tempo e recursos, mas como ele se relaciona
com CI/CD e DDD? O reúso pode ser alcançado por meio da criação de bibliotecas de código ou
serviços compartilhados. Isso signi�ca que, após desenvolver e testar componentes de software
uma vez, você pode reutilizá-los em diferentes partes de seu sistema ou em projetos futuros. 
Disciplina
Engenharia de Software
A interconexão entre Reúso de Software e CI/CD se traduz em maior e�ciência e consistência.
Componentes reutilizáveis são testados e comprovados, reduzindo o tempo gasto em
desenvolvimento e testes. 
A relação com DDD é evidente quando você considera que os componentes reutilizáveis podem
ser modelados para se alinhar perfeitamente com os domínios de negócios, fortalecendo ainda
mais a compreensão e a comunicação entre equipes de desenvolvimento e partes interessadas
do negócio. 
Importância e características das práticas 
CI/CD acelera o ciclo de desenvolvimento, garantindo que as mudanças de código sejam
testadas e entregues rapidamente. 
DDD melhora a compreensão das regras de negócio, simpli�cando a manutenção e
permitindo uma comunicação mais e�caz. 
Reúso de software economiza tempo e recursos, promovendo a e�ciência e a consistência
no desenvolvimento. 
A combinação desses conceitos é fundamental para a engenharia de software avançada,
permitindo a entrega rápida e e�caz de software de alta qualidade que atenda às necessidades
do negócio. Compreender como CI/CD, DDD e reúso de software se interconectam é o primeiro
passo para se tornar um engenheiro de software altamente e�ciente e inovador. 
Práticas de engenharia de software avançada
Disciplina
Engenharia de Software
Agora, vamos explorar como as práticas estudadas podem ser aplicados em situações reaus,
promovendo o desenvolvimento de competências essenciais na engenharia de software
avançada. 
Aplicando CI/CD 
Imagine que você está liderando uma equipe de desenvolvimento trabalhando em um aplicativo
de comércio eletrônico. A aplicação está em constante evolução, com novos recursos sendo
adicionados regularmente. Para garantir a entrega e�ciente dessas atualizações, você decide
implementar CI/CD. 
A equipe começa a usar um sistema de integração contínua que automatiza a compilação e os
testes sempre que o código é modi�cado. Isso signi�ca que, assim que um desenvolvedor envia
uma alteração, o código é veri�cado automaticamente quanto a erros, garantindo a qualidade. 
A Entrega Contínua entra em ação ao automatizar a implantação dessas alterações em um
ambiente de teste. Isso permite que os testadores e as partes interessadas avaliem as
mudanças rapidamente, fornecendo feedback valioso. 
A equipe pode então continuar com a Entrega Contínua, implantando automaticamente no
ambiente de produção quando estiverem prontos. Isso acelera a entrega de novos recursos e
correções de bugs para os clientes, aumentando a satisfação do usuário e a e�ciência da
equipe. 
Aplicando Domain Driven Design (DDD) 
Agora, vamos considerar como o DDD pode ser aplicado em um projeto de software. Suponha
que você esteja desenvolvendo um sistema de gerenciamento de estoque para uma cadeia de
supermercados. 
Disciplina
Engenharia de Software
Usando o DDD, você começa mapeando cuidadosamente os domínios de negócios, identi�cando
conceitos-chave, como produtos, pedidos e fornecedores. Você cria um modelo de domínio rico
em detalhes e um vocabulário compartilhado com especialistas em logística e gerentes de lojas. 
Isso resulta em uma compreensão profunda das regras de negócio e uma comunicação mais
e�caz entre a equipe de desenvolvimento e as partes interessadas do negócio. À medida que
novos requisitos surgem, o modelo de domínio permite que você os incorpore de maneira
e�ciente, mantendo a coesão e a consistência em todo o sistema. 
Aplicando Reúso de Software 
Agora, considere o contexto do reúso de softwareem uma empresa que desenvolve software de
automação industrial. Você trabalha em um projeto para criar um sistema de controle para várias
máquinas em uma linha de produção. 
Para acelerar o desenvolvimento, você identi�ca componentes de software que podem ser
reutilizados em várias máquinas, como algoritmos de controle de movimento. Você os encapsula
em bibliotecas de código reutilizável. 
À medida que novos projetos de automação são iniciados, sua equipe pode simplesmente
incorporar essas bibliotecas de código existentes, economizando tempo e garantindo que a
funcionalidade de controle seja consistente em todas as máquinas. 
Em resumo, exploramos exemplos práticos de como CI/CD, Domain Driven Design (DDD) e eeúso
de software podem ser aplicados no mundo real. Ao implementar esses conceitos, podemos
acelerar o desenvolvimento, melhorar a qualidade do software e promover uma comunicação
e�caz com partes interessadas.. 
Videoaula: Engenharia de software avançada
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo, falaremos sobre CI/CD, Domain Driven Design (DDD) e
Reúso de Software. Aprofunde seus conhecimentos e desenvolva habilidades essenciais
enquanto exploramos exemplos práticos e recursos adicionais.  
Saiba mais
Disciplina
Engenharia de Software
Para aprofundar seu conhecimento em Engenharia de Software Avançada, é essencial estar
atualizado com as ferramentas e técnicas mais recentes do mercado. Aqui estão algumas
recomendações exclusivas que podem auxiliar você no seu aprendizado: 
1. GitLab CI/CD: para mergulhar ainda mais no mundo da Integração Contínua e Entrega
Contínua (CI/CD), o GitLab oferece uma plataforma completa que inclui pipelines de CI/CD
integrados. Você pode aprender a con�gurar, automatizar e otimizar seu �uxo de trabalho
de desenvolvimento.  
1. DDD Community: se você deseja explorar o Domain Driven Design (DDD) em profundidade,
a comunidade DDD é uma excelente fonte de informações. Você encontrará artigos, fóruns
de discussão e exemplos práticos compartilhados por especialistas em DDD.  
1. GitHub Repository Reuse: para entender melhor o Reúso de Software, o GitHub é uma
plataforma que abriga milhões de repositórios de código aberto. Explore projetos e
bibliotecas de código existentes para ver como o reúso é aplicado na prática.  
1. Jenkins: para aprofundar sua compreensão de CI/CD, Jenkins é uma ferramenta de
automação de código aberto amplamente usada. Você pode con�gurá-lo em seu ambiente
de desenvolvimento para criar pipelines de integração e entrega personalizados.  
Referências
https://docs.gitlab.com/ee/ci
https://dddcommunity.org/
https://github.com/
https://www.jenkins.io/
Disciplina
Engenharia de Software
PAULA FILHO, W. P. Engenharia de Software: projetos e processos. 4. ed. Rio de Janeiro: LTC,
2019.  
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9. ed. Porto
Alegre: AMGH, 2021.  
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil,
2018.  
Aula 5
Revisão da unidade
Engenharia de software: desvendando os pilares fundamentais
Disciplina
Engenharia de Software
Nesta unidade de Tópicos Avançados da Engenharia de Software, abordamos quatro
competências essenciais da Engenharia de Software, cada uma contribuindo para sua formação
como pro�ssional preparado para os desa�os dinâmicos do desenvolvimento de software. 
Abordamos os conceitos fundamentais da Classi�cação e Tipos de Atividades de Manutenção
de Software, exploramos os diferentes tipos de manutenção, como corretiva, adaptativa,
perfectiva e preventiva.  
Nas práticas da engenharia reversa e reengenharia, vimos como utilizar essas práticas para
analisar e compreender a estrutura de funcionamento de um software já existente, ou como
reestruturar e aprimorar sistemas legados, garantindo que permaneçam relevantes e e�cientes.  
Além disso, examinamos a evolução de software, essencial para garantir que os sistemas
atendam às crescentes demandas do usuário e do mercado. 
Avançamos para a Gestão de risco, uma competência crítica na engenharia de software
moderna, e essencial para garantir o sucesso de projetos de software.  
Ao entender os riscos especí�cos associados ao desenvolvimento de software, desde a
incerteza nos requisitos até desa�os técnicos, além de identi�car e prever ameaças antes que
que elas se tornem problemas signi�cativos, e aplicar estratégias de mitigação e�caz e
monitoramento contínuo e a gestão ativa, é possível a implementação de estratégias para reduzir
a probabilidade de ocorrência e minimizar o impacto dos ricos inevitáveis.  
Aprofundamos nossa compreensão com Métricas e Análise de Software. Aprendemos a
importância da medição de software, para avaliar não apenas a e�cácia do software, mas
também o progresso do projeto e a satisfação do cliente. Exploramos métricas para avaliar a
qualidade intrínseca do produto, de sua e�ciência de código até a facilidade de manutenção. E,
Disciplina
Engenharia de Software
por �m, descobriu como métricas adequadas facilitam os processos de teste e manutenção, que
são partes críticas do ciclo de vida do software, garantindo a longevidade e con�abilidade deste. 
Concluímos nossa jornada com Engenharia de Software Avançada, com os conceitos para
necessários a compreensão da integração contínua e a entrega contínua (CI/CD), uma prática
que revoluciona o ciclo de vida do software. Abordamos o Domain Driven Design (DDD) para
projetar sistemas complexos, identi�cando e delineando domínios especí�cos, e desvendou
estratégias para o reuso e�ciente de software. 
A manutenção e evolução são respaldadas pela gestão e�ciente de riscos, enquanto as métricas
se tornam a base para avaliação contínua e tomada de decisões informadas. A engenharia de
software avançada não é apenas uma competência isolada, mas uma abordagem integrada que
otimiza todo o ciclo de vida do software. 
O entendimento das atividades de manutenção e evolução de software, a habilidade de gerenciar
riscos de forma proativa, a apreciação da importância das métricas e a imersão nas práticas
avançadas da engenharia de software nos coloca em uma posição vantajosa dentro da área de
Engenharia de Software.  
Ao conectar os pontos entre manutenção, gestão de riscos, métricas e práticas avançadas,
desenvolvemos  uma compreensão holística que será essencial em sua carreira. 
Videoaula: Revisão da unidade
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo resumo, descobriremos os alicerces essenciais da Engenharia de
Software. Mergulharemos nas competências-chave abordadas em nosso curso avançado. Da
Manutenção à Engenharia Avançada, cada conceito ganha vida com exemplos práticos. 
Estudo de caso
Disciplina
Engenharia de Software
Otimização do processo de manutenção em uma empresa de desenvolvimento de software 
Para contextualizar sua aprendizagem, vamos explorar um cenário em que você atua como
engenheiro de software em uma empresa, uma empresa, especializada no desenvolvimento de
sistemas corporativos. Nesse contexto, surgiram desa�os especí�cos relacionados à
Manutenção e Evolução de Software, assim como à aplicação de Métricas e Análise de
Software. 
A empresa possui um sistema crítico para um cliente �nanceiro importante, que evolui
constantemente suas necessidades. A equipe enfrenta di�culdades na gestão da manutenção,
com demandas emergentes, e busca formas de otimizar o processo sem comprometer a
qualidade.  
A métrica atual de e�cácia da manutenção é inconsistente, tornando difícil avaliar o impacto das
alterações no sistema. As mudanças frequentes estão causando uma pressão intensa na equipe,
resultandoem atrasos e desa�os na garantia da qualidade do software. 
Desa�os: 
1. Priorização de atividades emergentes: a equipe está constantemente recebendo
solicitações de manutenção emergente, mas a falta de um sistema e�ciente de priorização
leva a confusões. Como você criaria um método que permitisse à equipe priorizar
corretamente as tarefas, considerando a urgência e o impacto nas operações do cliente?
2. Gestão de mudanças frequentes: o cliente �nanceiro requer mudanças frequentes para
atender às suas necessidades em evolução. A equipe está lutando para equilibrar as
alterações necessárias sem comprometer a estabilidade do sistema. Como você
organizaria o �uxo de trabalho para acomodar essas mudanças sem prejudicar a qualidade
do software existente?
3. Métricas signi�cativas: atualmente, a empresa não possui métricas claras para avaliar a
e�cácia da manutenção. Isso torna difícil demonstrar o valor das atividades de
Disciplina
Engenharia de Software
manutenção para a alta administração. Como você introduziria métricas signi�cativas que
evidenciem o impacto positivo das atividades de manutenção, como redução de bugs e
aumento da satisfação do cliente? 
Como engenheiro de software, sua missão é otimizar o processo de manutenção na empresa
deste estudo de caso, integrando conceitos de Manutenção e Evolução de Software com
Métricas e Análise de Software. 
___________
Re�ita
Ao mergulhar nos desa�os práticos da empresa deste estudo de caso, é hora de re�etir sobre
como os conceitos aprendidos nas aulas podem ser aplicados de maneira mais profunda. 
Como você equilibraria a urgência das demandas emergentes com a necessidade de
manter a estabilidade do sistema? 
Quais métricas especí�cas seriam mais relevantes para a TechSolutions, considerando seu
contexto e as expectativas do cliente? 
Como a implementação e�ciente de métricas pode contribuir para a tomada de decisões
informadas sobre o processo de manutenção? 
Imagine-se no papel de um engenheiro de software enfrentando a priorização de atividades
emergentes. Como você equilibraria a urgência das solicitações com a necessidade de manter a
estabilidade do sistema? Considere as técnicas ágeis de gestão de projetos e como elas podem
ser adaptadas à dinâmica da empresa deste estudo de caso. 
Ao abordar a gestão de mudanças frequentes, pense em como as práticas ágeis, como Scrum,
podem proporcionar �exibilidade necessária. Como você organizará sprints para garantir uma
resposta ágil às mudanças sem comprometer a qualidade do software existente? 
A introdução de métricas signi�cativas é um desa�o vital. Re�ita sobre quais métricas, como
MTTR e Taxa de Reincidência de Bugs, seriam mais impactantes para demonstrar o valor das
atividades de manutenção na da empresa deste estudo de caso. Como essas métricas podem
ser apresentadas de forma clara para convencer a alta administração do impacto positivo? 
Videoaula: Resolução do estudo de caso
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no
aplicativo para assistir mesmo sem conexão à internet.
Enfrentar os desa�os da empresa deste estudo de caso exige uma abordagem estratégica,
alinhada aos conceitos de Manutenção e Evolução de Software, bem como à aplicação de
Disciplina
Engenharia de Software
Métricas e Análise de Software. Vamos traçar um caminho para otimizar o processo de
manutenção, considerando cada desa�o detalhadamente. 
1. Priorização de atividades emergentes
Para lidar com as solicitações emergentes, é crucial estabelecer um sistema de priorização
robusto, por meio da implementação de ferramentas de gestão de projetos e rastreamento de
problemas, baseadas na metodologia Kaban, que permita à equipe visualizar e priorizar as
tarefas de forma clara. Duas dessas ferramentas, que permitem a gestão de projetos são o Jira e
o Trello, que con�gurados para categorizar e priorizar solicitações de manutenção com critérios
claros, incluindo a criticidade para o cliente, o tempo necessário para a resolução e o impacto
potencial no sistema, podem contribuir para que a equipe se mantenha atualizada nas
prioridades de desenvolvimento. Lembre-se também de realize sessões regulares de triagem
com a equipe para reavaliar e ajustar prioridades conforme necessário. 
2. Gestão de Mudanças Frequentes
Organizar o �uxo de trabalho para acomodar mudanças frequentes requer a adoção de métodos
ágeis. Implemente práticas do Scrum, dividindo o trabalho em sprints ou iterações curtas. Isso
permitirá que a equipe responda rapidamente às mudanças nos requisitos do cliente sem
comprometer a estabilidade do sistema. Estimule a comunicação contínua entre a equipe e os
stakeholders para garantir alinhamento do projeto com as mudanças necessárias. 
3. Métricas Signi�cativas
Introduza métricas que capturem o valor da manutenção de forma tangível. Adote o MTTR (Mean
Time to Repair) para avaliar o tempo de recuperação, a Taxa de Reincidência de Bugs para medir
a qualidade e pesquisas de satisfação do cliente para evidenciar o impacto positivo. Utilize
ferramentas de monitoramento para garantir a precisão dos dados e crie relatórios regulares para
demonstrar o progresso. 
Essa resolução destaca a aplicação prática de competências em métodos ágeis, gestão e�ciente
de projetos e seleção de métricas relevantes. Como engenheiro de software, sua capacidade de
equilibrar agilidade, qualidade e mensuração de impacto será crucial para o sucesso na empresa
deste estudo de caso. 
Resumo visual
Disciplina
Engenharia de Software
Veja o resumo visual da unidade:
Disciplina
Engenharia de Software
Referências
Disciplina
Engenharia de Software
Harrington, H. J. Business Process Improvement. [S. l.]: McGraw-Hill, 1991. 
HIRAMA, K. Engenharia de Software: qualidade e produtividade com tecnologia. Rio de Janeiro:
Elsevier, 2011. 
PAULA FILHO, W. P. Engenharia de Software: projetos e processos. 4. ed. Rio de Janeiro: LTC,
2019.  
PRESSMAN, R.; MAXIM, B. R. Engenharia de Software: uma abordagem pro�ssional. 9.ed. Porto
Alegre: AMGH, 2021.  
SBROCCO, J. H. T. C. Metodologias ágeis: engenharia de software sob medida. 1.ed. São Paulo:
Érica, 2012. 
SOMMERVILLE, I. Engenharia de Software. 10. ed. São Paulo: Pearson Education do Brasil, 2018.

Mais conteúdos dessa disciplina