87
Generación de Entregables de Arquitectura Empresarial Basada en Ingeniería de Modelos Trabajo de Tesis Presentado al Departamento de Ingeniería de Sistemas y Computación Por Giovanni Andrés Villegas Quimbaya Asesor Jorge Alberto Villalobos Salcedo Ph.D Co-Asesor Mario Eduardo Sánchez Puccini Ph.D Para optar por el título de Magíster en Ingeniería de Sistemas y Computación Ingeniería de Sistemas y Computación Universidad de los Andes Enero de 2012

Generación de Entregables de Arquitectura Empresarial

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Generación de Entregables de Arquitectura Empresarial

Generación de Entregables de Arquitectura Empresarial Basada en Ingeniería de

Modelos

Trabajo de Tesis

Presentado al

Departamento de Ingeniería de Sistemas y Computación

Por

Giovanni Andrés Villegas Quimbaya

Asesor

Jorge Alberto Villalobos Salcedo Ph.D

Co-Asesor

Mario Eduardo Sánchez Puccini Ph.D

Para optar por el título de

Magíster en Ingeniería de Sistemas y Computación

Ingeniería de Sistemas y Computación

Universidad de los Andes

Enero de 2012

Page 2: Generación de Entregables de Arquitectura Empresarial

Contenido

Capítulo I – Introducción ........................................................................................................... 8

Capítulo II – Planteamiento del problema ........................................................................... 9

Capítulo III – Contexto del trabajo ....................................................................................... 11

1. Modelado de arquitectura empresarial .................................................................. 11

2. Entregables y artefactos de arquitectura empresarial ............................................ 12

3. Trabajo relacionado............................................................................................... 14

3.1. Lenguajes de plantilla ............................................................................................ 14

3.2. Herramientas......................................................................................................... 15

3.3. Propuestas de investigación .................................................................................. 16

Capítulo IV – Solución propuesta ......................................................................................... 19

1. Descripción general............................................................................................... 19

2. EnArDocs – Lenguaje de plantillas ........................................................................ 20

3. EnArAnalyse – Consultas y generación de artefactos ........................................... 31

4. Generador de documentos .................................................................................... 42

5. Catálogo de artefactos .......................................................................................... 44

Capítulo V – Experimentación ............................................................................................... 45

1. Descripción del escenario MDLA........................................................................... 45

2. Metamodelo y modelo unificado de MDLA ............................................................ 45

3. Personalización de artefactos ............................................................................... 53

4. Listado de artefactos generados ........................................................................... 57

5. Evaluación de resultados obtenidos ...................................................................... 63

Capítulo VI – Implementación ............................................................................................... 64

1. EnArDocs y EnArDocsFragments ......................................................................... 64

2. EnArAnalyse ......................................................................................................... 66

3. Generador de documentos .................................................................................... 68

Capítulo VII – Conclusiones .................................................................................................... 69

Bibliografía y referencias ....................................................................................................... 70

Apéndice A – Gramática de EnArDocs ................................................................................ 73

Page 3: Generación de Entregables de Arquitectura Empresarial

Apéndice B – Ejemplo de plantilla en EnArDocs ............................................................. 82

Apéndice C – Listado de funciones de EnArAnalyse ...................................................... 83

Page 4: Generación de Entregables de Arquitectura Empresarial

Índice de figuras

Figura 1 – Relaciones indirectas entre elementos como base de las matrices ................... 9

Figura 2 - Cambios en la organización implican cambios en el modelo y mantenimiento de

los entregables ......................................................................................................... 10

Figura 3 - Proceso de modelado al inicio de un proyecto de arquitectura empresarial -

Fuente [22] ............................................................................................................... 12

Figura 4 - Especificación del entregable de arquitectura empresarial .............................. 13

Figura 5 - Proceso de generación de documentación [7] ................................................. 16

Figura 6 - Esquema del proceso de generación de documentación - Fuente [19] ............ 17

Figura 7 – Estrategia de generación del entregable ......................................................... 20

Figura 8 - Sintaxis abstracta de EnArDocs ....................................................................... 22

Figura 9 - Ejemplo de creación de secciones en función de los elementos del modelo .... 31

Figura 10 - Representación utilizada por EnArAnalyse para el modelo, sus elementos y

relaciones ................................................................................................................. 32

Figura 11 - Sintaxis de la llamada a las funciones de EnArAnalyse dentro de EnArDocs 32

Figura 12 - Sintaxis alternativa para llamada de funciones anidadas ............................... 33

Figura 13 – Modelo de Archisurance - Fuente [11] .......................................................... 40

Figura 14 - Procesos de negocio vs aplicaciones para Archisurance ............................... 41

Figura 15 - Actores de negocio vs roles de negocio para Archisurance ........................... 41

Figura 16 - Catálogo de aplicaciones para Archisurance ................................................. 41

Figura 17 - Metamodelo del documento producido por el motor de plantillas de EnArDocs

................................................................................................................................. 43

Figura 18 - Metamodelo de aplicaciones.......................................................................... 45

Page 5: Generación de Entregables de Arquitectura Empresarial

Figura 19 - Metamodelo del Business Motivation Model (BMM) ....................................... 46

Figura 20 - Metamodelo de la arquitectura de procesos del negocio ............................... 46

Figura 21 - Metamodelo de aliados de negocio................................................................ 47

Figura 22 - Conceptos comunes para representar localización geográfica y de red ......... 47

Figura 23 - Metamodelo de la estructura financiera ......................................................... 48

Figura 24 - Metamodelo de recursos humanos ................................................................ 48

Figura 25 - Metamodelo de información ........................................................................... 49

Figura 26 - Metamodelo de infraestructura ...................................................................... 49

Figura 27 - Metamodelo de recursos de la organización .................................................. 50

Figura 28 - Metamodelo de la estructura organizacional .................................................. 51

Figura 29 - Metamodelo de productos ............................................................................. 51

Figura 30 - Metamodelo de servicios ............................................................................... 52

Figura 31 - Conceptos para representar componentes y estándares de tecnología ......... 52

Figura 32 - Visualización del modelo de MDLA ................................................................ 53

Figura 33 – MDLA - Application vs MDLAProcess ........................................................... 57

Figura 34 - MDLA - Data Objects vs Applications ............................................................ 57

Figura 35 - MDLA – Organizational Unit vs Role .............................................................. 58

Figura 36 - MDLA - Applications vs System Software ...................................................... 58

Figura 37 - MDLA – Applications vs Devices ................................................................... 59

Figura 38 - MDLA – Roles ............................................................................................... 59

Figura 39 - MDLA - Data Objects ..................................................................................... 60

Figura 40 - MDLA – Applications ..................................................................................... 60

Figura 41 - MDLA - Software Systems ............................................................................. 61

Page 6: Generación de Entregables de Arquitectura Empresarial

Figura 42 - MDLA - Infrastructure Services ...................................................................... 61

Figura 43 - MDLA - Infrastructure nodes .......................................................................... 62

Figura 44 - Esquema general de la implementación ........................................................ 64

Figura 45 - Proyectos XTEXT para los lenguajes implementados .................................... 65

Figura 46 - Gramática de EnArDocsFragments ............................................................... 65

Figura 47 – Modificación del script de generación de EnArDocsFragments ..................... 65

Figura 48 - Clases usadas para almacenar el modelo en memoria .................................. 66

Figura 49 - Conjunto de proyectos que conforman la librería EnArAnalyse ...................... 66

Figura 50 - Interfaz para implementar nuevas funciones dentro de EnArAnalyse ............ 67

Figura 51 – Ejemplo de archivo MANIFEST.MF con dependencias ................................. 68

Page 7: Generación de Entregables de Arquitectura Empresarial

Índice de tablas

Tabla 1 - Sintaxis concreta de EnArDocs ......................................................................... 30

Tabla 2 - Funciones básicas de consulta de EnArAnalyse ............................................... 35

Tabla 3 - Funciones básicas para generación de artefactos en EnArAnalyse .................. 38

Tabla 4 - Personalización de los artefactos TOGAF para el caso de estudio MDLA ........ 56

Page 8: Generación de Entregables de Arquitectura Empresarial

8

Capítulo I – Introducción

La arquitectura empresarial promueve el uso de los modelos, gracias a que proveen un

alto nivel de abstracción para estructurar y analizar la complejidad inherente a cada

organización. Por lo tanto, el proceso de modelado es una actividad indispensable dentro

de un proyecto de arquitectura empresarial. Sin embargo, durante el desarrollo de un

proyecto es necesario producir y consumir documentación que materialice el resultado de

los análisis sobre estos modelos. En el marco de arquitectura empresarial este tipo de

documentación recibe el nombre de entregables [23].

Los entregables suelen ser documentos con información de los modelos, cuya estructura

se ve afectada por factores como el alcance y los objetivos del proyecto, los lineamientos

de los frameworks de arquitectura empresarial y especialmente, por el contenido de los

modelos. Sin embargo, la empresa cambia constantemente e introduce nuevos elementos

que deben reflejarse en los modelos y la documentación que la describen. Generalmente,

la actualización de los entregables se realiza con un alto nivel de intervención humana, lo

que sumado a la complejidad de los modelos, probablemente introduce errores y hace

que se presenten problemas de ineficiencia e inconsistencia. Lo ideal sería que el

contenido y la estructura de los entregables se pudieran generar desde los modelos de

arquitectura empresarial.

La estrategia propuesta para ayudar a los usuarios durante este proceso de

documentación, se compone de un lenguaje de dominio específico (DSL) que permite

especificar la estructura y el contenido de los entregables, a través de un conjunto de

funciones para consultar y construir artefactos desde los modelos de arquitectura

empresarial. Por último, se proveen mecanismos de extensibilidad para adaptar las

funciones del lenguaje a las necesidades de cada organización, y obtener diferentes

formatos de salida para el entregable final.

Este documento está estructurado de la siguiente manera: En el capítulo dos se presenta

el planteamiento del problema; en el capítulo tres se presenta el contexto del trabajo, así

como el estado del arte relacionado; en el capítulo cuatro se describe la solución

propuesta y cada uno de sus componentes; en el capítulo cinco se presenta un escenario

de experimentación, con el objetivo de validar la propuesta; en el capítulo seis se describe

la implementación de los componentes de la solución; y por último, en el capítulo siete se

presentan las conclusiones del trabajo.

Page 9: Generación de Entregables de Arquitectura Empresarial

9

Capítulo II – Planteamiento del problema

Una organización posee un alto nivel de complejidad, que se ve reflejada en un modelo de

arquitectura empresarial igualmente complejo y de gran tamaño. Esto hace que la

producción de documentación derivada de estos modelos sea dispendiosa. En el caso

particular de los entregables de arquitectura empresarial, la construcción de artefactos

como las matrices [23] requiere un esfuerzo adicional porque es necesario encontrar las

relaciones entre elementos que muchas veces no están directamente relacionados

(Figura 1).

Figura 1 – Relaciones indirectas entre elementos como base de las matrices

Ahora bien, la organización cambia constantemente a través del tiempo: Se agregan

nuevos procesos de negocio, nuevas aplicaciones que los soporten, se adquieren

servidores para tener un mejor escalamiento, etc. Esta nueva información pasa a ser

parte del modelo de arquitectura empresarial, y por ende debe hacer parte de los

entregables. La actualización de esta información se hace con un alto nivel de

intervención humana, ya sea para revisar y extraer los nuevos datos desde el modelo, así

como para introducir los cambios en los entregables. El mantenimiento de los entregables

para conservar la consistencia con el modelo de arquitectura empresarial, es igual o más

dispendioso que la producción del entregable en primer lugar (Figura 2).

Page 10: Generación de Entregables de Arquitectura Empresarial

10

Figura 2 - Cambios en la organización implican cambios en el modelo y mantenimiento de los

entregables

Para abordar los problemas anteriores, se pretende cumplir con los siguientes objetivos:

1. Definir un lenguaje para la especificación de la estructura y el contenido de los

entregables en función del modelo de arquitectura empresarial

2. Definir una librería de funciones para consultar, analizar y generar los artefactos

arquitectura empresarial desde este modelo

3. Proponer una herramienta que incorpore estas soluciones, para generar los

