Escolar Documentos
Profissional Documentos
Cultura Documentos
Proj Impre e Teste de Software PDF
Proj Impre e Teste de Software PDF
IMPLEMENTAÇÃO
E TESTE DE
SOFTWARE
GRADUAÇÃO
Unicesumar
Reitor
Wilson de Matos Silva
Vice-Reitor
Wilson de Matos Silva Filho
Pró-Reitor de Administração
Wilson de Matos Silva Filho
Pró-Reitor de EAD
Willian Victor Kendrick de Matos Silva
Presidente da Mantenedora
Cláudio Ferdinandi
http://lattes.cnpq.br/4906244382612830
APRESENTAÇÃO
PROJETO, IMPLEMENTAÇÃO
E TESTE DE SOFTWARE
SEJA BEM-VINDO(A)!
Prezado(a) acadêmico(a)! Seja bem-vindo(a) à disciplina Projeto, Implementação e Teste
de Software. Neste curso, iremos abordar as atividades existentes no processo de desen-
volvimento de software, que são as atividades que envolvem o projeto, a implementa-
ção e o teste de software.
As unidades do livro foram organizadas de forma contínua, ou seja, a unidade seguinte
sempre está vinculada com a unidade anterior, portanto, é bom que você leia e entenda
todo o conteúdo de uma unidade para passar para a próxima.
Vamos iniciar na unidade I conhecendo os conceitos sobre as fases Projeto, Implementa-
ção e Teste de Software, com o objetivo de compreender a importância destes conceitos
como partes do processo de desenvolvimento do software.
Seguindo para a unidade II, vamos conhecer mais a fundo os conceitos que envolvem
a fase do Projeto e compreender a sua importância e com isso entender como ele pode
minimizar a distância entre o sistema e o mundo real. Vamos representar o software,
fornecendo detalhes sobre o seu funcionamento, estruturas, interface e todos os com-
ponentes necessários para desenvolver um sistema. Fase em que deve ser conferido e
verificado se os requisitos do cliente poderão ser atendidos. No projeto é onde geramos
uma descrição detalhada informando tudo o que o software deverá fazer e como este
irá se comportar, sempre levando em conta o que foi levantado na análise de requisitos
junto ao cliente.
Depois, na unidade II, na fase de implementação, que é o momento em que desenvol-
vemos o código, vamos ver que além de ser escrito, precisamos testá-lo e depurá-lo, as-
sim como compilá-lo e, por fim, ter um produto executável por completo. Durante este
processo, o ideal é que se utilize um controle de versões para acompanhar as diferentes
mudanças do código durante o desenvolvimento. Na fase de Implementação, vamos
detalhar os componentes previstos no projeto, descrevendo todos os componentes de
código fonte e código binário, em nível de linguagem de programação ou de acordo
com as tecnologias escolhidas no levantamento de requisitos.
E por fim, nas unidades IV e V, vamos aprender que quando a empresa desenvolvedora
de software busca por qualidade, ela percebe que é necessário investir pesado em tes-
tes de software e que existem vários tipos de testes no mercado para atender as suas
necessidades, e que pode ser preciso implantar mais de um tipo ou investir em métricas
de software para garantia da qualidade destes testes. Ganhando espaço na comunidade
de software, as métricas de teste de software veem conquistando e sendo de grande
importância para as empresas que buscam qualidade e eficiência em seus projetos.
Espero que sua leitura seja agradável e que esse conteúdo possa contribuir para seu
crescimento pessoal e profissional. Vamos começar nossos estudos?
Boa leitura!
09
SUMÁRIO
UNIDADE I
15 Introdução
21 Projeto de Software
26 Implementação de Software
28 Teste de Software
32 Considerações Finais
40 Referências
41 Gabarito
UNIDADE II
PROJETO DE SOFTWARE
45 Introdução
52 Qualidade do Projeto
54 Modelo do Projeto
63 Projeto de Componentes
77 Projeto de Dados
80 Considerações Finais
88 Referências
89 Gabarito
UNIDADE III
IMPLEMENTAÇÃO DE SOFTWARE
93 Introdução
94 Implementação de Software
103 Comentários
106 Depuração
112 Refatoração
123 Referências
124 Gabarito
11
SUMÁRIO
UNIDADE IV
TESTE DE SOFTWARE
127 Introdução
162 Referências
163 Gabarito
UNIDADE V
167 Introdução
221 Referências
222 Gabarito
223 Conclusão
Professora Esp. Janaína Aparecida de Freitas
I
INTRODUÇÃO AO PROJETO,
UNIDADE
IMPLEMENTAÇÃO E TESTES
DE SOFTWARE
Objetivos de Aprendizagem
■■ Conceituar Projeto, Implementação e Teste de Software.
■■ Compreender a importância desses conceitos como áreas da
Engenharia de Software.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Introdução ao Projeto, Implementação e Teste de Software
■■ Projeto de Software
■■ Implementação de Software
■■ Teste de Software
15
INTRODUÇÃO
Introdução
16 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
■■ Validação de software: o software deve ser validado para garantir que faça
o que o cliente deseja.
■■ Evolução de software: o software deve evoluir para atender as necessida-
des mutáveis do cliente.
No nosso livro vamos estudar apenas as atividades que envolvem o projeto, a
implementação e o teste de software, momento em que o software é validado.
Após os Requisitos de Software terem sido especificados e modelados, é
iniciada a primeira fase, o Projeto, em que é definido como o software será cons-
truído, sua arquitetura, interfaces, componentes que poderão ser utilizados e
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
bilizará uma parte dos recursos e funcionalidades do software. A cada
incremento, o software torna-se mais e mais completo. (PRESSMAN,
2011, p. 41).
Definição de
requisitos
Projeto de
sistema e software
Implementação e
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
teste de unidade
Integração e
teste de sistema
Operação e
manutenção
O Processo de Software
Processo é um conjunto de atividades, ações e tarefas realizadas na criação
de algum produto de trabalho (work product). Uma atividade esforça-se para
atingir um objetivo amplo (por exemplo, comunicação com os interessados)
e é utilizada independentemente do campo de aplicação, do tamanho do
projeto, da complexidade de esforços ou do grau de rigor com que a en-
genharia de software será aplicada. Uma ação envolve um conjunto de ta-
refas que resultam num artefato de software fundamental. Uma tarefa se
concentra em um objetivo pequeno, porém, bem definido (por exemplo,
realizar um teste de unidades) e produz um resultado tangível. No contex-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
to da engenharia de software, um processo não é uma prescrição rígida de
como desenvolver um software. A intenção é a de sempre entregar software
dentro do prazo e com qualidade suficiente para satisfazer àqueles que pa-
trocinaram sua criação e àqueles que irão utilizá-lo.
Fonte: Pressman (2011).
Agora, aluno(a), vamos entender um pouco mais sobre cada fase nesta unidade,
e, depois, com mais detalhes nas unidades posteriores do livro. Começaremos
conhecendo um pouco mais sobre a fase de Projeto de Software.
©shutterstock
PROJETO DE SOFTWARE
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Projeto de Software
22 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
em que o software será implantado e suas soluções, caso ocorram imprevistos. A
qualidade do software pode ser avaliada nesta fase, pois o projeto serve de base
para as demais fases no desenvolvimento de um sistema.
Conforme Pressman (2011, p.116), os modelos de requisitos representam os
requisitos dos clientes. Os modelos de projeto oferecem uma especificação con-
creta para a construção do software.
Projeto de
Elementos baseados Diagramas de fluxo
componentes
em cenários de dados
Casos de uso - texto Diagramas de fluxo de dados
Diagramas de casos de uso Diagramas de fluxo de controle Projeto de
Diagramas de atividades Narrativas de processamento interface
Diagramas de Raias Modelos de
análise
Projeto arquitetural
Elementos baseados Elementos
em classes comportamentais
Diagrama de classes Diagramas de estados Projeto de dados/classes
Pacotes de análise Diagramas de sequência
Modelos CRC
Diagramas de colaboração Modelos de projeto
Análise e
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Domínio do Especificação
Mundo Real
problema de Requisitos
(o quê)
Projeto
(como)
Domínio da
solução Mundo Implementação
Computacional
Projeto de Software
24 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
■■ Ser rastreável a sua especificação.
■■ Não “reinventar a roda”, isto é, reutilizar soluções.
■■ Exibir uniformidade (estilo) e integração (interfaces bem definidas entre-
componentes da coisa a ser construída).
■■ Ser estruturado para acomodar mudanças.
■■ Ser passível de avaliação da qualidade.
■■ Ser revisado para minimizar erros.
Planejamento de projetos
Uma coisa é exigir dos engenheiros de software estimativas de prazos, e
cobrar o cumprimento dos prazos prometidos. Clientes e gerentes podem
e devem fazê-lo. Outra coisa é pressioná-los para que façam promessas que
não podem ser cumpridas. Uma frase comum desta cultura é: “Não me in-
teressa como você vai fazer, desde que entregue no prazo!”. Na realidade, o
cliente ou gerente deve, no seu próprio interesse, ter algum meio de checar
se o cronograma e orçamento propostos são realistas; se preciso, recorren-
do aos serviços uma terceira parte. A cultura do prazo político é ruim para
todos. Para os desenvolvedores, ela significa estresse e má qualidade de
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Projeto de Software
26 UNIDADE I
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
IMPLEMENTAÇÃO DE SOFTWARE
Ele afirma que todas as falhas que um software possui estão associadas aos pro-
blemas na fase de projeto e de implementação. Segundo o autor, as falhas são
de ambos, tanto do cliente, quanto de quem desenvolve o software.
A fase de implementação é uma maneira de formalizar ou mostrar, utili-
zando uma linguagem de programação, das análises e os modelos levantados
nas fases de requisito e de projeto, e gerando assim um sistema que possa exe-
cutar as tarefas que foram descritas pelo usuário. Pressman afirma que podemos
definir a implementação como sendo a fase de programação que transformará
o projeto em um sistema com forma computacional mais palpável pelo usuário.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Implementação de Software
28 UNIDADE I
“Quando seu cliente tiver uma necessidade legítima, mas sem a mínima
ideia em relação a detalhes, faça um protótipo para uma primeira etapa.”
(Pressman).
TESTE DE SOFTWARE
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
dade dos processos que são usados durante a fase de desenvolvimento do software.
A qualidade de software é o resultado de atividades que foram realizadas no
processo de desenvolvimento desse software. Quando se fala em qualidade de
software, é necessário lembrar que o projeto do software, o processo de desen-
volvimento e o produto final têm que ter qualidade também (REZENDE, 2005).
O software tornou-se um componente importante e de sucesso para várias
empresas desenvolvedoras, fazendo que haja uma crescente busca pela quali-
dade do seu produto final, o software (WEBER et al., 2001). Conforme Pressman
(2011), a atividade de teste de software é uma garantia de qualidade de software
e ela é a última fase que representa a revisão do que foi especificado nas fases de
projeto e implementação.
Conforme Sommerville (2011), os objetivos da fase de teste de software
podem ser expressos, de forma mais
clara por:
■■ Atividade de Teste: processo
de executar um programa com a
intenção de localizar um defeito/
erro.
■■ Caso de teste bom: apre-
senta uma elevada probabilidade de
revelar um defeito/erro ainda não
descoberto.
©shutterstock
De acordo com Molinari (2003), todo software que se destina ao público e/ou
ao mercado deve sofrer um nível mínimo de teste. Assim, quanto maior o nível
de complexidade do software, mais testes e técnicas de testes se tornam neces-
sários para a obtenção da sua qualidade.
Sem os testes, não se consegue garantir que o software irá se comportar con-
forme o esperado ou conforme as solicitações do cliente, e isso pode ser negativo
para a empresa que o desenvolveu. Mas caso na empresa não se tenha uma análise
de requisitos ou uma documentação do software detalhada, a equipe de desen-
volvimento e a equipe de teste não saberão se o que está sendo construído é o
que o cliente espera. Pensando nisso, Molinari (2003) destacou axiomas e con-
ceitos que podem ser usados no processo de teste, e que em muitos casos são
considerados como verdades no mundo dos testes. Podem ser listados como:
Teste de Software
30 UNIDADE I
Rios (2008, p.13) denuncia que os testadores querem destruir o software, nocau-
teando através da busca de falhas e indicando seus erros, pois conforme o autor,
uma vez que se indicam os defeitos de um software, ele pode ser corrigido e com
isso, se torna muito melhor.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Conforme Rios e Moreira (2013, p.10), “se não se podem descobrir todos
os defeitos de um programa e em decorrência disso nunca se pode afirmar que
ele está 100% correto, por que testar? Porque o propósito dos testes é descobrir
e corrigir os problemas e, com isso melhorar a sua qualidade. O quanto se quer
melhorar dependerá de quanto se deseja investir”. O autor ainda acrescenta, que
“na prática, não se pode testar um programa por completo e garantir que ele
ficará livre de bugs. É quase impossível testar todas as possibilidades de formas
e alternativas de entrada de dados, bem como testar as diversas possibilidades e
condições criadas pela lógica do programador” (RIOS; MOREIRA, 2013, p. 10).
Conforme Pressman (2011, p. 402), “muitas estratégias de teste de software
já foram propostas na literatura. Todas elas fornecem um modelo para o teste e
todas têm [...] características genéricas”, e elas são:
■■ Executar um teste eficaz, proceder revisões técnicas eficazes.
■■ Teste começa no nível de componente e progride em direção à integra-
ção do sistema.
■■ Diferentes técnicas de teste são apropriadas para diferentes abordagens.
■■ O teste é feito pelo desenvolvedor do software e (para grandes projetos)
por um grupo independente de teste.
■■ O teste e a depuração são atividades diferentes, mas a depuração deve ser
associada com alguma estratégia de teste.
Para Pressman (2011), o teste dificilmente chega ao fim. O que acontece é uma
transferência do desenvolvedor para o seu cliente, ou seja, toda vez que um cliente
usa o sistema, um teste está sendo realizado.
(Pressman).
Teste de Software
32 UNIDADE I
CONSIDERAÇÕES FINAIS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
de requisitos.
Ao longo da unidade, foram relacionados os conceitos de implementação,
pois é nesta fase que o projeto se transformará em um sistema, em que os códi-
gos de programação serão codificados baseados nas definições descritas na fase
de projeto. A implementação faz uso de linguagens de programação, podendo
ser visuais e orientadas a objeto, do que foi analisado na análise de requisitos e
o que foi determinado na fase de projeto.
Vimos os conceitos iniciais sobre qualidade, que está intimamente relacio-
nada às atividades de teste. Também verificamos que sem os testes o software
pode se comportar de maneira inesperada ou ainda não seguir o foi esperado
ou analisado. Isso pode fazer com que o cliente ache que pagou por um produto
que ele não solicitou, e tal fato pode ser negativo para a empresa que está desen-
volvendo o sistema.
Espero que, até aqui, já tenho colaborado com o seu entendimento do que é
projeto, implementação e teste de software, já que estes são os nossos principais
assuntos que serão discutidos durante o nosso estudo durante a disciplina. Nas
próximas unidades do livro há informações mais detalhadas sobre cada uma das
fases. Preparado(a)? Então, vamos continuar com a leitura!
2.2 – Padrões
Podemos pensar em um padrão como a reutilização da essência de uma solução para
determinados problemas similares. Sintetizando as definições encontradas na literatura,
podemos dizer que um padrão resolve um problema recorrente, em um determinado
contexto, fornecendo uma solução que comprovadamente funcione, além de informar
os resultados e compromissos da sua aplicação, e subsídios para que seja possível adap-
tar esta solução a uma variante do problema. Ao contrário das heurísticas, os padrões
disponíveis na literatura estão descritos de forma explícita e organizada. Embora exis-
tam várias formas de descrição de um padrão, de modo geral, a descrição de um padrão
deve conter as seguintes informações: Nome do padrão, o problema, o
contexto, a solução, as consequências, o uso conhecido e os padrões que são relacio-
nados. Segundo Buschmann, quanto maior o número de padrões em um sistema de
padrões, maior é a dificuldade de entendê-los e utilizá-los.
[...]
2.3 – Anti-Padrões
Um anti-padrão pode resultar da falta de conhecimento de uma solução mais adequada,
ou ainda da aplicação de um padrão (teoricamente, uma boa solução) no contexto in-
correto. Os anti-padrões descrevem soluções Inadequadas para um problema que resul-
ta em uma situação ruim, ou então descrevem como sair de uma situação ruim e chegar
a uma boa solução. A presença de “bons” padrões em um sistema bem sucedido pode
não ser suficiente. É preciso mostrar que estes padrões geralmente não ocorrem em
sistemas mal sucedidos, e que determinadas construções inadequadas (anti-padrões)
encontradas em sistemas mal sucedidos geralmente não estão presentes em sistemas
bem sucedidos.
[...]
3 – Suporte a Padrões no Ambiente Odyssey
A partir da representação do conhecimento de projeto através dos conceitos descritos
na seção anterior, foi implementado um conjunto de mecanismos em um ambiente de
desenvolvimento de software visando apoiar a utilização deste conhecimento durante
o projeto de software orientado a objetos. Nesta seção, apresentamos detalhes sobre a
implementação e funcionamento destes mecanismos.
[...]
37
Apresentação: Como trabalhar com testes de software? Nesse vídeo é dado algumas dicas
do por que escolher a área de teste de software que pode ser uma boa escolha para começar
a trabalhar na área de TI, ou mesmo como uma opção para buscar um nova oportunidade do
mercado de trabalho, visando crescimento na carreira profissional.
Em: <https://www.youtube.com/watch?v=rL48FS-99ac>
Acesso em: 20 de out. 2015.
Material Complementar
REFERÊNCIAS
II
UNIDADE
PROJETO DE SOFTWARE
Objetivos de Aprendizagem
■■ Compreender a importância do projeto de software, mostrando os
artefatos que serão criados durante o seu desenvolvimento.
■■ Entender a importância do projeto e como ele pode minimizar a
distância entre o sistema e o mundo real.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ A fase de Projeto de Software
■■ Conceitos básicos de Projeto Software
■■ Qualidade do Projeto
■■ Modelo do Projeto
■■ Projeto da Arquitetura do Software
■■ Projeto de Componentes
■■ Projeto de Interface de usuário
■■ Modelos de Análise e Projeto de Interfaces
■■ Projeto de Dados
45
INTRODUÇÃO
Introdução
46 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Na fase de Projeto, o principal objetivo é definir uma estrutura que possa ser
implementada baseada no que foi descrito nos requisitos que foram levantados
para o sistema junto ao cliente. Você saberia disser qual a diferença entre a aná-
lise e o Projeto? Na análise de requisitos, é modelado o domínio do problema e
no Projeto é modelada a solução para o problema, mas ambos devem estar em
sintonia, alinhados em um único fluxo, pois o objetivo dos dois é a solução final
do problema, neste caso, como software que será desenvolvido.
Na fase de Projeto é decidido como o sistema irá se comportar, em termos
de: software, hardware, infraestrutura de rede, a interface de usuário, formulá-
rios que devem ser preenchidos e os relatórios que o sistema irá fornecer; outros
programas específicos que possa vir a usar, quais bancos de dados e arquivos
que serão necessários.
Como vimos, na primeira unidade, quem realiza esta etapa é conhecido
como o Arquiteto de Software, que possui experiência como programador e pos-
sui amplos conhecimentos sobre a Gerência de Projetos. Tal profissional deve
compreender e dominar as tecnologias pertinentes, conhecer técnicas de mode-
lagem e metodologias de desenvolvimento, entender as estratégias de negócios
da instituição onde atua, além de conhecer produtos, processos e estratégias de
concorrentes.
PROJETO DE SOFTWARE
47
Pressman (2011) afirma que o projeto é importante, pois ele permite que
o sistema seja modelado ou o produto construído. Quando o sistema é mode-
lado, ele pode ser avaliado para verificar a qualidade e com isso ser aperfeiçoado
antes de passar para a fase de implementação, ou de testes a serem realizado,
ou ainda, que os usuários finais apontam os erros. Conforme o autor, o projeto
de software pode mudar ao longo de seu desenvolvimento, à medida que novos
métodos, uma melhor análise e entendimento do problema ou ainda, surja uma
nova solicitação do cliente.
O projeto é considerado o núcleo técnico da Engenharia de Software e,
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
com isso ele pode ser aplicado em qualquer modelo de processo que seja ado-
tado pela empresa. Por ser iniciado após a análise de requisitos, o projeto é visto
como a última atividade de modelagem, antes da geração do código, ou seja, ele
deve ser bem modelado, para que a etapa de construção ocorra sem alterações
(PRESMANN, 2011, p. 207).
Na etapa de projeto, deve ser considerado como o sistema funcionará inter-
namente, para que os requisitos do cliente possam ser atendidos. Para isso, esta
etapa também é dividida em fases, ou melhor, caracterizada por um conjunto
de projetos, que ocorrem paralelamente. Conforme Sommerville (2011, p. 110),
a fase de projeto deve ter:
■■ Projeto da Arquitetura do Software: é a parte em que definimos os com-
ponentes estruturais e seus relacionamentos.
■■ Projeto de Dados: projeto que tem como objetivo definir a estrutura de
dados para implementar o software.
■■ Projeto de Interfaces: nesta parte é descrito como será a comunicação den-
tro do sistema, com outros sistemas e com os usuários que iram utiliza-los.
■■ Projeto de Componentes: detalhamos os procedimentos dos componen-
tes estruturais da arquitetura do software.
Especificação
de requisitos
Atividades de projeto
Projeto de
Projeto de Especificação Projeto de Projeto de Projeto de
estrutura de
arquitetura abstrata interface componente algoritmo
dados
Especificação
Arquitetura Especificação Especificação Especificação Especificação
de estrutura
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
de sistema de software de interface de componente de algoritmo
de dados
Produtos de projeto
Fonte: Sommerville (2011).
PROJETO DE SOFTWARE
49
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Encapsulamento: define e impõe restrições de acesso tanto a detalhes pro-
cedurais em um módulo quanto em qualquer estrutura de dados local usada
pelo módulo. A interface que foi definida deve revelar o mínimo da sua estru-
tura interna e com isso reduzir os efeitos colaterais que possam vir a ocorrer.
Estrutura de Dados: representam os relacionamentos lógicos, como estão
organizados os métodos de acesso, as associações e as alternativas de processa-
mento de informações, pois, à medida que o Projeto vai se aproximando da fase
de Implementação, as representações vão se tornando cada vez mais importan-
tes, já que as estruturas de dados exercem um grande impacto no projeto final.
Procedimentos de Software: expressam os detalhes da operação de cada
módulo/componente do software individualmente. Estes detalhes são: como
a informação é processada, pontos de decisão, quais as sequências de evento, e
que operações serão repetitivas.
Ocultação de Informação: seu objetivo é propor uma maneira de decom-
por o problema, assim, obter módulos menores do software no desenvolvimento.
Com isso, o Arquiteto de Software ganha um alto grau de independência entre
os módulos, facilitando a sua modificação, quando necessário, e em consequ-
ência, a fase de testes.
PROJETO DE SOFTWARE
51
cada conceito tenha variado ao longo dos anos, cada um resistiu ao tempo.
Esses conceitos fornecem ao projetista de software uma base a partir de
qual métodos de projeto mais sofisticados podem ser aplicados. Ajudam-
-nos a responder as seguintes questões:
• Quais critérios podem ser usados para particionar o software em compo-
nentes individuais?
• Como os detalhes de função ou estrutura de dados são separados de uma
representação conceitual do software?
• Quais critérios uniformes definem a qualidade técnica de um projeto de
software?
Os conceitos fundamentais de projeto de software fornecem a organização
necessária para estruturá-la e para “fazer com que ele funcione corretamen-
te”.
Fonte: Pressman (2011).
QUALIDADE DO PROJETO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Segundo Pressman (2011, p 358), a qualidade de software pode ser dividida
em duas partes: Qualidade do Processo e Qualidade do Produto. Quando nos
referimos à qualidade do produto, o foco maior está na qualidade dada ao pro-
duto final, que é feita por meio de avaliações no software acabado. Já a qualidade
do processo do software concentra-se no modo como o software foi produzido
ao longo do seu desenvolvimento e como é feita a sua manutenção.
Segundo Weber et al. (2001), a qualidade de software é determinada pela
qualidade dos processos que são usados durante a fase de desenvolvimento do
software. Para Rezende (2005), a preocupação com a qualidade deve estar vol-
tada para a melhoria do Processo que envolve o desenvolvimento do software.
Se garantirmos, pois, a Qualidade do Processo, podemos também garantir a
Qualidade do Software.
Segundo Gimenes (1994), o processo de software pode ser definido como um
conjunto de todas as atividades relacionadas ao desenvolvimento, controle, vali-
dação e manutenção de um software. Segundo Sommerville (2011), o resultado
do processo é um produto que mostra a forma como o processo de desenvolvi-
mento foi conduzido e ele define o processo de software como sendo um conjunto
de atividades e resultados associados que produzem um produto de software.
O termo Qualidade possui várias definições as quais variam de acordo com
a abordagem utilizada. A seguir uma que é bastante utilizada na literatura:
“Conformidade com as especificações” (CROSBY, 1990): Crosby sugere que
o gerenciamento da qualidade deve ser feito desde o início do desenvolvimento,
para tentar evitar defeitos e diminuir o retrabalho. No desenvolvimento de sof-
tware, este conceito significa que devemos nos preocupar com a qualidade desde
PROJETO DE SOFTWARE
53
Qualidade do Projeto
54 UNIDADE II
PREMISSAS DA QUALIDADE
Fazer acontecer: Qualidade requer comprometimento, particularmente
vindo do topo do gerenciamento. Cooperação entre a equipe e o gerente
deve ser fundamental para ”fazer acontecer”.
Zero-defeito: Muitas pessoas acreditam que existe o “zero-defeito” para
serviços e produtos. Isso é irreal. O sensato é definir níveis aceitáveis de de-
feitos.
Qualidade = alto custo: Qualidade é frequentemente associada a custo,
significado de alta qualidade = alto custo. Falso. Isso causa uma confusão
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
entre a qualidade do projeto e a qualidade de conformidade. ”Não posso
testar o produto por que não tenho infraestrutura, e a infra-estrutura não
permite o teste do produto. O que fazer?”. Qualidade demanda especifica-
ção de requerimento e suficiente detalhamento deles.
Padrões inibem a criatividade: O pessoal ”técnico” acredita, em geral, que
padrões inibem sua criatividade, e com isso padrões não são seguidos, en-
tretanto, para a qualidade acontecer, padrões e procedimentos deve ser se-
guido.
Fonte: Costa (2010).
MODELO DO PROJETO
PROJETO DE SOFTWARE
55
Alto
Modelo de análise
Subsistemas
Modelo de projeto usuário
Diagramas de sequência Diagramas de colaboração
Refinamentos para: Diagramas de componentes
Realizações das classes de Refinamentos para: Classes de projeto
projetos Diagramas de componentes Diagramas de atividade
Classes de projetos Diagramas de sequência
Subsistemas
Baixo Diagramas de atividades
Diagramas de colaboração
Diagramas de sequência Diagramas de implantação
Elementros da Elementros da Elementros de Elementros de
arquitetura interface componentes implantação
Dimensão de Processo
Fonte: Pressman (2011, p. 221).
Agora, vamos conhecer um pouco de alguns desses elementos que fazem parte
do Modelo de Projeto. Aproveite(m) ao máximo cada informação sobre esses
projetos. Boa leitura.
como ela será. O projeto de arquitetura é isso, ele dá uma visão geral do sistema
e lhe mostra se você entendeu o contexto do sistema e o que é para desenvolver,
ou seja, você pode imaginar como ele será.
O projeto arquitetural antecede a etapa de construção do software, ele deter-
mina as partes da implementação e como estas devem interagir e se relacionar.
A arquitetura garante a unidade e a consistência entre as partes e a sua repre-
sentação serve como guia para o projeto da implementação, teste e implantação
do sistema.
A arquitetura de software serve para modelar a estrutura de um sistema,
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
por meio de dados e componentes que se relacionam entre si. Pressman (2011,
p. 230) define que quando se considera a arquitetura, por exemplo, de um edifí-
cio, pensamos em vários atributos diferentes, desses os mais simples até os mais
complexos. Mas a arquitetura envolve mais que isso, são vários componentes inte-
grados para formar um todo, que satisfaça as necessidades expressas do cliente.
A arquitetura é constituída por decisões, algumas grandes e outras pequenas, e a
maioria precisa ser tomada no início do Projeto e podem ter impacto em outras
fases do projeto que estão por vir.
Conforme Sommerville (2011, p. 106), a arquitetura de software pode tra-
balhar com dois níveis de abstração que são:
1. Arquitetura em pequena escala em que a preocupação é com a maneira
como um programa individual é decomposto em componentes.
2. Arquitetura em grande escala em que a preocupação é com a arquitetura
de sistemas distribuídos complexos que incluem outros sistemas, progra-
mas e componentes.
PROJETO DE SOFTWARE
57
Cada um de nós possui uma imagem mental daquilo que a palavra arqui-
tetura significa. A implicação é que os diferentes interessados verão uma
arquitetura sob diversos pontos de vista orientados por conjuntos de in-
teresses distintos. Isso implica que uma descrição de arquitetura é, na ver-
dade, um conjunto de artefatos que refletem diferentes visões do sistema.
Por exemplo, o arquiteto de um importante conjunto comercial tem de tra-
balhar com uma série de interessados diferentes. O principal interesse do
proprietário do conjunto comercial (um dos interessados) é garantir que ele
seja esteticamente agradável e que forneça espaço e infraestrutura suficien-
tes para garantir sua lucratividade. Consequentemente, o arquiteto tem de
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
VISÕES DE ARQUITETURA
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Além dessas visões, você pode incluir outras adicionais como: visão da interface
do usuário, visão de segurança, visão de dados, e assim por diante. Para docu-
mentar estas visões de arquitetura, você pode usar o documento de arquitetura
de software. O documento de arquitetura de software é usado para fornecer uma
visão geral de arquitetura do sistema, podendo usar diversas visões de arquite-
tura para descrever diferentes aspectos do sistema. No próximo tópico vamos
conhecer os padrões de arquitetura que são mais usados. Boa leitura!
PROJETO DE SOFTWARE
59
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Sommerville (2011, p. 108) afirma que “a ideia de padrões como uma forma de
apresentar, compartilhar e reusar o conhecimento sobre sistemas de software é
hoje amplamente usada”. Contudo vamos pensar em um padrão de arquitetura
somente em sistemas bem-sucedidos de sistemas desenvolvidos anteriormente.
Afinal o que é um padrão? Um padrão é usado para descrever um problema
que ocorreram repetidas vezes, e é usada uma solução para esse problema de
forma que possamos reutilizar esta solução encontrada. Em outras palavras,
eles são soluções para problemas que alguém algum dia teve, achou a solução
aplicando um modelo que foi documentado e que agora você pode usar inte-
gralmente ou de acordo com a sua necessidade.
O padrão mostra uma solução de arquitetura que ajuda a servir como base
para o projeto da arquitetura. Conforme Sommerville (2011, p. 108) devemos
pensar em padrão de arquitetura como uma descrição abstrata, que seja estili-
zada, com boas práticas experimentadas e que tenham sido testadas em diferentes
sistemas e ambientes e, com isso, incluir informações de uso desse padrão, para
saber se ele é adequado e quais os seus pontos fortes e fracos.
A escolha do padrão arquitetural a ser usado deve estar associado ao tipo
de sistema e seus requisitos não funcionais. Para ajudar na escolha podemos
pensar em algumas perguntas: O sistema a ser desenvolvido é interativo? Ele
vai possui muitas variações? Quais os requisitos não funcionais que podemos
considerar importantes? E quanto a sua confiabilidade? E a sua adaptabilidade?
Quando respondemos a estas perguntas, podemos perceber que na composi-
ção de padrões, temos padrões diferentes que levam o projeto a consequências
diferentes, mesmo quando os padrões abordam problemas semelhantes que são
PROJETO DE SOFTWARE
61
Na descrição deste padrão você pode incluir o nome do padrão, uma descrição
breve, podendo ser um modelo gráfico associado, exemplos de tipos de sistema
em que este padrão pode ser usado novamente, suas vantagens e desvantagens.
Arquitetura em Camadas: este padrão de arquitetura é organizado em
camadas separadas e em cada camada só depende dos recursos e serviços ofere-
cidos pela camada que se encontra imediatamente abaixo dela. Esta arquitetura
é considerada mutável e portável, pois enquanto ela não for alterada, a camada
pode ser substituída por outra equivalente. Mas quando ela muda ou tem novos
recursos adicionados, apenas a camada adjacente é afetada.
Arquitetura de Repositório: esse padrão de arquitetura descreve como
um conjunto de componentes que estão interagindo podem compartilhar seus
dados. Normalmente, os sistemas organizam os seus dados em torno de um
banco de dados ou repositório compartilhado. Assim, este padrão é adequado
para as aplicações nas quais os dados são gerados por um componente e usa-
dos por outro. Um exemplo, um ambiente controlado por versões, que mantém
o controle de todas as alterações do sistema e permite que seja feita a reversão
para versões anteriores.
Arquitetura Cliente-Servidor: esse padrão de arquitetura é organizado em
um conjunto de serviços e servidores associados e clientes que acessam e usam
os serviços. Normalmente este padrão é utilizado em arquiteturas de sistemas
distribuídos.
Arquitetura de Duto e filtro: esse padrão de arquitetura é um modelo de
organização em tempo de execução de um sistema, com entradas e saídas de
informações. Conforme Sommerville (2011, p. 114) “os dados fluem de um para
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Um padrão de arquitetura, assim como um estilo arquitetural, impõe trans-
formação no projeto de arquitetura. Entretanto, padrão difere de estilo em
alguns modos fundamentais: (1) o escopo de um padrão é menos abran-
gente, concentrando-se em um aspecto da arquitetura e não na arquitetu-
ra em sua totalidade; (2) um padrão impõe uma regra sobre a arquitetura,
descrevendo como o software irá tratar algum aspecto de sua funcionali-
dade em termos de infraestrutura os padrões de arquitetura tendem a tra-
tar questões comportamentais específicas no contexto da arquitetura (por
exemplo, como as aplicações em tempo real tratam a sincronização ou as
interrupções). Os padrões podem ser usados com um estilo de arquitetura
para dar forma à estrutura global de um sistema. Um estilo arquitetural é
uma transformação imposta no projeto do sistema inteiro. O objetivo é es-
tabelecer uma estrutura para todos os componentes do sistema.
Fonte: Pressman (2011).
PROJETO DE SOFTWARE
63
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
PROJETO DE COMPONENTES
Projeto de Componentes
64 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
é uma unidade de software independente que encapsula, seu projeto e a imple-
mentação, oferecendo serviços, por meio de interfaces definidas, que serão usadas
para o meio externo. Pressman (2011) define que um componente é um bloco
construtivo modular para ser usado em software de computador e com relação
à orientação a objetos, um componente é um conjunto de classes colaborativas.
Um componente é considerado uma unidade independente que pode ser
utilizado junto com outros componentes, formando um sistema mais complexo.
No entanto o significado de componente vai depender do ponto de vista do res-
ponsável pelo projeto de componentes, o engenheiro de software. Mas qual seria
este ponto de vista? Conforme Pressman (2011) temos três pontos de vistas que
são utilizados. São eles:
Visão Orientada a objetos: um componente é um conjunto de classes cola-
borativas ou podem ter um componente com uma única classe.
Visão Tradicional: para essa visão, um componente é o elemento funcio-
nal de um programa que incorpora a lógica de processamento, as estruturas de
dados e uma interface que habilita o componente para que os dados sejam for-
necidos a ele.
Visão relacionada com processos: um componente é utilizado a partir da
reusabilidade, ou seja, que façamos o uso de componentes de software ou de
padrões de projeto já existentes.
PROJETO DE SOFTWARE
65
Para Pressman (2011, p. 262) temos alguns princípios básicos de projeto que
são utilizados pelo projeto de componentes. São eles:
■■ Princípios do aberto-fechado (OCP): um componente deve permitir
que ele seja estendido sem a necessidade de modificações internas no
próprio componente.
■■ Princípio da substituição (LSP): este princípio exige que qualquer classe
derivada de uma classe-base honre o contrato entre a classe-base e os
componentes que a usam.
■■ Princípio da inversão de dependência (DIP): este princípio define que
quanto mais um componente depender de outros componentes concre-
tos, mais difícil será de estendê-lo depois.
■■ Princípio da segregação de interfaces (ISP): este princípio sugere que se
crie uma interface específica para cada categoria de clientes.
■■ Princípio da equivalência de reuso de versões (REP): esse princípio
sugere que quando se usa classes ou componentes tendo usado o reuso,
existe um contrato estabelecido entre o desenvolvedor da entidade reu-
tilizável e quem irá fazer uso dela.
■■ Princípio do fechamento comum (CCP): esse princípio sugere que as
classes que são alteradas juntas, devem permanecer juntas.
■■ Princípio comum da reutilização (CRP): esse princípio sugere que as clas-
ses que não são reutilizadas juntas não devem ser incluídas em um pacote.
Projeto de Componentes
66 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Etapa 3 → Elaborar todas as classes de projeto que não são obtidas como
componentes reutilizáveis. Devemos especificar detalhes de mensagens e
componentes que colaboram entre si, interfaces para cada componente, atri-
butos e tipos de dados e o fluxo de processamento contido em cada operação.
Etapa 4 → Descrever fontes de dados persistentes (bancos de dados e arqui-
vos) e identificar as classes necessárias para gerenciá-los.
Etapa 5 → Desenvolver e elaborar representações comportamentais para uma
classe ou componente.
Etapa 6 → Elaborar diagramas de implantação para fornecer detalhes de
implementação adicionais.
Etapa 7 → Refatorar toda representação de projetos de componentes e sem-
pre considerar alternativas.
Conforme Pressman (2011, p. 274), “não se deve ter uma visão restrita. Sempre há
soluções alternativas de projeto, e os melhores projetistas consideram (ou quase
todas) elas antes de se decidirem pelo modelo de projeto final”. Assim, procure
desenvolver alternativas e analise cuidadosamente cada uma delas, usando os
princípios e as etapas para o desenvolvimento do seu projeto.
No próximo tópico conheceremos o Projeto de Interface do usuário e seus
conceitos. Boa leitura!
Vamos seguir em frente?
PROJETO DE SOFTWARE
67
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
PROJETO DE SOFTWARE
69
Para o autor, as regras descritas acima são a base que formam o conjunto de
princípios que devem ser usados para orientar o projeto de interface de usuá-
rio durante o desenvolvimento do sistema na fase de projeto do software. Agora
vamos entender um pouquinho cada uma dessas regras de ouro:
Deixar o usuário no comando: procure escutar o que o cliente deseja como
ele quer que o sistema reaja as suas necessidades e concretize as suas tarefas.
Pense que o cliente quer controlar o sistema.
Reduzir a carga de memória do usuário: procure criar uma interface ao
usuário bem desenhada e que não cause esgotamento à memória do usuário, pois
quanto mais o usuário lembrar, mas sujeito a erros será a interação com o sistema.
Tornar a interface consistente: procure apresentar uma interface com infor-
mações de forma consistente, como: informações visuais organizadas de acordo
com regras de projeto, mecanismos de entrada restritos, mecanismos de nave-
gação bem definidos e padronizados, entre outros.
Normalmente, os usuários julgam um sistema pela sua interface ao invés
de suas funcionalidades e um projeto de interface pobre é uma das razões que
podem levam muitos sistemas de software a nunca serem utilizados.
Perceberam como é importante a interface do sistema com o usuário? É a
parte fundamental de um software, pois ela fica visível para o usuário e com ela,
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Os usuários podem ser classificados como:
Novatos: nenhum conhecimento sintático do sistema e pouco conhecimen-
to semântico da aplicação ou uso do computador em geral.
Usuários intermitentes e com conhecimento: razoável conhecimento se-
mântico da aplicação, mas lembrança relativamente baixa das informações
sintáticas necessárias para usar a interface.
Usuários frequentes e com conhecimento: bom conhecimento semântico e
sintático que muitas vezes levam à “síndrome do usuário poderoso”.
Por exemplo, se fosse perguntado ao usuário de determinado processador
de texto para descrever sua operação, a percepção do sistema orientaria
a resposta. A precisão da descrição irá depender do perfil do usuário (por
exemplo, novatos dariam no máximo uma resposta muito superficial). Um
usuário que entenda completamente de processadores de texto é capaz de
dar uma descrição mais completa de sua função do que o novato que inves-
tiu semanas tentando aprender o sistema.
(Pressman).
PROJETO DE SOFTWARE
71
O PROCESSO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Figura 3: O processo de projeto de interface do usuário
PROJETO DE SOFTWARE
73
ANÁLISE DE INTERFACE
Pressman (2011, p. 294) afirma que “um princípio fundamental de todos os mode-
los de processos de engenharia de software é o seguinte: entender o problema
antes de tentar desenvolver uma solução”. Quando fazemos a análise de interfa-
ces do usuário, entender o problema significa: entender os usuários, as tarefas que
os usuários devem realizar o conteúdo que será apresentado e o ambiente onde
essas tarefas serão conduzidas. A seguir, os elementos da análise de interfaces:
■■ Análise de Usuários: devemos entender os usuários, para isso invista um
tempo conversando com eles, entrevistando e colha o maior número de
informações possíveis.
■■ Análise e Modelagem de tarefas: devemos identificar as tarefas que os
usuários irão desempenhar via interface do usuário.
Depois que a análise de interface estiver pronta, todos os objetos e ações que foram
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
solicitados pelo usuário foram detalhados, a atividade de projeto de interface se
inicia. Conforme menciona Pressman (2011, p. 300) “o projeto de interface, assim
como todo projeto de engenharia de software, é um processo iterativo. Cada etapa
de um projeto de interface do usuário ocorre uma série de vezes, elaborando e
refinando informações desenvolvidas na etapa anterior”.
Existem diversos modelos diferentes de projeto de interfaces do usuário, mas
Pressman sugere a seguinte combinação de etapas:
1. Fazer o uso das informações que foram desenvolvidas durante a análise
de interfaces.
2. Modelar as ações dos usuários (eventos).
3. Mostrar cada estado da interface como irá aparecer ao usuário.
4. Mostrar como o usuário interpreta o estado do sistema.
Independente de como se dará o início das tarefas do projeto, por onde vamos
iniciar, seja por esboço ou definindo objetos e ações, o importante é sempre
seguir as regras de ouro mencionadas anteriormente, não esquecer de modelar
como a interface será implementada e considerar como será o ambiente a ser
usado pelo usuário.
Aplicação das etapas para projeto de interfaces: devemos definir os objetos
e quais as ações aplicadas a eles. Para isso, os cenários devem ser minunciosa-
mente analisados e descrito um caso de uso para exemplificar as etapas do projeto
de interface do usuário.
PROJETO DE SOFTWARE
75
Com isso, podemos perceber que a interface do usuário é a parte mais importante
de um projeto de software. Se ela for mal projetada, o usuário terá dificuldades
e com isso a aplicação pode falhar.
Vamos seguir em frente nos estudos? No próximo tópico vamos conhecer o
Projeto de Estrutura de dados e seus conceitos. Continue a sua leitura!
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
facilitar sua compreensão?
• Haverá mecanismos disponíveis para ir diretamente a informações resumi-
das em conjuntos de dados volumosos?
• A saída gráfica será apresentada em escala para caber nos limites do dispo-
sitivo de exibição utilizado?
• Como serão usadas cores para melhorar o entendimento?
• Como serão apresentadas ao usuário mensagens de erro e alertas?
As respostas a essas (e outras) questões nos ajudarão a estabelecer os requi-
sitos para apresentação de conteúdo.
Fonte: Pressman (2011).
PROJETO DE SOFTWARE
77
Questões de projeto
À medida que o projeto de uma interface do usuário evolui, quatro ques-
tões de projeto comuns quase sempre vêm à tona: tempo de resposta do
sistema, recursos de ajuda ao usuário, informações de tratamento de erros
e atribuição de nomes a comandos. Infelizmente, muitos projetistas não tra-
tam desses problemas até um ponto relativamente avançado do processo
de projeto (algumas vezes a primeira vaga ideia de um problema não ocor-
re até que um protótipo operacional esteja disponível). Em geral, decorrem
iterações desnecessárias, atrasos de projeto e frustração por parte do usu-
ário final. É muito melhor estabelecer cada um desses como um problema
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
PROJETO DE DADOS
Projeto de Dados
78 UNIDADE II
O projeto dos dados é composto pela seleção das representações lógicas dos
objetos de dados identificados na etapa de levantamento dos requisitos. Alguns
princípios devem ser seguidos para obter resultados satisfatórios no andamento
do projeto de dados. São eles:
➢➢ Realizar uma análise sistemática no que diz respeito aos dados, a exemplo
do que é feito com os aspectos funcionais e comportamentais do software.
➢➢ Realizar a identificação das estruturas de dados e das operações a serem
realizadas por elas.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
➢➢ Realizar a criação de um dicionário da estrutura de dados.
➢➢ Procurar adiar decisões de baixa prioridade no que diz respeito ao pro-
jeto de dados.
➢➢ Procurar limitar a representação das estruturas de dados aos módulos
que as utilizarão.
➢➢ Realizar a criação de uma biblioteca de estruturas de dados úteis e das
operações a serem aplicadas a elas, em caso de reusabilidade.
➢➢ Procurar usar uma linguagem de programação e projeto que suporte tipos
abstratos de dados.
Mas porque o projeto de dados é importante? Será que ele influencia a quali-
dade do projeto? O Projeto de Dados possui uma importante influência sobre
a qualidade do software que está sendo desenvolvido, seus conceitos de oculta-
ção de informação, abstração de dados que são oferecidos como a base para o
projeto. Nessa fase do projeto todos os detalhes dos dados que serão manipu-
lados pelo sistema devem ser analisados com cuidado, sejam dados de entrada,
de saída ou dados internos.
O que seria uma estrutura de dados? É uma representação das relações
lógicas existentes entre cada elemento individual de um dado. Ela é con-
siderada tão importante quanto à estrutura do programa definida para a
arquitetura do software. Por qual motivo? Ela afeta o projeto procedural final.
É importante observar que as estruturas de dados podem ser representadas em
diferentes níveis de abstração. Vamos usar como exemplo a PILHA, que é um
PROJETO DE SOFTWARE
79
modelo conceitual de estrutura de dados que pode ser implementado por uma
lista ligada ou utilizando um vetor. Dependendo do nível de detalhe do projeto
em que se está, o funcionamento da pilha pode ou não ser especificado.
Vamos conhecer agora algumas das possíveis estruturas de dados que podem
ser utilizadas:
Listas: é uma estrutura de dados que funciona como um array. Com a dife-
rença que para cada posição, podem ser armazenados vários dados. O conjunto
de dados armazenado em cada posição é chamado de nó. A lista é formada, é
um conjunto de dados.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Projeto de Dados
80 UNIDADE II
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
reengenharia.
Devido à arquitetura de dados ter uma forte influência sobre a arquitetura
do programa e os algoritmos que a constituem, mudanças nos dados resul-
tarão invariavelmente em mudanças de arquitetura ou de nível de código.
Fonte: Pressman (2011).
CONSIDERAÇÕES FINAIS
PROJETO DE SOFTWARE
81
Com isso, chegamos ao final da unidade II do livro e ao final de uma das fases
do processo de desenvolvimento do software. Espero que você tenha conseguido
entender os conceitos relacionados à fase de projeto. Se entendeu, conseguirá
entender as próximas fases do processo de software que estão por vir nas próxi-
mas unidades. Continue sua leitura!
Considerações Finais
82
1. Na fase de Projeto o principal objetivo é definir uma estrutura que possa ser im-
plementada baseada no que foi descrito nos requisitos que foram levantados
para o sistema junto ao cliente. Você saberia dizer qual a diferença entre a análise
e o Projeto?
2. Assinale a alternativa correta, marcando com (V) a assertiva verdadeira e com (F)
a assertiva falsa, sobre o processo de software:
( ) Na fase de Projeto é decidido como o sistema irá se comportar, em termos de:
software, hardware, internet, tipo de telefone, a interface de usuário, formulários
que devem ser preenchidos e os relatórios que o sistema irá fornecer; outros
programas específicos que possa vir a usar, quais bancos de dados e arquivos
que serão necessários.
( ) Na fase de Projeto é decidido como o sistema irá se comportar, em termos
de: software, hardware, infraestrutura de rede, a interface de usuário, formulários
que devem ser preenchidos e os relatórios que o sistema irá fornecer; outros
programas específicos que possa vir a usar, quais bancos de dados e arquivos
que serão necessários.
( ) Na fase de Projeto é decidido como o sistema irá se comportar, em termos de:
estrutura de cabos, hardware, infraestrutura de telefonia, a interface de usuário,
formulários que devem ser preenchidos e os relatórios que o sistema irá forne-
cer; outros programas específicos que possa vir a usar, quais bancos de dados e
arquivos que serão necessários.
Assinale a opção com a sequência CORRETA.
a. V, F, V.
b. F, V, V.
c. V, V, V.
d. F, V, F.
3. Os principais conceitos relacionados ao projeto de software são:
I. Abstração, refinamento, padrões, desenho, hierarquia de controle, encapsula-
mento, estrutura de dados, procedimentos de software, ocultação de informa-
ção.
II. Abstração, refinamento, modularidade, padrões, arquitetura, hierarquia de con-
trole, encapsulamento, estrutura de dados, procedimentos de software, oculta-
ção de informação.
III. Abstração, refinamento, modularidade, padrões, arquitetura, hierarquia de fun-
ções, encapsulamento, estrutura de dados, procedimentos de software, oculta-
ção de informação.
83
Da Interface
Temos que levar em conta que interface não é uma “coisa”, mas o espaço no qual se
estrutura a interação entre corpo, ferramenta (objeto ou signo) e objetivo da ação.” (...)
a interface revela o caráter da ferramenta dos objetos e o conteúdo comunicativo das
informações. A interface transforma objetos em produtos. A interface transforma sinais
em informação interpretável. A interface transforma simples presença física (Vorhande-
nheit) em disponibilidade (Zuhandenheit). A ferramenta é o que possibilita a interação,
é um objeto, algo fisicamente presente e projetado para se adequar às diferentes partes
da interação, ou então um signo, um “código”, imagens ou mensagens.
Há então, neste pensamento, uma diferenciação entre interface e ferramenta. A interfa-
ce, justamente por não ser algo moldável, ou palpável, não é a coisa em si, mas o espaço.
O termo “espaço” não como sinônimo de “lugar”, algo definido por Brenda Laurel e que
veremos a seguir. No pensamento de Bonsiepe o usuário é o foco do projeto, é a ele
que o designer serve, e é ele quem deve se “satisfazer”. Sua satisfação é a realização de
determinada tarefa, ou seja, o usuário deseja realizar uma tarefa e esta deve ser realizada
de maneira fácil. Esses são os elementos básicos de estudo do design, são os elementos
caracterizadores da interface. Em cada domínio do design a interface possui suas carac-
terísticas mais específicas.
Conclusão
A interface, no design, é uma realidade criada para simplificar a vida do usuário, ou seja,
para tornar real uma tarefa que o usuário deseja realizar, da maneira mais natural possí-
vel. Esta realidade é o meio em que ocorre uma interação. As características do usuário e
suas necessidades caracterizam a interface. As ferramentas, ou seja, os objetos a serem
projetados pelos designers devem refletir estes conceitos de forma imperceptível ao usu-
ário, como sugerido por Norman. Para Laurel, a interface é um lugar onde ocorre a intera-
ção enquanto Bonsiepe entende a interface como o meio em que o sistema de interação
está imerso. Ao tirarmos do objeto em si a responsabilidade de ser a interface, é muito
mais fácil compreender em cima de quê o design deve trabalhar para desenvolver pro-
dutos cada vez mais eficientes. Como dito no início do artigo, o visualmente agradável é
apenas uma pequena parte, é uma consequência, de algo muito mais complexo. Quanto
mais agradável ao olhar, maior é a tendência de ser passivo a esta informação visual.
Quanto mais confortável é um objeto, maior a tendência de sentir-se bem em um sofá.
É esta ideia que deve ser desenvolvida no design, entender as necessidades do usuário.
O design não pode ter a pretensão de querer evidenciar seus benefícios para o usuário,
ele deve simplesmente resolver seus problemas.
Atualmente, o grande foco da ergonomia é estudar as necessidades humanas, físicas e
psicológicas, para adaptar o objeto ao usuário. Mais uma vez, o design caminhando para
adequar os objetos aos seres humanos e não o caminho contrário. Sendo assim, é nítida
a relação deste objetivo ao conceito de interface invisível de Don Norman.
Fonte: Bevilacqua (2007).
MATERIAL COMPLEMENTAR
Material Complementar
REFERÊNCIAS
IMPLEMENTAÇÃO DE
III
UNIDADE
SOFTWARE
Objetivos de Aprendizagem
■■ Compreender a importância da implementação de software.
■■ Entender as questões fundamentais que precisam ser consideradas
durante a implementação do software.
■■ Apresentar os conceitos e técnicas que envolvem a implementação e
a depuração.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Implementação de Software
■■ Atividades da Implementação de Software
■■ Características da Implementação de Software
■■ Estilo de programação e codificação
■■ Comentário
■■ Depuração
■■ Asserções e Programação Defensiva
■■ Otimização de Desempenho
■■ Refatoração
93
INTRODUÇÃO
Introdução
94 UNIDADE III
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
IMPLEMENTAÇÃO DE SOFTWARE
Conforme Tsui e Karam (2013, p. 135), “o objetivo final da maioria dos projetos
de engenharia de software é produzir um programa funcional. O ato de trans-
formar o projeto detalhado em um programa válido em alguma linguagem de
programação, juntamente com todas as suas atividades de apoio é aludido como
implementação”. Nessa fase, ocorre a codificação/programação dos requisitos de
software, baseado nas definições técnicas da fase de projeto.
Na fase de implementação desenvolvemos o código, mas ela vai além disso.
Nessa fase, vamos ver que além de ser escrito o código, precisamos testá-lo e
depurá-lo, assim como compilá-lo e, por fim, ter um produto executável com-
pleto. Durante este processo, o ideal é que se utilize um controle de versões para
acompanhar as diferentes versões do código durante o desenvolvimento.
O profissional responsável por desenvolver esta etapa é conhecido por
Programador ou Desenvolvedor, cujo perfil apresenta excelentes capacidades
lógicas e analíticas.
A fase de Implementação detalha os componentes previstos no projeto, des-
crevendo todos os componentes de código fonte e código binário, em nível de
linguagem de programação ou de acordo com as tecnologias escolhidas.
IMPLEMENTAÇÃO DE SOFTWARE
95
Implementação de Software
96 UNIDADE III
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
uso possível de códigos já existentes.
2. Gerenciamento de configuração: quando se está desenvolvendo um sis-
tema, são geradas muitas versões diferentes, sendo interessante usar um
gerenciamento de configuração para o controle.
3. Desenvolvimento host-target: o desenvolvimento de um sistema ocorre
em um computador (sistema host) e é executado em outro (sistema tar-
get), podendo ser do mesmo tipo ou muitas vezes diferentes.
Para Beck (2013, p. 5), “muitas decisões na programação são únicas e a codi-
ficação seria mais eficaz se programadores gastassem menos tempo nas partes
mundanas e repetitivas do trabalho e tivessem mais tempo para resolver proble-
mas verdadeiramente únicos”.
Caso não consiga encontrar uma linguagem de padrões que trate do domí-
nio de seu problema, procure analogias em um outro conjunto de padrões.
(Pressman).
IMPLEMENTAÇÃO DE SOFTWARE
97
assim, as pessoas apostam seus empregos, seu conforto, sua segurança, seu
entretenimento, suas decisões e suas próprias vidas em software. Tomara
que estejam certas.
Fonte: Pressman (2011).
Desenho
detalhado
Projeto de
arquitetura
Codificação
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Inspeção de Testes de
implementação unidade
Defeitos encontrados
Unidades verificadas
Integração
Implementação incompleta
Implementação
completa
IMPLEMENTAÇÃO DE SOFTWARE
99
Depois as unidades de código fonte produzidas são passadas por uma revisão
de código, em que são eliminados os defeitos primários, como erros de digitação
ou de uso da linguagem mesmo. Essa revisão também deve ser feita pelos progra-
madores. Na sequência, vem a atividade de Inspeção de implementação em que é
verificado de forma mais rigorosa o código por meio de um grupo de revisores.
Na atividade de testes de unidade são feitos testes usando componentes de
teste que devem também ter sido desenhados, revistos, codificados e compila-
dos nas atividades anteriores. Um teste de unidade é aquele que testa uma única
unidade do sistema. O teste de unidade testa de maneira isolada as prováveis
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
efetivo para a engenharia de software. O segredo é definir as regras do jogo
logo no início, isso significa que todos os envolvidos devem concordar que
o protótipo é construído para servir como um mecanismo para definição de
requisitos. Portanto, será descartado (pelo menos em parte) e o software
final é arquitetado visando qualidade.
Fonte: Pressman (2011).
CARACTERÍSTICAS DA IMPLEMENTAÇÃO DE
SOFTWARE
Para Tsui e Karam (2013, p. 135) sempre é bom ter em mente algumas caracte-
rísticas que devem ser encontradas em uma boa implementação:
■■ Legibilidade: o código deve ser facilmente lido e entendido.
■■ Mantenabilidade: o código deve ser facilmente modificado e mantido.
■■ Desempenho: códigos em que a execução seja a mais rápida possível.
■■ Rastreabilidade: todos os elementos do código
devem corresponder a um elemento do projeto.
■■ Exatidão: a implementação deve fazer aquilo
que foi definido no levantamento de requi-
sitos e no projeto.
■■ Integridade: todos os requisitos levantados
devem ser atendidos. ©shutterstock
IMPLEMENTAÇÃO DE SOFTWARE
101
Um fator que é essencial para a obtenção de um código claro e que ofereça facili-
dade de manutenção é a boa utilização dos mecanismos presentes na linguagem
adotada que são os estilos de programação e codificação.
É importante para a empresa adotar estilos ou padrões de codificação. Estes
estilos fornecem e especificam algumas regras de: atribuição de nomes de variá-
veis, endentações e estilos de comentários entre outros. Isto é importante quando
se trabalha em equipe e quando outros programadores estiverem realizando a
depuração ou a manutenção de seu código posteriormente.
Muitos programadores, geralmente, trabalham em equipe, necessitando se
integrar, testar e muitas vezes alterar os códigos que são produzidos por outros
programadores. Por isso, é importante que haja padrões de codificação para a
fase de implementação. Tais padrões devem ser seguidos por todos os progra-
madores, de modo que o código e a documentação sejam claros para quaisquer
membros da equipe.
A seguir vamos ver algumas questões importantes que devem ser utilizadas e
que podem afetar o estilo das codificações, conforme Tsui e Karam (2013, p. 136):
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
convenções-padrões para a sua linguagem.
Endentação e espaçamento: se refere ao acréscimo de espaços horizontais
antes de algumas linhas para melhorar a estrutura do código. Para muitos, é um
erro do programador iniciante não endentar o código de forma apropriada. A
endentação afeta a legibilidade e a mantenabilidade do código.
Tamanho da função/método: códigos com grandes funções ou métodos são
mais propensos a erros do que os menores até certo ponto, pois, às vezes, méto-
dos muitos pequenos podem gerar muitos erros também.
Questões de atribuição de nomes de arquivo: uma das grandes vantagens
quando se adota um padrão é especificar como devem ser atribuídos os nomes
de arquivos, assim a localização de todos os elementos é facilitada.
Elementos particulares de programação: temos várias linguagens de pro-
gramação diferentes e que suportam recursos diferentes e muitos destes recursos
são considerados perigosos.
IMPLEMENTAÇÃO DE SOFTWARE
103
Os textos das mensagens são mais voláteis que o código da aplicação. Du-
rante o período de implantação, as mensagens tendem a ser alteradas para
serem mais bem compreendidas pelo usuário. Uma boa prática é armaze-
nar estas mensagens fora do código fonte da aplicação. Isto permite que
os textos sejam alterados sem que a aplicação seja compilada novamente.
Além disso, os erros de negócio mostrados para o usuário devem estar na
linguagem utilizada pelo usuário. Isto implica que o mecanismo de mensa-
gem precisa armazenar os textos das mensagens em diversas linguagens, o
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
COMENTÁRIOS
©shutterstock
Outro caso que pode ocorrer, os comentários podem ficar desatualizados con-
forme os códigos vão mudando e com isso, criando novos erros. Isso porque,
eles podem estar errados desde a primeira vez e como não são testados e atua-
lizados, a funcionalidade pode ter mudado.
Comentários
104 UNIDADE III
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
desperdício de esforço e irão distrair os leitores.
Explicação do código: alguns programadores costumam explicar na lin-
guagem o que o código faz, em casos de códigos complexos. Mas em quase toda
situação, se o código é muito complexo que exija uma explicação, ele deve ser
revisado.
Marcador no código: muitos programadores utilizam marcadores para
indicar que está com itens incompletos, para indicar mudanças ou quem fez as
alterações. Neste caso, é recomendado que seja usado um gerenciador de ver-
são para controle.
Resumo de código: são muito úteis para que os programadores enten-
derem o código, desde que estejam sempre atualizados. Esse resumo, sempre
atualizado, eliminará a necessidade de comentários ao longo do código, o que
dificulta a manutenção.
Descrição do objetivo do código: são os comentários mais úteis, pois ele
descreve o que o código deve fazer e não o que ele faz. Neste caso, se o código
não fizer o que foi descrito, ele estará errado.
Referências externas: usados para vincular comentários a entidades exter-
nas, como por exemplo, livro, outros programas ou a existência de dados de
inicialização nas tabelas do banco de dados.
IMPLEMENTAÇÃO DE SOFTWARE
105
Comentários
106 UNIDADE III
DEPURAÇÃO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
código não é uma tarefa fácil de ser execu-
tada. Um dos motivos, é que podem ocorrer
muitas variações que podem vir a atrapalhar
esse processo, um exemplo é a linguagem que
está sendo utiliza e ferramentas disponíveis
para fazermos a depuração de um código.
Mas devemos tomar cuidado, pois depu-
©shutterstock rar é um processo iterativo. Você estará
criando possíveis hipóteses em cima do erro, criando possíveis testes para pro-
var estas hipóteses, podendo alterar o código para corrigir os erros encontrados.
Mas caso essas hipóteses sejam falsas pode ser necessário voltar atrás e iniciar o
processo com novas hipóteses.
Tsui e Karam (2013, p. 139) identificam quatro fases no processo de depu-
ração e elas podem ser resumidos da seguinte maneira:
Estabilização (reprodução): nessa fase reproduzimos o erro em uma confi-
guração particular, no caso, a máquina do programador e assim verificar os erros
que estão ocorrendo. O mais importante desta fase é a identificação do erro e
das condições em que ele ocorre. Os resultados dessa fase são um conjunto de
testes que reproduzem o erro várias vezes, desde situações mais simples. A fase
de estabilização pode ser considerada muito difícil às vezes, pois podem ocorrer
erros aleatórios, que ao serem testados mais de uma vez, produzem resultados
diferentes.
IMPLEMENTAÇÃO DE SOFTWARE
107
Depuração
108 UNIDADE III
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Por que a depuração é tão difícil? Com toda certeza, a psicologia humana
tem muito mais a ver com a resposta do que a tecnologia de software. No
entanto, algumas características dos erros fornecem alguns indícios:
1. O sintoma e a causa podem ser geograficamente remotos. Isto é, o sinto-
ma pode aparecer em uma parte de um programa, enquanto a causa pode
realmente estar localizada em um ponto muito afastado.
2. O sintoma pode desaparecer (temporariamente) quando outro erro for
corrigido.
3. O sintoma pode ser causado por erro humano que não é facilmente ras-
treável.
4. O sintoma pode ser um resultado de problemas de temporização, e não
de problemas de processamento. Pode ser difícil reproduzir com precisão as
condições de entrada.
[...]
7. O sintoma pode ser intermitente. Isso é particularmente comum em siste-
mas embutidos que acoplam hardware e software inextricavelmente.
8. O sintoma pode ocorrer devido a causas distribuídas por várias tarefas,
executando em diferentes processadores.
Fonte: Pressman (2011, p. 490).
IMPLEMENTAÇÃO DE SOFTWARE
109
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
técnicas de programação defensiva são apresentadas, caracterizadas e elei-
tas como objeto de avaliação.
Fonte: Secall (2007).
OTIMIZAÇÃO DE DESEMPENHO
IMPLEMENTAÇÃO DE SOFTWARE
111
Conforme Tsui e Karam (2013, p. 141), o erro mais comum que um pro-
gramador pode cometer é se preocupar no início com o desempenho do código
e não lembrar que o primeiro objetivo ao escrever o programa, é que ele esteja
correto e que seja de fácil manutenção e que após ele estiver pronto, será o
momento de se preocupar com o desempenho, caso este não esteja satisfatório.
Em alguns casos, somente algumas partes de um código que podem vir a cau-
sar lentidão e que precisam passar por otimização de desempenho, em outros
casos, partes de um programa podem vir a serem executados somente algumas
vezes e que não causaram impacto no desempenho.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Para isso, adotar boas práticas de programação e usar algumas escolhas crite-
riosas de design, ajuda de forma significativa o desenvolvimento de um código
correto, rápido e de fácil manutenção. Uma das melhores práticas seria reutili-
zar o máximo possível de código de alta qualidade já existente e se utilizar das
bibliotecas padrão inclusas em seu compilador. Segundo Tsui e Karam (2013,
p. 141), procure conhecer e utilizar bem sua biblioteca para desenvolver códigos
de alta qualidade em vez de reimplementá-lo em um novo código.
Otimização de Desempenho
112 UNIDADE III
REFATORAÇÃO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
tenibilidade sem alterar seu comportamento
e suas funções externas. A refatoração surgiu
quando alguns desenvolvedores foram anali-
sar seus códigos para alterar ou incluir novas
funcionalidades, eles começaram a verifi-
car que os códigos já existentes estavam em ©shutterstock
IMPLEMENTAÇÃO DE SOFTWARE
113
■■ Instruções switch (em linguagens OO, podem ser substituídas por poli-
morfismo, assim o código fica mais claro).
■■ Inveja da funcionalidade, quando um método tende a utilizar mais de um
objeto de uma classe diferente a aquele que pertence.
■■ Intimidade inapropriada, na qual uma classe refere-se a partes privadas
de outras classes.
Para Tsui e Karam (2013, p. 142), “qualquer um destes sintomas, bem como os
outros que Fowler cita e aqueles que você desenvolverá, indicará que seu código
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
pode ser melhorado. Você pode utilizar refatoração para ajudá-lo a lidar com
estes problemas”.
Apesar de trazer benefício para um código fonte existente, a refatoração pode
apresentar riscos se aplicada da forma errada, tais como: atraso do projeto, intro-
dução de falhas no sistema, tornar o código ilegível e não modificável, portanto,
é uma mudança que deve ser efetuada com cuidado.
Refatoração
114 UNIDADE III
CONSIDERAÇÕES FINAIS
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
cionais que podem ser desenvolvidas para melhorar a qualidade do código e
corrigir erros, como depuração, otimização de desempenho e refatoração.
Ao longo da unidade, aprendemos que a implementação é a fase mais crítica
do processo de desenvolvimento do software, pois criamos a versão executável do
software e convertemos a especificação do sistema em um sistema executável. A
fase da implementação é a escrita do sistema em uma linguagem de programação
pelo programador. A Implementação, atualmente, pode utilizar linguagens de
programação visuais e orientadas a objeto, com ambientes de desenvolvimento
fáceis e amigáveis para o desenvolvimento dos códigos.
Vimos que não basta saber programar em uma linguagem de programação
para implementar um software, é necessário, também, conhecer e aplicar boas
práticas de programação e usar ferramentas disponíveis para tornar esta fase mais
eficiente e eficaz. Aprendemos como ocorre a codificação/programação dos requi-
sitos de software, baseado nas definições técnicas analisadas na fase de projeto.
Depois desta fase, com o conhecimento que já adquirimos de projeto e
implementação, podemos passar para a próxima unidade e nos aprofundamos
nos conceitos de teste de software, para juntos chegarmos ao final das fases que
envolvem um processo de software e obtermos um sistema eficiente e com qua-
lidade. Preparados? Então, continue sua leitura!
IMPLEMENTAÇÃO DE SOFTWARE
115
3.1. Validade
A validade garante que somente elementos e atributos especificados no HTML apare-
çam, mostrando o mesmo conteúdo para usuários de diversos navegadores. Para Harold
(2010), adicionar atributos alt em imagens é uma técnica de refatoração essencial, uma
vez que dá assistência para usuários com deficiências de visão à medida que navegado-
res de áudio vierem embarcados em celulares, carros e outros dispositivos direcionados
a esse público.
3.2. Leiaute
Harold (2010) cita que usar a semântica adequada para cada elemento torna as páginas
inteligíveis para leitores de tela e faz com que sejam mostradas apropriadamente para
diferentes plataformas. Muitos elementos, como o table são usados abusivamente para
tornar as páginas com aparência agradável. Atualmente, tem-se trabalhado bastante
com o desenvolvimento de páginas Web utilizando o conceito “tableless”, ou seja, sem
tabelas. O padrão de desenvolvimento com o CSS e tags div permite a separação da
camada de apresentação, tornando a manutenção das páginas mais fácil, dentre outros
benefícios.
3.3. Acessibilidade
A web tem o poder de integrar à sociedade as pessoas com necessidades especiais. As
páginas Web devem ser projetadas de modo que não precisem saber qual o tipo de
dispositivo o usuário está utilizando, seja ele um monitor de vídeo ou um leitor de tela.
Harold (2010) lembra que os usuários com limitações visuais que utilizam leitores de
tela não podem usar o leiaute visual de uma página para determinar quais rótulos estão
associados a quais campos. É preciso rotular, deixar explícito cada um dos campos não
ocultos, de forma que eles sejam facilmente identificados pelos dispositivos. Para cada
elemento visível do tipo input, textarea ou select, deve existir ao menos um elemento do
tipo label associado.
119
Material Complementar
MATERIAL COMPLEMENTAR
IV
UNIDADE
TESTE DE SOFTWARE
Objetivos de Aprendizagem
■■ Definir Teste de software, seus objetivos e seus conceitos.
■■ Estudar os conceitos sobre defeitos e níveis de teste de software.
■■ Apresentar a documentação usada nos testes de software e suas
técnicas.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Introdução ao Teste de Software
■■ Conceitos básicos de Teste de Software
■■ Ciclo de Vida do Teste de Software
■■ Técnicas de Teste de Software
■■ Papéis e Cargos de Teste de software
■■ Ambiente de teste
127
INTRODUÇÃO
Olá Aluno (a)! Vamos para mais uma unidade de estudos? Avançando em nosso
aprendizado sobre as fases do processo de desenvolvimento de software, vamos
estudar a fase de Teste de Software e entender porque ela é importante e essen-
cial para garantir a qualidade do software.
Nesta unidade, vamos aprender que o principal objetivo do teste de software
é auxiliar na busca de um produto de software com o mínimo de erros possíveis.
Para realizarmos esta tarefa, faz-se necessário o uso de ferramentas que auxiliem
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Introdução
128 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
TESTE DE SOFTWARE
129
Mas você deve estar se perguntando: Por que testar? Quando é preciso tes-
tar? Como testar? E quando os testes devem começar?
Para responder a estas dúvidas, vamos ver o que pensa Tsui e Karam (2013,
p. 147). Os autores afirmam que os testes de software geralmente possuem dois
objetivos principais:
■■ Os testes devem encontrar defeitos no software, para que eles possam ser
corrigidos ou minimizados.
■■ Os testes fornecem uma avaliação geral de qualidade e uma estimativa
das possíveis falhas.
Para Tsui e Karam (2013), exceto os programas mais simples, os testes de sof-
tware não podem provar que um produto funciona e sim que ele pode apenas
encontrar defeitos e que ele funciona para as situações em que foi testado, mas
sem garantir seu funcionamento em outras situações que não foram testadas.
Mas se os testes não foram executados de forma correta? Nesse caso, pode for-
necer alguma garantia de que o software irá funcionar para as situações semelhantes
às dos testes, não temos, porém, como provar que o software irá funcionar para
todos os casos. Vale ressaltar que, mesmo se um teste não detectar defeitos, isso
não quer dizer necessariamente que o produto não é um produto de boa qualidade.
Muitas vezes, a atividade de teste empregada pode ter sido conduzida sem
planejamento, sem critérios e sem uma sistemática bem definida, sendo, por-
tanto, os testes de baixa qualidade. Ainda que os testes não possam demonstrar a
ausência de defeitos, como benefício secundário, podem indicar que as funções
do software parecem estar funcionando de acordo com o especificado.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
De acordo com Pressman (2011), todo software que se destina ao público e/ou
ao mercado deve sofrer um nível mínimo de teste. Assim, quanto maior o nível
de complexidade do software, mais testes e técnicas de testes se tornam neces-
sários para a obtenção da sua qualidade.
Segundo Tsui e Karam (2013, p. 147), “os testes de software consistem na veri-
ficação dinâmica do comportamento de um programa com base em um conjunto
finito de situações de teste, selecionado de forma apropriada a partir do habitual-
mente infinito domínio de execuções, em relação ao comportamento esperado”.
“Um testador bem treinado, com experiência prática e com o espírito aberto
para novos aprendizados dificilmente será derrotado.”
(Rios).
Mas como toda atividade complexa que possui muitas ações, o teste deve ser
planejado, ter seus objetivos determinados, a definição de quais metodologias e
técnicas devem ser aplicadas, e de quais recursos e ferramentas devem ser utili-
zados para executar os testes.
TESTE DE SOFTWARE
131
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
Alguns conceitos que envolvem testes de software devem ser entendidos para
facilitar o entendimento desse processo. Conforme Bastos et al. (2007, p. 283),
“Erro: resultado de uma falha humana. Defeito: resultado de um erro existente
num código ou num documento”.
Conforme a terminologia padrão para Engenharia de Software do Institute
of Electrical and Electronics Engineers (IEEE), defeitos são considerados
parte do universo físico, provocados por pessoas e que podem levar a ocasionar
erros em um software, fazendo com que ele fique diferente do que foi especifi-
cado. Resumindo, os erros provocam e geram falhas no sistema, e estas causam
um comportamento que não se esperava e que pode afetar e inviabilizar a utili-
zação de um software.
Para alguns autores, o conceito de defeito é:
“É uma não conformidade em relação ao que o software se propõe a
fazer, que diz que faz e não faz” (MOLINARI, 2003).
TESTE DE SOFTWARE
133
do software.
■■ Evitar defeitos é minimizar os riscos, não só os do projeto de desenvolvi-
mento do software como também os do projeto de teste.
■■ Integração com os desenvolvedores, para que as duas equipes atuem em
conjunto e harmonia.
Para entendermos bem os defeitos, Bastos et al. (2007) descreve que um defeito
pode ocorrer em função de desvios do que foi levantado na análise de requisi-
tos. Segundo ele, temos:
■■ Defeitos decorrentes da falta de concordância com a especificação do
produto
■■ Defeitos decorrentes de situações inesperadas, mas não definidas nas
especificações do produto.
Conforme Rios e Moreira (2013), temos alguns tipos de defeitos que podem ser:
■■ Defeitos de interface com os usuários: são defeitos gerados de funcio-
nalidade, usabilidade, desempenho e resultados (saídas).
■■ Defeitos introduzidos no tratamento de defeitos: esses defeitos podem
ser subdivididos em: prevenção de defeitos, detecção de defeitos e recu-
peração de defeitos.
■■ Defeitos de Limite: defeitos de valores extremos (maior, menor etc.) ou
fora dos limites estabelecidos.
■■ Defeitos de Cálculo.
■■ Defeitos de Controle de Fluxo.
■■ Defeitos de Inicialização ou fechamento.
■■ Defeitos de Manuseio ou interpretação de dados.
■■ Defeitos de condição de disputa.
■■ Defeitos de carga.
■■ Defeitos de hardware ou software.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
■■ Defeitos de controle de versão.
TESTE DE SOFTWARE
135
5. Entrega.
©shutterstock
Segundo Bastos et al. (2007), pode existir outras etapas no Ciclo de Vida de
testes, mas a estrutura básica consiste sempre na mesma, mudando apenas a ter-
minologia usada. Mas os autores ressaltam que além de uma metodologia de
teste, baseada em ciclo de vida de testes, deve ser compatível com a metodolo-
gia usada para o desenvolvimento do sistema.
Figura 1: Modelo de Integração entre os processos de desenvolvimento e Teste
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Gerência de Requisitos
Teste Desenvolvimento
Validação Desenho Lógico
Especificação
e Físico
P P
l l
a Teste Unitário
a
n Execução (1) Construção n
e e
j j
a a
m Teste de Sistema e m
Teste de Integração
e Execução (2) Implantação e
n n
t t
o o
Teste de Aceitação
Entrega Entrega
TESTE DE SOFTWARE
137
Planejamento e Controle
Preparação
Conforme Rios (2008), quem testa um software sem fazer um plano de teste não
vai conseguir fazer um procedimento bem feito. O planejamento dos testes per-
mite ao gerente de teste prever situações futuras, tais como as necessidades de
ambiente, de recursos humanos, dentre outros, que precisam ser tratados sempre
como um projeto e como tal precisa ser planejado. Um trabalho bem planejado
com um bom plano de teste bem feito, evitará muitas vezes inúmeras pressões
a que o testador ou a equipe de teste estará submetido.
“Ao considerar que o desenvolvedor comete erros banais muitas vezes dei-
xamos de entrar fundo nos seus testes, que também acabam sendo negli-
genciados.”
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
(Rios).
TESTE DE SOFTWARE
139
?
Fonte: Pressman (2011).
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Fonte: Pressman (2011)
Cada um desses testes possuem várias técnicas que ajudam o processo a asse-
gurar o funcionamento adequado de alguns aspectos do sistema ou da unidade.
TESTE ESTRUTURAL
Para Bastos et al. (2007) o objetivo principal dos testes estruturais é garantir que
o produto seja estruturalmente sólido e que funcione corretamente.
As técnicas para esse tipo de teste são desenhadas, não para garantir que o sis-
tema seja funcionalmente correto, e sim para que ele seja estruturalmente robusto.
Sendo assim, os testes estruturais ou caixa-branca estabelecem os objetivos do
teste com base em uma determinada implementação, analisando os detalhes
do código fonte e elaborando casos de teste que cubram todas as possibilidades
do componente de software. Dessa maneira, todas as variações originadas por
estruturas de condições/repetições são testadas. Conforme Bastos et al. (2007),
as técnicas podem ser divididas de acordo com o tipo de teste:
■■ Testes de carga: verifica o volume de dados que um sistema consegue pro-
cessar. Ele permite monitorar o comportamento do sistema diante de uma
situação onde há um grande número de acessos simultâneos.
■■ Testes de conformidade: são realizados para garantir a conformidade
com as metodologias e encorajar e auxiliar os profissionais de TI adotá-
-las. Avalia-se a documentação do sistema de aplicação é racional e está
TESTE DE SOFTWARE
141
TESTE FUNCIONAL
Para Bastos et al. (2007), “os testes funcionais são desenhados para garantir que
os requisitos e as especificações do sistema tenham sido atendidos”. Os testes
funcionais ou caixa-preta utilizam as especificações (de requisitos, análise e pro-
jeto) para definir os objetivos do teste e, portanto, para guiar o projeto de casos
de teste. No teste funcional, o componente de software a ser testado é abor-
dado como se fosse uma caixa-preta sem considerar o comportamento interno
do mesmo. Entre os tipos de técnicas na execução dos testes funcionais temos:
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
■■ Teste de controle: ele garante que os dados estejam completos e corretos,
as transações sejam autorizadas, a manutenção das informações da trilha
de auditoria seja realizada, os processamentos sejam eficientes, eficazes e
econômicos e que atendam às necessidades dos usuários.
■■ Teste de interconexão: são desenhados para garantir que a intercone-
xão entre os softwares de aplicação funcione corretamente. Determina
se os parâmetros e dados são transferidos corretamente entre os softwa-
res, garante o momento certo de execução e a existência de coordenação
das funções entre os softwares e se a documentação pertinente é correta
e completa.
■■ Testes paralelos: serve para determinar se os resultados de um novo
software de aplicação são consistentes com o processamento do antigo
sistema ou da antiga versão do sistema. Ele ajuda a assegurar que a nova
versão do software execute corretamente e que demonstre consistências
e inconsistências entre as duas versões.
■■ Testes de requisitos: verificam se o sistema executa corretamente as fun-
cionalidades e se ele é capaz de sustentar essa correção após sua utilização
por um período de tempo contínuo.
■■ Testes de regressão: eles voltam a testar segmentos de códigos já testa-
dos após a implementação de uma mudança em outra parte do software.
Sempre que ocorrem mudanças em um segmento de código, problemas
podem surgir em outros segmentos já testados.
TESTE DE SOFTWARE
143
Na tabela 1 podemos ver uma lista com alguns outros tipos de testes que podem
ser utilizados:
Tabela 1: Alguns Tipos de Teste
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Testa apenas as funcionalidades (ou requisitos não funcionais)
Testes de Progressão
especificados para a versão.
Teste que consiste em um teste rápido, executando as prin-
Teste de Fumaça cipais funcionalidades do sistema, sem se preocupar com as
condições de erro. O mesmo que teste do Caminho Feliz.
Fonte: Bastos et al. (2007)
Outras técnicas de teste podem e devem ser utilizadas de acordo com a necessi-
dades da empresa. Conforme Pressman (2011), algumas técnicas se destacam,
por exemplo: teste de desempenho, teste de usabilidade, teste de carga, teste de
stress, teste de confiabilidade e teste de recuperação. Em alguns livros, alguns
autores mostram a definição de uma técnica de teste chamada de “caixa cinza”,
que mescla as técnicas de caixa preta e caixa branca.
Preparados para o próximo tópico? Vamos conhecer os papéis e cargos para
quem participa nos projetos de teste de software. Boa leitura!
TESTE DE SOFTWARE
145
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
o seu trabalho nesse ambiente de teste.
É o técnico responsável pela modelagem e elaboração dos
Analista de Teste casos de Teste e pelos scripts de teste. Pode ser que em
alguns casos os scripts sejam elaborados pelos testadores.
Técnico responsável pela execução dos casos de teste e
Testador
scripts de teste.
Fonte: Rios (2013).
Qual o perfil de um bom testador? Um bom testador deve ser explorador, resolver
problemas, ser incansável, ser criativo, ser perfeccionista, exercitar o julgamento,
ser diplomático e também ser persuasivo.
Conforme Rios (2008, p. 40), “o trabalho do testador é muitas vezes estres-
sante e cansativo. Encontrar defeitos num software não é fácil e envolve atenção e
cuidado. O bom testador deve ter o perfeito controle do seu trabalho para poder
negociar nessas condições de alta pressão”.
O bom testador deve conhecer o processo de desenvolvimento do software
no qual está inserido, pois suas atividades fazem parte desse processo. O tes-
tador deve conhecer quais são os artefatos de entrada e saída de cada fase do
processo, principalmente das que envolvem atividades de testes.
Segundo Tsui e Karam (2013, p. 147), “um testador é um profissional técnico
cuja função para o item em particular sob teste é simplesmente compor situa-
ções de teste e garantir sua execução. Embora o conhecimento de programação
seja extremamente útil para os testadores, os testes constituem uma atividade
diferente com requisitos intelectuais diferentes”.
TESTE DE SOFTWARE
147
Esses são os perfis mais conhecidos, mas algumas empresas podem utili-
zar outros como, por exemplo: automatizador de testes, analista homologador,
entre outros.
Vamos seguir em frente? No próximo tópico vamos conhecer como é o
ambiente em que os testes de software são desenvolvidos. Bons estudos!
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
AMBIENTE DE TESTE
TESTE DE SOFTWARE
149
Interface
Pseudocontrolador Estruturas de dados locais
Condições de fronteira
Caminhos independentes
Módulo a Caminhos de manipulação de erro
ser
testado
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Pseudocontrolados Pseudocontrolados
Casos
de teste
RESULTADOS
Fonte: Pressman (2011).
Conforme Bastos et al. (2007), o escopo do ambiente poderá ser definido pelo
nível de teste a ser executado:
■■ Quanto maior o nível: o ambiente de teste deverá ser capaz de reprodu-
zir as características do ambiente de produção.
Ainda segundo os autores, o ambiente de teste pode e deve ser planejado em duas
fases do ciclo de vida do projeto de teste: na estratégia de teste e no plano de teste.
Figura 6: Fluxograma de teste
Definição da
estratégia de
testes Gerenciamento do
Criação do
processo de testes
ambiente de
(indicadores de
testes
desempenho)
Ambiente de Teste
150 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
VOLUME DOS DADOS
Segundo Bastos et al. (2007, p. 81), é a “criação de um ambiente o mais real pos-
sível, tendo como base o escopo do teste. Isso inclui o volume de dados de teste”.
O volume de dados está diretamente relacionado à necessidade e à abrangência
da massa de teste para cada fase ou estágio, nas etapas iniciais (unidade e integra-
ção) não existe a necessidade de uma grande quantidade de dados para exercitar
a aplicação, mas nas fases de sistema e aceitação, é necessário um grande volume
para garantir a qualidade dos testes.
Bastos et al. (2007) definem que a técnica e o tipo de teste que estão sendo
executados nos diferentes estágios também são fatores importantes nesse pro-
cesso. Por exemplo: para um teste de carga ser executado, é necessário um grande
volume de dados e que este seja criado de maneira estruturada e o mais próximo
possível da realidade.
A criação de um ambiente isolado, organizado, representativo e mensurável
para os testes garante a descoberta de erros reais, que realmente poderiam acon-
tecer na produção e que foram descobertos ainda em tempo de desenvolvimento.
Conforme Bastos et al. (2007, p. 83), “é preciso que a preparação do ambiente seja
discutida o quanto antes, e suas necessidades básicas (equipamentos, softwares,
browsers, etc) devem ser identificadas no momento inicial do projeto”. Com o
andamento do projeto de testes, esse ambientes ganham mais detalhes e come-
çam a ser implementados, mais a frente, na fase de implementação do teste, o
volume de dados será criado e o ambiente previamente estabelecido será utili-
zado para executar os cenários de teste elaborados.
TESTE DE SOFTWARE
151
Para Mecenas e Oliveira (2005), os ganhos para o processo de qualidade dos pro-
jetos com a criação de um ambiente independente são:
■■ Ambiente controlado.
■■ Dados íntegros.
■■ Base de dados reduzida.
■■ Utilização de massa de dados construída e não real.
■■ Facilidade no gerenciamento.
■■ Testes não tendenciosos.
■■ Trabalhar na prevenção dos erros e não na correção deles.
■■ Garantia da utilização das normas e dos padrões especificados.
■■ Teste de todos os módulos e não apenas dos que sofreram alteração, garan-
tindo que nada tenha sido alterado após a manutenção.
Ambiente de Teste
152 UNIDADE IV
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
O teste de software é uma das atividades que buscam contribuir para a me-
lhoria da qualidade do software. O teste revela a presença de defeitos no
software e atende as exigências de qualidade de software. O objetivo do
presente trabalho foi esclarecer como o teste de software influência a qua-
lidade do software no mercado. A metodologia utilizada para desenvolvi-
mento do trabalho foi baseada em revisão bibliográfica, em materiais publi-
cados em livros, revistas, jornais, rede eletrônica, periódicos especializados,
monografias e dissertações como fonte de coleta de dados. Diante da in-
cessante competitividade do mercado atual, empresas procuram garantir a
qualidade de seus produtos como fator que represente sua capacidade em
desenvolver sistemas com qualidade. No mercado existem várias técnicas
de teste de software que auxiliam essa garantia.
Fonte: Barbosa e Torres (2011).
TESTE DE SOFTWARE
153
CONSIDERAÇÕES FINAIS
Considerações Finais
154
1. Conforme Tsui e Karam (2013, pg. 147), os testes de software geralmente pos-
suem dois objetivos principais:
I. Os testes devem encontrar defeitos no software, para que eles possam ser cor-
rigidos ou maximizados e restaurados.
II. Os testes fornecem uma avaliação geral de qualidade e uma estimativa das
possíveis falhas.
III. Os testes devem encontrar defeitos no software, para que eles possam ser
corrigidos ou minimizados.
IV. Os testes geram uma avaliação de cada componente e uma estimativa dos
possíveis sucessos.
V. Os testes não encontram defeitos e apenas fornecem uma avaliação geral de
qualidade.
Assinale a opção com a sequência CORRETA.
a. Somente a questão I está correta.
b. Somente as questões II e III estão corretas.
c. Somente as questões I, IV e V estão corretas.
d. Todas estão incorretas.
e. Todas estão corretas.
2. Para Sommerville (2011), o processo de teste apresenta dois objetivos distintos:
I. Demonstrar ao desenvolvedor e ao cliente que o software atende seus requi-
sitos.
II. Descobrir situações em que o software se comporta de maneira incorreta, in-
desejável ou de forma diferente do que foi especificado.
III. Demonstrar ao usuário e ao cliente que o software não atende seus requisitos.
IV. Demonstrar ao desenvolvedor e ao cliente que o software não atende seus
requisitos.
V. Descobrir situações em que o software se comporta de maneira correta, dese-
jável ou de forma igual do que foi especificado.
155
Testes de validação: o teste de validação pode ser considerado bem sucedido quando
o software funciona da maneira esperada pelo cliente. A validação do software, na fase
de testes, é realizada por meio de uma série de testes de caixa preta que demonstram a
conformidade com os requisitos.
Testes alfa e beta: são os testes de aceitação, feitos pelo usuário, que dificilmente opera
o sistema da forma prevista, e visam descobrir erros cumulativos que poderiam deterio-
rar o sistema no decorrer do tempo.
Teste de segurança: o teste de segurança tenta verificar se todos os mecanismos de
proteção embutidos em um sistema o protegerão de acessos indevidos. Todas as formas
de ataque devem ser simuladas.
Testes de estresse: o teste de estresse é feito para confrontar o sistema com situações
anormais. O teste de estresse executa o sistema de forma que exige recursos em quanti-
dade, frequência ou volume anormais.
Teste de desempenho: o teste de desempenho é idealizado para testar o desempenho
do software quando executado dentro do contexto de um sistema integrado.
Embora seja difícil medir e definir um software como sendo de boa qualidade, é fácil
identificar um software de má qualidade. Os erros frequentes, o mau funcionamento ou
a inadequação aos requisitos são sempre notados.
Fonte: Neves (2009)
MATERIAL COMPLEMENTAR
Teste de Software
Emerson Rios, Trayahú Moreira
Editora: Alta Books
Sinopse: Tratar essa atividade de teste de software como uma daquelas
inseridas no processo de desenvolvimento, quando era executada por
programadores e analistas de sistemas, não atende mais ao nível atual
de complexidade das aplicações. Os testadores são técnicos altamente
qualificados, os quais precisam acumular uma gama enorme de
conhecimentos para poderem desempenhar suas atividades. Esse livro dá
um enfoque gerencial aos principais aspectos relacionados com teste de
software e procura servir de base para que gerentes e testadores possam
absorver os conhecimentos necessários para suas funções na época atual.
Desta forma, os autores apresentam além das métricas e metodologias,
como os testes devem ser corretamente organizados e executados na
empresa, e o que os gerentes precisam saber para montar um ambiente de
teste estruturado e adequado aos novos técnicos dos projetos de teste de
software. Nessa edição de Teste de Software, os autores Emerson Rios e Trayahú Moreira incluíram
o capítulo Documentação de Teste, onde o leitor adquire informações sobre a norma IEEE
829:2008, que trata da documentação que deve ser usada em projetos de teste de software.
Material Complementar
MATERIAL COMPLEMENTAR
Artigo que mostra como o ciclo de vida do teste faz parte do ciclo de vida do software e eles
devem ser iniciados ao mesmo tempo. O processo de design e desenvolvimento de testes pode
ser tão complexo quanto o processo de desenvolvimento do software em si. Se os testes não
forem iniciados juntamente com os primeiros releases executáveis do software, o esforço de teste
retardará a descoberta de muitos problemas no ciclo de desenvolvimento. Boa leitura!
Para ler o artigo na íntegra, acesse o site:
<http://www.wthreex.com/rup/process/workflow/test/co_lifet.htm>.
Material Complementar
REFERÊNCIAS
PROCESSO DE TESTE DE
V
UNIDADE
SOFTWARE
Objetivos de Aprendizagem
■■ Compreender a Documentação de Teste de Software.
■■ Ter uma Visão geral da Validação e Verificação.
■■ Entender as técnicas e os critérios utilizados para validar um software.
■■ Aprender sobre algumas ferramentas utilizadas para a automação de
testes.
■■ Compreendendo as Medidas de melhoria do processo.
■■ Possuir uma Visão geral sobre os riscos em teste de software.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
■■ Documentação de Testes de Software
■■ Relatórios de Teste de Software
■■ Validação e Verificação em Teste de Software
■■ Ferramentas de Teste de Software
■■ Métricas e Medição
■■ Gerência de Risco em Teste de Software
167
INTRODUÇÃO
Introdução
168 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
■■ Relatórios de Teste:
- Relatório de Passagem de Itens de Teste.
- Relatório de Log de Teste.
- Relatório de Incidentes de Teste.
- Relatório de Sumário de Teste.
que trabalham com automação de teste, com certeza, já possuem softwares que
geram automaticamente todos, ou quase todos, os documentos citados.
Figura 1: Relacionamento entre os documentos de teste no processo de teste
Plano de Teste
Especificação de
Caso de Teste
Especificação do
Procedimento de
Teste
Fonte: IEEE 829 (1998).
PLANO DE TESTE
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
as tarefas a serem realizadas e os riscos associados com a atividade de teste, des-
crevendo ainda os diferentes ambientes que serão utilizados durante o teste”.
Executar testes para cobrir todo o sistema e garantir que o mesmo não terá
mais nenhum defeito, é uma atividade custosa e muitas vezes impossível de ser
realizada. Muitas empresas adotam alguns padrões de conteúdo de plano de
teste para auxiliar nessa atividade, como IEEE, QAI e se for tratar o teste como
um projeto, temos o PMBOK. Geralmente, a base de conteúdo do plano de teste
segue o modelo IEEE 829, entretanto, pode variar de empresa para empresa. O
IEEE 829 procurou adotar ou basear o Plano de Teste no padrão PMI.
O Plano de teste possui várias funções, dependendo de sua situação. Vamos lis-
tar as principais:
■■ Suportar o desenvolvimento da qualidade dos produtos, de forma sábia,
sincronizada com as decisões.
■■ Descrever e justificar a estratégia de testes para com os requisitos do pro-
duto a ser testado.
■■ Suportar o início e a organização do projeto de teste, incluindo aí prepara-
ções, pessoal, delegação de responsabilidades, planejamento das tarefas etc.
■■ Suportar o gerenciamento diário e a evolução do projeto de teste e da
estratégia.
Pode-se dizer que um Plano de teste segue algumas etapas durante sua elabo-
ração e utilização:
■■ Definição do escopo: define o que se deve testar em nível macro.
■■ Identificação de requisitos e casos de teste: identificação dos requisi-
tos de teste de forma hierárquica e descritiva, de maneira que possamos
entendê-los. Identificação dos casos de teste que contenham os requeri-
mentos de teste em detalhes, incluindo os passos de execução dos testes.
■■ Identificação das propriedades: o que se deve testar e em qual ordem.
■■ Definição da estratégia: identificação das técnicas de teste que serão uti-
lizadas em quais requisitos.
■■ Identificação de recursos: quem fará o que e o que será utilizado (sof-
tware, hardware etc.).
■■ Criação de Schedule: elaboração de um cronograma de teste.
■■ Geração de documento de Plano de Teste: geração da documentação
formal e revisada, com as devidas análises do planejamento de teste.
■■ Atualização constante do Plano de Teste: aqui o plano de teste será atu-
alizado com resultados finais de cada teste e com os defeitos encontrados.
ITEM DESCRIÇÃO
Identificador do plano de testes Identificador único para o plano.
Objetivos, histórico, escopo, referências
Introdução
a documentos.
Itens a testar Conjunto dos itens cobertos pelo plano.
Aspectos a testar Conteúdo dos testes que serão feitos.
Aspectos significativos que não serão
Aspectos que não serão testados
testados.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Opções metodológicas que são aplicá-
Abordagem
veis ao conjunto dos testes.
Condições que devem ser satisfeitas e
estado que deve ser atingido para que
Critérios de completeza e sucesso
o conjunto dos testes seja considerado
bem sucedido.
Problemas graves que podem provocar
Critérios de suspensão e retomada
a interrupção dos testes.
Artefatos que serão produzidos durante
Resultados do teste
a realização da bateria de testes.
Lista detalhada das tarefas que são
Tarefas de teste
cobertas por este plano.
Hardware e software das configurações
Ambiente
usadas para o conjunto dos testes.
Responsabilidades de cada um dos
Responsabilidades
participantes dos testes.
Data de inicio e de fim de cada tarefa do
Agenda
plano.
Ricos e contingências aplicáveis aos
Riscos e contingências
testes deste plano.
Nomes e assinaturas dos responsáveis
Aprovação
pela aprovação do plano.
Fonte: Norma IEEE Std. 829 (1998).
Segundo Bastos et al. (2007, p. 154), “o caso de teste deve ter as características a
seguir para que possa ser usado e atender às expectativas de validação da qualidade”:
■■ Efetivo: testar o que se planejou testar.
■■ Econômico: sem passos desnecessários.
■■ Reutilizável: que possa ser repetido.
■■ Rastreável: que possa identificar o requisito a ser testado.
■■ Autoexplicativo: que possa ser testado por qualquer testador.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Projeto de Teste
CASOS DE TESTE
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
de caso de teste. Identifica o maior número de cenários e variações de determi-
nado requisito de software. Segundo Bastos et al. (2007, p. 152), “o plano de caso
de teste é o documento que registra todo o planejamento dos testes dos requisitos
estabelecidos durante o ciclo de desenvolvimento do software. Esse documento
determina o que será testado, e seu principal objetivo consiste em identificar o
maior número de cenários e variações de determinado requisito de software”.
Os testadores enfrentam o desafio de testar, tanto quanto possível, dentro
do disponível e geralmente em um curto cronograma, sendo impossível testar
exaustivamente todas as combinações de casos de teste de um sistema.
(quando testar).
■■ Listar as interdependências, caso existam, entre os casos de teste.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Requisitos Configurações
Caso de Teste
Iteração Implementação
PROCEDIMENTO DE TESTE
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
na Unified Modeling Language (UML), é o caso de uso. O caso de teste é o
cenário a ser executado para verificar se o que foi especificado está devida-
mente implementado.
Fonte: Bastos, Rios, Cristalli e Moreira (2007).
Plano de Teste
Relatório
Casos de Procedimentos
encaminhamento
Teste de Teste
item de teste
Execução do Teste
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Diário de Diário de
Teste Teste
Incidente Incidente
de Teste de Teste
Relatório
Resumo de teste
Fonte: Norma IEEE 829, 1998.
Segundo o IEEE 829 esses seriam os Relatórios de Testes necessários para que
o projeto atinja os seus objetivos. Agora vamos conhecer melhor cada relató-
rio. Preparado(s)?
■■ Itens passados: deve ter uma lista com a relação dos itens de teste.
■■ Localização: deve ter a descrição do local onde estão armazenados os
itens de teste e orientações de como acessá-los.
■■ Estado: deve ter uma descrição do estado de cada item de teste que foi
passado.
■■ Aprovações: deve ter um registro dos envolvidos no envio e recebimen-
tos do relatório.
Deve fazer parte desse relatório todos os artefatos recebidos pela equipe de teste
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
para a execução do seu trabalho. Um exemplo pode ser o plano de projeto, a
relação dos casos de uso, a relação dos programas que deverão ser testados etc.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Para Bastos et al. (2007), o relatório de sumário de teste fornece um sumário das
atividades realizadas durante um determinado projeto e mostra resumidamente
as ocorrências durante todas as atividades realizadas. Esse relatório é usado para
fechar o projeto de testes.
O Relatório de Sumário de Teste deve ter o seguinte conteúdo básico:
■■ Identificador do relatório: deve ter um identificador único do relatório.
■■ Sumário: deve ser listado o que foi testado, registrando identificações,
versões, o ambiente usado e os documentos referenciados e usados no
projeto de testes.
■■ Variações: devem ser listados os procedimentos adotados que sejam dife-
rentes do que foi inicialmente planejado, sobretudo, se não constar no
plano de teste.
■■ Avaliações do processo: devem ser relatadas todas as ocorrências que
possa causar impacto na qualidade do software liberado para o cliente.
■■ Sumário dos resultados: devem ser listados todos os parâmetros que
possam quantificar o projeto de testes que está sendo encerrado, por
exemplo: número de casos de teste, número de execuções de cada caso
de teste, número de defeitos encontrados etc.
■■ Avaliação do teste: deve ser avaliado o projeto de teste e procurar identifi-
car, por exemplo, alguns riscos que ainda não foram mitigados e que podem
causar problemas no momento em que o software entre em produção.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
“o teste de software é um elemento de
um tópico mais amplo, muitas vezes
conhecido como verificação e validação
(V&V). Verificação refere-se ao conjunto de
tarefas que garantem que o software imple-
menta corretamente uma função específica.
Validação refere-se a um conjunto de tarefas que asseguram que o software foi
criado e pode ser rastreado segundo os requisitos do cliente”.
Quando se executa os testes de software, um importante objetivo é o de veri-
ficar se o produto desenvolvido satisfaz os requisitos solicitados pelo cliente. Um
software pode conter defeitos, porém, se algum trecho do código nunca for exe-
cutado, ou se o código não for exaustivamente executado, este defeito poderá
não aparecer.
O QUE É VERIFICAÇÃO?
A verificação tem o objetivo de avaliar se o que foi planejado realmente foi rea-
lizado, se os requisitos, funcionalidades documentados foram implementados.
Segundo Bastos et al. (2007, p. 30), “a verificação realiza inspeções e revisões
sobre os produtos gerados pelas diversas etapas do processo de teste”.
O QUE É VALIDAÇÃO?
Conforme Bastos et al. (2007), a primeira pergunta diz respeito ao que foi cons-
truído e a segunda diz respeito ao entendimento do que era para ser construído.
Durante o desenvolvimento do software, podem surgir diversos tipos de
problemas e erros que acabam resultando na obtenção de um produto diferente
daquele que se esperava. Para que tais sejam descobertos antes de o software
ser liberado para utilização, existe as atividades de Validação e Verificação, ou
“V&V”, com a finalidade de garantir que tanto o modo pelo qual o software está
sendo construído quanto o produto em si esteja em conformidade com o espe-
cificado nos requisitos.
Para Bastos et al. (2007), as atividades de V&V não se aplicam apenas ao
produto final, mas devem ser conduzidas durante todo o processo de desenvol-
vimento do software, desde a sua concepção, desenvolvimento e sua entrega,
pois englobam diferentes técnicas.
Alguns autores costumam dividir as atividades de V&V em estáticas e dinâmi-
cas. As estáticas são aquelas que não requerem a execução ou mesmo a existência
de um programa ou modelo executável para serem conduzidas. As dinâmicas
são aquelas que se baseiam na execução de um programa ou de um modelo.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
percebendo a importância em produzir software com qualidade. Como já vimos
anteriormente, o teste de software é um dos elementos importantes na garantia
da qualidade de software.
Existe a Norma IEEE 1012 - Software Verification and Validation, que trata
da padronização dos processos de verificação e validação de Software (Standard
for Software Verification and Validation). Ela é aplicada durante o ciclo de vida
de desenvolvimento do software, onde inclui o processo de aquisição, desenvol-
vimento, operação e manutenção de sistemas (Institute of Eletrical and Eletronics
Engineers).
Na Norma IEEE 1012, está descrito que o objetivo dela é estabelecer proce-
dimentos de verificação e validação, incluindo atividades e tarefas de apoio ao
processo de ciclo de vida do software, garantindo que os requisitos do sistema
estejam corretos, completos, consistentes e testados, e com isso, diminuindo os
riscos operacionais do projeto, pois é verificado se os produtos de desenvolvi-
dos em determinada atividade estão de acordo com as exigências dessa fase, e
se o software satisfaz às necessidades do usuário.
necessários.
A Norma IEEE 2012 também solicita que alguns itens básicos sejam definidos
em cada fase do projeto, tais como:
■■ Atividades de Verificação e Validação.
■■ Critérios e métodos.
■■ Entradas e Saídas.
■■ Cronograma.
■■ Recursos.
■■ Riscos.
■■ Regras e Responsabilidades.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
entre a equipe. Mas por que automatizar? Para responder esta pergunta, vamos
conhecer os objetivos da automação de testes:
■■ Aumenta a consistência e abrangência dos testes.
■■ Reduz o tempo ou esforço de teste.
■■ Diminui o custo dos testes.
■■ Aumenta a produtividade do desenvolvimento de software como um todo.
■■ Aumenta a qualidade do produto final.
Temos várias razões para usar a automação de testes. Mas o que devemos auto-
matizar no projeto de teste? Quais testes são interessantes serem automatizados?
Vamos listar o que devemos automatizar:
■■ Testes de regressão.
■■ Smoke tests (teste de fumaça).
■■ Tarefas repetitivas e que demandam muito esforço.
■■ Cálculos matemáticos.
■■ Funcionalidades críticas.
Entretanto, nem todos os testes devem ser automatizados. Mas a automação dos
testes faz com que a equipe de testes seja liberada para a realização de testes mais
complexos que exigem um ser humano ou testes mais específicos, como os de
segurança, usabilidade, entre outros. Temos que alertar que a automação de testes
exige que o ambiente de testes esteja com os dados rigorosamente controlados.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
limitada a programas muito simples. Tal aspecto motiva o desenvolvimento de
ferramentas automáticas para auxiliar na condução de testes efetivos e na aná-
lise dos resultados obtidos por estes testes.
Apesar de não auxiliarem diretamente na determinação das entradas de um
programa, necessárias para a execução de caminhos específicos, grande parte
das ferramentas de teste apresenta ao usuário os requisitos de teste exigidos para
que os critérios sejam satisfeitos. Assim, de certa maneira, orientam e auxiliam
o usuário na elaboração dos casos de teste.
Abaixo, segue uma lista com algumas das ferramentas para testes de sof-
tware mais utilizadas:
■■ JUnit: é um framework altamente eficaz e largamente utilizado na cria-
ção e execução de testes unitários de códigos.
■■ Selenium: ferramenta usada para a realização de testes integrados e de
aceitação.
■■ JMeter: ferramenta com o propósito principal para testes de carga e stress
de aplicações e pode ser usado para testes integrados e de aceitação.
■■ Clover: ferramenta para análise de cobertura dos testes existem na
aplicação, integrado a várias IDEs – Eclipse. Existem diversas opções
semelhantes: JCoverage, Cobertura etc.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
teste de software. Antes de introduzir a ferramenta, em um determina-
do momento você registra o número de defeitos de software descober-
to. Essa é uma baseline de avaliação da eficácia da ferramenta. Depois
de algum tempo usando a ferramenta, esse processo é repetido. Se mais
defeitos foram encontrados durante o mesmo período, depois que a
ferramenta foi introduzida, você poderá decidir se ela fornece suporte
útil para o processo de validação de software.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
MÉTRICAS E MEDIÇÃO
Mas qual a diferença entre uma medida e uma métrica? E os indicadores? São
termos que são usados com frequência e que em algum momento você já ouviu
falar. Vamos apenas nos ater ao contexto de engenharia de software. Segundo
Pressman (2011, p. 539):
■■ Medida: indicação quantitativa da extensão, quantidade, capacidade ou
tamanho de algum atributo de um produto ou processo.
■■ Medição: é o ato de determinar uma medida. O IEEE define métrica como
“uma medida quantitativa do grau com o qual um sistema, componente
ou processo possui determinado atributo”.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Métricas e Medição
196 UNIDADE V
Conforme Trodo (2009), “o enfoque das métricas de teste de software são a pro-
dutividade e qualidade. Quando medimos um processo, estamos avaliando a
produtividade, e quando estamos medindo um produto, a qualidade é que está
sendo avaliada”.
A respeito das métricas de teste, o referido autor pontua que:
As métricas de teste são um padrão de medidas muito útil para a veri-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
ficação da efetividade e da eficiência de diversas atividades do desen-
volvimento de software. Também são usadas para prover informações
como estimativas do esforço necessário para o teste. É importante que
elas sejam capturadas e utilizadas corretamente para que possam auxi-
liar na melhoria do processo de desenvolvimento do software através
de informações objetivas e pragmáticas para iniciativas de mudanças
do processo (TRODO, 2009, p. 15).
Conforme Trodo (2009) alguns objetivos nos guiam para usamos as métri-
cas de teste:
■■ Analisar os defeitos.
■■ Analisar a eficácia e a eficiência dos testes e do processo como um todo.
■■ Avaliar a produtividade do processo.
■■ Analisar o retorno de investimento.
■■ Determinar o esforço para automação dos testes.
■■ Calcular o tempo e os recursos para automação dos testes.
■■ Avaliar o andamento dos testes.
■■ Planejar os recursos, prazos e benefícios do processo de testes.
■■ Identificas áreas que necessitam de melhorias.
■■ Melhorar a exatidão das estimativas.
■■ Formar uma baseline para as estimativas.
■■ Auxiliar no gerenciamento do projeto e da execução dos testes.
■■ Auxiliar nos contratos de software.
■■ Auxiliar no relacionamento com os clientes.
■■ Auxiliar na melhoria do processo de desenvolvimento do software.
■■ Avaliar os benefícios de novos métodos e ferramentas.
Métricas e Medição
198 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
■■ Indicar a qualidade de forma geral.
Segue uma lista de perguntas que podem ser feitas e respondidas quando se usa
métricas de software:
■■ Quando parar de testar?
■■ Quanto tempo falta para terminar o ciclo de testes?
■■ Quanto já foi testado?
■■ Os testes serão concluídos dentro do prazo previsto?
■■ Quanto teste ainda tem que ser feito em determinada área?
■■ Já foi testado o suficiente?
■■ Qual o custo dos testes?
■■ Qual o custo para corrigir os defeitos?
■■ Quantos defeitos podem esperar?
■■ Quais os tipos de defeitos encontrados?
■■ Quantos defeitos já foram corrigidos?
■■ Quais as áreas do software que têm mais ou menos defeitos?
■■ Quão estável é a funcionalidade que está sendo testada?
■■ Qual a técnica de teste que é mais efetiva?
Para Trodo (2009), é difícil para a equipe de testes responder a todas as pergun-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
tas. Conforme o autor cita, por exemplo, para a pergunta “Quanto já foi testado?”,
o uso da métrica da cobertura dos testes, que é o percentual dos testes que já
foram concluídos, para respondê-la. Se os testadores não têm as estimativas não
conseguem responder as perguntas, pois não sabem exatamente o quanto ainda
precisam testar e assim achar que testaram o suficiente.
Como muitos fatores afetam o trabalho de software, não use métricas para
comparar indivíduos ou equipes.
(Pressman).
Métricas e Medição
200 UNIDADE V
■■ Número de ocorrências.
■■ Status das ocorrências.
■■ Índice de Densidade de defeitos.
■■ Índice de Severidade de defeitos.
■■ Tempo para arrumar um defeito.
■■ Tempo médio para encontrar um defeito.
■■ Qualidade de falhas encontradas no produto.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
■■ Tipos de defeitos encontrados.
■■ Cobertura dos testes.
■■ Efetividade de Caso de teste.
■■ Defeitos por quantidade de linhas de código (Kloc).
■■ Situação ou Tendência dos defeitos em função do tempo.
■■ Providências adotadas em relação aos defeitos.
■■ Defeitos por módulo.
■■ Defeitos por tecnologia utilizada.
Métricas de Processo: servem para auxiliar no controle da qualidade do pro-
cesso de testes. Segue alguns exemplos de métricas de processo:
■■ Número de Casos de teste.
■■ Taxa de falhas na primeira execução dos Casos de Teste.
■■ Custo dos testes.
■■ Curva S.
■■ Curva Zero Bug Bounce.
■■ Relação entre defeitos e ocorrências.
■■ Ocorrências pendentes de correção.
■■ Probabilidade de defeitos.
■■ Mudanças no escopo.
■■ Densidade de defeitos por Unidade.
■■ Fator de segurança.
■■ Tempo necessário para executar um teste.
■■ Tempo disponível para o esforço de teste.
■■ Taxa de esforço de teste.
■■ Categoria de defeitos.
Conforme Trodo (2009, p. 81), “as métricas de teste de software são bastante úteis
ao processo de teste, porém, é importante observar algumas dificultadas rela-
cionadas ao assunto. As questões tratadas variam de problemas gerenciais e de
relacionamento a observações específicas sobre como o uso isolado das métri-
cas pode fornecer informações equivocadas”.
Métricas e Medição
202 UNIDADE V
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
para que sejam consideradas como ferramentas confiáveis para medir a
qualidade da aplicação.
■■ As tendências de algumas métricas de teste podem ser analisadas por
diversos ciclos de teste, enquanto outras são relativas a um ciclo de teste
específico.
O que achou das métricas de teste? Difícil? O que envolve a qualidade pode ser
considerado um conceito complexo, porque pode significar diferentes situações
para diferentes pessoas. Assim, como temos diferentes empresas com diferentes
projetos, não há uma simples medida para qualidade de software que seja acei-
tável para todos. Mas sempre devemos pensar que para melhorar a qualidade de
software, devemos definir quais aspectos de qualidade que interessa a empresa
para depois decidir quais serão usados e, depois, como medi-los.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
©shutterstock
Bastos et al. (2007, pg. 89) define que “a análise de riscos em projetos de teste
de software, embora tenha suas características próprias, deve seguir as mesmas
regras e metodologias aplicadas a projetos de software em geral”. A atividade
de teste é bastante cara. Podendo custar até 45% do valor inicial do projeto. A
grande competitividade, o surgimento de softwares cada vez mais complexos e
a necessidade de qualidade relacionada à satisfação do cliente, justificam este
investimento.
A análise de risco, segundo Bastos et al. (2007) é tratada no escopo de projeto
pelo PMI e de processo pelo modelo CMMI e, em cada uma dessas abordagens,
o projeto ou processo de Teste de Software pode perfeitamente ser enquadrado.
Quando avaliamos os riscos de um projeto, conforme Bastos et al. (2007),
estamos buscando aqueles fatos que poderão acarretar em perdas para a empresa.
Não podemos sempre aliar um risco a uma perda. Um risco pode estar sempre
presente, mas nem sempre ele gera uma perda. Existem riscos que sempre se
transformam em perdas. Para Bastos et al. (2007) um avião sempre corre risco
de cair, mas a perda só existirá se isso ocorrer. Resumindo, podemos dizer que
o risco é uma probabilidade de ocorrência de uma perda para a empresa.
Conforme Bastos et al. (2007) exemplifica, hoje, qualquer empresa corre risco,
se em algum momento seus computadores pararem de funcionar. Um site fora
do ar pode trazer muitos prejuízos para uma empresa. O risco para uma empresa
está relacionado ao grau de dependência em relação ao seu equipamento. Agora,
imagine, a ocorrência de erros de software e os prejuízos a uma empresa caso o
seu software seja interrompido? Se por ventura o sistema de faturamento sofra
algum defeito e ele seja interrompido e a empresa deixe de receber o dinheiro?
Segundo Bastos (2007), devido a estes problemas, gerentes de TI passaram a
investir para evitar riscos de defeitos em seus softwares, criando planos de con-
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
CONCEITUANDO RISCO
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
suas vulnerabilidades.
Ameaça: capacidade de alguém explorar a vulnerabilidade de um sistema.
Vulnerabilidade: é uma falha de projeto, implementação ou programação.
Controle: maneira de reduzir as causas de riscos, evitando a sua ocorrência
ou reduzindo a sua frequência.
Então, podemos disser que os riscos podem causar grandes danos às empre-
sas, se caso vir a acontecer uma ameaça de ocorrência. Seguindo informações de
Bastos et al. (2007), o risco é uma materialização de uma ameaça e com a aná-
lise de riscos podemos identifica-los e com isso medir seu nível de severidade.
Podemos dividir os riscos presentes na área de tecnologia, ligados ao uso
de computadores em: riscos por ameaça física ou riscos decorrentes da ação
de pessoas. No caso de riscos por ameaça física, temos terremotos, incêndios,
enchentes etc. No caso de riscos decorrentes da ação de pessoas, temos: erros de
documentos preenchidos errados, erros durante a operação do sistema, erros de
alimentação de dados, entre outros.
A atividade de testar o software está bastante ligada ao risco. Teste custa dinheiro,
e quanto maior for a cobertura dos testes, tanto mais terá que ser investido para
que haja a garantia de que nenhum defeito irá ocorrer quando o software estiver
em produção. As empresas concordarão em investir em teste, caso a ocorrência
de um defeito seja um risco para o negócio.
Conforme Bastos et al. (2007), os testes exaustivos visam garantir que nenhum
defeito irá ocorrer quando o software for entregue, certamente não será execu-
tado pela maioria das empresas. Geralmente, as equipes de teste das empresas
procuram um nível de cobertura que minimizem a possibilidade de defeitos gra-
ves, pois existem prazos a serem cumpridos. E o que os testadores podem fazer
para minimizar esses defeitos? Os testadores podem procurar cobrir as partes
mais importantes do software, em que estão os maiores riscos para os negócios.
O risco é um dos elementos mais importantes para ser considerado na elabora-
ção do projeto de testes, por isso, precisa ser analisado e incluído no plano de
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Os riscos podem estar associados, por exemplo, ao uso de uma nova tecnologia
ainda não perfeitamente dominada pela equipe de desenvolvimento, ou pelas
prioridades estabelecidas para algumas funcionalidades do negócio.
Mas como saber qual o número de testes a ser executado para minimizar
os defeitos ou a probabilidade para que não ocorrerem? Segundo Bastos et al.
(2007), o total de testes a ser executado está diretamente relacionado ao total
de riscos envolvidos. Uma análise de riscos bem feita, com uma adequação dos
recursos disponíveis pela equipe, ajuda a estabelecer quais as prioridades do que
será testado. Na tabela 2, podemos analisar que a maior prioridade de teste é
dada a funcionalidade em que o impacto causado pelo defeito e a probabilidade
de ocorrência de um risco são grandes (AA).
Bastos et al. (2007, p. 94) pontua que “os riscos mudam no decorrer do tempo
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
– o que era um risco alto em um determinado momento pode deixar de ser no
momento seguinte, e o que é risco em um determinado ambiente pode deixar
de ser um risco em outro”.
“Quanto mais você sabe, melhor você estima. Portanto, atualize suas esti-
mativas à medida que o projeto avança.”
(Pressman).
ração dos sistemas trouxe um novo elemento de risco para as empresa e com isso
a equipe de testes deve dominar o uso de novas tecnologias.
Segundo Bastos (2007, p. 96), “o problema muitas vezes consiste em determinar como
classificar o risco e qual o custo de criação de um controle que evite a ocorrência
desse risco”. A relação custo-benefício precisa ser avaliada antes de tomar qualquer
decisão, porque o custo do controle do risco pode ser maior do que o risco mesmo.
O QAI – Quality Assurance Institute estabelece que um risco pode ser deter-
minado das seguintes formas:
Intuição ou julgamento: um técnico qualificado e experiente da área de teste
usa a sua intuição, aliado a sua experiência, para dizer que a ocorrência de um risco
pode custar mais caro do que os controles necessários para que ele não ocorra.
Consenso: consenso na equipe de que aquele risco tem um grau alto de seve-
ridade, nesses casos, não há necessidade de medir-se financeiramente o custo do
risco, pois há consenso que a sua ocorrência causará um prejuízo muito grande, e
o bom senso indica a criação de algum tipo de controle que evite a sua ocorrência.
Fórmula de Risco: magnitude do risco é calculada por meio de uma fórmula.
Existem dados financeiros que permitem medir o custo da perda pela ocorrên-
cia do risco. Medindo-se cada custo pelo número de ocorrências, por exemplo,
por ano, temos uma estimativa de perdas. Nesse caso, podemos ter resultados
bastante precisos sobre as perdas.
Bastos et al. (2007) afirma que devemos tomar cuidado especial quando se clas-
sificam os riscos do projeto de testes e os riscos da ocorrência de defeitos. Para
os autores, um projeto de testes, como todo projeto, está envolto em uma lista de
possibilidade de riscos, que podem, por sua vez, fazer com que o software seja
mal testado e com isso, pode ocasionar a ocorrência de defeitos.
Como podemos minimizar a ocorrência de defeitos no software? Para mini-
mizar a ocorrência de defeitos nos softwares, é utilizado uma norma de qualidade,
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
como a Norma ISO/IEC 9126-1. A Norma ISO/IEC 9126-1 estabelece caracte-
rísticas de qualidade que todo software deve ter. Na tabela 3 apresentamos uma
lista de algumas características:
Tabela 3: Algumas características de qualidade dos softwares – ISO/IEC – 9126-1
CARACTERÍSTICA DESCRIÇÃO
Capacidade do software de fornecer funcionalidades que
Funcionalidade atendam à necessidade definida quando usado sob determi-
nadas condições preestabelecidas.
Capacidade do software de manter um nível específico de
Confiabilidade desempenho quando usado sob determinadas condições
preestabelecidas.
Capacidade do software de ser entendido, aprendido, usado
Usabilidade e atrativo quando empregado sob determinadas condições
específicas.
Capacidade do software de manter o desempenho, em rela-
Eficiência ção aos recursos disponíveis, quando usado sob determina-
das condições específicas.
Manutenibilidade Capacidade do software de ser mantido.
Capacidade do software de ser transferido de um ambiente
Portabilidade
para outro.
Fonte: Bastos et al. (2007).
Para garantir que o software não perca nenhuma das características de quali-
dade estabelecidas pela norma, Bastos et al. (2007) sugere que seja necessário
fazer uma associação entre os tipos de teste e as características de qualidade que
se quer alcançar ou cumprir. Lembra dos tipos de testes que vimos na unidade
IV? Vamos recordar, associando-os com as características de qualidade que pos-
sam ser atendidas.
A resposta para esta pergunta vai depender de cada projeto. Mas podem ter
diversos motivos para definir em um projeto, quando os testes devem parar, por
exemplo: prazo, orçamento e riscos. Conforme Pressman (2011) os testes trazem
informações suficientes para a tomada de decisão pelos engenheiros do projeto
e com isso o grau de maturidade e qualidade do software que está sendo desen-
volvido. Mas o bom é saber que sempre temos uma versão beta.
Reprodução proibida. Art. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
Está comprovado que quanto mais cedo for detectado e corrigido um defei-
to, menor será o impacto e a propagação nas demais fases do ciclo de vida.
Desta forma, devemos procurar identificar os defeitos o mais breve dentro
do processo de desenvolvimento, ou seja, já a partir da identificação dos re-
quisitos do sistema. O pior resultado obtido por um sistema de informação é
quando seus requisitos não correspondem àqueles esperados por seus usu-
ários. Se a análise de requisitos for “pobre”, todo o restante do processo esta-
rá comprometido e o risco de insucesso do projeto será bastante alto. Para
auxiliar na identificação de defeitos durante a etapa de análise de requisitos
podemos recorrer às inspeções. Inspeções são uma das poucas técnicas de
revisão disponíveis para aplicação em artefatos de software que não o códi-
go-fonte, podendo ser aplicadas a qualquer tipo de documento escrito, se-
jam eles especificações de requisitos, documentos ou modelos de projeto.
Fonte: Costa Júnior e Melo (2003).
CONSIDERAÇÕES FINAIS
informações que serão empregadas durante os testes dos cenários e quais serão
os resultados esperados. Aprendemos sobre os Relatórios de Testes do Software
que são usados para registrar os dados relativos à execução de um dos tipos de
teste. Cada novo relatório deve ser adicionado sequencialmente aos Relatórios
dos Testes do Software.
Ao longo desta unidade, aprendemos também sobre verificação e validação,
e suas diferenças. Vimos que a verificação refere-se ao conjunto de tarefas que
garantem que o software implemente corretamente uma função específica e a
validação, que refere-se a um conjunto de tarefas que asseguram que o software
foi criado e pode ser rastreado segundo os requisitos do cliente
Outro tópico importante que aprendemos, foram sobre as ferramentas de
teste, que são o apoio dos profissionais da área de teste, pois cobrem grande
parte das atividades de teste e são aplicáveis em todas as fases do ciclo de vida
do desenvolvimento do software.
Além disso, aprendemos sobre as métricas e medições. A métrica propor-
ciona uma base por meio da qual a análise, projeto, codificação e teste podem
ser conduzidos mais objetivamente e avaliados de maneira mais quantitativa.
E chegando ao final da unidade, aprendemos sobre a gerência de riscos, em
que vimos como a análise de riscos em projetos de teste de software, embora
tenha suas características próprias, deve seguir as mesmas regras e metodolo-
gias aplicadas aos projetos de software.
Considerações Finais
214
1. Conforme vimos, os documentos que são definidos pela norma cobrem tarefas
de planejamento, especificação ou elaboração e análise dos resultados. A norma
ou padrão IEEE 829 (Institute of Electrical Engineers) especifica que devem ser
usados quais documentos?
2. O Plano de teste possui várias funções, dependendo de sua situação. Quais são
as principais funções de um Plano de Teste:
I. Suportar o desenvolvimento da qualidade dos produtos, de forma sábia, sin-
cronizada com as decisões e não ter as informações históricas do projeto, de
forma a suportar auditoria e melhorias para futuros projetos.
II. Descrever e justificar a estratégia de testes para com os requisitos do produto
a ser testado.
III. Suportar o início e a organização do projeto de teste, incluindo aí preparações,
pessoal, delegação de responsabilidades, planejamento das tarefas etc.
IV. Suportar o gerenciamento diário e a revolução do projeto de implementação
e da estratégia.
V. Suportar a efetiva coordenação, colaboração e outros relacionamentos entre
os membros da equipe e o resto do projeto. Identificar e gerenciais quaisquer
riscos ou questões que possam impactar no projeto.
Assinale a opção com a sequência CORRETA.
a. Somente a questão II, III e V está correta.
b. Somente as questões I e II estão corretas.
c. Somente a questão II está correta.
d. Todas estão corretas.
215
As perguntas importantes são: qual o risco contido no plano? Qual o risco contido no
trabalho ainda restante? A incerteza é inerente a todas as suposições do projeto. [...]
A probabilidade de ocorrência do risco é um dos fatores para a determinação de sua
prioridade. Um dos conceitos fundamentais do Gerenciamento de Riscos é a perda. É
preciso que haja um potencial de perda para que haja risco.
Um Processo para Gerenciamento de Riscos
O risco nos projetos de software pode ser gerenciado através das seguintes atividades:
identificação dos riscos, análise dos riscos, planejamento dos riscos, acompanhamento
dos riscos e resolução dos riscos. O processo começa com a identificação dos riscos. Tudo
o que se referir a incerteza, experiências anteriores, preocupações e questões a resolver
pode ser útil na identificação dos riscos. Várias fontes podem ser utilizadas nesta fase: pes-
soas incluem clientes, integrantes da equipe, organizações envolvidas, disponibilidade,
capacidade, experiência etc.; produto e processo abrangem requisitos, prazos, estimati-
vas, receitas, despesas, orçamento, restrições de natureza legal, estilo de gerenciamento,
tamanho e escopo do projeto etc.; tecnologia inclui mudanças, inovação, adoção e uso,
integração e interfaces, experiência específica, segurança, arquitetura, escalabilidade etc.
[...] Em seguida, deve-se calcular a exposição referente a cada risco, definida como o
produto da probabilidade de ocorrência do risco pelo respectivo impacto. A exposição
é utilizada na priorização dos riscos. O planejamento dos riscos inclui a definição de ce-
nários para os riscos mais importantes, a definição de alternativas de solução para esses
cenários, a escolha das alternativas mais adequadas, o desenvolvimento de um Plano
de Ação de Riscos, assim como o estabelecimento de limiares ou disparadores para a
ação. O acompanhamento dos riscos envolve a monitoração dos cenários de riscos, a
verificação de que os limiares foram ou não atingidos, bem como a análise das medidas
e indicadores referentes aos riscos [...]
Gerenciamento de Riscos e o PMBOK
O Project Management Institute (PMI) define um processo genérico para o Gerenciamen-
to de Riscos, ligeiramente diferente do exposto acima. Segundo o Project Management
Body of Knowledge – PMBOK, o Gerenciamento de Riscos é o processo sistemático de
identificação, análise e resposta aos riscos dos projetos. Inclui maximizar a probabilida-
de e as consequências dos eventos positivos, bem como minimizar a probabilidade e
consequência dos eventos negativos, em relação aos objetivos do projeto.
Ferramenta para Gerenciamento de Riscos
Um ferramenta gratuita para o Gerenciamento de Riscos em geral (não apenas de sof-
tware) é o software TRIMS, desenvolvido pelo BMP Center of Excellence, uma organização
patrocinada pela Marinha e pelo Departamento do Comércio Norte-Americanos, bem
como pela Universidade de Maryland. O software contém o questionário para avaliação
de riscos do Software Engineering Institute, para utilização em projetos de software.
Fonte: Aguiar (online, 2016).
MATERIAL COMPLEMENTAR
Apresentação: Padrão para Documentação de Teste de Software. Veja neste artigo uma
apresentação do Padrão para Documentação de Teste de Software (IEE 829 - Standard
for Software Test Documentation). O padrão apresentado nesse artigo é o IEEE 829,
está relacionado com o processo de testes, etapa do processo de desenvolvimento de
software de suma importância para garantia e controle da qualidade. Sua abrangência
vai desde testes unitários até testes de aceitação e tem por objetivo definir
documentos consistentes e adequados capazes de definir, registrar e prover condições
de análise dos resultados obtidos ao longo do processo.
Para consultá-lo, acesse o link <http://www.devmedia.com.br/padrao-para-
documentacao-de-teste-de->software/26534>.
Material Complementar
MATERIAL COMPLEMENTAR
1. Os documentos são:
• Plano de Teste.
• Especificação de Projeto de Teste.
• Projeto de teste.
• Casos de teste.
• Procedimentos de teste.
• Relatórios de Teste.
• Relatório de Passagem de Itens de Teste.
• Relatório de Log de Teste.
• Relatório de Incidentes de Teste.
• Relatório de Sumário de Teste.
2. A - Somente as questões II, III e V estão corretas.
3. C - Garantir que tanto o modo pelo qual o software está sendo construído quan-
to o produto em si esteja em conformidade com o especificado.
4. B - A prevenção de defeitos.
5. A Gerência de riscos é muito importante em projetos de testes, pois a equipe
de teste sempre estará focada em atacar os riscos maiores, ou seja, defeitos gra-
ves, que podem gerar uma maior implicação no processo, pois sabemos que os
prazos são apertados e não existe um tempo para gastar na atividade de teste.
Assim, no Plano de Teste esses riscos serão os de maior prioridade.