145
DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE CONOCIMIENTO SWEBOK. Ing. Adriana Quero Bastidas Tutor: Isabel Besembel Carrera COMO REQUISITO PARA OBTENER EL GRADO DE MAGISTER SCIENTIAE EN COMPUTACIÓN DE LA UNIVERSIDAD DE LOS ANDES MÉRIDA, VENEZUELA NOVIEMBRE 2007 Copyright de Universidad de Los Andes, 2007

DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

DEFINICION DE UNA ONTOLOGIA PARA LA GUIA

DE CONOCIMIENTO SWEBOK.

Ing. Adriana Quero Bastidas

Tutor: Isabel Besembel Carrera

COMO REQUISITO PARA OBTENER

EL GRADO DE

MAGISTER SCIENTIAE EN COMPUTACIÓN

DE LA

UNIVERSIDAD DE LOS ANDES

MÉRIDA, VENEZUELA

NOVIEMBRE 2007

Copyright de Universidad de Los Andes, 2007

Page 2: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

ii

UNIVERSIDAD DE LOS ANDES

FACULTAD DE INGENIERÍA

POSTGRADO DE COMPUTACIÓN

El jurado aprueba el proyecto de grado titulado “METODOLOGIA PARA

DESARROLLO DE SOFTWARE BASADA EN ONTOLOGIA" realizado por el

Ing. Adriana Quero Bastidas como requisito parcial para la obtención del grado de

Magister Scientiae en Computación.

Fecha: Julio 2007

Tutor: __________________________________________________

Isabel Besembel Carrera

Jurado: __________________________________________________

Primer Jurado

__________________________________________________

Segundo Jurado

Page 3: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

iii

Resumen

El desarrollo de software generalmente se realiza en diferentes contextos, puntos

de vista y suposiciones acerca de un área de estudio determinada. Es por esta razón

que con frecuencia se crean problemas de comunicación entre las partes involucradas,

reduciéndose así el potencial de reutilizar y compartir información. Una manera de

resolver esto, es crear un entendimiento compartido a través del uso de las ontologías,

las cuales permiten establecer correspondencia y relaciones entre diferentes dominios.

El objetivo fundamental de esta investigación es definir una ontología basada en el

conocimiento del área de la Ingeniería de Software, que contenga un conjunto de

procedimientos, técnicas y ayudas de documentación, y que pueda ser utilizada como

apoyo a nuevas metodologías o metodologías existentes de desarrollo de productos de

software. Se presenta el proceso de creación de una ontología de la Ingeniería de

Software, cuyo objetivo primordial es compartir y organizar todos los conocimientos

acumulados hasta ahora en esta área, además de servir de inicio a investigaciones

Page 4: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

iv

relacionadas con la interpretación automática de estos conceptos, usando sistemas de

software o agentes de software inteligentes. Se inicio la investigación y análisis de la

guía SWEBOK. Posterior a este análisis, se realizó la abstracción de estos conceptos

en un diagrama de clases UML, el cual fue transformado en una ontología

representada en el lenguaje OWL (Ontology Web Language) utilizando la herramienta

Protégé. Finalmente, se realizó una aplicación Web basada en esta ontología que

soporta los conceptos estudiados; para demostrar la utilidad en la Ingeniería de

Software, se planteó un caso de estudio ficticio en el que un Ingeniero de esta área se

hace interrogantes acerca de diferentes tópicos relacionados con el ciclo de desarrollo

de software las cuales son respondidas de manera exitosa por el sistema, logrando que

el Ingeniero pueda obtener la información requerida en cada etapa del ciclo de

desarrollo.

Page 5: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

v

A Dios Todopoderoso por colocar en mi camino a las personas

adecuadas que me impulsaron a culminar con éxito este sueño.

Page 6: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

vi

Page 7: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

vii

Índice general

Índice de tablas -----------------------------------------------------------------------------------xii

Índice de figuras ----------------------------------------------------------------------------------xiiiii

Capítulo 1. Introducción---------------------------------------------------------------------------- 1

1.1 Antecedentes ------------------------------------------------------------------------------------------ 2

1.1.1 Uso de Ontologías Formales en los Sistemas de Información. -------------------------------------- 2

1.2.1 Metodologías para el procesamiento de los requerimientos y de los componentes

reutilizables basados en técnicas ontológicas. -------------------------------------------------------------------- 3

1.3.1 Desarrollo de herramientas de integración de los procesos de software basado en el

enfoque ontológico ODE(Ontology Software based software Development Enviroment) ----------------- 4

1.2 Conceptos Relacionados ---------------------------------------------------------------------------- 5

1.2.1 Metodologías de Software. ------------------------------------------------------------------------------- 5

1.2.2 Clasificación de los Modelos de Software. ------------------------------------------------------------ 5

Modelo en cascada ----------------------------------------------------------------------------------------------- 6

Modelo de procesos incrementales ----------------------------------------------------------------------------- 6

Modelos DRA(Desarrollo Rápido de Aplicaciones) --------------------------------------------------------- 6

Modelo de Procesos Evolutivos -------------------------------------------------------------------------------- 7

Modelos especializados de proceso ---------------------------------------------------------------------------- 8

Page 8: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

viii

Metodologías Ágiles --------------------------------------------------------------------------------------------- 8

RUP (Rational Unified Proccess) ----------------------------------------------------------------------------- 10

MSF (Microsoft Solution Framework) ----------------------------------------------------------------------- 11

1.3 Justificación ----------------------------------------------------------------------------------------- 16

1.4 Objetivos --------------------------------------------------------------------------------------------- 17

1.5 Plan de Trabajo ------------------------------------------------------------------------------------- 18

1.6 Alcance ----------------------------------------------------------------------------------------------- 18

1.7 Organización de la Tesis -------------------------------------------------------------------------- 19

Capítulo 2. Conceptos Teóricos ------------------------------------------------------------------- 21

2.1 Definición de Ontología --------------------------------------------------------------------------- 21

2.1.1 Importancia de las Ontologías ------------------------------------------------------------------------- 23

2.1.2 Utilidad de las Ontologías ------------------------------------------------------------------------------ 24

2.1.3 Relación con otras areas del conocimiento ----------------------------------------------------------- 24

Web Semántica-------------------------------------------------------------------------------------------------- 25

Ingeniería de Dominio (Domain Engineering) -------------------------------------------------------------- 25

Software Engineering Environments (SEEs) ---------------------------------------------------------------- 26

Gestión del Conocimiento (Knowledge Management) ---------------------------------------------------- 27

Inteligencia Artificial (IA) ------------------------------------------------------------------------------------- 27

2.1.4 Formas de utilizar las Ontologías en las aplicaciones ---------------------------------------------- 27

2.2 Elementos que componen las Ontologías ------------------------------------------------------ 28

Conceptos -------------------------------------------------------------------------------------------------------- 28

Relaciones ------------------------------------------------------------------------------------------------------- 28

Funciones -------------------------------------------------------------------------------------------------------- 28

Page 9: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

ix

Axiomas---------------------------------------------------------------------------------------------------------- 28

Instancias -------------------------------------------------------------------------------------------------------- 28

2.3 Tipos de Ontologías -------------------------------------------------------------------------------- 29

2.4 Lenguajes utilizados para la definición de Ontologías -------------------------------------- 30

2.5 Herramientas para definir Ontologías --------------------------------------------------------- 32

2.6 Ingeniería Ontológica y Modelado de Ontologías ------------------------------------------- 34

2.7 Relación de las Ontologías con la Ingeniería de Software --------------------------------- 41

2.8 Areas de Aplicación -------------------------------------------------------------------------------- 43

Capítulo 3. Construcción de una Ontología para la Ingeniería de Software ------------- 44

3.1 Conceptos Relacionados -------------------------------------------------------------------------- 45

XML(Extensible Markup Language) ------------------------------------------------------------------------ 45

XMI(XML Metadata Interchange) --------------------------------------------------------------------------- 45

DTD(Document Type Definition) ---------------------------------------------------------------------------- 45

XML Namespaces ---------------------------------------------------------------------------------------------- 45

URI (Uniform Resource Identifiers) ------------------------------------------------------------------------- 45

RDF(Resources Description Framework) ------------------------------------------------------------------- 46

OWL(Ontology Web Language) ----------------------------------------------------------------------------- 46

SWEBOK(Software Engineering Body of Knowledge) --------------------------------------------------- 46

UML(Unified Modelo Language) ---------------------------------------------------------------------------- 46

SOAP(Simple Access Object Protocol) ---------------------------------------------------------------------- 47

Protégé 3.2 ------------------------------------------------------------------------------------------------------- 47

WSDL (Web Service Definition Language) ---------------------------------------------------------------- 47

3.2 OWL (Ontology Web Language) --------------------------------------------------------------- 47

Page 10: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

x

3.2.1 SubLenguajes OWL ------------------------------------------------------------------------------------- 47

OWL Lite ----------------------------------------------------------------------------------------------- 47

OWL DL ------------------------------------------------------------------------------------------------ 47

OWL Full ----------------------------------------------------------------------------------------------- 48

3.3 Diagramas de clases para la representación de los conceptos relacionados con la

Ingeniería de Software ------------------------------------------------------------------------------------ 49

3.4 Transformación del Diagrama de Clases UML a una Ontología en Lenguaje

OWL --------------------------------------------------------------------------------------------------------- 54

3.4.1 Pruebas de generación automática de un diagrama modelado en UML a una Ontología ------ 54

La herramienta DAML-UML ------------------------------------------------------------------------ 54

UML BackEnd ----------------------------------------------------------------------------------------- 54

Convertidor UML2DAML --------------------------------------------------------------------------- 54

3.5 Construcción de una Ontología utilizando Protégé -------------------------------------- 60

3.6 Verificación de la Ontología creada ------------------------------------------------------- 66

3.7 Desarrollo de la aplicación Web para la consulta de la Ontología ---------------------- 67

3.7.1 Estructura del proyecto Java implementado ---------------------------------------------------------- 68

3.7.2 Publicación Servicio Web para Ontología creada --------------------------------------------------- 70

3.7.3 Arquitectura de la Aplicación -------------------------------------------------------------------------- 73

3.7.4 Interfaz Gráfica ------------------------------------------------------------------------------------------ 76

Capítulo 4. Uso de la Aplicación como apoyo a un proyecto de un dominio en específico

-----------------------------------------------------------------------------------------------------------78

4.1 Definición del Proyecto Planteado ---------------------------------------------------------------- 78

4.2 Areas de proceso involucradas en el proyecto --------------------------------------------------- 79

Page 11: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

xi

4.3 Uso de la Aplicación Desarrollada como Apoyo en el Proceso de Ingenieria de

Software involucrado en el desarrollo del proyecto seleccionado ------------------------------------ 81

Capítulo 5. Conclusiones y Recomendaciones --------------------------------------------------92

5.1 Conclusiones ----------------------------------------------------------------------------------------- 92

5.2 Recomendaciones ----------------------------------------------------------------------------------- 95

Bibliografía ------------------------------------------------------------------------------------------ 97

Anexo1 ---- ------------------------------------------------------------------------------------------ 101

Anexo2 ---- ------------------------------------------------------------------------------------------ 123

Page 12: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

xii

Índice de tablas

Tabla 1-1. Tabla comparativa de los modelos de procesos ---------------------------------------------------------- 12

Tabla 3-1. Creación del objeto OWLModel ---------------------------------------------------------------------------- 69

Tabla 3-2. Método cargarListaAtributo -------------------------------------------------------------------------------- 69

Tabla 3-3. Método cargarAtributo -------------------------------------------------------------------------------------- 70

Tabla 3-4. Variable de ambiente AXISCLASSPATH ----------------------------------------------------------------- 71

Tabla 3-5. Variable de ambiente CLASSPATH ------------------------------------------------------------------------ 71

Tabla 3-6. Comando para crear archivo WSDL ---------------------------------------------------------------------- 71

Tabla 3-7. Comando para crear clases utilizadas para consumir servicio Web --------------------------------- 72

Page 13: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

xiii

Índice de figuras

Figura 1-1. Sistema de Ontologías ---------------------------------------------------------------------------------------- 4

Figura 2-1. Etapas del proceso de desarrollo de Ontologías ------------------------------------------------------- 36

Figura 3-1. Areas de conocimiento(KA) presentes en el proyecto SWEBOK ------------------------------------- 50

Figura 3-2. Subdivisión de tópicos en el área de conocimiento Requerimientos de Software ------------------ 51

Figura 3-3. Diagrama de Clases ---------------------------------------------------------------------------------------- 52

Figura 3-4. Exportación de archivo XMI ------------------------------------------------------------------------------ 56

Figura 3-5. Comando de ejecución programa UML2DAML Converter ------------------------------------------- 57

Figura 3-6. Aplicación UML2DAML Converter ---------------------------------------------------------------------- 58

Figura 3-7. Transformación del XMI el UML2DAML Converter. -------------------------------------------------- 59

Figura 3-8. Clases de la Ontología representadas en Protégé. ----------------------------------------------------- 62

Figura 3-9. Slots para la clase Area ------------------------------------------------------------------------------------ 63

Figura 3-10. Instancias para la clase Area ---------------------------------------------------------------------------- 64

Figura 3-11. Diagrama de Clases y Ontologías----------------------------------------------------------------------- 65

Figura 3-12. Validador RDF -------------------------------------------------------------------------------------------- 66

Figura 3-13. Arquitectura de la aplicación ---------------------------------------------------------------------------- 74

Figura 3-14. Arquitectura a nivel de la codificación ----------------------------------------------------------------- 75

Figura 3-15. Interfaz del usuario final --------------------------------------------------------------------------------- 76

Page 14: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

xiv

Figura 4-1. Relación entre el modelo WATCH y Areas de Proceso SWEBOK ------------------------------------ 80

Figura 4-2. Definición Requerimientos --------------------------------------------------------------------------------- 82

Figura 4-3. Referencias relacionadas con la Definición de Requerimientos -------------------------------------- 83

Figura 4-4. Diseño de la Aplicación ------------------------------------------------------------------------------------ 83

Figura 4-5. Diseño de la Aplicación (Conceptos relacionados a Tópicos) ---------------------------------------- 84

Figura 4-6. Construcción ------------------------------------------------------------------------------------------------ 85

Figura 4-7. Manejo de Pruebas del sistema --------------------------------------------------------------------------- 86

Figura 4-8. Mantenimiento de la Aplicación -------------------------------------------------------------------------- 87

Figura 4-9. Gestión de la Configuración ------------------------------------------------------------------------------- 88

Figura 4-10. Ingeniería de Gestión ------------------------------------------------------------------------------------- 88

Figura 4-11. Ingeniería de Procesos ----------------------------------------------------------------------------------- 89

Figura 4-12. Herramientas de Software y métodos ------------------------------------------------------------------- 90

Figura 4-13. Gestión de Calidad ---------------------------------------------------------------------------------------- 91

Page 15: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 1

Capítulo 1. Introducción.

El desarrollo de los sistemas de software generalmente se realiza en diferentes

contextos, puntos de vista y suposiciones acerca de un área de estudio determinada. Es por

esta razón que con frecuencia se crean problemas de comunicación por falta de

entendimiento entre las partes involucradas, lo cual trae como consecuencia falta de

interoperabilidad, reduciéndose de esta forma el potencial de reutilizar y compartir

información. Los nuevos sistemas de información deben apuntar hacia entender el modelo

de usuarios en cualquier parte del mundo y su significado, además de comprender los

modelos procedentes de distintas fuentes de información. Una manera de resolver esto es

crear un entendimiento compartido a través del uso de las ontologías, las cuales permiten

establecer correspondencia y relaciones entre los diferentes dominios de entidades de

información.

La Ontología es una antigua disciplina que se define como un esquema específico

de categorías que refleja una visión específica del mundo. Desde el punto de vista

informático, las ontologías especifican un vocabulario relativo a un cierto dominio. Este

vocabulario define entidades, clases, propiedades, predicados y funciones, además de las

relaciones entre estos componentes. Las ontologías se encargan de definir los términos

utilizados para describir y representar un área de conocimiento, son utilizadas por los

usuarios, las bases de datos y las aplicaciones que necesitan compartir información

específica, es decir, en un campo determinado, como puede ser el de las finanzas, medicina,

deporte, etc. Además juegan un papel clave en la resolución de la interoperabilidad

semántica entre sistemas de información y su uso.

Page 16: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 2

1.1 Antecedentes.

Actualmente existe cierta cantidad de trabajos que involucran el uso de técnicas

ontológicas con las etapas del proceso de desarrollo de software. Se seleccionaron los

artículos más resaltantes y se presenta a continuación un resumen de los mismos.

1.1.1 Uso de Ontologías Formales en los Sistemas de Información

Nicola Guarino en [2] expone de forma concisa la manera como se ha venido

incrementando el uso de las ontologías en los sistemas de información (ingeniería de

conocimientos, diseño e integración de bases de datos, extracción y recuperación de

información). Se presenta un enfoque del uso de las ontologías utilizando sus

peculiaridades metodológicas y arquitectónicas. Desde el punto de vista metodológico, su

principal peculiaridad es la adopción de un enfoque altamente interdisciplinario donde la

filosofía y la lingüística tienen un rol fundamental en el análisis a un alto nivel de la

estructura de una realidad dada y la formulación de un riguroso vocabulario. Desde el

punto de vista arquitectónico, el aspecto más importante se basa en el rol que puede jugar la

ontología en los sistemas de información, a través de la liderización de una nueva

perspectiva del desarrollo de sistemas, sistemas de información guiados por ontologías

(ontology-driven information systems).

Presenta, también, terminologías básicas fundamentales para el estudio de las ontologías,

como lo son: nociones de las ontologías, conceptualización y compromisos ontológicos;

además de mostrar los diferentes tipos de ontologías que existen y su contribución e

importancia en la integración de la información.

Como aspecto resaltante se concluye con una explicación de cómo las ontologías pueden

ser utilizadas en diferentes etapas del desarrollo de los sistemas de información, a saber:

Page 17: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 3

Uso de la ontología en tiempo de desarrollo.

Uso de la ontología en tiempo de ejecución.

Uso de la ontología para los componentes de bases de datos.

Impacto de las ontologías en los componentes de los sistemas de información

Uso de la ontología para componentes de interfaces de usuario.

1.1. 2 Metodologías para el procesamiento de los requerimientos y de

los componentes reutilizables basados en técnicas ontológicas.

Motoshi Saeki en [3] presenta un proyecto de investigación llevado a cabo en la

Universidad de Tokio, donde se busca dar soporte al manejo de requerimientos en

ingeniería de software, a la reutilización de arquitecturas, frameworks y componentes de

software basados en ontologías. Según el autor, el software en la actualidad es desarrollado

adaptando y combinando arquitecturas, componentes, frameworks y paquetes de software.

Es por esta razón que los ingenieros de software, en particular los que trabajan con manejo

de requerimientos y diseños de aplicaciones, deben ser capaces de seleccionar y adaptar las

distintas partes que conforman un software de acuerdo a los requerimientos de sus clientes.

La metodología presentada se basa en el procesamiento semántico de los

requerimientos y de los elementos reutilizables basados en las técnicas ontológicas.

Consiste principalmente en un sistema de ontologías basado en un diccionario de términos

perteneciente a un dominio específico; para esta metodología los requerimientos son

levantados en base a palabras relevantes que se encuentran en este sistema de ontologías.

En cuanto a los elementos de software, se cuenta con una base de datos de elementos

reutilizables incluyendo su información semántica. La selección de los elementos

reutilizables se lleva a cabo haciendo una correspondencia entre la palabra suministrada y

el sistema de ontologías. La figura 1-1 presenta gráficamente la manera como los

requerimientos son procesados utilizando las técnicas ontológicas.

Page 18: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 4

Figura 1-1. Sistema de Ontologías

1.1.3 Desarrollo de herramienta de integración de los procesos de

software basado en el enfoque ontológico ODE (Ontology

Software based software Development Enviroment).

Ricardo de Almeida en [4] expone la necesidad de la elaboración de una

infraestructura basada en modelos conceptuales, que permita la integración de todas las

herramientas involucradas en el proceso de desarrollo de software. Se utilizan las

ontologías para lograr un entendimiento común y como formas básicas de comunicación y

