Está en la página 1de 59

Sistema de verificacin de

componentes software

Tesis Doctoral
Agustn Cernuda del Ro
Universidad de Oviedo, junio de
2002
Programa de la presentacin

1. El problema

2. Tcnicas relacionadas

3. Solucin aportada

4. Estudio prctico y resultados

5. Conclusiones y trabajo futuro

18-6-2002 Agustn Cernuda del Ro


Componentes software

Componente software (segn Szyperski)


Unidad de composicin con interfaces especificadas
contractualmente y dependencias contextuales
explcitas
Entendido como unidad de despliegue independiente
Frecuentemente...
Se piensa en ActiveX, CORBA o similares
Se equipara componente a objeto empaquetado
Beneficios esperados: ahorro de tiempo, mayor
fiabilidad

18-6-2002 Agustn Cernuda del Ro


Problemas del uso de componentes en la
prctica - I
Dados ciertos componentes correctos, ser
correcto el sistema resultante?
Errores derivados de la propia combinacin
Comportamiento emergente
Violacin de los requisitos de funcionamiento de
algn componente
Recursos para verificar la conexin entre
componentes
Frecuentemente, slo verificacin de signaturas
En algunos casos, mecanismos de tiempo de
ejecucin

18-6-2002 Agustn Cernuda del Ro


Problemas del uso de componentes en la
prctica - II
Verificacin de signaturas
Habitualmente, se limita al tipo y nmero de los
parmetros
Especificacin
void Especificacin
f(int x, int y) Que x sea siempre mayor
void{ f(int x, int y) que y
... void f(int x, int y)
assert(x <= y);
OK OK?
...
} f(3, 5); f(3, 5);
Uso Uso

18-6-2002 Agustn Cernuda del Ro


Falta de mecanismos de verificacin - I
Verificacin de signaturas
Muy limitada
Especificacin textual
Sujeta a ambigedades
No hay garantas de que se aplique
No se puede automatizar la verificacin
Cdigo de salvaguardia
Slo funciona en tiempo de ejecucin
Puede haber problemas que no se detecten
Semntica limitada (ej.: No utilizar en sistemas de
tiempo real)

18-6-2002 Agustn Cernuda del Ro


Falta de mecanismos de verificacin - II

Muchos defectos se podran prever


Conocimiento a priori
Se pueden conocer propiedades indecidibles
Habitualmente se pierde
Necesidad de un mecanismo que permita
aprovechar el conocimiento a priori
Verificacin basada en ese conocimiento

18-6-2002 Agustn Cernuda del Ro


Falta de mecanismos de verificacin - III

Se necesitara un sistema de verificacin:


Que pudiera utilizarse en tiempo de construccin del
software (no de ejecucin)
Automtico (la especificacin acompaara al
componente y se tendra en cuenta de forma
inmediata)
Susceptible de ser utilizado con facilidad en entornos
de produccin
Flexible (un mtodo general aplicable a diversos
aspectos y mbitos del desarrollo, con una semntica
abierta)

18-6-2002 Agustn Cernuda del Ro


Tesis - I

Es posible verificar, de manera esttica, automtica


y asequible que, hasta donde nos es posible asegurar
con el conocimiento disponible, al combinar ciertos
componentes software no se han violado las
condiciones de funcionamiento correcto de ninguno
de ellos.

18-6-2002 Agustn Cernuda del Ro


Tesis - II

Verificacin
Esttica sin poner el sistema en funcionamiento
(deteccin temprana de los defectos,
aprovechamiento del conocimiento disponible)
Automtica menor coste, mayor frecuencia, menor
ambigedad
Asequible
Tcnicas conocidas y viables
Comprendido y aplicado con facilidad por el personal tpico
General, flexible (retorno de inversin)
Esto exige un modelo sencillo

18-6-2002 Agustn Cernuda del Ro


Mtodo de trabajo

Proponer un modelo de verificacin que cumpla


los objetivos marcados

Probar la viabilidad tcnica de las herramientas


desarrollando prototipos con medios limitados

Probar la aplicabilidad de ese modelo a


