ContractorJ
Validando el comportamiento de clases de Java
Patricio Palladino
Director: Diego Garbervetsky
Programa
- Verificación y validación de software
- Enabledness Preserving Abstractions (EPAs)
- Objetivos de la tesis
- Generación de EPAs en Java
- ContractorJ
- Permissive Enabledness Preserving Abstractions (PEPAs)
- Annotator
- Trabajo futuro
- Conclusiones
Verificación
Proceso para determinar
si un artefacto se corresponde con una descripción o especificación del mismo.
Validación
Proceso para aumentar la confianza en que un artefacto se corresponde con la realidad.
¿El software es correcto?
¿El software es el correcto?
Verificación

Minería de modelos
Enabledeness
Preserving
Abstractions
public class Stack {
public Stack() {
/* ... */
}
public Stack(int capacity) {
/* ... */
}
public void Pop() {
/* ... */
}
public void Push(Object o) {
/* ... */
}
}Objetivos de la tesis
-
Generación de EPAs en Java
-
Extender el modelo de EPAs
- Integración con proyectos de terceros
Generación de EPAs en Java
Estados de una EPA




Exploración de posibles estados

Reachability Queries

EPA
Boogie
Blast
Code
contracts
BCT
Corral
Boogie 2
Intermediate Verification
Language

JBCT
Traductor de Java
a Boogie
JBCT
- Traductor sencillo
- Fail-fast
- Single threaded
- Similar a BCT para .Net
- Sin soporte de tipos ni subtipado
ContractorJ

Resultados
Permissive
Enabledeness
Preserving
Abstractions
Debilidades de las EPAs
Intended
Preconditions
Resultados
public void Push(Object o) {
if (o == null) {
// No incluido en la pre
throw new NullPointerException();
}
/* ... */
} public void Push(Object o) {
/* ... */
if (o == null) {
// No incluido en la pre
throw new NullPointerException();
}
}public boolean Push_pre() {
return size <= capacity;
} public void Push(Object o) {
if (o == null) {
// No incluido en la pre
size = capacity + 1;
throw new NullPointerException();
}
/* ... */
}Annotator
(P)EPA de clase
sin anotar
Daikon
Randoop


Resultados


Conclusiones
Trabajo futuro
Preguntas
ContractorJ
By Patricio Palladino
ContractorJ
- 674