de representación de la información.

Especificación de Requerimientos Implementación (Código Fuente)

Combinación de Vocabularios Composición Adaptación/Integración

Ontología

Fragmentos de Especificaciones de Requerimientos Componentes

Reutilizables: Arquitectura de Paquetes. Ejemplo: Struts.

Page 19: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 5

Expone además los papeles que pueden representar las ontologías en el desarrollo

de los procesos de software, tales como: gestión de requisitos, calidad de software, análisis

de riesgos, etc. Sus autores desarrollaron un sistema basado en el enfoque ontológico, que

permite integrar estas diferentes etapas del desarrollo de software cuyo nombre es ODE

(Ontology Software based software Development Environment). Este sistema, a través del

uso de una ontología que se diseñó para tal fin, permite soportar el proceso de la definición

de software, seguimiento e integración de un software.

1.2 Conceptos Relacionados

El uso de las ontologías en los procesos de desarrollo de software debe estar

relacionado de alguna u otra forma con la definición de una metodología de desarrollo que

se adapte a este tipo de técnicas y que aproveche todos sus beneficios. Se presentan a

continuación algunos conceptos básicos relacionados con el tema.

1.2.1 Metodologías de Software:

Conjunto de procedimientos, técnicas, herramientas y soporte documental que

apoyan el proceso de desarrollo de software, permitiendo producir de manera económica y

organizada software de alta calidad. Puede seguir uno o varios modelos de ciclo de vida, los

cuales indican qué es lo que hay que obtener a lo largo del desarrollo de proyecto pero no

cómo hacerlo.

1.2.2 Clasificación de los modelos de software:

Existe una gran diversidad de metodologías definidas para el desarrollo de software,

se realizó una selección de las más utilizadas en la actualidad, para hacer una comparación

entre las mismas. Se presenta a continuación una definición breve de cada una de ellas, para

luego mostrar una tabla comparativa (Tabla1) donde se resumen las ventajas y desventajas

más relevantes de las mismas.

Page 20: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 6

Modelo en cascada: se basa en un enfoque sistemático secuencial, el cual se inicia

con la especificación de requerimientos por parte del cliente y continúa con la

planificación, el modelado, la construcción y el despliegue, para culminar en el

soporte y mantenimiento del software terminado. Este modelo es útil en situaciones

donde los requerimientos no cambian y donde el trabajo se realiza hasta su

conclusión, de manera lineal [5].

Modelo de procesos incrementales: combina elementos del modelo cascada

aplicado en forma iterativa, este modelo aplica secuencias lineales de manera

escalonada conforme avanza el tiempo en el calendario. Generalmente, al utilizar

este modelo, el primer “incremento” es un producto esencial, al cual es sometido a

una evaluación por parte del cliente, de los resultados de esta evaluación se genera

un plan para el próximo incremento. Dicho plan contiene las modificaciones del

producto esencial con el fin de satisfacer las necesidades del cliente y la entrega de

funcionalidades adicionales. Este proceso se repite después de la entrega de cada

incremento hasta que se haya elaborado el producto completo. Este modelo se

concentra en la entrega de un producto operacional por cada incremento. Este

modelo de desarrollo es útil en ocasiones cuando el personal necesario para una

implementación completa no está disponible. Los primeros incrementos se pueden

implementar con menos gente. Si el producto esencial es bien recibido, se

incorpora, en caso de ser necesario, más personal para continuar con el desarrollo de

los incrementos sucesivos [5].

Modelo DRA (Desarrollo rápido de aplicaciones): es un modelo de software

incremental que tiene como característica principal un ciclo de desarrollo corto. Con

el uso de este modelo se logra un desarrollo rápido mediante un enfoque basado en

componentes reutilizables. Si los requisitos están bien entendidos y se limita el

alcance del proyecto, el proceso DRA permite que un equipo de desarrollo cree un

sistema completamente funcional dentro de un periodo de tiempo muy corto. Este

modelo cumple con las etapas comunes de los antes descritos: La comunicación o

Page 21: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 7

levantamiento de requisitos, la planificación, el modelado, la construcción y el

despliegue. En la etapa de construcción, se destaca el uso de componentes y la

aplicación de la generación automática de código. Es útil para aplicaciones cuyas

funcionalidades puedan ser divididas en módulos desarrollables en menos de tres

meses, de esta manera cada función se puede abordar mediante un equipo de DRA

por separado, para después hacer una integración y formar el sistema final [5].

Modelo de procesos evolutivos: se refieren a modelos iterativos cuya

característica principal es que permiten a los ingenieros de software el desarrollo de

varias versiones cada vez más completas del software.

Construcción de prototipos: este modelo es empleado comúnmente como

una técnica dentro del contexto de los modelos presentados anteriormente.

Este modelo ayuda al ingeniero y al cliente a entender de mejor manera cuál

será el resultado de la construcción cuando los requisitos estén satisfechos.

El prototipo debería servir como un mecanismo para identificar los

requerimientos del software y puede servir como primer sistema.

El modelo en espiral: es un modelo de software evolutivo que conjuga la

naturaleza iterativa de la construcción de prototipos con los aspectos

sistemáticos y controlados del modelo en cascada. En este caso, el software

se desarrolla en una serie de entregas evolutivas. Durante las primeras

iteraciones, las entregas se pueden basar en documentación del modelo o en

un prototipo, mientras que durante las últimas iteraciones se generan

versiones más acabadas del sistema desarrollado. El modelo en espiral

mejora el modelo en cascada enfatizando la naturaleza iterativa del proceso

de diseño.

El modelo de desarrollo concurrente: este modelo se representa en forma

esquemática como una serie de actividades, acciones y tareas de la

ingeniería de software y sus estados asociados. Todas las actividades existen

Page 22: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 8

de forma concurrente, pero se encuentran en diferentes estados. Este modelo

define una serie de eventos que dispararán transiciones de estado a estado

para cada una de las actividades, acciones o tareas de la ingeniería de

software. Este modelo es útil para todos los tipos de desarrollo de software y

proporciona una visión exacta del estado actual de un proyecto [5].

Modelos especializados de proceso:

Desarrollo basado en componentes: incorpora muchas de las

características del modelo en espiral. Es evolutivo por naturaleza y exige un

enfoque iterativo para el desarrollo de software. Sin embargo, el modelo

configura aplicaciones a partir de componentes de software empaquetados

en forma previa. Para iniciar las etapas de modelado y construcción se deben

identificar los componentes candidatos. Estos componentes se pueden

diseñar como módulos de software convencionales o como clases o paquetes

de clases orientados a objetos.

El modelo de métodos formales: comprende un conjunto de actividades

que conducen a la especificación matemática del software de computadora.

Estos métodos permiten al ingeniero de software especificar, desarrollar y

verificar un sistema basado en computadoras al aplicar una notación

matemática rigurosa. Cuando estos modelos se usan durante el diseño sirven

como base para la verificación de programas y, por consiguiente, permiten

descubrir y corregir errores que de otra manera podrían no haberse

detectado[5].

Metodologías Ágiles: representan una alternativa a los procesos de desarrollo de

software tradicionales caracterizados por ser rígidos y dirigidos por la

documentación que se genera en cada una de las actividades desarrolladas; están

constituidas por un conjunto de principios que permiten a los equipos desarrollar

software rápidamente, respondiendo a los cambios que puedan surgir a lo largo del

proyecto. Existe una organización llamada “The Agile Alliance” cuyo objetivo es

Page 23: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 9

promover los conceptos relacionados con el desarrollo ágil de software y con la

implementación de los mismos en las empresas, para ello crearon la llamada

filosofía “ágil” la cual se resume en doce principios :

La prioridad es satisfacer al cliente mediante tempranas y continuas

entregas de software que le aporte un valor.

Dar la bienvenida a los cambios. Se capturan los cambios para que el

cliente tenga una ventaja competitiva.

Entregar frecuentemente software que funcione desde un par de semanas a

un par de meses, con el menor intervalo de tiempo posible entre entregas.

La gente del negocio y los desarrolladores deben trabajar juntos a lo largo

del proyecto.

Construir el proyecto en torno a individuos motivados. Darles el entorno y

el apoyo que necesitan y confiar en ellos para conseguir finalizar el

trabajo.

El diálogo cara a cara es el método más eficiente y efectivo para comunicar

información dentro de un equipo de desarrollo.

El software que funciona es la medida principal de progreso.

Los procesos ágiles promueven un desarrollo sostenible. Los promotores,

desarrolladores y usuarios deberían ser capaces de mantener una paz

constante.

La atención continua a la calidad técnica y al buen diseño mejora la

agilidad.

La simplicidad es esencial.

Las mejores arquitecturas, requisitos y diseños surgen de los equipos

organizados por sí mismos.

En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser

más efectivo, y según esto ajusta su comportamiento.

En cuanto a la aplicabilidad de estas metodologías, las organizaciones deben

identificar el área de negocio donde estas son aplicables, evaluando el grado de

Page 24: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 10

dificultad que tendrá su implantación y la permanencia de estas prácticas, sus efectos

colaterales (tanto positivos como negativos) y lo más importante, la satisfacción de

sus empleados en cuanto a la adopción de este tipo de métodos. Entre las

metodologías ágiles se encuentran: SCRUM, Crystal Methodologies, Dynamic

Systems Development Method (DSDM), Adaptive Software Development (ASD),

Feature-Driven Development (FDD), Lean Development (LD) y Extreme

Programming (XP) [6].

RUP (Rational Unified Proccess) : es un proceso de desarrollo de software que

junto con el lenguaje UML (Unified Modeling Language) constituye una de las

metodologías estándar más utilizadas para el análisis, implementación y

documentación de sistemas orientados a objetos. Se caracteriza por ser iterativo e

incremental, estar centrado en la arquitectura y guiado por los casos de uso. RUP

divide en 4 fases el proceso de desarrollo de software:

Inicio: abarca la comunicación con el cliente y las actividades de

planificación, en esta etapa se propone una arquitectura aproximada para el

sistema y se desarrolla un plan inicial. A través de la definición de casos de

uso son descritos los requerimientos fundamentales del negocio.

Elaboración: en esta etapa se refinan los casos de uso y se expande la

representación arquitectónica para incluir cinco visiones diferentes del

software: el modelo de casos de uso, el modelo de análisis, el modelo de

diseño, el modelo de implementación y el modelo de despliegue.

Construcción: en esta etapa el objetivo es llegar a obtener la capacidad

operacional inicial. Se utiliza el modelo arquitectónico como entrada, esta

fase desarrolla o adquiere los componentes de software que harán que cada

caso de uso sea operativo para los usuarios finales. Se realizan además

actividades de integración (ensamblaje de componentes y pruebas de

integración). Los casos de uso son utilizados para generar un conjunto de

pruebas de aceptación que deben ser ejecutados antes de la siguiente fase.

Page 25: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 11

Transición: su objetivo es la obtención de la versión funcional del proyecto.

Abarca las últimas etapas de construcción del proyecto y la primera parte de

la actividad de despliegue. En esta etapa el software es entregado al usuario

el cual tiene la posibilidad de reportar tantos defectos como cambios sean

necesarios. Además el equipo de proyecto crea la documentación

relacionada con el soporte del proyecto para el lanzamiento final del mismo

[5].

MSF (Microsoft Solution Framework): Es un método flexible e interrelacionado

con una serie de conceptos, modelos y prácticas de uso, que controlan la

planificación, el desarrollo y la gestión de proyectos tecnológicos. MSF se centra en

los modelos de proceso y de equipo, dejando en un segundo plano las elecciones

tecnológicas. Las fases que se deben cumplir en un proyecto según esta metodología

son:

Estrategia y Alcance: esta fase incluye la elaboración del documento de

alcance y estrategia, la formación del equipo de trabajo y distribución de

competencias, la elaboración del plan de trabajo y la elaboración de la

matriz de riesgos y plan de contingencia.

Planificación y Prueba de Concepto: en esta fase deben alcanzarse los

siguientes objetivos: elaboración del documento de planificación y

arquitectura, el cual contiene el detalle de los aspectos funcionales y

operativos, el documento del plan de laboratorio, que contiene la descripción

de la prueba de concepto, los diversos escenarios a simular, el control de

incidencias y las matrices de calidad.

Estabilización: en esta etapa la solución real previamente implantada se

pasa a un entorno real restringido por número de usuarios y en condiciones

tales, que se pueda llevar un control efectivo. Los objetivos fundamentales

de esta fase son: selección del entorno de pruebas pilotos, gestión de

incidencias, revisión de la documentación final de arquitectura, elaboración

Page 26: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 12

de la documentación de formación y operaciones, elaboración del plan de

despliegue y del plan de formación.

Despliegue: en esta fase se ejecutan los planes relacionados con despliegue

y formación elaborados en la etapa anterior. Los principales objetivos de

esta fase son: implantación de la plataforma, puesta en servicio de todas las

funcionalidades del sistema, formación de usuarios y administradores,

continuación de las labores de recepción de incidencias, registros de mejoras

y sugerencias, control de cambios, entrega de los documentos definitivos,

revisión de la matriz de riesgos y matrices de calidad, entrega del proyecto y

cierre del mismo [5].

Tabla 1-1. Tabla comparativa de los modelos de procesos.

Modelo Ventajas Desventajas Iterativa

Cascada Es ideal en situaciones

donde los requerimientos

están fijos y donde el

trabajo se realiza, hasta

su conclusión de manera

lineal, por ejemplo en el

caso de mejoras o

adaptaciones bien

definidas a un sistema ya

existente.

Puede llegar a

producir estados de

bloqueo en los cuales

algunos miembros del

equipo de proyecto

deben esperar a otros

para terminar tareas

independientes.

No

Procesos

Incrementales

Puede ser utilizado

cuando todo el personal

necesario para una

aplicación completa no

está disponible.

Mediante las entregas

parciales del producto

permite validar

progresivamente la

Algunas empresas no

se ajustan a este tipo

de modelos por su

complejidad de

administración.

Si

Page 27: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 13

aplicación y así lograr un

producto mejor adaptado

a los requerimientos

proporcionados por el

cliente.

DRA Puede ser utilizada para

aplicaciones cuyos

módulos puedan

completarse en menos de

tres meses.

Puede ahorrarse dinero,

tiempo y esfuerzo

humano.

Se concentra en los

elementos esenciales del

sistema, desde el punto

de vista del usuario.

Mayor velocidad y

menores costos

pueden tener

influencia en la

calidad del sistema.

Pueden producirse

inconsistencias entre

diseños internos y

entre sistemas.

Posibles violaciones

de los estándares de

programación.

Peligrosa

incoherencia entre el

sistema desarrollado y

el negocio, debido a la

falta de información o

a procesos del

negocio

sobreentendidos.

Si

Evolutivos Se realizan varias

entregas evolutivas

desde documentación

hasta productos de

software permitiendo así

llevar un mejor control

del desarrollo del

proyecto.

En ocasiones en este

tipo de modelos se

presentan problemas

de planificación del

proyecto debido al

número incierto de

ciclos requeridos para

construir el producto

final. Adicionalmente

este tipo de modelo se

Si

Page 28: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 14

enfoca en la

flexibilidad y

extensibilidad por

encima de la alta

calidad, prioriza la

velocidad del

desarrollo sobre los

cero defectos.

Basados en

Componentes

Puede resultar costosa en

algunos casos. Poco

acoplamiento entre los

componentes

desarrollados y los

necesarios para el

desarrollo de una

aplicación determinada.

Limitación en cuanto a

los servicios para

almacenar, localizar,

distribuir y recuperar

componentes.

Reutilización de

Software. Simplifica

las pruebas.

Simplifica el

mantenimiento del

sistema.

Mayor Calidad.

Ciclos de Desarrollo

más cortos.

Si

Formales Es utilizado para

sistemas que deben estar

libres de errores y en

sistemas de alta

seguridad.

Es muy costoso y

consume mucho

tiempo.

Adicionalmente

requiere una

capacitación detallada

y no es un mecanismo

de comunicación

efectivo con clientes

que no tienen muchos

conocimientos

técnicos.

Si

Ágiles No es conveniente para Sencillez en cuanto su Si

Page 29: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 15

ser utilizados en

proyectos donde el

entorno del sistema es

muy cambiante.

Generalmente, usado

sólo para proyectos

pequeños.

Generalmente, los

equipos tradicionales de

trabajo presentan

resistencia al cambio.

aprendizaje y

aplicación.

Entrega rápida de un

software que satisfaga

al cliente. Está basada

en la comunicación y

colaboración entre los

miembros del equipo

y entre los

profesionales y sus

clientes.

RUP Está guiado por la

representación de los

requisitos mediante el

uso de UML (Unified

Model Language) el cual

es una excelente guía

para los equipos de

software en el desarrollo

de una tecnología.

En ocasiones estos

modelos tienen un

nivel de complejidad

que requiere mucha

experiencia

administrativa por

parte del gerente de

proyecto y su equipo

de trabajo para

manejarlo

adecuadamente.

Si

MSF Debido al hecho de que

este modelo requiere un

equipo organizado,

código estructurado y

procesos sistemáticos,

los riesgos se minimizan

y se maximiza la

capacidad de toma

decisiones inteligentes.

Requiere una curva de

aprendizaje de parte

de los equipos de

trabajo para que

pueda ser aplicada de

manera efectiva. Mal

interpretada puede

convertirse en un

obstáculo en los

procesos de

desarrollo.

Si

El propósito de la tabla comparativa anterior es identificar y documentar los diferentes

modelos de software que existen, con el objetivo de comprender las ventajas y desventajas

Page 30: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 16

de cada una y así poder entender como la construcción de una ontología podría apoyar

modelos con este tipo de características.

1.3 Justificación

Existen muy buenas razones para usar las técnicas ontológicas en el proceso de

desarrollo de software. En la actualidad, tanto las empresas como las personas, se enfrentan

continuamente a una gran cantidad de información, por lo cual el acceso a la información

relevante se ha convertido en un factor crítico, es por esto que se hace necesario el uso de

nuevas técnicas que permitan el manejo eficiente de la misma.

Las ontologías facilitan la comunicación entre sistemas informáticos, ya que mejoran la

calidad de las respuestas por medio de la incorporación de una conceptualización del

dominio basada en seres humanos. Entre los aspectos más resaltantes relacionados con el

desarrollo de sistemas de información, en los cuales pueden ser utilizadas las técnicas

ontológicas procesables automáticamente, se tienen:

Para mejorar la calidad del proceso software compartiendo la experiencia en

proyectos de desarrollo.

Para garantizar la consistencia entre todos los artefactos de un proyecto de software

(casos de uso, diagramas de clase, código fuente, etc.) y facilitar la navegación a

través de todos ellos.

Para facilitar el mantenimiento y la reutilización del software.

Para realizar los “modelos de dominio” del proceso de ingeniería de dominio en las

metodologías de Ingeniería del Software basada en la reutilización de componentes.

Para el diseño de interfaces de usuario de calidad.

Para establecer un método sistemático de generación automática de objetos,

patrones y frameworks (p.ej. en Java) a partir de la ontología de dominio.

Para facilitar la generación y validación de modelos UML en proyectos de software.

Page 31: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 17

Para facilitar la transición de la Ingeniería del Conocimiento a la Ingeniería del

Software en proyectos de desarrollo de sistemas software basados en conocimiento.

Como forma de representar meta-modelos en la Ingeniería del Software basada en

Modelos.

1.4 Objetivos

Esta investigación tiene como objetivo general la creación de una ontología basada en

la guía de conocimiento SWEBOK, la cual contenga información acerca de un conjunto de

procedimientos, técnicas y ayudas de documentación para el desarrollo de productos de

software. Se pretende que la ontología resultante cubra por completo el ciclo de desarrollo

de software y que pueda ser utilizada para mejorar la productividad del desarrollo de

sistemas y mejorar la confianza de los clientes finales en los mismos. Adicionalmente, se

espera demostrar la aplicabilidad de esta ontología a través de la creación de un sistema que

incluya todas las etapas de un ciclo de desarrollo y que pueda ser consultado a través de un

navegador Web por los Ingenieros de Software o personal relacionado con esta área.

Como objetivos específicos basados en la utilización de las ontologías como base para

compartir conocimiento de una forma más sencilla y confiable, se consideran los