entregables en base a uno o varios modelos de arquitectura empresarial de

manera semi-automatizada

Page 11: Generación de Entregables de Arquitectura Empresarial

11

Capítulo III – Contexto del trabajo

1. Modelado de arquitectura empresarial

El modelado es primordial para entender a la organización, ya sea durante el desarrollo

de un proyecto de arquitectura empresarial o para realizar un diagnóstico que requiera

tener una visión integral de sus dominios. Gracias a propuestas como [6][11][14] es

posible tener un lenguaje unificado de modelado para obtener un modelo que represente

esta visión integral de la organización. La importancia de este modelo unificado es que es

posible tener un mayor número de conceptos relacionados y sobretodo tener una mayor

capacidad de análisis transversal, para el soporte de la toma de decisiones al interior de la

organización.

Para construir este modelo unificado se inicia recopilando el conocimiento de los

stakeholders, los manuales y documentos informales que existen en la organización (t0).

Luego, un meta-modelador selecciona y ajusta los metamodelos tomados desde marcos

de referencia, que representan los dominios de interés para el proyecto de arquitectura

empresarial (t1). Los metamodelos se componen para obtener un lenguaje unificado de

modelado. Este lenguaje es usado por un modelador para construir el modelo de la

organización, en base al conocimiento recopilado inicialmente (t2). El modelo es luego

analizado por los expertos de dominio de la organización (t3), que construyen

documentación y artefactos para soportar la toma de decisiones (t4). A esta

documentación dentro del contexto de arquitectura empresarial se le denomina

entregables [22]. Las decisiones se materializarán en cambios y adiciones al modelo

durante una nueva iteración. El proceso se puede observar en la Figura 3.

Page 12: Generación de Entregables de Arquitectura Empresarial

12

Figura 3 - Proceso de modelado al inicio de un proyecto de arquitectura empresarial - Fuente [22]

Bajo este enfoque se asume que el metamodelo de arquitectura empresarial se mantiene

constante en el tiempo. Sin embargo, el modelo va a cambiar para ser consistente con la

realidad de la organización. Pero tal y como se puede observar en (t3) los entregables

soportan la toma de decisiones. Por lo tanto, esta documentación se debe actualizar a la

par que el modelo. En la siguiente sección se describe la relación entre los entregables y

artefactos de arquitectura empresarial con este modelo.

2. Entregables y artefactos de arquitectura empresarial

La estructura de un entregable se compone de capítulos y secciones, que a su vez

contienen artefactos tales como matrices, catálogos y diagramas [23]; junto con

descripciones textuales que los complementan. La especificación concreta de un

entregable está sujeta a los alcances y objetivos del proyecto de arquitectura empresarial

en el que se deban producir, a los marcos de referencia que se adopten, y sobre todo a la

estructura y contenido del modelo de arquitectura empresarial (Figura 4).

Page 13: Generación de Entregables de Arquitectura Empresarial

13

Figura 4 - Especificación del entregable de arquitectura empresarial

Un entregable con estas características es el Architecture Definition Document propuesto

por TOGAF para describir la arquitectura empresarial desde cuatro dominios: Negocio,

Aplicaciones, Información y tecnología. Cada uno de estos dominios puede estructurarse

como un capítulo dentro del entregable. Ya al interior de cada capítulo es común crear

secciones para cada conjunto de elementos por dominio. Por ejemplo, en el dominio de

negocio es común tener una sección con cada proceso de negocio, el diagrama que

describe sus actividades, y una descripción de cada una de ellas.

El contenido de los entregables, aparte del texto, lo constituyen artefactos de arquitectura

empresarial. Gran parte del razonamiento sobre el modelo se materializa a través de

estos: Las matrices ayudan a visualizar y razonar de forma simple las relaciones entre los

elementos; los catálogos contienen información relacionada con conjuntos de elementos.

Los diagramas se incluyen como imágenes que agrupan un determinado conjunto de

elementos y sus relaciones. Por ejemplo, en proyectos de arquitectura empresarial que

abarcan los cuatro dominios (Negocio, Aplicaciones, Información y Tecnología) es común

construir matrices para visualizar las relaciones entre los procesos de negocio y las

aplicaciones que los soportan, las entidades de datos que manipula cada aplicación, un

catálogo de las aplicaciones, los servidores que las soportan, un diagrama de entidades

de información y sus relaciones, etc.

Page 14: Generación de Entregables de Arquitectura Empresarial

14

Desde luego, el contenido y la estructura del modelo dependen del contexto donde se

construya y de las necesidades del proyecto que se quiera llevar a cabo. Sin embargo, las

necesidades para producir los entregables se pueden enmarcar dentro de:

Estructuración del entregable en base a los elementos del modelo

La construcción de las matrices requiere poder indagar sobre las relaciones entre

elementos indirectamente conexos

La construcción de los catálogos requiere filtrar elementos de acuerdo a criterios

específicos para cada dominio

Los diagramas pueden provenir de herramientas de modelado, pero esta

visualización puede aportar poco cuando el modelo es muy grande

A continuación se presenta el estado del arte relacionado con trabajos orientados a

generar documentación en base a fuentes de información estructurada (no

necesariamente modelos per se) y algunas herramientas de modelado que brindan

facilidades para estas tareas.

3. Trabajo relacionado

3.1. Lenguajes de plantilla

Los lenguajes de plantilla están diseñados para describir, en su mayoría, la lógica de

despliegue de datos desde un conjunto de fuentes de información. Se utilizan

generalmente para describir la capa de presentación en la Web, sin embargo son lo

suficientemente flexibles para generar documentos en aplicaciones que así lo requieran.

Velocity [24], FreeMarker [25] son lenguajes de plantilla muy utilizados para generar el

código de presentación en aplicaciones Web, pero se pueden usar igualmente para

generar cualquier texto de salida. Por otro lado, van en contra del patrón MVC [13] dado

que tienen efectos de borde, y además proveen instrucciones que los hacen muy

parecidos a un lenguaje de propósito general. La ventaja de este tipo de lenguajes es que

permiten tener instrucciones muy complejas y expresivas. Adicionalmente, son

extensibles, lo que los hace muy flexibles.

Los lenguajes de plantillas pueden ser de utilidad para desplegar y manipular POJOs

(Plain-Old-Java-Objects) y generar cualquier tipo de texto basada en la información que

Page 15: Generación de Entregables de Arquitectura Empresarial

15

estos contienen. Sin embargo, a menos que se usen para generar instrucciones en algún

lenguaje intermedio (HTML, XML) no es sencillo estructurar un documento y su

información de manera concreta.

3.2. Herramientas

Las herramientas de modelado, principalmente para el lenguaje UML, proveen algunas

capacidades para generar documentación en base a los modelos que permiten crear y

editar.

Agilian [26] es una herramienta comercial orientada al desarrollo de software, que provee

un entorno de modelado para UML, BPMN, diagramas Entidad-Relación (ERD) y

diagramas de flujo de datos (DFD). La herramienta contiene un editor para construir la

documentación desde los modelos construidos, haciendo uso de un editor WYSIWYG

(what you see is what you get) donde se arrastran los elementos y los diagramas hasta la

plantilla del documento. Esto hace más fácil la generación de la documentación, pero no

es posible ser más expresivo (por ejemplo para incluir resultados de consultas específicas

sobre los modelos) y los cambios del modelo no se reflejan automáticamente en la

documentación. Enterprise Architect [27] permite generar reportes de manera muy similar,

con la ventaja de que en cada ejecución de su generador es posible tener la información

actualizada desde los modelos. Esto, a cambio de menor expresividad para incluir la

información desde los modelos. BizzDesign Architect [28] es una herramienta de

modelado para el lenguaje Archimate [11], por lo tanto está más orientada al dominio de

arquitectura empresarial y posee funciones de reporte para generar la documentación de

los modelos construidos con ella. Sin embargo, la generación se hace a un alto nivel, lo

que no facilita la expresividad a la hora de especificar el documento final.

Aunque estas herramientas, todas comerciales, proveen facilidades para generar

documentación en base a modelos, están más orientadas al diseño y desarrollo de

software, con excepción de BizzDesign, que aunque ataca el problema, no es tan flexible

para extenderse a otros tipos de metamodelos diferentes a los propuestos por Archimate.

Por último, Gendoc2 [29] es una herramienta open-source que ofrece capacidades muy

similares a las propuestas en este trabajo. Gendoc2 hace parte del entorno de modelado

Top Cased basado en la plataforma eclipse. La herramienta permite construir plantillas de

documentos en formato MS Word 2007 u Open Office. Dentro de estas plantillas se

incluyen las referencias a los modelos y scripts de Acceleo [30] para consultarlos. Los

modelos pueden ser conformes a UML, EMF y Papyrus. Como elemento diferenciador de

Page 16: Generación de Entregables de Arquitectura Empresarial

16

esta herramienta, se proponen funciones concretas para construir artefactos de

arquitectura empresarial basados en los propuestos por TOGAF, de igual manera se

proveen mecanismos de extensión para incluir nuevas funciones (tal como lo hace

Gendoc2 a través de Acceleo) y se plantea un metamodelo que permite tener un modelo

del documento, lo que hace más flexible la generación del documento final en otro tipo de

formatos o estructuras (HTML, DocBook XML, PDF).

3.3. Propuestas de investigación

Las propuestas de investigación descritas a continuación, promueven la generación de la

documentación de un sistema, a partir de los modelos que especifican su diseño.

Sobresalen los sistemas embebidos, al parecer por la completitud de sus modelos

(estructura y comportamiento) a diferencia de los sistemas de propósito general.

MODDO [7] es una propuesta que permite generar documentación derivada de modelos

EMF. Utiliza el lenguaje de plantillas XPAND [31] para construir Information Objects (IO‘s)

desde el modelo. Los IO‘s son fragmentos XML que contienen la información de conjuntos

de elementos del modelo. Luego se usa una suite de edición para estos archivos, donde

se enriquece la información de los IO‘s. Una vez enriquecidos, estos fragmentos de

información se incrustan en una plantilla, de acuerdo al tipo de documento que se quiere

generar. Por último se utilizan transformaciones XML para generar la documentación final

en XHTML (Figura 5).

Figura 5 - Proceso de generación de documentación [7]

Este proceso presenta ventajas como la posibilidad de regenerar los IO‘s a medida que el

modelo cambia con el tiempo, lo que favorece también la reutilización de los fragmentos.

Sin embargo, los IO‘s sólo son el resultado de filtros aplicados al modelo, lo que hace

Page 17: Generación de Entregables de Arquitectura Empresarial

17

necesario que los usuarios utilicen un editor de archivos XML para agregar nueva

información o realicen análisis más complejos.

En [5] se aprovecha el formato XML en el que se almacenan los modelos de los sistemas

de automatización, diseñados con el soporte de una herramienta específica de este

dominio, para generar la documentación técnica. La propuesta plantea una serie de

transformaciones XSLT, que gracias a la completitud del modelado, permite tener una

documentación técnica muy elaborada del sistema final. Sin embargo, gracias a la

completitud de los modelos, la propuesta sólo se enfoca en extraer la información y

transformarla al formato del documento final. Esto, como ya se mencionó, puede ser

ventajoso en sistemas de este tipo, pero requiere de un uso extensivo de XSTL y de XML

para obtener resultados más elaborados.

La propuesta de [19] se enfoca en generar la documentación del software que se modela

con UML y SmartC, durante las etapas de levantamiento de requerimientos, diseño

preliminar y diseño detallado. Los autores definen un modelo para la documentación, que

a su vez se mapea a los modelos del sistema en cada una de las etapas de desarrollo de

software. El modelo de documentación especifica las instrucciones para extraer texto,

tablas y diagramas desde el modelo del sistema. Una vez que se han procesado estas

instrucciones, se combina el resultado con una plantilla que define el estilo del documento

final (Figura 6).

Figura 6 - Esquema del proceso de generación de documentación - Fuente [19]

Page 18: Generación de Entregables de Arquitectura Empresarial

18

La propuesta no es clara en profundidad sobre cada uno de los pasos que se llevan a

cabo. Sin embargo, una vez que se han procesado los modelos involucrados, se obtiene

