TENDENCIA EN LA INGENIERÍA DE SOFTWARE
Especificación Orientada a Objetos
Esta investigación persigue como objetivo primordial el desarrollo de una metodología de análisis que combine las conceptos inherentes a la orientación a objetos con los métodos formales. Con ello pretendemos aprovechar el aspecto intuitivo de metodologías semiformales (OMT, FUSION, SYNTROPY) con el rigor de las técnicas formales (especificaciones algebraicas de datos y procesos).
Como primer paso en el desarrollo de esta metodología hemos diseñado el lenguaje de especificación TESORO, las principales características de este lenguaje son:
- La homogeneidad en el tratamiento de los aspectos estáticos y dinámicos del sistema
- La utilización de diversos tipos de restricciones, como método declarativo de descripción
- La definición de una semántica precisa para los operadores entre clases (asociación, agregación, relación y herencia)
Como siguiente paso, nos hemos marcado el desarrollo de herramientas de prototipado para nuestro lenguaje. En la actualidad está definido el proceso de prototipado hacia el lenguaje LOTOS, y está prevista la definición del mismo proceso para un lenguaje lógico (PROLOG) y para lenguajes imperativos (C++, JAVA).
Implementación de TESORO
Ya hemos trabajado en desarrollo de compiladores que transforman una especificación de un sistema realizada en TESORO en un prototipo en PROLOG o LOTOS. Desgraciadamente los prototipos que se obtienen al compilar TESORO a estos lenguajes no son lo suficientemente eficientes como para ser utilizados en aplicaciones prácticas.
En la actualidad se esta trabajando en un nuevo compilador que producirá código IP, un nuevo enfoque para la implementación de sistemas reactivos distribuidos que, al contrario de otros lenguajes similares, resulta también adecuado para realizar razonamiento formal, una propiedad realmente interesante si tratamos de compilar lenguajes de especificación como TESORO.
En la actualidad se está trabajando en mejoras del mecanismo de sincronización y comunicación entre procesos que presenta IP así como en la adaptación a entornos de tipo distribuidos de algunas de las técnicas tradicionales de resolución de restricciones.
Gestión de Proyectos
Desde 1991, con la publicación por parte de Abdel-Hamid y Madnick de un modelo dinámico para la gestión de proyectos de desarrollo de software, surge un campo de trabajo que está permitiendo una mayor comprensión de las diferentes variables a considerar y las complejas relaciones que se producen entra las mismas durante el proceso de desarrollo de software.
Actualmente, apoyándonos en el modelo de Abdel-Hamid y Madnick estamos atrabajando en dos áreas, por un lado profundizar en el análisis de los resultados de dicho modelo, y por otro lado hemos creado un modelo dinámico reducido que permita realizar estimaciones en etapas tempranas, cuando aún se tiene poca información sobre el proyecto.
Sistemas Multiagentes
Un agente es cualquier ente capaz de alcanzar unos objetivos prefijados interactuando con el entorno en el que se desarrolla y relacionándose con otros agentes para la consecución de dichos objetivos.
A partir de esta idea de agente, analizaremos los sistemas multiagente, contemplando:
- La creación y destrucción de agentes
- La interfaces existente entre ellos
- Los lenguajes que implementan estas características
Desde el punto de vista de la implementación, se estudia la teoría de agentes en red
Desarrollo de plataformas multiagente tomando como base el concepto de programación distribuida y las herramientas existentes que la implementan. Por último se analizan las tendencias que sobre el tema se van derivando en la actualidad.
Generación de prototipos
El uso de métodos formales dentro de la Ingeniería del Software no están centrados solamente en aspectos de especificación, podríamos aplicarlos también en la obtención de programas que resuelvan los problemas especificados.
De esta forma, el interés se centra en explotar los formalismos de especifición junto con mecanismos que automaticen la construcción de programas a partir de las especificaciones. Estos mecanismos de refinamiento nos permitirían no sólo obtener programas correctos sino también cubrir aspectos no funcionales (p.e. rendimiento).
Con este planteamiento, tareas de interés son:
- Soporte en la validación de especificaciones.
- Automatización en derivación de programas.
- Transformaciones horizontales: los programas se transforman en programas semánticamente equivalente usando un lenguaje común con vistas a mejorar el rendimiento.
- Transformaciones verticales: posibilidad de transformar programas en un lenguaje a programas en otro lenguaje preservando la semántica con multiples objetivos (rendimiento, portabilidad, etc).
Registrar diferentes versiones de una misma entidad: especificación y programas en diferentes estados de implementación (programas iniciales, programas finales más eficientes, etc). Aspectos necesarios como documentación de diseño en el desarrollo del software.
No hay comentarios:
Publicar un comentario