Please use this identifier to cite or link to this item: https://rinacional.tecnm.mx/jspui/handle/TecNM/4431
Title: Re-Factorización De Código Para Reducir El Acoplamiento Entre Clases Relacionadas Por Herencia De Implementación En Arquitecturas Orientadas A Objetos
Authors: Ortiz Gutierrez, Orlando%887345
Issue Date: 2020-06-15
Publisher: Tecnológico Nacional de México
metadata.dc.publisher.tecnm: Centro Nacional de Investigación y Desarrollo Tecnológico
Description: La programación orientada a objetos es un paradigma de programación que utiliza objetos de datos para desarrollar sistemas de software. Se basa en técnicas como la herencia, abstracción y polimorfismo, con la finalidad de crear software de calidad. Además, se apoya en el uso de principios de diseño de software, como lo son los principios de “Abierto-Cerrado” y el de “Inversión de Dependencias”. En los sistemas de software se pueden encontrar Marcos de Aplicaciones Orientados a Objetos (MAOO), cada marco es un conjunto de clases que trabajan colaborativamente para ofrecer soluciones a problemas específicos y servicios dentro de un mismo dominio de aplicaciones. Al utilizar un MAOO se suelen reducir los tiempos de desarrollo de un sistema de software, ya que, si se tiene uno para cumplir con una tarea específica, dicha función se puede reusar para otro sistema sin tener que modificar el código original del MAOO, siempre que se respeten los principios de diseño de software. Si un MAOO no cumple con los principios de diseño se suelen producir unidades de programa con poca reusabilidad y con un alto costo en su mantenimiento. Uno de los problemas que se presenta al no respetar los principios de diseño de software es la herencia de implementación la cual viola dos principios de diseño importantes, el principio de “Abierto-Cerrado” y el principio de “Inversión de Dependencias”. La herencia de implementación es una relación donde una subclase hereda la implementación funcional de un método de su clase base (Pinto, 2015). Esta herencia de implementación hace que aumente el acoplamiento y disminuya la flexibilidad entre clases, ya que, las subclases dependen de las clases base para poder realizar alguna función, impidiendo satisfacer las demandas funcionales requeridas por nuevas aplicaciones desarrolladas a partir de éstas, por mecanismos de herencia, integración, ensamble y/o composición de componentes reusables. Para resolver este problema se propone un método de refactorización denominado “Reducción de Herencia de Implementación” el cual consiste en invertir las llamadas directas de código de cliente a código de librerías (call forward) por llamadas de código de librerías hacia código de cliente (call back). A pesar de que el acoplamiento por herencia de implementación es un problema existente, no se tiene una forma de medir el grado en que afecta a los MAOO. Por este motivo 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 métricas restantes son para medir el factor de flexibilidad, estas son: Factor de Flexibilidad de Clase (FFC) y Factor Medio de Flexibilidad de Clases(FMFC). Se presentan dos casos de estudio en donde se realiza el cálculo del conjunto de métricas definido y se aplica el método de “Reducción de Herencia de Implementación”. Además, se muestran las ventajas que se obtienen al aplicar este método de refactorización a los marcos orientados a objetos.
metadata.dc.type: info:eu-repo/semantics/masterThesis
Appears in Collections:Tesis de Maestría en Computación

Files in This Item:
File Description SizeFormat 
MC_Orlando_Ortiz_Gutierrez_2020.pdfTesis2.86 MBAdobe PDFView/Open
MC_Orlando_Ortiz_Gutierrez_2020.pdf
  Restricted Access
Cesión de derechos147.9 kBAdobe PDFView/Open Request a copy


This item is protected by original copyright



This item is licensed under a Creative Commons License Creative Commons