<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Uso de Ontologías para mapear una Arquitectura de Software con su Implementación</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>CIC, Committee for Scientific Research B1900AYB</institution>
          ,
          <addr-line>La Plata</addr-line>
          ,
          <country country="AR">Argentina</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Consejo Nacional de Investigaciones Científicas y Técnicas</institution>
          ,
          <addr-line>CONICET</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>ISISTAN Research Institute. UNICEN University. Campus Universitario</institution>
          ,
          <addr-line>Tandil (B7001BBO), Buenos Aires</addr-line>
          ,
          <country>Argentina. Tel.:</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Resumen La arquitectura de software de un sistema es un activo importante para una organización que desarrolla software. Para maximizar los beneficios que provee una arquitectura, ésta debe estar en correspondencia con la implementación del sistema. En muchos proyectos existe cierta documentación de la arquitectura, pero sin embargo, la información de mapeos entre los elementos de dicha arquitectura y su implementación en código es escasa o inexistente. Este problema trae aparejadas dificultades de entendimiento de los elementos de código en relación a la arquitectura originalmente diseñada, lo que repercute negativamente sobre el aseguramiento de la calidad y los esfuerzos de mantenimiento del sistema. Si bien la provisión manual de estos mapeos es factible, es una tarea compleja y proclive a errores, particularmente a medida que la implementación del sistema evoluciona en el tiempo. En este contexto, las técnicas de alineación de ontologías se presentan como una alternativa para producir mapeos en forma automática. Por esta razón, el presente trabajo propone un enfoque automatizado y basado en ontologías para la generación de mapeos entre la arquitectura de un sistema y su implementación.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        La arquitectura de un sistema de software [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] se refiere a la organización de alto
