Base de ReusabilidadCada vez que es necesario un diseño de software, es necesario enfocarse en el problema y no en la solución.
Las soluciones que a menudo aparecen son los siguientes
- Thread Managers
- Transformacion, ruteo y modelamiento de mensajes
- Servicios de servicios? (servicios de seguridad, de tiempo, de localizacion de objetos)
- Indexaciones
- Modelamiento de mallas
- Modelamiento de desplegadores de informacion (views, como en el
sentido MVC)
- Controladores (en el sentido de mvc) de servicios de datos
- Buscadores de informacion
- Monitores de sistemas
- Caching or pooling de elementos del sistema
Se puede ver que ciertos elementos de la lista dependen de la implementacion de otros.
La idea central en este texto es limitada a generar un metodo de almacenamiento de conceptos de manera tal de que sean reusables. Los niveles de reusablidad de conceptos pueden ser categorizados a niveles de código (copy paste), de métodos (clases), de componentes (conjunto de clases), de meta-componentes (frameworks), de arquitectura (zackmann si se quiere).
Los argumentos en contra para no no usar esta base son:
1) los problemas siempre son diferentes cada ocasión y no existe una
base comun para ellos.
2) no tenemos tiempo
3) no lo necesito, el problema es muy chico.
4) el concepto sera muy generico, no va a aplicar (la especialización toma tanto tiempo como resolver el problema en sí)
5) ya hice el diseño.
Creo que es posible mostrar que una bd de implementaciones de conceptos
no está de mas y que tendría un indice de usabilidad aceptable siempre y cuando tenga asociado una administración o mas detalladamente un "governance"