Un paquete de software es un grupo de programas que se agrupan para cumplir un propósito común. A menudo, un paquete de software también incluirá el código fuente que creó los programas ejecutables, así como una variedad de documentación para los programas en sí. Algunos paquetes de software también incluirán archivos de ejemplo que pueden ilustrar mejor cómo funcionan los otros componentes del paquete.
Los componentes de un paquete de software pueden hacer cosas significativamente diferentes, pero todos los componentes del paquete se unen en un todo unificado. Algunos paquetes de software tienen un programa principal que encapsula todos los programas más pequeños, mientras que otros adoptan un enfoque más fragmentado y tienen varios ejecutables pequeños y especializados para diferentes propósitos. Hay ventajas y desventajas en cada enfoque, así como públicos específicos que se benefician de cada uno.
Los paquetes que encapsulan toda su funcionalidad en un programa grande son útiles para la mayoría de los usuarios de computadoras. Por lo general, son fáciles de instalar, relativamente fáciles de entender y bastante fáciles de ejecutar. A veces, un usuario puede descargar complementos para ellos, pero todo esto se hace entre bastidores con una interacción y un esfuerzo mínimos por parte de ese usuario. Los paquetes de software todo en uno como estos están disponibles para muchos propósitos, desde la gestión de documentos hasta el modelado 3D y la representación de imágenes.
Un paquete de software que mantiene su funcionalidad más fragmentada suele estar dirigido a usuarios más expertos en informática. Estos paquetes suelen tener herramientas de línea de comandos, junto con una amplia documentación y capacidades altamente flexibles. Los cambios en estos paquetes generalmente se deben realizar manipulando estructuras de directorios sin formato o descargando por completo una nueva versión del paquete. Los complementos no son tan comunes para estos tipos de paquetes. Los paquetes de software agrupados como estos suelen estar dirigidos a académicos e ingenieros, con fines tales como el análisis de datos biológicos y la creación de nuevos programas de software.
Algunos paquetes de software contienen código completamente único, mientras que otros incorporan programas existentes para combinar la funcionalidad de los algoritmos existentes. El debate entre estas dos metodologías está en curso. Algunos programadores prefieren escribir su propio código para todo y otros prefieren vincular varios programas existentes. Existen muchos paquetes que utilizan cada tipo de marco, y cualquiera de las dos metodologías se puede utilizar para crear un paquete de software exitoso.
Con la expansión del movimiento del software de código abierto, cada vez más programas, algoritmos y paquetes de software se han vuelto gratuitos para usar en software nuevo sin preocupaciones de licencia. En los campos científicos, por ejemplo, se publican muchos algoritmos y programas nuevos con la expectativa de que se utilicen libremente no solo para el análisis, sino también para crear nuevos programas. Un nuevo paquete de software puede construirse o modelarse fácilmente a partir de uno anterior, y este intercambio de conocimientos se ha convertido en un instrumento fundamental para el desarrollo de software.