Tanto como sea posible, la especificación debe ser ejecutable, a través de rspec o doctest y marcos similares. La especificación del código debe documentarse con pruebas unitarias y un código que tenga métodos y variables bien definidos.
Luego, la documentación de la especificación (preferiblemente en una wiki) debería brindarle una visión general de las cosas a mayor nivel, y eso no cambiará mucho ni se desalineará rápidamente.
Este enfoque sin duda mantendrá la especificación y el código en sincronización y las pruebas fallarán cuando se desincronicen.
Dicho esto, en muchos proyectos, lo anterior es una especie de pastel en el cielo. En ese caso, S. Lott tiene razón, superarlo. No se mantienen sincronizados. Mire la especificación como la hoja de ruta que recibieron los desarrolladores, no un documento de lo que hicieron.
Si tener una especificación actual es muy importante, entonces debe haber un tiempo específico en el proyecto asignado para escribir (o volver a escribir) la especificación después de el código está escrito. Entonces será preciso (hasta que el código cambie).
Una alternativa a todo esto es mantener las especificaciones y el código bajo el control de la fuente y revisar los registros para garantizar que las especificaciones cambien junto con el código. Se ralentizará el proceso de desarrollo, pero si realmente es tan importante ...
Este es TAN un gran problema. Gracias por plantear el problema aquí, Chris. – DOK
Seré el segundo DOK, además, no me gusta SharePoint. +1 –