Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

104
Unidade III
Unidade III
7 ENGENHARIA DE SOFTWARE E QUALIDADE
A engenharia de software é uma área que se concentra no desenvolvimento de sistemas de software de 
alta qualidade. Nesse caso, a qualidade não se limita ao seu desempenho e funcionalidade; mas também 
em relação à confiabilidade, usabilidade, eficiência, manutenibilidade e portabilidade. A engenharia de 
software emprega uma abordagem sistemática, disciplinada e quantificável para alcançar esses objetivos 
de qualidade.
Portanto, o gerenciamento da qualidade é um componente essencial da engenharia de software. 
Assim, é importante atentar-se a procedimentos e tarefas necessários para garantir que os padrões 
de qualidade sejam atendidos durante todo o ciclo de vida do desenvolvimento do software. 
O gerenciamento da qualidade do produto visa garantir que o produto final atenda às expectativas 
dos usuários finais e aos requisitos especificados, enquanto o gerenciamento da qualidade do processo 
se concentra em melhorar continuamente os processos utilizados para a criação do produto.
Além disso, a engenharia de software orientada a serviços (SOA) se tornou um paradigma 
predominante no desenvolvimento de sistemas distribuídos flexíveis. Ao apresentar as funcionalidades 
do sistema como serviços independentes que podem ser utilizados por vários clientes, sejam eles 
internos ou externos à organização, o SOA facilita a reutilização. Esse método aumenta a eficiência do 
desenvolvimento e facilita a integração de várias tecnologias e sistemas.
Desse modo, alavancar produtos de software de alta qualidade requer uma combinação cuidadosa 
de práticas rigorosas de engenharia de software e um compromisso constante com o gerenciamento 
da qualidade em todos os níveis organizacionais. A excelência operacional e a inovação contínua em 
produtos digitais podem ser alcançadas adotando metodologias ágeis ou tradicionais, conforme a 
necessidade, bem como incorporando práticas modernas como SOA e engenharia de proteção.
7.1 Gerenciamento da qualidade (processo e produto)
Em engenharia de software, o gerenciamento da qualidade é fundamental para o desenvolvimento 
de produtos digitais que atendam às necessidades dos usuários e superem suas expectativas. A qualidade 
do processo e a qualidade do produto são as duas dimensões principais desse conceito.
Qualidade do processo
Para garantir a eficiência e a eficácia da produção, é determinante buscar melhorias contínuas nos 
processos utilizados na criação de software. Metodologias ágeis, como Scrum ou Kanban, possibilitam 
maior adaptabilidade e resposta rápida às mudanças, o que resulta em um ambiente de desenvolvimento 
105
QUALIDADE DE SOFTWARE
dinâmico. Além disso, práticas como integração contínua (CI) e entrega contínua (CD) promovem uma 
cultura de testes automatizados constantes, reduzindo significativamente os riscos associados ao 
lançamento de novas versões do software.
As empresas líderes da área de tecnologia, como Amazon e Netflix, usam essa abordagem para 
implementar a metodologia DevOps. Através da automação extensiva e do monitoramento contínuo, elas 
conseguiram acelerar a entrega de novas funcionalidades e aumentar significativamente a estabilidade 
e a segurança dos sistemas.
O produto é de alta qualidade
Uma atenção meticulosa aos detalhes em todas as fases do desenvolvimento é necessária para 
garantir que o produto final atenda às expectativas dos clientes. Isso inclui definir claramente os 
requisitos e realizar testes rigorosos para encontrar e corrigir os erros antes do lançamento. O processo 
pode ser facilitado por ferramentas de análise estática de código contemporâneas, que podem identificar 
possíveis vulnerabilidades ou violações das boas práticas de programação.
O sucesso da plataforma GitHub, que se destaca pela facilidade de uso e confiabilidade que oferece 
aos desenvolvedores em todo o mundo, exibe a aplicação eficaz desses princípios. Ao implementar 
padrões elevados de gestão de processos e avaliação de qualidade de produto contínua, o GitHub 
conseguiu criar uma comunidade vibrante e engajada, demonstrando como essas práticas contribuem 
no sucesso comercial.
A excelência em engenharia de software depende do gerenciamento da qualidade tanto no 
processo quanto no produto. As empresas podem otimizar seus fluxos de trabalho e fabricar produtos 
excepcionais que atendam às crescentes demandas do mercado digital, usando estratégias focadas na 
melhoria contínua e em ferramentas adequadas para monitoramento e avaliação.
7.2 Engenharia de proteção
Uma área importante da engenharia de proteção de software se concentra na implementação 
de medidas de segurança para proteger os sistemas contra ameaças internas e externas. Essa área 
cobre desde a concepção do sistema até sua manutenção, garantindo que as vulnerabilidades sejam 
identificadas e mitigadas de forma eficaz.
O desenvolvimento seguro é um componente fundamental da engenharia de proteção e inclui a 
incorporação de práticas de segurança no ciclo de vida do desenvolvimento de software (SDLC). Análises 
de risco, modelagem de ameaças, revisões de código focadas em segurança e testes de penetração 
são exemplos disso. O Google e a Microsoft adotam essas práticas com rigor, usando ferramentas 
avançadas para automação desses procedimentos e promovendo uma cultura organizacional que 
prioriza a segurança.
106
Unidade III
Além disso, a gestão eficaz de identidades e acessos (IAM) é essencial para garantir que apenas 
pessoas autorizadas possam acessar dados sensíveis. Com o objetivo de evitar violações de dados, 
técnicas como autenticação multifator (MFA), controle rigoroso sobre privilégios mínimos necessários 
e gerenciamento contínuo de permissões são importantes. Assim, as instituições financeiras globais 
também estão adotando essas estratégias para demonstrar seu valor inestimável na proteção contra 
ataques cibernéticos complexos.
A resposta a incidentes também é importante na engenharia de proteção. Para minimizar os danos 
causados por acidentes de segurança, é essencial desenvolver um plano abrangente que inclua detecção 
precoce, resposta rápida e recuperação eficaz. Os principais grupos da indústria tecnológica fazem 
grandes investimentos em centros operacionais de segurança (SOCs), que são equipados com os mais 
novos recursos para monitoramento e análise forense contínuos.
 Observação
A engenharia de proteção é uma área multidisciplinar que requer o 
desenvolvimento contínuo de novas tecnologias e práticas. As organizações 
podem proteger seus ativos digitais e fortalecer sua reputação no mercado 
extremamente competitivo atual ao adotar uma abordagem proativa à 
segurança cibernética.
 Saiba mais
Para aprofundar seus conhecimentos em engenharia de proteção, 
recomenda-se a leitura a seguir:
PFLEEGER, S. L.; ATLEE, J. M. Software engineering: theory and practice. 
London: Pearson, 2006.
8 BOAS PRÁTICAS E TENDÊNCIAS EM QUALIDADE DE SOFTWARE
O sucesso de projetos de tecnologia da informação depende da qualidade do software. As boas 
práticas e tendências na área de qualidade de software têm ganhado destaque devido à evolução 
constante das metodologias de desenvolvimento e à crescente complexidade dos sistemas. Em tal 
situação, algumas estratégias são particularmente notáveis por promoverem melhorias substanciais nos 
procedimentos e produtos finais.
107
QUALIDADE DE SOFTWARE
8.1 CMMI e o aprimoramento dos processos
Apesar de ser uma metodologia de desenvolvimento de sistemas, o CMMI foi capaz de fornecer 
excelentes padrões de boas práticas de desenvolvimento, o que colaborou o refinamento da qualidade 
de desenvolvimento de software.
Quando se trata de maturidade dos processos de desenvolvimento de software, o Modelo de 
Maturidade de Capacidade-Integração (CMMI) é um padrão já estabelecido. Além de melhorar seus 
processos internos, as empresas que implementam o CMMI visam mostrar ao mercado sua capacidade 
de entregar produtos de qualidade superior. A implementaçãoimportância da qualidade do software na nuvem, bem como as principais questões 
enfrentadas. De grande importância e de impacto estratégico, a qualidade do software na nuvem 
influencia no sucesso, na reputação e na competitividade de uma empresa em um mercado em questão.
8.9.1 Conceitos básicos sobre qualidade do software na nuvem
O conceito de qualidade do software na nuvem abrange uma variedade de fatores, como funcionalidade, 
desempenho, segurança, escalabilidade e disponibilidade. Também conhecida como ambiente cloud, 
a computação em nuvem tem suas dimensões moldadas pela sua natureza distribuída, o modelo de 
serviço sob demanda e a elasticidade dos recursos. A qualidade desse ambiente é influenciada por 
elementos técnicos e operacionais, o que significa que sua gestão deve ser feita de forma ampla.
Um exemplo prático dessa complexidade pode ser observado no desafio de manter a alta 
disponibilidade de serviços críticos hospedados na nuvem. Empresas como Netflix e Amazon AWS 
utilizam estratégias avançadas de replicação geográfica e balanceamento de carga para garantir que 
seus serviços permaneçam acessíveis mesmo diante de falhas em datacenters individuais. Essas práticas 
explicitam a importância da arquitetura e do planejamento na qualidade do software na nuvem.
Além disso, a segurança emerge como uma preocupação central na qualidade do software na 
nuvem. A adoção de protocolos robustos de criptografia, autenticação multifatorial e políticas rigorosas 
de controle de acesso são fundamentais para proteger dados sensíveis armazenados ou processados na 
nuvem. Casos como o vazamento de dados da Equifax, em 2017, ressaltam as consequências devastadoras 
que falhas de segurança podem ter sobre a confiança dos usuários e a reputação das empresas.
A escalabilidade é outro pilar crucial da qualidade em ambientes cloud. A capacidade de ajustar 
de forma dinâmica os recursos computacionais, de acordo com a demanda, possibilita otimizar custos 
e assegurar o desempenho adequado durante picos inesperados de tráfego. Ferramentas como o 
Kubernetes têm se tornado essenciais nesse aspecto, oferecendo soluções eficientes para a orquestração 
automática de contêineres e gerenciamento da infraestrutura.
Por fim, alcançar uma alta qualidade no software desenvolvido para operar na nuvem requer um 
entendimento profundo das particularidades desse ambiente. Isso envolve desde escolhas arquiteturais 
até práticas operacionais específicas, como a implementação rigorosa de medidas de segurança e a 
adoção flexível da infraestrutura para lidar com variações na demanda.
8.9.2 Funcionalidade e usabilidade
A funcionalidade e a usabilidade de um software na nuvem são aspectos cruciais que determinam a 
satisfação do usuário final. A complexidade aumenta quando consideramos a diversidade de dispositivos 
e plataformas através dos quais os usuários acessam esses serviços. Para enfrentar esses desafios, é 
crucial adotar práticas como o design responsivo, que assegura que o software funcione de maneira 
eficaz em diferentes tamanhos de tela e resoluções.
133
QUALIDADE DE SOFTWARE
No entanto, garantir essas qualidades em ambientes cloud apresenta desafios únicos. A natureza 
distribuída da computação em nuvem implica que os aplicativos devem ser projetados para operar 
eficientemente em múltiplas regiões geográficas, o que pode gerar latências variáveis e exigir uma 
otimização constante das interfaces de usuário para diferentes mercados. Além disso, a diversidade de 
dispositivos e navegadores usados pelos usuários finais requer testes extensivos de compatibilidade 
e responsividade.
Um exemplo notável dessa complexidade é o desenvolvimento de aplicativos móveis baseados 
na nuvem, onde a experiência do usuário pode variar significativamente dependendo do dispositivo, 
sistema operacional e qualidade da conexão à internet. Empresas líderes no setor, como Spotify e 
Dropbox, investem pesadamente em equipes multidisciplinares que focam na otimização contínua da 
usabilidade e na realização de testes para entender melhor as preferências dos usuários. Essas práticas 
destacam a importância de abordagens iterativas e centradas no usuário para garantir a funcionalidade 
e usabilidade em ambientes cloud.
Além disso, a implementação de testes automatizados se torna indispensável para garantir a qualidade 
da funcionalidade em diversos ambientes. Ferramentas como Selenium ou Appium possibilitam simular 
interações do usuário em múltiplos navegadores e dispositivos, identificando problemas de usabilidade 
antes que afetem o usuário final. Empresas inovadoras no setor tecnológico frequentemente utilizam 
frameworks ágeis para iterar rapidamente sobre feedbacks dos usuários, ajustando interfaces e fluxos 
de trabalho para melhor atender às suas necessidades.
Um aspecto muitas vezes subestimado é a importância da localização e internacionalização dos 
aplicativos na nuvem. Adaptar o software para suportar múltiplos idiomas e formatos regionais não 
apenas expande seu alcance global, mas também melhora significativamente a usabilidade para 
usuários não nativos do idioma original do aplicativo. Essa prática demonstra um compromisso com 
uma experiência do usuário inclusiva e acessível.
Todas as práticas de gestão da qualidade e métricas de testes se aplicam aos projetos de softwares 
para ambiente de nuvem e podem ser utilizadas sem nenhum constrangimento.
8.9.3 Desempenho do software na nuvem
O desempenho é outra dimensão crítica da qualidade do software na nuvem, influenciando 
diretamente a percepção do usuário sobre o serviço. A adoção de arquiteturas sem servidor (serverless) 
pode oferecer escalabilidade automática, possibilitando ao sistema que se ajuste rapidamente às 
mudanças na demanda sem intervenção manual.
Outro ponto crítico é a implementação de caching eficiente tanto no lado do cliente quanto no 
do servidor. Isso reduz latências ao servir conteúdo previamente armazenado de forma mais rápida do 
que se fosse necessário processá-lo novamente. Estratégias como Content Delivery Networks (CDNs) 
são essenciais para distribuir conteúdo globalmente, minimizando atrasos independentemente da 
localização geográfica do usuário.
134
Unidade III
Desafios como o gerenciamento eficiente dos recursos computacionais para lidar com cargas de 
trabalho variáveis são amplificados pela elasticidade da nuvem. Ferramentas modernas de monitoramento 
de desempenho, como New Relic e Datadog, possibilitam uma visão granular sobre o comportamento dos 
sistemas em tempo real, facilitando a identificação rápida de gargalos e a otimização proativa dos recursos.
Um caso emblemático é o uso dessas ferramentas por empresas como X (antigo Twitter) e Netflix 
durante eventos globais de grande escala (como Copa do Mundo ou lançamentos de séries populares), 
quando picos súbitos no tráfego podem levar à necessidade urgente de escalonamento automático dos 
serviços. A capacidade dessas plataformas de manter um desempenho estável sob demanda intensa não 
apenas demonstra a robustez das soluções baseadas em nuvem, mas também ressalta a importância 
crítica do monitoramento contínuo e do ajuste dinâmico dos recursos disponíveis.
A análise proativa de logs e métricas desempenha um papel crucial na manutenção da performance 
ideal. Tal acompanhamento contínuo facilita uma compreensão mais profunda das necessidades dos 
usuários e da forma como eles interagem com o sistema sob diferentes condições.
 Lembrete
