Articulo de referencia

Marco de software

Un framework de software es un software que proporciona funcionalidad genérica y reutilizable que los desarrolladores pueden extender o personalizar para crear soluciones comple...

Un framework de software es un software que proporciona funcionalidad genérica y reutilizable que los desarrolladores pueden extender o personalizar para crear soluciones completas. Ofrece una capa de abstracción sobre el código y la infraestructura de bajo nivel, lo que permite a los desarrolladores centrarse en implementar la lógica de negocio en lugar de crear funcionalidades comunes desde cero. Generalmente, un framework está diseñado para mejorar la productividad al permitir a los desarrolladores centrarse en satisfacer los requisitos de negocio en lugar de reimplementar funcionalidades genéricas. [ 1 ] Los frameworks suelen incluir programas de soporte, compiladores , kits de desarrollo de software , bibliotecas de código , conjuntos de herramientas y API que integran varios componentes dentro de una plataforma o entorno de software más amplio.

A diferencia de una biblioteca , donde el código del usuario controla el flujo del programa , un framework implementa la inversión de control al dictar la estructura general y llamar al código del usuario en puntos de extensión predefinidos (por ejemplo, mediante métodos de plantilla o ganchos ). Los frameworks también proporcionan comportamientos predeterminados que funcionan de inmediato, mecanismos estructurados para la extensibilidad y un núcleo fijo que acepta extensiones (por ejemplo, complementos o subclases) sin modificaciones directas.

Un framework se diferencia de una aplicación que se puede extender —como un navegador web mediante una extensión o un videojuego mediante un mod— en que es una estructura intencionadamente incompleta diseñada para completarse a través de sus puntos de extensión, siguiendo patrones arquitectónicos específicos. Por ejemplo, un equipo que utiliza un framework web para desarrollar un sitio web bancario puede centrarse en escribir la lógica de negocio bancaria en lugar de gestionar detalles de bajo nivel como el procesamiento de solicitudes web o la gestión del estado .

Comparación con las bibliotecas

Los marcos de software se diferencian de las bibliotecas estándar en aspectos clave:

  • Inversión de control : En una biblioteca, el código del usuario controla el flujo del programa y llama a las funciones de la biblioteca según sea necesario. En un framework, el framework controla el flujo y llama al código del usuario en puntos específicos, a menudo mediante el patrón Método de Plantilla .
  • Comportamiento predeterminado: Los frameworks proporcionan funcionalidades preimplementadas (por ejemplo, características o flujos de trabajo estándar) que se pueden usar tal cual o personalizar dentro de una estructura predefinida. Las bibliotecas, en cambio, requieren código del usuario para ensamblar y configurar la funcionalidad.
  • Extensibilidad estructurada : Los frameworks permiten nuevas funcionalidades o cambios de comportamiento mediante mecanismos estructurados como hooks, callbacks o API. Las bibliotecas permiten la extensibilidad, pero sin puntos de integración predefinidos, dependiendo del código del usuario para la integración.
  • Principio de abierto/cerrado : La lógica central del marco de trabajo suele ser fija, lo que permite extensiones (por ejemplo, complementos o subclases) pero no la modificación del marco de trabajo en sí.

Patrón

Según Pree, [ 2 ] los marcos de software constan de puntos fijos y puntos activos . Los puntos fijos definen la arquitectura general de un sistema de software, es decir, sus componentes básicos y las relaciones entre ellos. Estos permanecen inalterados (fijos) en cualquier instancia del marco de la aplicación. Los puntos activos representan las partes donde los programadores que utilizan el marco agregan su propio código para añadir la funcionalidad específica de su proyecto.

La funcionalidad necesaria se puede implementar mediante el patrón Método Plantilla, donde los métodos fijos se denominan métodos invariantes y los métodos de activación se denominan métodos variantes o de enlace. Los métodos invariantes de la superclase proporcionan el comportamiento predeterminado, mientras que los métodos de enlace de cada subclase proporcionan un comportamiento personalizado.

