2012-06-23 28 views
10

¿Alguien está al tanto de los patrones de diseño de las actualizaciones de software? Específicamente, me gustaría un patrón para convertir archivos/configuraciones antiguas a la última versión.Patrón de diseño para actualizaciones de software

La mejor solución que puedo pensar sería tener un conjunto de reglas sobre cómo convertir de cada versión a la siguiente (por ejemplo, v1.0 a v1.1, v1.1 a v1.2, ... .). Luego, para convertir archivos/configuraciones a la última versión, ejecutará todas las reglas de conversión en orden.

Esto no me parece una forma muy elegante de hacer las cosas, ¿hay una mejor manera?

(Para el contexto, estoy en la planificación temprana/etapas de diseño de una aplicación de Windows 8 Metro)

gracias de antemano

+2

No deje que su preocupación por la elegancia lo engañe: su solución es la mejor. Tratar de atajar el problema y ser más "elegante" en realidad solo crea duplicación. – tallseth

Respuesta

5

que trabajé en un sistema que incluye un sistema de control de versiones para migrar una base de datos para la última versión, y funcionó así. La única mejora que hicimos fue que a veces queríamos evitar pasar por todas las versiones, ya que era un proceso largo, por lo que podía definir migraciones desde cualquier versión a cualquier versión si está en la versión 1.3 y desea migrar a la última versión versión y tiene secuencias de comandos para migrar de:

  1. 1,3 a 1.4
  2. 1,4 a 1,5
  3. 1,5 a 1,6
  4. 01.06 a 01.07
  5. 1,7 a 1,8
  6. 1,4 a 1,7

Me detectará automáticamente que se pueda utilizar una única secuencia de comandos para repasar tres versiones 1,4 a 1,7 y el uso de 1, 6 y 5. Esto es sólo vale la pena si la migración es largo, aunque ...

Si no necesita migrar realmente los datos, solo usarlos en el formato de la última versión, puede lograr lo mismo usando Adapter Pattern usando la composición de objetos para transformar un objeto con el formato "1.3" a "1.8 "formatee usando una cadena de adaptadores en el medio.

En respuesta al comentario: Lamentablemente, tuvimos que hacer el 1.4 a 1.7 a mano. Necesitará algo bastante inteligente para poder componer secuencias de comandos de actualizaciones optimizadas de las individuales, sin ejecutarlas secuencialmente.

+0

+1 para adaptadores apilados – tallseth

+0

+1, gracias por la respuesta. Cuando creó el script de v1.4 a v1.7, lo hizo a mano, o utilizó una herramienta automática para hacerlo, ya que me parece que el tipo de optimizador de código de un compilador sería bueno en. – stormCloud