un documento en formato MS Word, con la especificación del sistema. Al tratarse de un

proceso basado en este tipo de mapeo, es fácil obtener los mismos resultados tras cada

ejecución. Desde luego, no se obtiene tanta expresividad en los resultados ya que no hay

procesamiento de los elementos. Debido a las necesidades de análisis y expresividad

para poder tener artefactos de análisis, la propuesta no es flexible en este sentido.

Una propuesta más flexible es presentada en [9] a través de un perfil UML que se puede

extender y permite el uso de consultas y funciones para manipular los modelos. El modelo

del documento se estructura usando los elementos del perfil: sección y párrafo. Dentro de

cada sección o párrafo se incluyen los scripts para consultar el modelo. Terminado el

modelo del documento, se procede a procesarlo y validarlo. Si es válido, se ejecutan las

consultas sobre el modelo y se genera una representación intermedia en formato

DocBook XML. Desde este formato es posible generar la documentación en MS Word,

PDF y HTML, entre otros. La propuesta es flexible en cuanto a la extensibilidad de las

consultas, y a la portabilidad del perfil UML para ser usado en muchas herramientas de

modelado. Por otro lado, la estructura del modelo no es dinámica, ya que son los usuarios

los que definen directamente cada sección y párrafo. También es poco flexible en cuanto

a los tipos de modelos que puede aceptar, ya que se basa completamente en la

herramienta MagicDraw para acceder a los modelos.

Page 19: Generación de Entregables de Arquitectura Empresarial

19

Capítulo IV – Solución propuesta

En este capítulo se describe la propuesta para generar los entregables y artefactos de

arquitectura empresarial tomando como referencia las especificaciones del framework de

arquitectura empresarial TOGAF. Inicialmente se hace una descripción general de la

estrategia, para luego profundizar en cada uno de sus componentes.

La solución se ha definido en base a los siguientes requerimientos:

El conjunto de instrucciones del lenguaje para estructurar un entregable debe ser

mínimo y simple

Las funciones para consultar el modelo deben ser igualmente simples y mínimas

Si son necesarias nuevas funciones se deben proveer mecanismos de extensión

concretos para agregarlas

El proceso de generación del documento debe ser suficientemente flexible para

producir un documento en cualquier formato, no necesariamente MS Word

No se considera dentro del alcance:

La generación de diagramas desde los modelos. Para hacer frente a esta

necesidad se proveen instrucciones para incluir imágenes, e inicialmente un

conector para importar los diagramas de editores generados con GMF o Eugenia

[40].

1. Descripción general

Tal y como se mencionó anteriormente, un modelo unificado de arquitectura empresarial

provee una visión integrada de la organización. Se asume que este modelo se ha

construido en base a un metamodelo que permanece constante durante todo el proceso.

Inicialmente, el meta-modelador (encargado de construir el metamodelo) escribe las

funciones de consulta y análisis necesarias para extraer la información desde el modelo

(1). Estas funciones se importan en las plantillas que escribe el arquitecto empresarial,

encargado de especificar la estructura y el contenido de los entregables (2). El motor de

plantillas recibe como entrada: la plantilla del entregable, las funciones de análisis, el

modelo y los archivos externos referenciados dentro de la plantilla (archivos de texto e

imágenes) (3). Estos archivos permiten la inclusión de información que no está contenida

Page 20: Generación de Entregables de Arquitectura Empresarial

20

o no se puede generar en base al modelo. Una vez se han procesado las funciones y la

plantilla del entregable, se genera un modelo del documento que contiene toda la

información estructurada en capítulos, secciones, tablas, listados, imágenes y texto (4).

Este modelo ingresa a alguno de los generadores implementados, de cada generador

depende el formato de salida (5) (Figura 7).

Figura 7 – Estrategia de generación del entregable

2. EnArDocs – Lenguaje de plantillas

El lenguaje de plantillas diseñado para esta propuesta, con el objeto de estructurar el

entregable, se denomina EnArDocs (ENterprise ARchitecture DOCumentS). La intención

con EnArDocs no es proveer generación de texto en general, como lo hacen los lenguajes

de plantilla revisados en la sección de trabajo relacionado. En lugar de esto, está

orientado a proveer instrucciones para simplificar la estructuración de un entregable sin

Page 21: Generación de Entregables de Arquitectura Empresarial

21

necesidad de utilizar una notación adicional (XML), y además permitir que el contenido del

modelo se pueda integrar a la estructura del entregable a través de funciones de consulta.

EnArDocs cuenta con las siguientes características:

Definición de estructura del entregable a través de capítulos y secciones

Definición de elementos contenedores de información: tablas, listas, texto

Directivas para inclusión de archivos externos: texto e imágenes

Directivas para inclusión de fragmentos de plantilla (EnArDocs y Velocity) para

facilitar la reutilización

Directivas para control de flujo

Funciones de consulta y análisis sobre los modelos

Directivas para construir artefactos concretos de arquitectura empresarial: matrices,

catálogos y diagramas. Estos últimos a través de conectores con herramientas de

modelado

La sintaxis abstracta del lenguaje se puede observar en la Figura 8. Inicialmente, una

plantilla debe importar el conjunto de modelos que se van a utilizar como fuente de

información. Luego, se deben importar las funciones que sean necesarias para consultar y

analizar estos modelos. Los contenedores estructurales de información se pueden

clasificar en primarios y secundarios. Los contenedores primarios le dan la estructura al

documento en términos de capítulos y secciones. Los contenedores secundarios se

clasifican en tablas y listas. Estos dos tipos de contenedor conformarán la estructura del

entregable. Para el procesamiento de los elementos del modelo, se proponen dos

directivas concretas para el control del flujo: condicionales y ciclos. Luego, para agregar

contenido se proveen directivas para insertar texto, imágenes, fragmentos de plantillas de

EnArDocs, y procesamiento e inserción de plantillas Velocity. Por último, y para facilitar la

inserción de artefactos de arquitectura empresarial, se incluyen 3 directivas: matrix,

catalog y diagram. La sintaxis concreta del lenguaje se puede observar en la Tabla 1.

Page 22: Generación de Entregables de Arquitectura Empresarial

22

Figura 8 - Sintaxis abstracta de EnArDocs

Page 23: Generación de Entregables de Arquitectura Empresarial

23

Instrucción Descripción Ejemplo

importModel

‗modelLocationURI’

as $mAlias conformTo

‗mmLocationURI’

Importa el modelo localizado en (*.ecore)

modelLocationURI, que es conforme al

metamodelo localizado en mmLocationURI.

El modelo se puede referenciar luego a

través del alias $mAlias como una variable

más.

importModel ‗c:/mm.ea‘ conformTo

‗c:/eamm.ecore‘ as $model

importFunctionLibrary

‗locationURI‘

as $fAlias

Importa la librería de funciones (*.jar) para

ser referenciada con el alias $fAlias. Las

funciones contenidas dentro de la librería

se invocan usando este alias seguido de un

punto, seguido del nombre de la función y

sus parámetros entre paréntesis, separados

por coma: $fAlias.functionName(params)

importFunctionLibrary ‗c:/functions.jar‘ as

$functions

template {params}

Esta instrucción permite establecer los

siguientes parámetros:

name: Nombre de archivo del

documento generado

output_dir: Directorio de salida el

documento generado

template {

name: ―Architecture Definition Document‖,

output_dir: ―c:/documentation‖

}

chapter {params}

Agrega un capítulo a la estructura del

documento. Los capítulos pueden anidar

otros contenedores, más no otros capítulos.

chapter {

id: ―chapt_1‖,

title: ―Business Architecture‖

Page 24: Generación de Entregables de Arquitectura Empresarial

24

Parámetros:

id: Identificador único del capítulo

title: Título del capítulo

}

section {params}

Agrega una sección a la estructura del

documento. Las secciones pueden anidar

otros contenedores, incluyendo otras

secciones, más no capítulos. Parámetros:

id: Identificador único de la sección

title: Título de la sección

parent: (opcional) Identificador del

capítulo o la sección que contiene

esta sección

section {

id: ―sect_BP‖,

title: ―Business Processes‖,

parent: ―chapt_1‖

}

table {params}

tr

th header /th

/tr

tr

td data /td

/tr

/table

Agrega una tabla a la estructura del

documento. Los encabezados de la tabla

pueden contener cadenas de caracteres o

expresiones que den como resultado una

cadena. El contenido de las celdas puede

ser otros elementos, incluso otras tablas.

Sin embargo el documento de salida puede

no soportar este tipo de jerarquía.

Parámetros:

id: Identificador único de la tabla

table {

id: ―tbl_apps‖,

title: ―Application Inventory‖

}

tr

th

text { contents: ―Name‖ }

/th

th

text { contents: ―Description‖ }

Page 25: Generación de Entregables de Arquitectura Empresarial

25

title: Título de la tabla

parent: (opcional) Identificador del

capítulo o la sección que debe

contener al elemento

/th

/tr

tr

td

text { contents: ―CRM‖ }

/td

td

text { contents: ―Customer Relationship

Management Application‖ }

/td

/tr

/table

list {params}

item data /item

/list

Agrega una lista a la estructura del

documento. El contenido de los ítems de la

lista pueden ser otros elementos,

incluyendo otras listas. Sin embargo el

documento de salida puede no soportar

este tipo de jerarquía. Parámetros:

id: Identificador único de la lista

title: Título de la lista

parent: (opcional) Identificador del

capítulo o la sección que debe

list {

id: ―list_apps‖,

title: ―Applications supporting process‖,

type: ―unordered‖

}

Page 26: Generación de Entregables de Arquitectura Empresarial

26

contener al elemento.

type: (opcional) Tipo de lista:

ordered ó unordered (por defecto)

text {params}

Agrega un párrafo de texto al documento.

Parámetros:

id: Identificador único del párrafo

contents: Texto del párrafo

parent: (opcional) Identificador del

capítulo o sección que debe

contener al elemento

isExternal: Permite indicar (true ó

false) que el texto proviene de un

archivo externo, que se debe

resolver cuando se vaya a procesar

la plantilla

uri: Ruta absoluta del archivo

externo de texto (*.txt).

description: Agrega una

descripción para facilitar la

resolución en el momento de

resolver el archivo

text {

contents: ―Description‖

}

text {

isExternal: true,

uri: ―c:/appends/server_descr.txt‖,

description: ―File with application interfaces

description ‖

}

t{contents} Agrega un parráfo de texto al documento. t{―Description of the business process‖}

Page 27: Generación de Entregables de Arquitectura Empresarial

27

Es una forma abreviada de la instrucción

text{}. Facilita la inserción de texto cuando

no es necesario especificar más que el

contenido.

image {params}

Agrega una imagen al documento.

Parámetros:

id: Identificador único de la imagen

title: Título de la imagen

uri: Ruta absoluta del archivo

parent: (opcional) Identificador del

capítulo o la sección que debe

contener al elemento.

width: Ancho de la imagen

height: Altura de la imagen

image {

id: ―img_bp_bpmn‖,

uri: ―c:/business_process_bpmn.png‖,

title: ―Business Process Diagram‖

}

include „locationURI‘

(params)

Procesa un fragmento de plantilla e incluye

el resultado del procesamiento en el

documento. Los parámetros que recibe

corresponden a variables referenciadas

dentro del fragmento de plantilla a incluir.

La extensión de las plantillas de EnArDocs

es ―.eadf‖.

include ―c:/templates/information_arch.eadf‖

( model: $model )

processExternal ‗locationURI‘ Procesa una plantilla Velocity (*.vm) e processExternal

Page 28: Generación de Entregables de Arquitectura Empresarial

28

(params) incluye el resultado del procesamiento en el

documento. Los parámetros que recibe

corresponden a variables referenciadas

dentro de la plantilla a incluir.

―c:/templates/vt/numbered_table.vm‖

( processes: $businessProcess )

matrix {params}

Agrega una tabla que contiene la estructura

de un matriz típica de arquitectura

empresarial. Parámetros:

id: Identificador único de la matriz

title: Título de la matriz

parent: (opcional) Identificador del

capítulo o la sección que debe

contener al elemento

function: Función utilizada para

construir la matriz.

