Un framework: es un conjunto estandarizado de conceptos, prácticas y criterios para enfocar un tipo de problemática particular que sirve como referencia, para enfrentar y resolver nuevos problemas de índole similar. En el desarrollo de software, un framework es una estructura conceptual y tecnológica de asistencia definida, normalmente, con artefactos o módulos concretos de software, que puede servir de base para la organización y desarrollo de software. Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado, entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto. Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio, y provee una estructura y una especial metodología de trabajo, la cual extiende o utiliza las aplicaciones del dominio Conjunto de clases cooperativas que construyen un diseño reutilizable para un tipo específico de software. Un Framework proporciona la arquitectura partiendo el diseño en clases abstractas y definiendo sus responsabilidades y colaboraciones. Un desarrollador realiza una aplicación haciendo subclases y componiendo instancias a partir de las clases definidas por el Framework. Un framework es una aplicación semi-completa, de control invertido, así un Framework difiere de una librería de clases: En una librería de clases, el control del flujo se encuentra en el código de la aplicación que realiza llamadas a los métodos de la librería de clases En un framework, el control del flujo está en código del framework que realiza llamadas al código de la aplicación (control invertido) DEFINICION: Una colección de bibliotecas diferentes juntas para proporcionar un conjunto de código general reutilizable que entonces se puede personalizar para una aplicación específica. Bueno, en sistemas de computación, un framework a menudo es una estructura en capas, indicando el tipo de programas que pueden o deben ser construidos y cómo se interrelacionan. Algunas estructuras de sistemas informáticos también incluyen programas reales, especifican interfaces de programación o ofrecen herramientas de programación para utilizar los frameworks. Concepto de IDE: ¿Qué es lo primordial para el desarrollo de software? Sí, un editor de texto. Pero el editor de texto no ofrece ninguna otra ventaja como autocorrección, auto-completar inteligente o plantillas. De ahí viene el IDE – que es una sigla en inglés: Integrated Development Environment – un editor de texto con soporte adicional para el desarrollo, compilación y depuración de aplicaciones. Históricamente, un IDE es simplemente una evolución (monstruosamente mutada) de un editor de texto mismo. IDEs modernos también incluyen (muchas muchas) otras herramientas. Para ser considerado un IDE, el ambiente debe al menos incluir un editor de texto (para escribir el programa), alguna herramienta de gestión de proyecto y compilación permitiendo ejecutar el programa sin dejar el IDE. También debe incluir herramientas de depuración, cobertura de código, administración de versiones, menús automatizados y herramientas de documentación, editores gráficos, refactorización, asistentes y muchas, muchas otras herramientas útiles. Aún es posible escribir programas sin IDE, aunque no es más común. De cualquier forma sería necesario usar un puñado de programas separados: un compilador, un editor de texto, un generador de archivos, etc, etc … Un IDE o un entorno integrado de desarrollo es un conjunto de aplicaciones, típicamente consistentes en un editor de código, un compilador, un depurador y una interfaz gráfica que puede o no ofrecer un entorno amigable a un framework. Como ejemplos tenemos: Delphi, Dreamweaver, Frontpage, HTML 5 Builder, Eclipse, Visual Studio, NetBeans e IntelliJ., Y etc. Dentro del Scriptcase podemos citar la Aplicación Blank como ejemplo de un IDE, esta aplicación está integrada con el ambiente de desarrollo del Scriptcase. Dentro de ella es posible escribir código PHP, Javascript, HTML, CSS … Además de acceder macros y bibliotecas internas del Scriptcase, documentación, etc. La ventaja de utilizar este tipo de aplicación en lugar de crear un programa PHP manualmente, fuera del Scriptcase o con otro IDE, es la posibilidad del uso de las herramientas disponibles, así como la integración nativa con el control de acceso de los sistemas creados dentro del ambiente del Scriptcase. En resumen, y por lo tanto, tenemos, RAD como una metodología que puede ser usada por varios entornos de desarrollo (de ahí el término “herramientas RAD”), o sea herramientas que se basan en el concepto de desarrollo rápido (como el Scriptcase); Frameworks que son un conjunto bibliotecas, funciones, clases y objetos reutilizables que ayudan a ahorrar tiempo y organizar el desarrollo y las IDEs que simplemente traen un conjunto de aplicaciones para integrar todo lo necesario para el desarrollo.