Escolar Documentos
Profissional Documentos
Cultura Documentos
AULA 1
1
CONVERSA INICIAL
CONTEXTUALIZANDO
2
Muito bem, falamos dos custos para escrevermos e mantermos
funcionalidades de software, porém, os custos, gastos e investimentos vão além
dos funcionários da área de TI. Quando um software está inativo, são clientes e
mais clientes que são prejudicados, por meio de notas fiscais que não são
emitidas, empresas que deixam de faturar, bancos que deixam de fazer
operações com milhões de correntistas, pedidos que não são recebidos, entre
tantas outras funcionalidades automatizadas que deixam de executar!
Leitura obrigatória
https://www.infoq.com/br/news/2012/05/An-Introduction-Software-Quality
3
Saiba mais
http://sbqs2015.com.br/apresentacao/
Pesquise
http://sbqs2015.com.br
Leitura obrigatória
http://sbqs2015.com.br/apresentacao
4
TEMA 1 - CONCEITOS SOBRE QUALIDADE
Subjetivo? Sim, porém se você estiver neste mesmo restaurante que lhe
propus anteriormente com outra pessoa, esta poderá ter outra visão sobre a
qualidade da mesma comida! Isso não quer dizer que ela invalidará a sua
avaliação sobre a refeição. Isso nos mostra que precisamos analisar melhor o
que esperamos da qualidade, seja de produtos ou de serviços.
5
produtivos, da redução de custos, de uma transformação cultural e do
envolvimento e do comprometimento dos trabalhadores.
Alguns nomes são importantes para a área de qualidade, e cada qual tem
um enfoque (SHIGUNOV, 2016). Dentre eles temos:
entrega
satisfação do produto boa entrega
dentro do
usuário compatível qualidade dentro prazo
orçamento
6
de qualquer produto ou prestação de serviços, precisamos ter foco na qualidade
tanto de processos quanto de produtos (resultados).
Leitura obrigatória
http://www.inmetro.gov.br/qualidade/iaac/pdf/fundamentos-qualidade.pdf
Saiba mais
http://www.linhadecodigo.com.br/artigo/1712/qualidade-qualidade-de-software-
e-garantia-da-qualidade-de-software-sao-as-mesmas-coisas.aspx
7
5. Durabilidade: o software pode ser mantido ou corrigido sem a geração de
efeitos colaterais;
6. Facilidade de manutenção: o software pode ser mantido ou corrigido por
período de tempo aceitável;
7. Estética: elegância com um fluir único e uma presença difíceis de
quantificar;
8. Percepção: pode ser maculada por produtos anteriores entregues sem
qualidade ou pode ser superestimada por produtos anteriores entregues
com sucesso.
1. Desempenho
2. Características
3. Confiabilidade
4. Durabilidade
5. Atendimento
6. Estética
7. Qualidade percebida
8. Conformidade
Leitura obrigatória
http://www.inmetro.gov.br/qualidade/iaac/pdf/fundamentos-qualidade.pdf
Saiba mais
O que é o INMETRO?
8
O INMETRO é um instituto nacional de metrologia, qualidade e tecnologia. À
primeira vista, muitos imaginam que ele atende à indústria, porém com a
necessidade cada vez maior por questões relacionadas à qualidade de software,
o mesmo vem atendendo também a esta área que cresce a cada dia no país.
http://www.inmetro.gov.br/inmetro/oque.asp
1. Características operacionais;
2. Habilidade de suportar mudanças;
3. Adaptabilidade a novos ambientes.
9
A figura 2 relaciona estes três aspectos subdivididos em outras
abordagens importantes para considerarmos a qualidade de software.
• Facilidade de manutenção
• Flexibilidade
Revisão do
Produto
• Testabilidade
• Portabilidade
• Reusabilidade
Transição do
Produto
• Interoperabilidade
•Correção
•Confiabilidade
•Usabilidade
Operação do •Integridade
Produto •Eficiência
10
O próximo grupo, Transição do Produto, possui as seguintes
competências:
11
1. Funcionalidade: que corresponde ao grau de satisfação das
necessidades elicitadas.
Leitura obrigatória
http://www.linhadecodigo.com.br/artigo/1712/qualidade-qualidade-de-software-
e-garantia-da-qualidade-de-software-sao-as-mesmas-coisas.aspx
12
TEMA 4: DILEMAS DA QUALIDADE
13
Figura 3: Custos da Qualidade
Prevenção
Avaliação
Falhas
Custos de Qualidade
14
2. Que abordem a coleta de dados, bem como a avaliação por meio
de métricas.
3. Para testes e depuração dos programas (PRESSMAN, 2011).
15
Além de todos estes custos, ainda entramos nos quesitos riscos,
responsabilidade civil, segurança e o impacto das ações administrativas sobre o
processo de desenvolvimento de software, considerando-se aspectos de
qualidade. Quanto aos riscos, encontramos pessoas que entregam seus
empregos, segurança, entretenimento, decisões e a vida em software. Com isso,
precisamos avaliar os riscos envolvidos quando um software possui falhas e
erros. Isso deve ser muito bem pensado ao se desenvolver um software que
envolva altos riscos.
Outro aspecto fica por conta de sistemas que se tornam lentos, com
recursos e funções suscetíveis a erros sem a aprovação dos usuários, tornando
o pagamento pelo software algo que entra na esfera judicial. Usuários dizem que
os desenvolvedores foram negligentes, ocasionando um problema sério de fluxo
de caixa para a empresa desenvolvedora.
Leitura obrigatória
http://www.linhadecodigo.com.br/artigo/1712/qualidade-qualidade-de-software-
e-garantia-da-qualidade-de-software-sao-as-mesmas-coisas.aspx
16
TEMA 5: ALCANÇANDO A QUALIDADE DE SOFTWARE
17
Conforme os anos passam na história da engenharia de software, nossos
critérios de qualidade de software crescem, tornando-os cada vez mais efetivos.
Utilizarmos, por exemplo, a ISO 9126 estabelecerá características de
confiabilidade, usabilidade, facilidade de manutenção, funcionalidade e
possibilidade como indicadores da existência da qualidade de software.
(PRESSMAN, 2011).
Leitura obrigatória
http://www.linhadecodigo.com.br/artigo/1712/qualidade-qualidade-de-software-
e-garantia-da-qualidade-de-software-sao-as-mesmas-coisas.aspx
TROCANDO IDEIAS
SÍNTESE
18
estamos falando apenas em tirarmos os erros de código, não que isto não seja
importante, mas estamos vislumbrando o software como um conjunto não só de
códigos que seguem uma determinada lógica, mas um software que manipule
dados e se comunica com pessoas. Usuários estão cada vez mais exigentes e
querem respostas rápidas, eficientes, confiáveis, por meio de interfaces simples.
Nosso desafio então é aplicarmos a qualidade de software, observando-se
obviamente o escopo de nosso projeto diante de seus custos. Não temos como
fazer milagres, mas podemos nos cercar de pontos importantes a serem
analisados diante de todo o processo de software, vislumbrando um software e
um processo de desenvolvimento de software que busque sua excelência
em qualidade.
REFERÊNCIAS
19
XIV Simpósio Brasileiro de Qualidade de Software. Anais. 17-21 de agosto de
2015. Manaus. Disponível em:
<https://drive.google.com/file/d/0B4ZBCAydIkutSUFuVVhCdXVnbDA/view>.
Acesso em: maio de 2016.
20
QUALIDADE DE SOFTWARE
AULA 2
1
CONVERSA INICIAL
Olá, seja bem-vindo. Assista ao segundo vídeo da professora Maristela
Regina Weinfurter Teixeira, que irá apresentar e contextualizar esta disciplina,
bem como os assuntos que serão estudados nesta aula.
CONTEXTUALIZANDO
Após conhecermos um pouco sobre a qualidade de software, vamos
estudar sua amplitude por meio de conceitos da garantia da qualidade
de software. A garantia da qualidade de software (SQA), segundo
Pressman (2011), contém as seguintes etapas:
1. Um processo de SQA.
2. Tarefas específicas e controle da qualidade (revisões técnicas e
estratégia de testes multiescalonados).
3. Prática efetiva de engenharia de software (métodos e ferramentas).
4. Controle de todos os artefatos de software e as mudanças feitas nesses
produtos.
5. Um procedimento para garantir a conformidade com os padrões de
desenvolvimento de software.
6. Mecanismos de medição e de relatórios.
2
Desenvolver softwares nos dias atuais deixou de ser algo para
programadores independentes e solitários e se tornou um trabalho que
experimenta a colaboração e cooperação entre profissionais com
especializações dentro da engenharia de software e de outras áreas. Assim,
vamos verificar, claro que cuidando das devidas proporções de tamanhos de
projetos e empresas desenvolvedoras, profissionais especializados no projeto,
na codificação, em testes e outras tantas atividades que agregam os cuidados
que a garantia da qualidade de software nos oferece.
Leitura obrigatória
SOMMERVILLE, 2011
Saiba mais
Este curta metragem é pequeno, mas ao mesmo tempo nos traz uma boa
percepção do que é desenvolvermos um software apenas por meio da tentativa
e erro em vez de irmos direto às muitas orientações sobre como podemos ter
mais produtividade, melhoria de processos e um produto/serviço que de fato
atenda a nossos usuários.
https://www.youtube.com/watch?v=LOyX-vgdQGQ
3
Quando fazemos este exercício com algo que nos afeta diretamente, fica
mais fácil compreendermos e absorvermos todas as preocupações da garantia
da qualidade de software.
4
Figura 1: Elementos da Garantia da Qualidade de Software
Teste de
Software
Gerenciamento
de Controle de
Configuração Qualidade
de Software
5
1. Padrões: IEEE, ISO e outras organizações de padronizações.
2. Auditorias e Revisões: revisões técnicas são atividade de controle de
qualidade para revelação de erros. Auditoria é um tipo de revisão para
nos assegurar de que as diretrizes de qualidade estejam sendo seguidas.
3. Testes: fazem parte do controle de qualidade com o objetivo principal a
descoberta de erros.
4. Coleta e análise de erros/defeitos: melhoria do desempenho das
melhores práticas para garantia da qualidade por meio de medições.
5. Gerenciamento de mudanças: são aspectos negativos dentro do
desenvolvimento de software, porém ocorrem a todo instante.
6. Educação: aperfeiçoamento dos desenvolvedores e interessados.
7. Gerência de fornecedores: pacotes comerciais, software sob
encomenda devem ser avaliados por meio da garantia de qualidade de
software antes da aquisição.
8. Administração da segurança: crimes cibernéticos e novas
regulamentações governamentais quanto à privacidade devem fazer
parte das políticas de proteção de dados em todos os níveis.
9. Proteção: o software envolve vidas humanas e o impacto de defeitos e
falhas pode ser catastrófico.
10. Administração de riscos: garantir a gestão de riscos de forma
apropriada em relação aos planos de contingência.
Com base nestes elementos, sabemos que temos várias subáreas para
nos preocuparmos e estudarmos até o final deste módulo para conseguirmos
dimensionar em nosso dia a dia em como garantir a qualidade dos processos de
desenvolvimento de software e do próprio software resultante.
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
6
Saiba mais
Este artigo nos traz outra forma de visualizar o gerenciamento da qualidade de
software e assegurar a garantia da mesma:
http://tenstep.com.br/blog/?p=839
7
3. Qualidade do código: tanto o código-fonte quanto os produtos
relacionados devem estar em conformidade com os padrões locais de
codificação e apresentar características para facilitar a manutenção.
4. Eficácia do controle de qualidade: a equipe de software aplica recursos
limitados para obtenção da maior probabilidade possível de atingir um
resultado de alta qualidade. Agora vamos detalhar estas metas e
identificar atributos indicadores de qualidade para cada meta discutida
(adaptado de HYA, 96 apud PRESSMAN, 2011). Veja a tabela 1 a seguir:
8
Facilidade de Fatores de projeto
manutenção
Compreensibilidade Porcentagem de comentários internos
Convenções de atribuição de variáveis
Reusabilidade Porcentagem de componentes reutilizados
Documentação Índice de legibilidade
Alocação de recursos Porcentagem de horas de pessoa por atividade
Eficiência do
Taxa de completude Tempo de finalização real versus previsto
controle de
Eficácia da revisão Ver métricas de revisão
qualidade
Eficácia dos testes Número de erros encontrados
Esforço exigida para corrigir um erro
Origem do erro
Fonte: Pressman, 2011.
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
Saiba mais
Alguns links interessantes que falam sobre gestão e garantia da qualidade:
www.asq.org/software
www.sei.cmu.edu
www.isospice.com
TEMA 3: ESTATÍSTICA
9
toda a indústria de software. Segundo Pressman (2011), a estatística da
qualidade implica nas seguintes etapas:
1. Informações sobre erros e defeitos coletados e classificados.
2. Associação de cada erro e defeito a sua causa (erros de projeto, violação
de padrões, comunicação inadequada com cliente).
3. Uso do princípio de Pareto (80% dos defeitos podem ser associados a
20% de suas possíveis causas), isolando 20% a poucas causas vitais.
4. Correção dos problemas que provocaram os erros e defeitos.
Aparentemente, pode-se pensar que é tão simplista, mas este tipo de
conceito já impacta na criação de uma gestão de qualidade adaptativa com
mudanças feitas e melhorias nos elementos do processo que introduziram
os erros.
Vamos listar algumas causas mais comuns encontradas em estatísticas
deste tipo:
1. (IES) Especificações incompletas.
2. (MCC) Problema com interpretação da comunicação com o cliente.
3. (IDS) Desvio intencional nas especificações.
4. (VPS) Violação dos padrões de programação.
5. (EDR) Erro na representação de dados.
6. (ICI) Interface inconsistente de componentes.
7. (EDL) Erro na lógica de projeto.
8. (IET) Testes incompletos ou errados.
9. (IDD) Documentação incompleta ou sem precisão.
10. (PLT) Erro na tradução do projeto para linguagem de programação.
11. (HCI) Interface homem-computador ambígua ou inconsistente.
12. (MIS) Outros.
É claro que esta lista nos dá uma ideia de algumas causas encontradas e
não necessariamente serão adotadas dessa forma. Para cada empresa é
importante observação e experimentos até que se encontrem as causas mais
10
aderentes aos projetos. A Figura 2 reflete a utilização desta lista para
exemplificação de como coletarmos estes dados.
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
11
TEMA 4: CONFIABILIDADE DE SOFTWARE
12
programa não representa a mesma taxa de falhas, além de como o número total
de defeitos pode sinalizar indicação da confiabilidade de um sistema. Como
medida para garantira a confiabilidade, temos a falha ao longo do tempo (FIT),
que é uma medida estatística para estimar quantas falhas um componente
poderá ter ao longo de um bilhão de horas de operação. (PRESSMAN, 2011).
Além da confiabilidade, precisamos nos preocupar com a disponibilidade de
software, ou seja, a probabilidade de que um programa esteja operando de
acordo com os requisitos em um dado instante:
Disponibilidade = (MTTF)/(MTTF+MTTR)*100%
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
13
padrões. Após esta escolha, definimos processos específicos para o
monitoramento do uso dos padrões e verificação se os mesmos estão sendo
seguidos. A figura 3 demonstra essa qualidade baseada em processos.
Melhorar Qualida
processo de ok?
Padronizar
processo
Fonte: Sommerville, 2011.
14
Os padrões entregam valor sob a forma de maior qualidade de produto.
Organismos nacionais e internacionais apoiam a produção de padrões. Entre
eles encontram-se: ANSI, BSI, OTAN e IEEE. Tais padrões estão em linguagens
de programação como Java e C++, notações, gráficos, símbolos e
procedimentos para derivação e escrita de requisitos de software, procedimentos
de garantia de qualidade e processos de verificação e validação de software.
O framework de normas ISO 9001 aplica-se a organizações que projetam,
desenvolvem e mantêm produtos, inclusive software. Este foi desenvolvido em
1987, e sua mais nova revisão é de 2008. Este define princípios gerais da
qualidade, descreve os processos gerais de qualidade e estabelece os padrões
organizacionais e os procedimentos que devem ser definidos. Estes são
documentados em um manual de qualidade da organização. Na Figura 4
encontramos os processos essenciais da ISO 9001.
15
Além da ISO 9001, temos também a IEEE 829-2008, uma norma
adequada aos padrões do PMI para gerência de projetos. Neste caso,
consideramos a fase de testes como um projeto paralelo ao desenvolvimento de
software, seguindo as abordagens desta norma. Ela trata exclusivamente de
teste de software, suprindo uma carência dos padrões da PMI. Segundo esta
norma, a atividade de teste de software deve fornecer informações objetivas
sobre a qualidade do software que está em desenvolvimento.
Sabemos que a certificação ISO 9001 não garante completamente que o
desenvolvimento de software e o produto final de fato estejam de acordo com o
que nossos usuários precisam e esperam, mas que todos os processos estão
em conformidade com a norma. É claro que se a empresa é certificada, ela fará
o possível para garantir tanto processos quanto software de acordo com o
desejado pelos usuários finais.
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
TROCANDO IDEIAS
SÍNTESE
16
assegurar que o software tenha poucos defeitos e esteja em conformidade com
padrões de manutebilidade, confiabilidade e portabilidade. Os padrões são muito
importantes para a garantia de qualidade, pois por meio de suas melhores
práticas oferecem uma base para construção de software de boa qualidade.
O processo de documentação, que é um elemento bastante importante dentro
da área de qualidade, pode ser baseado em um conjunto de procedimentos da
garantia de qualidade sugeridas pela ISO 9001. Optar por revisões e inspeções
garantirão melhoria no processo e no produto. As revisões dos entregáveis são
técnicas usadas para avaliação da qualidade, enquanto que inspeção de
programas ou revisão em pares buscam possíveis erros e omissões. Quando
falamos em medição de software, usamos coleta de dados quantitativos capazes
de subsidiarem métricas de software para garantir a qualidade tanto do produto
quanto do processo.
REFERÊNCIAS
CAMPOS, F. M. Qualidade, qualidade de software e garantia da qualidade
de software são as mesmas coisas?. Disponível em:
http://www.linhadecodigo.com.br/artigo/1712/qualidade-qualidade-de-software-
e-garantia-da-qualidade-de-software-sao-as-mesmas-coisas.aspx em maio de
2016.
17
SHIGUNOV NETO, A. Introdução à gestão da qualidade e produtividade:
conceitos, história e ferramentas. Curitiba: InterSaberes, 2016.
18
QUALIDADE DE SOFTWARE
AULA 3
1
CONVERSA INICIAL
CONTEXTUALIZANDO
2
(PINHEIRO, 2015). Também temos uma definição mais formal sobre bug
(PATTON, 2005 apud PINHEIRO, 2015):
Um bug ocorre quando uma ou mais das opções abaixo for verdadeira:
O software NÃO faz algo que a especificação diz que ele deveria
fazer;
O software FAZ algo que a especificação diz que ele NÃO
deveria fazer;
O software faz algo que a especificação não menciona;
O software NÃO faz algo que a especificação NÃO menciona,
mas deveria mencionar; e
O software é difícil de usar, entender, ou na visão do testador
pode ser visto pelo usuário final como não estando correto.
3
Figura 1: Erros, defeitos e falhas
Leitura obrigatória
SOMMERVILLE, 2011
Saiba mais
http://www.linhadecodigo.com.br/artigo/2775/introducao-ao-teste-de-
software.aspx
4
Gostaria que agora você olhasse e refletisse sobre o número de
oportunidades profissionais que esta área de qualidade de software pode
oferecer-lhe. Utilize o link: <http://ibqts.com.br/> para compreender e ampliar sua
visão sobre possibilidades de atuação na área de engenharia de software,
focando em questões de qualidade e testes de software. Liste as certificações
existentes, bem como suas finalidades dentro do processo de desenvolvimento
de software.
http://ibqts.com.br/
5
as possibilidades de formas e alternativas de entrada de dados, bem como as
diversas possibilidades e condições criadas pela lógica de algoritmos de cada
desenvolvedor. Há estimativas que garantem que a média do número de defeitos
em programas liberados para testes é de 1 a 3 por 100 instruções executáveis
(RIOS, 2008). E então você se perguntará: Se não conseguimos atingir 100% de
excelência na área de testes, por que testar? Teremos que lembrá-lo que o
propósito dos testes é a descoberta e correção dos problemas com foco na
melhoria e na qualidade do software. Então, quanto ele deve melhorar? De
acordo com o que a empresa está consciente em investir numa equipe de testes,
capaz de tornar a quantidade de defeitos tendendo a zero. Logo, quanto mais
tempo e recursos financeiros dedicados ao processo de testes, mais perto da
satisfação do cliente chegaremos.
Leitura obrigatória
SOMMERVILLE, 2011
6
Saiba mais
O IBQTS, Instituto Brasileiro de Qualidade em Testes de Software, é uma
entidade de caráter de pesquisa e órgão certificador de profissionais da área
de Engenharia de Requisitos e Engenharia de Testes de Software, reconhecido
oficialmente por empresas e instituições de ensino, tanto no Brasil quanto no
exterior.
7
do domínio do problema ou da organização. Esta metodologia deverá conter as
fases do seu ciclo de vida, como por exemplo na Figura 2.
Planejamento
Preparação
8
Na tabela 1 mostramos um detalhamento de cada fase de um processo
de testes com suas ações requeridas e verificações.
testes
Elaboração e revisão dos Verificação (Revisões
Projeto lógico e físico casos de teste e dos roteiros / WalkThrough /
de teste Inspeção)
Atualização do plano de
projeto de desenvolvimento
Verificação (Revisões
/ WalkThrough /
Execução
Leitura obrigatória
SOMMERVILLE, 2011
9
mundos. Vamos classificar estes testes existentes e suas características para
compreendermos o que utilizar e em qual momento do nosso planejamento e
execução de testes.
Tipos de teste segundo Rios (2008):
Testes de regressão: garantem que o software atenda aos requisitos
mesmo depois de sofrer manutenções. Um conjunto de dados e scripts
contém uma baseline e executam para verificação de mudanças
introduzidas posteriormente. Discrepâncias são resolvidas antes de se
atingir o próximo nível de testes.
Testes de carga: avaliam a resposta de um software com pesada carga
de dados e/ou grande número de usuários simultaneamente para
verificação do nível de escalabilidade, confrontando o tempo de
resposta ou falha.
Teste de estresse: simulação de situações que possam ocorrer em
produção, como falta de memória, falta de espaço em disco.
Teste Back-to-back: executado em versões diferentes do software com
comparação dos resultados.
Teste de configuração: verifica a aptidão do software para rodar em
diferentes versões ou configurações de ambientes (hardware, browsers
ou versões de browsers).
Teste de usabilidade: verificação do nível de facilidade de uso do
software pelos usuários. Efetuado principalmente em aplicações Web em
decorrência do grande número de navegações entre páginas. Clareza de
linguagem, mensagens de erro e links para páginas também são testados.
Testes de instalação: verificação da instalação parcial, total ou
atualização de aplicativo.
Testes de Segurança: validação da capacidade e qualidade da
recuperação do software após crashes, falhas de hardware ou outros
problemas catastróficos.
10
Teste de compatibilidade: validação da capacidade do software em
executar em um ambiente específico (hardware/software/sistema
operacional/rede).
Teste de desempenho: garante que o sistema atenda aos níveis de
desempenho e tempo de resposta acordados com os usuários e definidos
nos requisitos. (Performance).
Testes funcionais: grupos de testes que avaliam a especificação versus
a implementação.
Testes de qualidade de código: verificação do código fonte dos
programas em conformidade com padrões, melhores práticas, instruções
não executadas entre outros.
Testes de alterações: rastreiam alterações de programas durante o
processo de testes.
Testes de recuperação de versões: verificação da capacidade de
retorno a uma versão anterior do sistema.
Testes de interoperabilidade: avaliação das condições de integração
com outros ambientes/sistemas (troca de informações).
Testes de sobrevivência (confiabilidade ou disponibilidade):
avaliação da capacidade do software em continuar operando quando
algum outro elemento pare de funcionar ou fique inoperante (hardware,
por exemplo).
Testes estáticos: avaliação da documentação do projeto (modelos,
requisitos).
Testes embutidos: avaliação da integração entre hardware e software.
Testes de verificação do site Web: verificação de problemas com
determinados sites Web (links inválidos, arquivos órfãos, páginas lentas).
Testes de conferência de arquivos: verificação da alteração de arquivos
utilizados.
Testes Alfa: executados em ambiente de desenvolvimento na
proximidade da conclusão.
11
Testes Beta: executados durante a fase desenvolvimento e testes, mas
praticamente concluídos, com o maior número possível de defeitos e
problemas encontrados antes do release final.
12
observadas neste momento. Usuários com suporte da equipe técnica de
testes são responsáveis por este teste.
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
Saiba mais
Os 13 principais tipos de testes de software:
http://www.targettrust.com.br/blog/desenvolvimento/testes/os-13-principais-
tipos-de-testes-de-software/
13
1. Atividade de pré-revisão: são atividades preparatórias essenciais para
a eficácia da revisão. Atividades relacionadas com planejamento e
preparação da revisão. Envolve uma equipe de revisão, organização de
tempo e lugar para que ocorram as revisões. Os envolvidos compreendem
o que o software deverá fazer, bem como os documentos de padrões
relevantes. Os revisores podem fornecer comentários sobre o software,
caso não participem de alguma reunião de revisão.
2. Reunião de revisão: durante a reunião o líder da revisão encaminha um
documento com todos os problemas e questões de qualidade a serem
discutidos. Este líder será responsável por garantir que todos os
comentários escritos sejam considerados no relatório final. Além dos
comentários, deverão ser registradas todas as ações corretivas
acordadas durante a reunião.
3. Atividades pós-revisão: todas as questões e problemas levantados
devem ser abordados. Esse processo envolve a correção de bugs de
software, refatoração de software entre outras técnicas para que esteja
em conformidade com os padrões de qualidade ou necessidade de nova
redação de documentos. Ao término, o presidente do grupo de revisões
deve averiguar se todos os comentários foram levados em consideração.
Dependendo do caso, será necessária nova reunião para apuração da
conformidade com as reuniões de revisão.
14
Figura 3: Processo de revisão de software
15
bugs no programa. Elas envolvem equipes de diferentes origens, as quais
revisam linha por linha o código-fonte dos programas, buscando defeitos e
problemas e os descrevem em relatórios nas reuniões de inspeção. Os defeitos
podem ser erros lógicos, anomalias no código ou detalhes dos modelos de
projeto.
O interessante é lembrarmos que inspeções e revisões são estáticas e
podem ser aplicadas tanto em código de programas quanto em modelos e
documentação de projeto de software. Elas podem ser prejudicadas quando
utilizamos métodos ágeis para o desenvolvimento de software, uma vez que a
utilização de documentações com modelos do projeto não é comum em
desenvolvimento ágil.
Leitura obrigatória
SOMMERVILLE, 2011
16
Esta definição V&V contém muitas atividades da garantia da qualidade de
software. Incluem atividades como revisões técnicas, auditorias de qualidade e
configuração, monitoramento de desempenho, simulação, estudo de viabilidade,
revisão de documentação, revisão de base de dados, análise de algoritmo, teste
de desenvolvimento, teste de usabilidade, teste de qualificação, testes de
aceitação e teste de instalação (PRESSMAN, 2011). A garantia e a qualidade
utilizam o teste como último elemento para estimar mais pragmaticamente seus
erros descobertos. Na fase de verificação, utilizamos todos ou alguns dos testes
que foram classificados no tema “tipos de testes”. Lá pudemos conhecer um
pouco de cada tipo de teste e sua importância para a qualidade de software.
Ao terminarmos a fase de verificação com o uso das técnicas escolhidas
para cada projeto, voltamo-nos para a fase de validação. Agora nos
preocuparemos com o sistema que é visualizado e reconhecido pelos usuários.
Seu principal objetivo é apontar o sucesso do funcionamento do software,
confrontando o esperado com o realizado. Os testes da validação demonstram
conformidade com os requisitos. Logo, é importante que o plano de testes
descreva as classes de testes a serem conduzidas e um procedimento de testes
para definição dos casos de testes específicos que garantam os requisitos
funcionais de acordo com as expectativas dos clientes. Alguns exemplos de
requisitos cumpridos estarão em conformidade com transportabilidade,
compatibilidade, recuperação de erro, manutenibilidade. Caso sejam
descobertos desvios de especificação, cria-se uma lista de deficiências que
serão corrigidas conforme um plano com prazos e negociações junto aos
clientes.
Percebemos até aqui que o tema sobre garantia da qualidade de processo
e de software é extenso e carece de adaptação a cada tipo e tamanho de projeto.
Que há diferenças conceituais entre revisões, inspeções, verificações e
validações. Que cada uma tem seu grau de importância dentro do nosso
processo de testes e qualidade de software. Que entraremos num dilema ao
utilizar métodos ágeis com a aplicação de garantia da qualidade de software.
Mas nada que não possa ser resolvido utilizando-se do bom senso. A área de
17
engenharia de software é muito ampla e repleta de métodos, técnicas,
ferramentas e frameworks. Cabe a cada líder de projeto adaptar o que seja mais
conveniente com o intuito de garantir um processo e um software com qualidade
esperada pelos stakeholders.
Leitura obrigatória
SOMMERVILLE, 2011
http://www.devmedia.com.br/a-importancia-da-validacao-e-da-
verificacao/24559
TROCANDO IDEIAS
SÍNTESE
18
DEFEITO, o qual ocorre devido a problemas de informações, de dados,
de instruções incorretas; e
FALHA, que ocorre quando um programa não se comporta conforme o
estabelecido ou apresenta resultados inconsistentes.
REFERÊNCIA
19
SHIGUNOV NETO, A. Introdução à gestão da qualidade e produtividade:
conceitos, história e ferramentas. Curitiba: InterSaberes, 2016.
20
QUALIDADE DE SOFTWARE
AULA 4
1
CONVERSA INICIAL
Olá, seja bem-vindo. Assista ao quarto vídeo da professora Maristela
Regina Weinfurter Teixeira, que irá apresentar e contextualizar esta disciplina,
bem como os assuntos que serão estudados nesta aula.
CONTEXTUALIZANDO
Já conversamos sobre inspeções, revisões, verificações e validações
de software para garantia da qualidade. Compreendemos também a diferença
entre erros, defeitos e falhas em nossos sistemas. Vamos explorar agora as
diferenças entre alguns tipos de software para conseguirmos adaptar técnicas a
cada plataforma diferente. Perceberemos que não temos a necessidade de
utilizarmos todas as técnicas que estudamos, porém, como agrupá-las da melhor
forma para ganharmos um resultado mais próximo do esperado por nossos
usuários finais. Resultados estes que por vezes independem de requisitos
funcionais, como no caso dos testes de sistemas que agrupam técnicas de testes
capazes de garantir segurança, disponibilidade entre tantas outras questões não
funcionais extremamente importantes para o bom funcionamento de um
software.
Escolhemos trabalhar com software convencional, orientado a objetos e
para Web. Não conseguiremos abordar exatamente todos os ambientes e
plataformas, mas seguramente são os tipos mais comuns existentes no
mercado. A partir destes, verificaremos que os demais utilizam muitas
características existentes nestes três tipos escolhidos para nossos estudos.
Quando falamos em software convencional, podemos exemplificar como
um sistema de ERP, ou simplesmente um sistema de controle de horas.
Normalmente possuem interfaces padronizadas, com menus e submenus e que
executam geralmente em um formato cliente-servidor. Apesar de critérios de
segurança, disponibilidade e escalabilidade serem importantes, tendem a utilizar
testes mais focados nas funcionalidades e requisitos do sistema. O que mudaria
para um sistema orientado a objetos? Estamos falando da preocupação com
2
elementos importantes para a orientação a objetos, tais como reusabilidade,
funcionamento individual e colaborativo das classes, instanciações e hierarquias.
Precisamos ter um olhar bastante focado na integração de classes por meio de
seus métodos que nos gerem resultados esperados. Porém, quando falamos de
sistemas para Web, precisaremos lembrar que estamos trabalhando dentro de
um ambiente multidisciplinar com algum grau de complexidade e integração.
Precisaremos planejar testes eficientes e abrangentes, que avaliem, verifiquem
e inspecionem questões relacionadas à interação humano-computador,
simulações, multimídia, links, hipertextos, segurança, escalabilidade, segurança
e disponibilidade! Ufa! De fato, nossa preocupação com testes aumenta quando
temos a grande rede mundial envolvida em nosso modesto projeto!
Leitura obrigatória
SOMMERVILLE, 2011
Saiba mais
O que é Web?
https://www.infoq.com/br/news/2015/03/o-que-e-web
https://www.youtube.com/watch?v=cl_g0osRYBw
“A visão "o que pode ser feito no navegador Web" tem mudado para o
que agora é chamado de Plataforma Web [...] e sendo o elemento
3
central do que está acontecendo no W3C. O W2C tem focado muito
em tornar a Web em uma plataforma que pode competir com os seus
concorrentes, isto é o iOS e Android.
O que você encontrou que possa subsidiar testes de software para Web
e garantia da qualidade de processos de desenvolvimento para Web?
Leitura obrigatória
https://www.infoq.com/br/news/2015/03/o-que-e-web
http://www.w3c.br/Home/WebHome
Testabilidade
4 Compreensibilidade
Um bom teste não é redundante, opta-se por não ser muito simples e nem
muito complexo e revela erros de acordo com um tempo e recursos delimitados
para indução de erros. E, principalmente, deve ter um olhar interno e outro
externo.
Testes de Caixa-Branca
1. Teste de caminho básico: São criados casos de teste para exercitar o
conjunto básico de execução de todas as instruções de um programa pelo
menos uma vez durante o teste. Podemos utilizar as seguintes notações:
5
Figura 2: Notação de Grafo de Fluxo
6
c. Derivação de casos de testes: método de teste de caminho base
pode ser aplicado a projeto procedimental. Aqui ele se torna um
caminho básico como uma série de passos (Figura 4).
7
d. Matrizes de grafos: este procedimento deriva um grafo de fluxo
até que um conjunto de caminhos-base seja determinado para uma
possível automatização (Figura 5).
8
Testes de Caixa-Preta
Os testes de caixa-preta devem abordar questões tais como:
9
2. Particionamento de equivalência: divisão do domínio de entrada de um
programa em classes de dados para criação de casos de testes.
3. Análise de valor limite: técnica de projeto de casos de teste que
complementa o particionamento de equivalência. Muitas vezes aplicado
intuitivamente por engenheiros de software para detecção de erro.
4. Teste de matriz ortogonal: para domínio de entrada pequeno, mas muito
grande para acomodar o teste exaustivo. Aplicada a uma lógica
defeituosa de um componente, por exemplo.
5. Testes Baseados em Modelos: Técnica de caixa preta que usa
informações contidas no modelo de requisitos como base para geração
de casos de teste. Utilizam diagramas de estado da UML.
6. Testes para ambientes, arquiteturas e aplicações especializadas:
a. Teste de interfaces;
b. Teste de arquitetura cliente-servidor (função da aplicação, servidor,
base de dados, transação e comunicação);
c. Teste de documentação e recursos de ajuda;
d. Teste para sistema em tempo real (tarefa, comportamento,
intertarefa, sistema).
10
software é interminável. O que precisamos estar bem atentos é que não
conseguiremos utilizar todas as técnicas existentes. Precisamos aprender a
planejar nossos testes de tal forma que se adaptem de forma equilibrada um
bom plano e uma execução de testes, capaz de fazer com que atinjamos o nosso
principal objetivo: superar as expectativas de nossos usuários.
Leitura obrigatória
SOMMERVILLE, 2011
Saiba mais
https://www.youtube.com/watch?v=mDy2QV96Q1g
11
classes colaboram uma com as outras e os subsistemas se comunicam
através das camadas da arquitetura.
12
convencionais. A visão dos testes deve incluir revisão de requisitos e modelo de
projeto, além dos testes de classes, individualmente e na colaboração e troca de
mensagens entre si. No caso de software OO, as Threads merecem uma
atenção especial, observando-se detalhes do projeto ao código das mesmas. O
teste com base em cenário é um dos tipos dominantes para validação de
sistemas orientados a objeto.
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
Saiba mais
www.asq.org/software
www.sei.cmu.edu
www.isospice.com
13
para ocorrências de sintaxe. Exatidão das informações, consistência e
ausência de ambiguidade no caso da semântica.
2. Função: para descobrirmos erros de falta de conformidade de requisitos,
instabilidade e inconformidade com padrões apropriados (Ajax, HTML).
3. Estrutura: extensibilidade a novos conteúdos e novas funcionalidades.
4. Usabilidade: facilidade de uso, sintaxe e semântica necessárias.
5. Navegabilidade: experimentação de links impróprios, errados, inativos ou
quaisquer outros erros de navegação.
6. Desempenho: cargas extremas devido à enorme quantidade de usuários
simultâneos.
7. Compatibilidade: adequação a servidores, ambientes, plataformas e
browsers.
8. Interoperabilidade: interface adequada para outras aplicações ou bases
de dados.
9. Segurança: investigação de vulnerabilidades potenciais.
14
Figura 7: Planejamento de Testes para software Web
15
Quando pensamos na interface, precisamos lembrar que há um conjunto
de elementos a serem testados:
1. Links
2. Formulários
3. Script no lado do cliente
4. HTML dinâmico
5. Janelas Pop-up
6. Scripts CGI
7. Conteúdo encadeado (streaming)
8. Cookies
9. Mecanismos de interface específicos do aplicativo
16
desempenho (carga e estresse), segurança, configuração, testes do lado do
servidor e testes do lado do cliente.
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
Saiba mais
https://www.youtube.com/watch?v=mDy2QV96Q1g
17
Figura 10: Testes de Sistema
Testes de
Recuperação
Testes de
Segurança
Testes de
Desempenho
Testes de
Disponibilização
18
2. Testes de Segurança: segurança é um tempo altamente relevante e
sério. Os ataques podem ser por diversão de harckers, funcionários
insatisfeitos que invadam por vingança, pessoas desonestas para ganhos
ilícitos. A realidade da segurança é muito variada e gera muitas dores de
cabeça aos profissionais de TI em geral. Esse tipo de teste tenta verificar
se mecanismos de proteção incorporados ao sistema de fato o protegerão
contra acessos indevidos. Durante este tipo de teste, os testadores devem
simular que estejam invadindo o sistema, e neste caso vale tudo! São
senhas obtidas por meios externos, ataques ao sistema personalizado
para romper defesas, sobrecarregar o sistema e, neste caso, o sistema
recusa acesso a outros, invasões durante a recuperação, exame de
dados que não estão em segurança ou até mesmo encontrar a chave de
entrada para o sistema. Um bom teste de segurança será capaz de invadir
o sistema e o papel do criador do sistema é tornar o custo da invasão
maior do que o valor das informações que poderiam ser obtidas.
19
combinação de números para causar instabilidade ou processamento
inadequado.
Testes de sistemas não devem ser deixados de lado e nem tão pouco
subestimados. A questão de segurança dos dados e disponibilidade do sistema
são essenciais para as organizações que possuem software utilizado por muitos
usuários em todo o Mundo.
20
Leitura obrigatória
PRESSMAN, 2011 – Páginas 473 a 488.
Saiba mais
www.testmanagement.com
www.compuware.com/
www.opensourcetesting.org
https://www.devexpress.com
http://ww3.qualitylabs.org/
http://www.bug-tracking.info/
http://www.methodsandtools.com/
TROCANDO IDEIAS
21
SÍNTESE
REFERÊNCIA
22
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7.
ed. Porto Alegre: AMGH, 2011.
23
QUALIDADE DE SOFTWARE
AULA 5
1
CONVERSA INICIAL
CONTEXTUALIZANDO
Para relembrar, padrões são importantes por várias razões, entre elas
(SOMMERVILLE, 2011):
2
Estes padrões são construídos e mantidos por várias instituições, entre
elas: ANSI, IEEE e W3C. Já estudamos alguns detalhes da ISO 9001 em outro
encontro, porém vamos trabalhar neste momento a IEEE 829-2008, uma norma
adequada aos padrões do PMI para gerência de projetos. Nosso objetivo agora
é trabalhar questões relacionadas à documentação, porém, vamos relembrar
como seria um planejamento da garantia de qualidade fornecida pela ISO 9001,
conforme a Figura 1.
3
Figura 2: Ciclo de vida do projeto de teste de software
Gerenciar
Defeitos
4
3 - Crítico Danos permanentes em pessoas, falha parcial na missão,
impactos financeiros ou econômicos para organização de grau
extenso, danos sociais extensos.
2 - Marginal Injúrias causadas a pessoas, degradação secundária da
missão, perdas financeiras ou sociais moderadas.
1 - Desprezível Consequências desprezíveis em todos os níveis.
Nível Descrição
4 O software necessita funcionar corretamente, caso contrário graves
consequências ocorrerão (vidas, danos ambientais, perdas financeiras,
econômicas). Plano de mitigação deve ser executado.
3 O software deve funcionar corretamente ou os resultados não serão
alcançados, causando sérias consequências. Plano de mitigação parcial
ou integral é aplicado.
2 O software deve funcionar corretamente ou os resultados devem ser os
esperados, caso contrário teremos consequências pequenas. Plano de
mitigação parcial é executado.
1 O software necessita funcionar corretamente e seus resultados
alcançados, teremos consequências desprezíveis. Plano de mitigação
desnecessário.
5
Estas são algumas questões abordadas pela norma para que possamos
iniciar nosso plano e projeto de testes e obtermos resultados objetivos e factíveis
de medição.
Leitura obrigatória
SOMMERVILLE, 2011
Pesquise
Busque mais informações sobre normas e padrões que possam auxiliar
tanto na elaboração de um bom plano de testes quanto de sua documentação.
Avalie e compare características em comum destas normas.
1. Introdução
a. Identificador
b. Escopo
c. Referências
6
2. Detalhes deste nível de Projeto
a. Funcionalidades (features) a serem testadas
b. Abordagem refinada
c. Casos de Teste com identificação
d. Critérios de passagem e falha por funcionalidades
e. Entregáveis
3. Geral
a. Glossário
b. Procedimentos de alterações do documento e histórico
de alterações.
Casos de Teste
Segundo Rios (2008):
Uma unidade de teste que será executada pelo testador, seja
manualmente ou automaticamente. Esse é constituído pelos seguintes
campos:
1. Introdução
a. Identificador do documento
b. Escopo
c. Referências
d. Contexto
e. Notas para descrição
2. Detalhes para cada caso de teste
a. Identificador do caso de teste
b. Objetivos
c. Especificações de entrada
d. Especificações de saída
e. Necessidades de ambiente
f. Requisitos ou procedimentos especiais
g. Dependências entre casos de teste
3. Global
a. Glossário
b. Procedimentos de alterações do documento e histórico de
alterações.
7
Exemplo de um Caso de Teste:
Procedimentos de Teste
Especificação dos passos necessários para execução de um grupo de
casos de teste. Algumas empresas possuem uma terminologia Roteiro de Teste
para definição de cada grupo. Esse é constituído pelos seguintes campos:
1. Introdução
a. Identificador do documento
b. Escopo
c. Referências
8
d. Relações com outros documentos e procedimentos
2. Detalhes
a. Entradas, saídas e requisitos especiais
b. Ordem para execução dos casos de teste
3. Global
a. Glossário
b. Procedimentos de alterações do documento e histórico de
alterações.
Leitura obrigatória
SOMMERVILLE, 2011
Relatório de Log
1. Introdução
a. Identificador do documento
b. Escopo
c. Referências
9
2. Detalhes
a. Descrição
b. Descrição da execução
c. Resultados
d. Informações sobre o ambiente
e. Eventos anormais
f. Qualquer situação que causou interrupção do teste
g. Entradas das atividades e eventos
3. Global
a. Glossário
Relatório de Anomalias
1. Introdução
a. Identificador do documento
b. Escopo
c. Referências
2. Detalhes
a. Sumário
b. Data da anomalia
c. Contexto
d. Descrição da anomalia
e. Descrição da execução
f. Resultados
g. Informações sobre o ambiente
h. Eventos anormais
i. Qualquer situação que causou interrupção do teste
10
3. Global
a. Procedimentos de alterações do documento e histórico das
alterações
Relatório de Estado
1. Introdução
a. Identificador do documento
b. Escopo
c. Referências
2. Detalhes
a. Sumário
b. Alterações do planejado
c. Métricas de estado do teste
3. Global
a. Procedimentos de alterações do documento e histórico
das alterações
Há um relatório de nível de teste que será feito para cada tipo de teste
adotado em nosso plano, tais como teste de unidade, teste de integração, teste
de sistema e teste de aceitação.
1. Introdução
a. Identificador do documento
b. Escopo
c. Referências
2. Detalhes
a. Visão geral dos resultados do teste
b. Resultados detalhados do teste
11
c. Racional das decisões
d. Conclusões e recomendações
3. Global
a. Glossário
b. Procedimentos de alterações do documento e histórico
das alterações
1. Introdução
a. Identificador do documento
b. Escopo
c. Referências
2. Detalhes
a. Visão geral dos resultados do teste
b. Resultados detalhados do teste
c. Racional das decisões
d. Conclusões e recomendações
3. Global
a. Glossário
b. Procedimentos de alterações do documento e histórico
das alterações
12
Etapas do ciclo de vida Documentos produzidos
Planejar Teste Plano Máster de Teste
Plano de teste
Projetar Teste Projeto de Teste
Casos de Teste
Procedimentos de Teste
Relatório de Passagem de Itens de Teste
Executar Teste Script de Teste
Relatório de Estado de Teste
Relatório de Anomalias
Relatório de Log de Teste
Gerenciar Defeitos Relatório de Incidentes
Relatório de Log de Teste
Analisar Resultados Relatórios de Teste (Sumário)
Relatório Máster de Teste
Leitura obrigatória
SOMMERVILLE, 2011
13
regras claramente estabelecidas. Nas ciências, físicas, medicina,
economia e mais recentemente nas ciências sociais, podemos medir
os atributos antes considerados incomensuráveis. É claro que essas
medidas não são tão refinadas como muitas feitas nas ciências físicas,
mas existe [e são tomadas decisões importantes com base nelas].
Percebemos que a obrigação de tentar ‘medir o incomensurável’ para
melhorar nossa compreensão de entidades particulares é tão poderosa
na engenharia de software quanto em qualquer outra disciplina.
(PRESSMAN, 2011).
E=V/PL
14
PL=1/(n1/2)*(N2/n2)
15
Há também métricas para manutenção, que não deixariam de incluir
testes, pois a manutenção prevê o acerto/correção de problemas identificados
na operação de um sistema existente.
Leitura obrigatória
SOMMERVILLE, 2011
16
melhorias pelo cliente ou alterações nos requisitos. A métrica funciona
orientada ao tempo médio de alteração (mean-time-to-change - MTTC).
Quanto mais baixo o MTTC, mais fáceis de manutenção são
os programas.
3. Integridade: este item se tornou, nos últimos anos, cada vez mais
importante, em especial no que tange a questões de segurança (hackers,
terroristas). Ele mede a habilidade de um sistema em resistir a ataques,
que podem ser feitos por programas, dados ou documentos. Para
medirmos a integridade precisamos definir atributos de ameaça e
segurança. Ameaça corresponde à probabilidade de ataque em um
intervalo de tempo. Segurança é a probabilidade de um ataque ser
repelido. Integridade = Σ[1-(ameaça*(1-segurança))].
17
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
18
Educação e treinamento também são itens que beneficiam nosso
ambiente de desenvolvimento de software. Percepções incorretas de processos
e práticas conduzem a decisões inadequadas, acarretando resultados não
desejados. Compreensão de conceitos, métodos genéricos, tecnologias,
ferramentas específicas e outros tópicos relacionados à qualidade não são
uma questão de conteúdo, mas de aprimoramento da consciência coletiva para
o uso destas, buscando alcançarmos melhores resultados em nossos processos
e produtos.
Mensuração indica que estamos trabalhando com fatores qualitativos e
quantitativos. Queremos resultados subjetivos, mas para isto precisamos apurar
nossos números e percentuais que indicam o quanto estamos evoluindo e
acertando.
Além da CMMI, podemos considerar outras estruturas de SPI, tais como
(PRESSMAN, 2011):
1. SPICE: iniciativa internacional para suporte a avaliação de
processo da ISO e outros padrões relacionados ao ciclo de vida.
2. ISO/IEC 15504: para avaliação de processo.
3. Bootstrap: para organizações de pequeno e médio porte em
conformidade com SPICE.
4. PSP e TSP: processo em detalhes para medição em processos
de desenvolvimento de software.
5. TickIT: método de auditoria para conformidade com ISO
9001:2000.
TROCANDO IDEIAS
Fórum: Se você atua na área de TI ou tem algum tipo de relacionamento com
pessoas que já atuam, tente trocar ideias de como a área de testes,
documentações e métricas de testes são observadas nas organizações que você
19
conheça. Caso você não tenha experiência ou não tenha contato direto, tente
pesquisar na internet o quão explorado e praticado é este tema.
SÍNTESE
REFERÊNCIA
LÉLIS, E. C. Gestão da qualidade. São Paulo: Pearson Prentice Hall, 2012.
20
RIOS, E. Documentação de teste de software. 2. Ed. Iteste: Instituto de teste de
software. 2008.
21
QUALIDADE DE SOFTWARE
AULA 6
1
CONVERSA INICIAL
Olá, seja bem-vindo. Assista ao sexto vídeo da professora Maristela
Regina Weinfurter Teixeira, que irá apresentar e contextualizar esta disciplina,
bem como os assuntos que serão estudados nesta aula.
CONTEXTUALIZANDO
Ao percorrermos os caminhos da gestão e garantia da qualidade no
desenvolvimento de software, percebemos que há uma concentração bastante
grande na área de testes, sejam eles inspeções, revisões, validações ou
verificações. Vimos que há divergências de opiniões, pois quando olhamos
profundamente para a área de qualidade total, percebemos que não
conseguimos escapar dos inúmeros documentos, auditorias, controles e
estatísticas, porém, encontramos um manifesto em prol de metodologias ágeis
para garantir menos papel e mais produtividade. Parece-nos antagônico então
pensarmos em qualidade versus agilidade! Observando essas variadas formas
de se pensar produtividade e qualidade em processos de desenvolvimento de
software, vamos focar em melhoria contínua, tentando agregar conceitos mais
conservadores (documentais e grande número de recursos humanos e
financeiros), bem como para equipes mais ágeis (com poucos recursos e
focadas num bom custo com um bom prazo de entrega)!
Assim iniciamos falando sobre o que seria melhoria contínua. E esse
termo não surge na área de informática, assim como o termo qualidade não é
proveniente desta. A melhoria contínua tem origem na Terra do Sol Nascente
(Japão), e o termo original para isso é KAIZEN. Kaizen agrega um significado de
“melhoria contínua nos âmbitos do trabalho, família, pessoal e social.” (ADAMI,
2016). O grande propósito do Kaizen consiste no aprimoramento diário e
constante de nossas atividades (profissionais ou pessoais) para aumento da
produtividade, poupando tempo, recursos, esforços, bem como humanizando as
relações.
Para a administração, a expressão refere-se a uma filosofia de vida e não
simplesmente a um conjunto de ferramentas. Para Costa Junior (2012), Kaizen
2
é “um processo de aprimoramento contínuo, que consiste na busca de melhorias
pela inovação dos processos produtivos, dos métodos, dos produtos, das regras
e dos procedimentos.” Ele procura eliminar problemas por meio da identificação
de ideias de melhoria, com a participação de todos na resolução dos mesmos.
Não teremos apenas indicadores de performance,
mas mediremos a taxa de melhoramentos, aplicando ações de
melhoria e implementações em um determinado período de tempo
(COSTA JUNIOR, 2012).
Ao aplicarmos a ideia do Kaizen, desejamos alguns dos seguintes
resultados (COSTA JUNIOR, 2012):
Melhorias nos processos produtivos;
Adaptação ou adequação dos postos de trabalho, das
máquinas e dos equipamentos;
Adequação dos métodos de trabalho;
Redução de desperdícios em processos;
Capacitação e envolvimento dos colaboradores;
Aumento de produtividade.
Nosso esforço nessa aula será buscar e mostrar ideias e alternativas para
conseguirmos exercitar a filosofia do Kaizen, demonstrando que é possível
3
aplicarmos engenharia de software e qualidade de software, mesmo que com o
mínimo de documentação, observando que nosso alvo será sempre superar as
expectativas de nossos usuários!
Pesquise
Percebemos que melhoria contínua tem origem no Japão. Várias
ferramentas, técnicas, filosofias que foram incorporadas à Teoria Geral da
Administração possuem origem em estudos e experimentos japoneses. Busque
dentro da Engenharia de Software, ou mais precisamente dentro da área de
qualidade de software visualizar outras técnicas, ferramentas ou métodos que
possam ter origem nessas filosofias de produtividade. Vamos refletir e analisar
o quanto podemos melhorar em nossa produtividade e em serviços e processos
com mais qualidade.
TEMA 1: CMMI
4
Figura 1: Dimensões do metamodelo CMMI
Ele possui uma série de níveis, que são devidamente avaliados por
profissionais especializados pelo Instituto de Engenharia de Software
(CMM07 apud PRESSMAN, 2011):
5
Nível 3: Definido – todos os critérios do nível de capacidade 2 foram
satisfeitos. Além disso, o processo é adaptado com base no conjunto
de processos padronizados da organização de acordo com as regras
de adaptação da organização, e dos produtos acabados, medidas e
outras informações de melhoria de processo para agregar valores ao
processo organizacional (CMM07).
6
Figura 2: Áreas de Processo da CMMI
Leitura obrigatória
SOMMERVILLE, 2011
7
TEMA 2: KANBAN
O método Kanban, aplicado ao desenvolvimento de software, percorre a
ideia de não sobrecarregar a equipe de criação do software. Contém princípios
básicos que consideram que a equipe deve iniciar uma nova tarefa quando é
capaz de realizá-la. Deve aceitar mudanças incrementais e evolutivas
estimuladas pelo método Kanban, respeitando os atuais processos, papéis
e responsabilidades. Mas o que é Kanban e no que ele poderá nos auxiliar na
garantia da qualidade de processo e de software?
“Kanban é uma palavra japonesa que significa ‘cartão ou cartaz’, que pode ser
utilizada como cartão ou carta Kanban e tem a finalidade de representar um
sinal.” (COSTA JUNIOR, 2012).
8
O Kanban, na área de TI, torna-se digital, mas o conceito de quadro e
cartões continuam os mesmos. Algumas empresas preferem até adotar a forma
física, pois a visualização em painéis, tabuleiros, lousas e paredes cria uma
sensação de movimento e evolução do processo. Um dos pontos importantes do
Kanban aplicado para garantia da qualidade encontra-se na busca pela
maturidade da produção. Isso é fundamental para a equipe que busca aprender
a construir código de alta qualidade e equilíbrio no trabalho em andamento para
cumprimento de metas e prazos. Aqui a qualidade está atrelada à velocidade no
nível de produção, no desempenho da equipe e na
eliminação de retrabalhos. A figura 3 nos exemplifica um modelo de sinalizador
visual Kanba.
9
disponibilização para o mesmo do software. Para quem atua de acordo com a
metodologia Scrum, um dos desafios enfrentados é o atraso na entrega
conforme o Sprint. A entrega em atraso representa riscos e afeta o desempenho
da produção, bem como o resultado de valor entregue para o cliente. Ele espera
que todos atuem em conjunto em cada atividade, não iniciando outra até que
cada atividade seja encerrada.
Então o Kanban vem agregar em muito um excelente requisito para
aplicarmos garantia de qualidade em nossos processos de desenvolvimento de
software para os quais não temos nem tempo, recursos humanos e financeiros
para adoção de metodologias mais elaboradas.
Leitura obrigatória
MARIOTTI, 2016
Saiba mais
http://www.sabesim.com.br/Kanban-
landing/?gclid=CKapyaH0gc0CFVIFkQodxGoP8w
10
Figura 4: Fluxo de funcionamento do TDD
O processo segue um fluxo procedural (figura 4), para o qual criamos cada
caso de teste, escrevemos um segmento de código, executamos os testes e os
refazemos (corrigimos) até que estejam de acordo com cada caso de teste. Logo,
nosso sistema será escrito em pequenos
incrementos (subfunções) e nenhum código é escrito sem um caso de teste bem
definido. Os testes comandam o projeto detalhado de componentes e códigos-
fontes resultantes.
Aqui fica mais uma tendência para os desenvolvedores de metodologias
ágeis, num caso bem aderente ao método XP (Extreme Programming). Entramos
novamente então com a prática de garantia de qualidade, porém de forma mais
simplificada, enxuta e que apoia o processo de desenvolvimento. Em
consonância com método ágeis, teremos um feedback rápido sobre novas
11
funcionalidades, um código mais limpo, segurança no Refactoring, segurança na
correção de bugs, mais produtividade, aplicação flexível. Refactoring ou
refatoração é o momento que analisamos nosso código para nosso teste passar.
Retiramos duplicidades, renomeamos variáveis, extraímos métodos, classes,
interfaces e utilizamos algum padrão conhecido. Nosso código ficará mais
funcional após a refatoração. (GAMA, 2016).
Leitura obrigatória
SOMMERVILLE, 2011
Saiba mais
http://agiledata.org/essays/tdd.html
12
Uma das iniciativas desse projeto resultou no desenvolvimento do Modelo
de Referência para Melhoria do Processo de Software Brasileiro
(MPS-SW), levando em consideração normas e modelos internacionalmente
reconhecidos, além de boas práticas da engenharia de software e necessidades
de negócio da indústria de software brasileira. (SOFTEX, 2016). Veja Figura 5 a
seguir.
13
Ministério da Ciência, Tecnologia e Inovação (MCTI) e o Serviço Brasileiro de
Apoio às Micro e Pequenas Empresas (SEBRAE).” (SOFTEX, 2016).
1. ISO/IEC 12207:2008
2. ISO/IEC 15504
3. ISO/IEC 20000
4. CMMI-DEV
5. CMMI-SVC
Leitura obrigatória
SOFTEX, 2016
14
Software embarcado (automóveis, eletrodomésticos, etc.), computadores
descartáveis, interação com um ambiente (conjunto de periféricos,
computadores e outros aparelhos), e por aí a fora. Assim, poderíamos catalogar
um pouco sobre as nossas novas características a serem abordadas para a
garantia da qualidade do processo de desenvolvimento de software
(PRESSMAN, 2011):
15
No que isso interfere na garantia da qualidade de processos de software?
Certamente teremos no futuro uma disciplina de Qualidade de Software I e II
para cobrirmos todas as necessidades de variação de acoplamento entre
software, hardware e comunicação.
Leitura obrigatória
SOMMERVILLE, 2011
CAMPOS, 2016
TROCANDO IDEIAS
SÍNTESE
16
técnicas usadas para avaliação da qualidade, enquanto que inspeção de
programas ou revisão em pares buscam possíveis erros e omissões. Quando
falamos em medição de software, usamos coleta de dados quantitativos capazes
de subsidiarem métricas de software para garantir a qualidade tanto do produto
quanto do processo.
REFERÊNCIA
17
GUIA GERAL DO MPS.BR. Disponível em: <http://www.softex.br/wp-
content/uploads/2013/07/MPS.BR_Guia_Geral_Software_2012-c-ISBN-1.pdf>.
Acesso em: maio de 2016.
18