matrix {

id: ―mtx_1‖,

title: ―business process vs applications‖,

function:

$functions.simpleMatrix ( ―BusinessProcess‖,

“Application”, $functions.areRelated(), ―X‖ )

}

catalog {params}

Agrega un catálogo de elementos que

pueden representarse como una tabla o

una lista, dependiendo del número de

propiedades que se quieran mostrar,

asociadas al elemento. Parámetros:

id: Identificador único del catálogo

title: Título del catálogo

parent: (opcional) Identificador del

catalog {

id: ―cat_data_entities‖,

title: ―Data entities catalog‖,

function: $functions.dataEntitiesCatalog()

}

Page 29: Generación de Entregables de Arquitectura Empresarial

29

capítulo o la sección que debe

contener al elemento

function: Función utilizada para

construir el catálogo

diagram {params}

Agrega un diagrama del modelo

(actualmente en un editor generado sobre

GMF) como una imagen al documento.

Parámetros:

id: Identificador único del diagrama

title: Título del diagrama

parent: Identificador del capítulo o

la sección que debe contener al

elemento

uri: Ruta absoluta del archivo que

contiene el diagrama

diagram {

id: ―diag_goals‖,

title: ―Goals supported‖,

uri: ―c:/diagrams/goals_model.ecorediag‖

}

If (ifCondition) :

Expression

elseIf (elseCondition):

Expression

else:

Expression

/if

Instrucción condicional para controlar el

flujo de ejecución. La condición debe

corresponder a una expresión que dé como

resultado un booleano (true ó false).

if ( $process.name == ―Register‖ ) :

//instructions

elseIf ( $process.name == ―Pay‖ ) :

//instructions

else:

//instructions

/if

Page 30: Generación de Entregables de Arquitectura Empresarial

30

forEach iterable as $iterator :

Expression

/forEach

Ejecuta el conjunto de instrucciones

contenidas dentro de Expression por cada

elemento contenido dentro de Iterable

(Objeto que implemente la interfaz Iterable

de Java) y accede a cada elemento con la

variable $iterator.

forEach $functions.filterByElementType( $model,

―BusinessProcess‖ ) as $process:

text { contents: $process.name }

/forEach

Tabla 1 - Sintaxis concreta de EnArDocs

Page 31: Generación de Entregables de Arquitectura Empresarial

31

El lenguaje está diseñado para combinar el resultado de las consultas con la estructura

del entregable. Por ejemplo, el listado de entidades de datos filtradas desde el modelo se

puede recorrer una a una, crear una sección para cada entidad y dentro de ella agregar

una descripción de sus propiedades (Figura 9).

Figura 9 - Ejemplo de creación de secciones en función de los elementos del modelo

La gramática completa de EnArDocs implementada se puede ver en el Apéndice A del

documento. En la siguiente sección se presentarán las funciones de análisis que

complementan el alcance del lenguaje y permiten generar los artefactos de arquitectura

empresarial.

3. EnArAnalyse – Consultas y generación de artefactos

Tal como se mencionó anteriormente, el uso de una librería personalizada parte de la

necesidad de recorrer el grafo del modelo de una manera flexible. La librería se ha

denominado EnArAnalyse, y está orientada principalmente a brindar funciones que

faciliten la construcción de los artefactos de arquitectura empresarial, desde elementos

filtrados del modelo.

Para que las funciones se puedan ejecutar sobre el modelo, es necesario que éste se

transforme a una representación de grafo. Este grafo representa los conceptos del modelo

como Element, y a sus relaciones como Relation (Figura 10). A su vez, cada uno de ellos

contiene los atributos del concepto del modelo que le corresponden.

Page 32: Generación de Entregables de Arquitectura Empresarial

32

Figura 10 - Representación utilizada por EnArAnalyse para el modelo, sus elementos y relaciones

Una vez que se tiene esta representación del modelo, es posible usar algoritmos clásicos

de grafos para recorrerlo y encontrar caminos entre elementos que están indirectamente

relacionados. Por ejemplo, los procesos de negocio soportados por los diferentes nodos

de infraestructura, las aplicaciones que soportan la labor de un actor de negocio a través

de los procesos de negocio asignados a su rol de negocio, etc.

La sintaxis de las funciones cuando se invocan desde EnArDocs se puede observar en la

Figura 11. Cada llamada debe incluir el alias de la librería, además debe incluir un

elemento base para ejecutar la función y un conjunto de parámetros. El elemento base

suele corresponder a una referencia del modelo o un elemento de éste. Los parámetros

pueden corresponder a booleanos, cadenas de caracteres, números enteros y flotantes,

referencias a variables iterador dentro de un ciclo, o incluso el resultado de otras

funciones.

Figura 11 - Sintaxis de la llamada a las funciones de EnArAnalyse dentro de EnArDocs

Existen 2 maneras de ejecutar funciones anidadas. La primera es la más convencional

donde cada función se ejecuta y el resultado sirve como parámetro de la siguiente

función. La segunda manera es encadenar las funciones, de modo que el resultado de la

función se pasa a la siguiente como parámetro base. En la Figura 12 se puede observar la

manera de ejecutar la misma serie de funciones. En este caso debido a que todas las

Page 33: Generación de Entregables de Arquitectura Empresarial

33

funciones pertenecen a la misma librería, se puede obviar el nombre de la librería en la

forma encadenada. De lo contrario se antepone el nombre de la librería al nombre de la

función.

Figura 12 - Sintaxis alternativa para llamada de funciones anidadas

Las funciones de consulta a la fecha sirven para filtrar elementos en base a su tipo, su

nombre, y los valores de sus atributos. Sin embargo, gracias a los mecanismos de

extensión se pueden agregar nuevas funciones para consultar usando patrones de

búsqueda (por ejemplo, patrones en los caminos entre dos elementos, como se hace

ilustra en los ejemplos más adelante) expresiones regulares (por ejemplo, expresiones

regulares sobre los nombres de los atributos de los elementos) entre otras. Las funciones

de consulta básicas se pueden observar en la Tabla 2.

Page 34: Generación de Entregables de Arquitectura Empresarial

34

Función Descripción Ejemplo

filterByElementType ($model,

―ElementType1‖, “ElementType2”, …)

Retorna el conjunto de elementos que

corresponden a los tipos especificados,

desde el modelo $model.

//retorna los procesos de negocio

filterByElementType ($model,

―BusinessProcess‖)

filterByElementName ($model,

―ElementName1‖, ―ElementName2‖, …)

Retorna el conjunto de elementos que

corresponden a los nombres especificados,

desde el modelo $model. Requiere que los

elementos tengan un atributo ―name‖

definido.

//retorna los roles de aseguradora y

asegurado

filterByElementName ($model,

―Insurer‖, ―Insured‖)

FilterByElementAttributes ($model,

attOperator1(“att1Name”, att1Val),

attOperator2(“att2Name”, att2Val), …)

Retorna el conjunto de elementos desde el

modelo $model, cuyos atributos

corresponden a los especificados por cada

operador. Los operadores son los siguientes:

attEq(“attName”, attVal): operador

de igualdad entre el valor del atributo

con nombre attName y el valor attVal.

attGEt(“attName”, attVal): operador

―igual o mayor que‖, entre el valor del

atributo con nombre attName y el

valor attVal.

attGt(“attName”, attVal): operador

―mayor que‖, entre el valor del

atributo con nombre attName y el

//retorna los procesos de negocio cuyo

tiempo de respuesta sea menor a 50

milisegundos

FilterByElementAttributes ($model,

$f.attEq(―type_‖, ―BusinessProcess‖),

$f.attLt(―responseTime‖, 50))

Page 35: Generación de Entregables de Arquitectura Empresarial

35

valor attVal.

attLEt(“attName”, attVal): operador

―menor o igual que‖, entre el valor del

atributo con nombre attName y el

valor attVal.

attLt(“attName”, attVal): operador

―menor que‖, entre el valor del

atributo con nombre attName y el

valor attVal.

filterRelatedElements (Element,

―relationName‖)

Retorna el conjunto de elementos

relacionados, desde el element Element, a

través de la relación con nombre

relationName.

//retorna los roles de negocio asociados

al actor

filterRelatedElements ($businessActor,

―assignedBusinessRoles‖)

Tabla 2 - Funciones básicas de consulta de EnArAnalyse

Page 36: Generación de Entregables de Arquitectura Empresarial

36

Las funciones para construir artefactos usan la información de los elementos del modelo y

de sus relaciones. En el caso de las matrices, lo que se busca es visualizar las relaciones

entre 2 conjuntos de elementos, generalmente cada conjunto corresponde a un tipo

determinado (Procesos de negocio, aplicaciones, entidades de datos, nodos de

infraestructura, etc.). Para determinar si existe una relación entre dos elementos de cada

conjunto se puede aplicar una función que verifique si el camino que existe entre ellos es

válido. Por ejemplo, si un proceso de negocio X en realidad si es soportado por un nodo

de infraestructura Y. En el caso de los catálogos, generalmente se requiere filtrar un

conjunto de elementos, junto con algunas de sus propiedades o elementos relacionados.

Por ejemplo el inventario de aplicaciones de la organización puede contener las

propiedades: nombre, versión, interfaces expuestas, etc. El conjunto de instrucciones

básicas para generar artefactos se puede observar en la Tabla 3.

Page 37: Generación de Entregables de Arquitectura Empresarial

37

Función Descripción Ejemplo

simpleMatrix ( $model,

“ElementType1”, “ElementType2”,

“cellContent”, [showEmptyRowsCols] )

: MatrixArtifact

Retorna una matriz cuyas filas

corresponden a elementos de tipo

ElementType1, y sus columnas

corresponden a elementos del tipo

ElementType2. La función evalúa los

caminos entre cada par de elementos

de cada tipo, y si encuentra un camino

donde no se repitan los tipos

especificados, entonces establece el

valor de esa celda a cellValue. El

parámetro opcional boolean

showEmptyRowsCols establece si se

muestran filas y columnas vacías

(falso, por defecto).

//retorna la matríz de aplicaciones vs procesos de

negocio

simpleMatrix ($model, ―BusinessProcess‖,

―ApplicationComponent‖, ―X‖)

customMatrix ( $model,

fFilterElements1(), fFilterElements2(),

fAreRelated(),fValue() | ―Value‖,

[showEmptyRowsCols] )

Esta función ayuda a crear matrices

más personalizadas. Primero que todo

permite filtrar los elementos que se

quiere cruzar, usando las funciones

fFilterElement1 y fFilterElement2.

Los dos conjuntos de elementos se

//retorna una matriz entre aplicaciones y nodos de

infraestructura

customMatrix ($model, $f.filterByElementType (

―ApplicationComponent‖ ),

$f.filterByElementType(―Node‖),

$fx.areAppNodeRelated(),

Page 38: Generación de Entregables de Arquitectura Empresarial

38

filtrarán, para luego ser evaluados por

la función fAreRelated, que debe

retornar un valor verdadero o falso

para cada par de elementos,

dependiendo de si están relacionados

o no. La función fValue recibe como

parámetros los dos elementos, y

extrae el valor que se debe mostrar en

la intersección, si están relacionados.

En este último caso es posible pasar

una cadena de caracteres. El

parámetro opcional boolean

showEmptyRowsCols aplica igual que

en la función anterior.

$fx.extractAppNodeValue() )

simpleCatalog (

$model,”ElementType”, “attrName1”,

“attrName2”, …)

Retorna una tabla con las propiedades

del conjunto de elementos que

corresponden al tipo especificado.

//retorna el inventario de nodos de infraestructura

simpleCatalog ($model, ―Node‖, ―name‖,

―operativeSystem‖, ―speed‖, ―cores‖ )

customCatalog ( $model,

fFilterElements(), fExtractAttributes() )

Retorna una tabla con las propiedades

extraídas usando la función

fExtractAttributes, desde los

elementos filtrados por la función

fFilterElements.

customCatalog ( $model,

$f.filterByElementType(―DataObject‖),

$fx.extractDataObjectProperties() )

Tabla 3 - Funciones básicas para generación de artefactos en EnArAnalyse

Page 39: Generación de Entregables de Arquitectura Empresarial

39

Para ilustrar algunas de las funciones se utiliza un modelo derivado del metamodelo de