Ferramentas avançadas de monitoramento possibilitam detectar padrões 
anormais ou picos inesperados no uso, propiciando correções rápidas antes 
que impactem significativamente a experiência do usuário.
 
8.9.4 Segurança
A segurança é possivelmente o aspecto mais sensível quando se trata da qualidade do software na 
nuvem. Com ameaças cibernéticas evoluindo rapidamente, garantir a segurança dos dados armazenados 
ou processados na nuvem exige vigilância constante, bem como a adoção das melhores práticas 
internacionais.Assim, estratégias como encriptação end-to-end, autenticação multifatorial (MFA) e 
segmentação rigorosa da rede tornaram-se padrões mínimos nas arquiteturas cloud modernas.
Em ambientes cloud, exige-se abordagem multifacetada, dada a natureza complexa e dinâmica. 
As práticas recomendadas incluem a implementação rigorosa de políticas de acesso baseadas em 
roles (RBAC), assegurando que apenas usuários autorizados possam acessar informações sensíveis ou 
realizar operações críticas dentro do sistema.
A criptografia dos dados em trânsito e em repouso é outra camada essencial de proteção, que certifica 
que informações confidenciais permaneçam seguras contra interceptações não autorizadas. Além disso, 
a realização regular de testes de penetração e avaliações de vulnerabilidade ajuda a identificar e a 
corrigir falhas de segurança antes que possam ser exploradas em ataques.
135
QUALIDADE DE SOFTWARE
 Saiba mais
Para uma compreensão mais aprofundada sobre esses temas, 
recomenda-se a seguinte leitura:
MATHER, T.; KUMARASWAMY, S.; LATIF, S. Cloud security and privacy: an 
enterprise perspective on risks and compliance. Massachusetts: O’Reilly, 2009.
8.10 Tendências futuras em qualidade de software
À medida que a tecnologia evolui e novas demandas surgem, as tendências futuras em qualidade 
de software moldam o futuro do desenvolvimento de software. Neste capitulo, serão discutidas as 
tendências emergentes que estão moldando o cenário da qualidade do software e como elas estão 
afetando a forma como os produtos de software são desenvolvidos, testados e entregues. As tendências 
futuras em qualidade de software estão redefinindo as expectativas dos clientes e impulsionando a 
inovação em toda a indústria de tecnologia, devido à incorporação da automação e da inteligência 
artificial, bem como à crescente demanda por segurança e privacidade. A seguir, serão examinadas essas 
tendências para entender como elas estão impactando o futuro do desenvolvimento de software e do 
fornecimento de produtos de alta qualidade aos usuários finais.
8.10.1 Novas tecnologias e abordagens que impactam a qualidade do software
As últimas décadas testemunharam uma revolução tecnológica sem precedentes, impactando 
significativamente a qualidade do software. Desse modo, entre as inovações mais disruptivas, estão a 
inteligência artificial (IA) e o aprendizado de máquina (AM), que não apenas transformaram os métodos 
de desenvolvimento de software, mas também redefiniram os padrões de qualidade.
A IA e o AM têm sido fundamentais na automação dos processos de teste, possibilitando uma 
cobertura mais ampla em menos tempo e com menor esforço humano. Ferramentas baseadas em IA 
podem se preparar a partir de dados e históricos de defeitos, identificar padrões complexos e prever áreas 
potenciais de falha antes mesmo que o código seja escrito. Isso possibilita uma abordagem proativa para 
garantir a qualidade, em vez da reativa, focada na detecção e correção de defeitos após sua ocorrência.
Além disso, essas tecnologias estão remodelando as práticas de desenvolvimento por meio da 
implementação de sistemas auto-otimizáveis. Por exemplo, sistemas baseados em IA podem ajustar 
dinamicamente seus próprios parâmetros operacionais em resposta às mudanças no ambiente ou nos 
requisitos do usuário, melhorando continuamente seu desempenho e confiabilidade sem intervenção 
humana direta.
136
Unidade III
Um caso emblemático dessa aplicação é o uso da IA para personalizar experiências do usuário em 
softwares complexos. Empresas como Netflix e Spotify utilizam algoritmos de recomendação baseados 
em AM para analisar grandes volumes de dados sobre preferências dos usuários e fornecer conteúdo 
personalizado que atende às suas expectativas individuais. Essa capacidade melhora a satisfação do 
usuário e eleva os padrões da percepção de qualidade do software.
No entanto, apesar desses avanços promissores, a integração efetiva da IA e AM na qualidade do 
software apresenta desafios significativos. Questões como viés algorítmico, realização de explicação 
das decisões automatizadas e segurança dos dados são preocupações crescentes que exigem atenção 
contínua dos profissionais da área.
Se por um lado, as novas tecnologias citadas oferecem oportunidades extraordinárias para melhorar 
a qualidade do software, por outro, elas impõem novos desafios éticos e técnicos. Navegar por essas 
complexidades requer um equilíbrio cuidadoso entre aproveitar as vantagens dessas inovações e mitigar 
seus riscos potenciais.
8.10.2 Desafios emergentes na área da qualidade do software: segurança cibernética
A segurança cibernética tem se tornado um desafio cada vez mais complexo e multifacetado na área da 
qualidade do software. Com a crescente digitalização dos serviços e a expansão da internet das coisas (IoT), 
o volume de dados sensíveis gerado de compartilhados online nunca foi tão alto. Isso, por sua vez, 
atraiu uma nova onda de ameaças cibernéticas, variando de ransomware a ataques direcionados a 
infraestruturas críticas.
Um aspecto particularmente desafiador é a evolução constante das técnicas utilizadas pelos 
cibercriminosos. Por exemplo, os ataques de phishing tornaram-se extremamente sofisticados, muitas 
vezes imitando comunicações legítimas de forma quase indistinguível. Além disso, o surgimento de 
malwares baseados em inteligência artificial (IA), capazes de aprender e se adaptar a fim de contornar 
medidas de proteção tradicionais, representa uma nova fronteira para a segurança cibernética.
Para enfrentar esses desafios, as práticas de desenvolvimento de software estão evoluindo. A 
implementação do DevSecOps, que integra considerações de segurança desde as fases iniciais do 
ciclo de desenvolvimento, é um exemplo dessa mudança. Ferramentas automatizadas baseadas em 
IA também estão sendo desenvolvidas para identificar vulnerabilidades no código antes que ele seja 
lançado. Contudo, essas abordagens exigem uma mudança cultural significativa nas organizações e um 
investimento contínuo em formação e ferramentas especializadas.
Além disso, regulamentações como o GDPR, na União Europeia, impõem requisitos rigorosos sobre 
como os dados pessoais devem ser tratados e protegidos. Isso adiciona uma camada adicional de 
complexidade ao desenvolvimento de software seguro, exigindo não apenas competências técnicas, 
mas também conhecimento legal detalhado.
137
QUALIDADE DE SOFTWARE
8.10.3 O papel da automação na melhoria contínua da qualidade do software
A automação tem se tornado um pilar fundamental na evolução das práticas de qualidade de 
software. Com a adoção crescente de metodologias ágeis e DevOps, a necessidade de processos mais 
rápidos e eficientes se tornou evidente. A automação entra como uma solução poderosa, possibilitando 
as equipes que realizem testes de forma mais rápida, confiável e com menor esforço manual.
Um exemplo claro dessa transformação pode ser visto na implementação de pipelines CI/CD. 
Elas automatizam o processo de integração do código, execução de testes e deployment, reduzindo 
significativamente o tempo necessário para disponibilizar novas funcionalidades e correções. Além 
disso, a automação dos testes viabiliza uma cobertura maior em menos tempo, aumentando a confiança 
na qualidade do software entregue.
Contudo, a automação não é apenas sobre velocidade. Ela também contribui para a consistência dos 
resultados. Testes manuais estão sujeitos a variações decorrentes da intervenção humana, enquanto 
os testes automatizados podem ser repetidos inúmeras vezes com exatidão. Isso garante que bugs 
previamente identificados não sejam reintroduzidos nas versões subsequentes do software.
Empresas líderes no setor tecnológico têm compartilhado suas experiências bem-sucedidas com 
automação. Por exemplo, a Netflix utiliza uma abordagem chamada chaos engineering, em que sistemas 
são intencionalmente submetidos a falhas para testar sua resiliência. Grande parte desse processo é 
automatizada, possibilitandoà empresa garantir alta disponibilidade e qualidade em seus serviços.
8.10.4 O papel da DevOps na melhoria contínua da qualidade do software
A cultura DevOps representa uma mudança paradigmática no desenvolvimento de software, 
enfatizando a colaboração entre as equipes de desenvolvimento (Dev) e operações (Ops), com um foco 
especial na melhoria contínua da qualidade do software. Essa abordagem promove um período de 
feedback constante entre as equipes envolvidas no ciclo de vida do desenvolvimento do software, desde 
o planejamento até o deployment e operação.
Uma das principais contribuições da DevOps para a qualidade do software é sua ênfase em práticas 
como integração contínua (CI) e entrega contínua (CD). Tais práticas propiciam que as alterações no 
código sejam integradas frequentemente ao repositório principal e que o software seja entregue aos 
usuários finais rapidamente. Isso facilita a detecção precoce de erros e possibilita ajustes rápidos, 
melhorando significativamente a qualidade final do produto.
Além disso, DevOps incentiva uma mentalidade na qual todos são responsáveis pela qualidade e 
estabilidade do sistema. Isso significa que questões relacionadas à segurança são tratadas desde as 
fases iniciais do desenvolvimento, tal abordagem é conhecida como security by design. Ferramentas 
automatizadas desempenham um papel crucial aqui, ajudando a identificar vulnerabilidades antes que 
elas possam impactar negativamente o projeto.
138
Unidade III
Casos reais ilustram o impacto positivo da DevOps na qualidade do software. Empresas como Amazon 
e Google adotaram essa cultura para acelerar o lançamento de produtos.
 Saiba mais
Para aprofundar seus conhecimentos sobre o papel da automação e 
DevOps na melhoria contínua da qualidade do software, seguem algumas 
sugestões de leitura:
FORSGREN, N.; HUMBLE, J.; KIM, G. Accelerate: the science of lean software 
and DevOps: building and scaling high performing technology organizations. 
It revolution Press, 2018.
BLOG do Martin Fowler. Disponível em: https://martinfowler.com/. Acesso 
em: 7 jun. 2024.
 
139
QUALIDADE DE SOFTWARE
 Resumo