siguientes:

Mejorar la calidad del proceso software a través del uso de una fuente de

conocimiento común para el uso de los Ingenieros de Software.

Convertirse en el punto de partida para el desarrollo de aplicaciones de usuario

que contribuyan a la toma de decisiones en la definición y ejecución del proceso

software.

Mejorar la integración del conocimiento en Entornos de Ingeniería del Software.

Convertirse en punto de partida para impulsar la investigación en esta área en

nuestra industria de software.

Page 32: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 18

1.5 Plan de Trabajo

Para el desarrollo de este trabajo las actividades propuestas a seguir son las siguientes:

1. Como primera etapa se realizará la recopilación de la información relacionada a

las ontologías.

2. Realizar un estudio de las técnicas ontológicas.

3. Investigación del uso de estas técnicas en el proceso de desarrollo de software.

4. Realizar una identificación de las diferentes áreas relacionadas con el proceso de

desarrollo de software.

5. Definir para cada una de las áreas identificadas la manera como serán utilizadas

las técnicas ontológicas en cada una de ellas.

6. Definir los procedimientos y técnicas relacionados con cada una de las etapas

del proceso de desarrollo de software.

7. Aplicación de la metodología planteada a un proyecto de software de un

dominio seleccionado.

1.6 Alcance

El alcance de este proyecto se fundamenta en la definición de una metodología basada

en técnicas ontológicas. Se puede plantear como una extensión del mismo la creación de un

software que permita soportar la metodología creada y apoyar a cada una de las etapas del

desarrollo de software.

Page 33: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 19

1.7 Organización de la Tesis

Se presenta a continuación un resumen de los siguientes capítulos y secciones en los que

está dividido este trabajo:

Capítulo 2, Conceptos Teóricos: En este capítulo se presenta en profundidad la definición

de Ontologías, sus características, tipos y lenguajes utilizados para su representación.

Además se presenta la relación existente entre las Ontologías y el desarrollo de procesos de

software.

Capítulo 3, Construcción de una Ontología para la Ingeniería de Software: En este

capítulo se presenta, inicialmente los conceptos relacionados con la creación de las

ontologías y los lenguajes que soportan su creación. Posteriormente se muestra el análisis

realizado sobre los conceptos existentes en la guía SWEBOK (Guía para la Ingeniería de

Software), obteniéndose como resultado una representación de los mismos en un diagrama

de clases UML, el cual representa el conocimiento contenido en esta guía para finalmente

llevar este diagrama a una ontología representada en el lenguaje OWL (Ontology Web

Language). Esta ontología será utilizada para la creación de un sistema que servirá de

apoyo a consultas relacionadas con el área de conocimiento de la Ingeniería de Software.

Capítulo 4, Uso de la aplicación como apoyo a un proyecto de un dominio específico:

En este capítulo, se presenta la manera como la ontología creada en el capítulo 3 puede ser

utilizada para apoyar a una metodología en específico, esto se logra mediante la selección

de un proyecto en un dominio determinado, para el cual se plantean interrogantes

relacionadas con cada una de las etapas al desarrollo del software, demostrando como la

aplicación desarrollada da respuesta a cada una de ellas.

Page 34: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 1. Introducción 20

Capítulo 5, Conclusiones y Recomendaciones: Este último capítulo se refiere a las

conclusiones obtenidas en cada una de las partes del manuscrito y las posibles

recomendaciones que se tuvieron al respecto.

Page 35: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 21

Capítulo 2. Conceptos teóricos.

El objetivo fundamental de este capítulo es presentar de manera detallada los

conceptos más importantes relacionados con las ontologías y su relación con la Ingeniera

de Software. El capítulo comienza con una descripción del significado de las ontologías, su

importancia, utilidad, relación con otras áreas del conocimiento como: Web Semántica,

Software Enginering Enviroments (SEE), Ingeniería de Dominios (Domain Engineering),

Inteligencia Artificial, tipos, características fundamentales, metodologías para su

definición; adicionalmente se describen los lenguajes que se utilizan para definirlas, y

algunas herramientas existentes para la definición de las mismas, se introduce además el

concepto de Ingeniería Ontológica, los criterios de diseño y las diferentes etapas que deben

ser tomadas en cuenta para el desarrollo de las ontologías; finalmente, se presenta la

relación que existe en la actualidad entre las ontologías y los procesos de desarrollo de

software y como pueden las mismas contribuir con mejoras sustanciales en el ciclo de vida

del desarrollo de un proyecto.

2.1 Definición de ontología.

Este concepto tiene sus orígenes en la Filosofía, cuyo significado es el de una

explicación sistemática de la existencia, proviene del griego, en el que significa “estudio

del ser”. No hay una definición aceptada unánimemente para el concepto de ontología, sino

que cada una de las definiciones que aparecen en la literatura aporta diferentes y a la vez

complementarias visiones del significado de esta palabra. Filósofos e Ingenieros de

Software tienen puntos de vistas diferentes en cuanto a la definición de las ontologías. Para

Page 36: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 22 Guarino [2], ontología describe una cierta realidad con un vocabulario específico, por otro

lado Gruber [10] define una ontología como una especificación que proporciona una

estructura y contenidos de forma explícita. Apartándonos del aspecto filosófico, podemos

definir a una ontología como un consenso necesario sobre cómo expresar y entender

información de un determinado dominio [11]. Mas profundamente una ontología o también

llamada base de conocimiento (siglas en inglés KB) es una especificación explícita de una o

parte de una conceptualización que incluye vocabulario de términos y la especificación del

significado de cada uno de ellos, define un vocabulario común para los que necesitan

compartir información acerca de un dominio; haciendo una analogía al desarrollo de

sistemas, es lo que una especificación es a un programa. Entendiéndose conceptualización

como una interpretación estructurada de una parte del mundo que usan los seres humanos

para pensar y comunicarse sobre ella. En el área de la informática, una conceptualización

podría ser, por ejemplo, la clasificación de sistemas informáticos atendiendo su naturaleza

física en sistemas hardware y software.

Desde el punto de vista informático, las ontologías especifican un vocabulario relativo

a un cierto dominio. Este vocabulario define: entidades, clases, propiedades, predicados y

funciones y, la relación entre estos componentes.

Podemos tomar como ejemplo el área de la ingeniería de diseño, supongamos que un

grupo de ingenieros desea definir un vocabulario de entendimiento común en cuanto a los

componentes eléctricos, para lograr su objetivo se define una ontología del dominio de los

componentes eléctricos, asumiendo que se tiene un vocabulario donde se discuten

elementos conceptuales como: transistores, amplificadores operacionales, voltajes y las

relaciones existentes entre estos componentes, los amplificadores operacionales son un tipo

de componentes eléctricos y los transistores están compuestos de amplificadores

operacionales. Identificar este tipo de vocabulario y su conceptualización generalmente

requiere un análisis cuidadoso, que se explicará más adelante en este capítulo, del tipo de

objeto y las relaciones que pueden existir en un determinado dominio.[1]

Page 37: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 23

2.1.1 Importancia de las ontologías.

La importancia de las ontologías se puede resumir en dos aspectos

fundamentales:

El análisis ontológico clarifica la estructura del conocimiento. Dado un

dominio, su ontología constituye el corazón de cualquier representación

de un sistema de conocimiento para ese dominio. Sin ontologías o sin

las respectivas conceptualizaciones que soportan el conocimiento no

puede existir un vocabulario para representar el conocimiento. Así el

primer paso para obtener un efectivo sistema de representación del

conocimiento y su vocabulario es llevar a cabo un efectivo análisis

ontológico del campo o dominio de estudio, un análisis pobre conlleva a

bases de conocimiento incoherentes.

Las ontologías permiten compartir conocimiento. Supongamos que se

realiza un análisis y se obtiene un conjunto satisfactorio de

conceptualizaciones y la representación de sus términos para un área en

específica, por ejemplo el dominio de los componentes electrónicos, la

ontología resultante debe incluir términos específicos del dominio

como: transistores y diodos; términos generales como funciones y

modos; y términos que describen el comportamiento como, voltajes.

Para construir un lenguaje de representación del conocimiento basado

en el análisis previo, se necesita asociar los términos con los conceptos

y las relaciones, y definir una sintaxis de codificación del conocimiento

en término de los mismos. Es posible compartir un lenguaje de

representación de conocimiento con otros que tengan similares

necesidades para el mismo dominio, de tal modo que se elimine la

necesidad de replicar el proceso de análisis del conocimiento. Compartir

ontologías puede de este modo significar la base de la definición de un

lenguaje de representación del conocimiento [11].

Page 38: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 24

2.1.2 Utilidad de las ontologías.

Se mencionan a continuación el uso que, en la actualidad, tienen las ontologías:

Sirven para entender como diferentes sistemas comparten información.

Se utilizan para descubrir distorsiones que puedan presentarse en los

procesos cognitivos de aprendizaje en un mismo contexto.

Sirven para formar patrones para el desarrollo de Sistemas de

Información. En el ámbito del software se viene utilizando hace algunos

años para describir las propiedades del software (componentes,

arquitecturas, lenguajes de definición), este punto se verá con más

detalle en la última parte de este capítulo.

Permiten compartir y reutilizar conocimiento común.

Ayudan a establecer comunicación entre personas y organizaciones con

el fin de unificar diferentes áreas de investigación

Permiten la interoperatividad entre sistemas de software usando

ontologías como un lenguaje intermedio para unificar diferentes

lenguajes y herramientas.

Aumentan los beneficios de la Ingeniería de Sistemas ya que el uso de

ontologías facilita la construcción de software clásico o basado en el

conocimiento porque permite que los sistemas se puedan reutilizar [11].

2.1.3 Relación con otras áreas del conocimiento.

Las ontologías se relacionan y son aplicables en la actualidad a diversas áreas

del conocimiento, en las cuales contribuyen a la realización de una actividad más

efectiva, se seleccionaron algunas áreas consideradas importantes para describir la

forma en que las ontologías trabajan en conjunto con las mismas:

Web Semántica: la Web Semántica es una Web extendida, dotada de mayor

significado en la cual los usuarios de Internet pueden encontrar respuestas a

Page 39: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 25

sus preguntas de manera más rápida y sencilla gracias a una información

bien definida. Esto permite compartir, procesar y trasmitir información de

forma sencilla. Cuando se habla de que es una Web dotada de significado,

quiere decir, de más semántica, lo cual le permite procesar sus contenidos,

razonar con este, combinarlo y realizar deducciones lógicas para resolver

problemas cotidianos automáticamente. Es una infraestructura basada en

metadatos los cuales permiten razonar en la Web extendiendo de esta forma

su capacidad, proporcionando a las máquinas la capacidad de resolver

problemas bien definidos, a través de operaciones bien definidas que se

llevan a cabo sobre datos bien definidos. La manera como se relaciona este

nuevo enfoque de la Web con las ontologías es que estas últimas son

utilizadas como estándar de la Web Semántica para obtener una adecuada

definición de los datos a través del lenguaje OWL (Ontology Web

Language), el cual permite definir ontologías estructuradas que pueden ser

utilizadas a través de diferentes sistemas, usuarios, bases de datos y

aplicaciones que necesitan compartir información específica, es decir, en un

campo determinado como por ejemplo, el de las finanzas, la medicina,

deportes, etc; en la sección 4 de este capítulo se expondrá una explicación

más detallada de este lenguaje. [12]

Ingeniería de Dominio (Domain Engineering): un dominio es un área

funcional diferenciable con requisitos y rasgos similares (features) que

puede ser soportada por algún tipo de sistema de software. La Ingeniería de

Dominios se encarga de capturar, organizar y representar la información útil

para el desarrollo de sistemas de software, de manera que esta pueda ser

reutilizada para crear nuevos sistemas [13]. La idea principal es lograr

desarrollar un conjunto de productos de software que comparten

información y tienen aspectos comunes entre si, pudiendo de esta forma ser

reutilizados por los ingenieros de software. Su propósito es identificar,

modelar, construir y catalogar un conjunto de productos de software que

pueden ser aplicados a existentes o futuros sistemas en un dominio de

Page 40: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 26

aplicaciones particular. Un proceso de Ingeniería de Dominios debe

contemplar por lo menos tres actividades principales: análisis de dominio,

especificación de la infraestructura e implementación de la infraestructura.

En la Ingeniería de Dominio, las ontologías pueden ejecutar distintos roles,

en esta área el interés principal se basa en el uso de las ontologías como una

especificación, en la cual la ontología de un dominio proporcione un

vocabulario para requerimientos específicos de una o mas aplicaciones.[14]

Software Engineering Environments (SEEs): representan colecciones

integradas de herramientas que facilitan las actividades de la ingeniería de

software a través de todo su ciclo de vida. En este contexto las ontologías

son utilizadas para mejorar el proceso de integración de los SEEs, ya que

permiten conceptualizar un dominio a través de la definición de clases de

objetos y sus relaciones. El enfoque que se sigue para el caso de los SEEs se

centra principalmente en que las herramientas que se desean integrar estén

basadas en ontologías, esto con el objetivo de facilitar este proceso [15].

Gestión del Conocimiento (Knowledge Management): es un concepto

utilizado para la transmisión de conocimiento y experiencia entre los

empleados dentro de una organización. Usualmente este proceso requiere

capturar, organizar y almacenar el conocimiento para transformarlo en un

activo intelectual que se comparte. La actividad de la gestión de

conocimiento es amplia y compleja, esta puede ser manejada como un

conocimiento individual o como un conocimiento empresarial. Para lograr

estos objetivos, las ontologías son consideradas una metodología adecuada

para soportar la variedad de actividades de la gestión del conocimiento,

como la recuperación del conocimiento, su almacenamiento y distribución.

Las ontologías pueden ser vistas como la clasificación de conocimiento,

definiendo el vocabulario que facilita la comunicación del conocimiento,

almacenamiento, búsqueda y distribución de los sistemas basados en gestión

del conocimiento. La definición de una ontología es una tarea laboriosa que

consume gran cantidad de tiempo. En general, la aplicación e identificación

Page 41: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 27

de una ontología es sólo para dominios específicos, por ejemplo: medicina,

turismo, la industria de metal, etc. [16]

Inteligencia Artificial (IA): es una de las áreas de la ciencia de la

computación encargadas de que la creación de hardware y software tenga

comportamientos inteligentes. Una de las principales áreas de estudio de la

Inteligencia Artificial está representada por los Agentes Inteligentes, los

cuales son entidades de software con una arquitectura robusta que puede

funcionar en distintos entornos o plataformas de computación y que son

capaces de realizar de forma “inteligente” y autónoma distintos objetivos,

intercambiando información con el entorno, o con otros agentes humanos o

computacionales. En esta área, las definiciones de las ontologías juegan un

papel importante ya que permiten establecer un consenso de comunicación

sobre cómo se expresa y entiende la información de un determinado dominio

en el cual se desenvuelven los agentes de software. [17]

2.1.4 Formas de utilizar las ontologías en las aplicaciones

Las aplicaciones de las ontologías pueden ser clasificadas en 4 categorías

principales. Se debe tener presente que una aplicación puede incluir una o más de

estas categorías:

Autor Neutral (Neutral Authoring): una ontología es desarrollada como

un simple lenguaje y es trasladada a diferentes formatos y utilizada en

aplicaciones de múltiples usos.

Ontología como una especificación: se crea una ontología de un dominio

dado, la cual tiene la capacidad de proporcionar un vocabulario para la

especificación de requisitos de una o más aplicaciones. En este caso, una

ontología puede ser vista como un modelo del dominio. La ontología es

utilizada como una base para la especificación y desarrollo de aplicaciones

en el dominio seleccionado, permitiendo así la reutilización de

conocimiento.

Page 42: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 28

Para acceder a información: una ontología es utilizada para permitir a

una aplicación de múltiples usos (o a los humanos) tener acceso a diversas

fuentes heterogéneas de información, la cual normalmente es expresada

usando un vocabulario diverso o formatos inaccesibles.

Búsquedas basadas en ontologías: una ontología es utilizada en la

búsqueda de recursos en un repositorio de información, mejorando la

precisión y reduciendo la cantidad de tiempo invertido en realizar la

búsqueda. [14]

2.2 Elementos que componen las ontologías

Los elementos de los que se compone una ontología son:

Conceptos: cualquier entidad sobre la que se puede decir algo, a la que se le

puede poner un nombre. Además de esto también la descripción de una tarea,

función, acción, estrategia, etc. Por ejemplo: coche, hombre, árbol.

Relaciones: representan una interacción entre conceptos del dominio. Por

ejemplo: subclase-de, parte-de, etc.

Funciones: son un caso especial de las relaciones, en el que el elemento n-ésimo

de la relación es único para los n-1 restantes. Por ejemplo: madre-de, precio-de,

etc.

Axiomas: son sentencias siempre verdaderas para dicho dominio. Por ejemplo:

“el lunes va después del domingo”.

Instancias: son conceptos concretos. Por ejemplo: David, Olmo.

No siempre todos estos elementos deben aparecer en una ontología. En el caso de que se

tenga una ontología que posee solo conceptos y relaciones se llama taxonomía u ontología

ligera [17].

Page 43: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 29

2.3 Tipos de ontologías

Las ontologías se pueden clasificar teniendo en cuenta varios criterios, se toman en

cuenta dos de ellos:

a) El alcance de su aplicabilidad

Ontologías de Dominio: Proporciona el vocabulario necesario para

describir un dominio dado. Incluye términos relacionados con:

.- Los objetos de dominio y sus componentes (quirófano,

estetoscopio).

.- Un conjunto de verbos o frases que dan nombre a actividades y

procesos que tienen lugar en ese dominio (anestesiar, dar a luz).

.- Conceptos primitivos que aparecen en teorías, relaciones y

formular que regulan o rigen el dominio (después de nacer el mejor

valor para el Test del bebe es el 10).

Ontologías de Tareas: Proporcionan el vocabulario para describir

términos involucrados en los procesos de resolución de problemas

los cuales pueden estar relacionados con tareas similares en el mismo

dominio o en dominios distintos. Incluye nombres, verbos, frases y

adjetivos relacionados con la tarea (objetivo, planificación, asignar,

clasificar).

Ontologías Generales: Representa los datos generales que no son

específicos de un dominio. Por ejemplo, ontologías sobre el tiempo,

el espacio, ontologías de conducta, de capacidad, etc.

b) Cantidad y tipo de conceptualización

Terminológicas: Especifican los términos que son usados para

representar conocimiento en el universo de discurso. Son utilizadas

para unificar vocabulario en un dominio determinado.

Page 44: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 30

De información: Especifican la estructura de almacenamiento de

bases de datos. Ofrece un marco para el almacenamiento

estandarizado de información (estructura de registros de la BD).

De modelado del conocimiento: Especifican conceptualizaciones

del conocimiento. Poseen una rica estructura interna y suelen estar

ajustadas al uso particular del conocimiento que describen (términos

y semántica) [11].

2.4 Lenguajes utilizados para la definición de Ontologías

Los primeros lenguajes para la representación de las ontologías estaban basados en

representación del conocimiento, entre ellos se tienen:

1.- CycL: lenguaje utilizado en la ontología Cyca basado en marcos y en lógica de

primer orden.

2.- Ontolingua: lenguaje construido sobre KIF (Knowledge Interchange Format-

sintaxis formal utilizada para expresar conocimiento) y basado en marcos y en

lógica de primer orden.

3.- LOOM: lenguaje basado en lógica de descripciones y reglas de producción.

4.- OCML: sistema de representación de conocimiento para el desarrollo de

ontologías Ontolingua y métodos de resolución de problemas (PSMs –Problem

Solving Methods) ejecutables.

5.- OKBC (Open Knowledge Base Connectivity): protocolo de acceso a bases de

conocimiento construidas con diferentes sistemas de RC.

Page 45: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 31

Con el auge de Internet surgen lenguajes de ontologías para la web con sintaxis

basada en HTML o XML:

1.- SHOE (Simple HTML Ontology Extension): lenguaje basado en marcos y

reglas diseñado como extensión del HTML.

2.- RDFa: modelo para la descripción de recursos Web basado en redes semánticas

y con sintaxis XML.

3.- RDF Schema: lenguaje construido sobre RDF que incorpora primitivas de