problemas prcticos diferentes

18-6-2002 Agustn Cernuda del Ro


Tcnicas relacionadas

1. El problema

2. Tcnicas relacionadas

3. Solucin aportada

4. Estudio prctico y resultados

5. Conclusiones y trabajo futuro

18-6-2002 Agustn Cernuda del Ro


Mtodos formales
Especificacin formal de la interfaz
SDL, Estelle, Lotos / Z, VDM, B...
Especificacin
Refinamiento
Prueba de adecuacin
Problemas:
Asequibilidad (o percepcin sobre ella). Wing, Bowen & Hinchey,
Pressman, Parnas, Meyer, Szyperski...
Componentes
Conocimiento
Automatizacin y herramientas
Flexibilidad

18-6-2002 Agustn Cernuda del Ro


Anlisis esttico e interpretacin
abstracta
Evaluacin de cdigo fuente con algoritmos
Semntica menos precisa pero computable
Valores abstractos de variables
Convergencia
Cousot & Cousot, PAG, PolySpace...
Problemas
Componentes
Asequibilidad
Flexibilidad (alg. especficos, cdigo fuente)

18-6-2002 Agustn Cernuda del Ro


Especificacin semntica

Tcnicas para describir formalmente el


comportamiento de un lenguaje de
programacin
Posibilidad de trasladarlas al mbito de
componentes
Problemas
Legibilidad
Modularidad (hay trabajos prometedores)
Falta de madurez e implementaciones

18-6-2002 Agustn Cernuda del Ro


Especificacin de procesos

CSP (CCS, ACP, otros), -clculo, L-clculo,


derivados (Piccola, Pict, etc.)
Problemas
Orientadas a procesos (CSP y similares)
Notaciones formales (asequibilidad)
Flexibilidad
Bajo nivel
Orientados a concurrencia (Pict)
Orientados a composicin y no tanto a verificacin
(Piccola)

18-6-2002 Agustn Cernuda del Ro


Contratos
Varios enfoques
Unilateral (Meyer)
Bilateral (Wirfs-Brock, Reenskaug)
Contratos de reutilizacin (Vrije Universiteit Brussels)
Lenguaje Contract
Problemas
Meyer: estado concreto, verificaciones ejecutables
Wirfs-Brock, Reenskaug: centrados en anlisis/diseo
Contratos de reutilizacin: poca flexibilidad
Lenguaje Contract: no orientado a verificacin

18-6-2002 Agustn Cernuda del Ro


Estilos arquitectnicos

Incoherencias entre estilos arquitectnicos


(Carnegie Mellon)
ADLs (Wright, Aesop, Darwin, Rapide, UniCon...)
Problemas
Flexibilidad
Automatizacin
Anlisis esttico (limitado)
Asequibilidad (WRIGHT: notaciones basadas en CSP)

18-6-2002 Agustn Cernuda del Ro


Metodologas de anlisis y diseo

OCL (Object Constraint Language)


Catalysis
Problemas
Orientados al modelado, no a la verificacin esttica
Automatizacin

18-6-2002 Agustn Cernuda del Ro


Plataformas de componentes

OSF/DCE (IDL)
COM, CORBA, JavaBeans
Estndares de cableado (Szyperski)
Ya funcionan (xito comercial)
Problemas
Orientados a la composicin, no a la verificacin

18-6-2002 Agustn Cernuda del Ro


Resumen de tendencias
analizadas

18-6-2002 Agustn Cernuda del Ro


Solucin aportada

1. El problema

2. Tcnicas relacionadas

3. Solucin aportada

4. Estudio prctico y resultados

5. Conclusiones y trabajo futuro

18-6-2002 Agustn Cernuda del Ro


El modelo de componentes Itacio

Un modelo de componentes que responda a los


requisitos de la tesis
Primera consideracin: definicin abierta de
componente
Uso del trmino distinto al habitual
Problema de nomenclatura, pero... difcil de evitar
Por qu Itacio?
Enterr en precioso mrmol para la mansin eterna
el tierno cuerpo de Itacio