A engenharia de software é uma disciplina que aborda a criação e a 
manutenção de sistemas de software de forma sistemática e disciplinada, 
envolvendo, assim, a escrita de código, bem como a análise de requisitos, o 
projeto de sistemas, a realização de testes e a manutenção do software ao 
longo do tempo. Portanto, o objetivo final é produzir um software de alta 
qualidade que atenda às necessidades dos usuários finais e seja confiável, 
eficiente e fácil de manter.
Quando se trata de qualidade de software, a discussão é sobre a 
capacidade do software de atender aos requisitos funcionais e não 
funcionais, bem como às expectativas dos usuários finais. Aspectos como 
desempenho, usabilidade, segurança e confiabilidade estão nesse conjunto. 
A qualidade de software é fundamental para garantir a satisfação do cliente 
e a competitividade da empresa no mercado.
Para alcançar a qualidade de software, é importante seguir boas 
práticas ao longo do processo de desenvolvimento. Isso inclui começar 
com uma compreensão clara dos requisitos do sistema, estabelecendo um 
plano de projeto detalhado e adotando metodologias ágeis que promovam 
a colaboração e a entrega contínua de software. Além disso, é essencial 
realizar testes abrangentes em todas as fases do desenvolvimento, realizar 
revisões de código regulares e automatizar processos sempre que possível 
para aumentar a eficiência e reduzir erros humanos.
No cenário atual, várias tendências estão moldando a forma como 
abordamos a qualidade de software. O movimento DevOps, por exemplo, está 
promovendo uma integração mais estreita entre equipes de desenvolvimento 
e operações, facilitando a entrega rápida e contínua de software. Além 
disso, a inteligência artificial e o aprendizado de máquina estão sendo cada 
vez mais utilizados para automatizar testes, identificar padrões de uso do 
software e prever problemas de qualidade antes que eles ocorram.
Outra tendência importante é a qualidade centrada no usuário, que 
coloca um foco maior na experiência do usuário e na satisfação do cliente, 
o que contempla incorporar o feedback do usuário em todas as fases do 
desenvolvimento de software e garantir que o software seja intuitivo 
e fácil de usar.
140
Unidade III
Já a segurança tem se tornado uma preocupação cada vez maior no 
desenvolvimento de software, com um cerne crescente na identificação e 
mitigação de vulnerabilidades desde o início do processo de desenvolvimento. 
Práticas como análise de segurança estática e dinâmica, bem como testes 
de penetração para identificar e corrigir vulnerabilidades antes que elas 
possam ser exploradas por hackers estão entre as ações necessárias.
Por fim, a qualidade de software é uma preocupação fundamental 
na engenharia de software. Seguir boas práticas e estar ciente das 
tendências emergentes é essencial para garantir que os sistemas de 
software atendam às necessidades dos usuários finais e mantenham a 
competitividade no mercado.
141
QUALIDADE DE SOFTWARE
 Exercícios
Questão 1. (FGV 2024, adaptada) No desenvolvimento de software por metodologias ágeis, têm 
sido empregadas métricas ágeis para acompanhamento de projetos Scrum. Elas têm sido aplicadas para 
avaliar se os requisitos de qualidade e as necessidades dos clientes foram atendidos.
Quanto ao emprego de métricas ágeis baseadas em Scrum, avalie as afirmativas.
I – Permitem o acompanhamento individual e em tempo real de equipe, software e projeto.
II – Concentram-se no sucesso do projeto exclusivamente a partir da visão do gestor.
III – Medem diretamente a produtividade por meio de linhas de código, mas têm limitações em 
mensurar esforços da equipe.
É correto o que se afirma em:
A) I, apenas.
B) III, apenas.
C) I e II, apenas.
D) II e III, apenas.
E) I, II e III.
Resposta correta: alternativa A.
Análise das afirmativas
I – Afirmativa correta.
Justificativa: as métricas ágeis permitem o acompanhamento do progresso da equipe, do software 
e do projeto como um todo.
II – Afirmativa incorreta.
Justificativa: as métricas ágeis não se concentram exclusivamente na visão do gestor. Elas são 
projetadas para fornecer uma visão abrangente do progresso do projeto para todos os stakeholders.
142
Unidade III
III – Afirmativa incorreta.
Justificativa: de forma geral, as métricas ágeis não medem a produtividade por meio de linhas de 
código, pois essa não é uma medida útil da produtividade ou da qualidade do software. Além disso, elas 
podem, sim, mensurar os esforços da equipe envolvida no projeto do software.
Questão 2. (UFSCar 2023, adaptada) DevOps representa uma mudança paradigmática no 
desenvolvimento de software, enfatizando a colaboração entre as equipes envolvidas no ciclo de vida 
do software. Sobre DevOps, avalie as afirmativas.
I – É o nome da função desempenhada pelo profissional que faz a interface entre as equipes de 
desenvolvimento e operações.
II – Requer a utilização de práticas tradicionais de desenvolvimento de software para garantir a 
entrega de software funcionando de maneira segura e estável.
III – É uma cultura colaborativa entre as equipes de desenvolvimento e de operações para entregar 
o software funcionando de maneira ágil, segura e estável.
É correto o que se afirma em:
A) I, apenas.
B) III, apenas.
C) I e II, apenas.
D) II e III, apenas.
E) I, II e III.
Resposta correta: alternativa B.
Análise das afirmativas
I – Afirmativa incorreta.
Justificativa: DevOps é uma cultura organizacional, não o nome de um cargo ou de uma função.
II – Afirmativa incorreta.
Justificativa: DevOps não se limita às práticas tradicionais de desenvolvimento de software. Na 
verdade, na maior parte das vezes, a cultura envolve a adoção de novas práticas e de novas ferramentas, 
como integração contínua (CI) e entrega contínua (CD).
143
QUALIDADE DE SOFTWARE
III – Afirmativa correta.
Justificativa:DevOps não é uma função ou um cargo, mas uma cultura. A cultura DevOps enfatiza a 
colaboração entre as equipes de desenvolvimento (Dev) e de operações (Ops), com um foco especial na 
melhoria contínua da qualidade do software.
144
REFERÊNCIAS
ANDERSON, D. J. Kanban: mudança evolucionária de sucesso para seu negócio de tecnologia. 
Washington D.C.: Blue Hole Press, 2011.
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS (ABNT). NBR ISO/IEC 9126-1: Engenharia de 
software – Qualidade de produto. Parte 1: modelo de qualidade. Rio de Janeiro, 2013. Disponível em: 
https://tinyurl.com/2wyyv44c. Acesso em: 10 jun. 2024.
ASTELS, D. Test-driven development: a practical guide. New Jersey: Prentice Hall, 2003.
BARBOSA, S. D. J.; SILVA, B. S. Interação humano-computador. São Paulo: Pearson, 2011.
BARTIÉ, A. Garantia da qualidade de software: adquirindo maturidade organizacional. Rio de Janeiro: 
Campus, 2002.
BASTIANI, J. A. Diagrama de Pareto: o que é e como fazer? Blog da Qualidade, 2012. Disponível em: 
https://shre.ink/8Hi5. Acesso em: 24 maio 2024.
BATISTA, C. F. A. Métricas de segurança de software. 2007. Dissertação (Mestrado em Informática) – Pontifícia 
Universidade Católica do Rio de Janeiro, Rio de Janeiro, 2007. Disponível em: https://tinyurl.com/3rt6jzbm. 
Acesso em: 4 jun. 2024.
BOEHM, B. W. Characteristics of software quality. TRW series of software technology, v. 1. California: 
North-Holland Publishing Company, 1978.
BOEHM, B. W. Software engineering economics. Michigan: Prentice Hall, 1981.
COHN, M. Agile estimating and planning. London: Pearson, 2005.
CROSBY, P. B. Quality is free: the art of making quality certain – so that it becomes a source of profit 
for your business. New York: McGraw Hill, 1979.
DEMING, W. E. Out of the crisis. São Paulo: Marques Saraiva, 1990.
DEMING, W. E. Saia da crise. Massachusetts: MIT Press, 1986.
DEVMEDIA. Técnicas e fundamentos de testes de software. 2008. Disponível em: https://tinyurl.com/t6wd3u5t. 
Acesso em: 31 maio 2024.
DIAS, R. Métricas para avaliação de sistemas de informação. Revista Eletrônica de Sistemas de 
Informação, v. 1, n. 1, 2002. Disponível em: https://tinyurl.com/3wrz246v. Acesso em: 4 jun. 2024.
145
ELASTIC. Kibana: Descubra, itere e resolva com ES|QL no Kibana. [s.d.]. Disponível em: https://tinyurl.com/hcn7m3ff. 
Acesso em: 1º jul. 2024.
ENGHOLM JUNIOR, H. Engenharia de software na prática. São Paulo: Novatec, 2010.
FEIGENBAUM, A. V. Total quality control. 3rd. ed. New York: McGraw-Hill, 1983.
FERREIRA, B. N.; ARAKAKI, J. Métricas de manutenibilidade apoiando a refatoração. Academia Edu, 
São Paulo, [s.d.]. Disponível em: https://tinyurl.com/2ejypmmk. Acesso em: 4 jun. 2024.
FORMIGHIERI, G. Diagrama de Ishikawa: o que é e como desenvolver. Konquest Keeps, 2021. Disponível 
em: https://tinyurl.com/2m63uh7x. Acesso em: 3 jun. 2024.
FORSGREN, N.; HUMBLE, J.; KIM, G. Accelerate: the science of lean software and DevOps – building 
and scaling high performing technology organizations. Portland: It Revolution Press, 2018.
FOWLER, M. Refatoração: aperfeiçoando o design de códigos existentes. São Paulo: Novatec, 2020.
GRAFANA. Grafana tutorials. [s.d.]. Disponível em: https://tinyurl.com/659ncmrr. Acesso 
em: 1º jul. 2024.
GUIMARÃES, W. Métricas em testes de usabilidade, como usá-las para melhorar o seu produto. UX 
Collective BR, 2019. Disponível em: https://tinyurl.com/5n6ab3xj. Acesso em: 4 jun. 2024.
HIRAMA, K. Engenharia de software: qualidade e produtividade com tecnologia. Barueri: LTC, 2011.
HUMBLE, J.; FARLEY, D. Continuous delivery: reliable software releases through build, test, and 
deployment automation. Boston: Addison-Wesley, 2010.
INTERNATIONAL ORGANIZATION ASSOCIATION (ISO). ISO/IEC 25010:2011. Systems and software 
engineering – Systems and software Quality Requirements and Evaluation (SQuaRE) – System and 
software quality models. Geneva, 2011.
KAN, S. H. Metrics and models in software quality engineering. London: Addison-Wesley, 2002.
KOSCIANSKI, A.; SOARES, M. S. Qualidade de software. 2. ed. São Paulo: Novatec, 2007.
LEÃO, T. Diagrama de Ishikawa: o que é, como funciona e como fazer. Nomus Meu Blog Industrial, 
2024. Disponível em: https://tinyurl.com/yx7uh4pd. Acesso em: 1º jul. 2024.
MATHER, T.; KUMARASWAMY, S.; LATIF, S. Cloud security and privacy: an enterprise perspective on risks 
and compliance. Massachusetts: O’Reilly, 2009.
146
MEREO. Técnica dos 5 porquês: o que é e sua importância. 28 maio 2021. Disponível em: 
https://tinyurl.com/2svw4pk4. Acesso em: 7 jun. 2024.
MOLINARI, L. Testes de software: produzindo sistemas melhores e mais confiáveis. São Paulo: Érica, 2008.
MURPHY, N. R. et al. Site reliability engineering: how google runs production systems. 
Massachusetts: O’Reilly, 2016.
NEWMAN, S. Building microservices: designing fine-grained systems. Massachusetts: O’Reilly, 2015.
NIELSEN, J. Usability engineering. Massachusetts: Morgan Kaufmann, 1993.
NOGUEIRA, E. Introdução do quadrante de teste ágil. Blog Adaptworks Emphasys Group, 2013. 
Disponível em: https://tinyurl.com/bdf2sd5w. Acesso em: 28 maio 2024.
NOGUEIRA, M. Engenharia de software: um framework para a gestão de riscos em projetos de 
software. Rio de Janeiro: Ciência Moderna, 2009.
NORMAN, D. A. The design of everyday things. New York: Basic Books, 2013.
NUNES, A. As principais métricas para avaliar a usabilidade de uma interface. UX Collective BR, 2020. 
Disponível em: https://tinyurl.com/3p325ty4. Acesso em: 4 jun. 2024.
OPENTEXT. OpenText LoadRunner Professional. [s.d.]. Disponível em: https://tinyurl.com/mr44b4nt. 
Acesso em: 5 jun. 2024.
PAULA FILHO, W. de P. Engenharia de software: fundamentos, métodos e padrões. Rio de Janeiro: LTC, 2008.
PFLEEGER, S. L.; ATLEE, J. M. Software engineering: theory and practice. London: Pearson, 2006.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software: uma abordagem profissional. 7. ed. Porto 
Alegre: AMGH, 2011.
PROJECT MANAGEMENT INSTITUTE. Um guia do conhecimento em gerenciamento de projetos (Guia 
PMBOK®). 5. ed. Newtown Township: Project Management Institute, 2013.
QUALIDADE. In: DICIONÁRIO Houaiss de Língua Portuguesa. Rio de Janeiro: Objetiva, 2009.
RAMOS, D. Causa raiz das não conformidades: boas práticas para análise e identificação. Blog da 
Qualidade, 2019. Disponível em: https://tinyurl.com/zjsky55j. Acesso em: 1º jul. 2024.
SEBRAE. Kanban: a metodologia ágil mais simples e mais utilizada atualmente. [s.d.]. Disponível em: 
https://tinyurl.com/5bk3uu9t. Acesso em: 6 jun. 2024.
147
SEBRAE. Seis sigma é ferramenta de melhoria contínua para as empresas. 18 abr. 2023. Disponível em: 
https://tinyurl.com/mkzn8dbp. Acesso em: 28 maio 2024.
SERVIÇO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO). Roteiro Serpro de contagem de pontos de 
função e estimativas. 2014. Disponível em: https://tinyurl.com/yc4pm7xe. Acesso em: 28 maio 2024.
SILVA, M. C. da. CMMI para iniciantes. [s.d.]. Disponível em: https://tinyurl.com/7jyu38jf. Acesso em: 
1º jul. 2024.
SINGH, M. What you need to know about CI/CD? Medium, 2019. Disponível em: https://tinyurl.com/324v7frw. 
Acesso em: 7 jun. 2024.
SOFTWARE ENGINEERING INSTITUTE. CMMI for development, version 1.3: improving processes for 
developing better products and services. Pittsburgh: Carnegie Mellon University, 2010. Disponível em: 
https://tinyurl.com/4zt7u6em. Acesso em: 1º jul. 2024.
SOMMERVILLE, I. Engenharia de software. São Paulo: Pearson, 2011.
SOUZA, T. B. A. Um modelo para avaliação da manutenibilidade de código-fonte orientado a objeto. 
2005. TCC (Trabalho de graduação em Engenharia de Software) – Universidade Federal de Pernambuco, 
Recife, 2005. Disponível em: https://tinyurl.com/26zj4fhv. Acesso em: 4 jun. 2024.
STUTTARD, D.; PINTO, M. The web application hacker’s handbook: finding and exploiting security flaws. 
New Jersey: Wiley, 2011.
SUTHERLAND, J. Scrum: a arte de fazer o dobro do trabalho na metade do tempo. Rio de Janeiro: 
Sextante, 2019.
SWICEGOOD, T. Pragmatic version control usinggit. Raleigh: Pragmatic Bookshelf, 2008.
TANENBAUM, A. S. Sistemas operacionais modernos. 4. ed. São Paulo: Pearson, 2016.
VARGAS, R. Gerenciamento de projetos: estabelecendo diferenciais competitivos. São Paulo: 
Brasport, 2017.
VAZQUEZ, C. E.; SIMÕES, G. S.; ALBERT, R. M. Análise de pontos de função. 12. ed. São Paulo: Érica, 2012.
VIRGENS, G. B. D. Extração de métricas de usabilidade a partir de protótipos de fidelidade mista. 2010. 
Dissertação (Mestrado em Ciência da Computação) – Pontifícia Universidade Católica do Rio Grande 
do Sul, Porto Alegre, 2010. Disponível em: https://tinyurl.com/mrk4dj7k. Acesso em: 4 jun. 2024.
148
Informações:
www.sepi.unip.br ou 0800 010 9000do CMMI exige a identificação de áreas de 
melhoria contínua antes de uma avaliação minuciosa dos procedimentos atuais da organização. A 
indústria aeroespacial é um exemplo notável dessa prática, pois empresas como a Boeing adotaram o 
CMMI para garantir altos padrões de qualidade em seus softwares embarcados.
O CMMI, que fornece um framework sólido para o aprimoramento contínuo dos processos de 
desenvolvimento, é um marco importante na evolução da qualidade do software. A sua adoção por 
uma organização não é apenas um indicativo de seu compromisso com a qualidade, mas também uma 
estratégia poderosa para se destacar em um mercado cada vez mais competitivo.
A implementação do CMMI começa por uma avaliação minuciosa dos processos atuais. Após essa 
etapa, são definidos objetivos específicos de melhoria e implementadas as práticas sugeridas pelo modelo. 
Como o CMMI tem como característica distintiva o foco no aperfeiçoamento contínuo, as organizações 
seguem com a revisão de seus processos e resultados regularmente, como forma de descobrir novas 
oportunidades de otimização.
O envolvimento ativo da liderança e de todos os membros da equipe no processo é fundamental para 
o sucesso da implementação do CMMI. A mudança cultural relacionada à implementação desse modelo 
é muitas vezes tão significativa quanto aquelas relacionadas às alterações técnicas nos processos. A 
Lockheed Martin e outras grandes empresas demonstraram como a integração efetiva do CMMI pode 
levar a melhorias significativas na eficiência operacional e na satisfação do cliente, resultando em 
produtos de software que não apenas atendam, mas superem as expectativas.
Além disso, a flexibilidade do CMMI possibilita às organizações de vários tamanhos e setores que 
adaptem o modelo às suas necessidades únicas. Como resultado, o CMMI está disponível para empresas 
que desejam melhorar sua capacidade competitiva por meio da excelência em seus processos de 
desenvolvimento, independente do seu porte.
Para concluir, o CMMI é uma ferramenta útil para organizações que desejam alcançar a excelência 
no desenvolvimento de software, pois tal modelo contribui significativamente para o fortalecimento 
das capacidades organizacionais, fornecendo um caminho claro para o aprimoramento dos processos. 
Isso resulta em produtos finais que se destacam pela sua qualidade superior.
108
Unidade III
8.2 Ciclo de melhoria continua
O século XX trouxe uma nova visão da qualidade, que deixou de ser apenas uma verificação da 
conformidade técnica e passou a ser o aprimoramento contínuo e constante de todos os processos 
envolvidos durante a fabricação do produto. O responsável por essa mudança no conceito de qualidade 
foi o professor William Edwards Deming.
Deming (1990) ao afirmar que era função do produto atender às necessidades do cliente, gerando 
assim satisfação ao usuário, criou o ciclo de Deming para a qualidade que, hoje, não é utilizado apenas na 
qualidade de produtos e serviços. Trata-se de um método iterativo para melhoria contínua da qualidade 
de operações, bens e serviços. O ciclo PDCA consiste em planejar, executar, verificar e agir e todas essas 
ações formam uma sequência cíclica, que, a cada iteração do ciclo PDCA, leva a avanços incrementais 
na qualidade do software e nos processos de desenvolvimento, contribuindo para a entrega de produtos 
de alta qualidade e a satisfação dos clientes.
Objetivo: 
tomar ações corretivas 
e/ou preventivas com 
base na etapa 
de verificação
Objetivo: 
avaliar os 
resultados da 
implementação para 
comparar com as 
metas estabelecidas
Objetivo: 
estabelecer 
metas e 
identificar 
maneiras de 
alcançá-las
Objetivo: 
implementar o 
plano elaborado 
na fase de 
planejamento
A P
C D
Figura 21 – Ciclo PDCA
Adaptada de: Deming (1986). 
O ciclo PDCA é um processo contínuo; após a etapa Agir, retorna-se à fase Planejar para iniciar uma 
nova iteração do ciclo. Cada ciclo novo propicia a aprendizagem contínua, ajustando e aprimorando os 
processos no decorrer do tempo.
Como o ciclo PDCA permeou todos os processos das empresas, não demorou muito até estar atrelado 
ao desenvolvimento de software.
O desenvolvimento de software como campo específico emergiu posteriormente ao ciclo elaborado 
por Deming, assim, a aplicação do PDCA ao desenvolvimento de software foi uma extensão natural do 
seu uso em processos em geral. À medida em que as práticas de gestão de qualidade foram incorporadas 
à engenharia de software, aconteceu a transição do PDCA para o desenvolvimento de software.
109
QUALIDADE DE SOFTWARE
 Observação
