Porqué Reutilizar?, Qué reutilizar?, Cuándo reutilizar?
Existen 2 tipos de enfoques en el Desarrollo de Software:
- Enfoque Tradicional
- Enfoque de Reutilización
Algunas características del Enfoque Tradicional son las siguientes:
- Se desarrolla un único producto (pensando en utilizarse solo una vez)
- Enfasis en los COSTES y los PLAZOS de dicho desarrollo.
- Altos costes de mantenimiento (Culpa de la precipitación inicial)
Contrario a esto, las características del desarrollo enfocado a la Reutilización son:
- Aplicaciones creadas uniendo piezas de software (previamente creados)
- Se enfocan en la ESCALABILIDAD (mejorar/entender un sistema) y ADAPTACION (en base a la necesidad del usuario).
- Release de un producto en corto tiempo - Time to Market (o al menos mas rápido que un desarrollo tradicional)
- Reduce el costo del mantenimiento del Software.
- Reduce los riesgos del proyecto
La Reutilización parece muy llamativa, no es cierto? sin embargo aunque tú como desarrollador anheles implementar esta practica, son los directivos, las altas gerencias de las corporaciones las que deben implementar políticas de Reutilización de Software que permitan crear buenas practicas y normas a implementar en los desarrollos de Software.
Siempre he pensado que todo lo bueno tiene su precio y sin lugar a dudas sucede con la Reutilización de Software pues no todo es color de rosa en la implementación ya que ponerlo en marcha requiere:
- Mayor nivel de Abstracción para acometer el Desarrollo.
- Creación de componentes mas genéricos
- Componentes mejor documentados
Tipos de Reutilización
- Oportunista (Casi TODOS lo hemos hecho, buscamos en Google una porción de código que se apegue a nuestras necesidades y la usamos en nuestro código).
- Sistemática: Requiere de un esfuerzo global organizado con énfasis en la PLANIFICACIÓN
La Reutilización Sistemática requiere un compromiso de la alta dirección de la organización asi como los artefactos que se vayan a reutilizar sean generados con la abstracción necesaria.
Cómo llevar a cabo una Reutilización sistemática?
La primera opción de llevar a cabo una reutilización es mediante una reutilización sistemática la cual es potencialmente exitosa y viable sin embargo no es nada fácil y requiere de un GRAN esfuerzo e inversión. Requiere:

Por otro lado el enfoque Top-DOWN es iniciativa por la alta gerencia, quienes crean directrices y políticas que estén alineadas a las del dominio de la aplicación que permite sostenibilidad y reutilización del nuevo desarrollo.
A diferencia del enfoque Bottom Up, Top-DOWN realiza estudios previos para determinar las piezas necesarias que ayuden a encajar unas con otras. Los componentes se desarrollan poco a poco en base a las necesidades y al enfoque de la reutilización. Estas componentes antes de ponerlos en producción pasan por pruebas de satisfacción y de reutilización.
Qué es INGENIERIA de DOMINIO?
En pocas palabras es el desarrollo enfocado a la reutilización. La ingeniería del dominio se centra en el desarrollo de elementos reutilizables que formarán la familia de productos.
Son un conjunto de aplicaciones actuales y futuras que comparten un conjunto de características comunes. Su objetivo es optimizar el desarrollo de software cuando se crean varias aplicaciones que representan un negocio común o problema de dominio.
Pasos para implementar la ingeniería de dominio son:
Conclusión
La reutilización del oportunista, está basada en reutilizar elementos "de grano fino" las cuales podrían ser funciones, módulos, clases. Este tipo de reutilización podrá sacar de apuros en algún momento, pero en agilidad y mejora de proyectos no es efectiva. El enfoque Bottom-Up no funciona en la práctica ya que no están apoyadas por la alta gerencia.
La sistemática, está basado en reutilización de "grano grueso" los cuales podrían ser componentes, servicios, y sistemas integrados.
- Realizar estudio de VIABILIDAD
- Determinar el DOMINIO de la aplicación
- Diseñar y desarrollar componentes que sean GENÉRICOS para ser reutilizados
- Crear una política que apoye la reutilización, apoyado por toda la organización
- PLANEAR los componentes a desarrollar.
- Definir métricas para medir su utilidad.

Enfoques de la reutilización sistemática
- Bottom-UP
- Top-DOWN
El enfoque Bottom-UP no realiza estudios de la organización ni del dominio de las aplicaciones. Este enfoque es iniciativa principalmente por los desarrolladores y los mandos medios en la organización; mientras que la gerencia no se involucra en este enfoque. Estos aspectos son mayormente culturales ya que algunas razones por las cuales no se involucra es por las altas inversiones iniciales que implica la reutilización.
Con el enfoque Bottom-Up los componentes desarrollados son pequeños y solamente para una determinada aplicación (una clase, etc).
Por otro lado el enfoque Top-DOWN es iniciativa por la alta gerencia, quienes crean directrices y políticas que estén alineadas a las del dominio de la aplicación que permite sostenibilidad y reutilización del nuevo desarrollo.
A diferencia del enfoque Bottom Up, Top-DOWN realiza estudios previos para determinar las piezas necesarias que ayuden a encajar unas con otras. Los componentes se desarrollan poco a poco en base a las necesidades y al enfoque de la reutilización. Estas componentes antes de ponerlos en producción pasan por pruebas de satisfacción y de reutilización.
Qué es INGENIERIA de DOMINIO?
En pocas palabras es el desarrollo enfocado a la reutilización. La ingeniería del dominio se centra en el desarrollo de elementos reutilizables que formarán la familia de productos.
Son un conjunto de aplicaciones actuales y futuras que comparten un conjunto de características comunes. Su objetivo es optimizar el desarrollo de software cuando se crean varias aplicaciones que representan un negocio común o problema de dominio.
Pasos para implementar la ingeniería de dominio son:
- Identificar el dominio y su alcance, riesgos, mercado y sostenibilidad
- Seleccionar y analizar ejemplos, necesidades y tendencias
- Identificación, recolección, y agrupación de los conjuntos de características tales como entidades, operaciones, eventos, relaciones.
- Desarrollo de un modelo y desarrollo de una arquitectura de dominio o genéricos
- Representación de las parte comunes "desambiguación", la variabilidad "parametrización" y los escenarios de combinación de probabilidades.
- Implementación, certificación, y empaquetado de elementos reutilizables
- Evaluación, monitoreo, y mantenimiento de los elementos reutilizables ya implementados.
Lo que se debe tener en cuenta al momento de implementar la ingeniería de dominios son los beneficios en base a ahorro de costes, tiempos y reducción de riesgos. Esto tomando en cuenta que será a futuro los beneficios obtenidos pero que la inversión inicial será alta, deberá implementarse una infraestructura y planear un mantenimiento continuo. Antes de comenzar cualquier análisis se debe estudiar el retorno de la inversión (ROI)
Conclusión
La reutilización del oportunista, está basada en reutilizar elementos "de grano fino" las cuales podrían ser funciones, módulos, clases. Este tipo de reutilización podrá sacar de apuros en algún momento, pero en agilidad y mejora de proyectos no es efectiva. El enfoque Bottom-Up no funciona en la práctica ya que no están apoyadas por la alta gerencia.
La sistemática, está basado en reutilización de "grano grueso" los cuales podrían ser componentes, servicios, y sistemas integrados.

No hay comentarios:
Publicar un comentario