Você está na página 1de 10

Qualidade De Software

É delimitada como a medida da qual o software cumpre os requisitos dos indivíduos


pertencentes as partes interessadas do projeto. Obviamente, assim, o conceito de qualidade
torna-se relativo perante a diferença de perspectiva para cada pessoa. Dado isso, segundo
Garvin, existem 5 visões possíveis de qualidade, considerando o contexto de
desenvolvimento de software:

• Visão transcendental: Qualidade facilmente percebida pelo usuário final, porém


dificilmente explicada.
• Visão do usuário: Qualidade em cumprir, de forma integral, os requisitos funcionais e
não-funcionais do usuário.
• Visão do fabricante: Qualidade em cumprir os requisitos dos desenvolvedores e
projetistas.
• Visão do produto: Qualidade em fornecer recursos e funções que satisfaçam a maior
quantidade de stakeholders.
• Visão de valor: Qualidade em atribuir valor ou prestígio ao usuário ou empresa
utilizadores do produto.

Além do mais, qualidade, de modo geral, envolve os seguintes fatores:

• Funcionalidade: Fornecer as funções necessárias para o cumprimento dos requisitos.


• Confiabilidade: Consistência, a longo prazo, em manter o resultado correto esperado.
• Usabilidade: Facilidade de uso e eficiência do usuário em realizar as funções
disponíveis.
• Eficiência: Obtenção de resultados em comparação a quantidade de recursos
empregados como tempo e consumo de recursos.
• Manutenibilidade: Facilidade da qual o software pode ser alterado.
• Portabilidade: Capacidade de transferências de ambientes, como de web para mobile,
sem perda de funcionalidades.
• Segurança: Garantia da integridade das informações e proteção contra acessos não
autorizados.
• Compatibilidade: Capacidade de funcionar plenamente em outros sistemas,
componentes ou dispositivos.
• Interoperabilidade: Capacidade do software de interagir e trocar informações e dados
com outros sistemas.

Dito isso, é impossível um projeto ter foco em todos os fatores simultaneamente. Desse
modo, é preciso que a qualidade seja voltada para os mais influentes ao produto, o que varia
conforme o projeto. Por consequência, a configuração e foco do processo também são
alterados de acordo com as necessidades.

Ademais, para medir a qualidade de um software, ou seja, o produto em desenvolvimento,


são feitos testes de validação. Em contrapartida, são feitos testes de verificação para avaliar
a qualidade do processo.

Testes De Software
São maneiras de verificar a qualidade de um sistema, a partir de atividades orientadas a
casos de testes. Assim, conforme um cenário específico, são executadas um passo a passo de
ações para verificar se o resultado condiz com o esperado. Um teste pode ser classificado
como “caixa preta”, quando se testa o produto na perspectiva do usuário, e “caixa branca”,
quando se testa o sistema com acesso ao código fonte. Existem diversos tipos de testes de
software, e os mais comuns são:

• Teste de funcionalidade: Verifica se as funções do software cumprem os requisitos de


negócio.
• Teste de usabilidade: Avalia a facilidade de uso do sistema.
• Teste de carga ou stress: Simula situações atípicas de grande volume de dados para
validar comportamento do produto.
• Teste de volume: Buscar obter os limites de processamento e carga do sistema.
• Teste de unidade ou unitários: Testa-se componentes individuais do código, como
classes e métodos, para verificar se condizem com o planejado.
• Teste de integração: Avalia se os módulos do sistema funcionam corretamente em
conjunto.
• Teste de confiabilidade: Verifica a consistência do software em obter o resultado após
determinado período de uso.

Processo de Desenvolvimento
Para garantir qualidade de um software, faz-se necessário possuir um processo de
desenvolvimento organizado. Isso pois é a partir do uso de um processo eficaz que é possível
manter o atendimento pleno das necessidades do usuário e cumprir objetivos de negócio.
Portanto, caso não haja um procedimento efetivo, não é imaginável a criação de um produto
totalmente útil e completo na visão do cliente.

Logo, define-se um modelo chamado CMM (Capability Maturity Model) para definir o nível
de maturidade de um processo organizacional, na escala de 1 a 5, conforme listado:

1. Anárquico: Imprevisível e pouco controlado.