18-6-2002 Agustn Cernuda del Ro


Componente - I

Entidad que consta de una frontera y un


conjunto de expresiones restrictivas
Frontera: consta de puntos de conexin
Fuentes

Sumideros

Expresiones restrictivas
Requisitos (para los sumideros)

Garantas (sobre las fuentes)

18-6-2002 Agustn Cernuda del Ro


Componente - II

Sumidero1 Sumidero2 Sumidero3

Signaturas Signaturas
Requisitos - Sumidero1(int) - Sumidero1(int)
- Sumidero1 debe ser menor que
- Sumidero2(int, char) - Sumidero2(int, char)
Sumidero2 + Sumidero3
- Sumidero3(char) - Sumidero3(char)
Cdigo Cdigo
Garantas
- El valor de Fuente1 siempre estar
entre el de Sumidero2 y Sumidero3

Fuente1 Fuente2

18-6-2002 Agustn Cernuda del Ro


Sistema - I

Grafo finito
Nodos: componentes
Arcos: pares fuente/sumidero
Predicados auxiliares
Correccin topolgica de un sistema
No hay puntos de conexin aislados
No hay arcos repetidos

18-6-2002 Agustn Cernuda del Ro


Sistema - II
f1 es 5 f1 est en [10..20]
f1 f1

s1 s2

f1 positivo s1 en [1..5] y s2 positivo


f1 ......

s1
OK
? s2

s1vlido?
vlido s1 positivo
s1 s2

18-6-2002 Agustn Cernuda del Ro


Expresiones restrictivas

Requisitos y garantas: lgica de primer orden


Clusula Horn (CLP)
Programacin lgica
Gran flexibilidad para representar conocimiento
Ampliamente conocida (asequible)
Automatizable (procesos de inferencia definidos)
Herramientas disponibles y estables
CLP: Gran potencia y eficiencia

18-6-2002 Agustn Cernuda del Ro


Generacin de la base de
conocimientos - I

Recopilar las expresiones restrictivas de los


componentes del sistema
Modificarlas de modo que quede implcita la
informacin sobre topologa
De este modo, el proceso de inferencia se
remonta a los componentes implicados

18-6-2002 Agustn Cernuda del Ro


Generacin de la base de
conocimientos - II
f1 es 5 f1 est en [10..20] A es 5
f1 f1
B est en [10..20]
A B
s1 s2
f1 positivo s1 en C es positivo si
[1..5] y s2 positivo A en [1..5]^
f1 ...... B positivo
C
s1 s2

s1 vlido s1 positivo C es vlido si


f1 f2 C positivo
18-6-2002 Agustn Cernuda del Ro
Proceso de verificacin
Proceso de inferencia del motor CLP
Hiptesis del Mundo Cerrado (CWA)
Enfoque exigente: si no se satisface explcitamente un
requisito, se da por supuesto que se viola
El proceso de inferencia puede sealar qu
requisito no se cumple y por qu
Con un buen diseo de los predicados, el
sistema puede ofrecer explicaciones
El sistema y su diagnstico pueden
representarse grficamente

18-6-2002 Agustn Cernuda del Ro


Relacin con los objetivos
Sistema de verificacin
Como proceso de inferencia en lgica de primer orden
Verificacin esttica
Verificacin automtica
Modelo asequible
Gran simplicidad del modelo (mnimo de conceptos)
Simplicidad de la implementacin (CLP)
Verificacin basada en el conocimiento
disponible
Aprovechamiento del conocimiento
Gran flexibilidad y potencial de aplicacin

18-6-2002 Agustn Cernuda del Ro


Estudio prctico y resultados

1. El problema

2. Tcnicas relacionadas

3. Solucin aportada

4. Estudio prctico y resultados

5. Conclusiones y trabajo futuro

18-6-2002 Agustn Cernuda del Ro


Prototipos desarrollados
Itacio-SEDA
Basado en herramienta grfica propietaria
Motor de inferencia: ECLiPSe
Itacio-XJ
Datos: ficheros de texto
Representacin: Internet Explorer / VML
Motor de inferencia: ECLiPSe
Itacio-XDB
Datos: base de datos ODBC
Representacin: Internet Explorer / VML
Motor de inferencia: ECLiPSe