Para o leitor, pode dar a impressão que o desenvolvimento de software 
já nasceu com as práticas do PDCA embarcadas no ciclo de vida de 
desenvolvimento. Porém, não foi o que aconteceu!
Não houve um “momento específico” em que o PDCA foi introduzido no 
desenvolvimento de software, mas sim uma evolução gradual e contínua à 
medida que as práticas de gestão de qualidade foram integradas ao campo 
da engenharia de software.
 
A aplicação do PDCA no desenvolvimento de software promove a melhoria contínua, bem como 
a eficiência e a eficácia nos processos de criação de software. Veja como o ciclo PDCA se aplica ao 
desenvolvimento de software:
• Planejar (Plan):
— Objetivo: estabelecer metas e definir as atividades necessárias para atingi-las.
— No desenvolvimento de software:
- definição dos requisitos do projeto;
- estabelecimento de metas de qualidade e prazos;
- planejamento das atividades de desenvolvimento e teste.
• Executar (Do):
— Objetivo: implementar o plano elaborado na fase de planejamento.
— No desenvolvimento de software:
- codificação do software;
- execução de testes unitários e de integração;
- implementação de funcionalidades de acordo com o plano.
110
Unidade III
• Verificar (Check):
— Objetivo: avaliar os resultados da implementação para comparar com as metas estabelecidas.
— No desenvolvimento de software:
- realização de testes de sistema e aceitação;
- verificação da conformidade com os requisitos;
- análise de métricas de qualidade e desempenho.
• Agir (Act):
— Objetivo: tomar ações corretivas e/ou preventivas com base na avaliação realizada na 
etapa de verificação.
— No desenvolvimento de software:
- correção de bugs identificados nos testes;
- melhoria contínua de processos com base nos resultados;
- atualização do plano de desenvolvimento conforme necessário.
A aplicação do ciclo PDCA no desenvolvimento de software ajuda as equipes a gerenciar de modo 
eficiente os projetos, melhorar a qualidade do software e responder de maneira ágil às mudanças nos 
requisitos ou nas condições do projeto. Essa abordagem iterativa contribui para a entrega bem-sucedida 
de produtos de software que atendam às necessidades do cliente.
O ciclo PDCA, ou ciclo de Deming, é outra ferramenta essencial no arsenal das boas práticas em 
qualidade de software. Ele promove a melhoria contínua através do planejamento das atividades, da 
execução das tarefas planejadas, da verificação dos resultados obtidos e da atuação corretiva sobre os 
desvios encontrados. Empresas como a Toyota são famosas por aplicarem tal princípio não somente na 
fabricação de automóveis, mas também no desenvolvimento dos softwares que integram seus veículos.
O ciclo de melhoria contínua, um conceito fundamental na engenharia de software, é essencial para 
manter e elevar a qualidade dos serviços oferecidos. Esse processo iterativo envolve várias etapas críticas, 
começando pela identificação e análise das necessidades atuais e futuras dos usuários, seguindo para o 
desenvolvimento e implementação de soluções inovadoras que atendam ou superem essas expectativas.
Uma das primeiras etapas no ciclo de melhoria contínua é o estabelecimento de métricas claras e 
objetivas, as quais possibilitam às organizações avaliar efetivamente o desempenho atual de seus serviços 
e identificar áreas que exigem atenção imediata. Por exemplo, uma métrica comum em ambientes de 
111
QUALIDADEDE SOFTWARE
software como serviço (SaaS) é o tempo médio de resposta do sistema. Uma deterioração nessa métrica 
pode indicar a necessidade de otimizações no código ou na infraestrutura subjacente.
Após a definição das métricas, segue-se a fase de coleta e análise de dados. Ferramentas avançadas de 
monitoramento e análise são empregadas para capturar informações detalhadas sobre o comportamento 
do sistema em diferentes condições operacionais. Essa análise profunda ajuda a revelar padrões ocultos, 
dependências inesperadas entre componentes do sistema ou gargalos de desempenho que não seriam 
evidentes sem uma investigação minuciosa.
A fase subsequente abrange a implementação das melhorias identificadas durante a análise, as quais 
podem variar desde ajustes finos em configurações até a revisões arquiteturais significativas do sistema. 
É importante ressaltar que cada mudança deve ser seguida por uma rigorosa etapa de testes para 
garantir que os aprimoramentos alcancem os resultados esperados sem introduzir novos problemas.
Para encerrar o ciclo, realiza-se a revisão dos resultados obtidos após a implementação das melhorias. 
Nesse momento, avalia-se se os objetivos inicialmente propostos foram alcançados e se há a necessidade 
de novas iterações do ciclo para refinamentos adicionais. A utilização eficaz desse ciclo garante não 
apenas a satisfação contínua dos usuários, mas também mantém as organizações competitivas em um 
mercado dinâmico.
Resumidamente, o ciclo de melhoria contínua representa uma abordagem sistemática e 
estruturada para otimizar continuamente os processos e produtos da engenharia de software 
orientada a serviços. Ao adotar essa prática, as organizações asseguram um alto nível de qualidade 
nos serviços prestados aos seus clientes, adaptando-se eficientemente às mudanças nas demandas do 
mercado e às evoluções tecnológicas.
 Saiba mais
Para aprofundar seu entendimento sobre o ciclo de melhoria contínua e 
suas aplicações na engenharia de software, segue uma sugestão de leitura:
VARGAS, R. Gerenciamento de projetos: estabelecendo diferenciais 
competitivos. São Paulo: Brasport, 2017.
 
