Un paquete de aplicación (abreviado PPP, paquete de aplicación en inglés [1] ) o un paquete de software es un conjunto de módulos interrelacionados diseñados para resolver problemas de una determinada clase de una determinada área temática . De acuerdo con el significado de PPP, sería más correcto llamarlo paquete de módulos en lugar del término establecido paquete de software. Se diferencia de una biblioteca en que la creación de una biblioteca no pretende cubrir completamente las necesidades del área temática, ya que una aplicación puede utilizar módulos de varias bibliotecas. Los requisitos para un paquete de software son más estrictos: una aplicación para resolver un problema debe usar solo los módulos del paquete, y la creación de una aplicación específica puede estar disponible para no programadores [2] .
El enfoque del paquete se puede contrastar con la creación de un programa "universal". Tal programa puede participar en la resolución de varios problemas, mientras que en el enfoque de paquete, varios módulos del paquete se combinan para resolver un problema. La diferencia puede parecer pequeña (es posible hacer un programa “universal” a partir de un paquete de software agregando un complemento de control, o viceversa, usar algunos módulos del programa “universal” como PPP). Sin embargo, desde un punto de vista arquitectónico, PPP es más conveniente para la expansión y modificación, ya que el desarrollo de PPP puede ocurrir al agregar nuevos módulos que no afectan el rendimiento de los módulos previamente depurados [2] .
La forma más fácil de ilustrar el enfoque por lotes es con la canalización de Unix . Un sistema Unix contiene una gran cantidad de pequeños programas que realizan una función específica. En el pipeline, los programas incluidos en la cadena pueden procesar algunos datos [3] .
En algunos casos, el enfoque de la cadena se puede automatizar confiando la construcción de la cadena a las herramientas del sistema del paquete [3] . Además del mecanismo enumerativo para crear una cadena (asignación explícita de módulos incluidos en la cadena), es posible un mecanismo asociativo , en el que el módulo se incluye por medios del sistema en el programa generado en función de algún atributo. En el caso de que el usuario establezca los valores conocidos y deseados, la restauración de la cadena por medio del sistema se denomina planificación de cálculo automático . A pesar de algunas ventajas y éxitos individuales (sistemas PRIZ y SPOR), la programación de cómputo automático no ha recibido un desarrollo masivo debido a la pobreza de la cadena como guía de configuración [4] .
Con la acumulación de experiencia en programación en cualquier área temática, con el tiempo, se desarrollan ideas sobre una organización modular racional, se acumula un conjunto de módulos que no cambian mucho al pasar de una versión de programas a otra, y también hay lugares permanentes. para módulos reemplazables . Como resultado, surge una arquitectura de aplicación que consta de un componente permanente: un marco que tiene ranuras para colocar módulos reemplazables [5] . Por supuesto, los enchufes y los módulos enchufables tienen especificaciones acordadas .
Se simplifica establecer una configuración específica para el usuario. Los nidos de marcos son un reflejo de las características del problema que se está resolviendo, y los módulos reemplazables son los valores permitidos de estas características [5] .
Por ejemplo, en un marco con dos nidos de variantes , es posible describir la configuración de cálculo sin tocar el algoritmo del problema: Материал ← Алюминий, Точность ← Двойная.
A diferencia del enfoque de cadena, el enfoque de marco da más libertad en el diseño de la estructura del programa generado, que es preferible para la mayoría de las áreas temáticas [5] .
Se pueden distinguir los siguientes tipos de APP [6] :