Você está na página 1de 51

Manuel Menezes de Sequeira

DCTI, ISCTE-IUL
Manuel.Sequeira@iscte.pt, D6.02
As apresentaes desta srie baseiam-se nas apresentaes disponibilizadas por Ian Sommerville, tendo
sido alteradas e adaptadas primeiro por Anders Lyhne Christensen e finalmente por Manuel Menezes de
Sequeira.

ENGENHARIA DO
SOFTWARE I

Na aula anterior

Desenho de interfaces com o utilizador


Problemas de desenho
Heursticas de Nielsen para interfaces com o

utilizador
Estilos de interaco
Processo de desenho de interfaces com o
utilizador
Anlise dos utilizadores
Prototipagem de interfaces com o utilizador
Avaliao de interfaces
2009/2010

Engenharia do Software I

Verificao e
validao

2009/2010

Engenharia do Software I

Sumrio

Verificao e validao
Planeamento da verificao e validao
Inspeces de software
Anlise esttica automtica
Desenvolvimento de software em sala limpa

2009/2010

Engenharia do Software I

Objectivos

Apresentar verificao e validao de software e


sua distino

Descrever processo de inspeco de software e


seu papel na verificao e validao

Explicar anlise esttica como tcnica de


verificao

Descrever processo de desenvolvimento de


software em sala limpa

2009/2010

Engenharia do Software I

Verificao vs. validao


Verificao Estamos a construir
certo o produto?

Software tem de cumprir


especificao.

Validao

Software tem de fazer o que


utilizador quer.

2009/2010

Estamos a construir
o produto certo?

Engenharia do Software I

Processo de verificao e
validao

Processo de ciclo de vida completo:


aplicado em cada etapa do processo de
software

Principais objectivos
Descobrir defeitos no sistema
Aferir se o sistema til e usvel em

operao

2009/2010

Engenharia do Software I

Objectivos da verificao e
validao

Criar confiana de que software


adequado ao seu propsito

No significa que seja completamente


livre de defeitos
Tem de ser suficientemente bom para a

utilizao pretendida
Tipo de utilizao determina grau de
confiana necessrio
2009/2010

Engenharia do Software I

Confiana

Depende de
Propsito do sistema
Expectativas do utilizador
Ambiente de marketing

2009/2010

Engenharia do Software I

Confiana
Funo do software

Nvel de confiana depende de quo


crtico o software para organizao.

Expectativas do utilizador Utilizadores podem ter expectativas


baixas relativamente a certos tipos de
software.
Ambiente de marketing

2009/2010

Lanar produto rapidamente no mercado


pode ser mais importante que encontrar
defeitos no programa.

Engenharia do Software I

10

Verificaes esttica e dinmica


Verificao esttica
Inspeco
Analisar representao
de software esttica do sistema para
descobrir problemas.
Teste de
software

Pode ser complementada por


anlise de documentao e
de cdigo baseada em
ferramentas.

Exercitar sistema e
Sistema executado com
observar comportamento dados de teste e
do produto.
comportamento operacional
observado.
Verificao dinmica

2009/2010

Engenharia do Software I

11

Verificao e validao estticas


e dinmicas
Inspeces
de software

Especificao
de requisitos

Desenho de
alto nvel

Especificao
formal

Programa

Teste de
software

Prottipo

2009/2010

Desenho
pormenorizado

Engenharia do Software I

12

Teste de software

Pode revelar erros

No demonstra ausncia de erros

nica tcnica de validao para requisitos no


funcionais: software tem de ser executado para
observar como se comporta

Usado em conjunto com verificao esttica para


cobrir completamente verificao e validao

2009/2010

Engenharia do Software I

13

Tipos de testes

Testes de defeitos

Captulo 23

Descobrem defeitos do sistema


Teste com sucesso revela presena de

defeito

Testes de validao
Mostram que software cumpre requisitos
Teste com sucesso mostrar que requisito foi

devidamente implementado

2009/2010

Engenharia do Software I

14

Teste e depurao

So processos distintos
Verificao e validao estabelecem

existncia de defeitos em programa


Depurao localiza e corrige erros

Depurar envolve formular hipteses


sobre comportamento do programa e
test-las para encontrar erro no sistema

2009/2010

Engenharia do Software I

15

Processo de depurao
Resultados
do teste

Especificao

Localizar
erro

Desenhar
correco do erro

2009/2010

Casos
de teste

Corrigir
erro

Engenharia do Software I

Testar programa
de novo

16

Planeamento da verificao e
validao

Planear cuidadosamente para obter mximo


resultado de processos de teste e inspeco

Planear logo no incio do processo de


desenvolvimento

Identificar equilbrio entre verificao esttica e teste

