Extra¸c˜ao de Modelos de Comportamento de Software
Extra¸c˜
ao de Modelos de
Comportamento de Software
Lucio Mauro Duarte
lmduarte@inf.ufrgs.br
Grupo de VV & T
Instituto de Inform´
atica
Universidade Federal do Rio Grande do Sul
Workshop-Escola de Inform´
atica Te´
orica 2013
15/10/2013
Extra¸c˜ao de Modelos de Comportamento de Software Software
Importˆancia do Software
O que ´
e software?
”Um programa de computador, a
documenta¸
c˜
ao
sobre o seu
modo de opera¸c˜
ao e os dados de configura¸
c˜
ao exigidos para que
ele funcione corretamente.” [Sommerville 2004]
Extra¸c˜ao de Modelos de Comportamento de Software Software
Importˆancia do Software
Extra¸c˜ao de Modelos de Comportamento de Software Software
Importˆancia do Software
Software n˜
ao ´
e importante se...
Extra¸c˜ao de Modelos de Comportamento de Software Software
Importˆancia do Software
Software n˜
ao ´
e importante se...
Extra¸c˜ao de Modelos de Comportamento de Software Software
Desenvolvimento de Software
Desenvolvimento de Software
Em geral
1
An´
alise (requisitos, especifica¸
c˜
ao)
2
Projeto (modelagem)
3
Valida¸
c˜
ao (software ´
e o correto?) e
Verifica¸
c˜
ao (software est´
a correto?)
4
Implementa¸
c˜
ao
5
Testes
Extra¸c˜ao de Modelos de Comportamento de Software Software
Desenvolvimento de Software
Comportamento Incorreto
´
E poss´ıvel afirmar-se que:
Quase todas as partes de um software apresentam algum
defeito durante o desenvolvimento
Devido a limita¸
c˜
oes de or¸
camento e tempo, maioria dos
sistemas de software s˜
ao postos em uso ainda com
defeitos
Logo, h´
a grande probabilidade de o software que usamos
estar defeituoso!!!
Extra¸c˜ao de Modelos de Comportamento de Software Software
Desenvolvimento de Software
Software correto ´
e poss´ıvel?
Nem sempre ´
e poss´ıvel garantir corre¸c˜
ao total
´
E poss´ıvel, sim, aumentar a
confian¸
ca
na corre¸
c˜
ao
Extra¸c˜ao de Modelos de Comportamento de Software Software
Desenvolvimento de Software
Software correto ´
e poss´ıvel?
Nem sempre ´
e poss´ıvel garantir corre¸
c˜
ao total
´
E poss´ıvel, sim, aumentar a
confian¸
ca
na corre¸
c˜
ao
Extra¸c˜ao de Modelos de Comportamento de Software Verifica¸c˜ao de Software Verifica¸c˜ao de Modelos
Principais Abordagens
Teste de Software
Verifica¸c˜
ao Formal
An´
alise Est´
atica
Prova de Teoremas
Extra¸c˜ao de Modelos de Comportamento de Software Verifica¸c˜ao de Software
Verifica¸c˜ao de Modelos
Verifica¸c˜
ao de Modelos
Totalmente autom´
atica ⇒ tecnologia ”push-button”
Explora¸c˜
ao completa do espa¸
co de estados
Gera¸c˜
ao de contraexemplo
Tem sido usada com sucesso tanto no ˆ
ambito acadˆ
emico
quanto por grandes empresas:
Intel
IBM
Microsoft
Boeing
NASA
...
Extra¸c˜ao de Modelos de Comportamento de Software Verifica¸c˜ao de Software
Processo de Verifica¸c˜ao
Processo de Verifica¸c˜
ao
Etapas segundo [Clarke et al. 1999]:
1
Especifica¸
c˜
ao (requisitos ⇒ propriedades)
2
Modelagem
Extra¸c˜ao de Modelos de Comportamento de Software Verifica¸c˜ao de Software
Processo de Verifica¸c˜ao
Resultados da Verifica¸c˜
ao
Se verifica¸c˜
ao indicar viola¸
c˜
ao das propriedades
1
Gera¸
c˜
ao do contraexemplo
2
Realizar altera¸c˜
oes
3
Refazer verifica¸c˜
ao
Processo termina quando n˜
ao houver mais viola¸
c˜
oes
detectadas
Extra¸c˜ao de Modelos de Comportamento de Software Verifica¸c˜ao de Software Processo de Verifica¸c˜ao
Ferramentas
Spin
http://spinroot.com/spin/whatispin.html
SMV
http://embedded.eecs.berkeley.edu/Alumni/kenmcmil/smv/
LTSA
http://www.doc.ic.ac.uk/ltsa
. . .
Extra¸c˜ao de Modelos de Comportamento de Software Modelos
Extra¸c˜ao de Modelos de Comportamento de Software Modelos
Modelos de Software
S˜
ao descri¸c˜
oes abstratas de algum aspecto de um software
Podem ser de diversos tipos, baseados em diversas
abstra¸
c˜
oes e servirem a diferentes prop´
ositos:
Diagrama de Classes
Control Flow Graph (CFG)
Data Flow Graph (DFG)
Message Sequence Chart (MSC)
Rede de Petri
Cadeias de Markov
Rede de Autˆ
omatos Estoc´
asticos
Gram´
aticas de Grafos
Kripke Structure
Labelled Transition Systems (LTS)
...
Extra¸c˜ao de Modelos de Comportamento de Software Modelos
Modelos de Comportamento
Foco em
modelos de comportamento
Descrevem o comportamento esperado do software
Podem ser baseados em:
Estados (Kripke Structure)
A¸
c˜
oes (LTS)
Extra¸c˜ao de Modelos de Comportamento de Software Modelos
Aplica¸c˜
ao de Verifica¸c˜
ao de Modelos
Quest˜
oes:
De onde vem o
modelo
a ser verificado?
Como garantir que este
modelo
ser´
a corretamente
Extra¸c˜ao de Modelos de Comportamento de Software Modelos
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos Constru¸c˜ao de Modelos
Constru¸c˜
ao de Modelos
Ideal
Autom´
atica
F´
acil e r´
apida
Requisito essencial: Modelo deve ser uma representa¸
c˜
ao
fiel
do sistema
Modelo M ´
e
completo
se inclui todos os comportamentos
realiz´
aveis do programa Prog
L(Prog ) ⊆ L(M)
Modelo M ´
e
correto
se inclui somente comportamentos
realiz´
aveis do programa Prog
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Constru¸c˜ao de Modelos
Extra¸c˜
ao de Modelos
Processo de se obter um modelo (de comportamento) a
partir de um software existente [Holzmann & Smith 1999]
Possibilita a gera¸
c˜
ao autom´
atica do modelo
Modelo gerado descreve o comportamento implementado
pelo software, dado um n´ıvel de abstra¸
c˜
ao
Esbarra no
problema de constru¸
c˜
ao de modelos
[Corbett et al.
2000]
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos Abordagens
Exemplo
1p u b l i c
c l a s s
E d i t o r {
2p r i v a t e
b o o l e a n isOpen ;
3p r i v a t e
b o o l e a n i s S a v e d ;
4 5p u b l i c
E d i t o r
( ) {
6i n t
cmd = −1;
7i s O p e n = f a l s e ;
8i s S a v e d = t r u e ;
9 10w h i l e ( cmd != 4 ) {
11cmd = r e a d C m d ( ) ;
12s w i t c h ( cmd ) {
13c a s e
0 :
i f ( ! isOpen )
14n a m e = o p e n ( ) ;
15b r e a k ;
16c a s e
1 :
i f ( isOpen )
17e d i t ( n a m e ) ;
18b r e a k ;
19c a s e
2 :
i f ( isOpen )
20p r i n t ( n a m e ) ;
21b r e a k ;
22c a s e
3 :
i f ( ! i s S a v e d )
23s a v e ( n a m e ) ;
24b r e a k ;
25c a s e
4 : exit ( name ) ;
26}
27}
28}
29. . .
30v o i d exit ( String n ) {
31i f
( ! i s S a v e d ) {
32i n t
opt = r e a d O p t ( ) ;
33i f
( opt == 0 )
34s a v e ( n ) ;
35}
36i f
( isOpen ) close ( n ) ;
37}
38. . .
39}
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem Est´
atica
Enter
cmd!=4
readCmd()
cmd
!isOpen isOpen isOpen !isSaved
!isSaved
opt==0
open() edit() print() save()
exit() readCmd() save() close()
Enter
Return
Return
isOpen true true true true false true true true true false false false false false false false 0 1 2 3 4Enter
cmd!=4 readCmd()cmd
!isOpen isOpen isOpen !isSaved
!isSaved
opt==0
open() edit() print() save()
exit() readCmd() save() close()
Enter
Return
Return
isOpen true true true true false true true true true false false false false false false false 0 1 2 3 4Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem Est´
atica (cont.)
Comportamento completo do sistema
Alguns comportamentos irrealiz´
aveis ⇒
falsos positivos
Requer acesso ao c´
odigo fonte
Exemplos:
Bandera [Corbett et al. 2000]
Java PathFinder [Havelund et al. 2000]
SLAM [Ball & Rajamani 2002]
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem Est´
atica (cont.)
T´
opicos Relacionados:
Execu¸
c˜
ao Simb´
olica [King 1976]
Slicing [Corbett et al. 2000]
Counterexample-Guided Abstraction Refinement (CEGAR)
[Kroening et al. 2004]
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem Dinˆ
amica
Trace:
open edit save print edit edit print save print edit exit save close
q0
open
q1
edit
q2
q3
q4
q6
edit
save
save
close
q5
exit
edit
save
q0
open
q1
edit
q2
q3
q4
q6
q6
edit
save
save
close
q5
exit
edit
save
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem Dinˆ
amica (cont.)
Extra¸c˜
ao estilo ”caixa preta”
Cont´
em somente comportamentos reais
Requer processo de inferˆ
encia ⇒ poss´ıvel inclus˜
ao de
comportamentos inv´
alidos
N˜
ao h´
a garantia de modelo completo
Exemplos:
Grammar Inference [Cook & Wolf 1998]
GK-Tail [Lorenzolli et al. 2006]
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem Dinˆ
amica (cont.)
T´
opicos Relacionados:
Aprendizado de autˆ
omatos [Angluin 1987]
An´
alise Estat´ıstica [Cook & Wolf 1998]
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem H´ıbrida
Trace:
open edit save print edit edit print save print edit exit save close
open
edit
save
exit
save
close
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem H´ıbrida (cont.)
Combina
comportamentos reais
com informa¸
c˜
oes da
estrutura
do c´
odigo
Corre¸c˜
ao ´
e garantida
pelo apoio na informa¸
c˜
ao est´
atica
Completude depende dos comportamentos observados
Exemplos:
Daikon & ESC/Java [Nimmer & Ernst 2002]
LTSE [Duarte et al. 2006]
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem H´ıbrida (cont.)
T´
opicos Relacionados:
Inferˆ
encia dinˆ
amica + an´
alise est´
atica [Nimmer & Ernst 2002]
Contextos [Duarte et al. 2006]
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
Abordagem de Modelo Impl´ıcito
N˜
ao h´
a gera¸
c˜
ao de um modelo ”manipul´
avel”
Runtime monitoring
Explora¸
c˜
ao do espa¸
co de estados pode n˜
ao ser completa
Exemplo:
Extra¸c˜ao de Modelos de Comportamento de Software Extra¸c˜ao de Modelos
Abordagens
T´
opicos
Abstra¸
c˜
ao de constru¸c˜
oes de linguagens modernas (ADT,
exce¸c˜
oes, heran¸ca, aspectos, inner classes, etc.)
Refinamento de modelos
An´
alise de concorrˆ
encia
Modelos completos com respeito a algum crit´
erio (cobertura,
propriedade, etc.)
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Grupo de VV & T
Grupo de pesquisa do INF/UFRGS dedicado `
a pesquisa em
Valida¸c˜
ao, Verifica¸c˜
ao e Teste de Sistemas Computacionais
Integrantes:
Profa. Dra. Leila Ribeiro
Profa. Dra. ´
Erika Cota
Prof. Dr. Rodrigo Machado
Prof. Dr. Lucio Mauro Duarte
Colabora¸
c˜
oes em projetos com pesquisadores da UFPel,
UNIPAMPA e PUCRS
Mais informa¸c˜
oes:
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos no Grupo de VV & T (cont.)
Extra¸c˜
ao de modelos LTS baseados em contextos [Duarte et
al. 2008]
Contextos combinam informa¸c˜
oes de controle de fluxo com
informa¸
c˜
oes sobre valores de atributos e cadeias de chamadas
de m´
etodos
Permite combina¸
c˜
ao segura de rastros de execu¸
c˜
ao, inclusive
com possibilidade de comportamentos extras
Independente de linguagem (regras de anota¸
c˜
ao)
Suporte a sistemas concorrentes
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos no Grupo de VV & T (cont.)
Trace:
open edit save print edit edit print save print edit exit save close
open
edit
save
exit
save
close
0
1
2
E
open
edit
edit
save
exit
save
close
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos no Grupo de VV & T (cont.)
Combina¸
c˜
ao de Verifica¸c˜
ao de Modelos e Teste de Software
[Duarte 2011]
Abordagem incremental para garantir um
modelo completo
Uso de casos de teste para guiar a extra¸
c˜
ao do modelo (e.g.,
baseado em uma propriedade - Property-Oriented Testing - ou
em um crit´
erio de cobertura)
Modelo criado usado para gerar novos casos de teste
(Model-Based Testing )
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos no Grupo de VV & T (cont.)
Test
Cases
Implementation
Testing
Results
Behaviour
Model
Verification
Results
produce
construct
verify
generate
execute
modify
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos no Grupo de VV & T (cont.)
Trace:
open edit save print edit edit print save print edit exit save close
open
edit
exit
close
edit
exit
save
save
close
0
1
2
E
4
5
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos no Grupo de VV & T (cont.)
Extra¸c˜
ao de modelos em Gram´
aticas de Grafos [Oliveira et al.
2013]
Adapta¸
c˜
ao da abordagem de extra¸
c˜
ao de LTS
Mudan¸
ca de paradigma, visto que GG ´
e baseada em estados
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos no Grupo de VV & T (cont.)
Extra¸c˜
ao de modelos quantitativos
Possibilidade de extrair modelos que possam ser usados para
an´
alises quantitativas, tais como Redes de Autˆ
omatos
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos no Grupo de VV & T (cont.)
Verifica¸c˜
ao de implementa¸
c˜
oes de sistemas
Uso do modelo extra´ıdo para compara¸
c˜
ao com um modelo da
especifica¸
c˜
ao
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Referˆ
encias
Angluin, D. ”Learning regular sets from queries and counterexamples”, Inf.
Comput., Academic Press, Inc., n,75, 1987.
Ball, T. & Rajamani, S. K. ”The SLAM Project: Debugging System Software
via Static Analysis”, POPL, 2002.
Clarke, E. M.; Grumberg, O. & Peled, D. A. ”Model Checking”, The MIT Press,
1999.
Cook, J. E. & Wolf, A. L. ”Discovering Models of Software Processes from
Event-Based Data”, 1998.
Corbett, J. C. et al. ”Bandera: extracting finite-state models from Java
source code”, ICSE, 2000.
Duarte, L. M.; Kramer, J. & Uchitel, S. ”Model Extraction Using Context
Information”, MoDELS, 2006.
Duarte, L.; Kramer, J. & Uchitel, S. ”Towards Faithful Model Extraction Based
on Contexts”, FASE, 2008.
Duarte, L. ”Integrating Software Testing and Model Checking Through Model
Extraction”, SBMF : short papers, 2011.
Godefroid, P. ”Software Model Checking: The Verisoft Approach”, Bell
Laboratories, Lucent Technologies, 2003.
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Referˆ
encias (cont.)
Havelund, K. & Pressburger, T. ”Model checking JAVA programs using Java
PathFinder”, Springer-Verlag, n.2, 2000.
Henzinger, T.; Jahla, R.; Majumdar, R. & Sutre, G. ”Lazy Abstraction”, POPL,
2002.
Holzmann, G. & Smith, M. ”A Practical Method for Verifying Event-Driven
Software”, ICSE, 1999.
King, J. ”Symbolic Execution and Program Testing”, Communications of the
ACM, n. 19, 1976.
Kroening, D. et al. ”Counterexample Guided Abstraction Refinement via
Program Execution”, LNCS 3308, 2004.
Lorenzoli, D.; Mariani, L. & Pezz`
e, M. ”Inferring State-Based Behavior
Models”, WODA, 2006.
Nimmer, J. & Ernst, M. Automatic Generation of Program Specifications”,
ISTTA, 2002.
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜
ao de Modelos de
Comportamento de Software
Lucio Mauro Duarte
lmduarte@inf.ufrgs.br
Grupo de VV & T
Instituto de Inform´
atica
Universidade Federal do Rio Grande do Sul
Workshop-Escola de Inform´
atica Te´
orica 2013
15/10/2013
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Identifica¸c˜
ao de Contextos
Trace:
[open edit save print edit edit print save print edit exit save close]
R E P _ E N T E R : ( cmd !=4)# t r u e#{f a l s e , t r u e } S E L _ E N T E R : ( cmd)#0#{ f a l s e , t r u e } S E L _ E N T E R : ( ! i s O p e n)# t r u e#{f a l s e , t r u e } M E T _ E N T E R : o p e n#t r u e#{f a l s e , t r u e } M E T _ E N D S E L _ E N D S E L _ E N D R E P _ E N D R E P _ E N T E R : ( cmd !=4)# t r u e#{t r u e , t r u e } S E L _ E N T E R : ( cmd)#1#{ t r u e , t r u e } S E L _ E N T E R : ( i s O p e n)# t r u e#{t r u e , t r u e } M E T _ E N T E R : e d i t#t r u e#{t r u e , t r u e } M E T _ E N D S E L _ E N D S E L _ E N D R E P _ E N D R E P _ E N T E R : ( cmd !=4)# t r u e#{t r u e , f a l s e } . . .
Contexto Pred. Val. Estado
0 - T {} 0.1 (cmd!=4) T {F,T} 0.1.1 (cmd) 0 {F,T} 0.1.1.1 (!isOpen) T {F,T} 0.1.1.1.1 open T {F,T} 0.2 (cmd!=4) T {T,T} 0.2.1 (cmd) 1 {T,T} 0.2.1.1 (isOpen) T {T,T} 0.2.1.1.1 edit T {T,T} 0.3 (cmd!=4) T {T,F} ... .... ... {...}
Extra¸c˜ao de Modelos de Comportamento de Software Grupo de VV & T - INF/UFRGS
Gera¸c˜
ao de FSP
Rastro:
[open edit save print edit edit print save print edit exit save close]
#0 #0.1 #0.1.1 #0.1.1.1 #0.1.1.1.1 open #0.2 #0.2.1 #0.2.1.1 #0.2.1.1.1 edit #0.3 #0.3.1 #0.3.1.1 #0.3.1.1.1 save #0.2 ... Editor = P0, P0 = (open -> P1), P1 = ( |print -> P1), P2 = (save -> P1 |edit -> P2 |print -> P2 |exit -> P3), P3 = (save -> P4), P4 = (close -> END). edit -> P2,