Anlisis comparativo de Patrones de Diseo de Software
Comparative Analysis of Software Design Patterns
Anlise Comparativa de Padres de Projeto de Software
Correspondencia: oscar.gavilanez@espoch.edu.ec
Ciencias Tcnicas y Aplicadas
Artculo de Investigacin
* Recibido: 23 de mayo de 2022 *Aceptado: 12 de junio de 2022 * Publicado: 28 de julio de 2022
I. Ingeniero en Sistemas, Magster en Interconectividad de Redes, Docente Investigador Escuela Superior Politcnica de Chimborazo (ESPOCH), Riobamba, Ecuador.
II. Ingeniera en Sistemas Informticos, Magster en Informtica Educativa, Docente Investigador Escuela Superior Politcnica de Chimborazo (ESPOCH), Riobamba, Ecuador.
III. Ingeniero en Sistemas Informticos, Magster en Interconectividad de Redes, Docente Investigador Escuela Superior Politcnica de Chimborazo (ESPOCH), Riobamba, Ecuador.
Resumen
Los patrones de diseo brindan soluciones a problemas que se presentan durante el desarrollo de software, evitan duplicaciones de cdigo y facilitan su reutilizacin. En el presente artculo se detallan la estructura, componentes, ventajas y desventajas de los patrones de diseo: Template Method, Model-View-Controller, Model-View-Presenter, Model Front Controller y Model-View-View-Model MVVM. La investigacin se realiz a travs de una revisin bibliogrfica en bases de datos cientficas y consecuentemente se determinaron las mtricas que permitieron comparar los patrones en estudio. Mediante el anlisis comparativo de mtricas y parmetros entre los patrones se establece que no existe un patrn superior a nivel general, pues cada patrn tiene su propsito definido y el desarrollador de software es quien debe identificar cuando un patrn se adapta mejor a la solucin que desea desarrollar. Se concluye que los patrones de diseo son estructuras bien definidas que permiten mantener una lgica de organizacin en el cdigo de un sistema, gracias a esto se puede crear software de calidad, con ms facilidad de mantenimiento y con una mejor comprensin del cdigo al buscar modularidad en el sistema.
Palabras Clave: Patrones de diseo; patrones arquitectnicos; software; modelo plantilla; MVC; MVP; controlador frontal; MVVM.
Abstract
Design patterns provide solutions to problems that arise during software development, avoid code duplication, and facilitate code reuse. This article details the structure, components, advantages and disadvantages of the design patterns: Template Method, Model-View-Controller, Model-View-Presenter, Model Front Controller and Model-View-View-Model MVVM. The research was carried out through a bibliographical review in scientific databases and consequently the metrics that allowed comparing the patterns under study were determined. Through the comparative analysis of metrics and parameters between the patterns, it is established that there is no superior pattern at a general level, since each pattern has its defined purpose and the software developer is the one who must identify when a pattern is best suited to the solution he wants. develop. It is concluded that design patterns are well-defined structures that allow maintaining an organization logic in the code of a system, thanks to this, quality software can be created, with easier maintenance and with a better understanding of the code when looking for modularity. in the system.
Keywords: Design patterns; architectural patterns; software; template model; MVC; MVP; front controller; MVVM.
Resumo
Padres de projeto fornecem solues para problemas que surgem durante o desenvolvimento de software, evitam a duplicao de cdigo e facilitam a reutilizao de cdigo. Este artigo detalha a estrutura, componentes, vantagens e desvantagens dos padres de projeto: Template Method, Model-View-Controller, Model-View-Presenter, Model Front Controller e Model-View-View-Model MVVM. A pesquisa foi realizada por meio de reviso bibliogrfica em bases de dados cientficas e consequentemente foram determinadas as mtricas que permitiram comparar os padres em estudo. Atravs da anlise comparativa de mtricas e parmetros entre os padres, estabelece-se que no existe um padro superior em nvel geral, pois cada padro tem seu propsito definido e o desenvolvedor de software quem deve identificar quando um padro mais adequado para a soluo que ele quer desenvolver. Se concluye que los patrones de diseo son estructuras bien definidas que permiten mantener una lgica de organizacin en el cdigo de un sistema, gracias a esto se puede crear software de calidad, con ms facilidad de mantenimiento y con una mejor comprensin del cdigo al buscar modularidad no sistema.
Palavras-chave: Padres de design; padres arquitetnicos; Programas; modelo de modelo; MVC; MVP; controlador frontal; MVVM.
Introduccin
El gran crecimiento del sector de las tecnologas de la informacin ha hecho que las prcticas de desarrollo de software evolucionen. Anteriormente se requera completar todo el software antes de realizar pruebas, lo que supona encontrarse con problemas. Para ahorrar tiempo y evitar volver a la etapa de desarrollo una vez que ste ha finalizado, se introdujo una prctica de prueba durante la fase de desarrollo. Esta prctica se usa para identificar condiciones de error y problemas en el cdigo que pueden no ser evidentes en ese momento.
Con la llegada del desarrollo de software, los profesionales en este campo han buscado una solucin para disminuir la complejidad presente en el mantenimiento y organizacin del cdigo. A travs de la experiencia y el anlisis de distintos sistemas informticos se ha observado una serie repetitiva de elementos que son necesarios para el desarrollo de un sistema, al abstraer estos elementos, se da origen a los patrones de diseo.
Un patrn de diseo es una tcnica para resolver problemas simples y comunes que se encuentran en la vida diaria del desarrollo de software, sobretodo constituye una solucin respecto al desarrollo de interacciones o interfaces. Se puede definir un patrn como un modelo que explica cmo resolver un determinado problema en el desarrollo de software, no consiste en un conjunto de herramientas que se implementan en el cdigo de una aplicacin para resolver el problema. Un patrn es un concepto, es el razonamiento lgico que existe para resolver determinado problema. Aprender a implementar patrones de diseo permite tener el conocimiento para resolver todo tipo de problemas utilizando principios del diseo orientado a objetos.
Con el desarrollo de nuevos patrones, el abanico de posibilidades para estructurar un aplicativo se ha expandido, a tal punto de encontrarse con modelos poco usados o conocidos en la industria de desarrollo. Tener una amplia gama de patrones permite al profesional escoger aquel que mejor se adece a la realidad del sistema, sin embargo, se puede volver complicado comprender las peculiaridades de cada uno, dificultando su proceso de seleccin. En definitiva, los patrones de diseo aseguran la validez del cdigo, ya que son soluciones que funcionan y han sido probados por muchos desarrolladores siendo menos propensos a errores.
Los patrones de diseo de software permiten afrontar proyectos de forma eficiente, puesto que ayudan a elegir opciones de diseo que hacen que un sistema sea reutilizable, adems, mejoran sustancialmente el proceso de documentacin y mantenimiento.
El artculo documenta un anlisis comparativo para evaluar las caractersticas de cinco patrones de diseo de software: Template Method (Modelo Plantilla), Model-View-Controller (Modelo Vista Controlador MVC), Model-View-Presenter (Modelo Vista Presentador MVP), Model Front Controller (Modelo Controlador Frontal) y Model-View-ViewModel (Modelo Vista Vista Modelo MVVM).
Revisin de la literatura
Patrones de Diseo
Se entiende por patrn de arquitectura de software a aquellas reglas que determinan el contexto bajo el cual se llevar a cabo el desarrollo, estas reglas tienen comof inalidad la obtencin de las caractersticas esperadas del software en cuestin. Los patrones arquitectnicos de software definen un enfoque especfico para el manejo de alguna caracterstica de comportamiento del sistema [1].
Un patrn de diseo es una solucin estndar a un problema, los patrones de diseo definen y organizan un vocabulario de elementos bsicos en un conjunto de componentes y conectores de tal manera que se garanticen una adecuada composicin de los elementos que lo conforman segn el esquema de organizacin asociado [2].
Si al querer desarrollar una aplicacin robusta y fcil de mantener sabemos cumplir con ciertas reglas podemos usar patrones de diseo que son recomendables, pero no obligatorios. Esto debido a que se establece un lenguaje comn entre el equipo de desarrollo; los patrones de diseo estn ampliamente documentados y testados y ayudarn a todo el equipo a comprender lo implementado, cmo y por qu.
Entre los beneficios que ofrecen los patrones se puede mencionar: reduccin de tiempos, disminucin del esfuerzo de mantenimiento, aumento de la eficiencia, aseguramiento de la consistencia, aumento de la fiabilidad y proteccin de la inversin en desarrollos.
Existen diferentes tipos de patrones de arquitectura cada una con sus particularidades, mismas que muchas de las veces propician el nombre a stos, entre los ms distinguidos se encuentran:
- Template Method
- Model-View-Controller MVC
- Model-View-Presenter MVP
- Model Front Controller
- Model-View-View-Model MVVM
A) Patrn Template Method - Modelo Plantilla
El cdigo duplicado es el gran enemigo del cdigo limpio. Existe un amplio abanico de recursos para interntar eliminar este problema. Algunos patrones de diseo tienen el objetivo de evitar que el cdigo se duplique y que se pueda aplicar buenas prcticas de programacin.
Template Method es un patrn que define el esqueleto de un algoritmo en una operacin, difiriendo algunos pasos a las subclases. Template Method permite a las subclases redefinir ciertos pasos de un algoritmo sin cambiar la estructura de este [3].
Es un patrn de diseo de comportamiento donde se define el esqueleto de un algoritmo en la superclase, mientras que, las subclases pueden sobrescribir los pasos del algoritmo sin la necesidad de cambiar su estructura. Es un patrn de diseo de comportamiento donde se define el esqueleto de un algoritmo en la superclase, mientras que, las subclases pueden sobrescribir los pasos del algoritmo sin la necesidad de cambiar su estructura [4].
El objetivo del patrn Template Method nace de la necesidad de extender determinados comportamientos dentro de un mismo algoritmo por parte de diferentes entidades. Es decir, diferentes entidades tienen un comportamiento similar pero que difiere en determinados aspectos puntuales en funcin de la entidad concreta [2].
El patrn Template Method tiene como objetivos [5]:
- Proporcionar un esqueleto para un mtodo permitiendo que las subclases redefinan partes especficas del mtodo.
- Centralizar las partes de un mtodo que se definen en las subclases, pero que poseen una mnima diferencia en cada subclase.
- Controlar las operaciones, mismas que deben ser redefinidas en las subclases.
La figura 1 muestra los componentes que forman parte del patrn de diseo de comportamiento Template Method [5].
Figura 1. Estructura Template Method
- Clase Abstracta: En esta clase se declaran mtodos, lo cuales actan como pasos de un algoritmo y tambin el propio mtodo templateMethod(), el cual invoca a los otros mtodos en un orden especfico. Los pasos que se coloquen pueden ser declarados como abstractos o disponer de una implementacin por defecto.
- Clases Concretas: Estas clases pueden sobrescribir todos los pasos declarados anteriormente en la clase abstracta, pero no el mtodo templateMethod().
a) Ventajas
- Evita duplicacin de cdigo: Se puede obtener un cdigo sin duplicaciones, dado que, el cdigo que vara entre las distintas subclases permanece en cada una.
- Cdigo reutilizable: Se puede reutilizar el cdigo, ya que utiliza herencia.
- Es fcil de entender e implementar: El patrn es fcil de utilizar y adems proporciona un cdigo legible.
- Flexible: Es flexible porque el patrn permite que las subclases decidan cmo implementar los pasos del algoritmo.
b) Desventajas
- Comprender y depurar la secuencia de flujo del patrn puede ser confuso, ya que puede darse el caso de que se implemente un mtodo que no deba implementarse, o, a su vez, no implementar un mtodo abstracto.
- Realizar el mantenimiento del framework plantilla puede resultar difcil, porque al realizar cambios, ya sean, de alto o bajo nivel pueden afectar en la implementacin.
- Debido a que el patrn aplica un diseo en particular, algunos desarrolladores pueden verse limitados a la hora de programar.
El patrn Template Method es aconsejable en los siguientes supuestos [6]:
Cuando se cuenta con un algoritmo aplicable a varias situaciones, cuya implementacin difiere nicamente en algunos pasos.
Arquitecturas donde los pasos de un proceso estn definidos (el qu), pero sea necesario establecer los detalles sobre cmo realizarlos (el cmo).
Mdulos en los que exista una gran cantidad de cdigo duplicado que pueda ser factorizado en pasos comunes
B) Model-View-Controller MVC
El MVC es un patrn de diseo arquitectnico de software, que sirve para clasificar la informacin, la lgica del sistema y la interfaz que se le presenta al usuario. En este tipo de arquitectura existe un sistema central o controlador que gestiona las entradas y la salida del sistema, uno o varios modelos que se encargan de buscar los datos e informacin necesaria y una interfaz que muestra los resultados al usuario final [7].
El patrn Model View Controller posee los siguientes componentes [8]:
- Modelo: este componente se encarga de manipular, gestionar y actualizar los datos. Si se utiliza una base de datos aqu es donde se realizan las consultas, bsquedas, filtros y actualizaciones.
- Vista: este componente se encarga de mostrarle al usuario final las pantallas, ventanas, pginas y formularios; el resultado de una solicitud. Desde la perspectiva del programador este componente es el que se encarga del frontend; la programacin de la interfaz de usuario si se trata de una aplicacin de escritorio, o bien, la visualizacin de las pginas web (CSS, HTML, HTML5 y Javascript).
- Controlador: este componente se encarga de gestionar las instrucciones que se reciben, atenderlas y procesarlas. Por medio de l se comunican el modelo y la vista: solicitando los datos necesarios; manipulndolos para obtener los resultados; y entregndolos a la vista para que pueda mostrarlos. La figura 2 muestra la estructura del patrn MVC
Figura 2. Estructura del patrn MVC
Las ventajas y desventajas que presenta el patrn modelo vista controlador [3] son:
a) Ventajas
- Separa las componentes (interfaz de usuario lgica de negocio acceso a datos) y permite la implementacin de cada uno por separado, por lo tanto, en caso de que algn componente falle se puede modificar fcilmente.
- Se puede construir varias vistas para un nico modelo sin necesidad de modificarlo
- Facilidad para la realizacin de pruebas unitarias
- Muchos frameworks utilizan este patrn como parte de su arquitectura.
- Permite controlar de mejor manera los recursos del servidor, evita errores que puedan repercutir en el rendimiento.
b) Desventajas
- Es necesario el desarrollo de una gran cantidad de clases, ya que normalmente para cada entidad se construye un controlador.
- Su implementacin es difcil si se realiza desde un lenguaje que no es compatible con el paradigma orientado a objetos.
- La separacin en capas hace que la aplicacin sea ms compleja.
- Curva de aprendizaje alta.
C) Model-View-Presenter MVP
MVP es un patrn arquitectnico para la capa de presentacin de las aplicaciones software. El patrn fue desarrollado por Taligent en la dcada de 1990 y se implement por primera vez en los lenguajes de programacin C++ y Java. MVP se basa en los principios del patrn Modelo-Vista-Controlador (MVC) desarrollado por Xerox PARC a finales de 1970. La figura 3, muestra los componentes del MVP [10].
Figura 3. Componentes MVC
- El modelo: es el componente que almacena los datos y la lgica de negocio; slo expone un conjunto de interfaces de programacin para conectarse con el presentador, es decir, oculta los detalles internos de implementacin.
- La vista: es la interfaz de usuario, que se encarga de recibir peticiones del usuario, las misma son transportadas al presentador para ser procesadas y finalmente el resultado es presentado por las vistas mediante interfaces de programacin.
- El presentador: es el componente intermediario entre la vista y el modelo; recibe las peticiones del usuario e invoca mtodos para extraer informacin del modelo. A continuacin, obtiene el resultado y actualiza la vista.
Las ventajas del patrn Model View Presenter [11] son:
- Existe un bajo acoplamiento entre el modelo y la vista. Eso significa que, si el modelo o la vista se cambian, no se necesita realizar ms modificaciones. Esto representa flexibilidad en la arquitectura.
- El presentador ignora cualquier tecnologa para el diseo detrs de la vista, permitiendo la sustitucin de tecnologas sin afectar al resto de la arquitectura.
- La vista y el modelo pueden ser testeados de manera independiente. De manera tradicional es imposible probar la vista o el componente de lgica de negocio de manera independiente por el acoplamiento que existe entre los dos. En consecuencia, las pruebas unitarias para la vista o el componente de lgica de negocio son difciles. Todos estos problemas se resuelven con el patrn MVP, debido a que no hay dependencia directa entre la vista y el modelo. Por esa razn, el desarrollador puede utilizar un objeto falso para inyectar en la vista o el modelo para que puedan ser probados por uno mismo.
Entre las desventajas [12] se pueden mencionar:
- Es compleja su implementacin, por lo tanto, es importante que el desarrollar tenga el conocimiento tcnico.
- No es adecuado para soluciones simples y pequeas
D) Model Front Controller
El Front Controller es un patrn de diseo fcil de entender en el que tiene un controlador principal que maneja cada solicitud de un sitio web. Es un patrn de diseo de uso comn para muchas aplicaciones web basadas en MVC. Para usar el patrn de controlador frontal, debe tener una sola parte de su sitio web que sea completamente responsable de manejar todas las solicitudes entrantes a su sitio/aplicacin. A menudo (pero no siempre) funcionar con un sistema de enrutamiento y plantillas para devolver una respuesta relevante a la solicitud [6].
Front Controller es un patrn de diseo que se centra en el manejo de peticiones, usando como punto inicial un controlador que realiza la gestin de solicitudes, entre las gestiones que efecta se encuentran: comprobacin de seguridad, manejo de errores, mapeo y delegacin de solicitudes a los dems componentes de la aplicacin, y as poder trabajar en una vista adecuada para los usuarios [13].
Componentes que forman parte del patrn de diseo Front Controller [14]:
- Controller: es el punto central donde se procesan y se gestionan las peticiones dentro del sistema. Existe funciones que pueden ser delegadas al asistente como: completar la autenticacin, iniciar la recuperacin de contacto o brindar autorizaciones a los usuarios.
- Dispatcher: se encarga de gestionar la vista y navegacin, brindando el mecanismo para el control de la siguiente vista que se quiera mostrar.
- Helper: ayuda al controlador y a la vista a terminar su procesamiento, poseen varias responsabilidades y pueden adaptar el modelo de datos para que la vista pueda usarla.
En la figura 4 se observa cmo se estructura el patrn de diseo Front Controller.
Figura 4. Estructura del patrn Front Controller
Las ventajas que presenta el patrn Front Controller [15] son las siguientes:
- Existe una mejora significativa en la manejabilidad de la seguridad, ya que, proporciona una barrera para controlar los intentos de acceso ilcitos en la aplicacin.
- Es posible reutilizar cdigo, ya que, el controlador proporciona el espacio para el particionamiento limpio de la aplicacin, tomando en cuenta que el cdigo entre componentes puede ser comn.
- Evita tener distribuida la gestin de peticiones, con lo cual, las aplicaciones diseadas en base al patrn Front Controller no sern categorizadas como de baja calidad.
- No limita el nmero de controladores en el sistema como lo hacen otros patrones.
Segn [16] Front Controller posee las siguientes ventajas:
Control centralizado: el controlador frontal maneja todas las solicitudes a la aplicacin web. Esta implementacin de control centralizado que evita el uso de mltiples controladores es deseable para hacer cumplir las polticas de toda la aplicacin, como el seguimiento y la seguridad de los usuarios.
Seguridad de subprocesos: surge un nuevo objeto de comando cuando se recibe una nueva solicitud y los objetos de comando no estn destinados a ser seguros para subprocesos. Por lo tanto, estar seguro en las clases de comando. Aunque la seguridad no est garantizada cuando se recopilan problemas de subprocesamiento, los cdigos que actan con el comando siguen siendo seguros para subprocesos
Las desventajas que se describen para el patrn Front Controller [15] son:
- Es mucho ms difcil escalar una aplicacin que trabaja con el patrn de diseo Front Controler.
- La velocidad de respuesta disminuye al tener que ser procesadas las peticiones primero por el controlador.
- Obliga a los desarrolladores a ver la aplicacin desde el mismo enfoque de los usuarios.
- Depende de la aplicacin web a partir de su entorno de alojamiento.
E) Model-View-ViewModel MVVM
El Patrn Modelo Vista Vista Modelo (MVVM en sus siglas del Ingles) permite aislar limpiamente la lgica de negocios y presentacin de una aplicacin de su interfaz de usuario (UI), permitiendo mitigar problemas de desarrollo y facilitar los procesos de prueba, mantenimiento y escalado de una aplicacin software. Por otro lado, permite reutilizar el cdigo, adems, desarrolladores y diseadores colaboran de forma eficiente al desarrollar los respectivos mdulos de una aplicacin [17].
Model View ViewModel o MVVM es un patrn de diseo desarrollado como alternativa al patrn MVC. Este patrn a diferencia de otros busca desligar a la vista del modelo con el fin de facilitar las pruebas unitarias en el sistema, manteniendo los principios generales de programacin modular [18].
Los componentes que forman parte del patrn de diseo Model View ViewModel [19] son:
- Modelo: Es el responsable del acceso a la fuente de datos y de trabajar con esos datos.
- Vista: Representa los datos de forma pertinente, reflejando el estado de los datos y recibiendo los eventos y las interacciones del usuario.
- Vista del modelo: Responsable de representar la forma en que se espera que sea una vista y como se comportar ante las interacciones que tiene con el usuario. Adems, describe el conjunto de principios y estructuras que presentan los datos recuperados del modelo. Como ltimo trabajo, es el puente de comunicacin entre el modelo y la vista. La figura 5 muestra los componentes del patrn de diseo Model View ViewModel
Figura 5. Componentes patrn de diseo Model View ViewModel
Las ventajas que presenta el patrn Model View ViewModel [20] son las siguientes:
- Facilita el mantenimiento del sistema al mantener una alta modularidad al desligar de manera directa tanto a la vista como al modelo.
- Disminuye la cantidad de cdigo escrito tanto en los componentes de la vista como del modelo.
- Facilita el proceso de pruebas unitarias de cada componente al desligar a la vista del modelo completamente.
Las desventajas que se describen para el patrn Model View ViewModel [20] son:
- Adaptarse a una estructura predefinida puede resultar complicado sobre todo para interfaces de usuario simples.
- La curva de aprendizaje para nuevos desarrolladores puede resultar ms compleja que la de otros modelos ms simples.
- La depuracin del sistema puede resultar difcil cuando se tiene enlaces de datos complejos y un extenso nmero de ficheros.
Metodologa
Para realizar el anlisis comparativo que permiti evaluar las caractersticas de los cinco patrones de diseo de software: Template Method, Model-View-Controller MVC, Model-View-Presenter MVP, Model Front Controller y Model-View-ViewModel MVVM se desarroll inicialmente la respectiva revisin bibliogrfica, la informacin acerca de cada uno de los patrones fue extrada de base de datos cientficas para localizar artculos de investigacin, tanto de fuentes primarias como secundarias.
Se introdujeron las palabras clave patrones de diseo, patrones arquitectnicos y software en el cuadro de bsqueda para generar los artculos sobre el tema, los artculos resultantes generados en la lista de bsqueda se filtraron segn el ao de publicacin y se determin la relevancia de los resultados para el tema en cuestin, seleccionando 20 artculos para la revisin.
Consecuentemente en base a las caractersticas, ventajas y desventajas de cada uno de los patrones de diseo se determinaron mtricas que permitan comparar los mismos.
Resultados y Discusin
Los patrones poseen ciertas caractersticas en comn, Template Method es un patrn de diseo de comportamiento y dems patrones de diseo estructural. Los patrones poseen propiedades bien definidas y tienen como propsito mejorar la manera de estructurar y codificar la aplicacin, por lo tanto, de los resultados obtenidos a pesar de las diferencias que poseen, se puede afirmar que no existe un patrn superior a nivel general, pues cada patrn tiene su propsito definido y el desarrollador de software es quien debe identificar cuando un patrn se adapta mejor a la solucin que desea desarrollar. La tabla 1 muestra la comparativa entre patrones de diseo de software.
Tabla 1. Comparativa entre patrones de software
Mtrica |
Template Method |
Model-View-Controller MVC |
Model-View-Presenter MVP |
Model Front Controller |
Model-View-ViewModel MVVM |
Escalabilidad de la aplicacin |
Medio |
Alto |
Alto |
Bajo |
Alto |
Mantebilidad de la aplicacin |
Medio |
Alto |
Alto |
Alto |
Alto |
Acoplamiento con los mdulos |
Medio |
Bajo |
Bajo |
Bajo |
Bajo |
Facilidad de implementacin |
Alto |
Bajo |
Bajo |
Bajo |
Bajo |
Compatibilidad con programacin modular |
Alto |
Alto |
Alto |
Alto |
Alto |
Facilidad para testing |
Alto |
Alto |
Alto |
Alto |
Alto |
Compatibildad con multiparadigmas de programacin |
Bajo |
Bajo |
Bajo |
Bajo |
Bajo |
Basado en arquitecturas multicapa |
No aplica |
Alto |
Alto |
Alto |
Alto |
Reutilizacin de cdigo |
Alto |
Alto |
Alto |
Alto |
Alto |
La definicin de parmetros para la comparativa entre patrones de diseo se muestra en la tabla 2; se describen a continuacin los parmetros:
Lenguajes de Programacin: Los patrones de diseo son independientes del lenguaje de programacin, sin embargo, se analiza este parmetro para determinar qu lenguajes de programacin son ms comunes en la utilizacin de cada patrn.
Complejidad: Permite definir cun complejo es el aprendizaje y utilizacin del patrn de diseo.
Seguridad: Determina el nivel de seguridad que proporciona el patrn al disear el software.
Uso: mbito de desarrollo de software que utiliza el patrn de diseo
Tabla 2. Comparativa entre patrones de diseo
Parmetros |
Template Method |
Model-View-Presenter MVP |
Model Front Controller |
Model-View-ViewModel MVVM |
Lenguajes de Programacin |
PHP C++ Java |
.Net Java PHP |
Java PHP Python Ruby Raku |
.Net JavaScript C++ |
Complejidad |
Baja |
Baja |
Alta |
Alta |
Seguridad |
- |
Baja |
Alta |
Baja |
Uso |
Frameworks |
Aplicaciones Android |
Frameworks Web |
Windows y Grficos Web |
Cada uno de los patrones posee caractersticas distintas entre parmetros, comparativa presentada permitir a desarrolladores escoger un patrn de diseo segn sus necesidades, pues cada patrn es fuerte en un campo distinto.
Conclusiones
El patrn Template Method facilita la reutilizacin de cdigo, por eso es fundamental en muchos Frameworks, se vuelve de especial utilidad cuando es necesario realizar un algoritmo que sea comn para muchas clases, pero con pequeas variaciones entre una y otras.
El patrn Template Method es uno de los patrones ms conocidos en el mundo de la programacin por su gran ayuda al momento de reescribir cdigo para reutilizarlo en un mismo proyecto, ayudando as optimizar el tiempo del programador y agilizando procesos para brindar un software mucho ms liviano y efectivo.
El patrn Model-View-Controller es el ms empleado en todo el mercado del desarrollo, adems, la estructura es fcil de implementar ya que solo se maneja en los componentes vista y un controlador, adems, existen muchas derivaciones de este patrn como por ejemplo MVVM, MVP entre otros. MVC requiere la existencia de una arquitectura inicial sobre la que se deben construir clases e interfaces para modificar y comunicar los mdulos de una aplicacin.
El patrn Front Controller implementa un controlador nico y lo usa como el punto inicial de contacto para manejar las peticiones. No es posible escalar una aplicacin utilizando un patrn Front Controller.
MVP permite separar la interfaz de la lgica en Android de forma sencilla evitando que las actividades terminen degradando en clases muy acopladas que consisten en cientos o incluso miles de lneas. En aplicaciones grandes, es esencial organizar bien el cdigo. De lo contrario, se hace imposible mantenerlas y extenderlas. MVP consume bastante memoria debido a que depende de los atributos, adems, crea un atributo por cualquier necesidad.
El patrn MVVM ayuda a separar la lgica de las vistas de manera que se pueda tener una alta mantenibilidad en relaciones, adems de brindarle al programador un enfoque mayor a la lgica en vez de programar las vistas a un nivel ms complejo. Se recomienda utilizar este patrn si se tiene experiencia trabajando con patrones similares como MVC, caso contrario la complejidad puede llegar a ser mayor. En MVVM no es factible la reutilizacin de cdigo en presencia de enlaces de datos bidireccionales.
Los patrones de diseo son estructuras bien definidas que permiten mantener una lgica de organizacin en el cdigo de un sistema, gracias a esto se puede crear software de calidad, con ms facilidad de mantenimiento y con una mejor comprensin del cdigo al buscar modularidad en el sistema.
Referencias
1. Pressman, R. Ingeniera del Software: Un enfoque prctico (2010). McGrawHill.
2. INGAR - Instituto de Desarrollo y Diseo, M. J. Blas, H. Leone, INGAR - Instituto de Desarrollo y Diseo, S. Gonnet, y INGAR - Instituto de Desarrollo y Diseo, Modelado y Verificacin de Patrones de Diseo de Arquitectura de Software para Entornos de Computacin en la Nube, risti, n.o 35, pp. 1-17, dic. 2019, doi: 10.17013/risti.35.1-17.
3. E. Gamma, R. Helm, R. Johnson, y J. M. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, 1994.
4. A. Shvets, Sumergete en los patrones de diseo. 2019.
5. J. E. McDonough, Object-Oriented Design with ABAP, Object-Oriented Des. with ABAP, 2017.
6. ORACLE, Core J2EE Patterns - Front Controller, 2022. https://www.oracle.com/java/technologies/front-controller.html
7. A. Sunardi y Suharjito, MVC Architecture: A Comparative Study Between Laravel Framework and Slim Framework in Freelancer Project Monitoring System Web Based, Procedia Comput. Sci., vol. 157, pp. 134-141, ene. 2019.
8. C. Giridhar, Learning Python design patterns : leverage the power of Python design patterns to solve real-world problems in software architecture and design. 2016.
9. R. Jimnez, Utilizacin de la arquitectura Modelo - Vista Controlador (MVC) en el desarrollo de una aplicacin web de catlogos privados., Ambato, 2017.
10. J. M. Keller, The MVP Model: Overview and Application, New Dir. Teach. Learn., vol. 2017, n.o 152, pp. 13-26, dic. 2017.
11. S. Paul, A. Chatterjee, y D. Guha, Study of Smart Inventory Management System Based on the Internet of Things (Iot), IJRTBT Int. J. Recent Trends Bus. Tour. |, vol. 3, n.o 3, pp. 27-34, 2019.
12. G. Carrera y J. Germania, Anlisis comparativo de la productividad entre los patrones de dieo Modelo Vista Controlador (MVC) y Modelo Vista Presentador (MVP) aplicado al desarrollo del Sistema Nmina de Empleados y Rol de Pagos de la Distribuidora Soria C.A., 2014.
13. N. Almazova, A. Rubtsova, E. Krylova, y A. Almazova-ilyina, BLENDED LEARNING AS THE BASIS FOR SOFTWARE DESIGN., 2019. [En lnea]. Disponible en: https://go.gale.com/ps/i.do?id=GALE%7CA627003485&sid=googleScholar&v=2.1&it=r&linkaccess=abs&issn=17269679&p=AONE&sw=w&userGroupName=anon~249b91cf. [Accedido: 08-jun-2022].
14. G. Santana Franco, Entorno de usuario para una aplicacin Fintech: Finbook, 2020.
15. S. Fontan Llamas, Construccin de un sitio web para KV Ingeniera de Tecnologa e Infraestructuras - Archivo Digital UPM, 2019.
16. S. Kumar, Front Controller Design Pattern, Geeks for Geeks, 2020. https://www.geeksforgeeks.org/front-controller-design-pattern/.
17. Microsoft, El patrn Model-View-ViewModel - Xamarin | Microsoft Docs, 2017. https://docs.microsoft.com/es-es/xamarin/xamarin-forms/enterprise-application-patterns/mvvm
18. G. Hurtado y H. Ramos, Implementacin de sistema Web para optimizar los procesos de negocio en la empresa MN Catering Snchez, Los Olivos - 2013, Universidad de Ciencias y Humanidades, 2017.
19. G. Arcos-Medina, J. Menndez, y J. Vallejo, Comparative Study of Performance and Productivity of MVC and MVVM design patterns, KnE Eng., vol. 1, n.o 2, p. 241, ene. 2018.
20. C. Loor, Desarrollo e implementacin de un sistema para la gestin y control de los recursos utilizados en los proyectos de investigacin de naturaleza estadstica, 2015.
2022 por los autores. Este artculo es de acceso abierto y distribuido segn los trminos y condiciones de la licencia Creative Commons Atribucin-NoComercial-CompartirIgual 4.0 Internacional (CC BY-NC-SA 4.0)
(https://creativecommons.org/licenses/by-nc-sa/4.0/).
Enlaces de Referencia
- Por el momento, no existen enlaces de referencia
Polo del Conocimiento
Revista Científico-Académica Multidisciplinaria
ISSN: 2550-682X
Casa Editora del Polo
Manta - Ecuador
Dirección: Ciudadela El Palmar, II Etapa, Manta - Manabí - Ecuador.
Código Postal: 130801
Teléfonos: 056051775/0991871420
Email: polodelconocimientorevista@gmail.com / director@polodelconocimiento.com
URL: https://www.polodelconocimiento.com/