2. Cultural: Tarefas “mestras” de controle de processo, como relatórios e reuniões, são
aplicadas e repetidas continuamente.
3. Padronizado: Possui regras bem definidas e caracterizadas.
4. Mensurável: Pode ser medido de forma eficaz e controlado pelos gestores.
5. Otimizado: Aperfeiçoado conforme o tempo e a mudança.

Gerenciamento de Configuração
É o processo do qual é monitorado as mudanças de configuração do software, isso é, garantir
que as versões e componentes estejam corretamente controlados e, assim, assegurar
qualidade ao produto. Há algumas atividades básicas do gerenciamento de configuração,
como:

• Controle de versões: Manter a organização das versões (realises) do software,


registrando as mudanças realizadas. Uma ferramenta muita utilizada para realizar
essa tarefa é o software Git.
• Definição de baselines e codelines: Entende-se como “Baseline” uma versão estável e
ponto de referência para executar mudanças do software, e como “Codeline” uma
ramificação ou linha de mudanças feitas em certo período. Assim, é importante definir
baselines como marcos de controle e comparação de progresso de desenvolvimento
e codelines para integrar de melhor modo o trabalho entre diferentes membros.
• Análise de mudanças: Fatores como concorrência, requisitos de mercado, trocas de
plataforma e (ou falta de) qualidade técnica do sistema podem acarretar solicitações
de mudanças. Cabe à equipe de desenvolvimento determinar a validade e custo
(tempo e dinheiro) necessários para realizar a modificação.

Perguntas 1
1. O que é qualidade de software?
Qualidade de software é definida como a maneira da qual um sistema cumpre os
requisitos determinados pelas partes interessadas do projeto. Assim, por exemplo,
um software possui alta qualidade caso realize de modo exemplar as funcionalidades
planejadas pelos desenvolvedores e o cliente.

2. Cite 4 fatores principais da qualidade de software.


Dentre os fatores da qualidade de software que podem ser citados está:
• Usabilidade: A facilidade do usuário em utilizar o sistema.
• Funcionalidade: Fornecer funções para realizar as tarefas requisitadas.
• Eficiência: É a razão entre o resultado de uma tarefa pelo custo empregado
para realizá-la (tempo, dinheiro, recursos...).
• Confiabilidade: Consistência em entregar resultados iguais apesar de erro e
situações adversas ao longo do tempo.

3. O que é um teste de usabilidade?


É um teste feito para checar a facilidade de uso de software, ou seja, analisa se o
usuário consegue, facilmente, acessar e utilizar as funções básicas do sistema, se
ocorrer problemas adversos que dificultem a interação humano-computador.

4. Qual é a finalidade do gerenciamento de configuração?


Possui a finalidade de monitorar e controlar as mudanças realizadas ao longo do ciclo
de vida de um sistema. Logo, tem um papel importante em controlar as versões
funcionais e integrar alterações feitas pela equipe.
5. O que é uma baseline em gerenciamento de configuração?
Em gerenciamento de configuração, baseline é um ponto em que há uma versão
estável de um sistema, que pode ser utilizada como base para iniciar novas mudanças
no projeto.

6. Explique a diferença entre testes de caixa preta e caixa branca.


Testes de caixa preta possuem o intuito de avaliar o software na perspectiva do
usuário, ou seja, sem acesso direto ao código fonte ou ambientes de desenvolvimento.
Em contrapartida, testes de caixa branca têm a finalidade de verificar o produto com
acesso ao código.

7. Cite 4 tipos de testes de software e seus respectivos objetivos.


É possível citar os seguintes testes:
• Teste de funcionalidade: Avalia a capacidade do sistema em realizar as funções
projetadas pelos desenvolvedores.
• Teste unitário: Verifica unidades ou módulos únicos do sistema para checar se
funcionam corretamente sozinhos, sem interagir com outras partes da
aplicação.
• Teste de integração: Analisa o comportamento de interação entre partes
distintas do software.
• Teste de carga: Simula situações atípicas de alto fluxo de dados para observar
o comportamento do produto.

8. Descreva os benefícios de um processo de desenvolvimento de software organizado.


