Fábrica de software

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Proceso de desarrollo de software

Una fábrica de software es una colección estructurada de activos de software relacionados que ayudan a producir aplicaciones de software o componentes de software de acuerdo con requisitos específicos del usuario final definidos externamente a través de un proceso de ensamblaje. 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 participan en la creación de software subcontratada.

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 amplias herramientas, procesos y contenidos utilizando una plantilla basada en un esquema para automatizar el desarrollo y mantenimiento de variantes de un producto arquetípico mediante la adaptación, ensamblar y configurar componentes basados en framework.

Dado que la codificación requiere un ingeniero de software (o, lo que es lo mismo 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 utilizar IDE tradicionales. La codificación tradicional se deja sólo para crear nuevos componentes o servicios. Al igual que con la fabricación tradicional, la ingeniería se deja a 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.

Propósito

El desarrollo de aplicaciones basado en fábricas de software aborda el problema del desarrollo de aplicaciones tradicional, donde las aplicaciones se desarrollan y entregan sin aprovechar el conocimiento adquirido y los activos producidos al desarrollar aplicaciones similares. Se utilizan muchos enfoques, como capacitación, documentación y marcos, para abordar este problema; sin embargo, utilizar estos enfoques para aplicar consistentemente el valioso conocimiento adquirido previamente 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 sea fácil de adoptar para los equipos de proyecto. Desarrollar aplicaciones utilizando una fábrica de software adecuada puede proporcionar muchos beneficios, como una mayor productividad, calidad y capacidad de evolución.

Componentes

Las fábricas de software son únicas y, por lo tanto, contienen un conjunto exclusivo 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:

  • Factory Schema: Un documento que categoriza y resume los activos utilizados para construir y mantener un sistema (como documentos XML, modelos, etc.) de forma ordenada, y define las relaciones entre ellos.
  • Aplicación de la referencia: Proporciona un ejemplo de un producto realista y acabado que la fábrica de software ayuda a los desarrolladores a construir.
  • Orientación y patrones de arquitectura: Ayuda a explicar las opciones de diseño de aplicaciones y la motivación para esas opciones.
  • Cómo-a temas: Proporcionar procedimientos e instrucciones para completar las tareas.
  • Recetas: Automatizar procedimientos en temas How-to, ya sea por completo o en pasos específicos. Pueden ayudar a los desarrolladores a completar tareas rutinarias con entrada mínima.
  • Plantillas: Pre-made elementos de aplicación con marcadores de posición para argumentos. Se pueden utilizar para crear elementos de proyecto iniciales.
  • Diseñadores: Proporcionar información que los desarrolladores pueden utilizar para modelar aplicaciones a un nivel más alto de abstracción.
  • Código reutilizable: Componentes que implementan funcionalidad o mecanismos comunes. La integración de código reutilizable en una fábrica de software reduce los requisitos de código escrito manualmente y fomenta la reutilización en todas las aplicaciones.

Desarrollo de productos

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

  • Análisis de problemas: Determina si el producto está en el alcance de una fábrica de software. El ajuste determina si todo o parte del producto se construye con la fábrica de software.
  • Especificación del producto: Define los requisitos del producto destacando las diferencias entre los requisitos de la línea de productos utilizando una gama de mecanismos de especificación de productos.
  • Diseño de producto: Maps the differences in requirements to differences in product line architecture and development process to produce a custom process.
  • Aplicación del producto: Se pueden utilizar diversos mecanismos para desarrollar la aplicación en función del alcance de las diferencias.
  • Implementación de productos: Implica crear o reutilizar las limitaciones de despliegue predeterminadas y configurar los recursos necesarios para instalar los ejecutables que se están implementando.
  • Pruebas de producto: Implica crear o reutilizar activos de prueba (como casos de prueba, conjuntos de datos y scripts) y aplicar herramientas de instrumentación y medición.

Beneficios

El desarrollo de aplicaciones utilizando una fábrica de software puede proporcionar muchos beneficios en comparación con los enfoques de desarrollo de software convencionales. Estos incluyen lo siguiente:

  • Consistencia: Las fábricas de software se pueden utilizar para construir múltiples instancias de una línea de productos de software (un conjunto de aplicaciones que comparten características similares y arquitectura), facilitando la coherencia. Esto simplifica la gobernanza y también reduce los costos de capacitación y mantenimiento.
  • Calidad: Utilizar una fábrica de software hace más fácil para los desarrolladores aprender e implementar prácticas probadas. Debido a la integración de código reutilizable, los desarrolladores pueden pasar más tiempo trabajando en características que son únicas para cada aplicación, reduciendo la probabilidad de defectos de diseño y defectos de código. Las aplicaciones desarrolladas utilizando una fábrica de software también se pueden verificar antes del despliegue, asegurando que las mejores prácticas específicas de fábrica fueron seguidas durante el desarrollo.
  • Productividad: Muchas actividades de desarrollo de aplicaciones pueden ser racionalizadas y automatizadas, como la reutilización de activos de software y la generación de códigos de abstracciones de los elementos y mecanismos de aplicación.

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

Valor para el negocio

Las tareas comerciales 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 e interfaces de usuario flexibles también permite 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 mediante ALT+TAB y técnicas de copiar y pegar.

Valor para los arquitectos

Los arquitectos pueden utilizar las fábricas de software para diseñar aplicaciones y sistemas con mayor calidad y coherencia. 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. Conocida como arquitectura de línea base, este tipo de implementación 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 aplicar estándares arquitectónicos independientes de la lógica comercial.

Valor para los desarrolladores

Los desarrolladores pueden utilizar fábricas de software para aumentar la productividad e incurrir en menos tiempo de preparación. Esto se logra mediante la creación de un punto de partida (línea de base) de alta calidad para las aplicaciones que incluye código y patrones. Esto permite que los proyectos comiencen con un mayor nivel de madurez que las aplicaciones desarrolladas tradicionalmente. Los recursos reutilizables, las guías 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 las guías de manera consistente. Las fábricas de software proporcionan una capa de abstracción que oculta la complejidad de las aplicaciones 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 aplicaciones sin un conocimiento profundo de la infraestructura o los servicios básicos. La abstracción de las tareas comunes de los desarrolladores y una mayor reutilización del código de infraestructura pueden ayudar a aumentar la productividad y la mantenibilidad.

Valor para operaciones

Las aplicaciones creadas con fábricas de software dan como resultado una consolidación de los esfuerzos operativos. Esto proporciona una implementación más sencilla de elementos y módulos empresariales comunes, lo que da como resultado una gestión de configuración coherente en un conjunto de aplicaciones. Las aplicaciones se pueden gestionar de forma centralizada con una arquitectura conectable que permite a los equipos de operaciones controlar los servicios básicos.

Otros enfoques

Hay 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.

Organización de software industrializado (Japón)

Bajo 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 combinada con la productividad, asegurando que el aumento de los costos 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 productividad es la reutilización del software. Las características dominantes del diseño organizativo incluyen un esfuerzo determinado para hacer rutina de trabajo operativo, simple y repetitivo y para estandarizar los procesos de trabajo.

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

Fábrica de software genérico (Europa)

Este enfoque fue financiado por el programa Eureka y se llamó 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 organizacional y otras infraestructuras necesarias para que las fábricas de software puedan construirse y adaptarse 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 (Norteamérica)

La fábrica de componentes basada en 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 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 experimentos y medir el impacto con respecto al costo, la confiabilidad y la calidad.

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

Organización de software madura (Norteamérica)

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 de mejora automática 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

  • La primera empresa en adoptar este término fue Hitachi en 1969 con su Hitachi Software Works. Más tarde, otras empresas como System Development Corporation en 1975,
  • NEC, Toshiba y Fujitsu en 1976 y 1977 siguieron el mismo enfoque organizativo.

Cusumano sugiere que hay seis fases para las fábricas de software:

  • Estructura básica de organización y gestión (entre 1960 y principios de 1970)
  • Adaptación y estandarización tecnológicas (principalmente de 1970 a principios de 1980)
  • Mecanización y apoyo del proceso (a finales de 1970)
  • Refinación y ampliación del proceso (principalmente de 1980)
  • Automatización integrada y flexible (mid-1980s)
  • Incremental product / variety improvement (late 1980s)
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save