Me gustaría saber qué opciones están disponibles para documentar un proyecto que ya se ha desarrollado, ya que los desarrolladores que trabajaron no escribieron ni una sola página de documentación.
El proyecto no tiene más detalles que muchas páginas de scripts con funciones escritas y modificadas por desarrolladores que trabajaron en este proyecto durante los últimos 2 años. Todo lo que tengo es el esquema de la base de datos y los archivos del proyecto. Me gustaría saber si hay alguna forma de organizar este proyecto y documentarlo para que pueda ser útil para los desarrolladores que trabajarán en este proyecto en el futuro.
El proyecto fue desarrollado con PHP y MySQL. Las funciones están mal comentadas, por lo que no puedo obtener buenos resultados cuando lo ejecuto con doxygen.
fuente
The functions are poorly commented so I can't get good results when I run it with doxygen
. Intenta ejecutarlo con un depurador. Eso explicará lo que hace mucho mejor que tener una copia de los comentarios con el código fuente eliminado.Respuestas:
¿Quién leerá la documentación? ¿Para qué se utilizará la documentación? Estas son las preguntas más importantes para responder. Por ejemplo, la documentación para los desarrolladores de mantenimiento se centraría más en la estructura, mientras que la documentación para los desarrolladores que se integran con el producto se centraría más en los servicios web y la estructura de la base de datos.
En general, haga tanta documentación como sea necesario y no más. Muchas organizaciones requieren documentación porque alguien insistió en que es la mejor práctica, pero la documentación termina acumulando polvo.
Suponiendo que las personas realmente usen la documentación, no intente capturar el código y la base de datos al nivel más pequeño. Los desarrolladores mirarán el código para las minucias. En cambio, concéntrese en los detalles que no son aparentes en el código , por ejemplo:
Incluso si toda esta información no está disponible, comience ahora . Los desarrolladores que vienen después de ti te lo agradecerán.
Las buenas pruebas unitarias automatizadas o los casos de prueba también pueden ser documentación útil, aunque de difícil acceso para personas menos técnicas.
También parece que necesita hacer un cambio cultural para incluir documentación . Comience con poco pero, idealmente, el proyecto no debe "completarse" hasta que tenga al menos un nivel mínimo de documentación. Este es probablemente el paso más difícil porque lo anterior son cosas que puede controlar. Esto es algo que otros deben comprar. Sin embargo, también puede ser lo más gratificante, especialmente si el próximo proyecto que realiza incluye buena documentación.
fuente
En el pasado, he manejado una situación como esta sentándome con los diferentes propietarios de productos o usuarios avanzados, revisando sus casos de uso principales y documentando estos con un conjunto de pruebas. Puede usarlos como línea de base para el sistema cuando comience a realizar cambios en el futuro. Esto también puede ayudar a identificar áreas del sistema que no tienen un propietario o caso de uso y que posiblemente se eliminen.
Todo depende del tamaño del sistema realmente. Si este es un sistema complejo con muchas partes interesadas diferentes, podría crear un diagrama de componentes de alto nivel que detalle qué capacidades existen y dónde se satisfacen. Esto puede ser muy útil para identificar problemas arquitectónicos en el diseño del sistema.
En general, sugiero evitar la documentación pasada de moda porque quedará desactualizada y perderá el liderazgo de los desarrolladores en el futuro. Siempre trato de producir documentación viva en forma de pruebas que se mantendrán a medida que el sistema evolucione.
fuente
Primero lo primero, ¿quién es su público objetivo? ¿Futuros desarrolladores u otras personas de negocios? Con la respuesta a esa pregunta en mente:
Como otros han dicho, una descripción de alto nivel es lo primero que necesita. Explique lo que el sistema intenta hacer en el esquema más amplio de las cosas. Explique en qué se ejecuta, cómo encaja en la red y cómo se comunica con cualquier otro sistema. Luego revisaría cada pantalla, la capturaría y daría una explicación rápida de lo que hace la pantalla y cómo interactúa con cualquier otra parte del sistema. Si es para desarrolladores, manténgalo conversacional como si les estuviera explicando la aplicación por primera vez. Después de todo, ese es el punto del documento (supongo).
Cualquier procesamiento o lógica complicada usaría un diagrama de estado, diagrama de flujo de datos o diagrama de secuencia. Definitivamente haga un diagrama de entidad, luego un diseño de esquema de base de datos (¡dos cosas diferentes!). Tal vez sea un diagrama de clase básico, pero manténgalo simple, solo tenga en cuenta las cosas principales que son de interés, los desarrolladores pueden resolver esas cosas mirando el código.
Si tienes problemas para comenzar, solo finge que hay otro desarrollador allí en la habitación junto a ti, que no sabe lo primero sobre el sistema, estoy relativamente impaciente y solo necesito saber lo esencial. Luego comienza a explicar y escribe lo que dices :)
fuente
Todas las sugerencias anteriores son buenas, pero también consideraría investigar si su comunidad de usuarios ha creado alguna documentación ad-hoc. Su pregunta no especificó si alguna versión de su 'producto' (existente desde hace dos años) ha sido lanzada alguna vez a los usuarios. Si ha estado en uso y no hay documentación oficial, entonces no se ha necesitado ninguna documentación o hay algún documento 'no oficial' que puede ser rudimentario, pero que probablemente los usuarios lo consideren esencial. Intente buscar en la web artefactos que puedan representar API críticas, buscar foros, preguntar a usuarios avanzados y buscar sitios de preguntas y respuestas. Si es posible, intente escribir documentación que satisfaga una necesidad técnica o comercial.
fuente
La pregunta es, ¿desea documentarlo como es ahora o como debería ser?
Lo que leí de su pregunta es que está pensando en la documentación de la API y no tanto en la documentación del usuario, y el código tal vez no está tan bien mantenido y es críptico.
Me temo que si documenta ahora, terminará tirando la mayor parte de su trabajo, una vez que se refactorice el código.
Tomaría el siguiente enfoque:
Ahora, todavía tiene cosas sin documentar: estos pueden ser los conceptos generales, la arquitectura, etc. Para esto, realmente escribiría documentación, pero solo escribiría lo que es realmente útil y útil.
fuente