8.3 Cultura de qualidade na organização
A construção e a manutenção da cultura da qualidade dentro das organizações transcendem as 
metodologias e ferramentas específicas, focando então nas pessoas que são os verdadeiros agentes da 
qualidade. Iniciativas como treinamentos regulares, workshops sobre melhores práticas e reconhecimento 
dos colaboradores que contribuem significativamente para o avanço da qualidade são fundamentais. 
Empresas como o Google têm liderado pelo exemplo, criando ambientes onde a inovação é incentivada, 
mas sem perder o foco na excelência do produto final.
112
Unidade III
Philip Crosby (1979), um renomado especialista em qualidade, afirmava considerar a qualidade como 
sendo a conformidade com os requisitos, ou seja, ela enfatiza a importância de estabelecer requisitos 
claros e garantir que todos na empresa estejam comprometidos a atendê-los, como forma de garantir a 
qualidade do produto de software que está sendo adquirido.
Um aspecto essencial da cultura de qualidade na organização é a liderança comprometida com a 
qualidade. Isso destaca a importância de os líderes da organização demonstrarem um compromisso 
claro com a qualidade e fornecerem o suporte necessário para garantir que os objetivos de qualidade 
sejam alcançados em toda a organização.
As boas práticas e tendências em qualidade de software refletem um compromisso com a excelência 
operacional e com a satisfação do cliente final. A adoção dessas práticas possibilita às organizações que 
otimizem seus processos internos e fortaleçam sua posição competitiva no mercado.
8.4 Gerenciamento de configuração de software
O gerenciamento de configurações no desenvolvimento de software é como um sistema de 
organização meticuloso e detalhado que garante que todas as peças do quebra-cabeça do projeto se 
encaixem corretamente. Imagine uma sala de arquivos bem organizada, onde cada documento, pasta e 
etiqueta têm um lugar designado e é cuidadosamente catalogado.
Nesse contexto, as configurações referem-se a todas as partes do projeto: o código-fonte, a 
documentação, os artefatos de desenvolvimento, os recursos de infraestrutura e até mesmo os ambientes 
de teste e produção. O objetivo do gerenciamento de configurações é garantir que todas essas partes 
sejam gerenciadas e controladas de maneira eficaz ao longo do ciclo de vida do desenvolvimento.
Para começar, é necessário definir cada elemento do projeto, atribuindo a ele um identificador único. 
É como rotular cada caixa em um armazém, para que você possa encontrar exatamente o que necessita 
quando precisar. Isso facilita a rastreabilidade e o controle das mudanças no decorrer do tempo.
Em seguida, entra o controle de versão, que é como uma linha do tempo detalhada do projeto. 
Cada alteração feita em qualquer parte do projeto é registrada e documentada, facilitando que você 
acompanhe quem fez quais alterações, quando e por quê. Isso é essencial para garantir a integridade e 
a consistência do sistema.
O gerenciamento de mudanças é como um sistema de autorização para qualquer alteração no 
projeto. Antes que uma modificação possa ser implementada, ela passa por um processo de revisão e 
aprovação para garantir que seja avaliada quanto ao seu impacto no sistema. Dessa forma, é possível 
evitar mudanças não planejadas e manter a estabilidade do projeto.
Assim, baselines e releases são como marcos no projeto. Quando uma parte do projeto atinge um 
estado estável e pronto para ser lançado, é criada uma baseline que serve como referência para essa 
versão específica do sistema. Da mesma forma, quando uma versão do software está pronta para ser 
entregue aos usuários, ela é liberada a partir de uma baseline específica, gerando, assim, uma release do 
113
QUALIDADE DE SOFTWARE
produto. Logo a baseline é uma versão do código que pode ou não ter a liberação para o usuário; já a 
release tem de ser uma versão de liberação para o usuário baseado em uma baseline.
Finalmente, a auditoria e o relatório são como uma verificação de qualidade contínua do projeto. 
Isso envolve a realização de auditorias regulares para garantir que os processos de gerenciamento de 
configurações estejam sendo seguidos corretamente, bem como a geração de relatórios para fornecer 
visibilidade sobre o estado e histórico do projeto.
O gerenciamento de configurações é como um guardião diligente que protege a integridade e a 
qualidade do projeto, garantindo que todas as partes estejam organizadas, controladas e gerenciadas de 
maneira eficaz durante o ciclo de vida do desenvolvimento de software.
8.4.1 Conceitos básicos de gerenciamento de configuração
O gerenciamento de configuração de software é uma disciplina da engenharia de software 
que se preocupa com a identificação, a organização e o controle das mudanças durante o ciclo de 
vida do software. Tal processo assegura que todos os aspectos do software em desenvolvimento 
sejam monitorados e mantidos sob controle, possibilitando a rastreabilidade e facilitando a gestão 
da qualidade.
Um dos principais objetivos do gerenciamento de configuração é endossar que o ambiente de 
desenvolvimento seja estável e previsível. Para isso, deve haver a manutenção de registros detalhados 
sobre as versões do software, incluindo todas as alterações realizadas, além de quem as fez e por quê. 
Essa prática não apenas ajuda na resolução eficiente de problemas, mas também facilita a colaboração 
entre equipes ao garantir que todos estejam trabalhando com as mesmas informações. Dessa forma, 
minimiza-se o risco de introduzir defeitos no produto final e garante-se que todas as alterações estejam 
alinhadas com os objetivos gerais do projeto.
Na prática, o gerenciamento de configuração pode envolver o uso de ferramentas especializadas 
que automatizam partes do processo, como sistemas de controle de versão (por exemplo, Git) pararastrear alterações no código-fonte, além de sistemas automatizados para construir e testar o 
software após cada modificação. São ferramentas que aumentam a eficiência e melhoram a precisão 
dos registros mantidos.
O gerenciamento de configuração é fundamental para manter a integridade e estabilidade do 
processo de desenvolvimento do software. Ao fornecer uma estrutura para controlar mudanças e 
garantir que elas sejam feitas de maneira ordenada e sistemática, ele desempenha um papel vital na 
entrega bem-sucedida de produtos de software confiáveis e de alta qualidade.
114
Unidade III
 Lembrete
O gerenciamento de configuração desempenha um papel crucial na 
gestão da qualidade do software ao estabelecer processos para a revisão e 
a aprovação das mudanças propostas antes que elas sejam implementadas.
 
8.4.2 Processo de gerenciamento de configuração
O processo de gerenciamento de configuração é uma metodologia estruturada que visa assegurar 
a integridade e a estabilidade do software durante seu ciclo de vida. Desse modo, ele abrange várias 
atividades críticas, como a identificação de configurações, o controle de mudanças, o registro e o 
relatório do estado das configurações, e a auditoria da configuração.
A identificação das configurações é o primeiro passo crucial para essa etapa, que envolve definir e 
documentar as características dos itens de configuração (ICs) dentro do projeto. Os ICs podem variar 
de documentos de requisitos a componentes específicos do código-fonte. A clara identificação desses 
itens facilita sua rastreabilidade no desenvolvimento projeto, viabilizando que as equipes compreendam 
exatamente quais versões estão sendo utilizadas em cada fase.
O controle de mudanças é outra área-chave dentro desse processo. Ele se refere à implementação 
rigorosa de procedimentos para solicitar, avaliar e aprovar alterações nos ICs. Por exemplo, quando um 
desenvolvedor propõe uma modificação no código-fonte, ela deve ser revisada por um comitê antes da 
implementação para garantir que não afetará negativamente outras partes do sistema, nem os objetivos 
gerais do projeto. Nessa etapa, ferramentas como sistemas de controle de versão são essenciais para 
registrar todas as alterações realizadas.
Também o registro e o relatório do estado das configurações são vitais para manter todos os 
stakeholders informados sobre o status atual dos ICs e quaisquer mudanças que ocorreram. Isso inclui a 
geração automática de relatórios detalhados sobre o histórico das modificações, quem as fez e por quê.
Por fim, a auditoria da configuração é uma prática importante que verifica se os ICs estão de acordo 
com os requisitos especificados, bem como se todas as mudanças foram adequadamente documentadas 
e autorizadas. As auditorias são importantes, pois podem ajudar a identificar discrepâncias ou problemas 
potenciais antes que eles impactem negativamente o projeto.
O processo de gerenciamento de configuração desempenha um papel crucial na manutenção da 
qualidade e integridade do software ao longo do seu desenvolvimento. Ao adotar uma abordagem 
sistemática para controlar mudanças e garantir a rastreabilidade dos ICs, as organizações evitam erros 
custosos e asseguram que seus projetos atendam aos padrões exigidos.
115
QUALIDADE DE SOFTWARE
8.4.3 Ferramentas e práticas recomendadas para o gerenciamento de configuração
O gerenciamento de configuração de software é uma disciplina que requer atenção meticulosa aos 
detalhes, processos bem definidos e ferramentas adequadas para ser eficaz. Nesse contexto, a escolha das 
ferramentas certas e a adoção de práticas recomendadas são fundamentais para garantir a integridade 
e a estabilidade do software ao longo do seu ciclo de vida.
No coração do gerenciamento de configuração estão as ferramentas que viabilizam as equipes 
controlar, registrar e auditar as mudanças no software. Sistemas de controle de versão como Git, SVN e 
Mercurial são indispensáveis, pois oferecem um meio robusto para rastrear alterações em código-fonte, 
documentação e outros itens críticos. Além disso, ferramentas como Jenkins ou Bamboo facilitam a 
integração contínua (CI) e a entrega contínua (CD), automatizando o processo de build e deploy, o que 
é crucial para manter a estabilidade do ambiente de produção.
Para complementar, plataformas como JIRA ou Trello podem ser utilizadas para gerenciar o fluxo de 
trabalho das mudanças propostas, desde sua solicitação até a implementação. É possível acompanhar 
de forma clara os status das mudanças, promovendo a comunicação eficaz entre os membros da equipe.
8.4.4 Práticas recomendadas
Além da seleção cuidadosa das ferramentas, adotar práticas recomendadas é vital para um 
gerenciamento eficaz da configuração. Uma dessas práticas é a implementação rigorosa do controle 
de mudanças, ou seja, é importante estabelecer um comitê de controle de mudanças (CCB) responsável 
por revisar todas as propostas de alteração antes da sua implementação. Assim, cada mudança pode ser 
avaliada quanto ao seu impacto potencial no projeto.
A automação dos testes também desempenha um papel crucial na manutenção da qualidade do 
software. Através da automação dos testes unitários, integrados e funcionais, as equipes podem detectar 
rapidamente regressões ou defeitos introduzidos por novas alterações.
Por fim, é fundamental realizar auditorias regulares da configuração para garantir que os itens 
estejam de acordo com a elaboração dos documentos do projeto e que todas as mudanças foram 
adequadamente reportadas e autorizadas. Essa abordagem é útil para identificar discrepâncias que 
podem resultar em problemas mais graves no futuro.
As empresas podem alcançar níveis mais altos de eficiência operacional e produtos finais com 
mais qualidade com a ajuda de ferramentas sofisticadas, bem como com técnicas recomendadas de 
gerenciamento de configuração.
116
Unidade III
 Saiba mais