Archimate [11] (Figura 13). Este modelo contiene elementos representativos para cada

dominio de arquitectura: Negocio, aplicaciones e infraestructura, para una compañía

aseguradora con el nombre de Archisurance. La empresa cuenta con varios procesos,

pero el que aquí se presenta está relacionado con el reclamo de un seguro por parte de

un cliente. A continuación se presentan 3 artefactos básicos para este modelo. Se puede

observar el soporte de las aplicaciones (ApplicationComponent) hacia los procesos de

negocio (BusinessProcess) usando una matriz simple. También, los roles (BusinessRole)

que tiene asignado cada actor del negocio (BusinessActor). Por último se muestra un

catálogo básico con las aplicaciones existentes en el modelo. Esta corta personalización,

como se puede observar, permite generar los artefactos básicos de manera sencilla.

Page 40: Generación de Entregables de Arquitectura Empresarial

40

Figura 13 – Modelo de Archisurance - Fuente [11]

Page 41: Generación de Entregables de Arquitectura Empresarial

41

Procesos de negocio soportados por cada aplicación (aplicaciones que proveen un

servicio que es usado por un proceso de negocio)

Figura 14 - Procesos de negocio vs aplicaciones para Archisurance

Actores de negocio con los roles que tienen asignados

Figura 15 - Actores de negocio vs roles de negocio para Archisurance

Catálogo de aplicaciones

Figura 16 - Catálogo de aplicaciones para Archisurance

Page 42: Generación de Entregables de Arquitectura Empresarial

42

4. Generador de documentos

Una vez que se procesa una plantilla, junto con sus funciones y archivos externos, el

motor de plantillas produce un modelo del documento que es conforme al metamodelo de

la Figura 17. Este modelo contiene toda la información extraída desde los modelos que se

usaron como fuente de información. Permite asignar un conjunto de atributos (cadenas,

números enteros, números reales y booleanos) tanto al documento, como a los

contenedores de alto nivel: capítulo y sección. Estos contenedores anidan a los elementos

de contenido: tablas, listas, imágenes y texto. Las tablas están compuestas por filas, y

estas a su vez por celdas. Las celdas pueden contener a otros elementos de contenido.

Las listas están compuestas por ítems contenedores, al igual que las celdas de las tablas.

Las imágenes poseen un título y la ubicación del archivo. Los contenedores de texto

poseen un atributo para identificar si el texto se encuentra en un archivo externo, la

ubicación del archivo y su descripción. Cada elemento (contenedor o de contenido) puede

tener un identificador único, lo que podría permitir que los generadores puedan

implementar referencias cruzadas en el formato de salida.

El modelo del documento se puede procesar de manera independiente por parte del

generador que se quiera implementar. No es necesario procesar ni la plantilla, ni las

librerías de función utilizadas, ni los modelos que se hayan importado. Esto agrega

flexibilidad al tipo de salida que se puede generar.

El generador de documentos debe encargarse de asignar los estilos que considere

necesarios para cada uno de los elementos del modelo del documento. Como trabajo

futuro se planea implementar un modelo de estilos, que se pueda integrar al modelo del

documento en esta etapa y permita personalizar la estética del documento final.

Page 43: Generación de Entregables de Arquitectura Empresarial

43

Figura 17 - Metamodelo del documento producido por el motor de plantillas de EnArDocs

Page 44: Generación de Entregables de Arquitectura Empresarial

44

5. Catálogo de artefactos

Los artefactos caracterizados y adaptados desde el framework de arquitectura

empresarial TOGAF (tomando los elementos concretos de Archimate) son los siguientes:

Matrices

o System / Function (Application Components / Business Process)

o Data Entity / Data Component (Data Objects / Application Components)

o Actor / Role (Business Actors / Business Roles)

o System / Technology (Application Components / Software Systems)

o System / Technology (Application Components / Nodes)

Catálogos

o Role (Business Actors)

o Data Entity (Data Objects)

o Data Entity (Artifacts)

o Application portfolio (Application Components)

o Application portfolio (Software Systems)

o Technology portfolio (Infrastructure services)

o Technology portfolio (Infrastructure nodes)

En el capítulo de experimentación se utiliza una adaptación de estos artefactos y se crean

unos nuevos. Estos nuevos artefactos siguen basándose en matrices y catálogos, pero

están diseñados para el dominio del caso.

Page 45: Generación de Entregables de Arquitectura Empresarial

45

Capítulo V – Experimentación

1. Descripción del escenario MDLA

Como caso de estudio se utiliza el modelo de arquitectura empresarial de la empresa

Muebles de los Alpes S.A. (MDLA). Esta empresa es uno de los escenarios en el

laboratorio de arquitectura empresarial de la Universidad de los Andes [32]. MDLA se

dedica a la producción y comercialización de muebles para oficina y hogar. Cuenta con

gran reputación entre sus clientes, gracias a la calidad que tienen sus productos y a su

capacidad de innovación. Actualmente posee 3 puntos de fábrica y 10 salas de venta a lo

largo del país, pero los productos también se pueden adquirir a través de su portal web.

2. Metamodelo y modelo unificado de MDLA

El metamodelo de MDLA se compone de 14 dominios. A continuación se describe cada

uno de los dominios por separado.

2.1. Aplicaciones

Figura 18 - Metamodelo de aplicaciones

Contiene los conceptos para representar una aplicación, los servicios que provee, sus

instancias, las interfaces expuestas y las relaciones de consumo o integración entre estas

instancias.

Page 46: Generación de Entregables de Arquitectura Empresarial

46

2.2. Modelo de motivación del negocio (BMM)

Figura 19 - Metamodelo del Business Motivation Model (BMM)

Este dominio incluye los conceptos del Business Motivation Model [15]. Principalmente,

sirve para representar la motivación de la organización a través de su visión, metas,

estrategias, entre muchas otras.

2.3. Arquitectura de procesos de negocio (BPA)

Figura 20 - Metamodelo de la arquitectura de procesos del negocio

Page 47: Generación de Entregables de Arquitectura Empresarial

47

Permite modelar la jerarquía de procesos de la organización: la cadena de valor, sus

macro procesos, subprocesos y actividades. Estas últimas realizadas por un actor.

2.4. Aliados de negocio

Figura 21 - Metamodelo de aliados de negocio

Contiene los conceptos para modelar los aliados del negocio como: proveedores,

distribuidores, clientes. Igualmente, permite modelar los servicios que estos brindan, así

como el tipo de orden con la que cada uno de ellos interactúa: compra, entrega, venta.

2.5. Conceptos comunes

Figura 22 - Conceptos comunes para representar localización geográfica y de red

Page 48: Generación de Entregables de Arquitectura Empresarial

48

Estos conceptos se relacionan con el dominio Servicios, a través de las instancias de los

servicios. Sirve para describir la ubicación geográfica y de red, para cada una de las

instancias de un servicio.

2.6. Estructura financiera

Figura 23 - Metamodelo de la estructura financiera

Permite modelar de manera básica los pagos, asociados a una cuenta y entidad bancaria.

A su vez, cada pago puede ser realizado o recibido, y tiene una clasificación, una

condición, e impuestos asociados.

2.7. Recursos humanos

Figura 24 - Metamodelo de recursos humanos

Permite modelar a los empleados, su desempeño, salario, capacidades, competencias,

conocimiento y el equipo de personas al cual pertenece.

Page 49: Generación de Entregables de Arquitectura Empresarial

49

2.8. Información

Figura 25 - Metamodelo de información

Permite modelar las entidades de información, sus atributos, y las posibles

transformaciones necesarias para obtener una entidad canónica dentro del dominio de la

organización.

2.9. Infraestructura

Figura 26 - Metamodelo de infraestructura

Contiene los conceptos para representar los nodos, dispositivos, servicios ofrecidos por

estos elementos, y las redes de comunicación que los conectan.

Page 50: Generación de Entregables de Arquitectura Empresarial

50

2.10. Recursos de la organización

Figura 27 - Metamodelo de recursos de la organización

Contiene los conceptos para representar los activos fijos: bodega, planta de manufactura,

locaciones administrativas, tiendas y equipos. Cada producto puede hacer uso de alguno

de estos recursos.

Page 51: Generación de Entregables de Arquitectura Empresarial

51

2.11. Estructura organizacional

Figura 28 - Metamodelo de la estructura organizacional

Este dominio permite modelar la jerarquía organizacional, donde cada elemento en la

jerarquía supervisa y responde ante otro elemento organizacional, y es representado por

varios roles.

2.12. Productos

Figura 29 - Metamodelo de productos

Contiene los conceptos para modelar los muebles y su lista de materiales. Los materiales,

a su vez son una especialización de los productos, clasificados en varias categorías.

Page 52: Generación de Entregables de Arquitectura Empresarial

52

2.13. Servicios

Figura 30 - Metamodelo de servicios

Contiene los conceptos para modelar los servicios, sus instancias, interfaces y métodos.

Además, a cada servicio concreto se le pueden asociar requisitos de calidad como

disponibilidad y tiempo de respuesta.

2.14. Tecnología

Figura 31 - Conceptos para representar componentes y estándares de tecnología

Estos conceptos permiten representar componentes de tecnología como servidores de

aplicación, motores de bases de datos, middleware, entre otros. Además, estándares de

tecnología como protocolos de comunicación, seguridad, etc.

El modelo de MDLA contiene más de 1000 elementos y alrededor de 1500 relaciones.

Este modelo refleja en una buena escala la dificultad para extraer, de manera manual,

Page 53: Generación de Entregables de Arquitectura Empresarial

53

conjuntos de elementos, así como sus relaciones. Una visualización del modelo utilizado

VizGraph [33] se puede observar en la Figura 32.

Figura 32 - Visualización del modelo de MDLA

En la próxima sección se describe la personalización de los artefactos base de TOGAF

para el modelo de MDLA. Luego, se presentan los artefactos que se construyeron, su

caracterización, y por último se hace una evaluación de los resultados obtenidos.

3. Personalización de artefactos

Con el fin de generar el catálogo de artefactos propuesto por TOGAF, es necesario

personalizar la invocación de los métodos. Luego, es necesario mapear cada los

conceptos al dominio de MDLA. Este mapeo se puede observar en la Tabla 4.

Matrices

TOGAF MDLA Descripción

System / Function Application vs

MDLAProcess

El concepto más ajustado

para los procesos de

negocio es el

"MDLAProcess", mientras

que para las aplicaciones se

usa el concepto

"Application". Y lo que se

quiere observar es

precisamente las

aplicaciones que soportan

Page 54: Generación de Entregables de Arquitectura Empresarial

54

estos procesos. Se usa el

valor "supportedBY" para la

intersección entre estos dos

elementos.

Data Entity / Data

Component

Data Objects vs

Applications

Para las entidades de datos

se utiliza el concepto

"DataObject", sin embargo

la manipulación de objetos

de datos se hace por parte

de las actividades, por lo

tanto es necesario

identificar los servicios

(ApplicationService) que

provee cada aplicación y

establecer la relación. Se

usa el valor

"manipulatedBy" para la

intersección entre estos dos

elementos.

Actor / Role Organizational Unit vs Role

En este caso, debido a que

no existe la relación entre

los actores del negocio que

permita conocer sus roles,

se optó por mostrar la

relación de representación

que existe entre las

unidades organizacionales

"OrganizationalUnit" y los

roles de negocio "Role". Se

usa el valor "represents"

para la intersección entre

estos dos elementos.

System / Technology

(Application domain)

Applications vs System

Softwares

Aquí los conceptos

relacionados que se quieren

Page 55: Generación de Entregables de Arquitectura Empresarial

55

visualizar corresponden a

aplicaciones, cuyas

instancias

(ApplicationInstance) están

desplegadas en algún

sistema (SystemSoftware)

dentro del dominio de

infraestructura. Se usa el

valor "hostedBy" para

establecer la intersección

entre estos dos elementos.

System / Technology

(Infrastructure domain) Applications vs Devices

Los conceptos para esta

matriz pretenden ilustrar los

dispositivos "Device" donde

se alojan las instancias de

las aplicaciones. Se usa el

valor "supports" para

establecer la intersección

