La implementación de software son todas las actividades que hacen que un sistema de software esté disponible para su uso. [1]
El proceso general de implementación consta de varias actividades interrelacionadas con posibles transiciones entre ellas. Estas actividades pueden ocurrir en el lado del productor , en el lado del consumidor o en ambos. Debido a que cada sistema de software es único, es difícil definir los procesos o procedimientos precisos dentro de cada actividad. Por lo tanto, la "implementación" debe interpretarse como un proceso general que debe personalizarse según los requisitos o características específicos. [2]
Historia
Esta sección necesita ser ampliada . Puedes ayudar agregándole algo. ( Enero 2017 )
Cuando las computadoras eran extremadamente grandes, costosas y voluminosas ( mainframes y minicomputadoras ), los fabricantes solían incluir el software junto con el hardware. Si era necesario instalar software empresarial en una computadora existente, esto podía requerir una costosa y prolongada visita de un arquitecto de sistemas o un consultor . En la actualidad, en el caso de instalaciones complejas locales de software empresarial , esto todavía puede suceder a veces.
Sin embargo, con el desarrollo de software para el mercado masivo para la nueva era de las microcomputadoras en la década de 1980, llegaron nuevas formas de distribución de software : primero cartuchos , luego casetes compactos , luego disquetes , luego (en la década de 1990 y más tarde) medios ópticos , Internet y unidades flash . Esto significó que la implementación del software podía dejarse en manos del cliente. Sin embargo, con el tiempo también se reconoció cada vez más que la configuración del software por parte del cliente era importante y que idealmente este debería tener una interfaz fácil de usar (en lugar de, por ejemplo, requerir que el cliente edite las entradas del registro en Windows).
En las implementaciones de software anteriores a Internet, las implementaciones (y su pariente más cercano, las nuevas versiones de software) eran necesariamente asuntos costosos, poco frecuentes y voluminosos. Por lo tanto, se puede argumentar que la expansión de Internet hizo posible el desarrollo ágil de software de extremo a extremo . De hecho, la llegada de la computación en la nube y el software como servicio significó que el software podía implementarse para una gran cantidad de clientes en minutos, a través de Internet. Esto también significó que, por lo general, los cronogramas de implementación ahora los determinaba el proveedor de software, no los clientes. Esa flexibilidad llevó al surgimiento de la entrega continua como una opción viable, especialmente para aplicaciones web menos riesgosas .
La actividad de lanzamiento se deriva de la finalización del proceso de desarrollo y, en ocasiones, se clasifica como parte del proceso de desarrollo en lugar del proceso de implementación. Incluye todas las operaciones para preparar un sistema para su ensamblaje y transferencia al sistema o sistemas informáticos en los que se ejecutará en producción. Por lo tanto, a veces implica determinar los recursos necesarios para que el sistema funcione con un rendimiento aceptable y planificar o documentar las actividades posteriores del proceso de implementación.
Instalación y activación
En el caso de los sistemas simples, la instalación implica establecer algún tipo de comando , acceso directo, secuencia de comandos o servicio para ejecutar el software (manual o automáticamente). En el caso de los sistemas complejos, puede implicar la configuración del sistema (posiblemente preguntando al usuario final sobre su uso previsto o preguntándole directamente cómo le gustaría que se configurara) y/o preparando todos los subsistemas necesarios para su uso. La activación es la actividad de iniciar el componente ejecutable del software por primera vez (no debe confundirse con el uso común del término activación en relación con una licencia de software, que es una función de los sistemas de gestión de derechos digitales ).
En implementaciones de software más grandes en servidores , la copia principal del software que utilizarán los usuarios (la "producción") podría instalarse en un servidor de producción en un entorno de producción. Otras versiones del software implementado podrían instalarse en un entorno de prueba , un entorno de desarrollo y un entorno de recuperación ante desastres.
En entornos complejos de entrega continua y/o sistemas de software como servicio , incluso pueden existir versiones configuradas de manera diferente del sistema simultáneamente en el entorno de producción para diferentes clientes internos o externos (esto se conoce como arquitectura multiusuario ), o incluso implementarse gradualmente en paralelo para diferentes grupos de clientes, con la posibilidad de cancelar una o más de las implementaciones paralelas. Por ejemplo, se sabe que Twitter utiliza este último enfoque para realizar pruebas A/B de nuevas funciones y cambios en la interfaz de usuario . También se puede crear un grupo "en vivo oculto" dentro de un entorno de producción, que consta de servidores que aún no están conectados al balanceador de carga de producción , para fines de implementación azul-verde .
Desactivación
La desactivación es el proceso inverso de la activación y se refiere al apagado de cualquier componente de un sistema que ya se esté ejecutando. La desactivación suele ser necesaria para realizar otras actividades de implementación; por ejemplo, puede ser necesario desactivar un sistema de software antes de poder realizar una actualización. La práctica de retirar del servicio sistemas obsoletos o que se usan con poca frecuencia se conoce a menudo como retiro o desmantelamiento de aplicaciones.
Desinstalación
La desinstalación es el proceso inverso de la instalación. Es la eliminación de un sistema que ya no es necesario. También puede implicar la reconfiguración de otros sistemas de software para eliminar las dependencias del sistema desinstalado .
Actualizar
El proceso de actualización reemplaza una versión anterior de todo o parte de un sistema de software con una versión más nueva. Generalmente consiste en la desactivación seguida de la instalación. En algunos sistemas, como en Linux cuando se utiliza el administrador de paquetes del sistema , la versión anterior de una aplicación de software normalmente también se desinstala como parte automática del proceso. (Esto se debe a que los administradores de paquetes de Linux normalmente no admiten la instalación de varias versiones de una aplicación de software al mismo tiempo a menos que el paquete de software haya sido diseñado específicamente para evitar esta limitación).
Actualización incorporada
Algunos sistemas de software (o, en el caso de algunos sistemas operativos como Linux , Android e iOS ) incorporan mecanismos para instalar actualizaciones . La automatización de estos procesos de actualización varía desde totalmente automáticos hasta iniciados y controlados por el usuario. Norton Internet Security es un ejemplo de un sistema con un método semiautomático para recuperar e instalar actualizaciones tanto de las definiciones de antivirus como de otros componentes del sistema. Otros productos de software proporcionan mecanismos de consulta para determinar cuándo hay actualizaciones disponibles.
Seguimiento de versiones
Los sistemas de seguimiento de versiones ayudan al usuario a encontrar e instalar actualizaciones en los sistemas de software. Por ejemplo: el catálogo de software almacena la versión y otra información de cada paquete de software instalado en un sistema local. Con un solo clic se abre una ventana del navegador que lleva a la página web de actualización de la aplicación, que incluye el llenado automático del nombre de usuario y la contraseña para los sitios que requieren un inicio de sesión. En Linux, Android e iOS, este proceso es aún más sencillo porque el sistema operativo incorpora un proceso estandarizado para el seguimiento de versiones (para paquetes de software instalados de la forma admitida oficialmente), por lo que no se requieren pasos separados de inicio de sesión, descarga y ejecución, por lo que el proceso se puede configurar para que sea completamente automático. Algunos programas de terceros también admiten el seguimiento y la actualización de versiones automatizados para determinados paquetes de software de Windows.
Roles de implementación
La complejidad y variabilidad de los productos de software han fomentado la aparición de funciones especializadas para coordinar y diseñar el proceso de implementación. En el caso de los sistemas de escritorio, los usuarios finales también suelen convertirse en los "implementadores de software" cuando instalan un paquete de software en su máquina. La implementación de software empresarial implica muchas más funciones, y esas funciones suelen cambiar a medida que la aplicación avanza desde los entornos de prueba (preproducción) a los de producción. Las funciones típicas implicadas en las implementaciones de software para aplicaciones empresariales pueden incluir:
^ Roger S. Pressman Ingeniería de software: un enfoque práctico (octava edición)
^ Rees-Carter, Stephen (13 de julio de 2018). "Cómo instalar y configurar Ansible en Ubuntu 18.04". DigitalOcean . Archivado desde el original el 9 de junio de 2019 . Consultado el 8 de junio de 2019 . Los sistemas de gestión de configuración están diseñados para facilitar el control de una gran cantidad de servidores a los administradores y equipos de operaciones. Permiten controlar muchos sistemas diferentes de forma automatizada desde una ubicación central.
Enlaces externos
Esfuerzos de estandarización
Solicitud de envío de esquema de instalación de solución a W3C
Descriptor de implementación de la solución OASIS TC
Especificación OMG para la implementación y configuración de aplicaciones distribuidas basadas en componentes (OMG D&C)
JSR 88: Implementación de aplicaciones Java EE
Artículos
Carzaniga, Antonio; Fuggetta, Alfonso; Hall, Richard S.; Van Der Hoek, André; Heimbigner, Dennis; Wolf, Alexander L. (abril de 1998). "Un marco de caracterización para tecnologías de implementación de software: informe técnico CU-CS-857-98" (PDF) . Boulder, CO : Departamento de Ciencias de la Computación, Universidad de Colorado Boulder .