Para aprofundar seus conhecimentos em gerenciamento de configuração 
de software, segue uma sugestão de leitura:
SWICEGOOD, T. Pragmatic version control using git. Raleigh: Pragmatic 
Bookshelf, 2008.
Em relação às ferramentas JIRA e Bamboo, você pode encontrar guias 
extensivos no site oficial da Atlassian. Também o blog de Martin Fowler apresenta 
artigos relevantes sobre práticas de integração contínua e entrega contínua.
Disponível em: https://www.atlassian.com/br. Acesso em: 5 jun. 2024.
Disponível em: https://martinfowler.com/. Acesso em: 5 jun. 2024.
8.5 Garantia da qualidade do software
A garantia da qualidade do software é o conjunto de procedimentos e atividades planejados e 
sistemáticos que uma organização implementa para garantir que os produtos de software atendam aos 
requisitos de qualidade definidos. Ela é uma parte importante do gerenciamento da qualidade e visa 
garantir que os produtos de software sejam entregues dentro do orçamento, no prazo e atendendo às 
expectativas dos clientes.
A partir desse conceito em mente, você verá que a garantia da qualidade do software é essencial para 
garantir que os produtos de software atendam aos requisitos de qualidade estabelecidos e proporcionem 
valor aos clientes. Ela abarca a definição de padrões de qualidade, processos e procedimentos, bem como 
a realização de revisões de qualidade e testes para garantir a conformidade com tais padrões. Uma 
abordagem sistemática e proativa para a garantia da qualidade é fundamental para o sucesso em longo 
prazo de um projeto de software.
8.5.1 Definição e importância da garantia da qualidade do software
A garantia da qualidade do software (GQS) é um conjunto de atividades planejadas e sistemáticas que 
são aplicadas no processo de desenvolvimento de software para assegurar que os produtos de software 
atendam aos requisitos especificados. A importância da GQS reside não apenas na entrega de um 
produto sem defeitos, mas também na prevenção de falhas, na redução dos custos de desenvolvimento 
e manutenção, e na melhoria contínua dos processos produtivos.
Umexemplo prático da importância da GQS pode ser observado no caso de software utilizado em 
sistemas críticos, como os sistemas de controle aéreo. Uma falha neles pode resultar em consequências 
catastróficas. Portanto, a garantia da qualidade, nesses contextos, vai além da funcionalidade do 
software, envolvendo aspectos como confiabilidade, segurança e disponibilidade.
117
QUALIDADE DE SOFTWARE
Além disso, a GQS desempenha um papel crucial na satisfação do cliente. Um produto de software 
com alta qualidade não apenas atende às expectativas do cliente em termos de funcionalidade, mas 
também oferece uma experiência de usuário superior, o que se traduz em maior fidelidade do cliente e 
vantagem competitiva no mercado.
No contexto atual onde o mercado está cada vez mais competitivo e as tecnologias evoluem 
rapidamente, a GQS é ainda mais relevante. Empresas que adotam práticas robustas de garantia da 
qualidade conseguem adaptar-se mais facilmente às mudanças tecnológicas e às exigências dos clientes, 
mantendo-se à frente dos concorrentes.
Para implementar efetivamente a GQS, as organizações devem adotar padrões e normas 
internacionais como ISO/IEC 25010:2011, que define modelos para avaliar a qualidade do produto de 
software ou o CMMI, o qual fornece um modelo para melhorar os processos organizacionais. Além disso, 
é fundamental promover uma cultura organizacional que valorize a qualidade em todos os aspectos do 
desenvolvimento de software.
8.5.2 Atividades e processos envolvidos na garantia da qualidade do software
A GQS é uma disciplina abrangente que engloba uma série de atividades e processos meticulosamente 
planejados para assegurar a excelência dos produtos de software. Essas atividades são fundamentais para 
identificar e corrigir falhas, prevenir defeitos, e garantir que o software atenda ou supere as expectativas 
dos usuários finais em termos de desempenho, confiabilidade e segurança.
Uma das principais atividades dentro da GQS é a revisão de código, que abarca a análise detalhada 
do código-fonte por outros desenvolvedores ou auditores, com o objetivo de identificar erros ou 
problemas potenciais que possam comprometer a qualidade do produto final. Além do aperfeiçoamento 
da qualidade do software, a revisão de código promove um ambiente colaborativo entre os membros da 
equipe, com o compartilhamento de conhecimento e práticas.
Outra atividade fundamental é o teste de software, que pode ser dividido em várias categorias: 
testes unitários, testes de integração, testes de sistema e testes de aceitação pelo usuário. Cada um deles 
tem como foco diferentes aspectos do software, desde a verificação das menores unidades de código 
até a avaliação da experiência geral do usuário. Os testes são essenciais para garantir que o software 
funcione conforme esperado em todas as situações previstas.
A implementação eficaz da GQS também depende fortemente da gestão de configuração, um 
processo destinado a manter o controle sobre as alterações no software durante todo o ciclo de 
desenvolvimento. Nesse ponto, é importante ter atenção ao versionamento adequado, controle rigoroso 
sobre as atualizações e modificações no código-fonte, bem como no gerenciamento eficiente dos 
artefatos produzidos durante o desenvolvimento. A gestão de configuração ajuda a evitar conflitos 
entre versões e assegura que todos na equipe estejam trabalhando com as mesmas informações.
118
Unidade III
Além dessas atividades específicas, uma abordagem holística para GQS envolve a adoção contínua 
das melhores práticas e padrões internacionais relevantes ao setor. Organizações bem-sucedidas 
frequentemente se baseiam em frameworks como ISO/IEC 25010:2011 ou CMMI para orientar seus 
esforços na garantia da qualidade. As normas fornecem diretrizes claras sobre como estruturar processos 
produtivos para alcançar altos níveis de qualidade no produto final.
No entanto, mais importante do que seguir rigidamente procedimentos padronizados, é cultivar uma 
cultura organizacional que valorize profundamente a qualidade em todas as etapas do desenvolvimento. 
Empresas líderes no campo tecnológico frequentemente relatam que sua dedicação à excelência começa 
muito antes da codificação propriamente dita, ela está enraizada nos valores centrais da organização e 
é refletida nas atitudes diárias dos seus colaboradores.
8.5.3 Métricas e indicadores para avaliar a qualidade do software
A avaliação da qualidade do software é um processo complexo que requer o uso de métricas e 
indicadores específicos, capazes de fornecer uma visão clara sobre a eficácia dos processos de 
desenvolvimento e a excelência do produto final. Essas métricas são ferramentas essenciais para 
gestores e equipes técnicas, possibilitando identificar áreas de melhoria, otimizar recursos e garantir a 
satisfação do usuário.
Uma das métricas mais relevantes na indústria de software é o MTBF, que mede a confiabilidade do 
software calculando o tempo médio entre falhas consecutivas durante um período determinado. Um 
MTBF alto indica um produto mais estável e confiável, aspecto crucial para softwares críticos como 
sistemas operacionais ou aplicativos bancários.
Outro indicador fundamental é a taxa de defeitos, que quantifica o número de problemas encontrados 
no software em relação ao seu próprio tamanho (geralmente medido em linhas de código). Essa métrica 
ajuda as equipes a entenderem a densidade de defeitos, facilitando o planejamento das atividades 
de teste e correção. Empresas líderes no setor tecnológico, como Google e Microsoft, a utilizam para 
priorizar esforços na garantia da qualidade.
O índice de satisfação do cliente é outra medida vital, refletindo diretamente a percepção dos 
usuários finais sobre o produto e pode ser obtido por meio de pesquisas ou feedbacks diretos, sendo um 
termômetro real da qualidade percebida. Produtos com altos índices de satisfação tendem a ter melhor 
aceitação no mercado e maior fidelidade dos clientes.
Além dessas métricas específicas, muitas organizações adotam frameworks como o CMMI ou normas 
como a ISO/IEC 25010:2011, que oferecem conjuntos completos de indicadores alinhados às melhores 
práticas internacionais. A implementação desses padrões propicia a medição e o aperfeiçoamento 
contínuo dos processos internos e da qualidade final dos produtos.
No contexto atual, onde softwares desempenham papéis cada vez mais críticos em diversas esferas da 
vida cotidiana, adotar uma abordagem sistemática para medição da qualidade tornou-se indispensável. 
Assim, as empresas que dominam o uso dessas métricas conseguem entregar produtos superiores e se 
destacar em um mercado altamente competitivo.
119
QUALIDADE DE SOFTWARE
 Saiba mais
Para aprofundar seus conhecimentos sobre métricas e indicadores de 
qualidade de software, seguem algumas sugestões de leitura:
HIRAMA, K. Engenharia de software: qualidade e produtividade com 
tecnologia. Barueri: LTC, 2011.
8.5.4 Testes de desempenho e carga
Os testes de desempenho e carga são fundamentais para garantir que um sistema ou aplicação 
possa suportar o volume de trabalho esperado sem comprometer a experiência do usuário. Eles simulam 
cenários reais de uso, possibilitando identificar gargalos e limitações do sistema antes que se tornem 
problemas críticos em um ambiente de produção.
A importância desses testes reside na capacidade de prever o comportamento do software sob 
condições extremas, como um grande número de acessos simultâneos ou processamento intensivo de 
dados. Isso é crucial não apenas para sistemas web voltados ao consumidor final, mas também para 
aplicações empresariais nas quais a eficiência e a estabilidade são essenciais para as operações diárias.
Um exemplo prático da importância desses testes pode ser observado em eventos de venda 
online, como a Black Friday. Sites que não foram adequadamente testados podem sofrer quedas ou 
apresentar desempenho insatisfatório sob alta demanda, resultando em perda direta de receita e danos 
àreputação da marca. Por outro lado, uma plataforma bem preparada pode lidar com picos de acesso 
sem comprometer a velocidade ou funcionalidade, proporcionando uma experiência positiva ao usuário.
Além disso, os testes de desempenho e carga fornecem insights valiosos sobre a escalabilidade do 
sistema. Eles ajudam a determinar se será necessário aumentar recursos como memória, CPU ou largura 
de banda à medida que o número de usuários cresce. A posse dessa informação é determinante para o 
planejamento estratégico e orçamentário.
Os testes de desempenho e carga são essenciais para qualquer projeto digital que aspire à excelência 
operacional e satisfação do cliente, pois propiciam às organizações antecipar problemas potenciais, 
otimizar recursos e garantir uma experiência superior ao usuário final.
8.5.5 Planejamento e estratégias para os testes de desempenho e carga
O planejamento cuidadoso e a definição de estratégias adequadas são etapas cruciais para a realização 
eficaz dos testes de desempenho e carga. É na fase inicial que se define o escopo do teste, os objetivos 
específicos, as métricas de sucesso, além da seleção das ferramentas e tecnologias a serem utilizadas. 
Um planejamento bem elaborado garante que os testes estejam alinhados com as necessidades reais do 
negócio, de forma abrangente.
120
Unidade III
Uma estratégia eficiente começa com a compreensão profunda do sistema ou da aplicação a ser 
testada. Assim, é necessário conhecer a arquitetura, as dependências externas, os fluxos críticos de 
trabalho e os possíveis pontos de falha. A partir dessa compreensão, é possível criar cenários de teste 
realistas que simulam o comportamento esperado dos usuários finais sob diversas condições de carga.
A definição clara dos objetivos dos testes é outro aspecto fundamental, pois eles podem verificar 
desde a capacidade máxima suportada pelo sistema até identificar o tempo médio de resposta sob 
diferentes níveis de carga. Objetivos bem definidos ajudam na criação de benchmarks claros contra os 
quais o desempenho real pode ser medido.
Na mesma linha, selecionar as ferramentas certas é igualmente importante. Com várias opções 
disponíveis no mercado, a escolha deve considerar não apenas as capacidades técnicas da ferramenta, 
mas também sua compatibilidade com o ambiente tecnológico existente e a facilidade de integração 
com outras ferramentas já em uso pela equipe.
Uma estratégia robusta deve incluir planos para análise detalhada dos resultados dos testes. Isso 
envolve identificar gargalos ou problemas de desempenho, bem como entender suas causas raízes para 
que possam ser corrigidas de forma eficiente. Além disso, essa análise contribui para um ciclo contínuo 
de melhoria, no qual insights obtidos podem informar futuros ciclos de desenvolvimento e teste.
Por fim, um planejamento meticuloso, combinado a estratégias bem definidas, é essencial para garantir 
que os testes de desempenho e carga sejam conduzidos de maneira eficiente e eficaz. Essa combinação 
contribui para otimizar recursos e melhorar continuamente a qualidade do software entregue.
8.5.6 Ferramentas e técnicas para realizar os testes de desempenho e carga
Os testes de desempenho e carga são essenciais para garantir que aplicações web e sistemas 
operacionais possam suportar o volume de acessos esperado, mantendo a qualidade e a estabilidade. 
A escolha das ferramentas certas, combinada a técnicas eficazes, é crucial para o sucesso desses testes.
Diversas ferramentas se destacam no mercado quando o assunto é teste de desempenho e carga. 
JMeter, uma ferramenta open-source da Apache, é amplamente utilizada por sua capacidade de simular 
cargas pesadas em diferentes aplicações para analisar o desempenho geral. Outra opção robusta é o 
LoadRunner da Micro Focus, conhecido pela precisão nas simulações de ambientes virtuais complexos. 
Para equipes que preferem uma solução baseada em nuvem, o BlazeMeter oferece compatibilidade com 
JMeter, além de recursos avançados como testes de API e de integração contínua.
A eficácia dos testes não depende apenas das ferramentas escolhidas, mas também das técnicas 
aplicadas durante o processo. Uma abordagem valiosa é a modelagem de usuários virtuais que imitam 
comportamentos reais dos usuários finais, possibilitando uma análise mais precisa do desempenho 
sob condições variáveis. Além disso, a implementação de testes em etapas progressivas, com aumento 
gradual da carga até alcançar ou ultrapassar os limites esperados do sistema, ajuda na identificação 
precisa de gargalos.
121
QUALIDADE DE SOFTWARE
A fase posterior à execução dos testes é crítica, trata-se do momento de uma análise detalhada 
dos resultados coletados, em que se busca entender as causas raízes dos gargalos identificados – seja 
na codificação ineficiente, ou em problemas na infraestrutura, ou na configuração inadequada do 
ambiente. Assim, ferramentas como Grafana ou Kibana podem ser integradas para visualizar dados em 
tempo real, facilitando a identificação rápida de problemas.
Um conjunto bem selecionado de ferramentas aliado a técnicas refinadas pode elevar 
significativamente a qualidade dos testes de desempenho e carga. A chave está em adaptar esses 
recursos às necessidades específicas do projeto, garantindo assim resultados confiáveis que contribuam 
para otimizações significativas no desempenho das aplicações.
 Saiba mais