marcos (clases y propiedades).

Los lenguajes presentados anteriormente sirven tanto para la descripción de

ontologías como para la publicación de contenidos web procesables por máquinas,

de ahí que se les llame también lenguajes para el marcado ontológico.

Los lenguajes de ontologías más recientes son extensiones de RDF(S):

1.- DAML+OIL: fusión de DAML (DARPA Agent Markup Language) y OIL

(Ontology Inference Layer ) que amplía RDF(S) con primitivas de lógica de

descripciones.

2.- OWL (Web Ontology Language): propuesta del W3C a partir de DAML+OIL

para responder a las necesidades de la web semántica. Es un mecanismo para

desarrollar temas o vocabularios específicos en los que asociar esos recursos. Lo

que hace OWL es proporcionar un lenguaje para definir ontologías estructuradas

que pueden ser utilizadas a través de diferentes sistemas. [8]. Incluye tres niveles:

OWL Lite, OWL DL y OWL Full. Para los efectos de esta investigación y para

soportar la continuidad de la misma, fue seleccionado este lenguaje para el

desarrollo de la Ontología, ya que está diseñado para ser usado en aplicaciones que

Page 46: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 32

necesitan procesar el contenido de la información en lugar de únicamente

representar la información para los humanos. OWL facilita un mejor mecanismo de

interpretabilidad del contenido Web que los mecanismos admitidos por XML, RDF

y esquema RDF (RDF-S) proporcionando vocabulario adicional junto con una

semántica formal [36].

A la hora de elegir un lenguaje para la definición de una Ontología deben tenerse en

cuenta los siguientes aspectos:

El lenguaje debe poseer una sintaxis bien definida para poder leer con

facilidad la ontología definida.

Debe tener una semántica bien definida para comprender perfectamente el

funcionamiento de la ontología.

Debe tener suficiente expresividad para poder capturar varias ontologías.

Debe ser fácilmente mapeable desde/hacia otros lenguajes ontológicos.

Debe ser eficiente a la hora de realizar razonamiento.

2.5 Herramientas para definir ontologías:

Entre las herramientas más destacadas utilizadas en la actualidad para la

construcción de las ontologías se encuentran:

Protégé 2000: herramienta a través de la cual el usuario puede construir

ontologías de dominio, generar usuarios de entrada de datos y efectuar la

propia entrada de datos. Es una herramienta que permite acceso a

aplicaciones externas basadas en conocimiento. Además es una biblioteca a

la que otras aplicaciones pueden acceder, permitiéndoles acceder a las bases

Page 47: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 33

de conocimiento de las cuales se dispone. Está disponible en:

http://protege.stanford.edu/.

Ontology Server: herramienta que permite al usuario la construcción de

ontologias que comparten grupos geográficamente distribuidos. Fue

desarrollado en el laboratorio de Sistemas de Conocimiento en la

Universidad de Stanford. Este servidor es una extensión de Ontolingua. Al

comienzo el término Ontolingua se usaba para referirse tanto al lenguaje

para representar ontologías como a la herramienta utilizada para

construirlas. Hoy, el término se utiliza para referirse al lenguaje

proporcionado por el Ontology Server .Su arquitectura permite el acceso a

una librería de ontologías, traductores de lenguajes y a un editor para crear

y navegar por una ontología. Su servidor se encuentra disponible en la

URL: http://www-ksl-svc.stanford.edu:5915

OntoEdit: es un ambiente para soportar las actividades involucradas en los

procesos relacionados con la Ingeniería Ontológica. Está basado en un

poderoso modelo de ontologías, el cual puede ser serializado utilizando

XML (Extensible Markup Language). Se encuentra disponible es la

siguiente URL: http://www.ontoknowledge.org/tools/ontoedit.shtml

OilEd: es un editor de ontologías gratuito que permite al usuario construir

ontologias utilizando el lenguaje DAM+OIL. Aunque no posee todas las

funcionalidades de otros editores de ontologías, proporciona suficiente

funcionalidad para permitir a los usuarios construir ontologías. Se encuentra

disponible en la siguiente dirección URL: http://oiled.man.ac.uk/

Page 48: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 34

2.6 Ingeniería Ontológica y Modelado de Ontologías

Definición de la Ingeniería Ontológica: la Ingeniería Ontológica se refiere al

proceso de construir y mantener una ontología. A través de ella se pretende elaborar

representaciones conceptuales explícitas dentro de un determinado dominio y tiene

su campo de aplicación en el estudio de todo tipo de problemas que no están

claramente estructurados, como, el procesado del lenguaje natural, recuperación

inteligente de información, organización de bases de datos, modelado y simulación

de sistemas, etc.

Criterios de Diseño: cuando se pretende representar algo en una ontología, se

deben realizar decisiones de diseño. Como consecuencia de esto se propone un

conjunto preeliminar de criterios para el diseño de las ontologías, cuyo propósito es

compartir conocimiento y lograr así la interoperabilidad entre programas basados en

una conceptualización compartida[10]:

Claridad y objetividad: la ontología debe proporcionar al usuario el

significado de los términos de forma efectiva y en lenguaje natural

para facilitar su compresión.

Completitud: las definiciones han de expresarse en términos

necesarios y suficientes.

Coherencia: debe permitir hacer inferencias que sean consistentes

con las definiciones.

Máxima extensibilidad monótona: una ontología debe ser diseñada

para anticipar el uso de un vocabulario compartido. Las

especializaciones o generalizaciones deben poder incluirse en la

ontología sin necesidad de revisar las definiciones ya existentes.

Diversificación: se deben poder diversificar las jerarquías incluidas

para aumentar la potencia de los mecanismos de herencia múltiple.

Page 49: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 35

Estandarización: se debe tratar de utilizar un vocabulario lo más

universal posible. [11]

Minimización de la distancia semántica: conceptos similares deben

estar agrupados y representados utilizando las mismas primitivas.

Mínimo compromiso ontológico: debe existir al menos una cantidad

posible de suposiciones acerca del mundo modelado.

Proceso de desarrollo de las ontologías: el proceso de desarrollo de las ontologías

incluye las tareas que se deben llevar a cabo para la construcción de las mismas.

Existe un estándar establecido por la IEEE en 1991 para el desarrollo de software

en general llamado “Standard for Developing Software Life Cycle Proccesses” , las

cuales adaptadas al proceso de desarrollo de las ontologías dividen este proceso de

desarrollo es tres etapas en general:

Actividades ligadas al manejo del proyecto: Planificación, control

del seguimiento de la planificación y asegurar la calidad del

producto.

Actividades orientadas al desarrollo de la ontología:

especificación, conceptualización, formalización, implementación

y mantenimiento.

Actividades integrales: adquisición de conocimiento, integración

con otras ontologías, evaluación y documentación.

Como un enfoque general basado en un enfoque iterativo, se pueden ver las

diferentes etapas que deben seguirse para el desarrollo de las ontologías, en la figura 2-

1 se observan las diferentes etapas de este proceso [20]:

Page 50: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 36

Figura 2-1. Etapas del proceso de desarrollo de ontologías.

Determinar el ámbito: en esta etapa se debe definir, cuál es el dominio

que va a cubrir la ontología, para qué va a ser utilizada, y cuáles son los

tipos de preguntas que la ontología va a responder.

Considerar la reutilización: es siempre de utilidad considerar lo que otros

han realizado en cuanto a una ontología determinada y chequear si se

puede redefinir y extender las fuentes existentes para nuestro dominio y

tarea particular. Esta reutilización permite, ahorrar esfuerzos e interactuar

con otras herramientas que utilizan ontologías ya definidas y validadas.

Muchas ontologías están disponibles en formato electrónico y pueden ser

importadas en un ambiente de desarrollo de ontologías. Existen librerías de

ontologías reutilizables en la literatura y en la Web, por ejemplo:

