stringtranslate.com

Fábrica de software

Una fábrica de software es una colección estructurada de activos de software relacionados que ayuda a producir aplicaciones de software o componentes de software de acuerdo con requisitos específicos definidos externamente por el usuario final a través de un proceso de ensamblaje. [1] Una fábrica de software aplica técnicas y principios de fabricación al desarrollo de software para imitar los beneficios de la fabricación tradicional. Las fábricas de software generalmente se dedican a la creación de software subcontratado .

Descripción

En ingeniería de software y arquitectura de software empresarial , una fábrica de software es una línea de productos de software que configura herramientas, procesos y contenidos extensos utilizando una plantilla basada en un esquema para automatizar el desarrollo y mantenimiento de variantes de un producto arquetípico mediante la adaptación, ensamblaje y configuración de componentes basados ​​en el marco. [2]

Dado que la codificación requiere un ingeniero de software (o su equivalente en la fabricación tradicional, un artesano experto), se elimina del proceso en la capa de aplicación y el software se crea ensamblando componentes predefinidos en lugar de usar los IDE tradicionales . La codificación tradicional se deja solo para crear nuevos componentes o servicios. Al igual que con la fabricación tradicional , la ingeniería se deja para la creación de los componentes y la recopilación de requisitos para el sistema. El resultado final de la fabricación en una fábrica de software es una aplicación compuesta .

Objetivo

El desarrollo de aplicaciones basado en software factory aborda el problema del desarrollo de aplicaciones tradicional, en el que las aplicaciones se desarrollan y entregan sin aprovechar el conocimiento adquirido y los activos producidos a partir del desarrollo de aplicaciones similares. Se utilizan muchos enfoques, como la capacitación, la documentación y los marcos de trabajo, para abordar este problema; sin embargo, el uso de estos enfoques para aplicar de manera consistente el valioso conocimiento previamente adquirido durante el desarrollo de múltiples aplicaciones puede ser un proceso ineficiente y propenso a errores.

Las fábricas de software abordan este problema codificando prácticas comprobadas para desarrollar un estilo específico de aplicación dentro de un paquete de orientación integrada que los equipos de proyecto pueden adoptar fácilmente. El desarrollo de aplicaciones mediante una fábrica de software adecuada puede brindar muchos beneficios, como una mayor productividad, calidad y capacidad de evolución. [1]

Componentes

Las fábricas de software son únicas y, por lo tanto, contienen un conjunto único de activos diseñados para ayudar a crear un tipo específico de aplicación. En general, la mayoría de las fábricas de software contienen activos interrelacionados de los siguientes tipos:

Desarrollo de productos

La creación de un producto mediante una fábrica de software implica las siguientes actividades:

Beneficios

El desarrollo de aplicaciones mediante una fábrica de software puede ofrecer muchas ventajas en comparación con los enfoques de desarrollo de software convencionales . Entre ellas, se incluyen las siguientes:

Estos beneficios pueden aportar valor a varios equipos diferentes de las siguientes maneras:

Valor para el negocio

Las tareas empresariales se pueden simplificar, lo que puede aumentar significativamente la productividad del usuario. Esto se logra mediante el uso de interfaces de usuario comunes y consistentes que reducen la necesidad de capacitación del usuario final. La fácil implementación de funcionalidades nuevas y actualizadas y las interfaces de usuario flexibles también permiten a los usuarios finales realizar tareas de una manera que sigue el flujo de trabajo empresarial . Las mejoras en la calidad de los datos reducen la necesidad de intercambio de datos entre partes de la aplicación a través de las técnicas ALT+TAB y copiar y pegar. [3]

Valor para los arquitectos

Los arquitectos pueden utilizar las fábricas de software para diseñar aplicaciones y sistemas con una calidad y una consistencia mejoradas. Esto se logra mediante la capacidad de crear una implementación parcial de una solución que incluya solo los mecanismos y elementos compartidos más críticos. Este tipo de implementación, conocida como arquitectura de referencia, puede abordar desafíos de diseño y desarrollo, exponer decisiones arquitectónicas y mitigar riesgos en las primeras etapas del ciclo de desarrollo. Las fábricas de software también permiten crear una forma consistente y predecible de desarrollar, empaquetar, implementar y actualizar componentes comerciales para hacer cumplir los estándares arquitectónicos independientemente de la lógica comercial. [3]

Valor para los desarrolladores

Los desarrolladores pueden utilizar fábricas de software para aumentar la productividad y reducir el tiempo de puesta en marcha. Esto se logra mediante la creación de un punto de partida (línea base) de alta calidad para las aplicaciones que incluye código y patrones. Esto permite que los proyectos comiencen con un nivel de madurez más alto que las aplicaciones desarrolladas tradicionalmente. Los recursos reutilizables, la orientación y los ejemplos ayudan a abordar escenarios y desafíos comunes, y la automatización de tareas comunes permite a los desarrolladores aplicar fácilmente la orientación de manera consistente. Las fábricas de software proporcionan una capa de abstracción que oculta la complejidad de la aplicación y separa las preocupaciones, lo que permite a los desarrolladores centrarse en diferentes áreas, como la lógica empresarial, la interfaz de usuario (UI) o los servicios de la aplicación sin un conocimiento profundo de la infraestructura o los servicios de línea base. La abstracción de las tareas comunes de los desarrolladores y una mayor reutilización del código de la infraestructura pueden ayudar a impulsar la productividad y la capacidad de mantenimiento. [3]

Valor para las operaciones