Para aprofundar seus conhecimentos a respeito de testes de desempenho 
e carga, seguem alguns links para você explorar tais recursos:
JMeter. Disponível em: https://jmeter.apache.org/. Acesso em: 5 jun. 2024.
OPENTEXT. OpenText LoadRunner Professional. [s.d.]. Disponível em: 
https://tinyurl.com/mr44b4nt. Acesso em: 5 jun. 2024.
Blog BlazeMeter. Disponível em: https://www.blazemeter.com/. Acesso 
em: 5 jun. 2024.
Além disso, tutoriais sobre Grafana e Kibana podem ser úteis para 
aprender sobre análise dedados. Essas fontes são essenciais para quem busca 
excelência na área de testes de desempenho.
GRAFANA. Grafana tutorials. [s.d.]. Disponível em: https://tinyurl.com/659ncmrr. 
Aceso em: 1º jul. 2024.
ELASTIC. Kibana: descubra, itere e resolva com ES|QL no Kibana. [s.d.]. 
Disponível em: https://tinyurl.com/hcn7m3ff. Acesso em: 1º jul. 2024.
 
122
Unidade III
8.6 Testes de segurança do software
Os testes de segurança do software são uma parte fundamental da garantia da qualidade e têm 
como objetivo identificar vulnerabilidades, ameaças e riscos que podem comprometer a segurança. 
Esses testes são essenciais para prevenir ataques maliciosos, proteger dados sensíveis e assegurar a 
confiabilidade e integridade das aplicações. A abordagem dos testes de segurança envolve uma série 
de práticas específicas, como análise estática e dinâmica do código, testes de penetração, revisões de 
código e modelagem de ameaças.
A análise estática, também conhecida como SAST (Static Application Security Testing), possibilita 
aos desenvolvedores identificar vulnerabilidades no código-fonte antes mesmo da execução do 
programa. Por outro lado, a análise dinâmica ou DAST (Dynamic Application Security Testing) avalia o 
comportamento do aplicativo durante sua execução, identificando falhas em tempo real. Os testes de 
penetração simulam ataques externos ao sistema para descobrir pontos fracos exploráveis por hackers.
Um exemplo notável da importância dos testes de segurança é o caso do Heartbleed Bug em 
2014. Este bug afetou milhões de websites que utilizavam a versão vulnerável da biblioteca OpenSSL. 
O Heartbleed permitia aos atacantes ler informações protegidas pela criptografia SSL/TLS, expondo 
dados sensíveis dos usuários. Tal incidente destaca a necessidade crítica de realizar testes de segurança 
abrangentes para identificar e corrigir vulnerabilidades antes que elas sejam exploradas.
Além disso, os testes não se limitam apenas à fase de desenvolvimento, eles devem ser contínuos 
para se adaptar às novas ameaças emergentes. A implementação eficaz dos testes de segurançarequer 
uma combinação equilibrada entre ferramentas automatizadas e expertise humana especializada para 
interpretar os resultados dos testes e tomar as medidas corretivas necessárias.
Os conceitos básicos sobre os testes de segurança do software englobam um conjunto diversificado 
de técnicas projetadas para fortalecer as aplicações contra invasões mal-intencionadas. Ao integrar 
essas práticas no processo de desenvolvimento, as organizações podem melhorar significativamente a 
postura geral de segurança dos seus sistemas digitais.
8.6.1 Tipos de testes de segurança do software
Teste de penetração
O teste de penetração, ou pen test (do inglês), é uma abordagem proativa e ofensiva para identificar 
as vulnerabilidades de um sistema. Esse tipo de teste simula ataques cibernéticos contra o software para 
descobrir pontos fracos que possíveis invasores poderiam explorar. Diferentemente das análises estáticas 
e dinâmicas, que se concentram no código-fonte e na execução do programa, respectivamente, o teste 
de penetração avalia a aplicação em um ambiente que imita condições reais de ataque.
Um exemplo notável da eficácia do teste de penetração foi a descoberta da vulnerabilidade no 
protocolo WPA2 em 2017.
123
QUALIDADE DE SOFTWARE
Pesquisadores realizaram um ataque bem-sucedido chamado KRACK (Key Reinstallation Attacks), 
expondo uma falha crítica na forma como dispositivos se comunicam em redes Wi-Fi protegidas pelo 
WPA2. Esse caso destaca a importância dos testes de penetração para antecipar e mitigar riscos antes 
que eles sejam explorados maliciosamente.
A metodologia do teste de penetração pode ser dividida em várias fases, incluindo reconhecimento, 
varredura, ganho de acesso, manutenção do acesso e análise dos resultados. Cada fase é crucial para 
entender profundamente como um atacante penetra no sistema e quais medidas são tomadas para fortalecer 
a segurança.
Teste de vulnerabilidade
O teste de vulnerabilidade foca na identificação sistemática das vulnerabilidades presentes no 
software sem necessariamente explorá-las. Utilizando ferramentas automatizadas e manuais, os 
testadores examinam o sistema em busca de falhas conhecidas que possam comprometer a segurança. 
Ao contrário do teste de penetração, o objetivo aqui não é simular um ataque realista, mas garantir que 
todas as vulnerabilidades potenciais sejam identificadas e catalogadas.
Um aspecto fundamental desse tipo de teste é sua capacidade de ser integrado ao ciclo contínuo de 
desenvolvimento do software (CI/CD), propiciando uma detecção precoce e a correção das falhas antes 
da implantação final do produto. Empresas como a Microsoft têm adotado práticas semelhantes com 
seu modelo Shift Left, movendo os testes para as fases iniciais do desenvolvimento a fim de melhorar a 
qualidade e segurança dos seus produtos.
A eficiência dos testes de vulnerabilidade depende significativamente da atualização constante das 
ferramentas utilizadas, pois novas vulnerabilidades são descobertas diariamente. A integração desses 
testes com bancos de dados atualizados com ameaças conhecidas possibilita uma cobertura mais ampla 
contra possíveis ataques.
A segurança do software não é responsabilidade exclusiva da equipe de segurança, ela deve ser 
uma preocupação compartilhada por todos os stakeholders envolvidos no desenvolvimento e na 
operação. Isso inclui desenvolvedores, gerentes de projeto, equipes de QA (Quality Assurance), usuários 
finais e até mesmo fornecedores terceirizados. Promover uma cultura organizacional que valorize a 
segurança como um componente integral da qualidade do software pode ajudar a garantir que todos 
estejam alinhados com as melhores práticas e comprometidos com a manutenção da segurança.
A realização esporádica dos testes de segurança não é suficiente para garantir a proteção contínua 
contra ameaças emergentes. Assim, eles devem ser realizados regularmente, seguindo um cronograma 
definido, ou sempre que houver mudanças significativas no código ou na infraestrutura subjacente 
ao software. Essa prática ajuda a identificar rapidamente novas vulnerabilidades introduzidas por 
atualizações ou modificações no sistema, possibilitando correções ágeis antes que essas falhas possam 
ser exploradas maliciosamente.
124
Unidade III
 Saiba mais
Para aprofundar seus conhecimentos sobre as melhores práticas em 
testes de segurança do software, segue uma sugestão de leitura:
STUTTARD, D.; PINTO, M. The web application hacker’s handbook: finding 
and exploiting security flaws. New Jersey: Wiley, 2011.
 
8.7 Manutenção e evolução do software
8.7.1 Ciclo de vida da manutenção e evolução do software
A manutenção e a evolução do software são etapas cruciais no ciclo de vida de qualquer sistema, 
garantindo que ele permaneça funcional, relevante e eficiente ao longo do tempo. Essas atividades 
começam após o lançamento inicial do software e continuam durante todo o período de sua utilização. 
A compreensão profunda desses processos é fundamental para assegurar a qualidade e a satisfação do 
usuário final.
O ciclo de vida da manutenção e evolução do software pode ser dividido em várias fases, incluindo 
a identificação de necessidades de mudança, a implementação dessas alterações, os testes para garantir 
que as modificações não geraram novos defeitos, e o lançamento das versões atualizadas para os 
usuários. Como é possível perceber, o ciclo é iterativo, então cada rodada de manutenção proporciona 
uma oportunidade para melhorar o software.
Entretanto, a gestão eficaz das solicitações de mudança exige muita atenção. Assim, deve-se avaliar 
o impacto potencial das modificações propostas e priorizá-las de acordo com critérios já definidos, 
como urgência e importância, e planejar sua implementação de maneira que minimize a interrupção 
dos serviços existentes. Ferramentas modernas de rastreamento de problemas e sistemas de controle de 
versão desempenham um papel vital nesse aspecto, possibilitando uma gestão eficiente das mudanças.
Além disso, a evolução do software frequentemente exige uma reavaliação dos requisitos originais 
a partir das novas condições ou tecnologias emergentes. Isso leva à refatoração ou à reestruturação 
significativa do código existente para aperfeiçoar a performance ou facilitar a adição de novas 
funcionalidades. Exemplos notáveis incluem a transição para arquiteturas baseadas em microsserviços 
ou a adoção de práticas DevOps para acelerar os ciclos de lançamento.
Por fim, é essencial reconhecer que manutenção e evolução eficazes exigem um compromisso 
contínuo com as melhores práticas em engenharia de software e gerenciamento da qualidade, com 
técnicas avançadas de programação e teste, bem como uma cultura organizacional que valoriza feedback 
constante, aprendizado contínuo e melhoria incremental.
125
QUALIDADE DE SOFTWARE
8.7.2 Manutenção corretiva
A manutenção corretiva é essencialmente reativa, focada na correção de defeitos identificados no 
software após sua implantação. Esse tipo de manutenção é crucial para a estabilidade e a confiabilidade 
do sistema, pois possibilita que falhas inesperadas sejam prontamente resolvidas. Assim, uma abordagem 
eficaz para a manutenção corretiva abarca várias etapas, a começar pela coleta e análise detalhada dos 
relatórios de erro fornecidos pelos usuários ou sistemas de monitoramento automatizados.
O uso de sistemas de rastreamento debugs é uma técnica comum empregada nessa área, pois 
viabiliza uma gestão organizada das falhas reportadas, facilitando a priorização e a alocação de recursos 
para sua correção. Além disso, práticas como programação em par ou revisões de código podem ser 
utilizadas para aumentar a qualidade da solução implementada e reduzir o risco de gerar novos erros 
durante o processo.
Em empresas que adotam metodologias ágeis, onde a correção de bugs é frequentemente integrada 
a sprints regulares, é observada essa abordagem, uma vez que possibilita uma resposta rápida às 
necessidades dos usuários sem comprometero desenvolvimento contínuo do produto.
8.7.3 Manutenção adaptativa
A manutenção adaptativa lida com as alterações necessárias para fazer o software operar 
eficientemente em um ambiente modificado ou atualizado. A partir disso, é possível encontrar 
atualizações no sistema operacional, mudanças nas políticas externas ou evoluções tecnológicas que 
exijam ajustes no software para manter sua funcionalidade e desempenho.
Para garantir que o software permaneça funcional mesmo quando o ambiente operacional ou 
tecnológico muda, a manutenção adaptativa requer uma abordagem proativa. É importante manter o 
monitoramento contínuo do ambiente externo, o que inclui ajustes nos sistemas operacionais, mudanças 
nas políticas regulatórias e desenvolvimentos tecnológicos que possam afetar o software.
Já a análise preditiva é uma ferramenta avançada usada para antecipar as necessidades de adaptação 
no futuro, possibilitando às equipes que planejem com antecedência as mudanças necessárias. 
A arquitetura baseada em microsserviços também fornece maior flexibilidade para atualizações rápidas 
e isoladas sem afetar todo o sistema.
Um caso notável é o da transição para IPv6 em muitos sistemas online, exigindo uma revisão 
cuidadosa das funções relacionadas à rede nos softwares existentes para assegurar compatibilidade sem 
sacrificar performance ou segurança.
Não somente nesse caso, mas em muitos outros, a manutenção adaptativa desempenhou um papel 
crucial na transição para IPv6 em muitos sistemas online, garantindo compatibilidade, desempenho e 
segurança sem interromper as operações existentes. A abordagem proativa e sistemática da manutenção 
adaptativa foi essencial para garantir uma transição suave e bem-sucedida para IPv6.
126
Unidade III
8.7.4 Manutenção preventiva de software
A manutenção preventiva ajuda a evitar problemas futuros de software aperfeiçoando o código e 
a estrutura do sistema antes que eles ocorram. Essa abordagem proativa de manutenção pode reduzir 
significativamente os custos ao longo prazo, pois evita os custosos reparos de emergência e evita 
interrupções imprevistas.
A atualização constante das bibliotecas e frameworks utilizados pelo software para versões mais 
recentes e seguras, além da refatoração regular do código são métodos eficazes, pois promovem 
uma arquitetura flexível, capaz de se adaptar facilmente às mudanças sem grandes dificuldades. 
A  implementação de padrões de design sólidos também contribui significativamente para 
esse objetivo.
Desse modo, a manutenção preventiva é fundamental porque possibilita às organizações que 
desenvolvam uma cultura de excelência e inovação antes que os defeitos surjam. As empresas podem 
descobrir vulnerabilidades ou partes obsoletas no código de forma precoce, implementando técnicas 
como análise estática do código-fonte com frequência.
O uso extensivo da automação nos processos de teste também é vital nessa estratégia, propiciando 
a execução frequente dos testes regressivos sem sobrecarga adicional para as equipes. Ferramentas 
modernas, como Selenium ou Jenkins, podem ser integradas ao ciclo CI/CD para garantir que cada nova 
linha do código seja verificada quanto à qualidade e segurança antes da implantação.
A manutenção preventiva de software é uma abordagem proativa e sistemática que visa 
evitar problemas, além de garantir que os sistemas funcionem continuamente e de forma eficaz. 
As  organizações podem reduzir custos e minimizar interrupções operacionais ao investir na 
manutenção  preventiva, aumentando a confiabilidade, desempenho e segurança de seus sistemas. 
A manutenção preventiva também ajuda as equipes de desenvolvimento a assegurar a longevidade e o 
valor contínuo dos sistemas de software, identificando e corrigindo possíveis falhas. Em um mundo em 
constante mudança tecnológica, a manutenção preventiva é essencial para sustentar a competitividade 
das organizações e, assim, obtenham sucesso em longo prazo, a partir de uma base sólida para a inovação 
e o crescimento contínuo.
 Saiba mais