Definer normas para processo de teste

No descrever testes de produto

2009/2010

Engenharia do Software I

17

Modelo em V
Especificao
de requisitos

Servio

Especificao
de sistema
Desenho
de sistema
Desenho de
pormenor

Plano de testes
de aceitao
Plano de testes
de integrao
de sistemas
Plano de testes
de integrao
de subsistemas

Testes de
aceitao
Testes de integrao
de sistema
Testes de integrao
de subsistemas

Codificao e teste de
mdulos e unidades
2009/2010

Engenharia do Software I

18

Estrutura de um plano de teste


de software

Processo de teste
Rastreabilidade de requisitos
Itens testados
Calendrio de testes
Procedimento de registo de testes
Requisitos de hardware e software
Restries

2009/2010

Engenharia do Software I

19

Plano de teste de
software
Processo de
teste

Descrever principais fases do processo.

Rastreabilidade Utilizadores interessados sobretudo em


de requisitos
cumprimento: prever teste individual de requisitos.
Itens testados

Especificar produtos do processo de software a


testar.

Calendrio de
testes

Calendarizar testes e afectao de recursos. Ligar a


calendrio geral de desenvolvimento do projecto.

Procedimento
de registo de
testes

Executar testes no chega: resultados de testes


sistematicamente registados. Possvel auditar
processo de teste e verificar sua correcta execuo.

Requisitos de
hardware e
software

Indicar ferramentas de software necessrias e


utilizao do hardware estimada .

Restries

Restries que afectam processo (falta de pessoal).

2009/2010

Engenharia do Software I

20

Inspeces de software

Exame de representaes fonte para descobrir anomalias e


defeitos

No requerem execuo do sistema: podem ocorrer antes da


implementao

Aplicadas a qualquer representao do sistema


Requisitos
Desenho
Dados de configurao
Dados de teste
Etc.

Eficazes a descobrir erros em programas

2009/2010

Engenharia do Software I

21

Sucesso da inspeco

Muitos diferentes defeitos podem ser


descobertos numa nica inspeco

Como um defeito pode esconder outro,


necessrias vrias execues

Como conhecimento do domnio e de


programao reutilizado, revisores podem
j ter visto tipos de erro mais comuns

2009/2010

Engenharia do Software I

22

Inspeces e testes

Tcnicas de verificao complementares

Ambas usadas durante processo de verificao


e validao

Inspeces
Podem verificar cumprimento de especificao
No podem verificar cumprimento dos requisitos reais

do cliente
No podem verificar caractersticas no funcionais
como desempenho ou usabilidade
2009/2010

Engenharia do Software I

23

Inspeces de programa

Abordagem formalizada a revises documentais

Destinadas explicitamente a detectar defeitos (e


no a corrigi-los)

Defeitos
Erros lgicos
Anomalias no cdigo que podem indicar uma

condio errnea (e.g., varivel no inicializada)


Violao de normas

2009/2010

Engenharia do Software I

24

Pr-condies da
inspeco

Disponibilidade de especificao precisa

Membros da equipa familiarizados com


normas organizacionais

Disponibilidade de cdigo ou outras


representaes do sistema
sintacticamente correctas

2009/2010

Engenharia do Software I

25

Pr-condies da
inspeco

Lista de verificao de erros preparada

Gesto mentalizada para aumento inicial


dos custos devido inspeco

Gesto mentalizada para no usar


inspeces para avaliao de pessoal
(i.e., para no procurar os responsveis
pelos erros)

2009/2010

Engenharia do Software I

26

Processo de inspeco
Planeamento
Viso
global
Preparao
individual
Reunio de
inspeco
Retrabalho
Seguimento

2009/2010

Engenharia do Software I

27

Procedimento de
inspeco

Apresentar viso geral do sistema equipa de


inspeco

Distribuir com tempo cdigo e documentos


associados

Inspeccionar anotando erros descobertos

Corrigir erros descobertos

Reinspeccionar se necessrio

2009/2010

Engenharia do Software I

28

Papis na inspeco
Autor ou
proprietrio

Programador ou designer responsvel pela produo


do programa ou documento. Responsvel por corrigir
defeitos descobertos no processo de inspeco.

Inspector

Procura erros, omisses e inconsistncias em


programas e documentos. Pode identificar questes
mais genricas fora do escopo da equipa.

Leitor

Apresenta o cdigo ou documento durante a reunio.

Secretrio

Regista os resultados da reunio.

Presidente ou
moderador

Gere o processo e facilita a inspeco. Reporta


resultados do processo ao moderador chefe.

Moderador
chefe

Responsvel pela melhoria do processo de inspeco,