nivel del sistema, que comprende elementos de software, las propiedades externamente
visibles de esos elementos, y las relaciones entre ellos. Una arquitectura de
software [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] proporciona un modelo que hace explícitas las principales decisiones de diseño
respecto a la satisfacción de atributos de calidad (por ej., performance, disponibilidad,
modificabilidad, entre otros). A medida que un sistema evoluciona, comienzan a
existir discrepancias entre la arquitectura “según se documentó” y su implementación “en
código” [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. La acumulación de cambios (típicamente, en la implementación) tiende
a “erosionar” la arquitectura inicial. Este problema impacta negativamente sobre los
esfuerzos de mantenimiento y el aseguramiento de la calidad del sistema.
      </p>
      <p>
        Una práctica que permite mantener la arquitectura alineada (y consistente) con su
implementación es la conformidad arquitectural [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Esta práctica se refiere a verificar
periódicamente las relaciones entre los elementos arquitectónicos y sus contrapartes en
la implementación, previniendo posibles violaciones de las reglas de arquitectura y
reparando aquellas que puedan existir. En la actualidad, existen varias herramientas que
ayudan al arquitecto a desarrollar con la conformidad arquitectural (por ej., Archium
[
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], ArchJava [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]). Para esto, el prerrequisito es contar con mapeos entre los elementos
de la arquitectura (por ej., componentes, responsabilidades, escenarios) y los elementos
de la implementación (por ej., paquetes, clases, métodos). Es habitual encontrar
descripciones de la arquitectura prevista del sistema, pero generalmente los mapeos entre dicha
arquitectura y el código son escasos o inexistentes. Esto no permite capitalizar en los
beneficios que provee la arquitectura. Si bien es factible que un arquitecto/desarrollador
defina en forma manual los mapeos de la arquitectura a una versión dada del sistema,
esta tarea suele ser compleja y requiere un análisis detallado de la implementación.
Este problema se acentúa a medida que la implementación del sistema evoluciona en el
tiempo.
      </p>
      <p>
        En este contexto, un enfoque alternativo para producir mapeos en forma
automática son las técnicas de alineación de ontologías [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Una ontología es una formulación
explícita de un esquema conceptual, que permite la abstracción de entidades y sus
relaciones dentro de una estructura determinada [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Si se considera la arquitectura de
software como un representación conceptual del sistema, tanto la semántica de la
arquitectura como el código correspondiente pueden ser utilizados para crear ontologías
que representen sus conceptos y relaciones más importantes. En este trabajo se
propone la utilización de dos ontologías, una para representar la arquitectura y otra para su
implementación. Estas ontologías pueden ser luego alineadas de forma automática para
establecer correspondencias entre sus entidades. Dichas correspondencias proveen los
mapeos entre elementos de la arquitectura y su implementación.
      </p>
      <p>El resto del trabajo se estructura de la siguiente manera. En la Sección 2 se presentan
los aspectos más importantes del enfoque propuesto para la generación de mapeos. La
Sección 3 discute algunos resultados de la evaluación del enfoque con casos de estudio.
En la Sección 4, se analizan algunos trabajos relacionados. Finalmente, la Sección 5
presenta las conclusiones del trabajo y menciona trabajos futuros.</p>
      <p>Figura 1: Un enfoque para establecer mapeos entre elementos de la arquitectura y su
implementación.
2.</p>
    </sec>
    <sec id="sec-2">
      <title>Enfoque propuesto</title>
      <p>La ausencia de mapeos entre la arquitectura de un sistema y su implementación
dificulta: el entendimiento del código en relación a su diseño arquitectónico original, el
mantenimiento evolutivo del sistema y la práctica de chequeo de conformidad
arquitectural. Por esta razón, en este trabajo se propone un enfoque para la generación
automática de mapeos que permita identificar correspondencias entre elementos de la
arquitectura y su implementación (Figura 1). A partir de una descripción de la arquitectura
y del código fuente, se definen dos ontologías, denominadas “ontología
arquitectónica” y “ontología de la implementación”, respectivamente. Luego, estas dos ontologías
son tomadas como entradas por el proceso de alineación, el cual tiene como objetivo
encontrar las correspondencias entre ambas ontologías. Dicho proceso está
compuesto por tres actividades: emparejamiento, cómputo de similitud y agrupamiento. En el
emparejamiento, se generan todas las posibles parejas entre las entidades de las dos
ontologías. A partir de este emparejamiento, se realiza el cómputo de similitud de cada
pareja de entidades basándose en sus características. Luego del cómputo de similitud se
realiza el agrupamiento de las parejas de entidades de acuerdo al grado de similitud
presentado entre estas. Finalmente, se selecciona como resultado de la alineación el grupo
que posee parejas de mayor similitud, las cuales se presentan como salida al usuario.
2.1.</p>
      <p>Definición de las ontologías</p>
      <p>
        Una ontología es una especificación explícita de una conceptualización [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. Algunas
de las características más representativas de las ontologías que se adecuan a nuestro
problema son: la capacidad de adaptarse a distintos niveles de abstracción, y la
posibilidad de realizar correspondencias de ontologías estableciendo relaciones entre los
elementos de una o más ontologías, para establecer conexiones, especializaciones, y
generalizaciones, entre otras. En este trabajo, las ontologías son definidas a través del
lenguaje OWL (Ontology Web Lenguage [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]). OWL tiene como objetivo proporcionar
un lenguaje que puede ser utilizado para describir las clases y las relaciones entre ellas,
que son inherentes a documentos y aplicaciones Web. Sin embargo, es un lenguaje que
también puede ser utilizado para representar otros tipos de descripciones como, por
ejemplo, la arquitectura de software y su implementación.
      </p>
      <p>A continuación, se presentan las definiciones de la ontología arquitectónica y la
ontología de la implementación. Notar que la generación de ambas ontologías se realiza
en forma automática.</p>
      <p>
        Ontología arquitectónica Existen diversas formas de representar la arquitectura de un
sistema y la relación entre sus componentes, este trabajo se basa en una vista parcial de
la arquitectura denominada blueprint [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. El blueprint es una vista de los componentes
de alto nivel de un sistema y de sus interfaces hacia otros componentes. Un
componente en esta vista arquitectónica representa una porción de código que tiene asignadas
responsabilidades (o concerns) del sistema. Estos componentes son vistos como “cajas
negras” y su interacción con el resto del sistema se realiza solo mediante sus
interfaces. Las interfaces pueden ser provistas o requeridas, determinando así una forma de
dependencia entre los componentes.
      </p>
      <p>La representación blueprint se traduce a una ontología utilizando el lenguaje OWL
(Figura 2). Los componentes se representan como clases OWL:Class, la dependencia
entre estos dada por las interfaces se traduce como propiedades OWL:ObjectProperty, y
los concerns simplemente se traducen como strings utilizando OWL:DatatypeProperty.
Por ejemplo, en la figura 2, los componentes 1 y 2 son traducidos a dos clases OWL
homónimas, la “interface1to2” a una relación ObjectProperty, y los concerns a dos
strings.
Ontología de la implementación La implementación de un sistema se lleva a cabo
mediante la producción de código. Para poder realizar los mapeos, este trabajo se basa
en código escrito en el lenguaje Java. El código Java se traduce a una ontología OWL
(Figura 2). En esta traducción, las clases Java se representan como OWL:Class, las
dependencias entre clases vía invocaciones a métodos se representan como propiedades
de objetos OWL:ObjectProperty. Adicionalmente, también pueden informarse concerns
de la misma forma que en la ontología anterior utilizando OWL:DatatypeProperty. Esto
permite que un concern pueda ser asociado a una clase cuando exista información de
trazabilidad. Por ejemplo, en la figura 2, las clases Java 1 y 2 son traducidas a dos clases
OWL homónimas, la invocación a “method2” como una relación ObjectProperty, y en
el caso de la clase 1, se informa el concern1 como string.</p>
      <p>Figura 2: Definición de las ontologías a partir de la representación del sistema.
2.2.</p>
      <p>Alineación de las ontologías</p>
      <p>
        A partir de las ontologías anteriores, es posible trazar una correspondencia entre los
conceptos y relaciones de las mismas, lo que se conoce como alineación de ontologías
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. La Figura3 muestra un pequeño ejemplo de arquitectura y su implementación. En la
parte inferior se muestra la descripción (parcial) de un sistema dada por su blueprint y
su implementación (vista como clases e invocaciones a métodos); y en la parte superior
se muestra la representación ontológica de ambas.
      </p>
      <p>Emparejamiento El emparejamiento de entidades de las ontologías se refiere al
producto cartesiano entre los componentes (de la arquitectura) y las clases (de la
implementación). Para el ejemplo de la Figura 3, el emparejamiento de entidades se observa en
el Cuadro 1, donde los componentes GUI_Elements, Business_Rules y Data_Manager,
son cruzados con las clases GUI_Adapter, BusinessManager, BusinessRule,
BusinessDataManager y DataObject. Para problemas complejos (en términos de tamaño de las
ontologías), por cuestiones de performance, podría pensarse en una forma de limitar los
emparejamientos con información adicional, no obstante, ese problema no será
abordado en este trabajo.</p>
      <p>Figura 3: Ejemplo de generación de ontologías a partir de la representación del sistema.
Cómputo de similitud A cada par de entidades resultante de la fase anterior se le
aplican funciones de similitud que lo evalúan de acuerdo a distintas propiedades. Este
enfoque utiliza tres funciones de similitud (lingüística, de concerns, y estructural) para
cubrir todos los aspectos en lo que dos entidades puedan ser comparadas. Cada función
de similitud produce, para cada pareja de entidades, un valor entre 0 (baja similitud) y
1 (alta similitud) generando así una matriz de similitud.. El Cuadro 1 resume las tres
matrices de similitud en una única matriz para los emparejamientos del ejemplo de la
figura 3.</p>
      <p>GUI_Adapter BusinessManager BusinessRule</p>
      <p>L C E L C E L C E
GUI_Elements 0.5 1,00 0.84 0.25 0,00 0.52 0.28 0,00 0,00
Business_Rules 0.0 0,00 0,00 0.63 1,00 1,00 1,00 1,00 0.38
Data_Manager 0.0 0,00 0,00 0.71 0,00 0,00 0.28 0,00 0.37
BusinessDataManager</p>
      <p>L C E
0.22 0,00 0,00
0.6 0.66 0.49
0.9 0.66 0.37</p>
      <p>DataObject
L C E
0.06 0,00 0,00
0.23 0,00 0,00
0.5 1,00 0.42
Cuadro 1: Similitud lingüística (L), de concerns (C) y estructural (E) para los elementos de la
Figura 3.</p>
      <p>
        Similitud Lingüística Se basa en la comparación de los nombres de las entidades de
las ontologías. Los nombres son divididos en palabras de acuerdo a espacios, guiones, y
divisiones de mayúsculas, entre otros criterios. Una vez divididas las palabras, se
obtiene una oración que es utilizada como entrada de la función de similitud. En particular,
para el cálculo de similitud lingüística se evaluó el uso de tres técnicas: Greedy [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ],
Optima [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] y el método Corley Mihelcea [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], empleando para ello el API de similitud
semántica SEMILAR [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. Por ejemplo, en el Cuadro 1, puede observarse en la
columna L el valor de similitud lingüística entre las entidades usando el método Corley
Mihelcea.
Similitud de Concerns Un concern de software es cualquier aspecto que impacte
sobre la implementación de un sistema de software [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], generalmente impactando sobre
varios artefactos de software. Ejemplos típicos de concerns pueden ser aspectos de
persistencia, seguridad, o performance. En nuestra representación, los concerns que afectan
ciertos elementos de la arquitectura, también pueden a afectar a los elementos de
código que materializan dichos componentes. La ecuación 1 muestra el cálculo de similitud
de concerns entre dos entidades E1 y E2, calculada como la suma de los concerns de
E1 y E2, sobre la suma de los concern de E1 que se encuentran en E2 más la suma de
los concerns de E2 que se encuentran en E1. Esta información es representada en la
columna C del Cuadro 1.
      </p>
      <p>Similitud(E1, E2) =</p>
      <p>
        ∑ concernsE1 + ∑ concernsE2
∑ concernsE1enE2 + ∑ concernsE2enE1
(1)
Similitud Estructural Este tipo de similitud proviene de considerar las ontologías
como grafos dirigidos para poder analizar su estructura y determinar la correspondencia
entre sus nodos. En base a esta característica, se utiliza el algoritmo de matching de
grafos Similarity Flooding (SFA) [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. El SFA toma dos grafos como entrada y produce
como salida un mapeo entre los nodos de ambos grafos. Cabe destacar que el SFA
utiliza como entrada un mapeo inicial (o semilla), a fin de reducir su espacio de búsqueda.
En este enfoque, para evitar la intervención del usuario, este mapeo inicial es resuelto
utilizando las funciones de similitud lingüística y de concerns. Es decir, primeramente
se buscan los mapeos para los cuales las funciones de similitud anteriores hayan
producido un alto valor de similitud (muy cercano a 1), y se utilizan estos como semilla
del SFA. Este proceso es descripto por el pseudocódigo 1. En la Cuadro 1, se puede
observar en la columna E, el valor de similitud estructural usando el algoritmo SFA.
Algoritmo 1 Pseudocódigo del proceso de similitud estructural.
1. G1 = Graph(Ontology1);
2. G2 = Graph(Ontology2);
3. initialMap = maxSimilarityMappings(G1, G2);
4. similarityMatrix = SFA(G1, G2, initialMap);
Agrupamiento A partir de las matrices, se obtienen instancias de los pares de
entidades y sus valores de similitud. Finalmente, estas instancias son agrupadas mediante la
utilización de una técnica de clustering [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] con el fin de reunir los pares de entidades
de acuerdo a la similitud de sus características. Particularmente, se utilizó la técnica
de clustering K-Means [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. K-Means tiene como objetivo la partición de un conjunto
de n observaciones en k grupos, en el que cada observación pertenece al grupo más
cercano a la media. Para este trabajo, el resultado de la alineación es el clúster con la
media más cercana a 1, que es presentado en última instancia al usuario, como mapeos
entre componentes y clases. En la Figura 3, la línea punteada entre las entidades
expone la alineación final, por ejemplo entre el componente Data_Manager y las clases
BusinessDataManager y DataObject
3.
      </p>
    </sec>
    <sec id="sec-3">
      <title>Evaluación</title>
      <p>
        En el área de alineación de ontologías, se utilizan generalmente los criterios de
precision y recall evaluar la performance del sistema de alineamiento [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Estas medidas
son definidas por las ecuaciones siguientes:
      </p>
      <p>Precision =</p>
      <p>Recall =
(givenAlignment ∩ correctAlignment)</p>
      <p>givenAlignment
(givenAlignment ∩ correctAlignment)</p>
      <p>correctAlignment</p>
      <p>Se denomina precision a la fracción de instancias recuperadas que son relevantes,
mientras que recall es la fracción de instancias relevantes que han sido recuperadas.
Además de estas dos medidas, se utilizó F-Measure como una medida armónica de
precision y recall. Esta medida está definida por la siguiente ecuación:
F − Measure =
2 ∗ Precision ∗ Recall</p>
      <p>Precision + Recall</p>
      <p>F-measure es utilizada para evaluar qué tan lejos está la solución de la utilidad
teórica, y también para observar qué tan balanceadas están las medidas de precision y recall.
(2)
(3)
(4)</p>
      <sec id="sec-3-1">
        <title>Descripción HWS MM</title>
      </sec>
      <sec id="sec-3-2">
        <title>Líneas de código (LOC) 8697 3015</title>
        <p>Componentes 7 25</p>
        <p>Interfaces 14 70</p>
        <p>Clases 135 51</p>
        <p>Métodos 1090 251</p>
        <p>Cuadro 2: Descripción de los proyectos HWS y MM</p>
        <p>
          Se utilizaron dos casos de estudio para validar el enfoque propuesto: i) el sistema
Mobile Media (MM) [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] que es una SPL (Software Product Line) para aplicaciones
móviles, y ii) el sistema Health Watcher (HWS) [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] que es un sistema para recoger
y gestionar quejas y notificaciones relacionadas con la salud pública. Los mapeos de
referencia para MM y HWS fueron provistos por expertos en forma manual, a fin de
realizar comparaciones contra los mapeos obtenidos automáticamente mediante nuestro
enfoque. En la Cuadro 2 se provee una descripción breve de ambos proyectos, tanto a
nivel de arquitectura como de su implementación.
        </p>
        <p>Se experimentó con el enfoque en los dos casos de estudio, y se realizaron pruebas
variando el valor K (cantidad de clusters) y la técnica de similitud lingüística,
obteniendo los resultados mostrados en la Cuadro 3. Estos resultados evidencian alrededor de
K=20 un valor de f-measure superior al conseguido con otros K, lo que significa un
mayor balance entre precision y recall. La técnica de similitud lingüística con la que
el proceso de alineación arrojó resultados más precisos fue Greedy, con cerca del 95 %
para K=20, mientras que el recall se mantuvo cerca del 50 %. Como era de esperar,
para valores más altos de K=20 la medida precision aumenta, pero recall disminuye
como puede observarse en la Figura 4. Esto se debe a que el aumento en el valor de K
disminuye la cantidad promedio de instancias por cada clúster, lo que genera un
tradeoff entre precision y recall. Entre estas dos medidas se prioriza precision, dado que es
más importante que los mapeos que se recuperen sean correctos, a que se recuperen
muchos mapeos a costa de introducir incorrectos. Mapeos erróneos pueden dar lugar a
razonamientos incorrectos sobre los análisis que puedan hacerse entre la arquitectura
y su implementación. En la Figura 4 puede verse que los valores de precision, recall y
f-measure tienden a estabilizarse más rápido en el proyecto MM que el HWS. Esto se
debe a que la alineación depende exclusivamente de la correspondencia semántica entre
las ontologías, y esta puede ser más evidente en algunos proyectos y más difusa otros.
0
5
10
15
20
25
30
35
40
0
5
10
15
20
25
30
35
40
Figura 4: Gráfico de de precision (P), recall (R) y f-measure (F) para distintos valores de K (eje
x) utilizando Greedy.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Trabajos relacionados</title>
      <p>
        Obtener un nivel de comprensión adecuado de la arquitectura de un sistema de
software es importante por muchas razones [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. En los últimos años, varias investigaciones
han explorado el uso de técnicas de Inteligencia Artificial para recuperar la arquitectura
1,00
0,90
0,80
0,70
0,60
0,50
0,40
0,30
0,20
0,10
0,00
      </p>
      <p>MM</p>
      <p>P
R
F
1,00
0,90
0,80
0,70
0,60
0,50
0,40
0,30
0,20
0,10
0,00</p>
      <p>HWS</p>
      <p>
        P
R
F
de un sistema a partir de su código fuente. En [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], se analizaron técnicas de
Machine Learning para condensar diagramas de clases en pos de obtener una representación
de más alto nivel del diseño del sistema. Otros enfoques como [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] intentan recuperar
la arquitectura del código fuente utilizando clustering. Un enfoque similar al anterior
fue utilizado en [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], donde el interés está primero en la recuperación de concerns del
sistema implementado, y luego junto a información estructural, se intenta identificar
automáticamente componentes y conectores. Sin embargo, estos enfoques apuntan a
recuperar la arquitectura desde la implementación en casos en los que no existe
información acerca de la arquitectura original del sistema. Este trabajo se centra en la
recuperación de mapeos entre una arquitectura dada y la implementación del sistema,
considerando que dicha arquitectura se conoce de antemano (ya sea porque existe algo
de documentación, o porque se ha consultado a un experto). Por otro lado, Jing Sung
et al. [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ] plantean una descripción ontológica de una arquitectura representada por
componentes y conectores, y exponen algunas de las ventajas de las ontologías como
representación alternativa a los lenguajes de descripción de arquitecturas (ADLs). A
partir de eso, proponen un enfoque de diseño y verificación de modelos de
arquitecturas de software usando tecnología de web semántica. Si bien en nuestro enfoque es
posible aprovechar técnicas de razonamiento ontológico, el aporte del presente trabajo
consiste en considerar la implementación del sistema como una ontología que se adecue
a la ontología de la arquitectura, para luego obtener mapeos mediante la alineación de
dichas ontologías.
5.
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusiones</title>
      <p>
        En este trabajo se presentó un enfoque para la generación automática de mapeos entre
elementos de una descripción arquitectónica y elementos de la implementación,
aprovechando técnicas existentes de alineación de ontologías. Una constribución novedosa
del enfoque es la combinación de tres medidas de similitud (lingüística, de concerns
y estructural). El enfoque fue evaluado en dos casos de estudio, obteniendo buenos
resultados en cuanto a precisión aunque con un recall moderado. Por otra parte, se
encontraron puntos a mejorar en el proceso de alineación. Uno de estos refiere a la función
de similitud estructural, cuando existen diferencias de tamaño entre los grafos
correspondientes al blueprint y a la implementación Java, ya que el algoritmo SFA no está
preparado para alinear grafos de tamaños muy dispares. Por lo tanto es necesario, como
un paso previo a la alineación, llevar ambas representaciones a un nivel de
abstracción similar, o bien, experimentar con otros algoritmos. Otra posible mejora consiste en
aportar más información estructural al proceso de alineamiento mediante la inclusión
de una función de similitud basada en métricas de SNA (Social Network Analisys) [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Aldrich</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chambers</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Notkin</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Archjava: connecting software architecture to implementation</article-title>
          . In: Software Engineering,
          <year>2002</year>
          .
          <article-title>ICSE 2002</article-title>
          .
          <article-title>Proceedings of the 24rd International Conference on</article-title>
          . pp.
          <fpage>187</fpage>
          -
          <lpage>197</lpage>
          . IEEE (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Arthur</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vassilvitskii</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>k-means++: The advantages of careful seeding</article-title>
          .
          <source>In: Proceedings of the eighteenth annual ACM-SIAM symposium on Discrete algorithms</source>
          . pp.
          <fpage>1027</fpage>
          -
          <lpage>1035</lpage>
          . Society for Industrial and Applied Mathematics (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Bass</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clements</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kazman</surname>
          </string-name>
          , R.:
          <source>Software Architecture in Practice. Addison-Wesley Professional, 3rd edn.</source>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Corley</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mihalcea</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Measuring the semantic similarity of texts</article-title>
          .
          <source>In: Proceedings of the ACL workshop on empirical modeling of semantic equivalence and entailment</source>
          . pp.
          <fpage>13</fpage>
          -
          <lpage>18</lpage>
          . Association for Computational Linguistics (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Do</surname>
            ,
            <given-names>H.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rahm</surname>
          </string-name>
          , E.:
          <article-title>Matching large schemas: Approaches and evaluation</article-title>
          .
          <source>Information Systems</source>
          <volume>32</volume>
          (
          <issue>6</issue>
          ),
          <fpage>857</fpage>
          -
          <lpage>885</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Euzenat</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shvaiko</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , et al.:
          <article-title>Ontology matching</article-title>
          , vol.
          <volume>18</volume>
          . Springer (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Garcia</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Popescu</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mattmann</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Medvidovic</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cai</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Enhancing architectural recovery using concerns</article-title>
          .
          <source>In: Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering</source>
          . pp.
          <fpage>552</fpage>
          -
          <lpage>555</lpage>
          . IEEE Computer Society (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Gruber</surname>
            ,
            <given-names>T.R.:</given-names>
          </string-name>
          <article-title>A translation approach to portable ontology specifications</article-title>
          .
          <source>Knowledge acquisition 5(2)</source>
          ,
          <fpage>199</fpage>
          -
          <lpage>220</lpage>
          (
          <year>1993</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Jansen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bosch</surname>
          </string-name>
          , J.:
          <article-title>Software architecture as a set of architectural design decisions</article-title>
          .
          <source>In: Software Architecture</source>
          ,
          <year>2005</year>
          .
          <source>WICSA</source>
          <year>2005</year>
          . 5th Working IEEE/IFIP Conference on. pp.
          <fpage>109</fpage>
          -
          <lpage>120</lpage>
          . IEEE (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kazman</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Woods</surname>
            ,
            <given-names>S.G.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Jeromy</given-names>
            <surname>Carriere</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.</surname>
          </string-name>
          :
          <article-title>Requirements for integrating software architecture and reengineering models: Corum ii</article-title>
          . In: Reverse Engineering,
          <year>1998</year>
          . Proceedings. Fifth Working Conference on. pp.
          <fpage>154</fpage>
          -
          <lpage>163</lpage>
          . IEEE (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Kruchten</surname>
          </string-name>
          , P.B.:
          <article-title>The 4+ 1 view model of architecture</article-title>
          .
          <source>Software, IEEE</source>
          <volume>12</volume>
          (
          <issue>6</issue>
          ),
          <fpage>42</fpage>
          -
          <lpage>50</lpage>
          (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Maqbool</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Babri</surname>
            ,
            <given-names>H.A.</given-names>
          </string-name>
          :
          <article-title>Hierarchical clustering for software architecture recovery</article-title>
          .
          <source>Software Engineering</source>
          , IEEE Transactions on
          <volume>33</volume>
          (
          <issue>11</issue>
          ),
          <fpage>759</fpage>
          -
          <lpage>780</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Massoni</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Soares</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Borba</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Requirements</surname>
          </string-name>
          health-
          <source>watcher version 2</source>
          .0.
          <string-name>
            <surname>Early</surname>
            <given-names>Aspects</given-names>
          </string-name>
          , ICSE
          <volume>7</volume>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Van Harmelen</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          , et al.:
          <article-title>Owl web ontology language overview</article-title>
          .
          <source>W3C recommendation</source>
          <volume>10</volume>
          (
          <issue>10</issue>
          ),
          <year>2004</year>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Melnik</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Garcia-Molina</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rahm</surname>
          </string-name>
          , E.:
          <article-title>Similarity flooding: A versatile graph matching algorithm and its application to schema matching</article-title>
          .
          <source>In: Data Engineering</source>
          ,
          <year>2002</year>
          . Proceedings. 18th International Conference on. pp.
          <fpage>117</fpage>
          -
          <lpage>128</lpage>
          . IEEE (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Moriconi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Qian</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Riemenschneider</surname>
            ,
            <given-names>R.A.</given-names>
          </string-name>
          :
          <article-title>Correct architecture refinement</article-title>
          .
          <source>Software Engineering, IEEE Transactions on 21(4)</source>
          ,
          <fpage>356</fpage>
          -
          <lpage>372</lpage>
          (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Osman</surname>
            ,
            <given-names>M.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chaudron</surname>
            ,
            <given-names>M.R.</given-names>
          </string-name>
          , Van Der Putten,
          <string-name>
            <surname>P.</surname>
          </string-name>
          :
          <article-title>An analysis of machine learning algorithms for condensing reverse engineered class diagrams</article-title>
          .
          <source>In: Software Maintenance (ICSM)</source>
          ,
          <year>2013</year>
          29th IEEE International Conference on. pp.
          <fpage>140</fpage>
          -
          <lpage>149</lpage>
          . IEEE (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Rohlf</surname>
            ,
            <given-names>F.J.:</given-names>
          </string-name>
          <article-title>NTSYS-pc: numerical taxonomy and multivariate analysis system</article-title>
          .
          <source>Applied Biostatistics</source>
          (
          <year>1992</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Rus</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lintean</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>A comparison of greedy and optimal assessment of natural language student input using word-to-word similarity metrics</article-title>
          .
          <source>In: Proceedings of the Seventh Workshop on Building Educational Applications Using NLP</source>
          . pp.
          <fpage>157</fpage>
          -
          <lpage>162</lpage>
          . Association for Computational Linguistics (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Rus</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lintean</surname>
            ,
            <given-names>M.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Banjade</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Niraula</surname>
            ,
            <given-names>N.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stefanescu</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Semilar: The semantic similarity toolkit</article-title>
          .
          <source>In: ACL (Conference System Demonstrations)</source>
          . pp.
          <fpage>163</fpage>
          -
          <lpage>168</lpage>
          .
          <string-name>
            <surname>Citeseer</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Sun</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>H.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hu</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Design software architecture models using ontology</article-title>
          .
          <source>In: SEKE</source>
          . pp.
          <fpage>191</fpage>
          -
          <lpage>196</lpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Sutton</surname>
            Jr,
            <given-names>S.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rouvellou</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Modeling of software concerns in cosmos</article-title>
          .
          <source>In: Proceedings of the 1st international conference on Aspect-oriented software development</source>
          . pp.
          <fpage>127</fpage>
          -
          <lpage>133</lpage>
          . ACM (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Wasserman</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Social network analysis: Methods and applications</article-title>
          , vol.
          <volume>8</volume>
          . Cambridge university press (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Young</surname>
          </string-name>
          , T.J.:
          <article-title>Using aspectj to build a software product line for mobile devices</article-title>
          .
          <source>Ph.D. thesis</source>
          , The University of British Columbia (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>