Showing posts with label uml. Show all posts
Showing posts with label uml. Show all posts

May 15, 2012

Generic actions model

Have you ever tried to install something in a Linux distribution and have struggled with a dependency manager? such as DEB, RPM, PACMAN?

Dependency graph


I have a love/hate relationship with these models, sometimes they save my day, but some others are really, but really hard to deal with.

In software development you will find such scenarios, where you have something to do, and that thing will require another thing... and so on.

I mapped this model about a generic rule-dependency model:


  • Action: Component doing some kind of work. All the dependencies are one-side oriente, and each dependency can have many other dependencies.
  • ActionsRepository: A collection of sorted actions by any kind of criteria. Normally not allowing duplicated actions.
  • ActionsExecutor: Component in charge of iterate and execute the actions.

January 29, 2010

Interacción con JMS

Java Messaging Service es un middleware de comunicación a través de mensajes para Java muy utilizado a nivel mundial, con estandares definidos y varios proveedores.

Actualmente, yo requería utilizar múltiples proveedores de JMS en una aplicacion, entonces para no estar creando implementaciones independientes para cada tipo de proveedor, decidi hacer una interfaz que utilice los estandares JMS y me permita implementar mis clases de forma transparente al proveedor JMS, este es un diagrama de clase de mi diseño:


Patrones de diseño utilizados:

August 15, 2009

Proyecto de grado: Tiergen

Como proyecto final de grado, dentro de la carrera de Ingeniería Informática, elegí como tema de tesis la generación de código para la norma de persistencia JPA, todo a través de un editor de diagramas de clase.

Para aumentar la capacidad de la aplicación, utilicé la arquitectura multicapas como arquitectura destino del código generado; el proyecto en si no es grande, pero si complejo, debido a los conceptos y componentes que se deben utilizar.

El proyecto fué denonimado "Tiergen" por los factores ya nombrados, y soporta las siguientes normas:
  • UML 1.4.2 ISO/IEC 19501
  • MOF 1.4 ISO/IEC 19502
  • XMI 1.2
  • Java Persistence API 1.0 JSR 220
  • Java Metadata Interface JSR 40
Las herramientas y componentes utilizados fueron:
El proyecto es un fork de la aplicación MVCase de Daniel Lucredio y actualmente está liberado con la licencia BSD, el contenedor del proyecto es Google Code y está disponible a cualquiera que tenga curiosidad sobre el tema.

Enlace al proyecto alojado en Google Code.

November 7, 2008

Metamodelo de UML 2

UML fue propuesto de forma paralela a MOF, debido a que la OMG, una organizacion que define estándares, publicó una solicitud halla por los noventa.

La solicitud fue para dos cosas, un lenguaje para definir estructuras( ver metalenguaje), y un lenguaje de modelado de propoósito general.

La repuesta para ambos fue UML, desde IBM, Rational , y un par de decenas de compañias.

UML en si es un lenguaje, por tanto puede interpretarse y validarse, la contraparte fue MOF, un "lenguaje" para definir estructuras u otros lenguajes, que a su vez esta definido en UML, en el UML Profile for MOF.

Ahora, que tal si quiero programar en MOF o sobre UML(no modelar UML, sino programar con UML), hace poco la solucion a esto era implementar MOF o UML( que son muy similares).

Esto era lento y propenso a errores, entonces la OMG publico una libreria que contiene la definicion completa de UML en Java, utilizando las potentes interfaces.

Esta libreria define lo que cada elemento dentro de UML deberia poder hacer, sus herencias, características y métodos. Entonces solamente debemos implementar estas interfaces, pero esto tambien es tedioso; la solucion a todos nuestros problemas es MDR(Metadata Repository) de Netbeans, que es un repositorio de datos que puede realizar la implementacion de metamodelos, que cosa no?.

Continuara...

September 12, 2008

Metamodelo UML - 1

Como avance dentro de un proyecto de grado, me encuentro con UML(Unified Modelling Language), este famoso y conocidísimo lenguaje de modelado definido por los grandes de los procesos de desarrollo del software.

Pero, ¿qué es UML?, UML es una convención para modelar( visualizar, diseñar, especificar, documentar) algun elemento del mundo real, esa es la definicion de modelado, UML esta orientado hacia el desarrollo de software, aunque eso no quiera decir que solo se pueda usar para esto.

Perfecto entonces, es algo que me permite modelar, ¿pero como?.

UML define un conjunto de elementos que permiten el modelado, llamados diagramas. Existen diagramas de todo tipo, que tienen un objetivo específico y diferentes características propias.

Ahora mi problema es que debía definir UML en un lenguaje de programación, es decir, crear la estructura para modelor. Esto es algo interesante, ya que UML esta definido en UML !!.

Algo extraño, no?. Esto es llamado metamodelo, un metamodelo es un modelo de un modelo, son datos de datos, son esquemas de esquemas.

El metamodelo de UML se vería algo así:

Semejante cosa es posible gracias "MOF Meta-Object_Facility", que es otra norma para definir esquemas o arquitecturas, fué creado específicamente para UML, pero sus beneficios son numerosos.

Ahora como solo me interesan los diagramas de clase, una pequeña porción del UML, cada uno de estos elementos define la estructura del diagrama, sus elementos, operaciones y atributos.

Entonces la solución es utilizar MDR Meta-Data Repository, un proyecto iniciado por Netbeans que maneja una implementación del metamodelo de UML, aunque eso por supuesto no es todo lo que puede hacer.

Hasta aqui este post, más adelante seguiremos con este tema.