pela actualizao das listas de verificao, pelo
desenvolvimento de normas, etc.

2009/2010

Engenharia do Software I

29

Listas de verificao da
inspeco

Devem usar-se para guiar inspeco

Dependem da linguagem de programao e reflectem


seus erros tpicos

Verificao de tipos fraca implica lista maior

Exemplos
Inicializao
Nomes de variveis e constantes
Terminao de ciclos
Limites de matrizes

2009/2010

Engenharia do Software I

30

Verificaes da
inspeco

Erros nos dados


Variveis inicializadas antes de usadas?
Sem nmeros mgicos (constantes sem nome)?
ndice mximo de matrizes comprimento ou comprimento -

1?
Deve atribuir-se explicitamente delimitador a cadeias de
caracteres?
Pode ocorrer transbordamento de memria?

Erros de entrada e sada


Variveis de entrada todas usadas?
Variveis de sada com valor atribudo antes da sada?
Entradas inesperadas podem causar corrupo?

2009/2010

Engenharia do Software I

31

Verificaes da
inspeco

Erros no controlo
Guardas de instrues condicionais correctas?
Terminao de ciclos assegurada?
Instrues compostas correctamente envolvidas?
Cobertura de instrues de seleco de casos correcta?
Se necessria, foi includa quebra depois de cada caso?

Erros de interface
Invocaes com nmero correcto de argumentos?
Tipos de argumentos e parmetros correspondem?
Argumentos esto na ordem correcta?
Se componentes acedem a memria partilhada, tm o mesmo

modelo da sua estrutura?

2009/2010

Engenharia do Software I

32

Verificaes da
inspeco

Erros de gesto de armazenamento


Quando estrutura com ligaes modificada, ligaes correctamente

atribudas?
Memria dinmica correctamente reservada?
Memria libertada quando deixa de ser necessria?

Erros de gesto de excepes


Lida-se com todas possveis condies de erro?

2009/2010

Engenharia do Software I

33

Taxa de inspeco

Ritmo
Viso global: 500 instrues/hora
Preparao individual: 125 instrues/hora
Inspeco: 90-125 instrues/hora

Custo
Processo de inspeco caro
Inspeco de 500 linhas exige esforo de 40

humanos hora cerca de 2800 no Reino


Unido ( 3260 )
2009/2010

Engenharia do Software I

34

Anlise esttica
automtica

Levada a cabo por analisadores estticos

Analisadores estticos
Ferramentas de software
Analisam o cdigo fonte
Tentam descobrir potenciais condies de erro
Reportam equipa de verificao e validao
Eficazes como auxlio s inspeces
Suplementam inspeco, no a substituem

2009/2010

Engenharia do Software I

35

Verificaes da anlise esttica


Tipo de erro

Verificao

Dados

Variveis usadas antes de inicializadas


Variveis declaradas mas nunca usadas
Dupla atribuio sem utilizao intermdia
Possvel violaes dos limites de matrizes
Variveis no declaradas

Controlo

Cdigo inatingvel
Entradas incondicionais em ciclos

Entrada/sada Variveis escritas duas vezes sem atribuio pelo meio


Interface

Tipos de argumentos e parmetros incompatveis


Nmero de argumentos invlido
Resultados de funes no usados
Funes e procedimentos no usados

Memria

Ponteiros sem atribuio


Aritmtica de ponteiros

2009/2010

Engenharia do Software I

36

Etapas da anlise
esttica
Fluxo de
controlo

Verifica ciclos com mltiplos pontos de entrada ou sada,


procura cdigo inatingvel, etc.

Utilizao
de dados

Detecta variveis por inicializar, variveis escritas duas


vezes sem atribuio intermdia, variveis declaradas
mas nunca usadas, etc.

Interface

Verifica consistncia da declarao de funes e


procedimentos e da sua utilizao.

Fluxo de
informao

Identifica dependncias de variveis de sada. No


detecta anomalias por si s, mas reala informao para
inspeco ou reviso de cdigo.

Caminhos

Identifica caminhos ao longo do programa e reala as


instrues executadas em cada um deles.
Potencialmente til num processo de reviso.
Usar com cuidado! Geram
grande quantidade de
informao.

2009/2010

Engenharia do Software I

37

lint
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

// test.c
#include <stdio.h>
printarray (Anarray)
int Anarray;
{
printf("%d", Anarray);
}
main()
{
int Anarray[5]; int i; char c;
printarray(Anarray, i, c);
printarray(Anarray) ;
}

2009/2010

> cc test.c
> lint test.c
test.c(13): warning: c may be used before
set
test.c(13): warning: i may be used before
set
printarray: variable # of args.
test.c(4) :: test.c(13)
printarray, arg. 1 used inconsistently
test.c(4) :: test.c(13)
printarray, arg. 1 used inconsistently
test.c(4) :: test.c(14)
printf returns value which is always
ignored