A partir de um desenvolvimento organizado e eficaz, é possível garantir uma melhor
gestão das equipes e do trabalho e, portanto, obter melhores resultados quanto à
qualidade do software. Isso pois problemas como intrigas entre colaboradores e falta
de controle durante o desenvolvimento seriam amenizados, logo, criando um
ambiente de trabalho satisfatório.
9. Quais são as atividades básicas do gerenciamento de configuração?
As atividades básicas do gerenciamento de configuração são o controle de versões,
definições de baselines e codelines e análise de mudanças.

10. O que significa controle de versões em gerenciamento de configuração?


Controle de versões significa monitorar o lançamento de versões funcionais e analisar
mudanças feitas pela equipe ao longo do ciclo de vida do sistema.

11. Discuta a importância da qualidade de software no contexto do desenvolvimento de


sistemas complexos.
Em um sistema complexo, é notório a importância fundamental do controle de
qualidade em garantir que o produto entregue os requisitos do cliente e o processo
de criação seja proveitoso para a equipe de desenvolvedores. Isso porque é a partir
da implementação de métodos de controle de qualidade, como testes e
gerenciamento de configuração, que é possível monitorar o quão de acordo os
artefatos produzidos estão com as exigências das partes interessadas. Assim sendo,
sem o processo de análise de qualidade bem definido não é viável a entrega de
software complexo e eficaz às necessidades do requisitante.

12. Explique como testes de volume e testes de stress podem ajudar a garantir a
qualidade do software. Exemplifique.
Testes de stress têm o objetivo de verificar o comportamento do software em
situações atípicas de alto tráfego de dados, logo, por exemplo, são úteis para testar se
um e-commerce está preparado para manter-se no ar durante um período ofertas.
Por outro lado, os testes de volume têm o intuito de medir as capacidades máximas
de processamento e carga, assim, exemplificando, são utilizados para analisar o
tamanho máximo de um vídeo do qual um software de edição pode renderizar.

13. Descreva os diferentes níveis de maturidade do modelo CMM (Capability Maturity


Model) e suas características.
O modelo descreve os seguintes níveis:
1. Anárquico: Processo pouco organizado e sem controle.
2. Cultural: Tarefas “mestras” de gerenciamento são repetidas continuamente.
3. Organizado: Processo bem definido e caracterizado.
4. Mensurável: Pode ter a eficiência e eficácia medidas pelos gestores.
5. Otimizado: Tem foco no aperfeiçoamento do processo e regras de negócio.

14. Como a definição de baselines e codelines contribui para o gerenciamento eficaz de


configuração de software?
Como baselines são versões estáveis usadas para determinar a base de futuras
alterações no software, logo, sua definição é fundamental para garantir a qualidade
geral da aplicação em alterações futuras. Além do mais, definir codelines claras, isso
é, ramificações de implementação de funcionalidades, auxilia a evitar conflitos de
desenvolvimento entre os membros da equipe.

15. Explique o papel da análise de mudanças no gerenciamento de configuração e como


afeta a qualidade do software.
É nítido que a análise de mudanças é essencial para a existência de um gerenciamento
de configuração eficaz. Isso pois determinar quais alterações exigidas pelo cliente
devem ser de fato implementadas, além da documentação das características da
mudança, como duração, custo e detalhamento do que deve ser feito, contribui para
um desenvolvimento e uso de recursos mais proveitoso. Portanto, a análise corrobora
positivamente para a criação eficiente e eficaz de um software.

Perguntas 2
1. Explique o conceito de qualidade transcendental e como ele se relaciona com a
percepção do usuário final sobre a qualidade do software.
Qualidade transcendental é definida como algo que pode ser facilmente percebido por
um indivíduo acerca de um produto, porém dificilmente explicado. Logo, o usuário
final, em um software que possui características de qualidade transcendental, tende
a gostar mais do sistema, principalmente se for o cliente. Isso porque entrega a mais
do que o esperado ou requisitado pela pessoa.

2. Quais são os principais desafios enfrentados ao realizar testes de usabilidade em um


software complexo?
Justamente pelo fato de o software ser, a princípio, complexo, é difícil avaliar cada
possível ação ou conjunto de ações do usuário. Isso pois, provavelmente, o sistema é
composto por muitos módulos, e mapear cada um para identificar possíveis falhas
que podem acarretar dificuldade de uso é uma tarefa árdua.

3. Como um processo em nível cultural, da classificação CMM, impacta a qualidade do