entre estos elementos.

Catálogos

TOGAF MDLA Descripción

Role Roles

Se consultan los conceptos

"Role" junto con su nombre

y descripción.

Data Entity (Application

domain) Data Objects

Se consultan los conceptos

"Data Object" junto con su

nombre y descripción.

Data Entity (Infrastructure

domain) N/A

Este artefacto no se puede

generar debido a que no

hay un concepto similar a

un "Artifact" (por ejemplo

una tabla dentro de una

base de datos) que realice a

los "Data Object" dentro del

Page 56: Generación de Entregables de Arquitectura Empresarial

56

modelo de MDLA.

Application portfolio

(Application domain) Applications

Se consultan los conceptos

"Application" junto con su

nombre y descripción.

Application portfolio

(Infrastructure domain) Software Systems

Se consultan los conceptos

"SystemSoftware" junto con

su nombre y descripción.

Technology portfolio

(Services) Infrastructure Services

Se consultan los conceptos

"Infrastructure" junto con su

nombre y descripción.

Technology portfolio

(Nodes) Infrastructure nodes/devices

Se consultan los conceptos

"Node" y "Device" junto con

su nombre y descripción.

Tabla 4 - Personalización de los artefactos TOGAF para el caso de estudio MDLA

La experimentación para el caso de estudio no se limitó a estos artefactos, como se podrá

observar en el listado de la siguiente sección. Aunque la validación de la propuesta

consiste principalmente en observar los resultados obtenidos con relación a los artefactos

TOGAF.

Tal y como se mencionó anteriormente, la generación de diagramas no se incluyó dentro

del alcance. Sin embargo, actualmente es posible extraer los diagramas desde

herramientas generadas con GMF o Eugenia. Como trabajo futuro se planea extender

esta importación a otras herramientas de modelado.

Page 57: Generación de Entregables de Arquitectura Empresarial

57

4. Listado de artefactos generados

Artefactos TOGAF

4.1. Matriz – Application vs MDLAProcess

Figura 33 – MDLA - Application vs MDLAProcess

4.2. Matriz – Data Objects vs Applications

Figura 34 - MDLA - Data Objects vs Applications

Page 58: Generación de Entregables de Arquitectura Empresarial

58

4.3. Matriz – Organizational Unit vs Role

Figura 35 - MDLA – Organizational Unit vs Role

4.4. Matriz – Applications vs System Softwares

Figura 36 - MDLA - Applications vs System Software

Page 59: Generación de Entregables de Arquitectura Empresarial

59

4.5. Matriz – Applications vs Devices

Figura 37 - MDLA – Applications vs Devices

4.6. Catálogo – Roles

Figura 38 - MDLA – Roles

Page 60: Generación de Entregables de Arquitectura Empresarial

60

4.7. Catálogo – Data Objects

Figura 39 - MDLA - Data Objects

4.8. Catálogo – Applications

Figura 40 - MDLA – Applications

Page 61: Generación de Entregables de Arquitectura Empresarial

61

4.9. Catálogo – Software Systems

Figura 41 - MDLA - Software Systems

4.10. Catálogo – Infrastructure Services

Figura 42 - MDLA - Infrastructure Services

Page 62: Generación de Entregables de Arquitectura Empresarial

62

4.11. Catálogo – Infrastructure nodes/devices

Figura 43 - MDLA - Infrastructure nodes

Artefactos propios del dominio de MDLA

4.12. Matriz – Aplicaciones vs Roles

4.13. Matriz – Aplicaciones vs Instancias de aplicación

4.14. Matriz – Aplicaciones vs Servicios de aplicación

4.15. Matriz – Estrategias vs Metas del negocio

4.16. Matriz – Estrategias vs Visión del negocio

4.17. Matriz – Cadena de proceso vs Procesos de negocio

4.18. Matriz – Servicios vs Instancias de servicio

4.19. Catálogo – Componentes de tecnología

4.20. Catálogo – Estándares de tecnología

4.21. Catálogo – Servicios de aplicación

4.22. Catálogo – Interfaces de aplicación

4.23. Catálogo – Productos y materiales

4.24. Catálogo – Servicios

4.25. Catálogo – Servicios concretos

4.26. Catálogo – Instancias de servicios

Page 63: Generación de Entregables de Arquitectura Empresarial

63

5. Evaluación de resultados obtenidos

Para realizar la evaluación de los resultados se tomó como base el entregable de

arquitectura empresarial elaborado por los arquitectos para Muebles de los Alpes. Este

documento contiene alrededor de 19 artefactos de arquitectura empresarial: 10 catálogos,

7 matrices (6 de ellas representadas como diagramas) y 2 diagramas para representar las

entidades de datos y un diagrama de despliegue.

De los 10 catálogos se han generado 7 (70%), de las 7 matrices se han generado 4

(57%), y los diagramas (realizados en Enterprise Architect) como se mencionó

anteriormente no hacen parte del alcance. Sin embargo, el documento está

desactualizado en relación con el modelo. Y evaluando estas cifras sería posible obtener

más del 50% de las matrices y catálogos, con la posibilidad de incluir los diagramas como

archivos externos de imagen.

Las dificultades para generar las 3 matrices y 3 catálogos restantes, están relacionadas

con cambios en la estructura del metamodelo y en algunos casos, debido a que el modelo

está en construcción, no se ha contado con la información necesaria.

Page 64: Generación de Entregables de Arquitectura Empresarial

64

Capítulo VI – Implementación

La implementación de los componentes se realizó en Java, usando como plataforma de

despliegue el entorno Eclipse. Todos los componentes se integraron en un plug-in que

permite acceder a la función de generación de documentos directamente sobre los

archivos de plantilla. El esquema general de la implementación se puede ver en la Figura

44.

Figura 44 - Esquema general de la implementación

1. EnArDocs y EnArDocsFragments

Se implementaron dos lenguajes de dominio específico para poder usar una plantilla

principal (EnArDocs) con una sintaxis estricta, y otro con una sintaxis relajada para los

fragmentos de plantilla (EnArDocsFragments). Este último, tal y como se mencionó

anteriormente pueden incluirse en otras plantillas, por lo tanto no tienen como requisito

importar modelos y librerías de funciones. La implementación se hizo usando XTEXT [34]

con un proyecto para cada lenguaje (Figura 45).

Page 65: Generación de Entregables de Arquitectura Empresarial

65

Figura 45 - Proyectos XTEXT para los lenguajes implementados

EnArDocsFragments define una gramática derivada del lenguaje EnArDocs. Gracias a

que XTEXT permite reutilizar gramáticas usando lo que se conoce como Grammar Mixins

no fue necesario re-escribir una gramática completa para poder usar los fragmentos de

plantilla con una sintaxis diferente (Figura 46).

Figura 46 - Gramática de EnArDocsFragments

Para lograr esta reutilización es necesario modificar el script de generación de

EnArDocsFragments (*.mwe2), para que importe el metamodelo generado para la

gramática principal. El parámetro modificado se puede observar en la Figura 47

Figura 47 – Modificación del script de generación de EnArDocsFragments

Una vez generados los editores para cada lenguaje se implementó un intérprete en Java,

que permite recorrer y procesar el árbol de sintaxis de cada programa escrito en ellos. El

intérprete carga los modelos importados en la plantilla usando el API de EMF [35]. Luego,

cada modelo se recorre y se convierte a una estructura de grafo en memoria usando la

librería JUNG [36]. Las clases usadas para esta representación se pueden ver en la

Figura 48.

Page 66: Generación de Entregables de Arquitectura Empresarial

66

Figura 48 - Clases usadas para almacenar el modelo en memoria

2. EnArAnalyse

La librería de funciones EnArAnalyse se encuentra implementada en cuatro proyectos

(Figura 49). El proyecto co.edu.uniandes.enar.analyse contiene las clases encargadas

de cargar el modelo en memoria, las clases para los artefactos (matriz y catálogo), y las

interfaces para extender la librería con nuevas funciones. El proyecto

co.edu.uniandes.enar.function.artifacts contiene las funciones básicas para generar los

artefactos TOGAF. El proyecto co.edu.uniandes.enar.function.core contiene las

funciones básicas para consultar elementos desde el modelo. Por último, el proyecto

co.edu.uniandes.enar.paths contiene funciones auxiliares para obtener caminos sobre el

grafo del modelo.

Figura 49 - Conjunto de proyectos que conforman la librería EnArAnalyse

El proceso para extender las funciones y poder crear nuevas librerías para cada proyecto

es el siguiente:

Page 67: Generación de Entregables de Arquitectura Empresarial

67

1. Crear una clase que implemente IFunction (Figura 50) que se encuentra dentro

de co.edu.uniandes.enar.analyse.core.function,

2. Crear un archivo MANIFEST.MF (Figura 51) que contenga las dependencias

necesarias,

3. Una vez implementadas las funciones deseadas, compilar el proyecto que las

contenga y crear un archivo JAR que contenga el archivo MANIFEST del paso

anterior,

4. Este archivo ya se puede importar en cualquier plantilla de EnArDocs.

Figura 50 - Interfaz para implementar nuevas funciones dentro de EnArAnalyse

Page 68: Generación de Entregables de Arquitectura Empresarial

68

Figura 51 – Ejemplo de archivo MANIFEST.MF con dependencias

3. Generador de documentos

El generador de documentos implementado permite generar archivos en formato MS

Word 2007, haciendo uso de la librería DOCX4J [37]. Esta implementación es práctica,

pero cuando se quieren hacer documentos con estilos precisos y listas anidadas puede

presentar problemas, debido a que requiere un conocimiento avanzado en el formato

Office Open XML [38]. Sin embargo funciona muy bien en comparación a otras

alternativas open-source, que presentan problemas mayores con este formato [39].

Los generadores que se deseen implementar deben utilizar el API de EMF para leer el

modelo del documento. Aunque también se puede optar por un lenguaje como XPAND o

Acceleo, más orientados a este tipo de modelos.

Page 69: Generación de Entregables de Arquitectura Empresarial

69

Capítulo VII – Conclusiones

Los modelos de arquitectura empresarial permiten abstraer y estructurar la realidad de la

organización, durante el desarrollo de un proyecto. Sin embargo, debido a la complejidad

propia de las organizaciones, la consulta y construcción de entregables de arquitectura

empresarial en base a ellos resulta dispendiosa. Más aun, cuando es necesario mantener

estos documentos en el transcurso del tiempo.

En este trabajo se abordaron estos problemas con una estrategia de solución compuesta

por: EnArDocs, el lenguaje de plantillas de entregables; EnArAnalyse, la librería de

funciones para realizar las consultas y generar los artefactos de arquitectura empresarial;

y por último un mecanismo para generar el documento final en el formato que se requiera.

El lenguaje propuesto contiene un conjunto simple y reducido de instrucciones para

estructurar la plantilla del entregable. Esta estructura se puede expresar usando los

elementos del modelo, permitiendo que ante un cambio en éste el entregable se

mantenga consistente. Además, para promover la reutilización se pueden utilizar

fragmentos de plantilla provenientes de EnArDocs o Velocity.

EnArAnalyse contiene mecanismos de extensión para agregar diferentes tipos de

consultas, y si es necesario generar nuevos artefactos. Se han generado 7 de los

artefactos propuestos por TOGAF, utilizando las funciones básicas propuestas. Esto ha

permitido validar la propuesta en primera instancia.

El generador del entregable en formato MS Word ha permitido verificar que el modelo de

documento producido como paso intermedio, sea lo suficientemente independiente para

producir el documento final.

Por último, se ha utilizado el escenario de Muebles de los Alpes como validación de la

propuesta y los resultados han sido satisfactorios. Se han generado 26 artefactos, en

comparación con los 19 que contiene el documento elaborado de forma manual, sobre un

modelo de un tamaño considerable.

Page 70: Generación de Entregables de Arquitectura Empresarial

70

Bibliografía y referencias

[1] T. Bucher, R. Fischer, S. Kurpjuweit, and R. Winter, ―Analysis and Application

Scenarios of Enterprise Architecture: An Exploratory Study,‖ 2006 10th IEEE International

Enterprise Distributed Object Computing Conference Workshops (EDOCW’06), pp. 28-28,