Engenharia do Software I

38

Utilizao da anlise
esttica

Particularmente til para linguagens


fracamente tipificadas (e.g., C) em que
compilador no detecta muitos erros

Relao custo-benefcio menos boa


para linguagens fortemente tipificadas
(e.g., Java) em que compilador detecta
muitos erros

2009/2010

Engenharia do Software I

39

Verificao e mtodos formais

Pode usar-se mtodos formais quando houver


especificao matemtica do sistema

Tcnica de verificao esttica por excelncia

Envolvem anlise matemtica pormenorizada


da especificao

Podem produzir demonstrao formal da


conformidade de programa com especificao

2009/2010

Engenharia do Software I

40

Argumentos a favor de mtodos


formais

Produzir especificao matemtica


requer anlise pormenorizada dos
requisitos, o que pode revelar erros

Podem detectar erros de


implementao antes de testes quando
programa analisado em conjunto com
especificao

2009/2010

Engenharia do Software I

41

Argumentos contra mtodos


formais

Requerem notaes especializadas no


compreendidas por peritos do domnio

Muito caro desenvolver especificao e mais


caro ainda mostrar que um programa cumpre
especificao

Pode ser possvel atingir mesmo nvel de


confiana em programa de forma mais
econmica usando outras tcnicas de verificao
e validao

2009/2010

Engenharia do Software I

42

Desenvolvimento de software
em sala limpa

Nome derivado do processo de sala limpa


usado no fabrico de semicondutores

Preveno e no remoo de defeitos

Processo de desenvolvimento baseado em


Desenvolvimento incremental
Especificao formal
Verificao esttica usa argumentos de correco
Testes estatsticos mostram fiabilidade do programa

2009/2010

Engenharia do Software I

43

Processo de sala limpa


Especificar
sistema
formalmente

Desenhar
testes
estatsticos
Testar
sistema
integrado

Definir
incrementos
do software
Desenvolver
perfil
operacional

Construir
programa
estruturado

retrabalho
Verificar
formalmente
cdigo
Integrar
incremento

2009/2010

Engenharia do Software I

44

Caractersticas do processo de
sala limpa

Especificao formal com modelo de transio de


estados

Desenvolvimento incremental com cliente prioritizando


incrementos

Programao estruturada Construes de controlo e


abstraco limitadas usadas no programa

Verificao esttica usando inspeces rigorosas

Testes estatsticos do sistema

2009/2010

Engenharia do Software I

Captulo 24

45

Especificao formal e
inspeces

Modelo baseado em estados especificao do


sistema

Processo de inspeco verifica programa relativamente


a modelo

Abordagem programao torna clara


correspondncia entre modelo e sistema

Argumentos matemticos (e no demonstraes)


usados para aumentar confiana no processo de
inspeco

2009/2010

Engenharia do Software I

46

Equipas do processo de sala


limpa
Especificao

Responsvel por desenvolver e manter


especificao do sistema.

Desenvolvimento

Responsvel por desenvolver e verificar software.


Software no executado nem compilado durante
este processo.

Certificao

Responsvel por desenvolver conjunto de testes


estatsticos para exercitar software aps
desenvolvimento. Modelos de crescimento de
fiabilidade usados para determinar quando
fiabilidade aceitvel.

2009/2010

Engenharia do Software I

47

Avaliao do processo de sala


limpa

Resultados muito impressionantes

Poucas falhas nos sistemas entregues

Avaliaes independentes mostram que no mais caro


que outras abordagens

Menos erros que em processos tradicionais

Pouco usado: pouco claro como transferir processo para


ambiente com engenheiros menos hbeis ou motivados

2009/2010

Engenharia do Software I

48

A reter

Verificao e validao diferentes


Verificao: conformidade com especificao
Validao: cumprimento de requisitos do cliente

Processo de testes guiado por plano

Tcnicas de verificao esttica envolvem


exame e anlise do programa para
detectar erros

2009/2010

Engenharia do Software I

49

A reter

Inspeces muito eficazes na descoberta de erros

Cdigo sistematicamente verificado por pequena


equipa para localizar erros de software

Ferramentas de anlise esttica descobrem anomalias


que indiciam erros no cdigo

Processo de desenvolvimento de sala limpa


Desenvolvimento incremental
Verificao esttica
Testes estatsticos

2009/2010

Engenharia do Software I

50

A ler

Ian Sommerville, Software Engineering,


8. edio, Addison-Wesley, 2006
Captulo 22

2009/2010

Engenharia do Software I

51

Você também pode gostar