lunes, 20 de diciembre de 2010

Desarrollo colaborativo en Dynamics Nav. Parte I, los problemas

Todos los que trabajamos habitualmente en el desarrollo de Dynamics Nav sabemos lo pobre que es y las pocas posibilidades que proporciona su EDI para desarrollar en C/AL, sobre todo cuando también trabajamos con otros como Visual estudio, Eclipse o NetBeans.
No solo nos quejamos de un aspecto visual pobre o de la poquísima ayuda al desarrollo que pueda proporcionar. Lo peor de todo es la nula aportación que hace al desarrollo colaborativo, sin pensar mucho se me ocurren una serie de problemas que tarde o temprano a todos nos han acarreado perder trabajo o tiempo:

  • Olvidaros de programar dos personas sobre los mismos objetos en la misma base de datos, si no os ponéis de acuerdo os acabareis pisando el trabajo
  • Olvidaros de programar el mismo objeto en dos bases de datos distintas sin tener que emplear un buen rato después para integración de las modificaciones
  • Olvidaros de tener una mínima historia de las modificaciones sufridas por un objeto: quién lo ha modificado, cuándo, para que proyectos ha sido modificado..
  • Olvidaros de deshacer modificaciones en caso de un error como puede ser importar un objeto erróneo y no tuvierais copia de ese objeto
  • ...
Estos días hemos estado desarrollando un módulo que nos ayudará a trabajar varias personas en varios proyectos dentro de un mismo cliente. Los puntos que hemos querido cubrir:
  • Un programador podrá bloquear un objeto impidiendo a otros programadores modificarlo hasta que no lo libere. Los objetos se pueden bloquear de forma automática con solo abrirlo en el diseñador.
  • Cada objeto tendrá asociada una historia: cuándo fue modificado, para que proyecto, por qué programador, cuando se envió al cliente.
  • Manejaremos una base de datos de desarrollo principal y varias secundarias para cada proyecto.
  • Desde la base de datos principal tendremos visibilidad sobre todos los objetos que se modifican en las secundarias a través de su historia.
  • Antes de importar un objeto de un proyecto (base de datos secundaria) en la base de datos principal para poder mandárselo al cliente, podremos comparar sin salir de Dynamics Nav las diferencias de código que hay entre la versión de la base de datos principal y la versión del objeto que hay en la base de datos del proyecto.
  • Se podrán recuperar distintas versiones de un objeto desde su historia. Si perdemos modificaciones de un objeto siempre podremos comparar como está el objeto en la base de datos en este instante con una versión del objeto en un momento anterior.
  • Informe de riesgo. Antes de importar los objetos modificados de un proyecto podremos sacar un informe donde veamos para que otros proyectos se han modificado esos objetos-
Todas estas nuevas funciones estarán integradas en Dynamics Nav como un nuevo menú para no tener que salir del entorno que ya conocemos.

Con todo esto lo que buscamos es, desde una sola base de datos por cliente, controlar varias bases de datos en las que distintos desarrolladores lleven a cabo distintos proyectos e integrar todas las modificaciones de una forma sencilla y controlada para no perder modificaciones y mantener un historial de todas estas modificaciones para para poder recuperarlas en cualquier momento.

2 comentarios:

  1. Toda la razón en los puntos que indicas, son el caballo de batalla para todo desarrollador de entorno Nav que se precie, y se echan en falta.

    En el afán por reducir el tiempo de desarrollo, se simplifica tanto el entorno, que se echan en falta alguna herramienta más para poder controlar mejor los desarrollos (Un subversion o similar).

    Ya he visto y participado en alguna alternativa similar a lo que describes, tiene buena pinta. En la R2 ya se puede bloquear objetos cuando se desarrollan, veremos si van integrando un control mas especifico de los desarrollos.

    ResponderEliminar
  2. Nosotros hemos integrado Subversion con Nav para controlar los repositorios desde Nav. Simplificando y adaptando a nuestras necesidades pero con tiempo podría conseguir algo muy potente. Intentare seguir posteando sobre esta herramienta a ver si saco tiempo
    un saludo

    ResponderEliminar