2006.

[2] S. Buckl, F. Matthes, C. Neubert, and C. M. Schweda, ―A wiki-based approach to

enterprise architecture documentation and analysis,‖ in The 17th European Conference on

Information Systems (ECIS)–Information Systems in a Globalizing World: Challenges,

Ethics and Practices, 2009, vol. 8, no. 10.

[3] S. Buckl, F. Matthes, and C. M. Schweda, ―Classifying enterprise architecture

analysis approaches,‖ Enterprise Interoperability, pp. 66–79, 2009.

[4] F. De Boer, M. Bonsangue, L. Groenewegen, A. Stam, S. Stevens, and L. Van Der

Torre, ―Change impact analysis of enterprise architectures,‖ in Information Reuse and

Integration, Conf, 2005. IRI-2005 IEEE International Conference on., 2005, pp. 177–181.

[5] E. Estevez, M. Marcos, and I. Sarachaga, ―Model based documentation of

automation applications,‖ , 2009. INDIN 2009., 2009.

[6] U. Frank, U. Koblenz-landau, and D.- Koblenz, ―Multi-Perspective Enterprise

Modeling ( MEMO ) - Conceptual Framework and Modeling Languages 2 . Enterprise

Modelling : Vision and,‖ Sciences-New York, vol. 0, no. c, pp. 1-10, 2002.

[7] M. Heinrich and A. Boehm-Peters, ―MoDDo-a tailored documentation system for

model-driven software development,‖ Proceedings of the, 2008.

[8] M. E. Iacob and H. Jonkers, ―Quantitative analysis of enterprise architectures,‖

Interoperability of enterprise software and applications, pp. 239–252, 2006.

[9] M. Jackson, C. Delp, D. Bindschadler, M. Sarrel, R. Wollaeger, and D. Lam,

―Dynamic gate product and artifact generation from system models,‖ in Aerospace

Conference, 2011 IEEE, 2011, pp. 1–10.

[10] P. Johnson, E. Johansson, T. Sommestad, and J. Ullberg, ―A Tool for Enterprise

Architecture Analysis,‖ 11th IEEE International Enterprise Distributed Object Computing

Conference EDOC 2007, pp. 142-142, 2007.

Page 71: Generación de Entregables de Arquitectura Empresarial

71

[11] M. Lankhorst, ―Enterprise architecture modelling—the issue of integration,‖

Advanced Engineering Informatics, vol. 18, no. 4, pp. 205-216, Oct. 2004.

[12] E. Niemi, ―Enterprise Architecture Stakeholders-A holistic view,‖ Information

Systems, 2007.

[13] T. J. Parr, ―Enforcing strict model-view separation in template engines,‖

Proceedings of the 13th conference on World Wide Web - WWW ’04, p. 224, 2004.

[14] C. Pena, ―An MDE approach to design enterprise architecture viewpoints,‖ and

Enterprise Computing (CEC), 2010, 2010.

[15] D. Quartel, W. Engelsman, H. Jonkers, and M. V. Sinderen, ―A Goal-Oriented

Requirements Modelling Language for Enterprise Architecture,‖ 2009 IEEE International

Enterprise Distributed Object Computing Conference, pp. 3-13, Sep. 2009.

[16] M. Riebisch and S. Wohlfarth, ―Introducing Impact Analysis for Architectural

Decisions,‖ 14th Annual IEEE International Conference and Workshops on the

Engineering of Computer-Based Systems (ECBS’07), pp. 381-392, Mar. 2007.

[17] J. R. Romero and A. Vallecillo, ―Requirements for ODP Enterprise Architecture

Tools,‖ in EDOC Conference Workshop, 2007. EDOC’07. Eleventh International IEEE,

2007, pp. 224–230.

[18] M. van Steenbergen, R. Foorthuis, N. Mushkudiani, W. Bruls, S. Brinkkemper, and

R. Bos, ―Achieving Enterprise Architecture Benefits: What Makes the Difference?,‖ 2011

IEEE 15th International Enterprise Distributed Object Computing Conference Workshops,

pp. 350-359, Aug. 2011.

[19] C. Wang, H. Li, Z. Gao, M. Yao, and Y. Yang, ―An automatic documentation

generator based on model-driven techniques,‖ in Computer Engineering and Technology

(ICCET), 2010 2nd International Conference on, 2010, vol. 4, pp. V4–175.

[20] B. R. Winter and R. Fischer, ―Essential Layers, Artifacts, and Dependencies of

Enterprise Architecture,‖ Architecture, vol. 3, no. May, pp. 1-12, 2007.

[21] H. Störrle, ―VMQL: A visual language for ad-hoc model querying,‖ Journal of Visual

Languages Computing, vol. 22, no. 1, pp. 3-29, 2011

Page 72: Generación de Entregables de Arquitectura Empresarial

72

[22] Casallas, John. ―Estructuración y manejo de Metainformación para soportar el

análisis en Arquitectura Empresarial‖, Tesis de maestría - Universidad de los Andes, 2011.

[23] Group, T, O., ―The Open Group Architecture Framework V. 9‖. 2009.

[24] ―Velocity Template Language‖ http://velocity.apache.org/, 2007.

[25] ―FreeMarker‖ http://freemarker.sourceforge.net/, 2011

[26] ―Agilian‖ http://www.visual-paradigm.com/product/ag/, 2011

[27] ―Enterprise Architect" http://www.sparxsystems.com/products/ea/, 2010.

[28] ―BizzDesign Architect‖ http://www.bizzdesign.com/, 2011

[29] ―Gendoc2‖ http://www.topcased.org/index.php?id_projet_pere=102, 2011

[30] ―Acceleo‖ http://www.acceleo.org/pages/home/en, 2010

[31] ―XPAND‖ http://www.eclipse.org/modeling/m2t/?project=xpand, 2011

[32] Universidad de los Andes, ―Laboratorio de arquitectura empresariales‖

http://sistemas.uniandes.edu.co/~lae/, 2011

[33] ―VizGraph‖ http://www.graphviz.org/, 2011

[34] ―XText‖ http://www.eclipse.org/Xtext/, 2011

[35] ―Eclipse Modeling Framework‖ http://www.eclipse.org/modeling/emf/, 2011

[36] ―JUNG‖ http://jung.sourceforge.net/, 2010

[37] ―Docx4j‖ http://www.docx4java.org/, 2011

[38] ―Office Open XML‖ http://www.microsoft.com/interop/openup/openxml/, 2011

[39] ―Apache POI‖ http://poi.apache.org/, 2011

[40] ―Eugenia‖ http://www.eclipse.org/gmt/epsilon/doc/eugenia/, 2011

.

Page 73: Generación de Entregables de Arquitectura Empresarial

73

Apéndice A – Gramática de EnArDocs

grammar co.edu.uniandes.enar.docs.EnArDocs with org.eclipse.xtext.common.Terminals import 'http://www.eclipse.org/emf/2002/Ecore' as ecore generate enArDocs "http://www.edu.co/uniandes/enar/docs/EnArDocs" Template: importModels+=ImportModel+ importFunctions+=ImportFunction* properties=TemplateProperties expressions+=ChapterContainerExp expressions+=Expression* ; TemplateProperties: {TemplateProperties} _kw=_TEMPLATE '{' (attributes+=AttributeExp ( ',' attributes+=AttributeExp )* )? '}' ; ImportModel: 'importModel' mUri=STRING 'as' alias=VariableName 'conformTo' mmUri=STRING ; ImportFunction: 'importFunction' uri=STRING 'as' alias=VariableName ; Expression: ContainerExp | DirectiveExp ; ContainerExp: ChapterContainerExp | SectionContainerExp | TableContainerExp | TableRowExp | TableDataExp | ListContainerExp | ListItemExp ; ChapterContainerExp: {ChapterContainerExp} _kw=_CHAPTER '{' (attributes+=ChapterAttribute ( ',' attributes+=ChapterAttribute )* )? '}' ; ChapterAttribute returns AttributeExp: IdAttribute | TitleAttribute ;

Page 74: Generación de Entregables de Arquitectura Empresarial

74

IdAttribute returns AttributeExp: name=ATT_ID ':' val=ConcatExpression ; TitleAttribute returns AttributeExp: name=ATT_TITLE ':' val=ConcatExpression ; SectionContainerExp: {SectionContainerExp} _kw=_SECTION '{' (attributes+=SectionAttribute ( ',' attributes+=SectionAttribute )* )? '}' ; SectionAttribute returns AttributeExp: IdAttribute | TitleAttribute | ParentAttribute ; ParentAttribute returns AttributeExp: name=ATT_PARENT ':' val=ConcatExpression ; TableContainerExp: {TableContainerExp} _kw=_TABLE '{' (attributes+=TableAttribute ( ',' attributes+=TableAttribute )* )? '}' ( rows+=TableRowExp | directives+=DirectiveControlExp )* end=EndTable ; TableAttribute returns AttributeExp: IdAttribute | TitleAttribute | ParentAttribute ; EndTable: {EndTable} _kw='/table' ; TableRowExp: {TableRowExp} _kw_start=_TR body+=TableCellExp* _kw_end='/tr' ; TableCellExp: TableDataExp | TableHeaderExp ; TableDataExp: {TableDataExp} _kw=_TD

Page 75: Generación de Entregables de Arquitectura Empresarial

75

contents+=Expression* end=EndTableData ; EndTableData: {EndTableData} _kw='/td' ; TableHeaderExp: {TableHeaderExp} _kw=_TH contents+=Expression* end=EndTableHeader ; EndTableHeader: {EndTableHeader} _kw='/th' ; ListContainerExp: {ListContainerExp} _kw_start=_LIST '{' ( attributes+=ListAttribute ( ',' attributes+=ListAttribute )* )? '}' ( items+=ListItemExp | directives+=DirectiveControlExp )* _kw_end='/list' ; ListAttribute returns AttributeExp: IdAttribute | TitleAttribute | ListTypeAttribute | ParentAttribute ; ListTypeAttribute returns AttributeExp: name=ATT_TYPE ':' val=ConcatExpression ; ListItemExp: {ListItemExp} _kw=_ITEM contents+=Expression* end=EndListItem ; EndListItem: {EndListItem} _kw='/item' ; DirectiveExp: DirectiveControlExp | TextDir | MinimizedTextDir | ImageDir | MatrixDir | CatalogDir | DiagramDir | ProcessExternalDir | IncludeDir ;

Page 76: Generación de Entregables de Arquitectura Empresarial

76

DirectiveControlExp: IfDir | ForEachDir ; IfDir: _kw=_IF '(' condition=EvalExpression ')' ':' ifBody+=Expression* elseIf+=ElseIfDir* else=ElseDir? end=EndIfDir ; EndIfDir: {EndIfDir} _kw='/if' ; ElseDir: {ElseDir} _kw=_ELSE ':' elseBody+=Expression* ; ElseIfDir: _kw=_ELSEIF '(' condition=EvalExpression ')' ':' elseIfBody+=Expression* ; EvalExpression returns OperableExpression: RelationalExpression ( {EvalExpression.left=current} operator+=LogicalOperator right=RelationalExpression )* ; RelationalExpression returns OperableExpression: UnaryOperatorExpression ( {RelationalExpression.left=current} operator+=RelationalOperator right=UnaryOperatorExpression )* ; UnaryOperatorExpression: ( unaryOperator=UnaryOperator )? expression=SimpleExpression ; SimpleExpression: LiteralExpression | CallExp | '(' EvalExpression ')' ; LiteralExpression: AttributeVal ; CallExp: FunctionCall | VariableCall ; FunctionCall: member=VariableName '.' functionName=ID '(' ( params+=Parameter ( ',' params+=Parameter )* )? ')'

Page 77: Generación de Entregables de Arquitectura Empresarial

77