software e a satisfação do cliente?
Pelo motivo das tarefas de gerenciamento mestras serem repetidas conforme a
necessidade, como o envio de relatórios e o agendamento de reuniões, corrobora para
criar um processo mais eficaz e mais bem gerenciado pelos administradores da
equipe. O que, por consequência, garante um produto melhor e mais satisfação ao
cliente.

4. Descreva três benefícios do uso de ferramentas de controle de versão, como o Git, no


gerenciamento de configuração de software.
Dentre os benefícios que podem ser descritos no uso de ferramentas de controle de
versão está:
• Monitoramento de codelines: Gerenciar e definir codelines torna-se mais fácil,
pois é possível ter uma visão clara das ramificações que estão sendo feitas no
momento, assim como o progresso de cada uma.
• Definição de baselines: Criar um ponto de referência de mudança é mais
prático, pois é facilmente acessível por qualquer membro, tanto para
visualizado como para iniciar uma nova alteração.
• Integração: Agregar ramificações de mudança à codeline principal
normalmente é feita automaticamente pela própria ferramenta, que, inclusive,
verifica possíveis conflitos de código entre cada codeline e avisa sobre o
problema ao unificar.

5. Explique o conceito de interoperabilidade e porque é importante considerá-lo no


desenvolvimento de sistemas de software.
Interoperabilidade é a capacidade do software em comunicar-se com outros sistemas,
assim, no caso de sistemas compostos por múltiplas aplicações, torna-se o fator
essencial quanto a qualidade geral do produto. Uma vez que definirá se os módulos
criados trocam, corretamente, dados entre si.

6. Discuta a importância da manutenibilidade do software e como ela afeta a qualidade


e o custo de manutenção a longo prazo.
Um sistema que possui alta manutenibilidade torna-se mais fácil, para equipe, de
alterar, dessa forma, ao longo do ciclo de vida do software, corrigir ou mudar algo
conforme solicitação cliente é mais rápido e, consequentemente, barato. Logo, torna-
se mais prático para manter a qualidade da aplicação.

7. Quais são as principais características de um processo de desenvolvimento de


software no nível de maturidade otimizado do modelo CMM?
Possui as características de estar em constante melhoria e mudança por parte dos
gestores, além de representar o nível mais alto de maturidade do processo
administrativo de desenvolvimento.

Perguntas 3
1. Escolha 3 fatores de qualidade e explique a relevância de cada um perante o
desenvolvimento de um software.
Dentre os fatores de qualidade que podem ser citados estão:
• Usabilidade: Naturalmente, um software que é difícil de usar cai desuso de
modo rápido caso haja uma alternativa mais prática ao usuário final. Dessa
forma, usabilidade é capaz de determinar o sucesso ou fracasso de um sistema.
• Funcionalidade: Para um sistema possuir qualidade, na visão do cliente, é
preciso que os requisitos, principalmente os funcionais, sejam realizados.
Logo, um software que não cumpre as funções pedidas não tem qualidade, o
que gera insatisfação e má reputação à equipe de desenvolvimento.
• Eficiência: Quanto menor o custo necessário, seja tempo, recursos ou dinheiro,
para realizar uma determinada tarefa melhor é para a organização. Isso pois
implica diretamente no aumento da produtividade. Assim, alta eficiência
torna-se um requisito imprescindível a qualquer sistema.

2. Discorra sobre as diferenças entre testes de validação e testes de verificação. Por que
ambos são necessários para avaliar a qualidade de um software?
Para se avaliar o software em si são feitos testes de validação, como testes de caixa
branca e preta, assim, testam se o produto realmente está conforme o planejado e o
pedido pelo cliente, e mantém a qualidade. Por outro lado, testes de verificação
avaliam o processo, ou seja, como está feito o produto e se segue práticas adequadas
ao intuito do projeto. Portanto, ambos se completam e garantem que o sistema
mantenha qualidade.

3. Com base no modelo CMM (Capability Maturity Model), quais são os benefícios de
alcançar um nível de maturidade alto?
Possuir um nível de maturidade alto, naturalmente, garante um processo mais eficaz,
ou seja, resultados são próximos ou exatamente conforme planejado. Isso pois as
atividades são controladas e bem definidas, dessa maneira, é possível manter a
qualidade dos produtos criados.

Você também pode gostar