Al desarrollar un sistema de software concreto con un marco de software, los desarrolladores utilizan los puntos críticos según las necesidades y requisitos específicos del sistema. Los marcos de software se basan en el Principio de Hollywood : "No nos llames, nosotros te llamaremos". [ 3 ] [ 4 ] Esto significa que las clases definidas por el usuario (por ejemplo, nuevas subclases) reciben mensajes de las clases predefinidas del marco. Los desarrolladores suelen manejar esto implementando métodos abstractos de superclase .

Compensaciones

Una posible desventaja de usar un framework es que aumenta el tamaño del programa, un fenómeno conocido como sobrecarga de código . Esto puede agravarse al usar varios frameworks, a veces incompatibles, en el mismo código fuente.

Aprender a usar un framework puede ser un proceso complejo. Las ventajas previstas de su uso pueden verse contrarrestadas por el costo de aprendizaje, especialmente si se trata de un framework nuevo para el equipo de desarrollo. [ 5 ] Sin embargo, una vez que se domina un framework, la velocidad del equipo de desarrollo puede aumentar en trabajos futuros.

Algunos afirman que los marcos de trabajo más eficaces surgen de la refactorización de una solución existente, como un marco de trabajo genérico y universal desarrollado por terceros para fines generales, en lugar de un desarrollo desde cero.

Ejemplos

Un marco de trabajo generalmente se centra en un dominio problemático específico, que incluye:

Algunos marcos de trabajo destacables:

Véase también

Referencias

  1. "Framework" . DocForge . Archivado del original el 7 de octubre de 2018. Consultado el 15 de diciembre de 2008 .
  2. Pree, W (1994), "Meta Patterns: A Means for Capturing the Essentials of Reusable Object-Oriented Design", Actas de la 8.ª Conferencia Europea sobre Programación Orientada a Objetos , Lecture Notes in Computer Science, vol. 821, Springer-Verlag , pp. 150–162 , CiteSeerX 10.1.1.74.7935 , doi : 10.1007/BFb0052181 , ISBN    978-3-540-58202-1
  3. Larman, C (2001), Aplicación de UML y patrones: Introducción al análisis y diseño orientado a objetos y al proceso unificado (2.ª ed.), Prentice Hall , ISBN  978-0-13-092569-5
  4. Gamma, Erich ; Helm, Richard ; Johnson, Ralph ; Vlissides, John (1994). Patrones de diseño . Addison-Wesley. ISBN 0-201-63361-2.
  5. Fayad, Mohamed; Schmidt, Douglas C. (1997). "Object-oriented application frameworks" . Communications of the ACM . 40 (10): 32– 38. doi : 10.1145/262793.262798 . ISSN 1557-7317 . Consultado el 26 de mayo de 2026 . 
  6. Vlissides, JM; Linton, MA (1990), "Unidraw: un marco para la creación de editores gráficos específicos de dominio", ACM Transactions on Information Systems , 8 (3): 237–268 , doi : 10.1145/98188.98197 , S2CID 11248368 
  7. Johnson, RE (1992), "Documentación de marcos de trabajo mediante patrones", Actas de la conferencia sobre sistemas, lenguajes y aplicaciones de programación orientada a objetos - OOPSLA '92 , ACM Press, pp. 63–76 , doi : 10.1145/141936.141943 , ISBN  0201533723, S2CID 604969 
  8. Birrer, A; Eggenschwiler, T (1993), "Actas de la conferencia europea sobre programación orientada a objetos", Frameworks en el ámbito de la ingeniería financiera: un informe de experiencia , Springer-Verlag , pp . 21–35 
  9. Hill, C; DeLuca, C; Balaji, V; Suarez, M; da Silva, A (2004), "Arquitectura del marco de modelado del sistema terrestre (ESMF)" , Computing in Science and Engineering , 6 : 18–28 , doi : 10.1109/MCISE.2004.1255817 , S2CID 9311752 
  10. Gachet, A (2003), "Software Frameworks for Developing Decision Support Systems – A New Component in the Classification of DSS Development Tools", Journal of Decision Systems , 12 (3): 271– 281, doi : 10.3166/jds.12.271-280 , S2CID 29690836 
  • Logotipo de WikcionarioDefinición de marco de software en Wikcionario
  • Logotipo de Wikimedia CommonsContenido multimedia relacionado con marcos de software en Wikimedia Commons