Las aplicaciones creadas con fábricas de software dan como resultado una consolidación de los esfuerzos operativos. Esto facilita la implementación de elementos y módulos comerciales comunes, lo que da como resultado una gestión de configuración consistente en un conjunto de aplicaciones. Las aplicaciones se pueden administrar de forma centralizada con una arquitectura conectable que permite a los equipos de operaciones controlar los servicios básicos. [3]

Otros enfoques

Existen varios enfoques que representan puntos de vista contrastantes sobre los conceptos de fábrica de software, que van desde iniciativas orientadas a herramientas hasta iniciativas orientadas a procesos. Los siguientes enfoques cubren iniciativas japonesas, europeas y norteamericanas. [4]

Organización de software industrializado (Japón)

Según este enfoque, el software producido en la fábrica de software se utiliza principalmente para sistemas de control, reactores nucleares, turbinas, etc. Los principales objetivos de este enfoque son la calidad y la productividad, asegurando que el aumento de los costes no debilite la competitividad. También existe el objetivo adicional de crear un entorno en el que el diseño, la programación, las pruebas, la instalación y el mantenimiento se puedan realizar de forma unificada.

La clave para mejorar la calidad y la productividad es la reutilización del software. Entre los rasgos dominantes del diseño organizacional se encuentra un esfuerzo decidido por hacer que el trabajo operativo sea rutinario, simple y repetitivo y por estandarizar los procesos de trabajo.

Un representante de este enfoque sería el concepto de fábrica de software de Toshiba, que denota la división de software y los procedimientos de la empresa tal como eran en 1981 y 1987 respectivamente.

Fábrica de software genérico (Europa)

Este enfoque fue financiado por el programa Eureka y se denominó Eureka Software Factory. Los participantes en este proyecto son grandes empresas europeas, fabricantes de ordenadores, empresas de software, institutos de investigación y universidades. El objetivo de este enfoque es proporcionar la tecnología, los estándares, el apoyo organizativo y otras infraestructuras necesarias para que se puedan construir y adaptar fábricas de software a partir de componentes comercializados por proveedores independientes.

El objetivo de este enfoque es producir una arquitectura y un marco para entornos de desarrollo integrados . La fábrica de software genérica desarrolla componentes y entornos de producción que forman parte de las fábricas de software junto con estándares y orientación para los componentes de software.

Fábrica de componentes basada en la experiencia (América del Norte)

La fábrica de componentes basada en la experiencia se desarrolla en el Laboratorio de Ingeniería de Software del Centro de Vuelos Espaciales Goddard de la NASA . Los objetivos de este enfoque son "comprender el proceso de software en un entorno de producción, determinar el impacto de las tecnologías disponibles e incorporar los métodos identificados/refinados al proceso de desarrollo". El enfoque ha sido experimentar con nuevas tecnologías en un entorno de producción, extraer y aplicar experiencias y datos de los experimentos y medir el impacto con respecto al costo, la confiabilidad y la calidad.

Este enfoque pone un gran énfasis en la mejora continua a través de la comprensión de la relación entre determinadas características del proceso y las cualidades del producto. La fábrica de software se utiliza para recopilar datos sobre las fortalezas y debilidades con el fin de establecer líneas de base para las mejoras y recopilar experiencias que se puedan reutilizar en nuevos proyectos.

Organización de software madura (América del Norte)

Definido por el Modelo de Madurez de Capacidades , este enfoque pretendía crear un marco para lograr un proceso de desarrollo de software predecible, confiable y automejorable que produzca software de alta calidad. La estrategia consiste en mejoras graduales en la organización del software, definiendo qué procesos son clave en el desarrollo. El proceso de software y la calidad del producto de software son predecibles porque se mantienen dentro de límites mensurables.

Historia

Cusumano [8] sugiere que existen seis fases para las fábricas de software:

Véase también

Referencias

  1. ^ abcd "Fábricas de software". MSDN. 20 de mayo de 2014.
  2. ^ abc Greenfield, Jack; Short, Keith; Cook, Steve; Kent, Stuart (2004). Fábricas de software: ensamblaje de aplicaciones con patrones, modelos, marcos y herramientas . Wiley. ISBN 0-471-20284-3.
  3. ^ abcd "Fábricas de software: escenarios y beneficios". MSDN. 20 de mayo de 2014.
  4. ^ ab Aaen, Ivan; Bøttcher, Peter; Mathiassen, Lars (1997). "La fábrica de software: contribuciones e ilusiones" (PDF) . Actas del XX Seminario de investigación de sistemas de información . Escandinavia, Oslo.
  5. ^ Bratman, H.; Court, T. (1975). "La fábrica de software". Computadora . 8 (5): 28–37. doi :10.1109/cm.1975.218953. S2CID  537648.
  6. ^ Cusumano, Michael A. (marzo de 1989). "La fábrica de software: una interpretación histórica". IEEE Software . 6 (2): 23–30. doi :10.1109/ms.1989.1430446. S2CID  18982313.
  7. ^ Griss, ML (1993). "Reutilización de software: de la biblioteca a la fábrica". IBM Systems Journal . 32 (4): 548–566. CiteSeerX 10.1.1.88.2855 . doi :10.1147/sj.324.0548. 
  8. ^ Cusumano, Michael A. (1991). "Conceptos y prácticas de fábrica en el desarrollo de software". Anales de la historia de la informática . 13 (1): 3–32. doi :10.1109/mahc.1991.10004. S2CID  7733552.

Enlaces externos