Escolar Documentos
Profissional Documentos
Cultura Documentos
Ebook - Engenharia, Qualidade e Teste de
Ebook - Engenharia, Qualidade e Teste de
QUALIDADE E
TESTE DE SOFTWARE
Jailson Costa dos Santos
LIVRO 3
TESTE
DE SOFTWARE
DADOS DO FORNECEDOR
*Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência.
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio
A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo
ASSISTA
Indicação de filmes, vídeos ou similares que trazem informações comple-
mentares ou aprofundadas sobre o conteúdo estudado.
CITANDO
Dados essenciais e pertinentes sobre a vida de uma determinada pessoa
relevante para o estudo do conteúdo abordado.
CONTEXTUALIZANDO
Dados que retratam onde e quando aconteceu determinado fato;
demonstra-se a situação histórica do assunto.
CURIOSIDADE
Informação que revela algo desconhecido e interessante sobre o assunto
tratado.
DICA
Um detalhe específico da informação, um breve conselho, um alerta, uma
informação privilegiada sobre o conteúdo trabalhado.
EXEMPLIFICANDO
Informação que retrata de forma objetiva determinado assunto.
EXPLICANDO
Explicação, elucidação sobre uma palavra ou expressão específica da
área de conhecimento trabalhada.
A crise do software............................................................................................................... 15
A crise de software e a Idade Média......................................................................... 17
Causas da crise de software........................................................................................ 18
Processo de software........................................................................................................... 33
Análise dos modelos de processos de software . ................................................... 35
O Modelo em Cascata................................................................................................... 36
Desenvolvimento incremental..................................................................................... 40
Engenharia de software orientada a reúso............................................................... 42
Sintetizando............................................................................................................................ 52
Referências bibliográficas.................................................................................................. 53
ENGENHARIA DE SOFTWARE 5
Sintetizando............................................................................................................................ 87
Referências bibliográficas.................................................................................................. 88
Sintetizando.......................................................................................................................... 121
Referências bibliográficas................................................................................................ 122
Swebok................................................................................................................................. 150
Categorias do conhecimento da engenharia de software...................................... 150
Áreas do conhecimento................................................................................................ 151
Aspectos do Swebok..................................................................................................... 152
Sintetizando.......................................................................................................................... 153
Referências bibliográficas................................................................................................ 154
ENGENHARIA DE SOFTWARE 10
ENGENHARIA DE SOFTWARE 11
ENGENHARIA DE SOFTWARE 12
1 ASPECTOS
INTRODUTÓRIOS DA
ENGENHARIA DE
SOFTWARE
Tópicos de estudo
A crise do software Fundamentos dos processos de
A crise de software e a Idade Média desenvolvimento do software
Causas da crise de software Dificuldades encontradas nos processos
de desenvolvimento de software
Introdução à engenharia do software Definição de projeto x definição de
Software: conceitos e características processo
Conceitos introdutórios sobre enge-
nharia de software Processo de software
Estudo da diversidade na engenharia Análise dos modelos de processos de
de software software
A relação da internet com a engenha- O Modelo em Cascata
ria de software Desenvolvimento incremental
Engenharia de software orientada a
Mitos e desafios do desenvolvimento de reúso
software
Mito de gerenciamento Atividades do processo de software
Mito do cliente Especificação de software
Mito do profissional Projeto e implementação de software
Validação de software
Evolução do software
ENGENHARIA DE SOFTWARE 14
ENGENHARIA DE SOFTWARE 15
CURIOSIDADE
A primeira geração de sistemas de banco de dados surgiu em meados
dos anos 1970. Paralelo a isso, surgiram pequenas empresas de desen-
volvimento de software chamadas de Software Houses. Elas tinham o
objetivo de aumentar a produtividade e criaram as chamadas bibliotecas
de softwares.
Agora ficou mais claro entender o contexto em que estava inserido o termo
“crise de software”. É perceptível que o uso dele ficou mais frequente a partir
do final da década de 1960. O estudioso Edsger Dijkstra é referência no assunto
através da sua apresentação realizada na Association for Computing Machinery Tu-
ring Award, no ano de 1972. O trabalho levou o título de The Humble Programmer.
A partir do momento em que o desenvolvimento de software passou a se
expandir por meio da utilização das chamadas “linguagens estruturadas e mo-
dulares”, vimos um processo de sucessivas falhas cometidas pela indústria de
software no que se refere, primeiramente, à demonstração dos resultados –
que não ocorria dentro dos prazos estabelecidos. Consequentemente, os va-
lores dos orçamentos eram ultrapassados e o nível de qualidade do produto
trazia dúvidas e insatisfação.
ENGENHARIA DE SOFTWARE 16
ENGENHARIA DE SOFTWARE 17
CURIOSIDADE
A manifestação da crise ocorre de diversas maneiras, entre as quais se
pode destacar o fato de haver projetos mal elaborados que normalmente
tornam-se pouco gerenciáveis ou que ultrapassam o limite orçamentário e
de prazo. Em um contexto como esse, o software criado é de baixa quali-
dade, não atingindo os requisitos mínimos para sua execução.
ENGENHARIA DE SOFTWARE 18
ENGENHARIA DE SOFTWARE 19
CURIOSIDADE
O custo de desenvolvimento de um software não segue a tendência da
queda de preço dos equipamentos. Tal custo está cada vez mais incorpo-
rado ao custo global de um sistema informatizado. Isso é explicado pelo
fato de a tecnologia de desenvolvimento de software demandar de uma
extensa carga de trabalho.
CURIOSIDADE
Dentro de um contexto que envolve o conceito de engenharia de softwa-
re, o termo “software” tem a conotação de produto e, desse modo, ele
pode ser comercializado. Enquanto os programas propriamente ditos são
restritos ao próprio autor, os softwares são direcionados comercialmente
a pessoas diferentes dos seus programadores.
ENGENHARIA DE SOFTWARE 20
ENGENHARIA DE SOFTWARE 21
CURIOSIDADE
Segundo Sommerville (2011, p. 6), existe uma relação entre engenha-
ria de software, ciência da computação e engenharia de sistemas.
Enquanto a ciência da computação trata de métodos que alicerçam
os sistemas de software e os computacionais e a engenharia de
sistemas direciona seus esforços no desenvolvimento e na evolução
de sistemas complexos em que o software tem o papel principal, a
engenharia de software trata de questões práticas relacionadas à
criação de softwares.
ENGENHARIA DE SOFTWARE 22
CURIOSIDADE
A ideia de segurança e confiança é exemplificada pelo uso dos sistemas
remotos, já que eles são acessados por meio de uma página da web ou de
uma interface de web services.
ENGENHARIA DE SOFTWARE 23
ENGENHARIA DE SOFTWARE 24
ENGENHARIA DE SOFTWARE 25
CURIOSIDADE
A adição de recursos aos navegadores significou o desenvolvimento de
sistemas web, que passaram a ser acessados de um navegador e não de
uma interface de usuário específica. Novos produtos de software passaram
a ser desenvolvidos a partir disso e ofereceram serviços inovadores que
eram visualizados por meio da internet.
ENGENHARIA DE SOFTWARE 26
ENGENHARIA DE SOFTWARE 27
ENGENHARIA DE SOFTWARE 28
ENGENHARIA DE SOFTWARE 29
ENGENHARIA DE SOFTWARE 30
EXPLICANDO
Baseado no agrupamento de conceitos disponibilizados pela literatura,
Maitino Neto (2016, p. 20) define processo como “a sequência de passos
que visam a produção e manutenção de um software e que se inter-rela-
cionam com recursos (humanos e materiais), com padrões, com entradas
e saídas e com a própria estrutura da organização”
ENGENHARIA DE SOFTWARE 31
ENGENHARIA DE SOFTWARE 32
Processo de software
Até aqui, você já pôde perceber o quanto a engenharia de software evoluiu
ao longo dos anos. Agora, veremos como ocorre o processo de desenvolvimen-
to de um software. Para Sommerville (2011, p. 18), um processo de software
consiste em “um conjunto de atividades relacionadas que levam à produção de
um produto de software”.
Esse conjunto de atividades, ao qual Sommerville se refere, pode viabilizar o
desenvolvimento de software partindo do zero por meio de uma linguagem de
programação padrão – que pode ser o Java ou C, por exemplo. Porém, quando se
tratar de aplicações direcionadas a negócios, a forma de desenvolvimento é dife-
rente, pois os novos softwares de negócios são criados por extensão e manipu-
lação de sistemas já desenvolvidos. Outra maneira de criar esse tipo de software
é por meio da chamada integração de prateleira e configuração, ou através dos
componentes do sistema.
Nós já vimos que os softwares, por regra, não são padronizados. Portanto,
os processos de desenvolvimento também apresentam aplicações diversifi-
cadas. Mas existem basicamente quatro tarefas, ou atividades, consideradas
fundamentais na área de engenharia de software, que todo processo de desen-
volvimento deve incluir. São elas:
CURIOSIDADE
As atividades que compõem o processo de software, do ponto de vista prático,
são classificadas como complexas, pois elas também incluem algumas tarefas
secundárias, como a validação de requisitos ou até mesmo um projeto de ar-
quitetura. Paralelo a isso, são aplicadas as atividades que auxiliam o processo,
como o gerenciamento de configuração de software e a documentação.
ENGENHARIA DE SOFTWARE 33
DICA
Nas empresas onde a diversidade nos processos de software é limitada, o
ideal é padronizá-los. Isso gera uma comunicação mais clara, uma redução
significativa do período de treinamento, além de tornar o processo automa-
tizado mais econômico.
ENGENHARIA DE SOFTWARE 34
ENGENHARIA DE SOFTWARE 35
O Modelo em Cascata
É possível relacionar o desenvolvimento de um software com os con-
ceitos da engenharia de sistemas? Não só é possível, como Royce (1970)
citado por Sommerville (2011, p. 20) indica como a publicação do primei-
ro modelo do processo de desenvolvimento de software se originou dos
processos mais generalistas da engenharia de sistemas. Caracterizado
pelo encadeamento existente entre as etapas do processo, esse modelo
é classificado como Modelo em Cascata, ou simplesmente “Ciclo de vida
de software”. O processo dele é orientado a planos, ou seja, inicialmente,
é preciso realizar planejamento e programação de todas as atividades do
processo antes de realizá-las.
O Modelo em Cascata é subdividido em estágios que abordam tarefas fun-
damentais para o seu desenvolvimento. São eles:
• Análise e definição de requisitos: Nesta etapa, as metas, as limitações e
os serviços disponibilizados são instituídos através de consulta aos usuários.
Posteriormente, eles são estabelecidos em detalhes e atuam como uma espe-
cificação do sistema;
• Projeto de sistema e software: É por meio da arquitetura geral do sistema
que o processo de projeto de sistemas consegue inserir atributos, seja para sis-
temas hardware como software;
• Implementação e teste unitário: Estágio em que o projeto do software é
produzido em paralelo com uma série de programas ou as chamadas unidades
de programa. Quanto ao teste unitário, é definido como a constatação de que
cada unidade está respeitando a sua especificação definida;
• Integração e teste de sistema: Momento da integração e teste entre
unidades do programa ou programas como um sistema completo. O objetivo
é garantir que os atributos tenham sido atendidos. É somente após esse pro-
cesso que o sistema de software é disponibilizado ao cliente.
ENGENHARIA DE SOFTWARE 36
Definição de
requisitos
Projeto
de sistema
e software
Implementação
e teste unitário
Integração e
teste de sistema
Operação e
manutenção
DICA
O resultado alcançado em cada estágio representa a aprovação dos docu-
mentos. Cada estágio alcançado é a continuação de outros, portanto, não
pode ser iniciada uma fase sem a conclusão da anterior. Por conta das
informações passadas entre as etapas, cada estágio funciona na prática
como uma espécie de feedback do estágio anterior, o que pode levar a
alterações nos documentos produzidos em cada fase.
ENGENHARIA DE SOFTWARE 37
DICA
Quando os requisitos são bem definidos e apresentam baixa possibilidade
de alterações bruscas no momento do desenvolvimento do sistema, o
Modelo em Cascata pode ser utilizado. Entretanto, esse modelo expõe o
tipo de processo empregado em outros projetos de engenharia, conforme
aborda Sommerville (2011, p. 21). Processos de softwares que utilizam o
Modelo em Cascata ainda são frequentemente utilizados, uma vez que é
fácil empregar modelos de gerenciamento que são comuns a todo projeto.
ENGENHARIA DE SOFTWARE 38
ENGENHARIA DE SOFTWARE 39
Versão
Especificação
inicial
Descrição Versões
do esboço Desenvolvimento
intermediárias
Versão
Validação
final
ENGENHARIA DE SOFTWARE 40
CURIOSIDADE
Uma versão do sistema, ou até mesmo um incremento, incorpora alguma
funcionalidade essencial para o cliente. Normalmente, os incrementos iniciais
incluem o que é mais importante na sua funcionalidade. Nessa condição, o
cliente consegue analisar o sistema na sua fase inicial de desenvolvimento e se
verifica se o que está sendo oferecido é, de fato, o que foi solicitado. Havendo
disparidade, apenas o incremento que se encontra em desenvolvimento será
alterado. Provavelmente, uma nova funcionalidade será estabelecida para
incrementos posteriores.
ENGENHARIA DE SOFTWARE 41
ENGENHARIA DE SOFTWARE 42
ENGENHARIA DE SOFTWARE 43
Projeto de
Especificações Análise de Alterações nos
sistema com
e requisitos componentes requisitos
reúso
Desenvolvimento Validação de
e integração sistema
ENGENHARIA DE SOFTWARE 44
Especificação de software
Também conhecida como engenharia de requisitos, trata-se, segundo
Sommerville (2011, p. 24), de “um processo de entendimento e definição dos
serviços solicitados do sistema e reconhecimento de limitações relativas à
operação e ao desenvolvimento do sistema”. Podemos considerar que a es-
ENGENHARIA DE SOFTWARE 45
EXPLICANDO
Produzir um documento de requisitos acertados que detalhe um sistema que
atenda aos atributos dos stakeholders é o principal objetivo do processo de
engenharia de requisitos.
ENGENHARIA DE SOFTWARE 46
ENGENHARIA DE SOFTWARE 47
Entradas de Atividades de
projeto projeto
Descrição de
dados
Projeto de
arquitetura
Informação de Especificações
plataforma e requisitos
Projeto de Projeto de
banco de dados componentes
Projeto de
Arquitetura Especificação de interface
do sistema componentes
Saídas de
projeto
Especificação de Especificação de
banco de dados interface
ENGENHARIA DE SOFTWARE 48
Validação de software
Quando um software consegue se adaptar às suas especificações e, simul-
taneamente, atende às particularidades do cliente do sistema, ele passa por
um processo de verificação conhecido como validação do software. A princi-
pal técnica de validação empregada é o Teste de Programa, em que a execução
do sistema ocorre através de dados de testes simulados. Inspeções e revisões
são exemplos de processos de verificação da qual a validação pode se utilizar a
cada etapa do processo de software, podendo ocorrer desde o estabelecimen-
to dos atributos dos usuários até a criação do programa.
CURIOSIDADE
Em um procedimento de teste, os sistemas devem passar, no mínimo, por três
etapas. Primeiro, os componentes do sistema deverão ser testados. Depois, o
sistema integrado passa pelo mesmo processo. E, por fim, o sistema, propria-
mente dito, é testado, contendo os dados do cliente.
ENGENHARIA DE SOFTWARE 49
Evolução do software
É cada vez mais comum a adoção de softwares
dentro das organizações empresariais em detri-
mento do uso do hardware ao longo dos anos. Mas,
qual seria o grande diferencial do software? Ao longo
dos tópicos, você pode constatar as inúmeras vantagens
de se adotar um software dentro das empresas e como
a engenharia de software tem se desenvolvido de manei-
ra extensa. Entretanto, uma característica explica toda essa
ascensão: a flexibilidade.
Sem dúvida, a flexibilidade, característica dos sistemas de software, é con-
siderada um dos principais motivos pelos quais os softwares são incorpora-
dos, em grande escala, aos maiores e mais complexos sistemas. Produzir um
hardware se torna muito caro na medida em que se deseja realizar alterações
no projeto inicial. Porém, as transformações podem ser feitas no software, a
qualquer tempo, independentemente do desenvolvimento do sistema, devido
ao baixo custo.
ENGENHARIA DE SOFTWARE 50
Sistemas Novo
existentes sistema
É preciso deixar claro que, do ponto de vista histórico, sempre existiu uma
espécie de separação conceitual sobre o que é processo de desenvolvimento e
o que é evolução do software (manutenção). Desenvolver ou criar algo é sem-
pre mais interessante do que consertar, você concorda? Na área de engenharia
de software não é diferente. As pessoas normalmente associam o termo de-
senvolvimento de software à etapa de criatividade na produção de um sistema,
partindo do seu conceito inicial até um sistema funcional. Já a ideia de manu-
tenção, mesmo com custos mais elevados, é vista como enfadonha ou maçante
por ser menos desafiadora que o desenvolvimento de software.
Entretanto, a separação entre esses conceitos é irrelevante, considerando
que os sistemas de software são, na sua maioria, novos, os conceitos de desen-
volvimento e a manutenção são vistos como processos contínuos, ou seja, ao
invés de separá-los, é mais concreto imaginar a engenharia de software como
algo único.
ENGENHARIA DE SOFTWARE 51
ENGENHARIA DE SOFTWARE 52
ENGENHARIA DE SOFTWARE 53
2 MODELOS DE
SOFTWARE E
MÉTODOS ÁGEIS
Tópicos de estudo
Modelos de processos clássicos Métodos ágeis de desenvolvi-
de software mento
Modelo cascata Métodos ágeis
Modelo evolucionário Desenvolvimento ágil e dirigi-
Prototipação do a planos
Modelo espiral Gerenciamento ágil de pro-
Técnicas de quarta geração jetos
Combinando paradigmas Escalamento de métodos
Baseado em reúso
Incremental
RAD
Formal
ENGENHARIA DE SOFTWARE 55
CITANDO
Segundo Pressman (1995, p. 30), a combinação de métodos associados
a um conjunto de ferramentas que os automatizem, a adoção de blo-
cos de construção mais poderosos na implementação do software, o
uso de técnicas melhores que garantam a qualidade do software e a
introdução de uma mentalidade que envolva coordenação, controle e
administração são os pilares necessários para o desenvolvimento da
engenharia de software.
ENGENHARIA DE SOFTWARE 56
CURIOSIDADE
Uma informação gerada por ferramentas integradas possibilita que uma
utilize as informações de outra. Com isso, é criado um sistema de apoio
e desenvolvimento de software denominado Computeer-Aider Software
Engineering (Case).
Modelo cascata
Segundo Pressman (1995, p. 32), o modelo cascata (ciclo de vida clássico)
se origina de uma abordagem sistemática, sequencial ao desenvolvimento do
software. Inicia-se a um nível sistêmico, progredindo ao decorrer das fases
posteriores. Como já mencionado neste curso, o modelo cascata aborda algu-
mas atividades que formam o ciclo de vida clássico.
Vamos relembrar as etapas. Continuando com Pressman,
No que se refere à análise e engenharia de sistemas, é neces-
sário considerar o fato de que um software compõe um siste-
ma mais abrangente, portanto o seu efetivo trabalho se inicia
através da determinação de requisitos dos componentes dos
sistemas e continua com a atribuição de determinada subdivisão
destes requisitos ao software (Ibidem, p. 33).
ENGENHARIA DE SOFTWARE 57
ENGENHARIA DE SOFTWARE 58
CURIOSIDADE
Devido a sua iteratividade, os modelos evolucionários se caracterizam pelo fato
de possibilitar ao profissional da área de engenharia de software criar versões
cada vez mais abrangentes em relação ao software. Eles conseguem identificar
a origem iterativa de boa parte dos projetos da área, e uma de suas atribuições
é suportar as possíveis modificações a que o software está suscetível.
Prototipação
Chamo você, caro leitor, a pensar na seguinte hipótese: um determinado
cliente conseguiu estabelecer uma série de objetivos gerais para o software
que deseja adquirir, entretanto, não foi possível definir, de maneira detalhada,
ENGENHARIA DE SOFTWARE 59
ENGENHARIA DE SOFTWARE 60
EXEMPLIFICANDO
Quando é realizada a “sintonia fina” do protótipo visando a, simultanea-
mente, atender as demandas do cliente e condicionar o desenvolvedor a
um entendimento mais abrangente das ações que precisam ser tomadas,
temos aqui um processo de iteração bem definido.
ENGENHARIA DE SOFTWARE 61
Modelo espiral
Numa conceituação básica, o modelo espiral abrange os requisitos mais re-
levantes do modelo cascata e da prototipação e, entre eles, introduz-se a análi-
se de riscos, com o intuito de complementar o entendimento.
As quatro tarefas mais importantes desenvolvidas pelo modelo espiral po-
dem ser visualizadas na Fig. 2 a seguir:
Avaliação do cliente
Na direção de um sistema
concluído
Protótipo de software
inicial
Protótipo no nível
seguinte
ENGENHARIA DE SOFTWARE 62
CURIOSIDADE
Considerada como a abordagem mais realística para gerar um sistema e
desenvolver um software em larga escala, o modelo espiral, ao utilizar a seu
conceito “evolucionário”, consegue promover uma interação entre desen-
volvedor e cliente, a fim de que ambos consigam compreender e dirimir os
riscos em cada fase evolucionária.
ENGENHARIA DE SOFTWARE 63
ENGENHARIA DE SOFTWARE 64
Obtenção dos
requisitos
Estratégia do
projeto
Implmentação
usando 4GL
Testes
Combinando paradigmas
Até agora, você visualizou que as abordagens relacionadas à engenharia
de software foram descritas como alternativas e não são complementares.
Em diversas situações, é possível combinar modelos de forma que a po-
tencialidade de cada uma seja obtida em um único projeto – quando, por
exemplo, o modelo espiral se combina ao de prototipação, assim como o
modelo cascata pode ser implementado ao evolucionário. O Diagrama 2
ENGENHARIA DE SOFTWARE 65
Projeto
4GT (técnicas de
quarta geração)
Codificação Prototipação:
enésima iteração
Modelo espiral:
enésima iteração
4GT (técnicas de
quarta geração)
Realização
de testes
Sistema operacional
Manutenção
ENGENHARIA DE SOFTWARE 66
Baseado em reúso
A engenharia de software possui estratégias no desenvolvimento dos seus
processos. Uma delas é criar um software baseado em reúso, onde seu desen-
volvimento tem como referência softwares já existentes. Como este tema já foi
apresentado, sabe-se que o conceito do reúso de software, apesar de ser algo
aplicado há mais de quatro décadas, só ganhou relevância a partir dos anos
2000, quando os novos sistemas de negócios adotaram essa prática como nor-
ma dentro das organizações.
É importante citar que toda esta transformação dos softwares tradicionais
para aqueles baseados em reúso surgiu com o intuito de atender algumas exi-
gências que o mercado impôs. Custos de produção mais reduzidos, manuten-
ção do software, além da exigência de entregas de software mais rápidas e
com qualidade fizeram o software adquirir status de ativo valioso dentro das
empresas. Sendo assim, o reúso consegue elevar o retorno sobre os investi-
mentos em software (SOMMERVILLE, 2011, p. 296).
A oferta de softwares reusáveis tem se elevado significativamente. Há uma
grande base de código reusável, disponibilizado a custos reduzidos, a qual se
denomina “movimento open source”, podendo ocorrer através de aplicações
inteiras ou bibliotecas de programas.
CURIOSIDADE
Empresas de grande porte constantemente disponibilizam uma diversida-
de de elementos reusáveis para clientes. O web service, por exemplo, é
um tipo de padrão que facilita a criação de serviços gerais e sua reutiliza-
ção numa diversidade de aplicações.
ENGENHARIA DE SOFTWARE 67
CURIOSIDADE
O reúso de software tem como diferencial apresentar custos globais de
desenvolvimento em níveis reduzidos. Isso implica dizer que um número
cada vez menor dos elementos que compõem um software necessita ser
especificado, implementado e validado.
Você deve observar que a redução de custos globais é apenas uma das
vantagens do reúso de software. Exemplificando, podemos citar que a con-
fiança em um software reusado é elevada se comparada à introdução de um
software novo, pois eles já passaram pelos experimentos e testes em sis-
ENGENHARIA DE SOFTWARE 68
ENGENHARIA DE SOFTWARE 69
COMUNICAÇÃO
PLANEJAMENTO
INCREMENTO Nº N
MODELAGEM (ANÁLISE, PROJETO)
FUNCIONALIDADE E RECURSOS DO SOFTWARE
INCREMENTO Nº 2 ENTREGA DO
ENÉSIMO
INCREMENTO
INCREMENTO Nº 1
ENTREGA DO 2º INCREMENTO
ENTREGA DO 1º INCREMENTO
CRONOGRAMA DO PROJETO
ENGENHARIA DE SOFTWARE 70
RAD
É possível definir o conceito de Rapid Application Development (RAD) como
um tipo de modelo incremental que ressalta um ciclo de desenvolvimento
curto. Atua como uma adequação rápida do modelo cascata. Essa rapidez é
alcançada graças à abordagem de desenvolvimento baseada em componen-
tes. Entretanto, o RAD precisa de uma boa compreensão dos requisitos e uma
limitação dos objetivos do projeto para garantir seu êxito.
ENGENHARIA DE SOFTWARE 71
EQUIPE N
MODELAGEM
CONSTRUÇÃO
IMPLANTAÇÃO
EQUIPE 2
INCREMENTO 1
MODELAGEM
COMUNICAÇÃO
CONSTRUÇÃO
PLANEJAMENTO
EQUIPE 1
MODELAGEM
CONSTRUÇÃO
ENGENHARIA DE SOFTWARE 72
Formal
Podemos conceituar modelos formais como técnicas usadas na criação de
sistemas computacionais, em que se prioriza sua coesão. Estes métodos são
produzidos com princípios matemáticos que garantem sua precisão na habili-
dade de expressar ideias ligadas ao projeto de software. Sua função é ajudar
em todas as fases do desenvolvimento de software, além de moldar o desen-
volvimento de sistemas de hardware. Nas subseções a seguir, veremos em de-
talhes as fases em que se aplicam os métodos formais.
CURIOSIDADE
Métodos formais também dispõem de notações conhecidas como lingua-
gens ou notações formais. Elas se baseiam em vários segmentos matemáti-
cos, dos mais simples aos mais complexos.
Especificação formal
Identifica os requisitos funcionais e não funcionais; aqueles definem o que
o software deve fazer, e estes estabelecem como o software vai executar suas
rotinas e procedimentos para realizar suas funções. Existe uma grande dificul-
dade na etapa de elicitação de requisitos, pois esses requisitos não refletem
de maneira clara o que o cliente realmente espera do sistema. Uma opção é a
especificação formal.
EXEMPLIFICANDO
A especificação formal formaliza os requisitos descobertos empregando algum
método formal, gerando uma modelagem com o uso de elementos que variam
conforme o modelo formal aplicado. Esta etapa é composta de uma descrição
textual dos requisitos que serão revisados pelo cliente, possibilitando a intera-
ção entre eles.
ENGENHARIA DE SOFTWARE 73
ENGENHARIA DE SOFTWARE 74
Extreme Programming
Considerado um dos métodos ágeis mais conhecidos, o Extreme Program-
ming (XP) incentiva boas práticas, a exemplo do desenvolvimento interativo.
É preciso imaginar que este método apresenta seus requisitos em forma de
cenário, conhecidos como “estórias do usuário” (SOMMERVILLE, 2011, p. 44). A
implementação destes cenários ocorre de maneira direta a uma série de ativi-
dades, em que os programadores desenvolverão testes para cada uma delas,
na fase anterior à escritura do código. Espera-se que os testes sejam devida-
mente executados no instante em que o novo código seja integrado ao siste-
ma. Ao verificar esse procedimento descrito, você consegue entender que o
método XP aborda práticas que demonstram os princípios fundamentais dos
métodos ágeis.
Começa-se pelo desenvolvimento incremental, formado pelos releases do
sistema. Seus requisitos são fundamentados em estórias de clientes ou nos
cenários, que são os pilares na decisão da funcionalidade que será inclusa no
incremento do sistema. Outro ponto refere-se à participação do cliente, que
ENGENHARIA DE SOFTWARE 75
ENGENHARIA DE SOFTWARE 76
DESENVOLVER/INTEGRAR/
AVALIAR SISTEMA LIBERAR SOFTWARE
TESTAR SOFTWARE
ENGENHARIA DE SOFTWARE 77
ENGENHARIA DE SOFTWARE 78
DevOps
Na sua definição básica, DevOps é um termo que descreve uma série de téc-
nicas utilizadas para integrar equipes evoluídas de desenvolvimento de softwa-
re, de operações e de apoio. Refere-se também aos processos automatizados
direcionados à produção mais veloz e estável dos serviços e aplicações. Este
conceito sugere a introdução de pensamentos novos sobre a valorização do
trabalho e das atividades diversificadas.
A cultura DevOps se baseia nos seguintes pilares:
• Integração contínua: transferência mútua de experiência e conhecimen-
to entre as áreas de desenvolvimento, operações e apoio;
• Implantação contínua: liberação rápida e contínua das versões atualiza-
das de serviço ou software;
• Feedback contínuo: feedback das equipes inseridas nas etapas do ciclo
de vida do software ou serviço.
CURIOSIDADE
Desenvolvimento e operações são áreas distintas e apresentam motivações
diferentes. O setor de desenvolvimento está mais alinhado com as metodo-
logias ágeis, enquanto as operações utilizam minimamente as transforma-
ções no ambiente de produção.
Para que esses objetivos sejam alcançados, o DevOps sugere algumas ações:
ENGENHARIA DE SOFTWARE 79
CURIOSIDADE
Existe certa insistência dentro dos processos de desenvolvimento de softwa-
re quando se deseja especificar os requisitos de maneira completa. Projetar,
desenvolver e testar o sistema não ocorre rapidamente, o que se torna uma
desvantagem quando se trata de ambientes que exigem mudanças mais
dinâmicas, como a área de negócios, por exemplo.
ENGENHARIA DE SOFTWARE 80
EXEMPLIFICANDO
A metodologia de desenvolvimento de sistemas dinâmicos (dynamic Systems
Development Method – DSDM) é um exemplo de desenvolvimento da noção das
abordagens ágeis que decolaram no final dos anos 1990.
Métodos ágeis
Como você imagina a implementação de um software na década de 1980?
Havia uma visão geral, no final da década de 1980 para o início de 1990, de que
um planejamento mais conservador e a utilização de técnicas de análise basea-
ENGENHARIA DE SOFTWARE 81
ENGENHARIA DE SOFTWARE 82
DICA
O envolvimento dos clientes após a entrega do software e a continuação
dos membros em uma equipe de desenvolvimento são os principais pro-
blemas apresentados pelo uso dos métodos ágeis na fase de manutenção.
ENGENHARIA DE SOFTWARE 83
CITANDO
Segundo Sommerville (Ibidem, p. 50), o desenvolvimento ágil deve ser
gerenciado de forma que o tempo e os recursos disponibilizados para
a equipe sejam utilizados de maneira eficiente. Para isso, é necessá-
rio que o gerenciamento de projeto realize uma abordagem direcio-
nada para o desenvolvimento incremental e para os pontos fortes dos
métodos ágeis.
ENGENHARIA DE SOFTWARE 84
AVALIAR SELECIONAR
PLANEJAMENTO GERAL
E PROJETO DE ENCERRAMENTO
ARQUITETURA DO PROJETO
REVISAR DESENVOLVER
CICLO SPRINT
ENGENHARIA DE SOFTWARE 85
ENGENHARIA DE SOFTWARE 86
ENGENHARIA DE SOFTWARE 87
ENGENHARIA DE SOFTWARE 88
3 GARANTIA DA
QUALIDADE
Tópicos de estudo
A garantia da qualidade de Métricas de qualidade de
software software
Fatores da qualidade de Análise de componentes de
software software
Como garantir a qualidade Indicadores de qualidade de
de software software
Atividades SQA A ciência de software de
Halstead
Normas de qualidade aplicadas Métrica de complexidade de
no desenvolvimento do software McCabe
ISO 9001 Medições ambíguas
ISO 12207
ISO 15504
Modelo de maturidade da
captação para software (CMM)
PSP e TSP
MPS.BR (melhoria de processo
de software brasileiro
ENGENHARIA DE SOFTWARE 90
ENGENHARIA DE SOFTWARE 91
ENGENHARIA DE SOFTWARE 92
Processo de
desenvolvimento D1 D2 D3 D4 D5
de software
Processo de
gerenciamento
de qualidade
DICA
Importante frisar que a equipe responsável pelo gerenciamento de quali-
dade não deve ter relação com outras equipes específicas de desenvolvi-
mento, porém ela é responsável por todo o aspecto organizacional. É um
setor que precisa de autonomia e se reportar sempre aos responsáveis
e ao gerente de projeto, pois ele precisa garantir o cronograma e o orça-
mento de projeto, definidos anteriormente.
ENGENHARIA DE SOFTWARE 93
ENGENHARIA DE SOFTWARE 94
ENGENHARIA DE SOFTWARE 95
Manutenção Portabilidade
Flexibilidade Reutilização
Testabilidade Interoperabilidade
Revisão do Transição do
Produto Produto
Operação do Produto
ENGENHARIA DE SOFTWARE 96
DICA
Para que você consiga entender as descrições dos fatores sob o ângulo
da operação do produto de software, pergunte-se: ele faz o que eu dese-
jo? (corretude); é necessário o tempo todo? (confiabilidade); funcionará
bem no hardware? (eficiência); atende aos requisitos de segurança?
(integridade); foi criado para atender os usuários? (usabilidade).
ENGENHARIA DE SOFTWARE 97
ENGENHARIA DE SOFTWARE 98
CURIOSIDADE
O SQA deve ser desenvolvido tomando como base a visão do cliente, verifi-
cando atribuições e padrões preestabelecidos.
Atividades SQA
Até aqui você já começou a aprofun-
dar os conceitos iniciais sobre a quali-
dade de software. A SQA abrange uma
série de tarefas relacionadas a impor-
tantes atividades. Segundo a aborda-
gem de Pressman (1995, p. 734), garantia
de qualidade se relaciona à aplicação de méto-
dos técnicos, revisão técnica, introdução de
testes de software, definição de padrões,
controle de mudanças, mensuração e repa-
ração de registro de reportagens.
É visível que a qualidade do software é intro-
duzida em um sistema ou produto sem qualquer
tipo de imposição após o fato. Sendo assim, o SQA
começa reunindo um conjunto de técnicas e ferramentas que auxi-
liem o profissional responsável a adquirir uma especificação de qualidade alta,
além do projetista, que terá condições de criar um projeto de mesmo nível.
À medida que um protótipo ou projeto forem criados, ambos deverão ser
analisados em relação à qualidade. Dito isto, é importante mencionar que a
tarefa que leva em consideração a análise da qualidade é a revisão técnica
formal ( formal technical review). Esta revisão ocorre quando a equipe técnica
se reúne objetivando possíveis falhas na qualidade. Em diversas situações,
as revisões se mostram tão efetivas quanto os testes implementares para
visualizar problemas na qualidade.
ENGENHARIA DE SOFTWARE 99
CURIOSIDADE
Empresas não são obrigadas a possuir a certificação ISO 9001:2016 (sua
edição mais atual), porém ela garante ao mercado consumidor que serviços
e produtos, inclusive softwares, estejam alinhados com as exigências do
cliente. A certificação pode ser obtida em algum órgão responsável (ABNT,
por exemplo) para você se credenciar e atender aos requisitos mínimos.
ISO 12207
Também conhecida como modelo de referência, esta norma
é padronizada internacionalmente. Tem como objetivo mais
importante disponibilizar uma estrutura ímpar para possi-
bilitar aos agentes envolvidos (fornecedor,
técnicos, clientes, desenvolvedores, dentre
outros) que usem uma linguagem comum.
Esta linguagem deve ser determinada
através de processos bem definidos.
Quanto à estrutura em que a norma se
encontra, sabe-se que foi arquitetada para
ser adaptável às demandas dos usuários. Sendo
assim, é visível que a ISO 12207 está baseada na modularidade e responsabi-
lidade. Segundo os conceitos abordados por Sant’Anna e Lahoz (2008, p. 2), a
modularidade está relacionada aos processos com acoplamento mínimo e coe-
são em nível máximo. Já a responsabilidade define um responsável para atuar
em cada processo, o que possibilita a implantação desta norma em projetos
que envolvem as pessoas habilitadas.
A norma ISO 12207 concentra as tarefas que podem ser realizadas ao lon-
go do ciclo de vida nos chamados processos primários, classificados como:
• Fundamentais: quando esse processo ocorre através do contrato
entre fornecedor e adquirente do software, além do desenvolvimento,
procedimento operacional e manutenção de produtos de software du-
rante o ciclo de desenvolvimento;
• Suporte: auxílio e contribuição que o processo possibilita para a qua-
lidade e o êxito do projeto de software;
• Organizacionais: utilizados por uma empresa para definir e aplicar
uma estrutura formada pelos processos que envolvem tanto o ciclo de
vida quanto as pessoas inseridas em seu desenvolvimento.
ISO 15504
Trata-se de um modelo de referência criado a partir de um framework para
analisar processos da área de engenharia de software, organizando negócios
e projetos. Ela também pode classificar e organizar as práticas em dimensões
denominadas em categorias de processos e níveis de capacidade.
Entenda que as categorias de processo estão relacionadas a procedimentos
mais específicos, como a engenharia e projetos, por exemplo. Já a capacidade de
organização está ligada aos níveis estabelecidos visando a sua melhoria contínua.
A ISO 15504 serve de referência
para o processo de análise, atuando
como um grupo-padrão de processos
essenciais que norteiam a engenharia
de software. Isto resulta em uma ava-
liação do perfil da instituição por meio
de uma matriz, onde processos estão
dispostos em linhas e os níveis de capa-
citação são demonstrados em colunas.
Esta norma apresenta um conjunto
composto por documentos que ofere-
cem desde a verificação de processo
até sua melhoria. Recursos como o
modelo integrado de maturidade em
capacitação para software (em inglês, capability maturity model integration –
CMMI) também se baseiam em normas como a ISO 15504. Tais modelos têm
como objetivo agregar os diferentes CMMs disponíveis, além de assegurar a
compatibilidade com a norma estabelecida por meio de uma ótica contínua de
modelo, formada por áreas de processos genéricos e essenciais.
DICA
É preciso analisar que, quanto maior o nível, consequentemente maior o grau
de maturidade das empresas. Isso vai gerar um número maior do produto final
e a possibilidade de estabelecer previsões para cronogramas e orçamentos.
O método CMM tem como meta ser referência para a evolução de pro-
cessos na empresa. Visa também ajudar no desenvolvimento da habilidade
dos profissionais de engenharia de software em gerir o desenvolvimento,
que cuida da compra e reparação de produtos ou serviços relacionados ao
software. Lembre-se também que o CMM possibilita o acompanhamen-
to ideal do desenvolvimento direcionado aos componentes do grupo. Em
projetos de grande porte, que envolvem um contingente imenso de pes-
soas e equipes, é relevante o uso do CMM. É notório que, com a ausência
destes modelos de maturidade, o controle do projeto fica comprometido.
Após essas etapas, o CMM indica um percurso baseado na evolução,
sendo indicado para uma empresa que almeja aperfeiçoar os processos
empregados para criar produtos e serviços. Esses processos também po-
ORGANIZAÇÃO
ÁREA DE PROCESSO 1 ÁREA DE PROCESSO 2
Processo 1 Nível 4
Processo 2 Nível 5
Capacidade 4
Processo 3 Nível 4
Processo n Nível 4
PSP e TSP
Estes modelos objetivam inserir pessoas e equipes de de-
senvolvimento de software. Estruturam-se através de medi-
das do processo e são aplicados por meio de treinamentos.
Os processos de desenvolvimento conse-
guem alcançar níveis elevados de maturi-
dade por meio destes modelos quando
aplicados conjuntamente; isto facilita
de maneira significativa a aquisição
de um modelo de maturidade direcio-
nado para as empresas.
No que se refere ao modelo PSP, sa-
be-se que ele está indicado para o desen-
volvedor de software. Por sua vez, os desenvolvedores geram suas pró-
prias atividades no momento em que adquirem conhecimento ao redigir
programas. Paralelo a isto, exige-se uma mudança de comportamento no
intuito de melhorar os processos. Quando isso não ocorre, as equipes e a
organização empresarial, de maneira geral, terão dificuldades para inserir
esse melhoramento.
Quando se observa os níveis de maturidade disponibilizados pelo PSP, ob-
serva-se que ele segue a mesma linha de desenvolvimento do modelo orga-
nizacional. Na primeira fase, é preciso que os desenvolvedores estejam habili-
EXPLICANDO
O processo cíclico pessoal é considerado pelo PSP através do nível mais
elevado, ampliando a sua ótica para discutir projetos de maior extensão.
Para isto, é necessário dividir este projeto em projetos menores, que
possam ser abordados a nível pessoal, dando um aspecto incremental ao
desenvolvimento de grandes projetos.
Modelo MPS
Guia geral Guia de implementação Guia de aquisição Guia de avaliação Documentos do programa
DICA
Os aspectos de um software, como o tamanho e a complexidade ciclomática,
podem ser mensurados com certa facilidade, porém não é possível estabelecer
uma relação consistente e esclarecedora com os requisitos de qualidade,
como a capacidade de compreensão e a manutenibilidade.
CURIOSIDADE
Uma terceira categoria de métricas pode ser discutida: as métricas orienta-
das a objetos (OO), ou suíte CK. Teorizadas por Chidamber e Kemerer (1994),
citados por Sommerville (2011, p. 469), servem de base informacional para
projetos de linguagem de modelagem unificada (em inglês, unified modeling
language – UML), criando-se os diagramas UML. Apesar da sua utilidade,
ainda não há provas suficientes para entender como estas métricas orienta-
das a objetos se relacionam com as qualidades externas de software.
Medir características
de componentes
MT
Onde:
MT = Quantidade de módulos da versão atual;
Fc = Quantidade de módulos alterados na versão atualizada;
Fa = Número de módulos adicionados na versão atual;
Fd = Número de módulos da versão anterior excluído da liberação atual.
A estabilização do produto se relaciona à aproximação do SMI a um de-
terminado valor = 1. Este índice pode ser utilizado como métrica que possi-
bilita o planejamento das tarefas de reparação do software. A produção de
um software se relaciona com o SMI. Sendo assim, os modelos empíricos
podem ser desenvolvidos visando o empenho na manutenção.
EXPLICANDO
Estas expressões também são utilizadas para definir, segundo Pressman
(1995, p. 757), o volume mínimo potencial, o volume real, o nível de progra-
ma, o nível de linguagem, empenho e tempo do desenvolvimento e, por fim,
a quantidade planejada de erros do software.
Medições ambíguas
A coleta de dados quantitativos, além do processo de software, requer o
entendimento do profissional que manipula e analisa estes elementos. Infeliz-
mente, é comum interpretá-la de maneira errada e fazer inferências incorretas
(SOMMERVILLE, 2011, p. 471). É preciso que você não apenas visualize os dados,
mas também considere o contexto em que são adquiridos. Isto abre margem
para ambiguidades no momento de compreender as medições do software.
Imagine, por exemplo, um gerente de desenvolvimento que decide alterar
um software se baseando nas solicitações do cliente, mas não interpreta cor-
retamente quais itens precisam ser modificados e cria pressuposições apenas
para satisfazê-lo e reduzir custos. Ao final, percebe que as solicitações dos
clientes aumentam e não consegue entender como isto ocorreu, ficando im-
possibilitado de analisar os efeitos das mudanças realizadas. Como solucionar
o problema?
Este tipo de problema só é compreendido se você entender as razões pe-
las quais os clientes solicitam mudanças. Quando, por exemplo, o software
não funciona corretamente e não realiza as funções que os clientes desejam,
eles solicitam alterações para que o software funcione. Uma segunda situação
pode ocorrer quando o software apresenta uma qualidade elevada e é ampla-
mente utilizado. Neste caso, as solicitações ocorrem devido à criatividade dos
usuários que sugerem mudanças possíveis.
Dito isto, a solução encontrada é elevar o nível de participação do cliente
para diminuir a quantidade de solicitações de alterações em que os clientes
apresentavam descontentamento. A eficiência percebida por conta das altera-
ções torna o software mais adaptável e usável, porém as mudanças podem não
funcionar e, por conta disto, os clientes podem demandar um sistema alterna-
tivo. As solicitações de mudanças se reduzem porque o produto também re-
4 MODELAGEM DE
SISTEMAS
Tópicos de estudo
Modelagem de sistemas Swebok
Modelos de contexto Categorias do conhecimento da enge-
Modelos de interação nharia de software
Modelos estruturais Áreas de conhecimento
Modelos comportamentais Aspectos do Swebok
CURIOSIDADE
Os modelos possuem uma série de funcionalidades aplicadas durante
o seu desenvolvimento. Durante o processo de engenharia de requi-
sitos, eles auxiliam na coleta de atributos do sistema. Ao longo do
projeto, os modelos detalham o sistema e o tornam acessível para os
engenheiros. Por fim, ao término, viabilizam a operação do sistema e
documentam sua estrutura.
DICA
É possível criar diferentes modelos que representem o sistema através
de perspectivas distintas. Pode ser por meio de uma perspectiva externa,
na qual você define o modelo do contexto; interação, em que é possível
ajustar as interações entre um sistema e seu ambiente; estrutural, em que
você modela a ordenação de um sistema ou a estrutura dos dados pro-
cessados por ele; por fim, a comportamental, em que é possível adaptar o
comportamento multifuncional do sistema e sua reação quando submetido
a outros eventos.
Modelos de contexto
No início de qualquer fase, é preciso definir até onde o sistema pode expan-
dir. Trata-se de uma atividade que envolve a presença de stakeholders do siste-
ma com o objetivo de estabelecer qual funcionalidade o sistema deve incluir e
o que será oferecido pelo seu ambiente.
Cabe a quem desenvolve os modelos decidir se o auxílio para os processos,
que envolvem negócios, será realizado de maneira automatizada ou manual,
baseado em sistemas diferentes. No que se refere à funcionalidade, é preciso
CURIOSIDADE
É importante visualizar o limite entre o sistema e o ambiente onde está
inserido. É muito comum que, num sistema automatizado que substitua
outro já existente, o ambiente permaneça o mesmo. Em outras situa-
ções, é possível definir um nível de flexibilidade e, ao longo do proces-
so que envolve a engenharia de requisitos, estabelecer um limite, o
sistema e seu ambiente.
<<Sistema>> <<Sistema>>
Sistema de registro Sistema de
de pacientes admissões
<<Sistema>>
<<Sistema>>
Sistema <<Sistema>>
Sistema de
degerenciamento MHC-PMS
prescrições
de relatórios
<<Sistema>> <<Sistema>>
Sistema de Sistema de
estatísticas agendamentos
EXEMPLIFICANDO
MHC-PMS (Sistema de Gerenciamento de Pacientes) consiste em um
sistema de informações utilizadas em clínicas e hospitais. Ela tem como
referência um banco de dados que centraliza as informações referentes
aos pacientes, e seu projeto permite que seja disponibilizado em um PC.
Registrar decisão
de internação Atualizar registro
Admitir no hospital
[Não perigoso]
<<Sistema>>
<<Sistema>> <<Sistema>>
Sistema de
MHC-PMS MHC-PMS
admissões
Modelos de interação
A interação é uma prática comum entre os sistemas. Isso é visível desde a
interação entre os usuários até as que ocorrem entre os componentes. Quando
se trata da modelagem da interação, é preciso destacar sua importância graças
ao auxílio oferecido na identificação dos atributos dos usuários.
Problemas relacionados à comunicação podem ser reconhecidos pelo siste-
ma de modelação da interação. Diante disso, esta modelagem consegue auxi-
liar na compreensão da estrutura disponibilizada para o sistema e verificar se
ela consegue apresentar um nível de desempenho e confiança que atenda às
necessidades exigidas.
Este tipo de modelagem traz basicamente duas abordagens. São elas:
• Modelagem de caso de: propõe modelos de interação que envolvem um
sistema e agentes externos, ou seja, outros agentes ou sistemas diferentes;
• Diagramas de sequência: criam modelos de interação entre os compo-
nentes do sistema. É importante ressaltar que os agentes externos podem ser
incluídos nesta abordagem.
CURIOSIDADE
Por apresentarem níveis de detalhamento distintos, tanto os modelos de
caso quanto os diagramas de sequência podem ser empregados em con-
junto. Por exemplo, em um caso de uso que apresente um elevado nível,
os detalhes pertinentes às interações podem ser documentados em um
diagrama de sequência.
SISTEMA DE
RECEPCIONISTA TRANSFERIR
REGISTRO DE
DO MÉDICO DADOS
PACIENTES
DICA
Como pode ser visualizado, um diagrama de casos de uso oferece um
aspecto limitado de uma interação. Diante disso, é preciso disponibilizar
mais detalhes para compreender o sistema de maneira geral. Uma descri-
ção textual ou um diagrama de sequência são exemplos desses detalhes.
Modelos estruturais
São modelos que apresentam características estáticas quando demons-
tram estrutura do projeto do sistema, ou dinâmicas quando expõem a or-
ganização do sistema no momento da sua execução. O desenvolvimento de
sistemas estruturais ocorre enquanto sua arquitetura é projetada.
Além da importância do projeto de arquitetura para a engenharia de soft-
ware, a inclusão de componentes e diagramas de implantação da UML apre-
senta os modelos de arquitetura. Nesse contexto, vamos abordar o uso de dia-
gramas de classe, utilizados para criar modelos referentes à estrutura estática
das classes de objeto dentro de um sistema de software. Utilizados na criação
de um modelo cujo sistema é orientado a objetos, o diagrama de classes expõe
as classes pertinentes a um sistema e suas ligações.
DICA
Quando você imaginar associações entre classes, entenda que há um
relacionamento entre elas. É comum que cada classe necessite de infor-
mações ou conhecimentos específicos.
CURIOSIDADE
Não existe uma inclusão, por parte da UML, de uma notação específica
relacionada a esta modelagem de banco de dados. Existe a suposição
de que há o desenvolvimento direcionado a objetos, portanto, a UML cria
modelos utilizando objetos e a relação entre eles, mas para simbolizar um
modelo semântico de dados.
Modelos comportamentais
Modelos comportamentais prezam pelo dinamismo do sistema quando ele
se encontra em execução. Graças a esta modelagem, é possível prever o que
CURIOSIDADE
Não existe apoio por parte da UML aos diagramas de fluxo de dados. Isso
se deve ao fato de que estes foram inicialmente sugeridos e utilizados
para modelar o processamento de dados. A motivação para isso se origina
dos data-flow diagrams (DFDs) que se concentram sobre as funções do
sistema, não reconhecendo os objetos do sistema.
CURIOSIDADE
Empresas de pequeno porte demandam esta modelagem, porém mais na
forma de pressão aos programadores do que nos processos organizacio-
nais. Se por ventura o sistema não agrada o cliente, cabe ao programador
adequar uma nova funcionalidade em tempo mais curto.
Modelo V
Representa uma variação do modelo cascata, sendo possível descrever o elo
entre atividades de garantia de qualidade e ações ligadas à modelagem, comunica-
ção e tarefas iniciais de construção (PRESSMAN; MAXIM, 2016, p. 42).
DIAGRAMA 4. MODELO V
Modelagem Teste de
de requisitos aceitação
Projeto Teste de
da arquitetura sistema
Projetos Teste de
dos componentes integração
Geração Teste de
de código unidade
SOFTWARE
EXECUTÁVEL
Fonte: PRESSMAN; MAXIM, 2016, p. 43.
CURIOSIDADE
Do ponto de vista prático, não há distinções entre o ciclo de vida
clássico (cascata) e o modelo V. Ocorre que o modelo V disponibiliza
uma maneira de observar a forma como as ações – as quais envolvem
análise e verificação – são implementadas num trabalho de engenharia
realizado anteriormente.
CURIOSIDADE
A origem linear do modelo cascata conduz ao chamado “estado de blo-
queio”, quando alguns componentes da equipe responsável pelo projeto
precisam esperar outros membros finalizarem as atividades dependentes.
Praxis
É possível defini-lo como um processo destinado a dar suporte em projetos de
engenharia de software. “Praxis” significa “processo para aplicativos extensíveis
interativos” e simboliza o desenvolvimento de aplicativos gráficos interativos, os
quais têm como referência a tecnologia direcionada a objetos; são aplicados em
prazos curtos e são executados por equipes enxutas ou individualmente. Ele é
formado pela combinação entre o desenvolvimento do Prose e os elementos esco-
lhidos do PSP, TSP e do processo unificado. Lembre-se de que Praxis não disputa
espaço com nenhum desses processos, já que o foco de atuação é distinto. Na
verdade, este modelo serve de base para treinar os processos.
DICA
A UML é a notação de modelagem utilizada na Praxis, em todos os passos
em que for aplicável. As práticas gerenciais são inspiradas nas práticas-
-chave dos níveis 2 e 3.
DICA
As fases do UP podem ser classificadas como: a) concepção, que define o
sistema de arquitetura e subsistemas; b) elaboração, em que os casos de uso
são detalhados, a arquitetura apresenta visões do sistema e a união dos dois
o completa; c) construção, na qual o produto é feito baseado na arquitetura e
direcionado aos que já estão prontos para ser transferidos a outros usuários;
e) transição, que envolve a correção de falhas, treinamento e melhorias.
CURIOSIDADE
O UP é bem organizado para auxiliar na interpretação de ações como minipro-
cessos do modelo cascata. Ele é incremental e iterativo, enquanto o resultado
alcançado pelo cascata serve de incremento para iterações posteriores.
RUP
Como já visualizamos, o Rational Unified Process (RUP) é um modelo de pro-
cesso moderno, originado de trabalhos da UML. Trata-se de um processo hí-
brido que, segundo Sommerville (2011, p. 34), aborda elementos de todos os
modelos relacionados aos processos genéricos, demonstra práticas relevantes
nas especificações e no projeto, além de apoiar atividades relacionadas à pro-
totipação e à entrega incremental.
Enquanto os modelos de processo convencionais trazem uma forma exclu-
siva de processo, o RUP geralmente descreve algumas perspectivas. A primeira
trata da perspectiva dinâmica, que apresenta as etapas do modelo durante o
ITERAÇÃO DE FASE
DICA
Como não existe uma ligação entre os workflows mais específicos
e as etapas do processo de desenvolvimento, sugerir análises está-
ticas e dinâmicas pode ser benéfico. De imediato, os workflows do
RUP atuam em todas as etapas do processo. No início, é demandado
um empenho maior em workflows; nas fases seguintes, nos testes e
na aplicação.
É preciso observar, do ponto de vista prático, que o RUP revela técnicas con-
sideradas importantes para a engenharia de software, de suma importância
para desenvolver sistemas. Segundo Sommerville (2011, p. 35), desenvolver um
software de forma iterativa, gerir requisitos, utilizar arquiteturas com base nos
componentes, estabelecer modelos de software de maneira visual, analisar a
qualidade do software e estabelecer um controle nas mudanças do software
são consideradas boas práticas na criação de sistema.
AUP
O Agile Unified Process (AUP) é uma abordagem simples, direcionada ao de-
senvolvimento de software, com a referência no RUP. Seu ciclo de vida é, segun-
do Cruz (2018, p. 321), interativo e apresenta uma série de versões.
Este ciclo de vida está referenciado na aplicação de quatro etapas, que serão va-
lidadas por meio de quatro marcos, que são aplicados ao fim das fases citadas. As dis-
ciplinas que estabelecem as ações a serem executadas complementam essas fases.
CURIOSIDADE
Na etapa inicial, ocorre uma iteração, assim como na fase de elaboração.
No estágio de construção, isso vai acontecer diversas vezes, a depender
da necessidade de iteração.
CURIOSIDADE
Podemos considerar que esta etapa é a que melhor se adapta para iniciar
um determinado projeto à medida que o cliente pede um preço ou escopo
fechado. A inception phase possibilita a criação de um pré-projeto, verifi-
cando detalhes que interferem no orçamento estipulado no projeto.
DICA
Esta etapa se caracteriza pela construção, entre outros aspectos, de wi-
reframes, o que demonstra a possibilidade de construir um sistema dentro
dos atributos esperados.
OpenUP
A metodologia Open Unified Process (OpenUP) está ligada ao processo uni-
ficado da área de engenharia de software. Entretanto, apresenta uma maneira
mais flexível de atuar, na qual utiliza uma forma mais ágil e colaborativa de de-
senvolver softwares. Os processos simples são caracterizados na construção
dessa metodologia e podem ser direcionados para outros tipos de software.
CURIOSIDADE
A OpenUP foi criada através da união das metodologias consideradas
ágeis (Scrum e XP) com a arquitetura que forma o processo unificado.
Swebok
O Swebok tem suas origens numa parceria entre o Institute of Electrical and
Electronics Engineers (IEEE) e a Computer Society e a Association for Computing
Machinery (ACM), com o objetivo de profissionalizar a área de engenharia de
software, por meio de um consenso entre as áreas de conhecimento e o seu
escopo. Sua indicação é para os diversos públicos ao redor do mundo, já que
seu objetivo principal é auxiliar as empresas a observar de maneira mais ampla
a engenharia de software como um todo. Este projeto é direcionado para profis-
sionais das mais diversas áreas de atuação (gestores, estudantes, professores e
instrutores de forma geral).
Podemos elencar aqui alguns objetivos ou princípios fundamentais que o
projeto Swebok dissemina. O primeiro é disponibilizar uma ótica consistente
da engenharia de software mundialmente, porém delimitando o campo de
atuação. Além disso, cabe ao Swebok caracterizar o conteúdo, ser um mate-
rial de apoio e promover o acesso ao conhecimento sobre a área de engenha-
ria de software.
CURIOSIDADE
O Swebok foi iniciado em 1998 através do Software Engine-
ering Coordinating Committee (SWECC). Seu financiamento
partiu das organizações como a ACM, a Boeing, entre
várias outras entidades.
Você pode conferir mais informações sobre Swebok no tex-
to Uma introdução ao Swebok, de André Luís Torres (2010).
CURIOSIDADE
O IEEE oferece dois tipos de certificação referentes ao Swebok: a Certi-
ficação de Associados para o Desenvolvimento de Software (CSDA) e a
Certificação Profissional para Desenvolvimento de Software (CSDP).
Áreas do conhecimento
Como já foi mencionado, o Swebok está dividido em dez áreas de conheci-
mento, além das disciplinas ligadas à engenharia de software. De início, temos os
requisitos, que demonstram as demandas e limitações do produto de software
que colaboram para resolver problemas. É possível visualizar que alguns erros
nos projetos de software estão relacionados aos requisitos. Isso ocorre graças
à complexidade na compreensão do que o usuário necessita. Com isso, é muito
importante gerenciar os requisitos para assegurar a qualidade de software.
Quando os requisitos são avaliados para criar uma descrição interna referen-
te ao software, para elaborá-lo, podemos dizer que está sendo realizada a execu-
ção do projeto de software. É nesta área que se estabelece, entre outros aspec-
tos, a arquitetura e os componentes de um sistema. Já a construção de software
envolve todas as áreas, porém com foco maior no projeto e testes de software. A
implementação e a verificação, por exemplo, compõem parte desta área.
Quando nos referimos à área de testes, sabemos que se trata do setor res-
ponsável pela verificação da qualidade do produto. É aqui que melhorias po-
dem ser realizadas, corrigindo erros à medida que são encontrados. A manu-
tenção de software, relacionada a todas as áreas do Swebok, dá suporte ao
produto durante o ciclo operacional.
A engenharia de software tem um olhar diferenciado para o setor de geren-
ciamento, já que este tem ligação com a gestão de pessoas. Além disso, existe
uma preocupação em melhorar os planejamentos e gerenciamentos da comu-
DICA
Importante citar que Swebok abrange também algumas disciplinas rela-
cionadas às áreas de conhecimento. A engenharia da computação, por
exemplo, incorpora setores como a tecnologia e as ciências de concep-
ção, entre outros. Outra disciplina é a ciência da computação, que se
relaciona a áreas do conhecimento como a linguagem de programação, a
engenharia de software, entre outras.
Aspectos do Swebok
O guia Swebok passa por constantes atualizações. Seu objetivo principal é
incluir novas áreas do conhecimento em detrimento de outras, acrescentan-
do um knowledge area (KA) referente às ferramentas profissionais. Este tema
é amplamente discutido através da CSDP, além da inclusão de KAs referentes
a alguns temas. Remover algumas disciplinas, adicionar material referente às
interfaces humanas e testes de software e redistribuir matérias entre as KAs
são algumas das funções pertinentes ao Swebok.
DADOS DO FORNECEDOR
*Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência.
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio
A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do
Código Penal.
ASSISTA
Indicação de filmes, vídeos ou similares que trazem informações comple-
mentares ou aprofundadas sobre o conteúdo estudado.
CITANDO
Dados essenciais e pertinentes sobre a vida de uma determinada pessoa
relevante para o estudo do conteúdo abordado.
CONTEXTUALIZANDO
Dados que retratam onde e quando aconteceu determinado fato;
demonstra-se a situação histórica do assunto.
CURIOSIDADE
Informação que revela algo desconhecido e interessante sobre o assunto
tratado.
DICA
Um detalhe específico da informação, um breve conselho, um alerta, uma
informação privilegiada sobre o conteúdo trabalhado.
EXEMPLIFICANDO
Informação que retrata de forma objetiva determinado assunto.
EXPLICANDO
Explicação, elucidação sobre uma palavra ou expressão específica da
área de conhecimento trabalhada.
Controle de qualidade.......................................................................................................... 29
Controle de qualidade e suas atividades....................................................................... 30
Sintetizando............................................................................................................................ 31
Referências bibliográficas.................................................................................................. 32
Sintetizando............................................................................................................................ 58
Referências bibliográficas.................................................................................................. 59
Padrões de projeto 63
Padrões de projeto criacionais 64
Padrão de projeto de classe abstrata 65
Padrões estruturais 66
Padrões comportamentais 66
Teste de software 67
Tipos de testes de software 69
Sintetizando 82
Referências bibliográficas 83
Sintetizando.......................................................................................................................... 108
Referências bibliográficas................................................................................................ 109
QUALIDADE DE SOFTWARE 9
Currículo Lattes:
http://lattes.cnpq.br/2157891473314906
Dedico este conteúdo a minha família, que me dá forças todos os dias para
abraçar novos desafios.
QUALIDADE DE SOFTWARE 10
1 INTRODUÇÃO À
QUALIDADE DE
SOFTWARE
Tópicos de estudo
Introdução aos conceitos de Controle de qualidade
qualidade de software Controle de qualidade e suas
A qualidade de software atividades
Conceito de qualidade
Garantia de qualidade
Garantia de qualidade e suas
atividades
QUALIDADE DE SOFTWARE 12
A qualidade de software
A preocupação com a qualidade de software surgiu na década de 90. A
abertura do mercado mundial trouxe, como consequência, a maior oferta de
produtos ou serviços. Além disso, com o advento da internet, o acesso à in-
formação tornou-se mais facilitado e, com isso, os softwares começaram a se
tornar mais integrados às nossas atividades diárias.
QUALIDADE DE SOFTWARE 13
CURIOSIDADE
Pessoas que prestaram a prova na época informaram, via redes sociais,
que estavam com acesso a informações de pessoas desconhecidas, como
nomes, telefones e notas do Enem.
QUALIDADE DE SOFTWARE 14
EXEMPLIFICANDO
Imagine uma pane em um sistema bancário. O prejuízo seria gigante para
as empresas de softwares, para o banco e para os usuários. Os efeitos
poderiam ser catastróficos, bancos poderiam perder milhões de dólares e
clientes veriam seu dinheiro desaparecer. Consequentemente, a empresa
que desenvolveu perderia a credibilidade.
Conceito de qualidade
Qualidade de um software significa desenvolver um sistema sem defeitos?
Uma boa maneira de começarmos a conceituar qualidade de software é afas-
tar a ideia de que qualidade significa perfeição, pois é muito improvável que
um software seja totalmente livre de defeitos.
Qualidade de software é um processo que focaliza todas as etapas do de-
senvolvimento de um sistema e os componentes produzidos com o objetivo de
QUALIDADE DE SOFTWARE 15
QUALIDADE DE SOFTWARE 16
QUALIDADE DE SOFTWARE 17
Partes
Escopo Tempo
interessadas
Aquisição Custos
Integração
Riscos Qualidade
Recursos
Comunicações
humanos
QUALIDADE DE SOFTWARE 18
Escopo
po
Cus
Tem
Qualidade to
Além das áreas do conhecimento, o PMBOK divide o projeto em fases que for-
mam o ciclo de vida do projeto. São as fases pelas quais um projeto passa do
início ao término. O PMBOK considera que um projeto passa pelas seguintes fases:
• Iniciação: processo que autoriza o projeto ou fase. O grupo de iniciação
contempla o termo de abertura do projeto e a identificação das partes
interessadas;
• Planejamento: processo responsável por elaborar e documentar o tra-
balho do projeto. O planejamento incorpora todas as áreas de gerencia-
mento de projetos;
• Execução: processo responsável pela concretização dos planos do proje-
to. Fase que coloca o projeto para andar;
• Controle e monitoramento: processo responsável pela avaliação de de-
sempenho e averiguação do projeto além de controlar e monitorar suas
mudanças;
QUALIDADE DE SOFTWARE 19
RUP
O Rational Unified Process (RUP) é uma ferramenta que automatiza grande
parte do processo de produção de um software. Trata-se de um processo con-
figurável, que se adapta a pequenas equipes de desenvolvimento, bem como a
grandes organizações de desenvolvimento.
O RUP aprimora a produtividade da equipe, fornecendo a todos os membros
fácil acesso à base de conhecimento com diretrizes, modelos e ferramentas para
todas as atividades críticas de desenvolvimento. Dessa forma, todos os mem-
QUALIDADE DE SOFTWARE 20
Iterações
Elab. Elab. Const. Const. Const. Trans. Trans.
Disciplinas Inicial
n° 1 n° 2 n° 1 n° 2 n° N n° 1 n° 2
Modelagem de negócio
Requisitos
Análise e projeto
Implementação
Teste
Implantação
Gerência de configuração
e mudanças
Gerência de projeto
Ambiente
Fases
CURIOSIDADE
Você gostaria de navegar no RUP de uma forma interati-
va? Acesse o site e conheça mais sobre essa metodologia
de desenvolvimento e software.
QUALIDADE DE SOFTWARE 21
QUALIDADE DE SOFTWARE 22
ISO
Em diversos produtos e serviços que as pessoas compram diariamente, seja
uma roupa de marca, um aparelho celular ou um simples brinquedo eletrônico,
existem padrões estabelecidos por meio de estudos, testes e aferições, realiza-
dos pelos órgãos reguladores. Na área de desenvolvimento de software, a orga-
nização responsável por estabelecer as normas para a qualidade de software é
chamada de ISO (Organização Internacional de Normalização).
As normativas ISO que definem a qualidade de software estão definidas na
ISO/IEC 9126. No Brasil, essas normas estão definidas na NBR ISO/IEC 9126-1.
Por meio da Associação Brasileira de Normas Técnicas (ABNT), são organizadas
comissões de estudo que se baseiam nas normas estabelecidas pela ISO.
A ISO 9126 estabelece um conjunto de normas para:
QUALIDADE DE SOFTWARE 23
Qualidade
Adaptabilidade
Adequação
Analisabilidade Capacidade para ser
Acurácia Maturidade Inteligibilidade
Recursos Modificabilidade instalado
Interoperabilidade Tolerância a falhas Atratividade
Tempo Estabilidade Capacidade para
Segurança Recuperabilidade Operacionalidade
Testabilidade substituir
Conformidade
Conformidade
QUALIDADE DE SOFTWARE 24
QUALIDADE DE SOFTWARE 25
QUALIDADE DE SOFTWARE 26
Garantia de qualidade
Garantia da qualidade é a aplicação das políticas e procedimentos adotados com
objetivo de garantir que o produto atenda a todos os requisitos com a qualidade
necessária.
O IEEE é o instituto responsável por criar padrões de software,
o que inclui o processo de garantia da qualidade. A Software Qua-
lity Assurance (SQA - Garantia de Qualidade de Software) lida com os
processos de desenvolvimento do software, além de verificar se os processos estão
sendo seguidos e feitos de acordo com o que foi especificado.
Por exemplo: para desenvolver um software seguindo a metodologia do PMBOK
e RUP, é necessário entregar diversos documentos, dentre eles: um documento de
especificação de requisitos, o documento de escopo, a estrutura de análise do pro-
jeto (EAP), o cronograma, o plano de custo, etc. Todos esses artefatos criados devem
passar por aprovação de um cliente ou autorização de um gerente. Além disso, é
necessário fazer reuniões semanais com equipe e, a partir dessas reuniões, devem
ser gerados relatórios semanais para que possam ser entregues para alta direção.
QUALIDADE DE SOFTWARE 27
QUALIDADE DE SOFTWARE 28
Controle de qualidade
Defeitos que não são removidos precocemente acabam sendo detectados
depois. Quanto mais tarde um defeito é corrigido, mais cara é a sua correção.
O pior caso acontece quando o defeito chega ao produto final, caso em que só
será removido por meio de uma operação de manutenção. Esta é a forma mais
cara de remoção de defeitos.
O controle de qualidade busca identificar esses defeitos precocemente por
meio da realização de testes, inspeções e checagem dos artefatos produzidos.
Além disso, o controle de qualidade engloba um conjunto de ações da Enge-
nharia de Software que ajudam a garantir que cada produto resultante de um
processo atinja suas metas de qualidade.
Os artefatos criados são revistos de modo que fiquem completos e consis-
tentes, buscando a correção dos defeitos. Por exemplo: um código deve ser
inspecionado a fim de encontrar e corrigir erros antes dos testes começarem.
Um software tem um conjunto de funcionalidades que devem ser atendi-
das. Dessa forma, um teste em um determinado software para checar se essas
funcionalidades estão de fato atendidas é fazer o controle de qualidade.
Para um melhor controle de qualidade, é importante que existam, dentro
do projeto, pessoas dedicadas às tarefas de controle de qualidade
e gestão de configurações. Outras pessoas têm de
ser ocupadas com atividades de padronização: pa-
drões têm de ser redigidos, revistos, distribuídos
e atualizados. Sendo assim, os desenvolvedo-
res precisam receber treinamento e assistên-
cia quanto ao uso de padrões para garantir a
qualidade do que é produzido.
QUALIDADE DE SOFTWARE 29
ASSISTA
Assista ao vídeo Testamos e comparamos: saiba qual é o
melhor celular top de linha de 2018, no qual é apresentado
ao consumidor como são feitos alguns testes, com com-
parações sobre desempenho, performance, capacidade
de armazenamento.
QUALIDADE DE SOFTWARE 30
QUALIDADE DE SOFTWARE 31
QUALIDADE DE SOFTWARE 32
QUALIDADE DE SOFTWARE 33
2 NORMAS E MÉTRICAS
DA QUALIDADE DE
SOFTWARE
Tópicos de estudo
Normas e organismos Métricas aplicadas aos
normativos métodos ágeis
Níveis de normatização Métricas em métodos ágeis
Organização Internacional de
Normalização (ISO)
Certificação e adequação
Elaboração de uma norma
QUALIDADE DE SOFTWARE 35
Segurança
Proteção
Comunicação do
produto
Objetivos Controle
Compatibilidade da normalização da
variedade
Eliminação
Proteção
de barreiras
do meio
técnicas e
Intercambia- ambiente
comerciais
lidade
QUALIDADE DE SOFTWARE 36
ASSISTA
Não deixe de conferir o vídeo Operadoras vão precisar
arrumar bagunça de fios em postes em SP, no qual é
apresentada uma determinação de órgãos regulatórios
das operadoras de telefonia. Com isso, você conhecerá
um excelente exemplo de como as normatizações são
necessárias e úteis para garantir diversos benefícios a
população, como segurança e conservação urbana.
QUALIDADE DE SOFTWARE 37
Níveis de normatização
As normas são delimitadas pelo seu alcance geográfico, político ou econô-
mico. Sendo assim, podemos dividi-las em três níveis principais, que são:
• Nível nacional: atende apenas um país em específi co;
• Nível regional: atende somente uma porção geográfi ca, política ou eco-
nômica;
• Nível internacional: atende vários países do globo.
Diversos países participam da fundação, elaboração, aprovação e divulga-
ção dessas diretrizes.
Uma pirâmide comumente é utilizada para representar os níveis de nor-
matização. Na base dessa pirâmide está a normatização empresarial, no meio
encontramos as normatizações nacionais e no topo está a normatização inter-
nacional (confira a Figura 1).
• Nível internacional: tem abrangência mundial estabelecida pela Orga-
nização Internacional de Normalização (OMC);
• Nível regional/sub-regional: estabelecida por um grupo de países ou
região geográfi ca ou política. São representadas por
organismos regionais, como a Associação Merco-
sul de Normalização (AMN);
• Nível nacional: são normas elaboradas pelas
partes de interesse (governo, empresas, indús-
trias e consumidores) e geridas por um organis-
QUALIDADE DE SOFTWARE 38
INTERNACIONAL ISO/IEC/ITU
REGIONAL/SUB-REGIONAL COPANT/AMN/CEN
NACIONAL ABNT/AFNOR/AENOR
ASSOCIAÇÃO ASTM/API
EMPRESARIAL
QUALIDADE DE SOFTWARE 39
CURIOSIDADE
Você sabia que o nome ISO vem do grego e foi escolhido não por conta
da tradução do nome – Organização Internacional de Normalização – e
sim para que a pronuncia da sigla seja igual em todos os países que falem
sobre a organização, independentemente de sua língua nativa.
A ISO define as normas por comitê e cada comitê tem uma numeração,
por exemplo:
• ISO 9000 – Gestão da Qualidade;
• ISO 14000 – Gestão Ambiental;
• ISO 2600 – Responsabilidade Social;
• ISO 31000 – Gestão de Riscos;
• ISO 22000 – Gestão de Segurança Alimentar;
A ISO possui uma família de normas que trata da qualidade, a ISO 9000.
A ISO 9000 foi desenvolvida para ajudar organizações na implementação
e operação de sistemas eficazes de qualidade. Ela auxilia a empresa na
seleção da norma mais apropriada para o seu negócio, assim como a sua
utilização.
A série é composta das seguintes normas (Quadro 1): ISO 9000 - Fundamen-
tos e vocabulário; ISO 9001- Sistemas de gerenciamento da qualidade e requi-
sitos; ISO 9004 - Sistemas de gerenciamento da qualidade e guia para melhoria
da performance; ISO 19011 - Auditorias internas da qualidade.
QUALIDADE DE SOFTWARE 40
ISO 9000
Conjunto de normas publicadas
ISO 9001 pela ISO que especifica os itens
Qualidade necessários para a implantação
ISO 9004 de um Sistema de Gestão de
Qualidade.
ISO 19011
ISO 9000-3
Para facilitar a aplicação em desenvolvimento de software, a ISO 9000-3
– que inclui orientações para a aplicação da ISO 9001 ao projeto, desenvol-
vimento, fornecimento, instalação e manutenção de software – define dire-
trizes para facilitar a aplicação da norma ISO 9001. Ela destina-se a fornecer
orientação quando um contrato entre duas partes exigir a demonstração da
capacidade do fornecedor em desenvolver, fornecer e manter produtos de
software (WAZLAWICK, 2013).
As diretrizes propostas na ISO 9000-3 cobrem questões como:
• Entendimento dos requisitos funcionais entre contratante e contratado;
• Uso de metodologias consistentes para o desenvolvimento de software;
• Gerenciamento de projeto desde a concepção até a manutenção.
DICA
Se você quiser saber mais sobre guia de qualidade apli-
cável software, não deixe de acessar a página oficial da
ISO, em especial, a seção sobre as normas 9000-3.
QUALIDADE DE SOFTWARE 41
QUALIDADE DE SOFTWARE 42
QUALIDADE DE SOFTWARE 43
Certificação e adequação
Em diversos produtos e serviços, existem padrões
estabelecidos por meio de estudos, testes e aferições,
realizados pelos órgãos reguladores, como a ISO (PRES-
SMAN, 2011).
As normativas da qualidade de software estão definidas
na ISO/IEC 9126. No Brasil, essas normas estão definidas na NBR
ISO/IEC 9126-1. Por meio da ABNT, são organizadas comissões de
estudo que se baseiam nas normas estabelecidas pela ISO.
A ISO 9126 estabelece um conjunto de normas para:
• Processos: nos quais estão definidas as normas das etapas que compõem
o desenvolvimento de um software;
• Produtos: estão definidos os atributos que compõem a qualidade do soft-
ware, podendo ser dividido em: internos e externos, em que está descrito
as formas de aferição dos atributos;
• Qualidade em uso: são definidas a aferição da qualidade na visão do
usuário e a facilidade de uso e operação do sistema (ARTERO, 2016).
A empresa que decide seguir as normas tem que definir as metas a serem
alcançadas e apresentar um projeto com a implantação de atividades de ges-
tão da qualidade para conseguir a certificação.
QUALIDADE DE SOFTWARE 44
NORMA
Programa de Não Sim
Elaboração
Normalização
do Projeto OK
Setorial
de Norma
(PNS)
Análise do
Consulta
Demanda Resultado da
Nacional
Consulta Nacional
QUALIDADE DE SOFTWARE 45
QUALIDADE DE SOFTWARE 46
Figura 2. Níveis de maturidade CMMI. Fonte: ISD Brasil. Acesso em: 15/08/2019. (Adaptado).
QUALIDADE DE SOFTWARE 47
QUALIDADE DE SOFTWARE 48
DICA
Uma dica é pesquisar mais sobre a ferramentas JMeter da Apache Foun-
dation e sobre a ferramenta SQL Injection e OpenVas, que são softwares
que auxiliam nas medições e que permitem a realização de diversos testes
automatizados, facilitando o resultado das métricas utilizadas no projeto.
QUALIDADE DE SOFTWARE 49
QUALIDADE DE SOFTWARE 50
QUALIDADE DE SOFTWARE 51
QUALIDADE DE SOFTWARE 52
QUALIDADE DE SOFTWARE 53
QUALIDADE DE SOFTWARE 54
QUALIDADE DE SOFTWARE 55
QUALIDADE DE SOFTWARE 56
QUALIDADE DE SOFTWARE 57
QUALIDADE DE SOFTWARE 58
QUALIDADE DE SOFTWARE 59
QUALIDADE DE SOFTWARE 60
3 PADRÕES E TESTE
DE QUALIDADE DE
SOFTWARE
Tópicos de estudo
Padrões de projeto
Padrões de projeto criacionais
Padrão de projeto de classe
abstrata
Padrões estruturais
Padrões comportamentais
Teste de software
Tipos de testes de software
QUALIDADE DE SOFTWARE 62
ASSISTA
Para entender melhor sobre Padrões de Projetos, assista o vídeo Design Patter-
ns - Dicionário do Programador, do canal Código Fonte TV. O link se encontra nas
referências bibliográficas.
QUALIDADE DE SOFTWARE 63
EXEMPLIFICANDO
O padrão de projeto criacional garante que, para uma classe específica,
possa existir somente uma única instância, a qual é acessível de forma
global e uniforme. Dessa forma, uma classe Singleton irá:
– Armazenar a única instância existente;
– Garantir que apenas uma instância será criada;
– Prover acesso a tal instância.
Exemplos práticos:
– Um sistema de arquivos, gerenciador de janelas, tabela de salários
(ajuste), leitor de teclado, entre outros.
QUALIDADE DE SOFTWARE 64
$ instance : Singleton
Singleton()
getInstance() : Singleton
Singleton getInstance()
{
If(instance == null)
Instance = new
Singleton();
return instance;
QUALIDADE DE SOFTWARE 65
“interface”
Class1
AbstractProductOne
ProductOnePlatformOne ProductOnePlatformTwo
“interface”
AbstractPlatform
+makeProductOne()
+makeProductTwo()
ProductTwoPlatformOne ProductTwoPlatformTwo
Padrões estruturais
Este tipo de padrão de projeto é interessante quando se deseja compor
objetos em estruturas de árvore para representar hierarquias todo-parte. Per-
mite que clientes tratem objetos individuais e compostos de maneira uniforme.
Eles descrevem como classes e objetos podem ser combinados para formar gran-
des estruturas. Objetos padrões descrevem como objetos podem ser compostos em
grandes estruturas utilizando composição ou inclusão de objetos com outros objetos.
Padrões comportamentais
Este tipo de padrão de projeto descreve padrões de comunicação entre
objetos ou classes, caracterizando o modo como classes e objetos interagem
e compartilham responsabilidades. Existem situações onde diversos objetos
(visualizações) devem representar um outro objeto (dados).
QUALIDADE DE SOFTWARE 66
Teste de software
De acordo com Amaral et al., em Metodologias de teste de software, de 2009,
devido aos métodos de desenvolvimento e complexidade dos softwares, eles
são altamente passiveis a erros. Esses erros podem ocorrer devido a proble-
mas na especificação dos requisitos, na modelagem de negócio, no modo que
a funcionalidade deve ser desempenhada, na complexidade do sistema e na
mudança de requisitos. Todos os desenvolvedores estão suscetíveis a erros de
programação, já que esses sistemas possuem alto grau de complexidade. Para
solucionar e evitar tal problemática, existe uma atividade em que se pode ava-
liar, testar e corrigir tais problemas, denominada teste de software, que é feita
de diversas maneiras e usando diversas metodologias, podendo ser vista como
uma parcela do processo que garante a qualidade de software.
A atividade de teste de software consiste em uma das etapas do desenvol-
vimento de um software cujo objetivo primordial é avaliar a possibilidade e a
existência de erros no sistema, para que então possam ser solucionados ou
evitados futuramente. Essa etapa busca verificar se o sistema se comporta de
acordo com o especificado nos requisitos levantados junto ao cliente, reduzin-
do a probabilidade de erros quando o sistema estiver em produção.
Neto, em seu artigo “Introdução a testes de software” na revista Engenharia
de software magazine, de 2015, declara que o teste de software busca a execu-
ção de um determinado sistema para avaliar se alcançou os objetivos propos-
tos, como também se processa corretamente para o seu fim específico. Portan-
to, o teste de software tem como objetivo principal verificar se o sistema possui
falhas, para que elas sejam eliminadas antes da entrega para o cliente.
Durante a década de 70, a ideia dos testes de softwares começava a ser
sedimentada, sendo um processo dependente de várias etapas e não só a re-
visão de códigos de linguagens. Este novo conceito trouxe inúmeros aspectos
positivos para o setor de TI, porém não houve redução de custos, já que se tes-
QUALIDADE DE SOFTWARE 67
QUALIDADE DE SOFTWARE 68
NÍVEL DO TESTE
QUALIDADE DE SOFTWARE 69
Especificação
Teste de sistema
do sistema
Desenho do
Teste de integração
sistema
Codificação
Fonte: ROCHA, 2018.
QUALIDADE DE SOFTWARE 70
EXPLICANDO
Existem sistemas críticos que não podem gerar erros em hipótese alguma,
como o controle de tráfego aéreo, por exemplo, que compromete a vida
da população caso apresente erros. Para esses sistemas, muitas empre-
sas utilizam técnicas e metodologias, sendo elas a injeção controlada de
defeitos (ITool), a UMIL, testes automatizados e funcionais.
QUALIDADE DE SOFTWARE 71
QUALIDADE DE SOFTWARE 72
QUALIDADE DE SOFTWARE 73
QUALIDADE DE SOFTWARE 74
Processo de revisão
Existem muitas variações na modelagem do processo de revisão, mas nor-
malmente ele é composto de algumas fases.
Uma revisão tem por objetivos:
• Verificar se o artefato produzido satisfaz as especificações elaboradas
em fases anteriores;
• Identificar os desvios com relação aos padrões estabelecidos, inclusive
fatores que afetem a manutenibilidade;
• Sugerir melhorias;
• Promover a troca de conhecimento entre os participantes;
QUALIDADE DE SOFTWARE 75
QUALIDADE DE SOFTWARE 76
Inspeção
De acordo com Sommerville, em sua obra já citada, as inspeções de pro-
grama são “revisões em pares” em que os membros da equipe colaboram
para encontrar bugs no programa que está sendo desenvolvido. As inspeções
podem fazer parte dos processos de verificação e validação de software. Elas
complementam os testes, pois não exigem que o programa seja executado.
Isso significa que podem ser verificadas versões incompletas do sistema e
que representações, tais como modelos UML, podem ser checados.
As inspeções são técnicas estáticas de V&V realizadas sem que seja preci-
so executar o software. Elas são aplicadas em:
documento de requisitos;
• Diagramas de projeto;
• Código-fonte – apenas correspondência com a especificação.
Podem ser realizadas em todas as etapas do ciclo de vida de desenvolvi-
mento do software.
O conceito de inspeção foi introduzido pela IBM na década de 70 e trata-se
de uma técnica formal para revisão visual de artefatos de software para detec-
tar erros, violações de padrões de desenvolvimento e outros problemas. A ins-
peção é muito rigorosa e os inspetores são treinados em técnicas de inspeção.
Essa técnica é aplicada amplamente para revisar código de programa.
QUALIDADE DE SOFTWARE 77
Inspeções
Protótipo de
Teste
sistema
Fonte: SOMMERVILLE, 2011. (Adaptado).
QUALIDADE DE SOFTWARE 78
É importante saber que revisão e inspeção são aspectos diferentes com rela-
ção aos artefatos utilizados para o desenvolvimento de software, mas que juntos
podem minimizar problemas que podem ser encontrados em fases muito avança-
das do desenvolvimento de software e que podem trazer custos muito elevados.
QUALIDADE DE SOFTWARE 79
ELEMENTOS DA
CHECKLIST
NARRATIVA
Fluxo • Basta a satisfação das pré-condições para poder disparar o fluxo principal?
principal
• O fluxo principal pode ser disparado pelo ator principal?
• O fluxo principal resulta em algo que interesse ao ator principal?
• O fluxo principal é viável?
• O fluxo principal é capaz de assegurar a pós-condição ao terminar?
Observação: podem ser usados os critérios de qualidade de especificações.
QUALIDADE DE SOFTWARE 80
QUALIDADE DE SOFTWARE 81
QUALIDADE DE SOFTWARE 82
QUALIDADE DE SOFTWARE 83
QUALIDADE DE SOFTWARE 84
4 PROCESSOS DE
GERÊNCIA DA
QUALIDADE DE
SOFTWARE
Tópicos de estudo
Processos de gerência da quali-
dade do software
Modelos de qualidade de sof-
tware
Melhorias de processos
Melhoria no processo de de-
senvolvimento de web app
QUALIDADE DE SOFTWARE 86
QUALIDADE DE SOFTWARE 87
QUALIDADE DE SOFTWARE 88
Instrumento de
Questionário.
avaliação
QUALIDADE DE SOFTWARE 89
QUALIDADE DE SOFTWARE 90
QUALIDADE DE SOFTWARE 91
QUALIDADE DE SOFTWARE 92
Estágios Características
- Gerenciamento de requisitos;
- Planejamento de projeto, monitoramento e controle de projeto;
- Gerenciamento de fornecedores;
Gerenciado
- Medição e análise;
- Garantia da qualidade do processo e do produto;
- Gerenciamento de configuração.
- Desenvolvimento de requisitos;
- Solução Técnica;
- Integração do produto;
- Verificação e validação;
- Foco no processo organizacional;
Definido
- Definição do processo organizacional;
- Treinamento organizacional;
- Gerenciamento de riscos;
- Gerenciamento integrado do projeto;
- Análise da decisão e resolução.
QUALIDADE DE SOFTWARE 93
QUALIDADE DE SOFTWARE 94
QUALIDADE DE SOFTWARE 95
Melhorias de processo
Um produto com qualidade é uma necessidade, uma vez que, desde o levan-
tamento de requisitos até a fase de desenvolvimento, os fatores que atendem
às necessidades do cliente devem estar em evidência, bem como o feedback
para melhoria contínua dos processos.
Com o objetivo de padronizar e aprimorar a avaliação da qualidade de
produtos de software, surgiu a Norma ISO/IEC 9126 desenvolvida em conjunto
com a ISO e IEC. Segundo a norma ISO/IEC 9126, a definição para avaliação de
produto de software refere-se à medição de quanto o produto de software, em
uso, atende às necessidades implícitas e explícitas.
Essa norma abrange os modelos de qualidade que um software deve seguir,
incluindo métricas externas, internas e qualidades de uso. Em outras palavras,
essa norma define um conjunto de parâmetros com o objetivo de padronizar a
avaliação da qualidade de software. Ela se enquadra no modelo de qualidade
das normas da família 9000. A norma brasileira correspondente é a NBR 13596,
que foi substituída pela NBR ISO/IEC 9126-1.
CONTEXTUALIZANDO
Para entender a importância de aplicar um conjunto de
parâmetros para a qualidade de software, confira uma
matéria sobre a Google, que decidiu mudar o processo de
revisão de aplicativos, buscando melhoria nos processos.
QUALIDADE DE SOFTWARE 96
QUALIDADE DE SOFTWARE 97
Confiabilidade
É capaz de recuperar dados após uma
Recuperabilidade Média
falha?
QUALIDADE DE SOFTWARE 98
QUALIDADE DE SOFTWARE 99
ASSISTA
Confira o vídeo #CPBSB2 - Progressive web apps - A revo-
lução no desenvolvimento web, que aborda um dos mais
interessantes conceitos disponíveis e relevantes, quando
falamos do desenvolvimento de web apps: o PWA.
DICA
Confira um resumo descritivo dessas regras de negócio no portal Softex,
disponível em: www.softex.br/mpsbr/.
Modelo MPS
ISO/IEC ISO/IEC
CMMI-DEV
12207 15504
Guia de implementação
- Gerência de riscos;
- Desenvolvimento para reutilização;
C
- Análise de decisão e resolução;
- Gerência de reutilização.
- Verificação;
- Validação;
D - Projeto e construção do produto;
- Integração do produto;
- Desenvolvimento de requisitos.
- Medição;
- Garantia de qualidade;
F - Gerência de configuração;
- Gerência de portifólio de projeto;
- Aquisição.
- Gerência de requisitos;
G
- Gerência de projetos.
Capacidade do processo
A capacidade do processo é representada por um conjunto de atributos
de processo descrito em termos de resultados esperados. A capacidade do
processo expressa o grau de refinamento e institucionalização com que o
processo é executado na organização/unidade organizacional. No MPS, à
medida que a organização/unidade organizacional evolui nos níveis de ma-
DADOS DO FORNECEDOR
*Todos os gráficos, tabelas e esquemas são creditados à autoria, salvo quando indicada a referência.
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio
A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo
ASSISTA
Indicação de filmes, vídeos ou similares que trazem informações comple-
mentares ou aprofundadas sobre o conteúdo estudado.
CITANDO
Dados essenciais e pertinentes sobre a vida de uma determinada pessoa
relevante para o estudo do conteúdo abordado.
CONTEXTUALIZANDO
Dados que retratam onde e quando aconteceu determinado fato;
demonstra-se a situação histórica do assunto.
CURIOSIDADE
Informação que revela algo desconhecido e interessante sobre o assunto
tratado.
DICA
Um detalhe específico da informação, um breve conselho, um alerta, uma
informação privilegiada sobre o conteúdo trabalhado.
EXEMPLIFICANDO
Informação que retrata de forma objetiva determinado assunto.
EXPLICANDO
Explicação, elucidação sobre uma palavra ou expressão específica da
área de conhecimento trabalhada.
Níveis de teste....................................................................................................................... 32
Teste de desenvolvimento.............................................................................................. 32
Teste unitário..................................................................................................................... 32
Teste de componentes.................................................................................................... 34
Teste de sistema............................................................................................................... 36
Teste de release............................................................................................................... 37
Testes baseados em requisitos...................................................................................... 37
Teste de cenário............................................................................................................... 38
Testes de desempenho.................................................................................................... 39
Teste de usuário............................................................................................................... 40
Sintetizando............................................................................................................................ 44
Referências bibliográficas.................................................................................................. 45
Sintetizando............................................................................................................................ 70
Referências bibliográficas.................................................................................................. 71
Automação de testes............................................................................................................ 87
Testes automatizados...................................................................................................... 87
Principais ferramentas de automação de testes........................................................ 88
Desafios benéficos da automação de testes.............................................................. 90
Gerenciamento de defeitos................................................................................................. 91
Processo de gestão de defeitos.................................................................................... 92
Ciclo de vida de um defeito............................................................................................. 93
Relatório de defeitos. ...................................................................................................... 94
Sintetizando............................................................................................................................ 97
Referências bibliográficas.................................................................................................. 98
Sintetizando.......................................................................................................................... 125
Referências bibliográficas................................................................................................ 126
TESTE DE SOFTWARE 9
Dedico este material ao meu amigo Fabio Carmine, que tem trocado
comigo experiências profissionais e acadêmicas ao longo de uma década.
TESTE DE SOFTWARE 10
Currículo Lattes:
http://lattes.cnpq.br/1518555946125894
TESTE DE SOFTWARE 11
1 ASPECTOS
INTRODUTÓRIOS DO
TESTE DE SOFTWARE
Tópicos de estudo
Fundamentos de teste de
software
Desenvolvimento de software
e teste de software
Níveis de teste
Teste de desenvolvimento
Teste unitário
Teste de componentes
Teste de sistema
Teste de release
Testes baseados em requisitos
Teste de cenário
Testes de desempenho
Teste de usuário
TESTE DE SOFTWARE 13
ASSISTA
O vídeo Você ainda faz testes de software manuais?
introduz o tema de maneira descontraída e mostra, visual-
mente, exemplos práticos muito interessantes.
É importante frisar que as atividades ligadas aos testes de software são consi-
deradas elementos críticos da garantia de qualidade e simbolizam a análise mais
recente de especificação, projeção e codificação. Tais ações vêm sendo propaga-
das graças ao crescente aumento do software na condição de componente de sis-
tema e aos custos ligados aos erros de software. Normalmente, o projeto total em
teste dispende de uma porcentagem relevante do esforço de uma organização
de software. Só para citar um exemplo, uma atividade ligada a teste de software
em sistemas relacionados à vida humana (um controle de voo, por exemplo) pode
demandar um custo, muitas vezes, de três a cinco vezes maior em comparação à
outras áreas de engenharia de software (PRESSMAN, 1995, p. 787).
TESTE DE SOFTWARE 14
TESTE DE SOFTWARE 15
Sistema
Figura 1. Modelo de entrada-saída de teste de programa. Fonte: SOMMERVILLE, 2011, p. 145. (Adaptado).
TESTE DE SOFTWARE 16
EXPLICANDO
Os processos de verificação e de validação têm o objetivo de determinar um
nível de confiança garantindo que o software atenderá seus propósitos. O
sistema precisa ser, dentre outros aspectos, das expectativas dos usuários.
TESTE DE SOFTWARE 17
Inspeções
Protótipo
Teste
de sistema
TESTE DE SOFTWARE 18
TESTE DE SOFTWARE 19
Executar Comparar
Preparar
Projetar casos programa resultados
dados de
de teste com dados para os casos
teste
de teste de teste
Figura 3. Um modelo do processo de teste de software. Fonte: SOMMERVILLE, 2011, p. 146. (Adaptado).
Configuração de SW
Resultado de teste Depuração
Erros Correções
Avaliação
Resultados esperados
Modelo de
Configuração de teste
confiabilidade Confiabilidade
prevista
TESTE DE SOFTWARE 20
DICA
Os testes são executados e os resultados analisados, ou seja, os resulta-
dos alcançados com os testes são relacionados aos resultados aguarda-
dos. No momento em que os dados com erros são expostos, é necessário
dar início ao processo de depuração.
TESTE DE SOFTWARE 21
TESTE DE SOFTWARE 22
Laço = 20 vezes
TESTE DE SOFTWARE 23
TESTE DE SOFTWARE 24
TESTE DE SOFTWARE 25
CONTEXTUALIZANDO
Analisar requisitos permite ao engenheiro ou engenheira de sistemas
especificar a função e o comportamento do software, apontando a interfa-
ce do software aliado a outros componentes do sistema, e definir quais as
limitações impostas ao projeto adotado.
TESTE DE SOFTWARE 26
TESTE DE SOFTWARE 27
Modelo de informação
Figura 6. Projeto de software e engenharia de software. Fonte: PRESSMAN, 1995, p. 417. (Adaptado).
TESTE DE SOFTWARE 28
TESTE DE SOFTWARE 29
TESTE DE SOFTWARE 30
TESTE DE SOFTWARE 31
Teste de desenvolvimento
Quando tratamos de níveis (estágios) de testes, de imediato é preciso
falar sobre o teste do desenvolvedor. Esta modalidade de teste se caracte-
riza por incluir todas as atividades de testes executadas pela equipe res-
ponsável pelo desenvolvimento do sistema. Normalmente, o responsável
pelo teste do software é o próprio programador ou programadora que o
criou, apesar das exceções. Determinados processos de desenvolvimen-
to adotam programadores-testadores de maneira pareada, para os quais
cada programador apresenta um testador relacionado para criar testes e
auxiliar no processo. Em relação aos sistemas críticos, é preciso adotar um
procedimento mais formalizado por uma equipe de testes independente
atuando em uma equipe responsável pelo desenvolvimento, que cuidará
do desenvolvimento de testes realizados e pela manutenção dos seus re-
sultados.
Segundo Sommerville (2011, p. 148), ao longo do desenvolvimento, o
teste pode ser executado basicamente em níveis de detalhamento: testes
unitário, de componentes e de sistema. Verificaremos cada um deles.
Teste unitário
O teste unitário é o primeiro nível, e se caracteriza pelo fato dos elemen-
tos de programa ou até mesmo as classes de objetos serem avaliadas de
TESTE DE SOFTWARE 32
TESTE DE SOFTWARE 33
Teste de componentes
Outra subdivisão dos testes de desenvolvimento consiste nos chamados
“testes de componentes”, nos quais diversas unidades individuais passam a
ser integradas para desenvolver elementos compostos de diversos objetos
que interagem.
Sommerville (2011, p. 151) traz um exemplo que ilustra bem a execução
deste teste: vamos imaginar um sistema de estação meteorológica, no qual
o componente responsável pela reconfi guração adiciona objetos que tratam
de cada aspecto relacionado à reconfi guração. O usuário consegue ter aces-
TESTE DE SOFTWARE 34
TESTE DE SOFTWARE 35
EXPLICANDO
O teste de sistema pode ser considerado um processo coletivo. Em
algumas organizações empresariais, o teste de sistema pode gerar
uma equipe independente, sem necessariamente ocorrer a inserção de
projetistas e programadores.
TESTE DE SOFTWARE 36
TESTE DE SOFTWARE 37
Teste de cenário
Podemos entender que o teste de
cenário é uma abordagem de teste de
release no qual o usuário idealiza ce-
nários para auxiliarem no desenvol-
vimento de casos de teste direciona-
dos ao sistema. Cenários devem ser
realistas, e usuários reais do sistema
devem ser capazes de se relacionar
com eles. Um teste de cenário deve,
dentre outros aspectos, estabelecer
uma relação entre os stakeholders e
acreditar na importância do sistema ser aprovado no teste. Estes testes pre-
cisam ser de fácil avaliação e, na ocorrência de problemas com o sistema, a
equipe responsável precisa identificá-los.
TESTE DE SOFTWARE 38
Testes de desempenho
Com a integração total do sistema existe a possibilidade de testá-lo para
propriedades emergentes, isto é, o desempenho e a confiabilidade estabe-
lecida. É importante salientar que os testes de desempenho são projetados
para garantir que o sistema processe as atividades destinadas a ela. Assim
como ocorre na execução de outros testes, os testes de desempenho normal-
mente demonstram que o sistema consegue atender os seus requisitos, no
que se refere à localização de problemas e falhas no sistema.
Segundo Sommerville (2011, p. 159), para comprovar se os requisitos de
desempenho estão sendo atendidos, será necessário, por exemplo, desen-
volver um perfil operacional. Trata-se de uma série de testes que indicam a
combinação efetiva de trabalho manipulado pelo sistema. A maneira mais efi -
ciente de encontrar os defeitos é projetando testes até os limites sistêmicos.
É o que denominamos dentro dos testes de desempenho como “estressar o
sistema” ao realizar demandas que se encontrem além dos limites de projeto
do software.
Este “teste de estresse” normalmente apresenta uma dupla funcionalida-
de: primeiro, é testar o comportamento de falha do sistema. Vale ressaltar
que as circunstâncias podem aparecer através de uma combinação espo-
rádica de situações, em que a carga exercida sobre o sistema
ultrapassa a carga prevista. Diante deste cenário, é essencial
que os erros do sistema não corrompam os dados ou causem
perdas de serviços do usuário.
A outra função é causar certo nível de “estresse” ao
sistema para apresentar defeitos que geralmente não
TESTE DE SOFTWARE 39
Teste de usuário
O teste de usuário é considerado um estágio em que usuários ou clientes dis-
ponibilizam entradas e conselhos sobre o teste de sistema. Ele é fundamental,
mesmo que a sua atuação ocorra em sistemas abrangentes ou até mesmo quando
os testes de release tenham ocorrido. Isso ocorre por conta das interferências no
ambiente corporativo do usuário que impactam, por exemplo, a confiabilidade e o
desempenho de um sistema.
O desenvolvedor de sistemas, neste contexto, não consegue replicar o ambien-
te de trabalho do sistema, já que os testes no ambiente do desenvolvedor são
artificiais. Os testes de usuário são subdivididos em:
• Teste alfa, pelo qual os usuários do software atuam em paralelo com a equi-
pe de desenvolvimento para realizar testes no software dentro do local do
desenvolvedor;
• Teste beta, pelo qual o release do software fica disponível aos usuários para
ser testado, além dos problemas encontrados pelos desenvolvedores do sistema;
• Teste de aceitação ao final, pelo qual clientes realizam testes no sistema,
visando a decidir a aceitação pela equipe de desenvolvimento de sistemas e
posteriormente serem implantados dentro do ambiente de clientes.
Nos testes alfa, os usuários e os desenvolvedores atuam conjuntamente
para realizar testes em um sistema desenvolvido. Isso indica que os usuários
TESTE DE SOFTWARE 40
Negociar
Definir critérios Planejar testes Derivar testes Executar testes Aceitar ou
resultados
de aceitação de aceitação de aceitação de aceitação rejeitar sistema
de testes
TESTE DE SOFTWARE 41
TESTE DE SOFTWARE 42
TESTE DE SOFTWARE 43
TESTE DE SOFTWARE 44
TESTE DE SOFTWARE 45
2 CLASSIFICAÇÃO DE
TESTE DE SOFTWARE
Tópicos de estudo
Técnicas de teste de software Testes automáticos de software
Técnicas de teste de software na prática
caixa-preta Noções de Java
Técnicas de teste de software Teste de cálculos com
caixa-branca assertEquals
Teste de cálculos com
Tipos de teste de software assertTrue
Exemplos de testes de tipos de Sobre asserts e sobre as
software anotações jUnits
TESTE DE SOFTWARE 47
TESTE DE SOFTWARE 48
TESTE DE SOFTWARE 49
TESTE DE SOFTWARE 50
TESTE DE SOFTWARE 51
DICA
Existe um programa chamado FindBugs criado para testar erros automa-
ticamente. Esse programa é gratuito e existem tutoriais sobre baixá-lo e
manuseá-lo. Ele consegue descobrir rapidamente se há pontos nulos no
sistema, variáveis com nomes ruins, se as sessões são fechadas após o
usuário finalizar uma ação, entre outros.
3
1
2 3 4
10
4 13 11 5
5 6
12
7 6
8 7
8
9
10 9
11
12
13
TESTE DE SOFTWARE 52
Se
While Repeat... until
Sequência
Software
Testador ##/##/##
Data de revisão
TESTE DE SOFTWARE 53
TESTE DE SOFTWARE 54
TESTE DE SOFTWARE 55
TESTE DE SOFTWARE 56
ASSISTA
Para conhecer alguns exemplos de teste de softwares,
assista ao trailer do filme Snowden: herói ou traidor. Esse
filme mostra a operação de diversos testes de software
nos EUA feitos por hackers contratados por empresas de
segurança do país.
TESTE DE SOFTWARE 57
TESTE DE SOFTWARE 58
Noções de Java
Para compreender o teste que iremos mostrar na prática, é necessário
conhecer o mínimo de Java e a extensão JUnit. Por isso, mostraremos e ex-
plicaremos aqui duas classes em Java e, mais adiante, as classes em JUnit,
programa de teste de software. Agora, explicaremos classe CalculoCompra
TESTE DE SOFTWARE 59
TESTE DE SOFTWARE 60
CURIOSIDADE
O programa Eclipse roda diversas linguagens de programação; ele funcio-
na com a linguagem Java, linguagem C++, linguagem C#, JavaScript, Php
etc., por isso, é uma plataforma útil para testes de software. Existe tam-
bém o programa NetBeans, que é bem parecido com o Eclipse e também
trabalha com várias linguagens.
TESTE DE SOFTWARE 61
class CalculoCompraTeste {
public class CalculoCompra {
@Test
void Addtest() {
public int soma(int brinquedo,
soma(int brinquedo int CalculoCompra junit = new Cal-
blusa) {
blusa culoCompra();
return brinquedo+blusa;
brinquedo+blusa
int result = junit.soma(100,
junit.soma(100, 200);
}} assertEquals(300, re-
sult);
}}
TESTE DE SOFTWARE 62
TESTE DE SOFTWARE 63
Figura 8. Captura de tela que mostra como criar a classe de teste CalculoProdutoTeste.
TESTE DE SOFTWARE 64
Figura 9. Captura de tela com resultados de testes para resultado errado, o certo seria 60 no lugar de 20.
Agora, iremos fazer o Debug para executar o teste e, então, o resultado será
mostrado. Para isso, clique com o botão direito na ClasseProdutoTeste e faça o
Debug com o 1 JUnit Test, conforme mostra a Figura 10.
A Figura 10 mostra o erro em vermelho, portanto, caso colocássemos 20 no
lugar de 60 como resultado esperado, a barra ficaria vermelha escura e aparece-
ria um status de uma falha. Caso desse certo, a barra ficaria verde.
TESTE DE SOFTWARE 65
TESTE DE SOFTWARE 66
TESTE DE SOFTWARE 67
TESTE DE SOFTWARE 68
TESTE DE SOFTWARE 69
TESTE DE SOFTWARE 70
TESTE DE SOFTWARE 71
3 CASOS DE TESTES:
CONCEITOS
FUNDAMENTAIS
Tópicos de estudo
Extração de casos de teste Automação de testes
Regras de extração de casos Testes automatizados
de teste Principais ferramentas de auto-
Exemplos de extração de casos mação de testes
de teste Desafios benéficos da automa-
ção de testes
Criando casos de teste
Geração de casos de testes do Gerenciamento de defeitos
tipo caixa-preta Processo de gestão de defeitos
Geração de casos de testes Ciclo de vida de um defeito
automática Relatório de defeitos
Geração de casos de testes em
tarefas
TESTE DE SOFTWARE 73
TESTE DE SOFTWARE 74
TESTE DE SOFTWARE 75
TESTE DE SOFTWARE 76
TESTE DE SOFTWARE 77
Fluxo básico
Fluxo alternado 3
Fluxo alternado 1
Fluxo alternado 4
Fluxo alternado 2
ENCERRAR ENCERRAR
CASO DE USO CASO DE USO
ENCERRAR
CASO DE USO
TESTE DE SOFTWARE 78
EXPLICANDO
Assim como nos casos de teste direcionados aos testes funcionais,
geralmente haverá mais de um caso de teste por cenário ou requisito de
uso. É comum definir vários casos de teste: que se encontra abaixo do
valor delimitado de desempenho (taxa média de transações), dentro do
parâmetro (taxa alta de transações), ou acima do valor limite (taxa máxi-
ma de transações).
TESTE DE SOFTWARE 79
TESTE DE SOFTWARE 80
TESTE DE SOFTWARE 81
TESTE DE SOFTWARE 82
TESTE DE SOFTWARE 83
TESTE DE SOFTWARE 84
TESTE DE SOFTWARE 85
TESTE DE SOFTWARE 86
Automação de testes
Se pensarmos em um sistema real, perceberemos que ele pode apresen-
tar uma quantidade expressiva de cenários de teste. Sabemos que um siste-
ma precisa passar por uma evolução de maneira rápida, além de apresentar
uma capacidade de controlar, o mais rápido possível, as prováveis falhas
ocorridas na segurança. Porém, é praticamente impossível analisar de ma-
neira especifi ca as alterações às quais o sistema está sujeito e verifi car se
alguma mudança surtiu efeito.
Diante deste contexto, para que a análise do sistema seja otimizada e os
comportamentos desejados sejam alcançados, é fundamental o uso de mé-
todos relacionados à automação de testes. Ela é vista como importante para
uma série de funcionalidades, como as aplicações extensas de Web, já que
consegue reduzir de maneira significativa o tempo para executar os testes
e auxiliar a disponibilização de produtos menos defeituosos. Ao longo deste
tópico verificaremos os conceitos fundamentais e as principais metodologias
ligadas à automação de testes.
Testes automatizados
Como podemos definir um teste automatizado e quais as suas funcionalida-
des? Um caso de teste realizado de maneira automatizada é considerado um script
que provém de uma sequência de ações, realizada dentro das interfaces gráficas
de uma aplicação, aliada ao uso de dados importantes. Depois que as pré-con-
dições são configuradas, a execução dos testes é realizada para comparar poste-
riormente os resultados alcançados (reais) com os resultados desejados. Ao final
de um relatório de teste, eles são apresentados para definir o status do resultado.
TESTE DE SOFTWARE 87
TESTE DE SOFTWARE 88
DICA
Programadores experientes no desenvolvimento de scripts e bibliotecas
específicas conseguem aproveitar o uso do Selenium de maneira mais
efetiva para cada modelo de teste necessário. O Selenium é uma ferra-
menta flexível, o que torna sua aplicação da automação de testes viável,
independentemente do software.
TESTE DE SOFTWARE 89
TESTE DE SOFTWARE 90
Gerenciamento de defeitos
Quando nos referimos à garantia de qualidade de um software, tratamos
da busca e correção de erros presentes no produto. A qualidade é medida pela
quantidade de erros visualizados ao longo da realização dos testes. Geralmen-
te as pessoas indicam que a busca por defeitos é a uma função privativa do
TESTE DE SOFTWARE 91
Atividade humana que gera resultado errado, por exemplo, uma atividade incorreta
Engano (Mistake)
realizada pelo desenvolvedor.
TESTE DE SOFTWARE 92
TESTE DE SOFTWARE 93
DICA
Assim que o defeito é localizado, intencional ou acidentalmente, o proce-
dimento seguinte é o relato desse defeito, através do procedimento defini-
do na gestão de defeitos. Este mecanismo pode ser uma simples planilha,
até uma ferramenta automatizada.
Quando o defeito for reportado, ele passará por um ciclo de vida estabe-
lecido anteriormente pelo processo de gestão de defeitos, cuja finalidade é
estabelecer os fluxos percorridos pelo defeito até sua finalização.
Relatório de defeitos
Como já observamos, os relatórios consistem em uma das partes essen-
ciais do processo de gestão de defeitos, porém são colocados em uma condi-
ção secundária. Algumas diretrizes precisam ser seguidas quando o relato de
um defeito está sendo realizado. Um relatório deve ser preciso e claro, pois
cabe ao usuário identificar se o defeito observado é um desvio da performan-
ce esperada, e não uma falha de compreensão.
Um relatório também precisa ser generalizante, pois um problema pode ocor-
rer em outras situações pertinentes ao software e mostrar que o defeito pode ser
reproduzível, descrevendo os procedimentos adequados para a sua reprodução.
Por fim, um relatório precisa ainda evidenciar a existência do defeito vi-
sualizado através de arquivos de saída, e a revisão, tendo a descrição e os
passos para que o defeito seja reproduzido.
Outro aspecto deixado em segundo plano é a classificação da severidade
e prioridade pertinentes aos defeitos, geralmente interpretada de maneira
errônea em diversas situações. Tal interpretação colabora para a priorização
ineficiente e a correção dos defeitos realizada de maneira agendada. Conse-
TESTE DE SOFTWARE 94
Severidade Descrição
Impede plenamente o uso de uma funcionalidade básica, porém pode ser utilizada por
Mediana
um “workaround”, ou seja, um contorno conhecido.
Prioridade Descrição
O defeito precisa ser corrigido imediatamente, pois a aplicação não será liberada até
1
que ele seja sanado. O tempo de correção é de até um dia útil.
O defeito precisa ser corrigido o mais breve possível, pois a aplicação não será liberada
2
até que ele seja sanado. O tempo de correção é de até cinco dias úteis.
TESTE DE SOFTWARE 95
TESTE DE SOFTWARE 96
TESTE DE SOFTWARE 97
TESTE DE SOFTWARE 98
4 MEDIDAS,
GERENCIAMENTO E
EXECUÇÃO DE TESTES
DE SOFTWARE
Tópicos de estudo
Métricas para o teste Gerenciamento de teste
de software de software
Métricas de profundidade, de Ferramentas de suporte ao ge-
quantidade e de severidade renciamento de teste de software
Métricas básicas e profundas Planejamento e estimativa de
Métricas relacionadas ao teste
software
Ferramentas de suporte
ao teste
Ferramentas de suporte ao
teste: primeiro teste
Estratégia de teste e
abordagem de teste
Ferramentas de suporte ao
teste: segundo teste
ASSISTA
Para conhecer alguns exemplos de testes de software, as-
sista ao filme Piratas da informática, que mostra o desen-
volvimento dos softwares de dois sistemas muito conhe-
cidos. No filme, é possível ver a progressão dos testes
realizados por Bill Gates e Steve Jobs, a fim de alavancar
a Microsoft e a Apple, respectivamente.
Agora, voltando a atenção para a terceira coluna, pode-se verificar que exis-
tem algumas categorias de grupos heurísticos de erros, a saber:
• A categoria popular é assim denominada quando o erro é encontrado
várias vezes no programa;
• A categoria novo refere-se a quando o erro nunca ocorreu antes;
• A categoria crítico é chamada assim quando o erro pode prejudicar o pro-
grama, de forma a destruir seu funcionamento;
• A categoria falhou recentemente é quando um problema surgiu neste
programa a partir de uma data recente;
• A categoria complexo refere-se a quando o problema é difícil de resolver;
• A categoria dependente de bloco superior é quando um erro está rela-
cionado à categoria pai, como, por exemplo, o campo de texto de um for-
mulário que só pode ser ajustado se a tabela a qual ele pertence também
for regulada.
CURIOSIDADE
É interessante comentar que antes de seu surgimento, havia uma ferra-
menta da companhia Mercury, denominada QuickTest, que apresentava
muitos problemas. O jargão que deu nome ao Selenium foi concebido por
seu desenvolvedor, que afirmou que “o antídoto para o envenenamento
por mercúrio é o selênio” em uma piada interna.
Após abrir o site em uma nova janela do Firefox de teste, posicione uma tela
de cada lado, conforme o Diagrama 1, clique com o botão direito na palavra
Cidadão e crie um @assert title.
O resultado deve gerar uma tela com fonte verde; caso ela esteja vermelha
significa que o link não está funcionando. Além disso, haverá uma barra verde,
o que evidencia que o testador identificou a mudança de página com êxito.
Desta vez, utilizaremos uma maneira mais rápida para testar todos os
campos de uma vez só: ao abrir o navegador de teste, posicione as duas jane-
las uma do lado da outra e siga as instruções da Figura 6.
4. Dê um clique no
campo Mensagem
DICA
O ideal é testar vários programas de gestão de testes de software e, en-
tão, fazer um estudo comparativo entre eles, a fim de descobrir quais usar.
Ainda neste quesito, também deve ser levado em consideração contratar
um profissional experiente da área, que possa aplicar treinamentos na
equipe de teste sobre a maneira correta de mexer nestas aplicações.
EXPLICANDO
O IEEE (Instituto de Engenheiros Eletricistas e Eletrônicos) é uma orga-
nização sem fins lucrativos localizada nos EUA que cria conhecimentos
na área de tecnologia e eletrônica. Trata-se de uma grande organização,
dedicada a acompanhar e estimular o avanço tecnológico no mundo em
benefício da humanidade. Além disso, essa organização também cria
programas de premiação para invenções e normas, fazendo com que a
empresa que as siga seja reconhecida no meio.
Seção Descrição
Casos de testes
Nome Projeto: Sistema de Apoio a Tomada de Decisão
Resultado Resultado do Resultado do
ID Módulo Descrição Roteiro
esperado desenvolvedor teste
1) Escolher a Usuário1 -
Alterar Usuário2 -
lteração
Alteração opção Listar Exibir na lista 25/02/2010.
dados 15/02/2010;
1 Usuário; de usuários Mostra um
Usuár
Usuário cadastrais Executado com
2) Clicar em cadastrados. erro ao alterar
dos usuário. sucesso.
alterar na lista. usuário.
1) Escolher a
Mostrar a
opção Inserir
Verificar a mensagem “Campo Usuário2 - Usuário1 -
Alteração Usuário;
de preenchimento 15/02/2010; 25/02/2010.
2 validação 2) Deixar os
Usuá rio
Usuário obrigatório” para Executado com Executado com
dos campos. campos nome,
os campos nome, sucesso. sucesso.
e-mail e senha
senha e e-mail.
em branco.
Mostrar a
1) Escolher a
mensagem “O
opção Inserir
valor fornecido Usuário1 -
Verificar a Usuário; Usuário2 -
Alteração para este campo 25/02/2010.
validação 2) Inserir uma se- 15/02/2010;
3 não pode ter O campo senha
Usuá
Usuário nha com menos Executado com
dos cam
campos.
pos. de 2 caracteres menos que 6 aceita menos de
sucesso.
e mais que 32 6 caracteres.
ou mais de 32
caracteres” para o
caracteres.
campo senha.
Pronto Mostra
um erro
1 para testar Usuário2 Alta 01/03/2010 - Usuário2
ao alterar
novamente usuário.
O campo
Pronto
senha aceita
3 para testar Usuário2 Alta 14/03/2010 - Usuário2
menos de 6
novamente
caracteres.
No cabeçalho
Pronto
o nome do
3 para testar Usuário1 Baixa 10/03/2010 - Usuário1
relatório está
novamente
errado.