( '.' nextFunctionCall=NextFunctionCall )? ; NextFunctionCall returns FunctionCall: ( member=VariableName '.' )? functionName=ID '(' ( params+=Parameter ( ',' params+=Parameter )* )? ')' ( '.' nextFunctionCall=NextFunctionCall )? ; Parameter: LiteralExpression | CallExp ; VariableCall: variable=VariableName ( '.' att=(ID|Keyword) )? ; ForEachDir: _kw=_FOREACH base=CallExp 'as' iterator=VariableName ':' body+=Expression* end=EndForEachDir ; EndForEachDir: {EndForEachDir} _kw='/forEach' ; ImageDir: {ImageDir} _kw=_IMAGE '{' ( attributes+=ImageAttribute ( ',' attributes+=ImageAttribute )* )? '}' ; ImageAttribute returns AttributeExp: IdAttribute | TitleAttribute | URIAttribute | ParentAttribute | WidthAttribute | HeightAttribute ; URIAttribute returns AttributeExp: name=ATT_URI ':' val=ConcatExpression ; WidthAttribute returns AttributeExp: name=ATT_WIDTH ':' val=IntVal ; HeightAttribute returns AttributeExp: name=ATT_HEIGHT ':' val=IntVal ; ProcessExternalDir: _kw=_PROCESSEXTERNAL uri=STRING

Page 78: Generación de Entregables de Arquitectura Empresarial

78

( '(' ( params+=AttributeExp ( ',' params+=AttributeExp )* )? ')' )? ; IncludeDir: _kw=_INCLUDE uri=STRING ( '(' ( params+=AttributeExp ( ',' params+=AttributeExp )* )? ')' )? ; AttributeExp: name=(ID|Keyword) ':' val=EvalExpression ; TextDir: {TextDir} _kw=_TEXT '{' ( attributes+=TextAttribute ( ',' attributes+=TextAttribute )* )? '}' ; MinimizedTextDir: {MinimizedTextDir} _kw=_T '{' contents=ConcatExpression '}' ; TextAttribute returns AttributeExp: IdAttribute | ContentsAttribute | ParentAttribute | IsExternalAttribute | DescriptionAttribute | URIAttribute ; ContentsAttribute returns AttributeExp: name=ATT_CONTENTS ':' val=ConcatExpression ; IsExternalAttribute returns AttributeExp: name=ATT_EXTERNAL ':' val=BoolVal ; DescriptionAttribute returns AttributeExp: name=ATT_DESCRIPTION ':' val=ConcatExpression ; MatrixDir: {MatrixDir} _kw=_MATRIX '{' ( attributes+=MatrixAttribute ( ',' attributes+=MatrixAttribute )* )? '}' ;

Page 79: Generación de Entregables de Arquitectura Empresarial

79

MatrixAttribute returns AttributeExp: IdAttribute | TitleAttribute | ParentAttribute | FunctionAttribute ; FunctionAttribute returns AttributeExp: name=ATT_FUNCTION ':' val=FunctionCall ; CatalogDir: {CatalogDir} _kw=_CATALOG '{' ( attributes+=CatalogAttribute ( ',' attributes+=CatalogAttribute )* )? '}' ; CatalogAttribute returns AttributeExp: IdAttribute | TitleAttribute | ParentAttribute | FunctionAttribute ; DiagramDir: {DiagramDir} _kw=_DIAGRAM '{' ( attributes+=DiagramAttribute ( ',' attributes+=DiagramAttribute )* )? '}' ; DiagramAttribute returns AttributeExp: IdAttribute | TitleAttribute | ParentAttribute | URIAttribute ; ConcatExpression: operand+=StringExpression ( PLUS_OPERATOR operand+=StringExpression )* ; StringExpression: StringVal | CallExp ; AttributeVal: StringVal | IntVal | BoolVal | DblVal ; StringVal: val=STRING ; IntVal: val=INT ; BoolVal: val=BOOLEAN ;

Page 80: Generación de Entregables de Arquitectura Empresarial

80

DblVal: val=DOUBLE ; VariableName: VARIABLE_PREFIX name=(ID|Keyword) ; Keyword: ATT_ID | ATT_TITLE | ATT_PARENT | ATT_TYPE | ATT_URI | ATT_CONTENTS | ATT_DESCRIPTION | ATT_EXTERNAL | ATT_WIDTH | ATT_HEIGHT | ATT_FUNCTION | _TEMPLATE | _CHAPTER | _SECTION | _TABLE | _TR | _TD | _TH | _LIST | _ITEM | _TEXT | _T | _IF | _ELSE | _ELSEIF | _FOREACH | _IMAGE | _PROCESSEXTERNAL | _INCLUDE | _MATRIX | _CATALOG | _DIAGRAM ; LogicalOperator: OR_OPERATOR | AND_OPERATOR ; RelationalOperator: GT_OPERATOR | GE_OPERATOR | EQ_OPERATOR | LE_OPERATOR | LT_OPERATOR | NE_OPERATOR ; UnaryOperator: NOT_OPERATOR | MINUS_OPERATOR ; //variable prefix terminal VARIABLE_PREFIX: '$'; //operators terminal GT_OPERATOR: '>'; terminal GE_OPERATOR: '>='; terminal EQ_OPERATOR: '=='; terminal LE_OPERATOR: '<'; terminal LT_OPERATOR: '<='; terminal NE_OPERATOR: '!='; terminal NOT_OPERATOR: '!'; terminal AND_OPERATOR: '&&'; terminal OR_OPERATOR: '||'; terminal PLUS_OPERATOR: '+'; terminal MINUS_OPERATOR: '-';

Page 81: Generación de Entregables de Arquitectura Empresarial

81

//data types terminal BOOLEAN: 'true' | 'false'; terminal DOUBLE returns ecore::EDouble: ('0'..'9')+ '.' ('0'..'9')+; //keywords terminal ATT_ID: 'id'; terminal ATT_TITLE: 'title'; terminal ATT_PARENT: 'parent'; terminal ATT_TYPE: 'type'; terminal ATT_URI: 'uri'; terminal ATT_CONTENTS: 'contents'; terminal ATT_EXTERNAL: 'external'; terminal ATT_DESCRIPTION: 'description'; terminal ATT_WIDTH: 'width'; terminal ATT_HEIGHT: 'height'; terminal ATT_FUNCTION: 'function'; terminal _TEMPLATE : 'template'; terminal _CHAPTER : 'chapter'; terminal _SECTION : 'section'; terminal _TEXT : 'text'; terminal _T : 't'; terminal _TABLE : 'table'; terminal _TR : 'tr'; terminal _TD : 'td'; terminal _TH : 'th'; terminal _LIST : 'list'; terminal _ITEM : 'item'; terminal _IF : 'if'; terminal _ELSE : 'else'; terminal _ELSEIF : 'elseif'; terminal _FOREACH : 'forEach'; terminal _IMAGE : 'image'; terminal _PROCESSEXTERNAL : 'processExternal'; terminal _INCLUDE : 'include'; terminal _MATRIX : 'matrix'; terminal _CATALOG : 'catalog'; terminal _DIAGRAM : 'diagram';

Page 82: Generación de Entregables de Arquitectura Empresarial

82

Apéndice B – Ejemplo de plantilla en EnArDocs

importModel "D:/model/archisurance.archimatemm" as $model conformTo "D:/model/archimatemm.ecore" importFunction "D:/functions/core.jar" as $f importFunction "D:/functions/artifacts.jar" as $fa importFunction "D:/functions/mdla.jar" as $fmdla importFunction "D:/functions/archimate.jar" as $farch template { name: "Archisurance Artifacts" } chapter { title: "Archisurance"} diagram { uri: "D:/model/archisurance.archimatemm_diagram" } chapter { title: "Business Architecture" } section { title: "Business Process vs Application Components" } matrix { function : $fa.customMatrix( $model, $f.filterByElementType($model, "BusinessProcess"), $f.filterByElementType($model, "ApplicationComponent"), $fmdla.BPxAppCheckFunction(), “X”) } section { title: "Business Actors vs Roles" } matrix { function : $fa.simpleMatrix( $model, "BusinessActor", "BusinessRole", "performs") } section { title: "Business Actors Catalog" } catalog { function : $fa.simpleCatalog( $model, "BusinessActor", "name", "description") }

Page 83: Generación de Entregables de Arquitectura Empresarial

83

Apéndice C – Listado de funciones de EnArAnalyse

1. filterByElementType (model, elementType1, elementType2, …) :

Collection<Element>

Recibe el modelo y el nombre de los tipos de elementos a filtrar. Retorna una

colección de Element.

2. filterByElementAttributes (model, AttOperator1, AttOperator2, …) :

Collection<Element>

Recibe el modelo y una serie de operadores que se evaluaran sobre los atributos

de cada elemento para realizar el filtro. Retorna los Element que han evaluado a

verdadero para cada operador. A continuación se presentan los operadores

implementados:

3. attEq (Element, ―attName‖, attVal) : boolean

Evalúa que el atributo attName del Element sea igual al valor attVal.

4. attGEt (Element, ―attName‖, attVal) : boolean

Evalúa que el atributo attName del Element sea mayor o igual al valor attVal.

5. attGt (Element, ―attName‖, attVal) : boolean

Evalúa que el atributo attName del Element sea mayor que el valor attVal.

6. attLEt (Element, ―attName‖, attVal) : boolean

Evalúa que el atributo attName del Element sea menor o igual al valor attVal.

7. attLt (Element, ―attName‖, attVal) : boolean

Evalúa que el atributo attName del Element sea menor que el valor attVal.

8. attNEq (Element, ―attName‖, attVal) : boolean

Evalúa que el atributo attName del Element sea diferente al valor attVal.

9. filterByElementName (model, elementName1, elementName2, …) :

Collection<Element>

Recibe el modelo y el nombre de los elementos a filtrar. Retorna una colección de

Element.

10. filterRelatedElements (Element, relationName) : Collection<Element>

Retorna los elementos relacionados al Element a través de la relación con el

nombre de relationName. Retorna una colección de Element.

11. extractAttributesOfElementType (Element, type, asList(―attName1‖, ―attName2‖,

…) ) : Map<String, Object>

Evalúa si el Element pertenece al tipo type y extrae los atributos listados. Retorna

un mapa con los valores de cada atributo filtrado asociado con su nombre.

Page 84: Generación de Entregables de Arquitectura Empresarial

84

12. asList (val1, val2, …) : List<Object>

Retorna una lista con los elementos que se pasan como parámetro.

13. firstOf (Collection) : Object

Retorna el primero de los elementos que se encuentre dentro de la colección.

14. lastOf (Collection) : Object

Retorna el últimos de los elementos que se encuentre dentro de la colección.

15. sizeOf (Collection) : Integer

Retorna el tamaño de la colección.

16. sortByProperty (Collection<Element>, propertyName) : List<Element>

Ordena la colección de elementos por la propiedad especificada y retorna una lista

con los elementos ordenados.

17. exactShortestPathBetween (Element1, Element2, pathSize) : boolean

Evalúa si el camino más corto entre los dos elementos es igual al tamaño

especificado. Retorna verdadero en este caso.

18. typePatternBetween (Element1, Element2, typePattern) : boolean

Evalúa si el camino entre los dos elementos corresponde al patrón especificado.

Este patrón puede ser una lista que contenga cada uno de los operadores de

camino. Los operadores son: “?” para 0 o 1 ocurrencias de un tipo de elemento, “*”

para 0 o más ocurrencias, y “[#]” para especificar el número exacto de ocurrencias.

Por ejemplo, un camino entre un proceso de negocio y una aplicación, que

contenga al menos un elemento de tipo interfaz de aplicación: asList(“*”,

“ApplicationInterface”, “*”).

19. simpleCatalog (model, ―elementType‖, ―attName1‖, ―attName2‖, …)

Explicado en el capítulo EnArAnalyse – Consultas y generación de artefactos.

20. customCatalog (model, fFilterElements(), fExtractAttributes())

Explicado en el capítulo EnArAnalyse – Consultas y generación de artefactos.

21. simpleMatrix (model, ―elementType1‖, ―elementType2‖, ―value‖)

Explicado en el capítulo EnArAnalyse – Consultas y generación de artefactos.

22. customMatrix (model, fCheckIntersection(), fValue(), showEmptyRowsCols)

Explicado en el capítulo EnArAnalyse – Consultas y generación de artefactos.

Page 85: Generación de Entregables de Arquitectura Empresarial
Page 86: Generación de Entregables de Arquitectura Empresarial
Page 87: Generación de Entregables de Arquitectura Empresarial