jueves, junio 16, 2011

Conferencia CGN: Karsten Thoms sobre principios básicos

A falta de oportunidad de participar en la conferencia, dedicaré algunos días a comentar lo que de las presentaciones aparece como más interesante. Soy enemigo de los powerpoints, porque están pensados para servir de guía durante una conferencia o presentación, y acompañan la conversación del disertante, pero reflejan pálidamente lo que el autor conversó. En el caso de la presentación de Karsten Thoms, esta es tan espartana que podría dudarse de cuál fue su contenido. Sin embargo, los diez títulos hablan fuerte y claro. De entre ellos, quiero destacar los siguientes, que coincido en que determinan la factibilidad de usar un generador de código. Interpretaré libremente lo que Karsten explicara, basándome en sus sentencias minimalistas:

Mezclar artefactos cuyo código es generado con otros creados 'a mano' (Mixed Generated/Manual Code Artifacts). Este escenario implica que hay aspectos que, aunque fueran representables en un modelo, no pueden ser traducidos a código. Estos espacios no cubiertos derivan de un generador que ignora aspectos del modelo, y por lo tanto no es capaz de representar la totalidad. Aún cuando pudiera haber casos en que la parte manual (opaca para el modelo) pueda rescatarse, al no tener relación con la descripción abstracta, el esfuerzo de integración corre por cuenta del "codificador manual". Si aplicamos esta falta de integración a modelos complejos y grandes, el esfuerzo de seguimiento de la relación entre las dos partes es peligroso, y posiblemente motivo de fracaso.

No reestructure su código generado (Don‘t Refactor Your Code Generator Code). Aplicar una nueva capa de optimización de código al código generado es doble trabajo, y ganancia de corto alcance, ya que al no afectar al modelo, el código se reproducirá a la siguiente oportunidad. Si su ciclo de desarrollo se basa en iteraciones cortas, la refactorización puede ser agotadora (e inútil a futuro). Esto no quiere decir que no sea bueno refactorizar. Pero debe hacerse sobre el modelo, y sobre las reglas de transformación; es decir, una refactorización bien distinta. El código debe derivar optimizado, no rehecho a posteriori.

Hay otros tres puntos que resultan especialmente interesantes, pero en este caso, trataré de conocer directamente su posición sobre ellos:
  • Missing Reference Models /Implementations
  • Don‘t Participate Developers
  • Requiring The IDE For Execution
 Para seguir a Karsten, su blog.

No hay comentarios.: