Veuillez utiliser cette adresse pour citer ce document :
https://rinacional.tecnm.mx/jspui/handle/TecNM/4431
Titre: | Re-Factorización De Código Para Reducir El Acoplamiento Entre Clases Relacionadas Por Herencia De Implementación En Arquitecturas Orientadas A Objetos |
Auteur(s): | Ortiz Gutierrez, Orlando%887345 |
Date de publication: | 2020-06-15 |
Editeur: | 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 |
Collection(s) : | Tesis de Maestría en Computación |
Fichier(s) constituant ce document :
Fichier | Description | Taille | Format | |
---|---|---|---|---|
MC_Orlando_Ortiz_Gutierrez_2020.pdf | Tesis | 2.86 MB | Adobe PDF | Voir/Ouvrir |
MC_Orlando_Ortiz_Gutierrez_2020.pdf Accès limité | Cesión de derechos | 147.9 kB | Adobe PDF | Voir/Ouvrir Demander une copie |
Ce document est protégé par copyright |
Ce document est autorisé sous une licence de type Licence Creative Commons