Post on 27-Jan-2016
Left CaseLeft Case: Int Case v1.0: Int Case v1.0Roberto Galache GarcíaRoberto Galache García
Tutores:Tutores: Francisco José García PeñalvoFrancisco José García Peñalvo
Iván Álvarez NaviaIván Álvarez Navia
Universidad de Salamanca
Departamento de Informática y Automática
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 22
ÍndiceÍndice
1. Introducción2. Objetivos3. Conceptos teóricos4. Técnicas y herramientas5. Aspectos relevantes del desarrollo6. Demostración7. Conclusiones8. Trabajo futuro
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 33
IntroducciónIntroducción
• Objetivos de la Ingeniería del Software
– Desarrollo de software de calidad y económico
– Disminución en el tiempo de desarrollo
• Caminos: entornos RAD, herramientas CASE, etc.
• Las herramientas CASE son costosas y no están al
alcance de cualquiera
• Left Case es un entorno CASE bajo licencia GPL
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 44
IntroducciónIntroducción
• Left Case agrupa distintos componentes que permiten la edición de diagramas– DFD (Diagramas de flujo de datos)– DTD (Diagramas de transición de estados)– DER (Diagramas entidad/relación)– Diagramas de clases UML– Diagramas de Casos de Uso– Diagramas de transición de estados (bajo UML)
• Int Case es un nuevo componente– Es un entorno CASE frontal– Permite la edición de diagramas de Interacción
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 55
ObjetivosObjetivos
• Creación de un entorno CASE para la edición de diagramas bajo distintos paradigmas– Estructurado
– Objetual
• Generación automática de documentación técnica de análisis y diseño
• Formato de almacenamiento estándar y portable: XML
Objetivos de Left Case
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 66
ObjetivosObjetivos
• Integración en Left Case (Transparente)
• Edición de diagramas de Interacción– Diagramas de Secuencia– Diagramas de Colaboración
• Impresión de diagramas
Objetivos de Int Case
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 77
Conceptos teóricosConceptos teóricos
• Modelo dinámico del sistema
• Representa “cómo” se comunican los objetos
• Se limita a un determinado contexto: Escenario, Subsistema,…
Diagrama de Interacción
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 88
Conceptos teóricosConceptos teóricos
• Tipo especial de diagrama de Interacción
• Se centra en la ordenación temporal de los mensajes
• Informa sobre la evolución del sistema respecto al tiempo
Diagrama de Secuencia
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 99
Conceptos teóricosConceptos teóricos
• Tipo especial de diagrama de Interacción
• Se centra en la organización de los objetos que se comunican
• Aporta una visión estructural del Sistema
Diagrama de Colaboración
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1010
Técnicas y herramientasTécnicas y herramientas
• Metodología orientada a objetos OMT
• Complementada con
– Plantillas de Durán y Bernárdez
– Diagramas UML
• Diagramas de Clases
• Diagramas de Casos de Uso
• Diagramas de Secuencia
Metodologías empleadas
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1111
Técnicas y herramientasTécnicas y herramientas
• GNOME
– GLIB
– GTK+ y GDK
– CORBA: Bonobo
• Lenguajes para la representación de información
– SGML
– XML
– XSL
Otras técnicas
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1212
Técnicas y herramientasTécnicas y herramientas
• Biblioteca escrita en C
• Permite el manejos de TAD’s
• Tipos independientes de la plataforma
• Favorece la portabilidad
GLIB
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1313
Técnicas y herramientasTécnicas y herramientas
• GIMP Toolkit
• Biblioteca orientada a objetos escrita
en C
• Motor de Interfaz Gráfica de usuario
GTK+
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1414
Técnicas y herramientasTécnicas y herramientas
• CORBA = Interfaz estándar para la
comunicación de elementos
heterogéneos
• BONOBO = Sistema de componentes,
basado en CORBA, bajo GNOME
CORBA Y BONOBO
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1515
Técnicas y herramientasTécnicas y herramientas
Arquitectura de componentes
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1616
Aspectos relevantes del desarrolloAspectos relevantes del desarrollo
• Ciclo de vida
• Diagrama conceptual de clases
• Diseño basado en una arquitectura de componentes
• Utilización del lenguaje C como LPOO
• Problemas en la implementación
Introducción
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1717
Aspectos relevantes del desarrolloAspectos relevantes del desarrollo
• Modelo en “espiral”
• Fases
– Planificación
– Análisis de riesgos
– Ingeniería
– Evaluación
• Uso de prototipos evolutivos
Ciclo de vida
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1818
Aspectos relevantes del desarrolloAspectos relevantes del desarrollo
Diagrama conceptual de clases
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 1919
Aspectos relevantes del desarrolloAspectos relevantes del desarrollo
Diagrama de clases de los elementos
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 2020
Aspectos relevantes del desarrolloAspectos relevantes del desarrollo
• Mecanismos de emulación
– Objetos: punteros a estructuras
– Clases: los métodos son punteros a funciones; atributos
públicos
– Herencia simple y múltiple
– Polimorfismo no soportado
– Manejo de excepciones no soportado por C
– etc.
Utilización del lenguaje C como LPOO
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 2121
Aspectos relevantes del desarrolloAspectos relevantes del desarrollo
• Motor gráfico : GDK vs GnomeCanvas
– “Amplia” documentación sobre GDK
– Problemas de estabilidad de GnomeCanvas
– Las Capacidades gráficas de GDK son
suficientes
Problemas en la implementación
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 2222
Aspectos relevantes del desarrolloAspectos relevantes del desarrollo
• Puntos de Unión
Problemas en la implementación
/* Obtener punto de unión */
for(i=0;i<=100;i++){
pto1.x=rect.x;pto1.y=rect.y+rect.height*i/100;pto2.x = rect.x + rect.width;
pto2.y = rect.y+rect.height*i/100;if(menor_distancia(*pto,pto1,pto2)==2) pto_union
= pto1;if(menor_distancia(*pto,pto_union,pto4)==2)
pto_union = pto2;}
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 2323
Aspectos relevantes del desarrolloAspectos relevantes del desarrollo
• Gestión de la profundidadfor(z=0;z<5;z++){for(n=0;1;n++){instancia = diagrama_get_instancia_n(diagrama,n);if(!instancia) break;if(instancia_get_z(instancia)==z)instancia_dibujar(instancia,gc,pixmap);}
}
Problemas en la implementación
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 2424
DemostraciónDemostración
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 2525
ConclusionesConclusiones
• Obtención de los requisitos propuestos inicialmente• Integración del componente dentro del entorno de
Left Case• Resultado: Int Case v1.0
– Herramienta CASE – Edición de diagramas
• Diagramas de Secuencia• Diagramas de Colaboración
– Portabilidad
• Disponible en http://zarza.usal.es
Left Case: INT CASE v1.0Left Case: INT CASE v1.0 2626
Trabajo futuroTrabajo futuro
• Ampliar la funcionalidad del componente Int Case
• Creación de nuevas hojas de estilo para los informes
• Soporte de un mayor número de formatos en la generación de informes
• Migración a GNOME 2.0
• Soporte para el trabajo colaborativo