¿A quién va dirigida esta
guía visual?
¿De dónde provienen las
ideas expuestas?
Esta guía describe como definir, organizar y visualizar lo que denominamos formas de vida organizativa (VIO) con la notación Unified Modelling Language (UML). Una VIO representa un ciclo de actividad realizado por uno o varios agentes con un propósito concreto, en base a una práctica consensuada para utilizar los recursos disponibles y para tomar las decisiones que caracterizan el comportamiento de una organización.
A diferencia de los sistemas biológicos, las VIO nacen y se desarrollan a partir de una voluntad compartida, de una idea y de un liderazgo. Pero de la misma manera que la selección natural actúa en los sistemas biológicos, la continuidad de una VIO está condicionada a la implementación eficiente de sus procesos esenciales. Conocer estos procesos, saber como aplicar los recursos y como tomar las decisiones para satisacer la cadena de valor de todos los agentes son los factores que toda organización ha de tener en cuenta para evolucionar y asegurar su viabilidad.
La notación UML (no hay que confundir con las metodologías que utilizan dicha notación), se ha convertido desde finales de los 90 en un estándar para modelar con tecnología orientada a objetos todos aquellos elementos que configuran la arquitectura de un sistema de información y, por extensión, de los procesos de negocio de una organización. De la misma manera que los planos de un arquitecto disponen el esquema director a partir del cual levantamos un edificio, los diagramas UML suministran un modelo de referencia para formalizar los procesos, reglas de negocio, objetos y componentes de una organización. La interacción de todos estos elementos es una representación de nuestra realidad.
Nuestros límites para entender esta realidad están en nuestro lenguaje. El mundo es la suma total de lo que podemos definir, organizar y visualizar. Cabe preguntarse ¿de qué manera un modelo en UML representa nuestra experiencia?. Enseñar a utilizar un lenguaje formal siempre es problemático. Es necesario mostrar como este lenguaje puede ser aplicado a la realidad tal como la conocemos y tal como la compartimos con los demás.
Con esta guía visual mostramos de manera precisa las
técnicas básicas para usar UML en diferentes contextos. La clave está en
discriminar cuales son aquellos procedimientos esenciales que nos permiten
evitar costosas confusiones conceptuales. No es mediante el descubrimiento de
nuevos objetos y de sus múltiples conexiones que avanzamos en las respuestas a
nuestros interrogantes cuando modelamos un dominio, sino mediante la disolución
de las contradicciones que existen entre los términos (conceptos) ya conocidos
y, en último caso, mediante la reducción de su número despejando aquellos
conceptos que no añaden valor a la comprensión de dicho dominio. Reconsiderar
lo obvio, desenmascarar presunciones, desambigüar conceptos conocidos, todo en
busca de la simplicidad y la usabilidad.
La tecnología orientada a objetos persigue el antiguo principio del
divide y vencerás. Su objetivo es descomponer la complejidad en partes
más manejables y comprensibles. No parece que esto sea algo novedoso con
respecto a la tradicional descomposición funcional de los métodos
estructurados. Sin embargo, la gran diferencia reside en aplicar la dualidad estructura-función
en pequeñas unidades capaces de comunicarse y reaccionar en base a la aparición
de una serie de eventos. El esquema dominante de la separación de estructuras
de datos y funciones (bases de datos y programas) está amenazado pero aún se
resiste a desaparecer.
Mucha gente cree que la principal utilidad de la orientación a objetos
es la reutilización del código para conseguir un desarrollo más rápido
de las aplicaciones (Rapid Application Development). No comparto esta opinion.
Si hay algo que caracteriza un entorno de desarrollo actual es la constante del
cambio. Todo proyecto que sobrepase los tres meses está amenazado por la
aparición de nuevas plataformas más exigentes, la extinción de herramientas sin
previo aviso y, de manera sistemática, por la rotación del personal crítico
encargado del proyecto. También está sometido, como no, a los cambios de
requerimientos del cliente que a su vez están plenamente justificados por la
readaptación de sus procesos de negocio a un mercado inestable.
Ante este cuadro de incertidumbre, el mayor desafio de una metodología
de desarrollo es su adaptación para el cambio. Esto significa crear
modelos que faciliten la comunicación entre todos los agentes
involucrados en el sistema en construcción; que hagan visible la trazabilidad
entre la concepción de los componentes, su especificación, implementación e
instalación; significa el diseño de arquitecturas que faciliten la gestión de
las dependencias entre estos componentes, que sean en fin, facilmente reemplazables
por otros más optimizados o bien por componentes que aporten una mayor
funcionalidad y/o facilidad de uso.
La dinámica de cambio no se desarrolla en la ingeniería del software
con la misma velocidad vertiginosa con que nos tiene acostumbrados la
tecnología del hardware. La clave reside en que a diferencia de la electrónica,
en los dominios del desarrollo de software no existe un vocabulario
unificado. Desde la fase de concepción de un sistema a la instalación de
sus componentes hay que mapear entre sí una gran diversidad de lenguajes
orientados al análisis, diseño, código ejecutable, esquemas de bases de datos,
componentes de páginas web, entre otros. Esta distancia entre la concepción y
la usabilidad de un producto o de un proceso de negocio, exige cada vez más la
capacidad de cooperación y comunicación de un equipo interdisciplinar muy
especializado. Esta guía visual de UML está pensada para facilitar este proceso
cooperativo y para ayudar a establecer una buena práctica fundamentada en un
lenguaje común.
¿A quién va dirigida esta guía visual? ![]()
Esta guía ha sido escrita y diseñada para los profesionales
involucrados en todos los ciclos de actividad del desarrollo de sistemas de
información (concepción, análisis y diseño, implementación, instalación de
aplicaciones, gestión y certificación de proyectos); también para los que
tengan responsabilidades en la especificación de procesos de negocio con el
propósito de evaluar posibles reingenierías de procesos y/o diseño de bases de
conocimiento; y finalmente, para aquellos equipos que estén inmersos en la
preparación e implementación de certificaciones de calidad.
La claridad conceptual y los recursos didácticos utilizados en la
exposición de los distintos procedimientos serán de utilidad para los
estudiantes que sigan programas de autoaprendizaje y usen esta guía como
complemento para sus lecturas de libros sobre UML. También los centros
académicos y profesores dispondrán con esta guía de material interesante para
completar sus diseños curriculares y proporcionar ejemplos prácticos a sus
alumnos.
La guía está organizada en unidades didácticas que describen la notación
de los diagramas y las fuentes de información necesarias para definir los
elementos de cada modelo. Puede usarse como consulta puntual de la notación de
un diagrama, o bien, para revisar como establecer el hilo conductor entre los
Casos de Uso (mapa funcional), las Clases de dominio (mapa conceptual), las
Clases de Especifiación (types e interfaces) y las Clases de Implementación
(código).
Un plan de estudio para realizar una progresiva asimilación de los
conceptos podría empezar con los Casos de Uso (CU) y continuar con el análisis
de los flujos de trabajo de un grupo de CU mediante los diagramas de Actividad;
a continuación, separar los escenarios que agrupan una serie de actividades y
hacer aflorar, a través de los diagramas de Interacción, los objetos que
intercambian una serie de mensajes. A partir de este punto, disponemos del
bagaje suficiente como para introducirnos en la abstracción de los objetos y
comprender la importancia de separar las tres perspectivas básicas en nuestra
representación de las clases: concepción, especificación e implementación. El
siguiente paso es identificar alguna clase con un comportamiento complejo que
la haga candidata a revisar todos sus posibles estados y averiguar que eventos
son capaces de provocar un cambio de estado. El diagrama de Estados-Transición
será el adecuado para representar esta dinámica de estados. Finalmente,
abordaremos la configuración de componentes y su despliegue en una
arquitectura.
Otra lectura de la guía puede estar mas centrada en el seguimiento de
la metodología de desarrollo y la gestión de un proyecto. En este caso, las
primeras secciones describen los
niveles de concepción y formalización de un proyecto con la metodología TRAD
(Taller de Requerimientos, Análisis y Diseño basado en el Proceso Unificado de
Rational), y se van introduciendo progresivamente los diagramas y actividades
que configuran la unidad mínima de documentación sostenible para un
proyecto concreto.
El estudiante más avanzado podrá sacar también provecho con la consulta puntual de los diagramas en que esté más interesado y la revisión de sus extensiones. Las materias expuestas en las distintas secciones están actualizadas constantemente y pueden descargarse nuevas ediciones en formato PDF desde: http://www.vico.org/UMLguiavisual.pdf/
¿De dónde provienen las ideas expuestas? ![]()
El contenido de esta guía ha sido elaborado a partir del trabajo de una
serie de profesionales que el autor ha tenido la oportunidad de estudiar y
aplicar en distintos proyectos. Desde principios de los 90, los artículos
publicados en el Journal of Object Oriented Programming (JOOP)
por James Odell, James Rumbaugh, Grady Booch, Desmond d'Souza, Bertrand Meyer, Steve Cook, John Daniels, Sally
Shlaer y Stephen J. Mellor entre otros, han sido una constante
fuente de conocimiento. Publicaciones pioneras como el Object Oriented Technology, A Manager's Guide de David A. Taylor, en su primera
edición de 1990 y en la segunda ampliada de 1998, han tenido una gran
influencia en como abordar la presentación didáctica. También los libros de Peter
Coad et al, Object Oriented Analysis, Design and Programming, Object
Models y Java Modeling Color with UML, han sido de una ayuda
extraordinaria. La obra enciclopédica The Unified Modeling Language:
Reference Manual de Rumbaugh & Jacobson & Booch, es un punto
de referencia constante. Sin duda, uno de los autores más influyentes ha sido Martin
Fowler. Su primer libro Analysis Patterns continua siendo una
referencia clave. Posteriormente, la primera edición de UML Distilled en
1997 y su última edición ampliada en 2000, se ha convertido en el libro de
cabecera de UML. Otro clásico por la excelencia de su trabajo es Applying
UML and Patterns de Craig Larman que en su segunda edición aparecida
en verano de 2001 se ha superado a si mismo. También recientes y con muy buen
material que ha sido incorporado a la guía, tenemos los libros de Wendy
& Michael Boggs, Mastering UML with Rational Rose, de Alistair
Cockburn, Writing Effective Use Cases; de Scott W. Ambler, The
Object Primer segunda edición; y de John Chessman & John Daniels,
UML Components, una de las novedades más interesantes de 2001. En la bibliografía sobre UML publicada en vico.org hay una relación completa de los libros consultados que se actualiza periódicamente con las últimas novedades.
En los últimos veinte años de mi carrera profesional en el desarrollo
de sistemas de información he participado en una gran diversidad de proyectos
con distintos grados de responsabilidad e involucración, pero siempre con un
compromiso firme en la calidad y usabilidad del producto final.
§
Entorno industrial
§
Entorno sanitario
§
Entorno de ingeniería del software
§
Entorno administrativo y de gestión
§
Entorno comercial
§
Entorno de servicios
§
Entorno académico
§
Entorno docente
§
Entorno de I+D
En primer lugar a los clientes que con su confianza han permitido que
pueda desarrollar mi carrera profesional. También a los autores antes
mencionados por su valioso trabajo en el avance de la disciplina de la
ingeniería del software y en la consolidación de UML como lingua franca.
Josep Vilalta
Badalona, Barcelona (España)