18-6-2002 Agustn Cernuda del Ro


Prototipo Itacio-SEDA

18-6-2002 Agustn Cernuda del Ro


Prototipo Itacio-XJ

18-6-2002 Agustn Cernuda del Ro


Prototipo Itacio-XDB

18-6-2002 Agustn Cernuda del Ro


Ejemplos: microcomponentes - I
Representar elementos bsicos de un lenguaje
(operadores, funciones, etc.)
Rudimentario sistema de generacin de cdigo
Leer valor Leer valor #include <stdio.h>
res res void main(void)
Denominado
{
r puede ser
op1 op2 0
double val1;
scanf(%lf, &val1);
Dividir double val2;
res scanf(%lf, &val2);
double res=val1/val2;
val printf(%lf, res);
}
Imprimir valor
18-6-2002 Agustn Cernuda del Ro
Ejemplos: microcomponentes - II
Leer valor Leer valor
res res

op1 op2 valido(op2):-


not igual_que(op2, 0).
...
Dividir ...
res

val

Imprimir valor

Dificultades: generacin de cdigo (no era


objeto de la tesis)
18-6-2002 Agustn Cernuda del Ro
Ejemplos: Contratos de reutilizacin - I
Segn Carine Lucas
Contrato de reutilizacin: conjunto de participantes con nombre,
clusula de relacin e interfaz.
Clusula de relacin: indicacin de que un participante conoce a
otro.
Interfaz: conjunto de descripciones de operaciones (nombre y
operaciones invocadas por esta).
Verificaciones de consistencia (no invocar operaciones
inexistentes, no eliminar operaciones en uso...)
Modificaciones a contratos
Modeladas como operadores (8 combinaciones)
Lucas propone reglas para operadores aplicables
Si se modela un sistema como contratos, con este modelo se
puede verificar la evolucin (usando las reglas establecidas)

18-6-2002 Agustn Cernuda del Ro


Ejemplos: Contratos de reutilizacin - II

Modelando contratos en Itacio


El contrato es un componente
Cada modificacin es otro componente
La conexin entre contratos y sucesivas
modificaciones modela la evolucin del sistema
Los requisitos y garantas permiten validar las
operaciones realizadas

18-6-2002 Agustn Cernuda del Ro


Ejemplos: Contratos de reutilizacin - III
Type=smplDrive
Sources=res
BEGIN_RESTRICTIONS
isContract($res$).
participant($res$, smplDriver).
participant($res$, smplCar).
acqRelationship($res$, smplDriver, myCar, smplCar).
operation($res$, smplDriver, go).
operation($res$, smplDriver, stop).
...
operationInvocation($res$, smplDriver, go, myCar, startEngine).
operationInvocation($res$, smplDriver, go, myCar, pushGasPedal).
...
END_RESTRICTIONS

18-6-2002 Agustn Cernuda del Ro


Ejemplos: Contratos de reutilizacin - IV

18-6-2002 Agustn Cernuda del Ro


Ejemplos: Diagnstico remoto de equipos - I

18-6-2002 Agustn Cernuda del Ro


Ejemplos: Diagnstico remoto de
equipos - II
Las expresiones restrictivas realizan comprobaciones
reales en el equipo cliente (enlazando CLP con DLLs)

18-6-2002 Agustn Cernuda del Ro


Ejemplos: WaveX - I
Sistema de procesamiento de sonido en tiempo real
Basado en componentes (efectos, transformaciones)
Combinaciones no vlidas (imposible verificacin
meramente local)
Necesidad de sistema de ayuda al usuario

18-6-2002 Agustn Cernuda del Ro


Ejemplos: WaveX - II

18-6-2002 Agustn Cernuda del Ro


Ejemplos:
WaveX - III

18-6-2002 Agustn Cernuda del Ro


