ENGENHARIA DE SOFTWARE VS.
QUALIDADE
Crise do software:
A maior causa da crise do software é que as máquinas se
tornaram várias ordens de magnitude mais potentes! Em termos
diretos, enquanto não havia máquinas, programar não era um
problema; quando tivemos computadores fracos, isso se tornou
um problema pequeno, e agora que temos computadores
gigantescos, programar tornou-se um problema gigantesco.
Engenharia de software em camadas:
- Qualidade: A camada qualidade garante que os requisitos que
atendem às expectativas do usuário serão cumpridos.
- Processo: A camada de processo determina as etapas de
desenvolvimento do software.
- Métodos: A camada de métodos define os artefatos gerados em
função da técnica de modelagem adotada.
- Ferramentas: A camada ferramentas estimula a utilização de
ferramentas CASE.
Neste módulo, destacamos a importância da qualidade no contexto da
engenharia de software. Vimos que a qualidade de software possui
duas dimensões: processo e produto.
A qualidade do processo exige a definição prévia de um processo de
desenvolvimento de software que viabilize a sua aplicação.
Nessa dimensão, são aplicados os testes de verificação nos artefatos
gerados nas diversas etapas do processo de software, com o objetivo de
impedir a propagação de defeitos nas etapas posteriores do referido
processo.
A qualidade do produto é aplicada ao software na etapa de codificação
do processo de software. A partir de um plano de testes, são aplicados os
testes de validação ou testes de software, que validam desde a estrutura
interna de uma unidade de software até as funcionalidades por parte dos
usuários.
EX: 1. Considerando os conceitos relacionados com a qualidade de
software, preencha as lacunas nas afirmações abaixo.
1) ______________ é um lapso humano que resulta em um software
incorreto.
2) ______________ é uma anomalia no produto.
3) ______________ ocorre quando uma unidade funcional de um sistema
relacionado a um software não mais consegue desempenhar as funções
necessárias ou deixa de operar dentro dos limites especificados.
As lacunas estão correta e respectivamente preenchidas em:
R:Erro; defeito e falha.
2. (Petrobras Transporte SA ‒Transpetro ‒ Analista de Sistemas ‒
Negócios ‒ CESGRANRIO ‒ 2018). O custo da qualidade inclui todos os
custos feitos na busca da qualidade, dividindo-se em custos de
prevenção, de avaliação e de falha, interna e externa. Entre os custos de
prevenção está o das atividades de: R: Gerência
para planejar e coordenar todas as atividades de controle e garantia de
qualidade.
os tipos de padrões de software que podem ser estabelecidos pela equipe
de qualidade:
- Padrões de produto: Inclui padrões de documentação
- Padroes de processo: Definem os processos que devem ser
seguidos durante o desenvolvimento de software
1. (Defensoria Pública do Estado do Rio de Janeiro ‒ DPE-RJ ‒
Analista ‒ Tecnologia da Informação ‒ FGV-2019) A empresa
“Armazéns do João”, com o propósito de adquirir um software
de controle de estoque, solicitou a um analista de sua equipe
de informática que verificasse a qualidade do software. A
avaliação constatou que o software não possuía documentação
técnica, não havia comentários no código, e suas classes e
métodos possuíam nomes pouco significativos. Além disso, o
software não garantia o acesso restrito a informações
confidenciais de forma consistente.
Com base nessas informações, o software não foi considerado
de qualidade, pois não atendia às características desejáveis
para: R: Manutenibilade e segurança.
2. (Fundação Papa João XXIII ‒ FUNPAPA ‒ Analista de Sistemas
‒ AOCP ‒ 2018) O gerenciamento de qualidade de software
para sistemas de software compreende melhorias significativas
no nível organizacional e de projeto. Com relação aos conceitos
de qualidade de software, é correto afirmar que:
R: 1. No nível organizacional, o gerenciamento de qualidade está
preocupado com o estabelecimento de um framework de processos
organizacionais e padrões que levem a softwares de alta qualidade. Isso
significa que a equipe de gerenciamento de qualidade deve assumir a
responsabilidade de definir os processos de desenvolvimento do software
que serão usados e os padrões que devem ser usados no software, bem
como a documentação relacionada, incluindo os requisitos de sistema,
projeto e código.
o gerenciamento de qualidade de software para sistemas de software tem
três principais preocupações: 1. No nível organizacional, o gerenciamento
de qualidade está preocupado com o estabelecimento de um framework
de processos organizacionais e padrões que levem a softwares de alta
qualidade. Isso significa que a equipe de gerenciamento de qualidade
deve assumir a responsabilidade de definir os processos de
desenvolvimento do software que serão usados e os padrões que devem
ser usados no software, bem como a documentação relacionada, incluindo
os requisitos de sistema, projeto e código. 2. No nível de projeto, o
gerenciamento de qualidade envolve a aplicação de processos específicos
de qualidade, verificando que os processos planejados foram seguidos, e
a garantia de que as saídas de projeto estejam em conformidade com os
padrões aplicáveis ao projeto. 3. No nível de projeto, o gerenciamento de
qualidade também está preocupado com o estabelecimento de um plano
de qualidade. O plano de qualidade deve definir as metas de qualidade
para o projeto e quais processos e padrões devem ser usados.
RESUMINDO
Neste módulo, compreendemos o Planejamento da Qualidade com
destaque ao trabalho realizado pela equipe de garantia da qualidade, que
tem como atribuição auxiliar a equipe de software a obter um produto
final de alta qualidade.
O plano de qualidade de software, elaborado pela referida equipe, fornece
um roteiro para instituir a garantia da qualidade de software, servindo
como um gabarito para as atividades de garantia da qualidade de
software que serão instituídas para cada projeto de software.
Existem padrões para os referidos planos propostos pelo IEEE, PMBOK,
entre outros.
Vimos também os testes de verificação que estão relacionados com a
qualidade do processo de desenvolvimento de software e os testes de
validação, relacionados com a qualidade do produto software.
O processo Controlar a qualidade permite atender à máxima “Não se
controla o que não se mede”, permitindo monitorar e registrar resultados
da execução das atividades de gerenciamento da qualidade, verificando
se as entregas e o trabalho do projeto cumprem os requisitos
especificados.
A métrica é uma medida quantitativa do grau com o qual um
sistema, componente ou processo possui determinado atributo
Podemos afirmar que uma métrica de software é uma característica
de um sistema de software, da documentação do sistema ou do
processo de desenvolvimento, que pode ser medida objetivamente.
De acordo com Sommerville (2019), as métricas de software podem
ser:
- métricas de controle ou de processos
- Métricas de previsão ou de produto
- As métricas estáticas ajudam a avaliar a complexidade, a
compreensibilidade e a manutenibilidade de um sistema ou de
seus componentes.
- As métricas dinâmicas ajudam a avaliar a eficiência e a
confiabilidade de um sistema.
RESUMINDO
Neste módulo, destacamos a importância das medições e métricas para a
qualidade do software.
A medição de software tem como objetivo a quantificação de algum
atributo de um sistema de software, como a sua complexidade ou a sua
confiabilidade. Comparando os valores medidos uns com os outros e com
os padrões que se aplicam a uma organização, deve ser possível tirar
conclusões sobre a qualidade do software ou avaliar a eficácia de
processos de software, de ferramentas e de métodos. Um processo de
medição pode ser parte de um processo de avaliação da qualidade de
software, onde cada componente do sistema pode ser analisado
separadamente usando uma variedade de métricas.
A Engenharia de Software é uma área de conhecimento quantitativa,
portanto, uma métrica de produto ajuda os engenheiros de software a
visualizar o projeto e a construção do software por meio de atributos
específicos e mensuráveis permitindo aos mesmos criar um software de
alta qualidade.
As métricas de controle geralmente estão associadas aos processos de
software e as métricas de previsão associadas ao produto software,
permitindo quantificar atributos de um sistema de software.
1. Ministério Público de Contas do Estado do Pará ‒ MPC-PA ‒Analista ‒
Tecnologia da Informação ‒ CESPE ‒ 2019) A métrica de qualidade de
código que mede a complexidade estrutural de um programa computando
o número de caminhos linearmente independentes ao longo do código-
fonte é denominada: R: complexidade ciclomática
2. (Assembleia Legislativa do Estado do Rio de Janeiro ‒ ALERJ ‒ Analista ‒
Tecnologia da Informação‒ FGV ‒ 2017) Um sistema está sendo
desenvolvido por uma empresa terceirizada para apoiar as vendas de um
mercado varejista da Grande São Paulo denominado “Mendes Sá Colão”.
Após o desenvolvimento do sistema, a empresa terceirizada deverá
passar o código-fonte para a área de TI da “Mendes Sá Colão”, que
passará a ser responsável pela continuidade do sistema. Foi ressaltada,
também, a necessidade de que o sistema, caso ocorra uma falha,
recupere-se de forma automática e rapidamente.
Nesse caso, os atributos de qualidade do sistema com maior peso são:
R: Manutenibilidade e confiabilidade
CONSIDERAÇÕES FINAIS
A qualidade no contexto da Engenharia de Software possui duas
dimensões: Processo e produto. A produção de software com qualidade
exige a garantia da qualidade em todas as etapas do processo de
desenvolvimento do software, bem como do produto software.
Destacamos que um sistema de garantia da qualidade define a estrutura
organizacional responsável pela gestão da qualidade, garantindo o
atendimento às expectativas do cliente. O processo de garantia de
qualidade de software, parte do referido sistema, enfatiza a adoção de
padrões que devem ser aplicados ao processo de desenvolvimento de
software.
O plano de qualidade de software, elaborado pela equipe de garantia da
qualidade, fornece um roteiro para instituir a garantia da qualidade de
software, servindo como um gabarito para atividades de garantia da
qualidade de software que são instituídas para cada projeto de software.
A medição de software tem como objetivo a quantificação de algum
atributo de um sistema de software, como a sua complexidade ou a sua
confiabilidade. Comparando os valores medidos uns com os outros e com
os padrões que se aplicam a uma organização, deve ser possível tirar
conclusões sobre a qualidade do software ou avaliar a eficácia de
processos de software, de ferramentas e de métodos. Um processo de
medição pode ser parte de um processo de avaliação da qualidade de
software.
No contexto da medição de software, as métricas ajudam os engenheiros
de software a visualizar o projeto e a construção do software por meio de
atributos específicos e mensuráveis, permitindo aos mesmos criar um
software de alta qualidade.
Resumo chat:
Modulo 1
1. Engenharia de Software e Qualidade
A Engenharia de Software tem como objetivo lidar com a
complexidade do desenvolvimento de software, garantindo
qualidade.
A crise do software (Dijkstra, 1972) aponta que, à medida que o
hardware evolui, os desafios de desenvolvimento aumentam.
A engenharia de software é composta por quatro camadas:
o Qualidade: garante que o software atenda às expectativas.
o Processo: define as etapas do desenvolvimento.
o Métodos: técnicas para gerar artefatos.
o Ferramentas: uso de ferramentas CASE para apoiar o
processo.
✅ 2. Qualidade de Software
Segundo Pressman (2016):
Qualidade de software = gestão + produto útil + valor
mensurável.
A gestão da qualidade é estruturada em três atividades:
o Garantia da qualidade: define procedimentos e padrões.
o Planejamento da qualidade: adapta padrões ao projeto.
o Controle de qualidade: verifica se os padrões estão sendo
seguidos.
Melhor prática: equipe de garantia de qualidade deve ser independente
da equipe de desenvolvimento.
✅ 3. Dimensões da Qualidade
🔹 Qualidade do Processo
O processo de software é composto por 5 atividades (Pressman):
o Comunicação: entender o problema e levantar requisitos.
o Planejamento: gerenciar o projeto.
o Modelagem: criar representações como diagramas.
o Construção: codificação e testes.
o Entrega: liberação do software.
O processo deve conter mecanismos para detectar defeitos nos
artefatos (documentos, modelos, código etc).
Testes no processo são chamados de testes de verificação (estáticos).
🔹 Qualidade do Produto
Baseada nos fatores de qualidade de McCall:
o Correção – atende à especificação.
o Confiabilidade – funciona com precisão.
o Eficiência – uso de recursos.
o Integridade – controle de acesso.
o Usabilidade – facilidade de uso.
o Manutenibilidade – facilidade para corrigir erros.
o Flexibilidade – facilidade para modificar.
o Testabilidade – facilidade para testar.
o Portabilidade – facilidade para adaptar a outros ambientes.
o Reusabilidade – reutilização em outros softwares.
o Interoperabilidade – integração com outros sistemas.
Os testes no produto são chamados de testes de validação
(dinâmicos).
✅ 4. Testes de Software
Testes de validação verificam se o software atende aos requisitos
funcionais e não funcionais.
Etapas:
o Teste da unidade.
o Teste de integração.
o Teste do sistema com envolvimento dos usuários.
Pode haver automação dos testes para ampliar a cobertura e
garantir maior qualidade.
✅ 5. Custos da Qualidade
🔸 Custo da Conformidade
Prevenção: metodologias, treinamentos, ferramentas,
procedimentos.
Avaliação (detecção): revisões, inspeções, testes, auditorias.
🔸 Custo da Não Conformidade
Falhas internas: erros antes da entrega (reprocesso, atrasos).
Falhas externas: erros após a entrega (perdas financeiras,
retrabalhos).
Quanto mais cedo o erro for detectado, menor o custo para
corrigi-lo.
Modulo 2:
Processo de Garantia da Qualidade de Software
O Sistema de Garantia da Qualidade de Software (SQA) é uma
estrutura organizacional que assegura que produtos e serviços atendam
às expectativas dos clientes por meio de conformidade com
especificações. Envolve responsabilidades, procedimentos, processos e
recursos voltados à gestão da qualidade.
Principais Atividades do SQA:
1. Padrões: Definem boas práticas e requisitos a serem seguidos,
podendo ser internos ou determinados por normas como ISO.
2. Revisões e Auditorias: Avaliam artefatos e verificam
conformidade de processos.
3. Testes: Buscam identificar erros, sendo responsabilidade da equipe
de qualidade garantir sua execução adequada.
4. Análise de Erros/Defeitos: Coleta e análise visam melhorar
procedimentos com base em dados reais.
5. Gerenciamento de Mudanças: Estabelece regras para lidar com
mudanças em requisitos e tecnologia.
6. Educação: Capacitação contínua da equipe de desenvolvimento.
7. Gerência de Fornecedores: Inclui exigências de qualidade em
contratos de software terceirizado.
8. Administração da Segurança: Protege dados e impede alterações
não autorizadas.
9. Proteção contra Defeitos: Avalia e reduz riscos de falhas
catastróficas.
10. Administração de Riscos: Garante que o processo de
gerenciamento de riscos esteja bem conduzido.
Tipos de Padrões de Software:
Padrões de Produto: Aplicam-se aos artefatos gerados (ex:
codificação, documentação).
Padrões de Processo: Definem etapas e documentos exigidos no
desenvolvimento.
Normas Internacionais:
ISO 9000: Conjunto de normas de gestão de qualidade aplicáveis a
várias indústrias. A ISO 9000-3 é uma adaptação para software.
ISO 9126: Foca na qualidade do produto de software, com atributos
como funcionalidade, confiabilidade, usabilidade, eficiência,
manutenibilidade e portabilidade.
Gerenciamento da Qualidade segundo o PMBOK:
Dividido em três processos:
1. Planejar o Gerenciamento da Qualidade: Define requisitos e
padrões de qualidade.
2. Gerenciar a Qualidade: Executa o plano e aplica as políticas de
qualidade.
3. Controlar a Qualidade: Monitora resultados para garantir que
atendam às expectativas.
Níveis de Eficiência na Qualidade:
1. Cliente identifica defeitos.
2. Defeitos são detectados antes da entrega.
3. Processos são examinados e corrigidos.
4. Qualidade é incorporada desde o planejamento.
5. Cultura organizacional focada em qualidade.
Conclusão: O SQA é essencial para garantir produtos confiáveis e
eficazes, promovendo a melhoria contínua, a conformidade com padrões e
a satisfação do cliente.
Modulo 3 :
✅ Planejamento da Qualidade
1. Papel da Equipe de Garantia da Qualidade (SQA)
Apoia o time de desenvolvimento para garantir um produto final
de alta qualidade.
Segue recomendações do SEI (Software Engineering Institute), que
propõe ações como:
o Planejamento
o Supervisão
o Registro
o Análise e Relatórios de Qualidade
2. Plano de Qualidade do Software
Elaborado pela equipe de qualidade (SQA) ou desenvolvimento.
Faz parte do planejamento do projeto.
Define:
o Avaliações, auditorias e revisões
o Padrões e procedimentos
o Registro de erros e produtos gerados
o Feedback à equipe de software
Cada projeto de software deve ter seu plano, derivado de um manual de
qualidade da organização.
3. Padrão IEEE para Planos de Qualidade
O plano deve conter:
Propósito e escopo
Artefatos de engenharia de software
Padrões aplicados
Ações de garantia da qualidade
Ferramentas e métodos
Procedimentos de configuração
Registros
Papéis e responsabilidades
4. PMBOK – Planejamento da Qualidade
Processo: Planejar o Gerenciamento da Qualidade
o Objetivo: Identificar requisitos/padrões de qualidade e
documentar como atendê-los.
o Benefício: Fornecer direção e controle da qualidade ao longo
do projeto.
Entradas, Ferramentas e Saídas (Tabela 2):
Entradas: Termo de abertura, plano do projeto, fatores
organizacionais
Ferramentas: Análise de dados, reuniões, planejamento de testes
Saídas: Plano de gerenciamento da qualidade, métricas,
atualizações
5. Planejamento de Testes e Revisões
Testes de Verificação (Processo)
Avaliam a qualidade do processo de desenvolvimento.
Métodos: Revisões (documentos) e Auditorias (atividades).
São métodos estruturados, com regras e profissionais capacitados.
Testes de Validação (Produto)
Avaliam a qualidade do produto final.
Tipos:
o Teste de unidade: componentes isolados
o Teste de integração: integração entre módulos
o Teste de sistema: sistema completo, com testes funcionais
e não funcionais
6. Tipos de Testes de Validação
Teste Alpha: Usuário testa em ambiente do desenvolvedor
Teste Beta: Usuário testa em seu próprio ambiente
Aceite Formal: Cliente define os testes e valida os requisitos
7. Testes de Sistema
Envolvem o software e demais elementos (hardware, redes etc.)
Tipos:
o Teste de Recuperação: Resiliência a falhas
o Teste de Segurança: Proteção dos dados
o Teste por Esforço: Estresse do sistema
o Teste de Desempenho: Avalia tempo e resposta
o Teste de Disponibilização: Compatibilidade com várias
configurações
8. Controle de Qualidade
Objetivo: Monitorar se as entregas estão em conformidade com os
requisitos.
Processo: “Controlar a Qualidade” (PMBOK)
o Usa coletas de dados, inspeções, testes, análise de
desempenho e causa-raiz.
o Pode gerar Solicitações de mudança em caso de não
conformidades.
Esse resumo sintetiza os principais pontos sobre planejamento e controle
de qualidade em projetos e desenvolvimento de software, conforme SEI,
IEEE e PMBOK
Modulo 4 :
Conceitos Básicos
Medição é essencial na engenharia de software, pois “não se
controla o que não se mede”.
Medida: valor quantitativo de um atributo de produto ou processo.
Medição: ato de obter uma medida.
Métrica: medida quantitativa de um atributo de um sistema,
componente ou processo (ex: número médio de erros por teste).
Exemplo Prático
Medida: número de erros encontrados.
Medição: coleta de dados em testes/revisões.
Métrica: média de erros por revisão ou teste.
Importância
Permite avaliar atributos como qualidade, complexidade e
confiabilidade do software.
Compara-se métricas atuais com dados históricos ou padrões para
identificar problemas e tomar decisões de melhoria.
Processo de Medição (Sommerville, 2019)
1. Escolher o que medir: definir objetivos e questões.
2. Selecionar os componentes: escolher partes representativas do
sistema.
3. Medir as características: coletar dados com ferramentas
apropriadas.
4. Identificar valores anômalos: detectar desvios fora do padrão.
5. Analisar anomalias: verificar se há comprometimento real na
qualidade.
GQM – Goal, Question, Metric
Método que ajuda a definir métricas significativas:
Goal (Objetivo): o que se quer alcançar.
Question (Questões): perguntas que guiam a análise.
Metric (Métricas): dados coletados para responder às questões.
Tipos de Métricas
1. Métricas de Controle (ou de Processo)
Avaliam processos, por exemplo:
Tempo de execução,
Recursos utilizados,
Quantidade de defeitos ou mudanças.
2. Métricas de Previsão (ou de Produto)
Avaliam o produto em si:
Estáticas: feitas sobre o código ou documentação (ex:
complexidade ciclomática, fan-in/fan-out, tamanho do código).
Dinâmicas: feitas com o software em execução (ex: número de
falhas, tempo médio entre falhas).
Boas Práticas com Métricas
Devem ser fáceis de entender e calcular.
Precisam refletir corretamente o atributo medido.
Devem produzir resultados objetivos e não ambíguos.
Ajudam a melhorar o software e os processos de desenvolvimento.
Conclusão
Medições e métricas são fundamentais para avaliar, controlar e
melhorar a qualidade do software, auxiliando na tomada de
decisões gerenciais ao longo de todo o ciclo de vida do produto.