Para compreender melhor sobre as práticas de manutenção de software, 
incluindo manutenção corretiva, adaptativa e preventiva, seguem algumas 
sugestões de leitura:
FOWLER, M. Refatoração: aperfeiçoando o design de códigos existentes. 
São Paulo: Novatec, 2020.
127
QUALIDADE DE SOFTWARE
HUMBLE, J.; FARLEY, D. Continuous delivery: reliable software 
releases through build, test, and deployment automation. Boston: 
Addison-Wesley, 2010.
MURPHY, N. R. et al. Site reliability engineering: how google runs 
production systems. Massachusetts: O’Reilly, 2016.
NEWMAN, S. Building microservices: designing fine-grained systems. 
Massachussetts: O’Reilly, 2015.
 
8.7.5 Manutenção corretiva de software
A manutenção corretiva, embora reativa por natureza, desempenha um papel fundamental na 
sustentação da confiabilidade e estabilidade de sistemas de software. Uma estratégia eficiente para essa 
modalidade de manutenção começa com a implementação de um robusto sistema de rastreamento de 
erros, que não apenas facilita a identificação e correção dos bugs, mas também ajuda a analisar padrões 
de falhas recorrentes.
Além disso, a adoção de práticas de CI/CD, por exemplo, pode transformar significativamente o 
processo de manutenção corretiva. Por meio dessas práticas, as equipes podem automatizar testes e 
implantações, possibilitando que os problemas sejam detectados e corrigidos mais rapidamente. Empresas 
como Netflix e Amazon são exemplos notáveis que utilizam CI/CD para garantir alta disponibilidade e 
confiabilidade em seus serviços.
Outro aspecto crucial é o investimento em treinamento e desenvolvimento profissional das equipes 
de manutenção. A capacitação contínua em novas tecnologias e metodologias pode preparar melhor os 
profissionais para enfrentar desafios complexos na correção de bugs, além de incentivar uma cultura de 
aperfeiçoamento contínuo.
Assim, a manutenção corretiva de software é fundamental para resolver problemas e falhas em 
sistemas de software existentes, sendo responsabilidade das equipes de desenvolvimento garantirem 
a continuidade das operações e a satisfação dos usuários finais respondendo a defeitos e incidentes 
de forma rápida e eficiente. Ela também contribui na manutenção da qualidade e confiabilidade dos 
sistemas de software e reduz os efeitos de problemas inesperados. No entanto, para garantir uma 
abordagem abrangente e proativa à gestão da qualidade de software, a manutenção corretiva deve ser 
complementada por outras formas de manutenção, como a preventiva e a adaptativa. A capacidade 
de resolver problemas rapidamente e garantir a estabilidade dos sistemas de software é essencial 
para o sucesso das organizações e a satisfação dos clientes em um mundo cada vez mais dependente 
de tecnologia.
128
Unidade III
8.8 Gestão ágil em projetos de desenvolvimento de software
Outra boa prática que vem revolucionando a indústria de construção de software e, por consequência, 
alterando a forma como gerenciamos a qualidade de nossos softwares é a de metodologias ágeis.
A gestão ágil de projetos de desenvolvimento de software é uma abordagem flexível e colaborativa 
que visa maximizar a entrega de valor aos clientes em um ambiente de desenvolvimento de software 
em constante mudança. Ela prioriza indivíduos e interações, fornece software funcional e possibilita a 
adaptação contínua aos requisitos mutáveis do projeto, em contraste com metodologias tradicionais, 
que se concentram em processos e documentação extensos. Devido à sua capacidade de promover a 
colaboração, a transparência e a rapidez na entrega de software de alta qualidade, atendendo às demandas 
dinâmicas do mercado e às expectativas dos clientes, a gestão ágil tem se tornado cada vez mais popular.
8.8.1 Conceitos básicos de gestão ágil em projetos de desenvolvimento de software
A gestão ágil em projetos de desenvolvimento de software é uma abordagem que enfatiza a 
flexibilidade, a colaboração entre equipes e clientes,e a entrega contínua de valor. Diferentemente 
dos métodos tradicionais, que seguem um plano rigoroso e sequencial, a gestão ágil possibilita ajustes 
frequentes ao escopo do projeto com base no feedback dos stakeholders e nas mudanças do mercado.
Um dos seus pilares é o Manifesto Ágil, criado em 2001 por um grupo de desenvolvedores experientes. 
O documento destaca que valores como indivíduos e interações valem mais que processos e ferramentas; 
software funcionando vale mais que uma documentação abrangente; a colaboração com o cliente mais 
que a negociação de contratos; e responder a mudanças mais que seguir um plano.
Na prática, isso se traduz em várias metodologias específicas, como Scrum, Kanban e Extreme 
Programming (XP), cada uma com suas particularidades, mas todas compartilham os mesmos 
princípios fundamentais. Por exemplo, o Scrum divide o projeto em ciclos chamados sprints, onde 
cada um deles tem uma duração fixa na qual um conjunto pré-definido de funcionalidades deve ser 
desenvolvido e entregue.
Outro aspecto importante da gestão ágil é a ênfase na comunicação eficaz. Reuniões diárias curtas 
(daily meetings) são realizadas para discutir progressos, identificar impedimentos e planejar as atividades 
do dia. Essas reuniões promovem transparência e possibilitam ajustes rápidos à estratégia do projeto 
conforme necessário.
A adoção da gestão ágil tem demonstrado resultados significativos em termos de produtividade 
e satisfação do cliente. Empresas como Spotify e Netflix são exemplos notáveis de organizações que 
implementaram práticas ágeis para inovar enquanto mantêm alta qualidade nos seus produtos digitais. 
A capacidade de adaptar-se rapidamente às mudanças não apenas proporciona vantagem competitiva, 
mas também alinha os esforços do desenvolvimento com as necessidades reais dos usuários finais.
129
QUALIDADE DE SOFTWARE
Scrum: flexibilidade e entrega contínua
O Scrum é uma das metodologias ágeis mais populares no desenvolvimento de software, caracterizada 
por sua estrutura iterativa e incremental. A base do Scrum é o sprint, um período fixo (geralmente de 
duas a quatro semanas) durante o qual uma equipe trabalha para completar um conjunto específico 
de funcionalidades. O sucesso do Scrum reside na sua capacidade de facilitar a adaptação rápida às 
mudanças, promovendo a colaboração intensa entre todos os envolvidos no projeto.
Um aspecto distintivo do Scrum é a definição clara de papéis: o product owner é responsável 
por maximizar o valor do produto; o scrum master assegura que o processo está sendo seguido 
corretamente e ajuda a equipe a remover impedimentos; e a equipe de desenvolvimento implementa as 
funcionalidades. Esses papéis criam uma estrutura que viabiliza a eficiência e a flexibilidade.
Além disso, reuniões regulares são essenciais no Scrum. As daily scrums ajudam a equipe a se manter 
alinhada sobre o progresso e os desafios enfrentados. As revisões de sprint possibilitam apresentar as 
funcionalidades desenvolvidas aos stakeholders, enquanto as retrospectivas de sprint oferecem um 
momento para reflexão interna da equipe sobre como melhorar seus processos.
Product owner
Development team
Daily scrum
Product 
backlog
refinemet
Potentially
releasable
increment
Iterative-incrementalIterative-incremental
development development && delivery delivery
Sprint
review
Scrum
master
Sprint
(max 1 month)
Sprint
retrospective
Sprint
backlog
Team forecasts
work needed 
to achieve
sprint goal
11
22
33
44
55
66
77
88
99
1010
1111
1212
1313
1414
1515
PB
I
PB
I’s’s
Product
backlog
Sprint
planning
Topic 1: forecast PBI’s
Topic 2: plan work (e.g. tasks)
Stakeholder liaison
Figura 22 – Como funciona o Scrum
Disponível em: https://tinyurl.com/5v5kf4vs. Acesso em: 6 jun. 2024.
Empresas como Google e Amazon utilizam o Scrum não apenas pelo seu potencial em acelerar o 
desenvolvimento de produtos, mas também pela contribuição na criação de uma cultura organizacional 
voltada à inovação contínua e ao aprendizado constante.
130
Unidade III
Kanban: visualização do fluxo de trabalho
O Kanban é outra metodologia ágil amplamente adotada, conhecida por sua simplicidade e foco 
na gestão visual do trabalho. Originário do sistema Toyota de produção just-in-time, ele utiliza cartões 
(ou kanbans) para representar tarefas em um quadro dividido em colunas que representam diferentes 
estágios do processo de desenvolvimento.
A principal vantagem do Kanban é proporcionar uma visão clara do fluxo de trabalho atual, com a 
possibilidade de identificar gargalos e priorizar tarefas com maior eficiência. Ao contrário do Scrum, não 
há sprints; o trabalho flui continuamente de acordo com o andamento da equipe. Isso torna o Kanban 
particularmente adequado para ambientes onde os requisitos mudam frequentemente, ou para projetos 
com demandas imprevisíveis.
Figura 23 – Quadro de Kanban
Disponível em: https://tinyurl.com/j8xuwm2t. Acesso em: 6 jun. 2024.
Um desafio significativo é evitar o acúmulo excessivo de trabalho em progresso (WIP), o que pode 
levar à sobrecarga da equipe e diminuir a qualidade geral. Para enfrentar isso, é crucial estabelecer 
limites claros para WIP em cada estágio do fluxo de trabalho. Além disso, as equipes devem se esforçar 
para identificar gargalos no processo rapidamente, utilizando dados visuais fornecidos pelo quadro 
Kanban com o objetivo de tomar decisões informadas sobre priorizações.
O Kanban enfatiza princípios como limitação do WIP, fluxo contínuo e melhoria contínua (Kaizen). 
Ao limitar WIP, equipes podem se concentrar em concluir tarefas antes de iniciar novas, melhorando 
assim a qualidade geral e reduzindo os tempos de entrega.
131
QUALIDADE DE SOFTWARE
Empresas como Spotify têm integrado princípios Kanban em suas operações para aumentar a 
transparência entre equipes multidisciplinares e otimizar seus processos produtivos. A flexibilidade 
oferecida pelo Kanban facilita ajustes rápidos às prioridades dos projetos sem comprometer os 
resultados finais.
Melhores práticas também incluem a realização regular de reuniões Kaizen para revisão dos 
processos atuais e a identificação de oportunidades para melhorias incrementais. Assim como Spotify, 
empresas que demonstram como integrar princípios Kanban podem aumentar significativamente a 
transparência entre equipes multidisciplinares e otimizar processos produtivos. Ao adotarem essas 
práticas, organizações ajustam suas prioridades rapidamente sem comprometer os resultados finais, 
mantendo um alto nível de adaptabilidade em ambientes dinâmicos.
 Saiba mais
Para aprofundar seus conhecimentos sobre Scrum e Kanban, seguem 
algumas sugestões de leitura:
ANDERSON, D. J. Kanban: mudança evolucionária de sucesso para seu 
negócio de tecnologia. Washington D.C.: Blue Hole Press, 2011.
COHN, M. Agile estimating and planning. London: Pearson, 2005.
SUTHERLAND, J. Scrum: a arte de fazer o dobro do trabalho na metade do 
tempo. Rio de Janeiro: Sextante, 2019.
Artigos e estudos de caso no site oficial da Scrum Alliance.
Disponível em: https://www.scrumalliance.org/. Acesso em: 6 jun. 2024.
Artigos e estudos de caso no site oficial do Kanban University.
Disponível em: https://kanban.university/. Acesso em: 6 jun. 2024.
 
8.9 Qualidade do software na nuvem
O conceito de software em nuvem vem se tornando popular nos últimos tempos e é interessante 
que o futuro profissional da qualidade de software tenha uma breve introdução sobre o assunto.
À medida que mais empresas adotam soluções baseadas em nuvem para hospedar e executar seus 
aplicativos e serviços, a qualidade do software na nuvem ganha importância no cenário tecnológico 
atual. A transição para a nuvem trouxe novas oportunidades e desafios para a garantia da qualidade do 
software, como escalabilidade, desempenho, confiabilidade e segurança. Para garantir que os aplicativos 
132
Unidade III
e serviços baseados em nuvem atendam aos mais altos padrões de qualidade e satisfação do usuário, 
discutiremos a

Mais conteúdos dessa disciplina