Un SF es una colección estructurada de activos de software(herramientas, documentación, código retuilizable, etc) relacionados. Cuando un SF es instalado en un ambiente de desarrollo, este ayuda a arquitectos y a desarrolladores a crear instancias de alta calidad de tipos específicos de aplicaciones, predecible y eficientemente . Cada SF esta diseñado para ayudar a construir aplicaciones que comparten una arquitectura y un conjunto de características. Ejemplos de tales tipos de aplicación son: aplicaciones móviles, aplicaciones smart client, aplicaciones web, aplicaciones transaccionales, etc.
Un SF contiene una variedad de activos y herramientas de software. Los activos de software incluyen componentes de código reutilizables, documentación y aplicaciones de referencia. Las herramientas de software incluyen wizards, generadores de código y diseñadores visuales. Típicamente, un SF proporciona templates y otras herramientas que ayudan a un equipo de desarrollo a iniciar rapidamente un nuevo desarrollo. Y continua asistiendo a los desarrolladores por medio de direccionamiento y automatización de actividades prescritas de desarrollo a través del ciclo de vida del desarrollo.
Una característica clave de un SF es que arquitectos y desarrolladores pueden customizar(adaptar), extender y ajustarlo a las necesidades específicas de un equipo u organización. Típicamente, un arquitecto realiza esta adaptación, reempaqueta y distribuye el SF a los diferentes equipos.
Desarrollando con un Software Factory
El desarrollo de una aplicación basada en un SF maneja el problema del desarrollo tradicional de aplicaciones que son desarrolladas y entregadas sin tomar ventaja del conocimiento ganado de los activos de software producidos en desarrollos similares. Entrenamiento, documentación, y frameworks son usados para manejar este problema; Sin embargo, usar y aplicar estos métodos y conocimientos previamente adquiridos durante el desarrollo de múltiples aplicaciones puede ser ineficiente y propenso a errores.
Un SF maneja este problema embebiendo las mejores prácticas probadas para desarrollar un estilo especifico de aplicación con un paquete de direccionamiento integrado que es fácil de adoptar por los equipos. Desarrollar aplicaciones usando un SF puede generar muchos beneficios comparado con un desarrollo convencional:
- Consistencia: Usar un SF para construir múltiples instancias de una línea de producto de software hace más fácil alcanzar la consistencia. Esto simplifica administración, implica menos mantenimiento y costos de entrenamiento.
- Calidad: Usar un SF hace mas fácil a los desarrolladores aprender a implementar prácticas probadas. Los desarrolladores utilizan menos tiempo escribiendo código boilerplate y utilizan mas tiempo creando características que son únicas para cada aplicación. Esto reduce la probabilidad de que la aplicación tenga fallos de diseño o defectos de código. Las aplicaciones desarrolladas usando un SF pueden ser verificadas antes de ser desplegadas; Esto asegura que las mejores prácticas de un SF específico se han seguido durante el desarrollo.
- Productividad: Usar un SF simplifica y automatiza las actividades de desarrollo de la siguiente manera:
- Reutilizando los activos de software, en particular las líneas base de arquitectura extensibles, los marcos de aplicación, y los bloques de aplicación.
- Proporciona orientación contextualizada y automatizada.
- Genera código de los modelos que representan abstracciones de los elementos y mecanismos de la aplicación.
Este enfoque simplifica, automatiza e incluso, elimina muchas tareas rutinarias de desarrollo. Mediante el uso de un SF, los desarrolladores pueden concentrarse en actividades de mayor valor, lo que reduce el tiempo de desarrollo global y el coste del proyecto.
¿Qué incluye un Software Factory?
Al igual que las aplicaciones, un SF es único y puede incluir un conjunto único de activos de software destinados a ayudar a construir un determinado tipo de aplicación. Sin embargo, la mayoría de las fábricas de software incluyen activos interrelacionados de los siguientes tipos:
- Factory schema. El esquema ilustra las actividades (agrupadas en viewpoints) y los activos a utilizar al crear aplicaciones.
- Aplicación referencia. Es un ejemplo realista, un producto acabado el cual fue desarrollado con el SF al cual pertenece.
- Direccionamiento en arquitectura y patrones. Direccionamiento en arquitectura y los patrones ayudan a explicar las elecciones de diseño de la aplicación y la motivación para estas elecciones.
- Tópicos How-to. Suministran procedimientos para completar tareas.
- Recetas(Recipes). Automatiza ciertos procedimientos descritos en los tópicos How-to, completa o parcialmente. Estos ayudan a completar tareas de rutina con entradas mínimas.
- Templates. Son elementos de aplicación prefabricadas con ubicaciones para argumentos concretos. Estos pueden ser usados para muchos propósitos, incluyendo la creación inicial de la estructura de la solución o para crear artefactos individuales de la solución, como ítems del proyecto.
- Diseñadores. Permiten a arquitectos y a desarrolladores modelar aplicaciones en un nivel alto de abstracción. Estos pueden también generan código que es compatible con la línea base de la arquitectura.
- Código reutilizable. Son componentes, como frameworks o bloques de aplicación(cómo por ejemplo los bloques de aplicación que vienen en el Entreprise Library) estos implementan funcionalidad o mecanismos comunes. La integración de código reutilizable en un SF reduce los requerimientos de escribir código manualmente.
¿Por qué usar un Software Factory?
Sí el SF coincide con los requerimientos de tu escenario, este hace que el desarrollo sea mas rápido, más fácil, menos costoso y más predecible. En vez de tener que construir la aplicación desde cero, sólo se debera construir las partes específicas de la aplicación y el SF suministra el resto.
Un SF embebe las mejores prácticas probadas y reutiliza activos de software en una forma que debe ser fácil de aprender e implementar. Elimina la exploración innecesaria y permite a los desarrolladores enfocarse en lo que es más importante, desarrollar los requisitos de los clientes a tiempo y con calidad.
Finalmente pero no menos importante, un SF es adaptable y extensible. Los desarrolladores pueden afinar actividades, activos de software y herramientas a los requerimientos específicos de su ambiente.
En conclusión un Software Factory es un cojunto de activos y herramienta de software que embeben las mejores prácticas probadas y los mejores patrones de diseño para cada tipo particular de aplicación de acuerdo a la experiencia de un equipo de desarrollo, en este caso de Microsoft Patterns and Practices.
En el próximo post explicaré cada uno de los 4 Software Factories que hasta el momento ha realizado Microsoft Patterns and Practices, hasta la proxima.
5 comentarios:
Está muy interesante la información contenida pero se podría "aterrizar" aún mas con un pequeño ejemplo práctico, asi que considera la propuesta y lo elaboramos entre todos !!! Éxitos !!!
Muchas gracias Alejandro por tu comentario, yo sé que realmente se aprende cuando vamos a la práctica, pero es necesario la teoría como introducción a la práctica, por el momento tengo pensado publicar dos post más con teoría, posteriormente publicaré varios post donde trataré de explicar la implementación completa de un ejemplo real... espero seas paciente... muchas gracias.
Que buen articulo, y el obejto de tu blog esta muy bacano, el tema que abordas es super interesante.
Un saludo
Róbinson Moscoso
director BogotaDotNet
http://groups.msn.com/bogotadotnet
Excelente articulo, espero que sigas publicando mas y seria bueno el ejercicio practico, estare atento.
Hola... muchas gracias a todos los que han dejado sus comentarios en mi blog... es un aliciente valioso para continuar con él... espero no defraudar sus expectativas.
Publicar un comentario