Ontolingua (http://www.ksl.stanford.edu/software/ontolingua/), DAML

(http://www.daml.org/ontologies/). Existe también un determinado número

de ontologías comerciales públicas, por ejemplo: UNSCSP (United Nations

Standard Products and Services Code, http://www.unspsc.org/),

RossetaNet http://www.rosettanet.org.

Enumerar los términos: en esta etapa debe especificarse, cuales son los

términos de los cuales se va a hablar, cuales son las propiedades de estos

términos, que se quiere expresar acerca de los mismos. Es de utilidad en

esta etapa escribir toda la lista de términos bien sea para hacer oraciones

sobre ellas o para explicárselas al usuario.

Definir las clases: se deben definir las clases que son una representación

del dominio, representa una colección de elementos con propiedades

determinar ámbito

considerar reuso

enumerar términos

definir clases

definir propiedades

definir restricciones

crear instancias

Page 51: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 37

similares. En esta definición se debe tomar en consideración los siguientes

aspectos importantes:

o Manejar el concepto de herencia que pueda existir en las relaciones

entre las clases,

o Descripción de las clases en lenguaje natural, debe existir una

documentación detallada.

o Listar las suposiciones relevantes que se hayan hecho acerca del

dominio.

o Listar los sinónimos.

Adicionalmente existen posibles enfoques en los cuales se puede basar la

definición de la jerarquía de las clases:

o Top-down: comienza con la definición de los conceptos más

generales en el dominio y continúa con la subsiguiente

especialización de los conceptos.

o Botton-Up: comienza con la definición de las clases más

específicas y continúa con la inclusión de las mismas en conceptos

más generales.

o Combinación de los dos anteriores: representa una combinación

de ambas técnicas, top-down y botton-up .

Definir las propiedades: las clases por si mismas no proporcionan

suficiente información, es por esto que se hace necesario describir la

estructura interna de los conceptos y asociarlos a las clases previamente

definidas. Las propiedades de las clases son conocidos como slots , las

cuales describen los atributos de las instancias de una clases y las

relaciones con otras instancias. En esta etapa deben definirse dichas

propiedades con sus tipos; con respecto a las propiedades y las clases debe

tomarse en cuenta lo siguiente:

o Una subclase hereda todas las propiedades de la superclase.

Page 52: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 38

o Si una clase tiene múltiple superclases, ésta hereda las propiedades

de cada una de ellas.

Definir los restricciones asociadas a cada una de las propiedades: estas

restricciones describen el límite del conjunto de valores para una propiedad

determinada; tipo de los valores, valores permitidos, la cardinalidad y otras

características que los valores puedan tomar.

Crear las instancias: se deben definir las instancias de cada una de las clases

establecidas, las clases se convierten en un tipo directo de una instancia, las

propiedades deben ser asignadas a estas instancias tomando en cuenta las

restricciones previamente determinadas. Definir una instancia de una clase

requiere: (1) seleccionar la clase, (2) Crear una instancia individual de esa

clase, (3) Completar los valores de las propiedades asociadas a esas clases.

[18] [19].

Metodologías existentes para el modelado de ontologías: las metodologías para

la construcción de las ontologías se dividen en dos grupos. Por un lado

metodologías para construir ontologías desde cero. Por otro lado, metodologías para

construir ontologías a través de un proceso de reingeniería.

Metodologías para construir ontologías a partir de cero:

Metodología Cyc: la metodología Cyc (Lenan, 1990), define una

ontología como la extracción del conocimiento común que está

implícito en distintas fuentes; recomienda seguir los siguientes pasos:

o Codificación manual del conocimiento implícito y explícito de

diferentes fuentes.

o Codificación del conocimiento utilizando herramientas de

software.

o Delegación de la mayor parte de la codificación en las

herramientas [20].

Page 53: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 39

Metodología de construcción de ontologías de Uschold y King: los

pasos propuestos en esta metodología son:

o Identificar el propósito.

o Capturar la ontología.

o Codificación.

o Identificar ontologías existentes.

o Evaluación.

o Documentación [20].

Metodología de construcción de ontologías de Gruninger y Fox:

para esta metodología el primer paso es identificar las aplicaciones

posible en las que se utilizará la ontología, usando posteriormente un

conjunto de preguntas, llamadas preguntas de competencia, para

determinar el ámbito de la ontología; sugiere los siguientes pasos:

o Identificar los escenarios motivantes.

o Preguntas informales de competencia.

o Terminología formal.

o Preguntas formales de competencia.

o Axiomas formales

o Teoremas de computación [20].

Metodología Kactus: para esta metodología la ontología se construye

sobre una base de conocimiento por medio de un proceso de

abstracción; los pasos propuestos son:

o Especificación de la aplicación.

o Diseño preeliminar basado en categorías ontológicas.

o Refinamiento y estructuración de la ontología [20].

Page 54: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 40

Methontology: es una metodología para construir ontologías tanto

partiendo desde cero como a través de un proceso de reingeniería; se

proponen los siguientes pasos:

o Especificación

o Conceptualización.

o Formalización.

o Implementación.

o Mantenimiento [20].

Metodología On-To-Knowledge: este proyecto aplica ontologías a la

información disponible electrónicamente para mejorar la calidad de la

gestión del conocimiento en organizaciones grandes y distribuidas, La

metodología proporciona vías para introducir conceptos y

herramientas de gestión de conocimiento en empresas, logrando

presentarlo así de manera más eficiente y efectiva. Esta metodología

está basada en el análisis de escenarios de uso, los pasos que

recomienda son los siguientes:

o Estudio de la viabilidad.

o Comienzo.

o Refinamiento.

o Evaluación [20].

Metodologías para construir ontologías a través de un proceso de reingeniería:

la reingeniería ontológica es el proceso de recuperar y mapear un modelo

conceptual de una ontología implementada en otro modelo más adecuado, el cual

sería reimplementado, existe un método basado en el esquema de la reingeniería de

Chikosky que contempla 3 actividades principales:

o Ingeniera Inversa

o Reestructuración

o Ingeniería hacia delante [20].

Page 55: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 41

2.7 Relación de las ontologías con la Ingeniería de Software

Las ontologías desempeñan un papel en el desarrollo de sistemas relacionado con el

modelado semántico, metadatos, análisis y diseño de patrones y creación de librerías de

software reutilizable.

Se mencionan, a continuación, un conjunto de aspectos que representan los vínculos

entre la Ingeniería de Software y la representación del conocimiento mediante Ontologías:

Pueden utilizarse como mecanismos para facilitar el desarrollo de proyectos

de software.

Se pueden crear ontologías para conceptualizar el área de conocimiento de la

Ingeniería de Software.

Modelado y meta-modelado de sistemas.

Comunicación entre participantes del proceso.

Para mejorar la calidad del proceso de software compartiendo la experiencia

en proyectos de desarrollo.

Para crear sistemas de ayuda a la toma de decisiones en la definición y

ejecución del proceso de software.

Para garantizar la consistencia entre todos los artefactos de un proyecto de

software (casos de uso, diagramas de clase, código fuente, etc) y facilitar la

navegación a través de todos ellos.

Para mejorar la integración del conocimiento en entornos de Ingeniería de

Software compuestos por varias herramientas CASE.

Para realizar los modelos de dominio del proceso de ingeniería de dominio

en las metodologías de software basada en componentes.

Para el diseño de interfaces de usuario de calidad.

Para establecer un método sistemático de generación automática de objetos,

patrones, y frameworks a partir de la ontología de dominio.

Page 56: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 42

Para facilitar la generación y validación de modelos UML en proyectos de

software.

Para mejorar el repositorio de una herramienta CASE mediante un motor

ontológico.

Para facilitar la transición de la Ingeniería del Conocimiento a la Ingeniería

del Software en proyectos de desarrollo de sistemas software basados en

conocimiento.

Como forma de representar meta-modelos en la Ingeniería de Software

basada en modelos.

Se pueden definir ontologías sobre “Calidad del software”, “Mantenimiento

de Software”, “Proceso de Software”, “Componentes de Software”, “Diseño

de Interfaces de usuario”

Mantenimiento y reutilización de software.

Educación a distancia sobre Ingeniería de Software.

Localización de recursos en la Web Semántica.

Existen diversas ontologías ya definidas sobre “Ingeniería de Software”:

Según el IEEE Std Glossary of Software Engineering Terminology.

Según el informe SWEBOK 2004. Software Engineering Body of

Knowledge.

Según el informe ACM/IEEE SE 2004. Currículum Guidelines for undergraduate Degree Programs in Software Engineering.

Page 57: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 2. Conceptos Teóricos 43

2.8 Áreas de Aplicación

Las áreas de aplicación de las ontologías son muy amplias y pueden utilizarse en áreas como:

Ingeniera del conocimiento

Representación de conocimiento

Procesamiento del lenguaje natural

Sistemas de información cooperativos

Integración inteligente de información

Recuperación de Información

Gestión del conocimiento

Comercio electrónico

Ingeniería de Software [11].

Page 58: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 44

Capítulo 3. Construcción de una

Ontología para la guía de conocimiento

SWEBOK.

Tal como se mencionó en capítulos anteriores, la utilidad fundamental de una

ontología radica en el hecho de clasificar conceptos y permitir compartir conocimiento en

un área de un dominio específico. Se presenta a continuación el proceso de creación de una

ontología relacionada con la Ingeniería de Software; cuyo objetivo primordial es compartir

y organizar los conocimientos recopilados en esta guía, así como también servir de base

para el inicio de investigaciones relacionadas con la interpretación automática de estos

conceptos, usando sistemas de software o agentes de software inteligentes. Como punto de

partida se llevo a cabo la investigación y análisis de la guía para la Ingeniería de Software

– SWEBOK, por ser un proyecto que posee una reputación internacional en esta área de

conocimiento, ya que surge de una revisión realizada por más de 500 expertos en este

dominio relacionados con distintos ámbitos tales como: académico, agencias de gobierno,

sociedades profesionales, organizaciones de estándares internacionales así como diferentes

centros de investigación; una vez hecho este análisis se realizó la abstracción de estos

conceptos en una diagrama de clases UML el cual fue transformado finalmente a la

ontología de dominio en lenguaje OWL (Ontology Web Language) utilizando la

herramienta para creación de ontologías, Protégé. [22]

Page 59: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 45

Finalmente, al obtener la ontología deseada, se desarrolló una aplicación prototipo en el

lenguaje de programación Java que permite la extracción de los conceptos presentes vía

Web, el objetivo fundamental será utilizar esta herramienta como apoyo conceptual en los

diferentes procesos y etapas definidos para llevar a cabo el proceso de desarrollo de

software.

3.1 Conceptos relacionados

Para comprender mejor los temas tratados en este capítulo es importante tener en cuenta

los siguientes conceptos:

XML (Extensible Markup Language): es un lenguaje de marcas

utilizado para estructurar información. Existen 5 caracteres especiales utilizados

en XML: los símbolos menos que, <, mayor que, >, las comillas dobles, “, el

apostrofe, ‘, y el carácter, &. Los símbolos mayor y menor son utilizados para

delimitar las marcas que dan estructura al documento.

XMI (XML Metadata Interchange): es una propuesta de la utilización de

XML que intenta proporcionar a los programadores una forma estándar de

intercambiar información sobre metadata.

DTD (Document Type Definition): son archivos utilizados para definir las

posibles marcas y los atributos que puede tener un documento XML. Un

documento XML indica al comienzo el DTD utilizado mediante una marca

<!DOCTYPE>.

XML Namespaces: proporcionan un método para evitar los conflictos de

nombres en un documento XML. Permite particionar el conjunto de todos los

nombres posibles, de forma que se pueda definir a que zona de ese espacio

corresponde una etiqueta.

URI (Uniform Resource Identifiers): identifica recursos asignándole una

dirección en una red dada. Son cadenas que funcionan como identificadores

Page 60: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 46

globales que hacen referencias a recursos en la Web, tales como documento,

imágenes, archivos descargables, servicios, buzones de correo electrónico y otros.

RDF (Resource Description Framework): es un formato universal para

representar datos en la Web, que permite intercambiar información entre distintas

aplicaciones sin que esos datos pierdan significado, lo que facilita la reutilización

de los recursos en la Web.

OWL (Ontology Web Language): lenguaje estándar desarrollado por el

consorcio W3C para el desarrollo de ontologías, el cual permite que los conceptos

sean definidos tal y como son descritos.

SWEBOK (Software Engineering Body of Knowledge ): guía

utilizada para proporcionar una validación de los limites de la disciplina de la

Ingeniería de Software y para proporcionar acceso a los diferentes tópicos

relacionados con este dominio del conocimiento.

UML (Unified Modeling Language): lenguaje conformado por un

conjunto de notaciones y diagramas estándar para modelar sistemas orientados a

objetos, describiendo la semántica esencial de lo que estos diagramas y símbolos

significan.

SOAP (Simple Access Object Protocol): es un protocolo utilizado para

intercambiar estructuras de información en un ambiente descentralizado y

distribuido. Es un protocolo basado en XML que está compuesto por tres

componentes: un sobre (envelope) que define un marco de trabajo para describir

qué es un mensaje y como procesarlo, un conjunto de reglas para expresar las

instancias de una aplicación (definición de tipos de datos), y una convención para

representar llamadas y respuestas provenientes de procedimientos remotos.

Protégé 3.2: ambiente de desarrollo para la creación y edición de ontologías.

Este ambiente fue seleccionado, debido a que presenta un conjunto de

características que lo distingue de otros editores basados en conocimiento; tales

como: interfaz gráfica de usuario fácil e intuitiva, herramienta escalable debido a

que utiliza un sistema de cache para la liberación de memoria lo cual proporciona

Page 61: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 47

un mayor rendimiento, arquitectura extensible a través de la instalación de plug-

ins [37].

WSDL (Web Service Definition Languaje): es un formato XML para

describir servicios Web. Se encarga de definir una interfaz pública para los

servicios Web. El programa cliente que se conecta a un servicio Web lee en

WSDL para determinar que funciones están disponibles en el servidor.

Servicio Web: es una colección de protocolos y estándares que se utilizan para

realizar el intercambio de datos entre las aplicaciones.

3.2 OWL (Ontology Web Language)

Está compuesto por tres sublenguajes: OWL Lite, OWL DL y OWL Full.

3.2.1 Sublenguajes OWL:

OWL Lite: es utilizado principalmente en aquellos casos de una

clasificación jerárquica y restricciones simples. Su principal objetivo es

proporcionar un lenguaje que sea lo suficientemente sencillo y entendible

para ser visualizado por herramientas de desarrollo. Pretende capturar

muchas de las características comúnmente utilizadas de OWL y DAML-

OIL, adicionalmente permite describir un lenguaje útil que proporciona

funciones adicionales con el objetivo de soportar aplicaciones Web.

OWL DL: lenguaje diseñado para aquellos usuarios que buscan la máxima

expresividad sin arriesgar el desempeño computacional. OWL DL incluye

todos los constructores del lenguaje OWL con restricciones tales como el

tipo de separación (un clase no puede ser al mismo tiempo un individual o

una propiedad, igualmente una propiedad no puede ser a su vez un

individual o una clase).

Page 62: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 48

OWL Full: lenguaje diseñado para aquellos usuarios que buscan la máxima

expresividad combinada a su vez con la libertad sintáctica del lenguaje RDF.

Por ejemplo: en el OWL Full una clase puede ser tratada simultáneamente

como una colección de individuals y como un individual simple. Este

lenguaje permite que una ontología incremente el significado del

vocabulario predefinido en RDF u OWL.

Cada uno de estos sublenguajes es una extensión de su predecesor. El siguiente

conjunto de relaciones se cumple, su inverso no:

Una ontología legal construida en OWL Lite es legal en OWL DL.

Una ontología legal construida en OWL DL es legal en OWL Full.

Una conclusión legal construida en OWL Lite es legal en OWL DL.

Una conclusión legal construida en OWL DL es legal en OWL Full.

Los desarrolladores de ontologías deben considerar cual de estos lenguajes se adapta

mejor a sus necesidades. Debido a que la ontología creada será consumida por un

sistema Web y que se necesita un buen desempeño de la aplicación, el tipo de OWL

utilizado es el OWL-DL, sin embargo es importante destacar que el tipo de OWL

puede ser cambiado utilizando la herramienta Protégé en caso de que la ontología sea

modificada para futuras versiones de la aplicación.

Page 63: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 49

3.3 Diagrama de clases para la representación de los

conceptos relacionados con la guía SWEBOK.

Para obtener el diagrama de clases se realizó la lectura y posterior análisis de la

guía SWEBOK, fundamentalmente se revisó la forma como están organizados los

conceptos dentro de la misma, para luego representar esta estructura en un diagrama

de clases UML.

Los objetivos principales de la guía SWEBOK son:

Clasificar los conceptos y contenidos relacionados con el dominio de la

Ingeniería de Software.

Proporcionar diferentes tópicos relacionados con la Ingeniería de

Software.

Promover una manera consistente de entender a la Ingeniería de

Software.

Establecer el ámbito y el conjunto de límites de la Ingeniería de

Software con respecto a otras disciplinas como: Ciencias de la

Computación, Gerencia de Proyectos, Ingeniería de la Computación y

Matemáticas.

Proporcionar las bases para el desarrollo de planes de carrera y material

para certificaciones en esta área.

El proyecto SWEBOK permite establecer un consenso en:

Las áreas de conocimiento (KA) que integran los conceptos de la

Ingeniería de Software.

Los conceptos relacionados con cada dominio, así como las principales

referencias relacionadas a ellas.

Page 64: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 50

Las diferentes disciplinas científicas involucradas con cada una de las

áreas de conocimiento.

El proyecto SWEBOK está compuesto por 10 áreas de conocimiento las cuales se

muestran en la figura 3-1.

Figura3-1. Áreas de Conocimiento (KA) presentes en el proyecto SWEBOK.

En la guía SWEBOK la descripción de los contenidos presentes en cada una de las

áreas de conocimiento es definida siguiendo una especificación preestablecida;

inicialmente se presenta una introducción definiendo el área de conocimiento luego

se muestran los tópicos – en la figura 3-2 se puede observar la subdivisón de tópicos

correspondiente al área de Software Requirements- en los cuales está dividida cierta

área igualmente cada uno de estos tópicos es descrito y tiene asociados un conjunto

de conceptos que son definidos en esta guía. A su vez estos conceptos están

relacionados con materiales de referencia en base a los cuales se puede ampliar más

el concepto que está siendo consultado y a diversas disciplinas de conocimiento con

las cuales guarda relación la Ingeniería de Software.

Page 65: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 51

Figura3-2.Subdivisión de Tópicos para el área de conocimiento

Requerimientos de Software

En base a esta organización de la guía SWEBOK se realizó el diagrama de clases

que se muestra en la figura 3-3, el cual está representado con las siguientes clases:

Definición: representa cada una de las definiciones utilizadas para

describir un área de conocimiento.

Disciplina: representa las disciplinas relacionadas con cada uno de los

conceptos asociados a los tópicos de las áreas de conocimiento.

Tópico: cada una de las subdivisiones presentes en cada área de

conocimiento.

Page 66: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 52

Área: representa cada una de las áreas de conocimiento definidas en la

guía SWEBOK.

Concepto: representa cada uno de los conceptos que se encuentra por

debajo de los tópicos.

Referencia Externa: representan las referencias externas a las cuales se

encuentran relacionadas cada uno de los conceptos.

Figura3-3. Diagrama de Clases.

Se explica brevemente las relaciones existentes entre cada una de las clases del

diagrama:

Page 67: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 53

1- La relación existente entre las clases “Concepto” y “Referencia Externa” es una

asociación binaria.

2.- Las relaciones de composición se representan con un rombo relleno del lado de la

clase que contiene a la otra agregación.

En el diagrama existen relaciones de composición entre las siguientes clases:

2.1.- Relación entre las clases “Tópico” y “Concepto”: Un tópico está compuesto de

muchos conceptos.

2.2- Relación entre las clases “Área” y “Tópico”: Un Área está compuesta de

muchos Tópicos.

2.3.- Relación entre las clases “Disciplina” y “Área”: Una disciplina está

compuesta (se encuentra presente en diferentes áreas).

Debido a la manera en como se encuentran organizados los conceptos en la guía

SWEBOK, cada una de las entidades definidas en la figura 3-3 tiene una definición

asociada, es por esta razón que la clase Definición es la super clase del diagrama, esto con

la finalidad de no repetir los atributos de la misma en las clases asociadas a ella.

3.- Se presentan relaciones de herencia entre la clase “Definición” (clase Padre) y sus

derivadas (“Disciplina”, “Tópico”, y “Concepto”).

Page 68: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 54

Finalmente se realizó una correspondencia entre el diagrama de clases y la ontología

siguiendo los estándares establecidos por Protégé para el desarrollo de las mismas.

En el siguiente apartado se explica detalladamente la manera como fue creada la

ontología.

3.4 Transformación del Diagrama de clases UML a

una Ontología en lenguaje OWL.

Pruebas de transformación automática de un diagrama

modelado en UML a una Ontología: Esta transformación se intentó

realizar de manera automática a través de diferentes pruebas e investigaciones

cuyos resultados no fueron exitosos y se presentan a continuación:

The DAML-UML Enhanced Tool: Proporciona un ambiente basado en

UML para el desarrollo y manipulación de ontologías DAML [38].

Para este caso se realizaron pruebas con ArgoUML y RationalRose

o ArgoUML: se descargó el instalador de DUET de la página señala

arriba, se realizó la instalación siguiendo los pasos que aparecen

documentados en DUET Installation Guide. La versión de Argo

utilizada para hacer la prueba fue la 0.24 última versión disponible

en el sitio Web del producto.

Resultados: Al realizar los pasos de instalación indicados el Argo

no volvió a cargar correctamente.

Page 69: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 55

o Rational Rose: la versión recomendada del Rational para esta

prueba es la 2000, lamentablemente no se tenía disponibilidad del

producto. Aunque se dispone de la licencia del Rational Rose 2003

no se realizó ya que se considera que el plugin DUET no está lo

suficientemente estable para esta versión.

UMLBackEnd: Representa una funcionalidad del software Protégé que

permite importar y exportar archivos en formato UML 1.4, que hayan sido

almacenados en XMI versión 1.1 ó 1.2 . Según se indica en la

documentación la forma más sencilla de generar este tipo de archivos XMI

es utilizando herramientas CASE. El software recomendado para hacer la

exportación del archivo XMI a partir del diagrama UML es Poseidon

versión 1.6 [39].

Los inconvenientes encontrados al realizar esta prueba fueron: al ingresar

en la página del software Poseidon para poder obtener el producto con

todas sus funcionalidades es necesario adquirir la licencia, adicionalmente

la versión 1.6 no se encuentra disponible, sin embargo se realizó la prueba

con una demo de una versión superior, sin obtener resultados satisfactorios.

Convertidor UML2DAML: es una aplicación Open-Source creada para

automatizar la transformación de los diagramas de clases UML 1.4

exportados como XMI 1.1 en DAML+ OIL o RDF schema [40].

En la página de UML2DAML Converter (http://www.jdev.de/) aparecen

como posibles software para realizar la exportación del modelo UML a un

archivo del tipo XMI: ArgoUML, Rational Rose, Together; es importante

acotar que este producto posee una documentación limitada y escasos foros

de ayuda a los usuarios.

Page 70: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 56

o Prueba con ArgoUML 0.24: Se realizó la prueba con ArgoUML

0.24, para esta versión se utilizó sobre Argo UML 1.4, siguiendo los

siguientes pasos:

1.- Se realizó la exportación a XMI 1.2 tal como se muestra en la

figura 3-4

Figura3-4. Exportación archivo XMI

En el Anexo 1 se muestra el archivo XMI obtenido luego de hacer la

exportación.

Page 71: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 57

Una vez obtenido el archivo XMI se realizó su importación dentro del programa

JDEV

1.2 Para realizar la corrida del JDEV se procedió de la siguiente manera:

Se descomprimió el jar jdev-u2d-0.4 en la siguiente ubicación

C:\jdev-u2d-0.4

Se corrió utilizando el comando, ubicándose en la carpeta C:\jdev-

u2d-0.4\jar, tal como se muestra en la figura 3-5.

Figura3-5. Comando de ejecución programa UML2DAML Converter

Apareciendo la aplicación en pantalla, tal como se muestra en la

figura 3-6.

Page 72: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 58

Figura3-6. Aplicación UML2DAML Converter

1.3 Se realizó la importación del archivo XMI generado en ArgoUML dentro del

UML2DAML Converter y luego su transformación tal como se muestra en la

figura 3-7, sin embargo, el archivo RDF resultante no es válido. Para verificar

la validez del archivo RDF se utilizó un validador RDF suministrado por W3C

aunque el verificador de sintaxis arrojó resultados válidos, si se observa el

archivo (Anexo 1) se puede apreciar que las clases que provienen del diagrama

de clases no se ven reflejadas haciendo que este RDF no resulte apropiado para

Page 73: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 59

generar la ontología, en base a este resultado se realizó una consulta a los

desarrolladores del producto sin obtener una respuesta satisfactoria [41].

Figura3-7. Transformación del XMI en el UML2DAML Converter

3.- Prueba realizada con Rational Rose 2003: en el caso de Rational Rose cuando

se instala el producto no contiene directamente la exportación de los diagramas UML

en archivos de formato XMI, se realizó una búsqueda para esta versión del producto

Page 74: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 60

de un plugin que permite realizar la exportación de este tipo de archivos, no

encontrándose el plugin adecuado disponible para esta versión del producto.

4.- Prueba realizada con Together 6.0: se trató de realizar la prueba con el demo

del producto pero no posee la opción para realizar exportaciones a XMI, ya que no se

contaba con una licencia para este producto, no se hizo la prueba con el mismo.

3.5 Construcción de la Ontología utilizando Protégé:

A pesar de que existen algunas metodologías definidas para la creación de las

ontologías, su proceso de creación es definido como un proceso iterativo, en el cual

generalmente se define una primera ontología, la cual es luego revisada y refinada

para lograr un mayor nivel de detalle.

Se realizó la creación de la ontología utilizando Protégé versión 3.2.1, basándose

en la abstracción de los términos utilizados en la guía SWEBOK; se resumen a

continuación los pasos tanto a nivel metodológico como técnico para la

construcción de la ontología:

Determinación del ámbito: el dominio que cubre la ontología creada

está relacionado con las diferentes etapas que deben tomarse en cuenta en

el desarrollo de aplicaciones de software, los conceptos relacionados con

cada una de estas etapas; el objetivo fundamental se basa en proveer

información a los Ingenieros de Software para que puedan realizar

consultas de manera óptima.

Se presentan a continuación posibles preguntas que pudieran encontrar

respuesta al realizar una consulta a la ontología creada con el objetivo de

mostrar su utilidad:

Page 75: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 61

1.- ¿Cuáles son las etapas presentes en el proceso de desarrollo de

software?

2.- Para una etapa en específico: ¿Cuáles son los conceptos relacionados

con la misma y qué debe hacer el Ingeniero de Software para cumplir con

la misma?

3.- ¿Referencias bibliográficas relacionadas con cada uno de los

conceptos y etapas?

4.- ¿Cuáles son las disciplinas relacionadas con la Ingeniería de Software

y con cada una de las etapas presentes?

Consideración la reutilización: se realizó una investigación para buscar

Ontologías que consideren el manejo del conocimiento relacionado con la

Ingeniería de Software y las diferentes etapas asociadas al desarrollo de

sistemas; a pesar de que existen varios trabajos de investigación

relacionados con este tema, no se encontró una ontología para Ingeniería

de Software de libre disponibilidad en la red que esté relacionada

directamente con este dominio.

Enumeración de los términos y definición de las clases: para elaborar

el diagrama de clases que se mostró en la figura 3-3, tal como se

mencionó anteriormente, se llevó a cabo una revisión detallada de la guía

SWEBOK, realizando una abstracción de las clases que representan de

alguna manera el conocimiento que se encuentra en la misma. De manera

general, algunos de los términos extraídos de este análisis y de los cuales

fueron tomados las clases son: área, concepto, definición, tópico,

referencias, disciplinas.

Page 76: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 62

Para realizar la definición de estas clases con la herramienta Protégé

versión 3.2.1, se utilizó la funcionalidad de creación de clases

suministrada por la herramienta; es importante destacar que la jerarquía

de las clases se conservó al realizar la transformación del diagrama UML

a la Ontología. Se muestran en la figura 3-8 las clases creadas con la

jerarquía correspondiente.

Figura3-8. Clases de la Ontología representadas en Protégé.

Definición de las propiedades de las clases (slots): para cada una de las

clases representadas se definieron sus propiedades slots; en Protégé

versión 3.2.1 existen variadas formas para crear los slots, una de ellas es

Page 77: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 63

utilizar el Slots Tab, con lo cual es posible reutilizar los slots para todas

las clases que sean creadas dentro de un proyecto.

Figura3-9. Slots para la clase Área.

Definición de las restricciones asociadas a cada una de las

propiedades: por medio de Protégé se crearon las relaciones entre las

clases; esto se realiza utilizando los slots. Por ejemplo, se creó un slot

llamado areadividen_topicos, el cual representa la relación existente

entras las clases Área y Tópico; en la figura 3-9 se observa encerrado en

un ovalo el slot y las clases involucradas en esta relación. Lo que se hizo

fue crear un slot que almacene una o más instancias de los Tópicos,

permitiendo que en el momento que se cree una instancia de la clase

Área y se necesite conocer los tópicos en los cuales se subdivide esa

área, se pueda obtener al cargar el valor del slot areadividen_topicos.

Page 78: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 64

Creación de las instancias: las instancias representan los datos actuales

en la base de conocimiento representada por la ontología creada. Para

hacer la creación de las instancias usando Protégé, se selecciona el Tab

Instantes, el cual proporciona los editores y los navegadores para

realizar la carga de la información. En la figura 3-10 se muestra un

ejemplo de información cargada para la clase Área, en la ventana “Class

Browser” se puede observar seleccionada la clase Área con un número 2

encerrado entre paréntesis, lo cual quiere decir que hay dos instancias

creadas, al presionar cada una de estas instancias en la ventana “Instante

Browser” se observa los slots asociados a la misma con sus respectivos

valores.

Figura 3-10 Instancias para la clase Área.

Page 79: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 65

De esta forma la ontología con sus respectivas instancias quedaría preparada

para ser consumida por algún sistema de manejo de conocimientos el cual permita

manejar y mostrar la información contenida en la misma.

| Finalmente a manera de resumen, en la figura 3-11 donde se ilustra la

equivalencia entre un extracto del diagrama de clases y su correspondiente

lenguaje OWL generado por Protégé.

Figura 3-11 Diagrama de Clases y Ontología.

En el Anexo 1 se encuentra la Ontología generada en lenguaje OWL.

<owl:Class rdf:ID="Disciplina"> <rdfs:subClassOf>

<owl:Class rdf:ID="Definicion"/> </rdfs:subClassOf> </owl:Class>

<owl:Class rdf:ID="Disciplina"> <rdfs:subClassOf>

<owl:Class rdf:ID="Definicion"/> </rdfs:subClassOf> </owl:Class>

<owl:ObjectProperty rdf:ID="arearelacion_disciplina"> <rdfs:domain rdf:resource="#Disciplina"/> </owl:ObjectProperty>

Page 80: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 66

3.6 Verificación de la Ontología creada:

Esta verificación se realizó de la siguiente manera:

Validador RDF: Para realizar esta prueba se utilizó la exportación de la

ontología en formato .rdf Luego este archivo fue introducido en la

página del validador obteniendo los resultados exitosos mostrados en la

figura 3-12 [41].

Figura 3-12 Validador RDF

Page 81: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 67

3.7 Desarrollo de la aplicación Web para consultar la

ontología.

El objetivo fundamental es crear un sistema Web construido sobre tecnologías

de descripción de contenidos utilizando como base la ontología creada en OWL

para hacer búsquedas sobre la misma. Esto permitirá aportar descripciones

explícitas de los recursos Web, dejando adicionalmente accesibles los datos a

través de las etiquetas inmersas en el documento tal como si fuese una base de

datos.

Para el desarrollo de la aplicación se utilizaron las siguientes tecnologías:

Protégé API OWL: son un conjunto de clases utilizadas para realizar la

lectura del archivo .owl. Básicamente se cargan las clases, sus

respectivos atributos y las relaciones conjuntamente con los datos

asociados. Las interfaces principales que fueron implementadas dentro

de la aplicación se listan a continuación:

o OWLModel: proporciona acceso al contenedor de recursos de la

ontología. Se utiliza para crear, consultar y borrar recursos de

varios tipos.

o OWLNamedClass: corresponde a la owl:Class del OWL.

o OWLIndividual: corresponde a un Individual dentro de la

ontología que esté definida.

o OWLDataTypeProperty: corresponde a un Property dentro de la

ontología que esté definida.

Page 82: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 68

GWT (Google Windows Toolkit): utilizado para realizar la interfaz

web.

Apache Axis versión 1.4: es una implementación del protocolo SOAP

utilizada para implementar servicios Web en el lenguaje de

programación Java [42].

XStream: es una librería utilizada para serializar objetos a XML y

viceversa [43].

3.7.1 Estructura del proyecto Java implementado

La programación de la aplicación fue realizada utilizando el lenguaje de programación

Java, el proyecto está dividido en dos subproyectos:

ontologyQuery: el cual representa el proyecto servidor ya que contiene las clases

encargadas de realizar la lectura del archivo .owl y la clase que representa al

servicio Web que es publicado dentro de Apache Axis.

ontologyClient: el cual representa el proyecto cliente que se encarga de consumir el

servicio que retorna a la ontología creada y de mostrar los resultados a través de la

interfaz gráfica

A continuación se resume el código utilizado para realizar la carga y lectura del

archivo OWL:

En el siguiente extracto de código mostrado en la Tabla 3-1 se puede observar la

creación utilizando una dirección URL de un OWLModel, objeto a través del cual se

podrá realizar la carga del archivo .owl.

Page 83: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 69

Tabla 3-1 Creación del Objeto OWLModel

String uri = "file:///C:/owl/tesis.owl";

OWLModel owlModel=null;

owlModel = ProtegeOWL.createJenaOWLModelFromURI(uri);

En la Tabla 3-2 se puede observar el método cargarListaAtributo el cual recibe como

parámetros el OwlModel previamente cargado y dos cadenas de caracteres que representan

el Individual que se quiere leer y el nombre de la relación. Utilizando la clase

OWLIndividual con los métodos getOWLIndividual y getPropertyValues es posible

obtener una colección de todos los valores relacionados con un Individual determinado.

Tabla 3-2 Método cargarListaAtributo

public static Collection cargarListaAtributo(OWLModel owlModel, String sIndividual, String sRelacion)

{

OWLIndividual ontIndividual = owlModel.getOWLIndividual(sIndividual);

Collection collection = ontIndividual.getPropertyValues(owlModel.getRDFProperty(sRelacion));

return collection;

}

En la Tabla 3-3 se puede observar el método cargarAtributo el cual permite a través

de los parámetros suministrados cargar los valores de los atributos solicitados.

Page 84: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 70

Tabla 3-3 Método cargarAtributo

public static String cargarAtributo(Iterator iterator, OWLModel owlModel, String att, OWLIndividual

individual)

{

OWLDatatypeProperty firstNameProperty = owlModel.getOWLDatatypeProperty(att);

OWLIndividual myCustomer = owlModel.getOWLIndividual(individual.getBrowserText());

String atributo = (String) myCustomer.getPropertyValue(firstNameProperty);

return atributo;

}

En el Anexo II se encuentra la documentación detallada de cada uno de estos

métodos pertenecientes a la clase MainOwl.java la cual es la encargada de realiza la

carga del archivo .owl.

3.7.2 Publicación del Servicio Web para la ontología creada:

Se resume a continuación la manera como se utilizó Apache Axis para realizar la

exposición del servicio Web, que después es consumido por la aplicación cliente.

Se codificó en el proyecto servidor la clase WSOntology.java cuyo objetivo

fundamental es describir al servicio Web, la misma a través del llamado al método

cargarOntologia() de la clase MainOwl.java, retorna un XML que contiene los

objetos que representa los datos extraídos del archivo .owl. Esta clase se encuentra

descrita con más detalle en el Anexo II.

A partir de la clase WSOntology.java y a través de la siguiente línea de comandos se

generó el archivo WSDL. Es importante destacar que para realizar esta ejecución

Page 85: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 71

deben estar configuradas todas las variables de ambiente para que el contenedor

Axis funcione de manera correcta, más detalles acerca de la configuración se puede

encontrar en los tutoriales de Axis [43]. En este caso puede observarse en la Tablas

3-4 y 3-5 las variables de ambiente definidas AXISCLASSPATH y CLASSPATH :

Tabla 3-4 Variable de ambiente AXISCLASSPATH

AXISCLASSPATH:C:\axis-1_4\lib\axis.jar;C:\axis-1_4\lib\axis-ant.jar;"C:\axis-1_4\lib\commons-

discovery-0.2.jar";"C:\axis-1_4\lib\commons-logging-1.0.4.jar";C:\axis-1_4\lib\jaxrpc.jar;C:\axis-

1_4\lib\saaj.jar;"C:\axis-1_4\lib\log4j-1.2.8.jar";"C:\axis-1_4\lib\wsdl4j-1.5.1.jar";

Tabla 3-5 Variable de ambiente CLASSPATH

CLASSPATH:C:\xerces\xercesImpl.jar;C:\xerces\xmlapis.jar;C:\xerces\xmlParserAPIs.jar;C:\axis-

1_4\lib\axis.jar;C:\axis-1_4\lib\axis-ant.jar;"C:\axis-1_4\lib\commons-discovery-0.2.jar";"C:\axis-

1_4\lib\commons-logging-1.0.4.jar";C:\axis-1_4\lib\jaxrpc.jar;C:\axis-1_4\lib\saaj.jar;"C:\axis-

1_4\lib\log4j-1.2.8.jar";"C:\axis-1_4\lib\wsdl4j-1.5.1.jar";

Tabla 3-6 Comando para crear archivo WSDL.

java -classpath %AXISCLASSPATH%;%CLASSPATH% org.apache.axis.wsdl.Java2WSDL -o

wsdlontology.wsdl -l"http://localhost:8080/axis/services/ontology" -n urn:"com.ula.ws" -p"

com.ula.ws" urn:com.ula.ws com.ula.ws.WSOntology

En la línea de comando mostrada en la Tabla 3-6 puede observarse el uso de la clase

Java2WSDL perteneciente al paquete org.apache.axis.wsdl la cual es utilizada junto con

la clase creada para la implementación del servicio Web (WSOntology.java) para crear el

archivo WSDL.

-o : indica el nombre de salida del archivo WSDL.

-l : indica la localización del servicio.

-n : es el espacio de nombres del archivo WSDL.

Page 86: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 72

-p : indica el espacio de nombres del paquete donde se encuentra la clase que expone al

servicio Web.

El documento WSDL resultante debe contener los tipos WSDL apropiados, mensajes,

puertos, enlaces, descriptores con soporte SOAP. El archivo WSDL para nuestra

aplicación se encuentra en el Anexo II.

Una vez creado el archivo WSDL a través del siguiente comando mostrado en la

Tabla 3-7 se realiza la creación de las clases necesarias que deben estar disponible

para consumir el servicio Web.

Tabla 3-7 Comando para crear clases utilizadas para consumir Servicio Web.

java -classpath %AXISCLASSPATH%;%CLASSPATH% org.apache.axis.wsdl.WSDL2Java -o . -d

Session -s -p com.ula.servicioweb wsdlontology.wsdl

Puede observarse el uso de la clase WSDL2Java perteneciente al paquete

org.apache.axis.wsdl, a través de la cual es posible generar los enlaces

cliente/servidor representados en forma de clases del Servicio Web.

En nuestro caso se generaron los siguientes archivos:

OntologySoapBindingImpl.java: es un archivo .java que contiene la

implementación del servidor por defecto del Servicio Web.

OntologySoapBindingStub.java: es la parte cliente que actúa como la

|representación local o proxy del objeto remoto.

WSOntology.java: archivo nuevo generado que representa la interfaz que contiene

el uso apropiado de java.rmi.Remote.

WSOntologyService.java: archivo .java que contiene el lado cliente de la interfaz

de servicio.

Page 87: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 73

WSOntologyServiceLocator.java: archivo .java que contiene la implementación

de la clase del lado del cliente.

deploy.wsdd: representa el descriptor de despliegue.

undeploy.wsdd: representa el archivo para realizar la desinstalación de los

Servicios Web.

Una vez creadas las clases se consumen por parte del proyecto cliente, esto con el

objetivo de cargar la información que se encuentra dentro de la Ontología y

utilizarla posteriormente en la elaboración de la interfaz gráfica al usuario. Este

código encuentra en el Anexo II.

3.7.3 Arquitectura de la aplicación:

En esta sección se ilustra el diseño de la aplicación, se presentan a continuación

dos diagramas que muestran tanto a nivel de codificación como de diseño a más alto

nivel, los distintos componentes involucrados en la elaboración del sistema y la forma

como estos interactúan entre si.

En la figura 3-13 se puede observar la arquitectura planteada para la aplicación

desarrollada, básicamente se cuenta con dos capas:

o Capas de Persistencia/Ontología: esta capa está compuesta por los

archivos .owl que son los que contienen la información necesaria que será

cargada dentro del sistema.

o Capa de Presentación: está compuesta por las páginas de presentación y su

interacción con el Servicio Web, expuesto, que carga la información de

interés para el usuario.

o Capa de Modelo: que contiene los componentes de dominio elaborados en

el lenguaje de programación Java que se encargan de interactuar con los

archivos .owl para hacer la extracción de la información.

Page 88: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 74

Figura 3-13 Arquitectura aplicación.

La aplicación contiene clases relacionadas con el dominio de la misma, y se

encuentran representadas, por ejemplo en las clases: Area.java, Topico.java. La

interacción con el usuario final, en este caso, está controlada por un Servicio Web que

es el que envía la información final a la página JSP (Java Server Page). Es

importante destacar que para futuros trabajos, es recomendable tomar en cuenta el

uso de máquinas razonadoras inteligentes, conocidas en inglés como Reasoners , o

máquinas para definición de reglas, como SWRL (Semantic Web Rules Languages)

cuyo objetivo fundamental es lograr un comportamiento inteligente.

Adicionalmente se presenta en la figura 3-14 un diagrama que ilustra la manera

como están organizados los componentes desarrollados para la implementación de la

aplicación.

Page 89: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 75

Figura 3-14 Arquitectura a nivel de la codificación.

La aplicación consta de dos proyectos desarrollados en el lenguaje de

programación Java, un proyecto servidor y un proyecto cliente. En líneas generales el

proyecto servidor se encarga de realizar la lectura de la Ontología desarrollada en

Protégé a través del API destinado para este fin, esta lectura es cargada en objetos Java

los cuales forman parte del dominio de la aplicación (Area.java, Topico.java, etc), estos

objetos son transformados a XML a través del uso del XStream; la transformación es

realizada ya que esta información va a ser enviada a través de la red por medio de un

Servicio Web, los cuales se comunican utilizando mensajes SOAP que formaliza el uso

de XML como un modo de pasar datos de un proceso a otro. Finalmente esa información

es tomada del lado del cliente para ser desplegada de manera gráfica al usuario final.

Page 90: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 76

3.7.4 Interfaz Gráfica:

Tal como se mencionó en el punto anterior con la información obtenida del

servicio se realiza la carga de esta información gráfica a través del navegador. En la

figura 3-15 se muestra cómo se podrá visualizar la interfaz gráfica una vez que la

información esté cargada.

Figura 3-15. Interfaz de usuario final.

Page 91: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 3. Construcción de una Ontología. 77

Se puede observar que cada pestaña está relacionada con un Área del conocimiento. Al

presionar cada pestaña se desplegará en un árbol todos los tópicos relacionados a través del

cual podrán ser consultados los conceptos asociados a los mismos. Adicionalmente se

podrá cargar la información relacionada con las referencias, bien sean libros, artículos u

otros, que el usuario, en su papel de Ingeniero de Software, requiera para realizar un

análisis determinado.

Page 92: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 78

Capítulo 4. Uso de la aplicación como

apoyo a un proyecto de un dominio

específico.

El objetivo fundamental de este capítulo es demostrar la utilidad de la aplicación

desarrollada para enriquecer la labor cotidiana de un Ingeniero de Software. Para lograr

esto, se seleccionó un proyecto de un dominio en específico, el dominio seleccionado fue el

de software educativo, la razón fundamental para la selección del dominio se basa en una

investigación realizada por la Universidad de Los Andes acerca de la industria de software

venezolana y los tipos de proyectos más comunes desarrollados por las mismas, titulado

“La Industria Nacional de Software y sus Recursos Humanos: Estado Actual”. Se mostrará

por Área de Proceso la manera como un Ingeniero de Software podría navegar la aplicación

implementada, los resultados que está mostraría y la utilidad de los mismos como apoyo a

una metodología de desarrollo de proyectos.

4.1 Definición del proyecto planteado.

En base al dominio seleccionado se plantea la siguiente situación: se desea

desarrollar una aplicación perteneciente al dominio software educativos, por ejemplo

software para apoyo de actividades escolares, software de control de estudios, software

para el registro de inscripciones, control de calificaciones escolares, software de apoyo

a la enseñanza de temas en específico, etc.

Page 93: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 79

4.2 Áreas de proceso involucradas en el proyecto.

El objetivo fundamental es mostrar como un Ingeniero de Software puede utilizar

la aplicación para facilitar su trabajo en el momento de tomar en cuenta las áreas de

proceso y la forma de aplicar las mismas en la ejecución de su proyecto.

Se seleccionó una metodología ya establecida para apoyar la ejecución de cualquier

proyecto de Software, la metodología seleccionada fue el Método Watch, la cual

surge como el resultado de integrar modelos de desarrollo de software bien conocidos,

tales como: el modelo RUP (Rational Unified Process), el modelo orientado a objetos

por Bruegge & Duttoit y el estándar IEEE 1074 para el desarrollo del ciclos de vida

del software. Este método utiliza la metáfora de un reloj, el ciclo de desarrollo de una

aplicación puede ser vista como un reloj el cual va avanzando según sus manecillas y

puede ser controlado por el líder del proyecto, quien decide cuando se avanza a una

nueva fase o cuando es necesario ir atrás para mejorar o revisar un producto. El

proceso gerencial por ende es el centro del reloj, de esta forma el proceso de desarrollo

está dividido en dos procesos: los procesos gerenciales y los procesos de desarrollo.

Con la finalidad de observar la utilidad de la ontología generada y en

consecuencia de la aplicación desarrollada como apoyo a cada una de las etapas de un

método o metodología de desarrollo de software, se realizó un mapeo entre las etapas

definidas en este método y las Áreas de Procesos definidas en la Ontología, lo cual

puede observarse en la figura 4-1. Básicamente, se puede apreciar como se podría

utilizar la aplicación desarrollada como una guía que permita a los Ingenieros de

Software a medida que van desarrollando un proyecto hacer consultas relacionadas a

los términos, técnicas o herramientas que deben utilizarse en cada una de las etapas

del ciclo de desarrollo.

Page 94: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 80

Figura4-1. Relación entre el método Watch y Áreas de proceso SWEBOK.

AP (Área de Proceso).

AP1: Requerimientos de Software.

AP2: Diseño de Software.

AP3: Construcción de Software.

AP4: Pruebas de Software.

AP5: Mantenimiento de Software.

AP6: Gestión de Configuración de Software.

AP7: Ingeniería de Gestión de Software.

AP8: Ingeniería de Procesos de Software.

AP1

AP2

AP3/AP5/AP10

AP4/AP10

AP5

AP5/AP10

AP7/AP8/AP9

AP1AP2

Page 95: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 81

AP9: Herramientas y Métodos para la Ingeniería de Software.

AP10: Gestión de la Calidad de Software.

4.3 Uso de la aplicación desarrollada como apoyo en

el proceso de Ingeniería de Software involucrado

en el desarrollo del proyecto seleccionado.

En base a las áreas involucradas, el Ingeniero de Software, seleccionará cada

una de ellas y realizará búsquedas de información relacionada con las mismas,

esto con el objetivo de encontrar la mejor manera de implementar un área

determinada en sus proyectos.

En cada una de las Áreas de Proceso podemos observar todos los tópicos

relacionados, sus conceptos y las referencias, a las cuales puede acudir el

Ingeniero para lograr un mayor entendimiento del Área en cuestión.

Considerando lo amplio del conocimiento almacenado en la Ontología, para

acotar la prueba realizada, se seleccionó una muestra de información relevante

que a cualquier Ingeniero involucrado en un proyecto podría interesarle para

realizar una instancia del mismo y de esta manera obtener conformidad con los

estándares de calidad que le garanticen el éxito a largo plazo.

La idea consiste en plantear varias interrogantes para cada una de las Áreas,

las cuales puedan ser consultadas de manera satisfactoria por el sistema

desarrollado y de esta forma verificar la utilidad de la Ontología en la labor de

los Ingenieros de Software. A continuación se presentan cada una de las áreas de

proceso, la interrogante planteada y como el sistema apoya a la respuesta de estas

interrogantes.

Manejo de Requerimientos: ¿Cuál es la mejor manera de manejar los

requisitos en un proyecto? El usuario al posicionarse sobre la pestaña de

los “Requerimientos” observará la definición acerca de esta Área del

Page 96: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 82

Proceso, adicionalmente podrá visualizar cada uno de los tópicos con lo

cual tendrá información conceptual de cada uno de ellos. Por ejemplo,

puede observarse en la Figura 4-2 y Figura 4-3, si el usuario selecciona el

tópico “Definición de Requerimientos de Software” se desplegará una

breve explicación acerca del mismo y adicionalmente las referencias

(Kot00, Pf101, Som05, Tha05) que el Ingeniero podría consultar para

obtener más información acerca de este punto.

Figura4-2. Definición Requerimientos

Page 97: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 83

Figura4-3. Referencias relacionadas con la “Definición de Requerimiento”

.

Diseño: ¿Cuáles son las actividades que deben ser tomadas en cuenta en

esta etapa? El usuario al seleccionar la pestaña de “Diseño” puede

observar los tópicos relacionados con esta Área junto con sus conceptos

asociados, de esta forma podría conocer cuales son las actividades que

debería tomar en cuenta en esta etapa, esta selección se ve reflejada en las

Figura 4-4 y 4-5.

Figura4-4. Diseño de la Aplicación.

Referencias

Page 98: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 84

Figura4-5. Diseño de la Aplicación. (Conceptos relacionados a Tópicos)

Construcción: ¿Qué tipo de pruebas deben realizarse a nivel de

desarrollo de la aplicación? En la figura 4-6 se puede observar la selección

del tópico “Consideraciones Prácticas”, dentro de este tópico encontramos

varios conceptos relacionados, uno de ellos es “Pruebas de Construcción”

dentro de las cuales encontramos pruebas unitarias y pruebas de

integración, adicionalmente las referencias donde se puede hallar

información acerca de este tipo de pruebas, tan importantes para soportar la

calidad del producto final que se entregue a los clientes.

Conceptos Tópicos

Page 99: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 85

Figura4-6. Construcción.

Pruebas: ¿Cuáles son las técnicas que deben utilizarse en el proceso de

pruebas? En la figura 4-7 se observa la selección del tópico “Técnicas de

Pruebas”, dentro de este tópico se puede seleccionar por ejemplo el

concepto “Técnicas basadas en la naturaleza de la aplicación” , entre las

cuales se encuentran: pruebas orientadas a objetos, pruebas basadas en

componentes, pruebas basadas en Web, etc.

Referencias

Page 100: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 86

Figura4-7. Manejo de Pruebas del sistema.

Mantenimiento: ¿Cómo realizar una estimación de los costos de

mantenimiento de un proyecto? En la Figura 4-8 se puede observar cuando

el usuario posicionado en la pestaña de “Mantenimiento”, selecciona el

tópico “Claves en el Mantenimiento de Software” y visualiza el concepto

relacionado con “Estimación de costos de mantenimiento” pudiendo ser

vistos de esta forma las recomendaciones de la guía SWEBOK en este

punto.

Page 101: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 87

Figura4-8. Mantenimientos de la aplicación.

Gestión de la Configuración: ¿Cómo identificar los ítems que deben

someterse al proceso de gestión de configuración? En la figura 4-9 se

puede observar cuando el usuario posicionado en la pestaña

“Configuración” selecciona el tópico “Gestión del Proceso de

Configuración” puede visualizar los conceptos relacionados y tomar

decisiones acerca de los ítems que desean controlar.

Page 102: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 88

Figura4-9. Gestión de la Configuración.

Ingeniería de Gestión: ¿Cómo llevar a cabo el manejo de riesgos dentro

de un proyecto? En la figura 4-10 puede observarse cuando el usuario se

posiciona sobre la pestaña “Gerencia”, seleccionando el tópico

“Planificación de proyecto”, en el concepto “Manejo de riesgos” se

encontrara información acerca de esta área y las referencias donde conocer

más al respecto.

Figura4-10. Ingeniería de Gestión.

Page 103: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 89

Ingeniería de Procesos: ¿Cómo deben ser definidos los procesos? En la

figura 4-11 una vez seleccionada la pestaña “Procesos” pueden observarse

los tópicos relacionados con el área.

Figura4-11. Ingeniería de Procesos.

Herramientas de Software y métodos: ¿Cuáles son los tipos de

herramientas para el Mantenimiento de Software? En la figura 4-12 luego

que el usuario ha seleccionado la pestaña correspondiente a

“Herramientas/Métodos”, se selecciona el tópico “Herramientas de

Software” el sistema permite visualizar las sugerencias dadas por la guía

SWEBOK en relación con las herramientas para apoyar el mantenimiento

del software.

Page 104: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 90

Figura4-12. Herramientas de Software y métodos.

Gestión de la Calidad: Sugerencias para realizar revisiones y auditorias

que apoyen el proceso de desarrollo de software. En la figura 4-13 una vez

que el usuario selecciona la pestaña “Calidad”, al igual que el resto de los

casos se despliega los tópicos relacionados con esta área, dentro de los

cuales se encuentra “Gestión del proceso de calidad” a través del cual se

podrá consultar el concepto de “Revisiones y Auditorías” logrando así

obtener información acerca de esta área del proceso.

Page 105: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 4. Proyecto de un dominio específico. 91

Figura4-13. Gestión de la Calidad.

Es importante resaltar que la guía SWEBOK es bastante amplia en sus definiciones

y que el sistema muestra estas definiciones de una forma condensada, presentándole al

usuario la información de manera esquematizada, para lograr mayor profundidad en los

conceptos involucrados en el proceso de desarrollo de software es necesario recurrir

directamente al texto, a las referencias sugeridas y documentación adicional relacionada

con esta área de la ingeniería. Adicionalmente los conceptos expuestos en este ejemplo son

fácilmente trasladables a cualquier otro dominio en el que se quiera desarrollar un proyecto

que involucre áreas del proceso de desarrollo.

Page 106: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 5. Conclusiones y Recomendaciones 92

Capítulo5.Conclusiones y

Recomendaciones.

5.1 Conclusiones

Uno de los grandes problemas que existe en las industrias de software a la hora de

desarrollar sus productos está asociado con la improvisación que ronda las unidades de

desarrollo. Para venir a resolver este tipo de dificultades surge una nueva disciplina dentro

del amplio espectro de las ingenierías, la Ingeniería de Software, la cual es reforzada

utilizando dispositivos tales como la Guía del Cuerpo de Conocimiento de la Ingeniería de

Software (SWEBOK), la cual contribuye a revisar los procesos de desarrollo y contrastarlo

con las nuevas tendencias mundiales. Surge entonces la necesidad de compartir este

conocimiento de una forma más accesible y sencilla; para realizar esto, se definió una

Ontología en el lenguaje OWL soportada en un sistema Web el cual permite realizar

búsquedas sobre los conceptos y tópicos presenten en la mencionada guía, lográndose de

esta manera la optimización de la búsqueda de información.

Se resume a continuación los aspectos desarrollados en cada uno de los capítulos.

En el capítulo 1 se pudo observar cómo se han realizado trabajos previos orientados al

uso de las Ontologías en distintas áreas del desarrollo de software. Se puede apreciar en las

diferentes lecturas realizadas, el incremento del uso de las Ontologías en el área de la

Ingeniería del Conocimiento, Sistemas de Información, Bases de Datos, Extracción y

Page 107: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 5. Conclusiones y Recomendaciones 93

recuperación de información, soporte al manejo de la Ingeniería de Requerimientos y

desarrollo de herramientas de integración para apoyar los procesos de software.

En la segunda parte del capítulo 1, se presentó una comparación entre las metodologías

de desarrollo de software más importantes. Adicionalmente se presentó la justificación,

alcance y objetivos del trabajo realizado. Se pudo comprender con este capítulo la

importancia de la elaboración de trabajos e investigación en el área de las ontologías

relacionadas con el proceso de desarrollo de software.

El capítulo 2 presenta las definiciones más importantes relacionadas con las Ontologías,

además de la relación existente entre las mismas y la Ingeniería de Software, esto con el

objetivo fundamental de comprender la forma en que este tipo de procesamiento de

información contribuye con esta área de conocimiento. Se describieron adicionalmente los

lenguajes existentes para la definición de las Ontologías y las metodologías utilizadas para

su implementación. Con este capítulo se pudo comprender la forma de abordar la definición

de la Ontología y las diferentes herramientas que existen disponibles para su desarrollo.

En el capítulo 3 se definió mediante un análisis de la guía SWEBOK una Ontología para

soportar los conceptos que se encuentran contenidos en este documento. El procedimiento

utilizado fue realizar una abstracción de la manera como está organizada la información en

esta guía en un diagrama de clases UML, las clases obtenidas en este diagrama son una

representación de los conceptos manejados en la guía.

En la segunda parte del capítulo 3, se realizó una investigación para optimizar la

transformación del diagrama UML planteado a una Ontología, se llevaron a cabo varias

pruebas con varias aplicaciones disponibles en la Web, los resultados no fueron

satisfactorios al tratar de automatizar este proceso; sin embargo se realizó la creación y la

carga de datos de la Ontología utilizando la interfaz de desarrollo Protégé , la cual permite

realizar la definición de las Ontologías de manera confiable en lenguaje OWL, lo que hace

Page 108: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 5. Conclusiones y Recomendaciones 94

posible que dicha Ontología pueda ser fácilmente utilizada en sistemas Web con

tecnologías que la soporten, tal como se presenta en la parte final de este capítulo.

La última parte del capítulo 3 presenta como resultado final el desarrollo de un sistema

Web basado en la Ontología creada, el cual permite al Ingeniero de Software realizar

consultas más efectivas y resumidas sobre el contenido de la guía SWEBOK, cumpliendo

así con los planteamientos de esta investigación en cuanto a comenzar a impulsar la

implementación de nuevas tecnologías que conviertan este conocimiento en algo más

accesible, y contribuya a la mejora, no solo de los procesos de software en nuestra industria

de software, sino también en nuestros centros de estudios.

Finalmente en el capítulo 4 se presentó a través de un ejemplo el apoyo que pudiera dar

este tipo de aplicaciones al desarrollo del conocimiento de un área tan importante como lo

es la Ingeniería de Software. Se plantearon preguntas consideradas importantes y que por

experiencias previas son los puntos en los cuales se considera carecemos de más

conocimiento en la industria de software del país y que necesitan más atención, y a su vez

más entrenamiento por parte de los Ingenieros dedicados a esta rama. Para ejemplificar el

uso del sistema implementado, se plantearon varias interrogantes en cada una de las áreas

de conocimiento y se demostró como la aplicación pudiera responderlas y contribuir así

con la labor del Ingeniero que busca a través de estas prácticas las mejoras de sus procesos

de software. La capacidad de respuesta de la aplicación desarrollada a las interrogantes

planteadas demuestra la utilidad del desarrollo de una Ontología ajustada al conocimiento

de la Ingeniería de Software. Adicionalmente el mapeo realizado entre el método WATCH y

el conocimiento manejado por la Ontología extraído de la guía SWEBOK muestra la

utilidad de la investigación realizada, como apoyo al proceso metodológico del desarrollo

de software, no solo con el método seleccionado como muestra, sino con cualquier otro

método existente de los presentadas en el Capítulo 1 que necesite de una u otra forma de

este tipo de conocimiento; cumpliéndose así con los objetivos presentados en el Capítulo 1.

Asimismo, se contribuyó a continuar impulsando las investigaciones en este tema, las

Page 109: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 5. Conclusiones y Recomendaciones 95

cuales finalmente permitirán optimizar los procesos de desarrollo para poder lograr

cumplir el reto de producir un software de óptima calidad.

5.2 Recomendaciones

La implementación y representación del conocimiento propuesto en esta tesis deben ser

orientadas hacia mejoras que permitan una completa automatización de la misma, además

del uso de las tecnologías más actuales en este tipo de aplicaciones.

Mejoras recomendadas a nivel de la Ontología:

Evaluación de cómo incluir otras guías o soportes de conceptos relacionados con el

área de conocimiento de la Ingeniería de Software.

Mejoras recomendadas a nivel de interfaz de la aplicación:

Enlaces URL que permitan que el usuario navegue hasta el sitio Web que le

indique de alguna forma donde adquirir las referencias relacionadas con un

concepto determinado o como hacer la descarga de las mismas.

Como se pudo observar los conceptos mostrados son bastantes extensos, se debería

tratar de realizar una adaptación a los conceptos que en la actualidad pueden ayudar

a incrementar gradualmente el conocimiento de los Ingenieros de Software a la

realidad de nuestro país.

Finalmente, con respecto a la arquitectura de la aplicación se recomienda la inclusión de

nuevas tecnologías como la siguiente:

Page 110: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Capítulo 5. Conclusiones y Recomendaciones 96

Analizar la posibilidad de incluir en la aplicación el uso de Servicios Web

Semánticos, los cuales constituyen una nueva infraestructura para los servicios Web

y son vistos en la actualidad como soluciones integrales para llevar a cabo la visión

de la siguiente generación de Internet. Son servicios que permiten combinar,

descubrir y crear de forma automática nuevos servicios Web. Entre las ontologías

más sobresalientes, que al ser utilizadas para añadir información semántica a los

servicios Web, definen los denominados servicios Web Semánticos son: OWL-S y

WSMO (Web Service Modeling Ontology) u Ontología de Modelado para Servicios

Web se basa en el Marco de Modelado de Servicios Web (WSMF) que separa los

elementos que se necesitan para describir servicios en ontologías, servicios Web,

objetivos y mediadores. WSML (Web Service Modeling Language) es lenguaje

utilizado para describir todos estos elementos. Por otro lado OWL-S (Ontology Web

Language for Services), permite publicar de forma declarativa las propiedades y

cualidades de un servicio, brindando la posibilidad de descubrir e invocar servicios

de forma automática así como componerlos teniendo en cuenta su descripción

semántica. Adicionalmente esta tecnología permite desarrollar Ontologías para los

Servicios Web basadas en OWL así como herramientas de soporte y agentes para

permitir la automatización de los servicios en la Web Semántica. Con una

implementación de este tipo se lograría incrementar la posibilidad de ofrecer

servicios Web semánticos que aportarán en gran medida beneficios a los usuarios

interesados en cualquier dominio o área de conocimiento, reduciendo costos y

tiempo debido a las posibilidades que ofrecen de interoperabilidad semántica.

Page 111: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Bibliografía 97

Bibliografía.

[1] http://es.geocities.com/recupdeinformacion_ontologias/sobreontolgias.htm

[2] Guarino, N. Formal Ontology and Information Systems Formal Ontology in

Information Systems. FOIS’98 Trento (Italia), 6-8 junio. Año 1998.

[3] Saeki, M. Ontology-Based Software Development Techniques. European

Research Consortium for Informatics & Mathematics (ERCIM) News, No. 58, July

2004.

[4] Falbo, R. Candida, A.Gomes, M. Gleidson, B. Borges, R. ODE: Ontology-based

software Development Environment. IX Congreso Argentino de Ciencias de la

Computación (CACIC), La Plata, Argentina, 2003.

[5] Pressman, R. Ingeniería de Software Un Enfoque Practico. Sexta Edición.

McGrawHill/Interamericana Editores. Año 2005.

[6] Letelier,P y Penadés, M-C. Metodologías Ágiles para el Desarrollo de Software Extreme Programming. Universidad Politécnica de Valencia. Taller de las

Page 112: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Bibliografía 98

VIII Jornadas de Ingeniería de Software y Bases de Datos, JISBD 2003, Alicante, España, Nov. 2003.

[7] Castro,R. Estructura Básica del Proceso Unificado de Desarrollo de Software.

Sistemas & Telemática. Universidad Icesi, Colombia, 2004.

[8] Microsoft TechNet. http://www.microsoft.com/latam/technet/fases/msf.asp

[9] www3.uji.es/~marcos/Docencia/Ch2printout09Jun.pdf

[10] Gruber, T. (1995): Towards Principles for the Design of Ontologies used for Knowledge Sharing. International Journal of Human-Computer Studies, 43(5/6), pp 907-928. [11] Abad, M-T,2004, Ontologías. Inteligencia Artificial. FBI-UPC. [12] González,R. “Ontología de Componentes de Software para Pymes”. Pontificia Universidad Javeriana Colombia. 2006. [13] http://www.w3c.es/Divulgacion/Guiasbreves/WebSemantica. [14] Laguna, M-A. García, F. López,O y Marqués J, 2001. “Reutilización de Requisitos en el Modelo Mecano”. Universidad de Valladolid, España. I Jornadas de Ingeniería de Requisitos Aplicada (JIRA) Sevilla, Junio 2001.

[15] Falbo, R. Guizzardi, G. Duarte, K. “An Ontological Approach to Domain Engineering”. Proceedings, 14 th Int Conference on Sotfware Engineering & Knowledge Engineering SEKE’ 2002, Italia. [16] Falbo, R. Guizzardi, G. Natali, A. Bertollo, G. Ruy, F. Mian, P. “Towards Semantic Software Engineering Environments”. Proceedings, the 14 th Int Conference on Sotfware Engineering & Knowledge Engineering SEKE’ 2002, Italia.

[17] Sheng-Tun, L. Huang-Chih, H. I-Wei ,S. “An Ontology-based Knowledge Management System for the Metal Industry”. The Twelfth International Word Wide Web Conference (WWW’03), Budapest, Hungary,May 2003.

[18] Mas, A. “Agentes Software y Sistemas Multiagentes. Conceptos, Arquitecturas y Aplicaciones”. Prentice Hall. Madrid 2005.

Page 113: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Bibliografía 99

[19] Matusken, P. Semantics Web, Ontology and OWL. CS 9010, Spring 2006.

[20] Noy, N. MacGuiness, D. Ontology Development 101: “A Guide to Creating Your First Ontology”. KSL Technical Report. Stanford University, CA, 94305. 2001.

[21] Fernandez, T. Tesis Doctoral. “Un Entorno de Integración de Ontologías para el Desarrollo de Sistemas de Gestión de Conocimiento”. Universidad de Murcia. [22] Hilera José Ramón. “Utilización de las Ontologías en la Ingeniería de software”. Departamento de Ciencias de la Computación. Escuela Técnica Superior de Ingeniería Informática Universidad de Alcalá, Diciembre, 2004 [23] http://www.cs.umd.edu/projects/plus/SHOE/ [24] http://www.w3.org/TR/xhtml-rdfa-primer/ [25] http://www.w3.org/TR/rdf-schema/ [26] http://www.daml.org/language/ [27] http://www.w3.org/TR/owl-features/ [28] http://protege.stanford.edu/ [29] http://www-ksl-svc.stanford.edu:5915 [30] http://www.ontoknowledge.org/tools/ontoedit.shtml [31] http://oiled.man.ac.uk/ [32] IEEE Standard Glossary of Software Engineering Terminology. Standards Coordinating Committe of the Computer Society of IEEE. 1990. [33] http://www.ksl.stanford.edu/software/ontolingua/ [34] http://www.unspsc.org/ [35] http://www.rosettanet.org [36] http://www.w3.org/2007/09/OWL-Overview-es.html

[37] http://protege.stanford.edu/doc/faq.html#01.03

[38] http://codip.grci.com/Tools/index.html

[39] http://protege.cim3.net/cgibin/wiki.pl?UMLBackendUsersGuide

Page 114: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Bibliografía 100

[40] http://www.jdev.de/files/downloads/jdev-u2d-0.4.tar.gz

[41] http://www.w3.org/RDF/Validator/

[42] http://ws.apache.org/axis/

[43] http://xstream.codehaus.org/

Page 115: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 101

ANEXO 1

Page 116: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 102

1.- Archivo XMI obtenido al realizar la exportación con el programa ArgoUML: <?xml version = '1.0' encoding = 'UTF-8' ?> <XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Fri Apr 13 20:20:33 VET 2007'> <XMI.header> <XMI.documentation> <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter> <XMI.exporterVersion>0.24(5) revised on $Date: 2006-11-06 19:55:22 +0100 (Mon, 06 Nov 2006) $ </XMI.exporterVersion> </XMI.documentation> <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header> <XMI.content> <UML:Model xmi.id = '.:00000000000008A9' name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Namespace.ownedElement> <UML:Class xmi.id = '.:000000000000082B' name = 'Definición' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'> <UML:Classifier.feature> <UML:Attribute xmi.id = '.:0000000000000824' name = 'id' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000822'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000821' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:Attribute.initialValue> <UML:Expression xmi.id = '.:0000000000000823' language = 'Java' body = ''/> </UML:Attribute.initialValue> <UML:StructuralFeature.type> <UML:DataType xmi.idref = '.:00000000000008A0'/> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id = '.:0000000000000827' name = 'nombre' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity>

Page 117: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 103

<UML:Multiplicity xmi.id = '.:0000000000000826'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000825' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id = '.:000000000000082A' name = 'definicion' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000829'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000828' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> <UML:Class xmi.id = '.:000000000000082C' name = '' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> <UML:Association xmi.id = '.:0000000000000833' name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:ModelElement.stereotype> <UML:Stereotype xmi.idref = '.:0000000000000834'/> </UML:ModelElement.stereotype> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:000000000000082F' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'aggregate' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000082E'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000082D' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity>

Page 118: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 104

</UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000082C'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:0000000000000832' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000831'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000830' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000082B'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Stereotype xmi.id = '.:0000000000000834' name = 'implicit' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Stereotype.baseClass>Association</UML:Stereotype.baseClass> </UML:Stereotype> <UML:Class xmi.id = '.:0000000000000835' name = '' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> <UML:Association xmi.id = '.:000000000000083C' name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:0000000000000838' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000837'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000836' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000835'/>

Page 119: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 105

</UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:000000000000083B' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000083A'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000839' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000082C'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Association xmi.id = '.:0000000000000843' name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:000000000000083F' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000083E'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000083D' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000082C'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:0000000000000842' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000841'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000840' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity>

Page 120: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 106

</UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000835'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Association xmi.id = '.:000000000000084A' name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:0000000000000846' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'aggregate' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000845'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000844' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000082C'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:0000000000000849' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000848'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000847' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000835'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Class xmi.id = '.:000000000000084E' name = 'Disciplina' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'> <UML:ModelElement.clientDependency> <UML:Abstraction xmi.idref = '.:0000000000000870'/>

Page 121: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 107

</UML:ModelElement.clientDependency> <UML:GeneralizableElement.generalization> <UML:Generalization xmi.idref = '.:0000000000000871'/> </UML:GeneralizableElement.generalization> <UML:Classifier.feature> <UML:Attribute xmi.id = '.:000000000000084D' name = 'fuente' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000084C'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000084B' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> <UML:Class xmi.id = '.:0000000000000852' name = 'Tópico' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'> <UML:GeneralizableElement.generalization> <UML:Generalization xmi.idref = '.:0000000000000872'/> </UML:GeneralizableElement.generalization> <UML:Classifier.feature> <UML:Attribute xmi.id = '.:0000000000000851' name = 'sigla' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000850'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000084F' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> <UML:Class xmi.id = '.:0000000000000856' name = 'Area' visibility = 'public'

Page 122: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 108

isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'> <UML:GeneralizableElement.generalization> <UML:Generalization xmi.idref = '.:0000000000000873'/> </UML:GeneralizableElement.generalization> <UML:Classifier.feature> <UML:Attribute xmi.id = '.:0000000000000855' name = 'id' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000854'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000853' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:DataType xmi.idref = '.:00000000000008A0'/> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> <UML:Class xmi.id = '.:000000000000085A' name = 'Concepto' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'> <UML:GeneralizableElement.generalization> <UML:Generalization xmi.idref = '.:0000000000000874'/> </UML:GeneralizableElement.generalization> <UML:Classifier.feature> <UML:Attribute xmi.id = '.:0000000000000859' name = 'id' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000858'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000857' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:DataType xmi.idref = '.:00000000000008A0'/> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class>

Page 123: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 109

<UML:Class xmi.id = '.:000000000000086E' name = 'Referencia Externa' visibility = 'public' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'> <UML:Classifier.feature> <UML:Attribute xmi.id = '.:000000000000085D' name = 'autor' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000085C'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000085B' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id = '.:0000000000000860' name = 'titulo' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000085F'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000085E' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id = '.:0000000000000864' name = 'volumen' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000862'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000861' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:Attribute.initialValue>

Page 124: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 110

<UML:Expression xmi.id = '.:0000000000000863' language = 'Java' body = ''/> </UML:Attribute.initialValue> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id = '.:0000000000000867' name = 'pagina' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000866'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000865' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id = '.:000000000000086A' name = 'codigo' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000869'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000868' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity> <UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A1'/> </UML:StructuralFeature.type> </UML:Attribute> <UML:Attribute xmi.id = '.:000000000000086D' name = 'año' visibility = 'public' isSpecification = 'false' ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'> <UML:StructuralFeature.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000086C'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000086B' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:StructuralFeature.multiplicity>

Page 125: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 111

<UML:StructuralFeature.type> <UML:Class xmi.idref = '.:00000000000008A3'/> </UML:StructuralFeature.type> </UML:Attribute> </UML:Classifier.feature> </UML:Class> <UML:Stereotype xmi.id = '.:000000000000086F' name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass> </UML:Stereotype> <UML:Abstraction xmi.id = '.:0000000000000870' isSpecification = 'false'> <UML:ModelElement.stereotype> <UML:Stereotype xmi.idref = '.:000000000000086F'/> </UML:ModelElement.stereotype> <UML:Dependency.client> <UML:Class xmi.idref = '.:000000000000084E'/> </UML:Dependency.client> <UML:Dependency.supplier> <UML:Class xmi.idref = '.:000000000000082B'/> </UML:Dependency.supplier> </UML:Abstraction> <UML:Generalization xmi.id = '.:0000000000000871' isSpecification = 'false'> <UML:Generalization.child> <UML:Class xmi.idref = '.:000000000000084E'/> </UML:Generalization.child> <UML:Generalization.parent> <UML:Class xmi.idref = '.:000000000000082B'/> </UML:Generalization.parent> </UML:Generalization> <UML:Generalization xmi.id = '.:0000000000000872' isSpecification = 'false'> <UML:Generalization.child> <UML:Class xmi.idref = '.:0000000000000852'/> </UML:Generalization.child> <UML:Generalization.parent> <UML:Class xmi.idref = '.:000000000000082B'/> </UML:Generalization.parent> </UML:Generalization> <UML:Generalization xmi.id = '.:0000000000000873' isSpecification = 'false'> <UML:Generalization.child> <UML:Class xmi.idref = '.:0000000000000856'/> </UML:Generalization.child> <UML:Generalization.parent> <UML:Class xmi.idref = '.:000000000000082B'/> </UML:Generalization.parent> </UML:Generalization> <UML:Generalization xmi.id = '.:0000000000000874' isSpecification = 'false'> <UML:Generalization.child>

Page 126: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 112

<UML:Class xmi.idref = '.:000000000000085A'/> </UML:Generalization.child> <UML:Generalization.parent> <UML:Class xmi.idref = '.:000000000000082B'/> </UML:Generalization.parent> </UML:Generalization> <UML:Association xmi.id = '.:000000000000087B' name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:0000000000000877' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000876'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000875' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000085A'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:000000000000087A' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000879'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000878' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000852'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Association xmi.id = '.:0000000000000882' name = 'topicocompuestos_conceptos' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:000000000000087E' name = 'estaCompuesto'

Page 127: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 113

visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000087D'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000087C' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000852'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:0000000000000881' name = 'componen' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000880'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000087F' lower = '1' upper = '-1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000085A'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Association xmi.id = '.:0000000000000889' name = 'arearelacion_disciplina' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:0000000000000885' name = 'estaRelacionada' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000884'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000883' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity>

Page 128: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 114

<UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000084E'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:0000000000000888' name = 'seRelacionan' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000887'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000886' lower = '1' upper = '-1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000856'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Association xmi.id = '.:0000000000000890' name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:000000000000088C' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000088B'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000088A' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000852'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:000000000000088F' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000088E'> <UML:Multiplicity.range>

Page 129: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 115

<UML:MultiplicityRange xmi.id = '.:000000000000088D' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000856'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Association xmi.id = '.:0000000000000897' name = 'areadividen_topicos' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:0000000000000893' name = 'seDivide' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000892'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000891' lower = '1' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000856'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:0000000000000896' name = 'dividen' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:0000000000000895'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000894' lower = '1' upper = '-1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:0000000000000852'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:Association xmi.id = '.:000000000000089F' name = 'conceptoscontinen_referencias'

Page 130: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 116

isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:ModelElement.taggedValue> <UML:TaggedValue xmi.id = '.:0000000000000898' isSpecification = 'false'> <UML:TaggedValue.type> <UML:TagDefinition xmi.idref = '.:00000000000008A8'/> </UML:TaggedValue.type> </UML:TaggedValue> </UML:ModelElement.taggedValue> <UML:Association.connection> <UML:AssociationEnd xmi.id = '.:000000000000089B' name = 'contienen' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000089A'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:0000000000000899' lower = '1' upper = '-1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000085A'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> <UML:AssociationEnd xmi.id = '.:000000000000089E' name = 'estanContenidas' visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'> <UML:AssociationEnd.multiplicity> <UML:Multiplicity xmi.id = '.:000000000000089D'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:000000000000089C' lower = '1' upper = '-1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:AssociationEnd.multiplicity> <UML:AssociationEnd.participant> <UML:Class xmi.idref = '.:000000000000086E'/> </UML:AssociationEnd.participant> </UML:AssociationEnd> </UML:Association.connection> </UML:Association> <UML:DataType xmi.id = '.:00000000000008A0' name = 'int' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'/> <UML:Package xmi.id = '.:00000000000008A5' name = 'java' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>

Page 131: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 117

<UML:Namespace.ownedElement> <UML:Package xmi.id = '.:00000000000008A2' name = 'lang' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Namespace.ownedElement> <UML:Class xmi.id = '.:00000000000008A1' name = 'String' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> </UML:Namespace.ownedElement> </UML:Package> <UML:Package xmi.id = '.:00000000000008A4' name = 'util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'> <UML:Namespace.ownedElement> <UML:Class xmi.id = '.:00000000000008A3' name = 'Date' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/> </UML:Namespace.ownedElement> </UML:Package> </UML:Namespace.ownedElement> </UML:Package> <UML:TagDefinition xmi.id = '.:00000000000008A8' name = '' isSpecification = 'false' tagType = 'String'> <UML:TagDefinition.multiplicity> <UML:Multiplicity xmi.id = '.:00000000000008A7'> <UML:Multiplicity.range> <UML:MultiplicityRange xmi.id = '.:00000000000008A6' lower = '0' upper = '1'/> </UML:Multiplicity.range> </UML:Multiplicity> </UML:TagDefinition.multiplicity> </UML:TagDefinition> </UML:Namespace.ownedElement> </UML:Model> </XMI.content> </XMI> 2.- Archivo RDF obtenido al realizar la transformación con el programa UML2DAML: <?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:xsd="http://www.w3.org/2000/10/XMLSchema#"> <!-- ###################################################

Page 132: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 118

DATATYPES ################################################### --> <rdfs:Datatype rdf:about="#float"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#float"/> </rdfs:Datatype> <rdfs:Datatype rdf:about="#short"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#short"/> </rdfs:Datatype> <rdfs:Datatype rdf:about="#long"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#long"/> </rdfs:Datatype> <rdfs:Datatype rdf:about="#integer"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#integer"/> </rdfs:Datatype> <rdfs:Datatype rdf:about="#double"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#double"/> </rdfs:Datatype> <rdfs:Datatype rdf:about="#boolean"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#boolean"/> </rdfs:Datatype> <rdfs:Datatype rdf:about="#byte"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#byte"/> </rdfs:Datatype> <rdfs:Datatype rdf:about="#string"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> </rdfs:Datatype> <rdfs:Datatype rdf:about="#dateTime"> <rdfs:subClassOf rdf:resource="http://www.w3.org/2001/XMLSchema#dateTime"/> </rdfs:Datatype> </rdf:RDF>

Page 133: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 119

3.- Archivo .owl generado por Protégé <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://www.owl-ontologies.com/unnamed.owl#" xml:base="http://www.owl-ontologies.com/unnamed.owl"> <owl:Ontology rdf:about=""/> <owl:Class rdf:ID="Disciplina"> <rdfs:subClassOf> <owl:Class rdf:ID="Definicion"/> </rdfs:subClassOf> </owl:Class> <owl:Class rdf:ID="Area"> <rdfs:subClassOf rdf:resource="#Definicion"/> </owl:Class> <owl:Class rdf:ID="Topico"> <rdfs:subClassOf rdf:resource="#Definicion"/> </owl:Class> <owl:Class rdf:ID="Concepto"> <rdfs:subClassOf rdf:resource="#Definicion"/> </owl:Class> <owl:Class rdf:ID="Referencia_Externa"> <rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Referencia Externa</rdfs:label> </owl:Class> <owl:ObjectProperty rdf:ID="arearelacion_disciplina"> <rdfs:domain rdf:resource="#Disciplina"/> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="topicocompuesto_conceptos"> <rdfs:domain rdf:resource="#Topico"/> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="areadividen_topicos"> <rdfs:domain rdf:resource="#Area"/> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="conceptoscontienen_referencias"> <rdfs:domain rdf:resource="#Referencia_Externa"/> </owl:ObjectProperty> <owl:FunctionalProperty rdf:ID="nombre"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="#Definicion"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="autor"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="#Referencia_Externa"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>

Page 134: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 120

</owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="volumen"> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:domain rdf:resource="#Referencia_Externa"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="titulo"> <rdfs:domain rdf:resource="#Referencia_Externa"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="fuente"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:domain rdf:resource="#Disciplina"/> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="pagina"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdfs:domain rdf:resource="#Referencia_Externa"/> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="definicion"> <rdfs:domain rdf:resource="#Definicion"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="sigla"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:domain rdf:resource="#Topico"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="id"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#int"/> <rdfs:comment rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >identificador de las definiciones</rdfs:comment> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="codigo"> <rdfs:domain rdf:resource="#Referencia_Externa"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> </owl:FunctionalProperty> <owl:FunctionalProperty rdf:ID="año"> <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#DatatypeProperty"/> <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>

Page 135: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 121

<rdfs:domain rdf:resource="#Referencia_Externa"/> </owl:FunctionalProperty> <Concepto rdf:ID="Ontologia_10032007_Instance_7"> <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Product and Process Requirement</nombre> <definicion rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Debe poder hacerse una distinción entre los parametros relacionados con los productos y con los procesos...</definicion> </Concepto> <Topico rdf:ID="Ontologia_10032007_Instance_5"> <definicion rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Esta diseñado para proporcionar una vista de alto nivel del proceso de manejo de requerimientos</definicion> <topicocompuesto_conceptos> <Concepto rdf:ID="Ontologia_10032007_Instance_9"> <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Process Actor</nombre> <definicion rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Este tópico introduce los roles de las personas que participan en el proceso de manejo de requerimientos</definicion> </Concepto> </topicocompuesto_conceptos> <topicocompuesto_conceptos> <Concepto rdf:ID="Ontologia_10032007_Instance_8"> <definicion rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >El objetivo de este tópico es proporcionar un mayor entendimiento del proceso de manejo de requerimientos.</definicion> <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Process Model</nombre> </Concepto> </topicocompuesto_conceptos> <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Requirements Process</nombre> </Topico> <Area rdf:ID="Ontologia_10032007_Instance_3"> <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Software design</nombre> <definicion rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Proceso de definir arquitecturas, componentes, interfaces, etc...</definicion> </Area> <Concepto rdf:ID="Ontologia_10032007_Instance_6"> <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Definition of Software Requirements</nombre> <definicion rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Es una propiedad que debe ser presentada para resolver un problema del mundo real</definicion> </Concepto> <Topico rdf:ID="Ontologia_10032007_Instance_4"> <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Software Requirements Fundamentals</nombre>

Page 136: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 1. 122

<topicocompuesto_conceptos rdf:resource="#Ontologia_10032007_Instance_7"/> <topicocompuesto_conceptos rdf:resource="#Ontologia_10032007_Instance_6"/> </Topico> <Area rdf:ID="Ontologia_10032007_Instance_2"> <areadividen_topicos rdf:resource="#Ontologia_10032007_Instance_5"/> <areadividen_topicos rdf:resource="#Ontologia_10032007_Instance_4"/> <nombre rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Software requirements</nombre> <definicion rdf:datatype="http://www.w3.org/2001/XMLSchema#string" >Incluye la definición de los requrimientos de software.</definicion> </Area> </rdf:RDF>

Page 137: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 123

ANEXO 2

Page 138: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 124

1.- Documento javaDoc de la clase MainOwl.java:

Package Class Use Tree Deprecated Index Help

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes All Classes SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

com.ula.owl Class MainOwl

java.lang.Object com.ula.owl.MainOwl

public class MainOwl extends java.lang.Object

Clases que contiene los métodos necesarios para cargar los datos provenientes de la Ontología generada en Protégé.

Author: Adriana Quero

Field Summary

private static java.util.Collection collectionTopicos

private static com.ula.objetos.Concepto concepto

private static int contadorConcepto

private static int contadorTopico

private static edu.stanford.smi.protegex.owl.model.OWLIndividual

individual

private static edu.stanford.smi.protegex.owl.model.OWLIndividual

individualInterno

private static com.ula.objetos.Topico topico

private static java.lang.String xmlstream

Page 139: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 125

private static com.thoughtworks.xstream.XStream xstream

Constructor Summary

MainOwl()

Method Summary

private edu.stanford.smi.protegex.owl.model.OWLModel

cargarArchivo() Método que carga el objeto OWLModel que contiene la ontología.

private java.lang.String cargarAtributo(java.util.Iterator iterator, edu.stanford.smi.protegex.owl.model.OWLModel owlModel, java.lang.String att, edu.stanford.smi.protegex.owl.model.OWLIndividual individual) Método que se encarga de cargar el valor de un atributo determinado.

private java.util.Collection cargarListaAtributo(edu.stanford.smi.protegex.owl.model.OWLModel owlModel, java.lang.String sIndividual, java.lang.String sRelacion) Método para cargar un listado de atributos pertenecientes a una relación determinada.

private java.lang.String cargarOntologia() Método que se encarga de cargar la información proveniente del archivo .owl y de convertirla a xml para ser utilizada posteriormente por el Servicio Web.

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Page 140: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 126

Field Detail

contadorTopico

private static int contadorTopico

contadorConcepto

private static int contadorConcepto

individual

private static edu.stanford.smi.protegex.owl.model.OWLIndividual individual

individualInterno

private static edu.stanford.smi.protegex.owl.model.OWLIndividual individualInterno

topico

private static com.ula.objetos.Topico topico

concepto

private static com.ula.objetos.Concepto concepto

collectionTopicos

private static java.util.Collection collectionTopicos

xmlstream

private static java.lang.String xmlstream

Page 141: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 127

xstream

private static com.thoughtworks.xstream.XStream xstream

Constructor Detail

MainOwl

public MainOwl()

Method Detail

cargarArchivo

private edu.stanford.smi.protegex.owl.model.OWLModel cargarArchivo() Método que carga el objeto OWLModel que contiene la ontología. Returns: OWLModel retorna un objeto del tipo OWLModel que contiene los datos de la Ontología

cargarListaAtributo

private java.util.Collection cargarListaAtributo(edu.stanford.smi.protegex.owl.model.OWLModel owlModel, java.lang.String sIndividual, java.lang.String sRelacion)

Método para cargar un listado de atributos pertenecientes a una relación determinada. Parameters: owlModel - objeto modelo que tiene cargada la ontología sIndividual - nombre del Individual sRelacion - nombre de la relación Returns: una Collección que contiene los Individuals de una relación.

cargarAtributo

private java.lang.String cargarAtributo(java.util.Iterator iterator,

Page 142: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 128

edu.stanford.smi.protegex.owl.model.OWLModel owlModel, java.lang.String att, edu.stanford.smi.protegex.owl.model.OWLIndividual individual)

Método que se encarga de cargar el valor de un atributo determinado. Parameters: iterator - owlModel - objeto modelo que tiene cargada la ontología att - nombre del atributo del cual se desea obtener el valor individual - objeto Individual del cual se cargara el atributo Returns: String retorna una cadena con el valor del atributo solicitado

cargarOntologia

public java.lang.String cargarOntologia() Método que se encarga de cargar la información proveniente del archivo .owl y de convertirla a xml para ser utilizada posteriormente por el Servicio Web. Returns: String retorna un String que contiene el xml producto de la transformación de los objetos Java a xml con el XStream

Package Class Use Tree Deprecated Index Help

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes All Classes SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

2.- Archivo WSL (wsdlontology.wsdl):

<?xml version="1.0" encoding="UTF-8" ?> - <wsdl:definitions targetNamespace="urn:com.ula.ws"

xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:com.ula.ws" xmlns:intf="urn:com.ula.ws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

- <!-- WSDL created by Apache Axis version: 1.4 Built on Apr 22, 2006 (06:55:48 PDT)

--> - <wsdl:message name="getXmlstreamResponse">

Page 143: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 129

<wsdl:part name="getXmlstreamReturn" type="soapenc:string" /> </wsdl:message>

<wsdl:message name="getXmlstreamRequest" /> - <wsdl:portType name="WSOntology"> - <wsdl:operation name="getXmlstream"> <wsdl:input message="impl:getXmlstreamRequest" name="getXmlstreamRequest"

/> <wsdl:output message="impl:getXmlstreamResponse"

name="getXmlstreamResponse" /> </wsdl:operation> </wsdl:portType>

- <wsdl:binding name="ontologySoapBinding" type="impl:WSOntology"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"

/> - <wsdl:operation name="getXmlstream"> <wsdlsoap:operation soapAction="" /> - <wsdl:input name="getXmlstreamRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

namespace="urn:com.ula.ws" use="encoded" /> </wsdl:input>

- <wsdl:output name="getXmlstreamResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"

namespace="urn:com.ula.ws" use="encoded" /> </wsdl:output> </wsdl:operation> </wsdl:binding>

- <wsdl:service name="WSOntologyService"> - <wsdl:port binding="impl:ontologySoapBinding" name="ontology"> <wsdlsoap:address location="http://localhost:8080/axis/services/ontology" /> </wsdl:port> </wsdl:service> </wsdl:definitions>

3.- Documento javaDoc de la clase ClienteOntologia.java:

Package Class Use Tree Deprecated Index Help

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes All Classes SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

Class ClienteOntologia

java.lang.Object

Page 144: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 130

ClienteOntologia

public class ClienteOntologia extends java.lang.Object

Clase que contiene los métodos encargados de consumir el Servicio Web que suministra la información extraida de la Ontología.

Author: Adriana Quero

Constructor Summary

ClienteOntologia()

Method Summary

java.lang.String cargarXMLOntologia() Método encargado de cargar la ontología al consumir el servicio Web.

Methods inherited from class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail

ClienteOntologia

public ClienteOntologia()

Method Detail

cargarXMLOntologia

public java.lang.String cargarXMLOntologia()

Page 145: DEFINICION DE UNA ONTOLOGIA PARA LA GUIA DE …

Anexo 2. 131

Método encargado de cargar la ontología al consumir el servicio Web. Returns: String- Retorna el XML producto de consumir el Servicio Web

Package Class Use Tree Deprecated Index Help

PREV CLASS NEXT CLASS FRAMES NO FRAMES All Classes All Classes SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD