<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1646-9895</journal-id>
<journal-title><![CDATA[RISTI - Revista Ibérica de Sistemas e Tecnologias de Informação]]></journal-title>
<abbrev-journal-title><![CDATA[RISTI]]></abbrev-journal-title>
<issn>1646-9895</issn>
<publisher>
<publisher-name><![CDATA[AISTI - Associação Ibérica de Sistemas e Tecnologias de Informação]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1646-98952019000400009</article-id>
<article-id pub-id-type="doi">10.17013/risti.34.97-111</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[Métricas para la Medición del Factor de Flexibilidad y el Factor de Herencia de Implementación de Sistemas de Software]]></article-title>
<article-title xml:lang="en"><![CDATA[Metrics for the Measurement of the Flexibility Factor and the Inheritance Implementation Factor of Software Systems]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Ortiz-Gutierrez]]></surname>
<given-names><![CDATA[Orlando]]></given-names>
</name>
<xref ref-type="aff" rid="A1"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Santaolaya-Salgado]]></surname>
<given-names><![CDATA[René]]></given-names>
</name>
<xref ref-type="aff" rid="A1"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Fragoso-Díaz]]></surname>
<given-names><![CDATA[Olivia-Graciela]]></given-names>
</name>
<xref ref-type="aff" rid="A1"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Rojas-Pérez]]></surname>
<given-names><![CDATA[Juan-Carlos]]></given-names>
</name>
<xref ref-type="aff" rid="A1"/>
</contrib>
</contrib-group>
<aff id="AA1">
<institution><![CDATA[,Tecnológico Nacional de México/CENIDET Depto. Ciencias Computacionales ]]></institution>
<addr-line><![CDATA[Cuernavaca Morelos]]></addr-line>
<country>México</country>
</aff>
<aff id="A">
<institution><![CDATA[,rene@cenidet.edu.mx  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<aff id="A">
<institution><![CDATA[,ofragoso@cenidet.edu.mx  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<aff id="A">
<institution><![CDATA[,carlos.rojas@cenidet.edu.mx  ]]></institution>
<addr-line><![CDATA[ ]]></addr-line>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>10</month>
<year>2019</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>10</month>
<year>2019</year>
</pub-date>
<numero>34</numero>
<fpage>97</fpage>
<lpage>111</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://scielo.pt/scielo.php?script=sci_arttext&amp;pid=S1646-98952019000400009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.pt/scielo.php?script=sci_abstract&amp;pid=S1646-98952019000400009&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://scielo.pt/scielo.php?script=sci_pdf&amp;pid=S1646-98952019000400009&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[Actualmente la medición de la calidad del diseño arquitectural de software es un tópico importante para los ingenieros de software. Sin embargo, algunas métricas de calidad aún no están definidas, como lo son las métricas para medir el factor de flexibilidad y de herencia de implementación de una arquitectura de clases, enfocadas en métodos abstractos. En este trabajo de investigación se propone un conjunto de cinco métricas de calidad, tres de ellas son para medir el factor de herencia de implementación, las cuales son: Factor de Herencia de Implementación (FHI), Factor de Herencia de Implementación por Jerarquía de Clases (FHIJ) y Factor Herencia de Implementación de una Arquitectura de Clases (FHIAC); las dos restantes son para medir el factor de flexibilidad, estas son: Factor de Flexibilidad de Clase (FFC) y Factor Medio de Flexibilidad de Clases(FMFC).]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[Currently measuring the quality of architectural software design is an important topic for software engineers. However, some quality metrics are not yet defined such as the metrics for measuring the flexibility and implementation inheritance factor for a class architecture focused on abstract methods. In this research, a set of five quality metrics is proposed; three of them are to measure the inheritance implementation factor, which are: Implementation Inheritance Factor (FHI), Implementation Inheritance Factor by Class Hierarchy (FHIJ) and Implementation Inheritance Factor of a Class Architecture (FHIAC); the remaining two are to measure the flexibility factor, these are: Class Flexibility Factor (FFC) and Average Class Flexibility Factor (FMFC).]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Acoplamiento]]></kwd>
<kwd lng="es"><![CDATA[flexibilidad]]></kwd>
<kwd lng="es"><![CDATA[herencia de interfaz]]></kwd>
<kwd lng="es"><![CDATA[herencia de implementación]]></kwd>
<kwd lng="en"><![CDATA[Coupling]]></kwd>
<kwd lng="en"><![CDATA[flexibility]]></kwd>
<kwd lng="en"><![CDATA[interface inheritance]]></kwd>
<kwd lng="en"><![CDATA[implementation inheritance]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p align="right"><font size="2"><b>ART&Iacute;CULOS</b></font></p>     <p><font size="4"><b>Métricas para la Medición del Factor de   Flexibilidad y el Factor de Herencia de Implementación de Sistemas de Software</b></font></p>     <p><font size="3"><b>Metrics for the Measurement of   the Flexibility Factor and the Inheritance Implementation Factor of Software Systems</b></font></p>     <p><b>Orlando Ortiz-Gutierrez<sup>1</sup>, René Santaolaya-Salgado<sup>1</sup>, Olivia-Graciela Fragoso-Díaz<sup>1</sup>, Juan-Carlos Rojas-Pérez<sup>1</sup></b></p>     <p><sup>1</sup>Tecnológico Nacional de México/CENIDET,   Depto. Ciencias Computacionales, Interior Internado Palmira S/N, Col. Palmira, C.P. 62490, Cuernavaca, Morelos, México. <a href="mailto:orlando.ortiz18ce@cenidet.edu.mx">orlando.ortiz18ce@cenidet.edu.mx</a>, <a href="mailto:rene@cenidet.edu.mx">rene@cenidet.edu.mx</a>, <a href="mailto:ofragoso@cenidet.edu.mx">ofragoso@cenidet.edu.mx</a>, <a href="mailto:carlos.rojas@cenidet.edu.mx">carlos.rojas@cenidet.edu.mx</a></p> <hr/>     <p>&nbsp;</p>     <p><b>RESUMEN</b></p>     <p>Actualmente la medición de la   calidad del diseño arquitectural de software es un tópico importante para los   ingenieros de software. Sin embargo, algunas métricas de calidad aún no están   definidas, como lo son las métricas para medir   el factor de flexibilidad y de herencia   de implementación de una arquitectura de clases, enfocadas en   métodos abstractos. En este trabajo de investigación se propone un conjunto de   cinco métricas de calidad, tres de ellas son para medir el factor de   herencia de implementación, las cuales son: Factor de Herencia de Implementación   (FHI), Factor de Herencia de Implementación por Jerarquía de Clases (FHIJ) y   Factor Herencia de Implementación de una Arquitectura de Clases (FHIAC); las dos restantes   son para medir el factor de flexibilidad, estas son: Factor de   Flexibilidad de Clase (FFC) y Factor Medio de Flexibilidad de Clases(FMFC).</p>      <p><b>Palabras-clave: </b>Acoplamiento; flexibilidad;  herencia de interfaz; herencia de implementación.</p> <hr/>     <p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p><b>ABSTRACT</b></p>     <p>Currently measuring the   quality of architectural software design is an important topic for software   engineers. However, some quality metrics are not yet defined such as the   metrics for measuring the flexibility and implementation inheritance factor for   a class architecture focused on abstract methods. In this research, a set of   five quality metrics is proposed; three of them are to measure the   inheritance implementation factor, which are: Implementation Inheritance Factor   (FHI), Implementation Inheritance Factor by Class Hierarchy (FHIJ) and   Implementation Inheritance Factor   of a Class Architecture (FHIAC);   the remaining two are to   measure the flexibility factor, these are: Class Flexibility Factor (FFC) and   Average Class Flexibility Factor (FMFC).</p>      <p><b>Keywords: </b>Coupling; flexibility; interface inheritance; implementation inheritance.</p> <hr/>     <p>&nbsp;</p>     <p><b>1.  Introducción</b></p>      <p>Actualmente la medición de la calidad del diseño arquitectural de software es un tópico importante para los ingenieros de software. Sin embargo, algunas métricas de calidad aún no están definidas, como lo son las métricas para medir el factor de flexibilidad y de herencia de implementación de una arquitectura de clases. Entendiéndose por flexibilidad, como la facilidad con la que un sistema o componente puede modificarse para su uso en aplicaciones o entornos distintos de aquellos para los que fue específicamente diseñado (IEEE Standard Glossary of Software Engineering Terminology, 1990) y por herencia de implementación, una relación donde una subclase hereda la implementación del comportamiento de su clase base (Pinto, 2015). Esta carencia reprime la identificación de código desagradable (del Inglés smell code), en el software legado, que impacta en anti patrones de diseño e impide su mejora por medio de técnicas de refactorización y de reingeniería.</p>      <p>Para efectos de reducir el acoplamiento entre clases relacionadas por herencia de implementación en arquitecturas orientadas a objetos se necesita, una métrica que mida el acoplamiento por herencia de implementación y otra métrica para medir la flexibilidad, de un diseño arquitectural de software.</p>      <p>Se han revisado diferentes trabajos de investigación sobre métricas para medir algunos atributos de calidad, como lo son: acoplamiento, reusabilidad, flexibilidad, comprensibilidad, funcionalidad, extensibilidad y efectividad. Sin embargo, en la literatura revisada no se han encontrado métricas cuyo propósito sea medir el factor de flexibilidad y de herencia de implementación desde métodos abstractos, por ejemplo:  en (Chawla &amp; Nath, 2013) se mide la herencia y el acoplamiento a nivel de clase y de sistema, pero ninguna de las métricas toman en cuenta métodos abstractos; en (Chawla &amp; Chhabra, 2013) se mide la flexibilidad utilizando una fórmula que utiliza los atributos de encapsulación, acoplamiento, composición y polimorfismo pero tampoco ninguna de las métricas utilizadas toman en cuenta los métodos abstractos. Consecuentemente, en esta investigación se definió un conjunto de métricas para la medición de la flexibilidad y el acoplamiento por herencia de implementación desde clases abstractas, utilizando la teoría de la medición para sustentarlas.</p>     <p><b>2. Marco Teórico</b></p>      <p>Recientemente se ha sugerido que la teoría de la medición debería servir de base para desarrollar, razonar y aplicar métricas de ingeniería de software (Briand, El Emam, &amp; Morasca, 1996).</p>      ]]></body>
<body><![CDATA[<p>Para clasificar una métrica como de escala ordinal, se deben cumplir los requisitos del axioma de <i>orden débil</i>, los cuales son: que <b>"</b>&#8805; sea una relación binaria total y transitiva. Las propiedades de transitividad y completitud, son las siguientes (Suze, 1995):</p>     <p>&nbsp;</p>    <p align="center"><a name="e1"></a><img src="/img/revistas/rist/n34/n34a09e1.jpg"/></p>    
<p>&nbsp;</p>      <p><b>3.  Materiales y Métodos</b></p>      <p><b>3.1. Escalas o Niveles de Medición</b></p>      <p>Una asociación que se establece entre el mundo real y valores de medida, se suele denominar <i>escala de medición</i>. La teoría de la medición permite formalizar la relación entre dos escalas de medición con esta definición (Gary, 2010):</p>      <p>Sea (A, B, &#956;) una escala, donde el conjunto de objetos en B, es el conjunto de los números reales. Sea que la notación &#956;(A) significa que el conjunto de todos los números reales que son mediciones de algún objeto en A. Esto es que &#956;(A) es el conjunto de medidas de los objetos en A. (En matemáticas, a esto se la llama el rango de &#956;). Luego un mapeo t: &#956;(A) .-&gt; B se define como una <i>transformación admisible</i>, si y sólo si, (A, B, t°<i>&#956;</i>)  también es una escala.</p>      <p>Se pueden describir cinco tipos de escalas que se caracterizan por sus transformaciones admisibles (Gary, 2010): nominal, ordinal, de intervalo, de proporción (ratio) y absoluta.</p>      <p>Específicamente, las escalas ordinales   asignan números a objetos en un orden particular,   pero cualquier número que mantiene el orden es igualmente bueno. Cualquier   función estrictamente creciente de t, es una transformación admisible. Un   ejemplo es la escala de Mohs para la dureza de los minerales. La escala   original asigna, por ejemplo, 1 al talco, 7 al cuarzo y 10 al diamante. Años   después, se creó una escala que asignó 1 al talco, 8 al cuarzo y 15 al   diamante. Los números difieren, pero el orden sigue siendo el mismo. En este   caso se cumple que aun cuando se transforme la escala no cambia el orden   creciente, por lo tanto, es una transformación admisible (Gary, 2010). Esta es   la escala en la que se definen las métricas propuestas, puesto que cumplen   con los axiomas de la teoría de la medición para pertenecer a esta escala.</p>      ]]></body>
<body><![CDATA[<p><b>3.2. Factor de Herencia de Implementación (FHI) como escala ordinal</b></p>      <p>Se tiene el siguiente sistema relacional empírico:</p>     <p>&nbsp;</p>    <p align="center"><a name="e2"></a><img src="/img/revistas/rist/n34/n34a09e2.jpg"/></p>    
<p>&nbsp;</p>     <p>Como parte del proceso de comprobaci&oacute;n de las condiciones anteriores, se utiliza la <a href="#e11">ecuaci&oacute;n (1)</a> de la secci&oacute;n 4.1 para realizar el c&aacute;lculo del FHI de las clases uno, dos y  tres, ubicadas en la <a href="#f1">Figura 1</a>. En donde los m&eacute;todos que tienen &ldquo;= 0&rdquo;, significa que son abstractos, y los que no lo tienen, quiere decir que tienen una implementaci&oacute;n en su cuerpo. Obteni&eacute;ndose los siguientes resultados de la <a href="#f1">Figura 1</a>:</p>     <p>&nbsp;</p>    <p align="center"><a name="f1"></a><img src="/img/revistas/rist/n34/n34a09f1.jpg"/></p>    
<p>&nbsp;</p>     <p>Para comprobar que la relaci&oacute;n binaria es de orden d&eacute;bil, tiene que cumplir con las  propiedades de transitividad y completitud.</p>     ]]></body>
<body><![CDATA[<p><i>Transitividad</i></p>     <p>&nbsp;</p>    <p align="center"><a name="e3"></a><img src="/img/revistas/rist/n34/n34a09e3.jpg"/></p>    
<p>&nbsp;</p>      <p>Como se puede observar, la clase1 tiene   un factor de herencia de implementación mayor al   de la clase2. Este a su vez tiene un factor de herencia de implementación mayor al de la   clase3. Concluyendo que la relación   binaria &#8226;&#8805; cumple   con la propiedad de transitividad.</p>      <p><i>Relación Total</i></p>      <p>Si se tienen las clases uno y dos, se debe poder decir que la clase 1 <i>&#8220;tiene mayor o igual factor de herencia de implementación que&#8221; </i>la clase 2, o viceversa. Es decir:</p>      <p>Clase1 &#8226;&#8805; Clase2 o Clase2 &#8226;&#8805; Clase1</p>      <p>Calculando el FHI en las clases uno y dos de la <a href="#f1">Figura 1</a>, siempre fue posible determinar cuando existía mayor o igual factor de herencia de implementación.</p>     <p><i>Homomorfismo</i></p>      ]]></body>
<body><![CDATA[<p>Comprobando la segunda condición quedaría de la siguiente manera:</p>      <p>La clase 1 <i>&#8220;tiene mayor o igual factor de herencia de implementación que&#8221; </i>la clase 2</p>     <p>&nbsp;</p>    <p align="center"><a name="e4"></a><img src="/img/revistas/rist/n34/n34a09e4.jpg"/></p>    
<p>&nbsp;</p>     <p><i>Conclusión</i></p>      <p>La relación binaria <i>&#8220;tiene mayor o igual factor de herencia de implementación que&#8221; </i>de la métrica FHI, cumple con las condiciones de orden débil y además es un homomorfismo. Por lo cual, se concluye que la métrica es de escala ordinal (Suze, 1992).</p>      <p>Bajo el mismo sustento de la teoría de la medición se diseñaron las métricas para el Factor de Herencia de Implementación por Jerarquía de Clases (FHIJ) como Escala Ordinal y Factor de Herencia de Implementación de una Arquitectura de Clases (FHIAC) como escala ordinal.</p>     <p><b>3.3. Factor de Herencia de Implementación por Jerarquía de Clases (FHIJ) como Escala Ordinal</b></p>      <p>Bajo el mismo sustento de la teoría de la medición se diseñó la métrica para el Factor de Herencia de Implementación por Jerarquía de Clases (FHIJ) como Escala Ordinal. Obteniéndose los siguientes resultados al aplicar la <a href="#e12">ecuaci&oacute;n (2)</a></p>     ]]></body>
<body><![CDATA[<p>&nbsp;</p>    <p align="center"><a name="f2"></a><img src="/img/revistas/rist/n34/n34a09f2.jpg"/></p>    
<p>&nbsp;</p>     <p><i>Conclusión</i></p>      <p>La relación binaria <i>&#8220;tiene mayor o igual factor de herencia de implementación que&#8221; </i>de la métrica FHIJ, cumple con las condiciones de orden débil y además es un homomorfismo. Por lo cual, se concluye que esta métrica es de escala ordinal (Suze, 1992).</p>     <p><b>3.4 Factor de Herencia de Implementación de una Arquitectura de Clases (FHIAC) como escala ordinal</b></p>      <p>Así mismo, se diseñó la métrica para el Factor de Herencia de Implementación de una Arquitectura de Clases (FHIAC) como escala ordinal. Obteniéndose los siguientes resultados al aplicar la <a href="#e11">ecuaci&oacute;n (3)</a> de la sección 4.3, a las arquitecturas de clases mostradas en la <a href="#f3">Figura 3</a>:</p>     <p>&nbsp;</p>    <p align="center"><a name="f3"></a><img src="/img/revistas/rist/n34/n34a09f3.jpg"/></p>    
<p>&nbsp;</p>     ]]></body>
<body><![CDATA[<p><i>Conclusión</i></p>     <p>La relación binaria <i>&#8220;tiene mayor o igual factor de herencia de implementación que&#8221; </i>de la métrica FHIAC, cumple con las condiciones de orden débil y además es un homomorfismo. Por lo cual, se concluye que la métrica es de escala ordinal (Suze, 1992).</p>      <p><b>3.5. Factor de Flexibilidad de Clases (FFC) como escala ordinal</b></p>      <p>Para las métricas de flexibilidad se tiene el siguiente sistema relacional empírico:</p>     <p>&nbsp;</p>    <p align="center"><a name="e5"></a><img src="/img/revistas/rist/n34/n34a09e5.jpg"/></p>    
<p>&nbsp;</p>      <p>Como parte del proceso de comprobación de las condiciones anteriores, se utiliza la <a href="#e13">ecuaci&oacute;n (4)</a> de la sección 4.4 para realizar el cálculo del FFC de las clases uno, dos y tres, ubicadas en la <a href="#f4">Figura 4</a>. En donde los métodos que tienen &#8220;= 0&#8221;, significa que son abstractos, y los que no lo tienen, quiere decir que tienen una implementación en su cuerpo. Obteniéndose los siguientes resultados de la <a href="#f4">Figura 4</a>:</p>     <p>&nbsp;</p>    <p align="center"><a name="f4"></a><img src="/img/revistas/rist/n34/n34a09f4.jpg"/></p>    
]]></body>
<body><![CDATA[<p>&nbsp;</p>     <p>Para comprobar que la relación binaria es de orden débil, tiene que cumplir con las propiedades de transitividad y completitud.</p>      <p><i>Transitividad</i></p>     <p>&nbsp;</p>    <p align="center"><a name="e6"></a><img src="/img/revistas/rist/n34/n34a09e6.jpg"/></p>    
<p>&nbsp;</p>      <p>Como se puede observar, la clase 1 tiene un factor de flexibilidad de clase mayor al de la clase 2. Éste a su vez tiene un factor de flexibilidad mayor al de la clase 3, debido a la cantidad de métodos virtuales (con comportamiento polimórfico) que tienen. Concluyendo que la relación binaria &#8226;&#8805;, cumple con la propiedad de transitividad.</p>      <p><i>Relación Total</i></p>      <p>Si se tienen las clases uno y dos, se debe poder decir que la clase 1 &#8220;tiene mayor o igual factor de flexibilidad de clase que&#8221; la clase 2, o viceversa. Es decir:</p>      <p>Clase1 &#8226;&#8805; Clase2 o Clase2 &#8226;&#8805; Clase1</p>      ]]></body>
<body><![CDATA[<p>Calculando el FFC en las clases uno y dos de la <a href="#f4">Figura 4</a> siempre fue posible determinar cuando existía mayor o igual factor de flexibilidad.</p>      <p><i>Homomorfismo</i></p>      <p>Comprobando la segunda condición quedaría de la siguiente manera:</p>      <p>La clase 1 <i>&#8220;tiene mayor o igual factor de flexibilidad que&#8221; </i>la clase 2</p>     <p>&nbsp;</p>    <p align="center"><a name="e7"></a><img src="/img/revistas/rist/n34/n34a09e7.jpg"/></p>    
<p>&nbsp;</p>      <p><i>Demostración empírica de la propiedad de transitividad</i></p>     <p>&nbsp;</p>    <p align="center"><a name="e8"></a><img src="/img/revistas/rist/n34/n34a09e8.jpg"/></p>    
]]></body>
<body><![CDATA[<p>&nbsp;</p>      <p><i>Demostraci&oacute;n formal de la propiedad de transitividad </i></p>     <p><i>Reflejado en n&uacute;meros, se tiene que:</i></p>     <p align="center"><a name="e9"></a><img src="/img/revistas/rist/n34/n34a09e9.jpg"/></p>    
<p>&nbsp;</p>     <p>Como se puede observar, la clase 1 tiene un factor de flexibilidad de clase mayor al de la clase 2. Éste a su vez tiene un factor de flexibilidad mayor al de la clase 3, debido a la cantidad de métodos virtuales con comportamiento polimórfico que tienen. Concluyendo que la relación binaria &#8226;&#8805;, cumple con la propiedad de transitividad.</p>      <p><i>Demostración empírica de la propiedad de completitud</i></p>      <p>Si se tienen las clases uno y dos, se debe poder decir que la clase 1 <i>&#8220;tiene mayor o igual</i> <i>factor de flexibilidad de clase que&#8221; </i>la clase 2, o viceversa. Es decir:</p>      <p>Clase1 &#8226;&#8805; Clase2 o Clase2 &#8226;&#8805; Clase1</p>      <p><i>Demostración formal de la propiedad de completitud</i></p>      ]]></body>
<body><![CDATA[<p>Calculando el FFC en las clases uno y dos de la <a href="#f4">Figura 4</a> siempre fue posible determinar cuando existía mayor o igual factor de flexibilidad.</p>      <p><i>Demostración empírica de FFC que es un homomorfismo</i></p>      <p>Comprobando la segunda condición quedaría de la siguiente manera:</p>      <p>La clase 1 <i>&#8220;tiene mayor o igual factor de flexibilidad que&#8221; </i>la clase 2</p>      <p><i>Formalmente</i></p>     <p>&nbsp;</p>    <p align="center"><a name="e10"></a><img src="/img/revistas/rist/n34/n34a09e10.jpg"/></p>    
<p>&nbsp;</p>     <p><i>Conclusión</i></p>      <p>La relación binaria <i>&#8220;tiene mayor o igual factor de flexibilidad que&#8221; </i>de la métrica FFC, cumple con las condiciones de orden débil y además es un homomorfismo. Por lo cual, se concluye que la métrica es de escala ordinal (Suze, 1992).</p>        ]]></body>
<body><![CDATA[<p><b>3.6.Factor Medio de Flexibilidad de Arquitecturas de Clases (FMFAC) como escala ordinal</b></p>      <p>Bajo el mismo sustento de la teoría de la medición se diseñó la métrica para Factor Medio de Flexibilidad de Arquitecturas de Clases (FMFAC) como escala ordinal.</p>      <p>Obteniéndose los siguientes resultados al aplicar la <a href="#e14">ecuaci&oacute;n (5)</a> de la sección 4.5, a las arquitecturas de clase mostradas en la <a href="#f5">Figura 5</a>:</p>     <p>&nbsp;</p>    <p align="center"><a name="f5"></a><img src="/img/revistas/rist/n34/n34a09f5.jpg"/></p>    
<p>&nbsp;</p>     <p><i>Conclusión</i></p>      <p>La relación binaria <i>&#8220;tiene mayor o igual factor medio de flexibilidad de la arquitectura de clases&#8221; </i>de la métrica FMFAC, cumple con las condiciones de orden débil y además es un homomorfismo. Por lo cual, se concluye que la métrica es de escala ordinal (Suze, 1992).</p>     <p><b>4. Resultados</b></p>      <p>Se obtuvo un conjunto de métricas para medir el factor de flexibilidad (FFC y FMFAC) y de herencia de implementación (FHI, FHIJ y FHIAC), en diseños arquitecturales de clases, descritas más a detalle a continuación:</p>      ]]></body>
<body><![CDATA[<p><b>4.1. Métrica FHI (Factor de Herencia de Implementación)</b></p>      <p>Se ha definido una métrica para medir el factor de herencia de implementación que tiene una clase con respecto a otra. Dada una clase derivada, esta métrica consiste en la suma de los métodos virtuales y no virtuales implementados en su clase base, entre el número total de métodos de dicha clase base.</p>     <p>&nbsp;</p>    <p align="center"><a name="e11"></a><img src="/img/revistas/rist/n34/n34a09e11.jpg"/></p>    
<p>&nbsp;</p>     <p>La expresión matemática de la métrica FHI se muestra a continuación:</p>      <p>En donde:</p>      <p>&#931;Mv = Sumatoria de métodos virtuales implementados en una clase base. </p>     <p>&#931;Mnv = Sumatoria de métodos no virtuales   implementados en una clase base. Tm = Total de métodos en una clase base.</p>      <p>Debido a la normalización de la métrica, los valores obtenidos no dependen de la cantidad de métodos que se tengan en una clase dada. El valor óptimo es 0, lo cual significa que no se está heredando la implementación de los métodos. En caso contrario, el valor menos deseado es el 1, lo que significa que todos sus métodos están heredando su implementación.</p>      ]]></body>
<body><![CDATA[<p><b>4.2.Métrica FHIJ (Factor de Herencia de Implementación de una Jerarquía de Clases)</b></p>      <p>Se ha definido una métrica para medir el factor de herencia de implementación que tiene una jerarquía de clases. Esta métrica consiste en que, para una jerarquía de clases dada, es la suma del FHI de cada subclase entre el número total de clases en esa jerarquía menos 1.</p>      <p>La expresión matemática de la métrica FHIJ se muestra a continuación:</p>     <p>&nbsp;</p>    <p align="center"><a name="e12"></a><img src="/img/revistas/rist/n34/n34a09e12.jpg"/></p>    
<p>&nbsp;</p>     <p>En donde:</p>      <p>&#931;<i>FHI </i>= Sumatoria de FHI de una clase base.</p>      <p><i>Tc </i>= Total de clases en esa jerarquía.</p>      <p>De la misma manera, el valor óptimo es 0, lo cual significa que no se está heredando la implementación de los métodos en la jerarquía, y 1 es el valor menos deseado, lo que significa que todos sus métodos están heredando su implementación.</p>        ]]></body>
<body><![CDATA[<p><b>4.3.Métrica FHIAC (Factor de Herencia de Implementación de una Arquitectura de Clases)</b></p>      <p>Se ha definido una métrica para medir el factor de herencia de implementación que tiene una arquitectura de clases. Esta métrica consiste en la suma de los FHIJ de las ramas de clases entre el número de jerarquías de clases (NOH). La expresión matemática de la métrica FHIAC se muestra a continuación:</p>      <p>En donde:</p>      <p>&#931;<i>FHIJ</i>= Sumatoria de FHIJ de una jerarquía de clases.</p>      <p><i>NOH </i>= Es el conteo de las jerarquías de clase.</p>      <p>De la misma manera, el valor optimo es 0, lo cual significa que no se está heredando la implementación de los métodos en una arquitectura de clases, y 1 es el valor menos deseado, lo que significa que todos sus métodos están heredando su implementación.</p>      <p><b>4.4. Métrica FFC (Factor de Flexibilidad de Clases)</b></p>      <p>Se ha definido una métrica para medir el factor de flexibilidad que tiene una clase con respecto a otra. Dada una clase base, esta métrica consiste en la suma del NOP, entre el número total de sus métodos. La expresión matemática de la métrica FFC se muestra a continuación:</p>      <p>En donde:</p>     <p>&nbsp;</p>    ]]></body>
<body><![CDATA[<p align="center"><a name="e13"></a><img src="/img/revistas/rist/n34/n34a09e13.jpg"/></p>    
<p>&nbsp;</p>     <p>&#931;NOP = Sumatoria de los métodos virtuales que exhiben un comportamiento polimórfico.</p>      <p>Tm = Total de métodos en una clase base.</p>      <p>Debido a la normalización de la métrica, los valores obtenidos no dependen de la cantidad de métodos que se tengan en una clase dada. El valor óptimo es 1, lo cual significa que todos los métodos de la clase son abstractos, por lo tanto, todos exhiben un comportamiento polimórfico. En caso contrario, el valor menos deseado es el 0, el cual significa que ninguno de los métodos es abstracto, por lo tanto, no exhiben un comportamiento polimórfico.</p>        <p><b>4.5. Métrica FMFAC (Factor Medio de Flexibilidad de Arquitecturas de Clases)</b></p>      <p>Se ha definido una métrica para medir el factor de flexibilidad que tiene una arquitectura de clases. Esta métrica consiste en la suma de los FFC de la arquitectura del módulo entre el número total de clases. La expresión matemática de la métrica FMFAC se muestra a continuación:</p>      <p>En donde:</p>      <p>&#931;<i>FFC = Sumatoria del Factor de Flexibilidad de Clase.</i></p>     <p>&nbsp;</p>    ]]></body>
<body><![CDATA[<p align="center"><a name="e14"></a><img src="/img/revistas/rist/n34/n34a09e14.jpg"/></p>    
<p>&nbsp;</p>     <p><i>Tc = Total de clases en la arquitectura.</i></p>      <p><i> </i>De la misma manera el valor óptimo   de FMFAC es 1, lo cual significa que todos los métodos de las clases de la   arquitectura son virtuales, por lo tanto, todos exhiben un comportamiento polimórfico, y el valor   menos deseado de FMFAC es el 0, el cual significa que ningún método de las clases de la arquitectura es virtual, por lo tanto, ninguno tiene un comportamiento polimórfico.</p>      <p>Todas estas métricas cumplieron con los requerimientos para establecerse como escalas   ordinales, los cuales son: que sean de orden débil y que además se cumpla la   propiedad de homomorfismo (Suze, 1992). Según la teoría de la medición, estos requerimientos sustentan a las métricas.</p>     <p><b>5.  Discusión</b></p>     <p>Utilizando el lenguaje Java se programó el proceso de cálculo del conjunto de métricas presentado y se integró este código a un marco de métricas de calidad de software. Este marco automatiza varias métricas, para la medición de calidad del software orientado  a objetos. Para la etapa de pruebas del marco de métricas de calidad desarrollado, se utilizaron dos casos de prueba, un &#8220;marco estadístico&#8221; y el sistema &#8220;PSPCenidet&#8221;. Se realizó el cálculo de las métricas manualmente, así como automáticamente mediante el marco de métricas de calidad de software. Comprobando que ambos valores obtenidos de manera manual y automática fueron los mismos.</p>      <p>El principal aporte de este desarrollo es el conjunto de métricas de calidad de software, para medir el factor de flexibilidad (FFC y FMFAC) y de herencia de implementación (FHI, FHIJ y FHIAC), en diseños arquitecturales de clases. La definición de estas métricas, servirá para medir el grado de cierto código desagradable (<i>smell code</i>) por herencia de implementación en código legado.</p>     <p>&nbsp;</p>     <p><b>REFER&Ecirc;NCIAS</b> </p>     ]]></body>
<body><![CDATA[<!-- ref --><p>Briand, L., El Emam, K., &amp; Morasca, S. (1996). On the Application of Measurement Theory in Software Engineering. <i>Empirical Software Engineering</i>, <i>1</i>(1), 61-88. doi: <a href="https://doi.org/10.1007/BF00125812" target="_blank">https://doi.org/10.1007/BF00125812</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1008379&pid=S1646-9895201900040000900001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Chawla, M. K., &amp; Chhabra, I. (2013). Capturing OO Software Metrics to attain Quality Attributes - A case study. <i>International Journal of Scientific &amp; Engineering Research</i>, <i>4</i>(6), 359-363.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1008380&pid=S1646-9895201900040000900002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>      <!-- ref --><p>Chawla, S., &amp; Nath, R.(2013). Evaluating Inheritanceand Coupling Metrics. <i>International Journal of Engineering Trends and Technology</i>, <i>4</i>(7), 2903-2908.    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1008382&pid=S1646-9895201900040000900003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --></p>      <!-- ref --><p>Gary, F. (2010). Measurement Theory for Software Engineers. Recuperado a partir de <a href="https://courses.cs.ut.ee/2010/se/uploads/Main/measurement-theory.pdf" target="_blank">https://courses.cs.ut.ee/2010/se/uploads/Main/measurement-theory.pdf</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1008384&pid=S1646-9895201900040000900004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><p>IEEE Standard Glossary of Software Engineering Terminology. (1990). <i>IEEE Std 610.12-</i><i>1990</i>, 1-84. doi: <a href="https://doi.org/10.1109/IEEESTD.1990.101064" target="_blank">https://doi.org/10.1109/IEEESTD.1990.101064</a> </p>      <!-- ref --><p>Pinto, A.    (2015). Interface inheritance vs Implementation inheritance. Recuperado a partir de <a href="https://www.linkedin.com/pulse/why-prefer-interface-inheritance-implementation-adrain-pinto" target="_blank">https://www.linkedin.com/pulse/why-prefer-interface-inheritance-implementation-adrain-pinto</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1008386&pid=S1646-9895201900040000900006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Suze, H. (1992). Properties of software measures. <i>Software Quality Journal</i>, <i>1</i>(4), 225-260. doi: <a href="https://doi.org/10.1007/BF01885772" target="_blank">https://doi.org/10.1007/BF01885772</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1008387&pid=S1646-9895201900040000900007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p>Suze, H. (1995). Properties of Object-Oriented Software Measures. Recuperado a partir de <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.27.7578&rep=rep1&type=pdf" target="_blank">http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.27.7578&rep=rep1&type=pdf</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=1008388&pid=S1646-9895201900040000900008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><p>&nbsp;</p>     <p><b>Agradecimientos</b></p>     <p>Tecnol&oacute;gico Nacional de   M&eacute;xico/CENIDET, por el proyecto 6077.19-P &#8220;Generaci&oacute;n y evaluaci&oacute;n de   servicios Web de aprendizaje&#8221; y al CONACyT por la beca nacional de Orlando   Ortiz Gutierrez.</p>     <p>&nbsp;</p>     <p>Recebido/Submission:   20/08/2019 </p>     <p>Aceita&ccedil;&atilde;o/Acceptance: 25/09/2019</p>      ]]></body><back>
<ref-list>
<ref id="B1">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Briand]]></surname>
<given-names><![CDATA[L.]]></given-names>
</name>
<name>
<surname><![CDATA[El Emam]]></surname>
<given-names><![CDATA[K.]]></given-names>
</name>
<name>
<surname><![CDATA[Morasca]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[On the Application of Measurement Theory in Software Engineering]]></article-title>
<source><![CDATA[Empirical Software Engineering]]></source>
<year>1996</year>
<volume>1</volume>
<numero>1</numero>
<issue>1</issue>
<page-range>61-88</page-range></nlm-citation>
</ref>
<ref id="B2">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chawla]]></surname>
<given-names><![CDATA[M. K.]]></given-names>
</name>
<name>
<surname><![CDATA[Chhabra]]></surname>
<given-names><![CDATA[I.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Capturing OO Software Metrics to attain Quality Attributes - A case study]]></article-title>
<source><![CDATA[International Journal of Scientific & Engineering Research]]></source>
<year>2013</year>
<volume>4</volume>
<numero>6</numero>
<issue>6</issue>
<page-range>359-363</page-range></nlm-citation>
</ref>
<ref id="B3">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chawla]]></surname>
<given-names><![CDATA[S.]]></given-names>
</name>
<name>
<surname><![CDATA[Nath]]></surname>
<given-names><![CDATA[R.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Evaluating Inheritanceand Coupling Metrics]]></article-title>
<source><![CDATA[International Journal of Engineering Trends and Technology]]></source>
<year>2013</year>
<volume>4</volume>
<numero>7</numero>
<issue>7</issue>
<page-range>2903-2908</page-range></nlm-citation>
</ref>
<ref id="B4">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gary]]></surname>
<given-names><![CDATA[F.]]></given-names>
</name>
</person-group>
<source><![CDATA[Measurement Theory for Software Engineers]]></source>
<year>2010</year>
</nlm-citation>
</ref>
<ref id="B5">
<nlm-citation citation-type="">
<collab>IEEE</collab>
<source><![CDATA[IEEE Standard Glossary of Software Engineering Terminology: IEEE Std 610.12-1990]]></source>
<year>1990</year>
<page-range>1-84</page-range></nlm-citation>
</ref>
<ref id="B6">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Pinto]]></surname>
<given-names><![CDATA[A.]]></given-names>
</name>
</person-group>
<source><![CDATA[Interface inheritance vs Implementation inheritance]]></source>
<year>2015</year>
</nlm-citation>
</ref>
<ref id="B7">
<nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Suze]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Properties of software measures]]></article-title>
<source><![CDATA[Software Quality Journal]]></source>
<year>1992</year>
<volume>1</volume>
<numero>4</numero>
<issue>4</issue>
<page-range>225-260</page-range></nlm-citation>
</ref>
<ref id="B8">
<nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Suze]]></surname>
<given-names><![CDATA[H.]]></given-names>
</name>
</person-group>
<source><![CDATA[Properties of Object-Oriented Software Measures]]></source>
<year>1995</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
