Marco (a veces marco ; anglicismo , neologismo de marco - esqueleto , marco, marco, estructura) - una plataforma de software que determina la estructura de un sistema de software; software que facilita el desarrollo y la integración de diferentes componentes de un gran proyecto de software.
La palabra "marco" también se usa, y algunos autores la usan como la principal, incluso sin basarse en absoluto en el análogo inglés [1] [2] [3] . También puede hablar sobre el enfoque de marco [3] como un enfoque para crear programas, donde cualquier configuración de programa se construye a partir de dos partes:
"Framework" difiere del concepto de biblioteca en que una biblioteca se puede usar en un producto de software simplemente como un conjunto de subrutinas de funcionalidad similar, sin afectar la arquitectura del producto de software y sin imponerle ninguna restricción. Si bien el "marco" dicta las reglas para construir la arquitectura de la aplicación, establece el comportamiento predeterminado en la etapa inicial de desarrollo: el "marco", que deberá expandirse y cambiarse de acuerdo con los requisitos especificados. Un marco de software de ejemplo es CMF ( Content Management Framework ) y una biblioteca de ejemplo es un módulo de correo electrónico .
Además, a diferencia de una biblioteca, que combina un conjunto de funciones similares, un "marco" puede contener una gran cantidad de bibliotecas de diferentes temas.
La diferencia clave entre un "marco" y una biblioteca es la inversión de control : el código de usuario llama a las funciones (o clases) de la biblioteca y toma el control después de la llamada. En el "marco", el código de usuario puede implementar un comportamiento específico que está incrustado en el código "abstracto" más general del marco. En este caso, el "marco" llama a las funciones ( clases ) del código de usuario [4] .
Este es el marco de un sistema de software (o subsistema). Puede incluir: programas de utilidad, bibliotecas de código, lenguaje de secuencias de comandos y otro software que facilita el desarrollo y la integración de diferentes componentes de un gran proyecto de software. Por lo general, la asociación se produce mediante el uso de una única API .
Ejemplos: frameworks web como Zend Framework, Laravel o Symfony PHP frameworks , o Django escrito en Python .
Una de las principales ventajas de usar aplicaciones "wireframe" es la estructura "estándar" de la aplicación. Los "marcos" se hicieron populares con la llegada de las interfaces gráficas de usuario , que tendían a implementar un marco estándar para las aplicaciones. Con su uso, se hizo mucho más fácil crear herramientas para crear interfaces gráficas automáticamente , ya que la estructura de la implementación interna del código de la aplicación se conoció de antemano. Las técnicas de programación orientada a objetos se utilizan normalmente para proporcionar un marco (por ejemplo, las partes de una aplicación se pueden heredar de las clases base del marco).
Uno de los primeros frameworks de aplicaciones comerciales fue MacApp , escrito por Apple para el " Macintosh ". Originalmente creado con una versión extendida (orientada a objetos) del lenguaje " Object Pascal ", posteriormente fue reescrito en " C++ ". Otros marcos populares de "Macintosh" incluyen:
En diversos grados, los marcos de aplicación son " Cocoa " para Mac OS X , así como los marcos de trabajo gratuitos que existen como parte de los proyectos de Mozilla , OpenOffice.org , GNOME y KDE .
Microsoft ha creado un producto similar para " Windows " llamado Microsoft Foundation Classes (MFC). Actualmente, el producto estrella de Microsoft para el desarrollo de software es " .NET ".
Los frameworks de aplicaciones multiplataforma (para sistemas operativos Linux , Macintosh y Windows) son, por ejemplo, widget toolkit , wxWidgets , Qt , .NET , MyCoRe o FOX toolkit .
Un concepto abstracto de estructura que se utiliza en la investigación para identificar posibles formas de resolver un problema o representar una idea.
Un "marco" se define como un conjunto de clases concretas y abstractas y definiciones de cómo interactúan. Las clases concretas normalmente implementan relaciones mutuas entre clases. Las clases abstractas son puntos de extensión donde se pueden usar o adaptar marcos.
Un punto de extensión es esa "parte" del marco para el que no se proporciona implementación. En consecuencia, el marco de un modelo conceptual consta de clases conceptuales , y el marco de un sistema de software consta de clases de un lenguaje de programación de propósito general.
El proceso de creación de un marco consiste en seleccionar un subconjunto de las tareas del problema y sus implementaciones. En el curso de las implementaciones, las herramientas generales de resolución de problemas están contenidas en clases concretas y las herramientas mutables se trasladan a puntos de extensión.