Ejemplos: Modelo de Hamlet et al
Un modelo de fiabilidad para componentes
software
Cada componente tiene asociada una hoja de
transformacin que indica cmo transforma los
dominios de entrada en los de salida
Cada componente tiene tambin una tasa de
fallos asociada a cada combinacin de
subdominios
Expresando esta informacin como expresiones
restrictivas, se puede reflejar este modelo en
Itacio

18-6-2002 Agustn Cernuda del Ro


Ejemplos: Compatibilidad entre
protocolos - I
Verificaciones temporales (ordenacin de
llamadas)
Los contratos de reutilizacin no lo reflejan
Modelo de Yellin y Strom
Especificar protocolos indicando las transiciones
posibles (es decir, el orden de invocacin admitido en
cada componente para sus operaciones)
Algoritmo para verificar la compatibilidad de los
protocolos de dos componentes
Susceptible de ser modelado en Itacio?

18-6-2002 Agustn Cernuda del Ro


Ejemplos: Compatibilidad entre protocolos - II
ys_collaboration($file$).
ys_states($file$, initFile, [], [createdFileObj,
openingFile, openFile,readingFile, endOfFile,
notReadingFile]).
ys_sent_message($file$, openFileError).
ys_sent_message($file$, openFileOk).
...
ys_received_message($file$, fileConstructor).
ys_received_message($file$, fileDestructor).
...
ys_transition($file$, initFile, +, fileConstructor,
createdFileObj).
ys_transition($file$, createdFileObj, +,
fileDestructor, initFile).
...

18-6-2002 Agustn Cernuda del Ro


Ejemplo: Compatibilidad entre
protocolos - III
Son compatibles componentes con estos protocolos?

18-6-2002 Agustn Cernuda del Ro


Ejemplo: Compatibilidad entre
protocolos - IV

18-6-2002 Agustn Cernuda del Ro


Conclusiones y trabajo futuro

1. El problema

2. Tcnicas relacionadas

3. Solucin aportada

4. Estudio prctico y resultados

5. Conclusiones y trabajo futuro

18-6-2002 Agustn Cernuda del Ro


Conclusiones

Basndose en:
Interpretacin de los resultados obtenidos
Anlisis del estado del arte
Escrutinio pblico
Se concluye que:
Es posible verificar, de manera esttica, automtica y asequible
que, hasta donde nos es posible asegurar con el conocimiento
disponible, al combinar ciertos componentes software no se han
violado las condiciones de funcionamiento correcto de ninguno
de ellos.

18-6-2002 Agustn Cernuda del Ro


Aportaciones
Tecnologa de componentes software
Estudio especfico de alternativas
Definicin abierta de componente
Gestin del conocimiento aplicada
Modelo de componente que permite incorporar conocimiento
Esquema de generacin de la BC para inferencias
Ingeniera del software
Mtodo de modelado de componentes para verificacin y con las
restricciones descritas (gran flexibilidad y generalidad)
Ejemplos de aplicacin de modelo de componentes a campos
diversos
Sistema de verificacin plenamente viable en la prctica
Diversos prototipos

18-6-2002 Agustn Cernuda del Ro


Trabajo futuro - I
Mejoras
Gestin del conocimiento
Correccin de las especificaciones
Razonamiento aproximado / probabilstico
Relajacin del criterio de correccin topolgica
Relacin con la Ingeniera del Software
Herramientas de produccin (no prototipos)
Integracin con procesos de desarrollo
Nuevos campos de aplicacin del modelo
Ingeniera inversa para bsqueda de defectos
Bsqueda de componentes
Anticipacin y ayuda al diseo
Relacin entre expresiones restrictivas y cdigo fuente

18-6-2002 Agustn Cernuda del Ro


Trabajo futuro - II
Relacin con tcnicas formales
Especificacin de la semntica del modelo mediante semntica
mondica reutilizable
Modelado de los componentes mediante semntica modular
Creacin de lenguaje independiente y extensible de propsito
especfico
Adaptacin de una tcnica de especificacin semntica al trabajo
con componentes

18-6-2002 Agustn Cernuda del Ro


Fin de la presentacin

18-6-2002 Agustn Cernuda del Ro

También podría gustarte