30 July 2007

DBAccess en Ciberespacio Radio


Entrevista con Edgar Rincón. En su estilo incisivo hizo una entrevista bien amena y fresca.

24 July 2007

Tips para construcción de diagramas de clases útiles y legibles

Escribo en este post uno de los temas más recurrentes y de más utilidad en clases, revisiones de pares, recomendaciones de diseño, revisiones de documentos de arquitectura y en general en cualquier momento donde aparezca un diagrama de clases.

Hago una recopilación de los tips y observaciones que surgen continuamente y que teniéndolos en cuenta se mejora significativamente la calidad y utilidad de los diagramas.

El error más común: Relaciones conceptuales

En muchos casos un modelo conceptual, que representa el espacio del problema, se utiliza como base para la identificación de clases. Las relaciones que se presentan en un modelo conceptual suelen ser acciones o interacciones de elementos en el mundo real. Por ejemplo en el modelo conceptual de un sistema de inscripciones de un ente educativo, seguramente consiguiremos una relación inscribe entre los conceptos de Estudiante y Materia.

Figura 1: Modelo Conceptual
En el modelamiento de un diagrama conceptual ésto es perfectamente válido. Ahora cuando se habla de relaciones entre clases, una relación inscribe entre las clases Estudiante y Materia tiene un significado bien específico y está relacionado directamente con la implementación.

Figura 2: Diagrama de Clases
La relación de la figura 2 establece que en la clase Materia existe un método llamado inscribe y que este método es invocado en algún momento por la clase Estudiante. Hay que estar claros con lo que se está expresando y hacerlo concientemente.

Si por ejemplo asumimos que un componente, capa de software o servicio es responsable de un contrato de registro de la inscripción de una materia y ofrece una operación o método con firma:
void inscribirMateria(Estudiante estudiante, Materia nuevaMateria)
throws InscripciónDuplicadaException

Este servicio en su implementación podría hacer una serie de validaciones y luego acceder a un repositorio y almacenar la formalización de la inscripción de la materia.
En este caso la clase Estudiante nunca invocaría un método inscribir de la clase Materia e inclusoeste método podría no existir, aunque sea cierta la relación conceptual entre ambas clases. En un diagrama de clases, de acuerdo a la implementación planteada, sería un error colocarla en un diagrama de clases.

Tipos de relaciones:
estáticas vs. dinámicas

Las relaciones entre dos clases pueden ser clasificadas en dos tipos, estáticas y dinámicas.

Las relaciones estáticas son aquellas que definen estructuralmente a la clase, básicamente en los lenguaes OO utilizados actualmente se definen tres tipos; extensión o herencia, agregación y composición. No es el objeto de este artículo explicar estas relaciones, hay múltiples fuentes disponibles.

Las relaciones dinámicas son las que definen la interacción de la clase con otras, invocaciones que desde la clase se hace a métodos de otra clase. Un ejemplo de relación dinámica se define en la Figura 2.

El tip que se presenta a continuación se basa en esta definición teórica para hacer una recomendación concreta en la construcción de diagramas.

No llene el diagrama de clases con relaciones dinámicas descontextualizadas

Las relaciones dinámicas se dan en el contexto de la ejecución de una operación, servicio o contrato específico. Una clase que participa en la realización de múltiples operaciones, probablemente contará con múltiples invocaciones a otras clases, subconjuntos de todas estas relaciones (invocaciones) participan en la relización de una cada operación específica.

Si en un diagrama de clases, adicionalmente a las relaciones estáticas, colocamos todas las relaciones dinámicas que se dan entre las clases del diagrama (es decir, todas las relaciones por cada vez que una clase llama a un método de otra clase) entonces terminaremos con un diagrama sobrecargado, de aquellos que solemos llamar spaghetti diagram.
Figura 4: Espagueti inentendible... encontré un buen ejemplo buscando imágenes en la red.

Cuando se presenta un diagrama de clases, lo más recomendable es presentar la estructura utilizando sólo las relaciones estáticas. Las relaciones dinámicas recomiendo presentarlas en su debido contexto, por ejemplo utilizando un diagrama de secuencias o colaboración para cada operación o servicio. De esta forma se apreciará claramente la interacción entre las diferentes clases e incluso objetos, para lograr la realización de una operación.

Seguir esta recomendación mejora significativamente la utilidad de la documentación para el equipo que hará mantenimiento del sistema en construcción, disminuyendo así los costos de soporte y mantenimiento a futuro.

22 July 2007

Re Re Re Re Re Reconversión Monetaria

La metodología para afrontar el impacto de la reconversión monetaria en las plataformas tecnológicas que definimos en la Unidad de Arquitectura e Innovación de DBAccess, ha sido mercadeada efectiva y masivamente por el equipo de la Unidad de Mercadeo. Numerosas notas de prensa, presentaciones y entrevistas has sido muestra de la acogida que ha recibido en el mercado. Yo por mi lado, de vocero del tema, repito una y otra vez como el conejito de las pilas...

Recopilación de enlaces y entrevistas.

Entrevista televisada para Alta Densidad - Globovisión.
La entrevista fue en un formato de preguntas y respuestas que después serán editadas. El fondo verde al mejor estilo de Matrix fue una nota divertida. Espero a que salga el programa en TV para ver qué fondo le colocan.
http://red-dbaccess.blogspot.com/2007/07/dbaccess-en-alta-densidad.html

DBAccess habla sobre los efectos de la reconversión monetaria sobre las plataformas TI en foro de CAVEDATOS 7/11/2007:


Nuestra estrategia para la reconversión monetaria en ComputerWorld (Junio 2007): http://red-dbaccess.blogspot.com/2007/07/nuestra-estrategia-para-la-reconversin.html
Leer nota completa en ComputerWorld Venezuela (.pdf)

La conversión al bolívar fuerte tiene fuerte impacto en los sistemas informáticos:
http://enbytes.com/noticias/reconversionI.htm

Igual al anterior pero publicado por Conapri:
http://www.conapri.org/ArticleDetailIV.asp?CategoryId=14563&ArticleId=282506

CANTV.Net: DBAccess habla sobre los efectos de la reconversión monetaria:
http://www.cantv.net/ciencia/resena.asp?id=141181&cat=2&Fresena=TRUE

DBAccess en Alta Densidad - Radio. Entrevista por Carlos Monzón a ser transmitida en el Circuito X.






http://red-dbaccess.blogspot.com/2007/05/dbaccess-en-alta-densidad.html
Escuche la entrevista: