Herramienta para crear especificaciones de software

Estoy a punto de comenzar a crear una especificación de software para una aplicación web algo compleja.

Normalmente creo un documento estructurado que describe en detalle:

1) Bloques de construcción básicos y sus propiedades, por ejemplo
1a) Usuario (nombre, apellido, correo electrónico, contraseña)
1b) Publicación de blog (título, texto, imagen, marca de tiempo de publicación)
1c) Comentario (texto, marca de tiempo de publicación)

2) Servicios internos y funciones headless que permiten operar otras partes del sistema, por ejemplo
2a) Sistema cron (permite ejecutar tareas automatizadas)
2b) Sistema de correo electrónico (permite crear una cola de correo que se entrega mediante el sistema cron)
2c ) Mecanismo ACL (¿adivina qué?)

3) Módulos y funciones visibles y sus características, por ejemplo
3a) Registro e inicio de sesión (permite al usuario [descrito en 1a] registrarse e iniciar sesión)
3b) Listado de blogs (imprime publicaciones de blog [descritas en 1b])
3c) Detalles de publicación de blog (permitir a los usuarios [1a] abrir detalles de una publicación de blog [1b] y publicar un comentario [1c])

4) Interacciones y casos de uso, por ejemplo
4a) El registro [3a] desencadena el envío de un correo electrónico de confirmación a través de [2b]
4b) La lista de publicaciones del blog [3b] se puede ordenar por nombre o marca de tiempo de publicación por cualquier visitante

... etc.

Entonces hay muchas entidades, enlaces, referencias y otras cosas dinámicas. Al final hay un buen documento que describe todas las funciones de la futura aplicación y hasta ahora ha funcionado bien.

Sin embargo, no puedo deshacerme de la sensación de que estoy tratando de inventar una rueda aquí. La pregunta es: ¿existe alguna herramienta diseñada para crear dicha especificación de producto?

Creo que si lo fuera, también podría generar algunos mapas de entidades y sus relaciones y otras cosas que me faltan aquí y que podrían ser potencialmente útiles para los desarrolladores.

Actualización 21.12.2014:

La aplicación está destinada a ser un sitio web escrito en PHP y el marco Symfony. El objetivo es tener una especificación de proyecto que sea comprensible tanto para el cliente (para aprobar la especificación describe la aplicación que el cliente quiere) como para los desarrolladores. El cliente lo necesita en oraciones fluidas con complejidad añadida a medida que continúa el documento (por lo tanto, las secciones mencionadas anteriormente 1/2/3/4 en este orden exacto). El cliente generalmente no entiende UML y tiene dificultades para imaginar cuál será el resultado.

Los desarrolladores, por otro lado, no necesitan leer un cuento antes de dormir. Necesitan información rápida sobre lo que se supone que deben crear con la posibilidad de descubrir rápidamente las dependencias y buscar información detallada sobre los objetos referidos. Ahí es donde falló mi estilo hasta ahora exitoso de escribir especificaciones y eso es principalmente lo que estoy tratando de abordar aquí.

¿La solución tiene que ser una aplicación web (lo que sugiere su etiqueta)? De no ser así, ¿en qué sistema(s) operativo(s) debe ejecutarse la solución?
¡Parece que está tratando de reinventar CASE y UML y posiblemente herramientas como Rational Rose/Enterprise Architect/Software Ideas Modeler/Umbrello!
Mi primera idea fue con Steve. ¿Qué tipo de salida espera: una gráfica (diagrama UML/ER), texto estructurado,...?
Actualicé la publicación para que otros no necesiten revisar los comentarios. Conozco herramientas de diagramación UML/Use Case/Workflow como Enterprise Architect. No creo que eso sea lo que estoy buscando. Su producción tiende a ser excelente para los desarrolladores, no tanto para otras personas. ¿O me estoy perdiendo algo? Espero una herramienta que pueda generar texto estructurado y generar también una salida gráfica para una descripción general más rápida basada en mi entrada. No me importa qué sería primero: si tuviera que hacer clic en la GUI para crear casos de uso y modelos, y la salida se generaría como un texto bien estructurado, ¡estoy de acuerdo con eso!
¿Quiere un documento grande, complejo pero estructurado? Si es así, LaTeX se ha utilizado para eso durante décadas. SI desea modelado visual/gráfico, entonces secundo a @SteveBarnes y le recomendaría que busque herramientas de modelado de arquitectura, como Rational Rose, etc. Creo que Visual Studio tiene uno básico.

Respuestas (1)

Te aconsejaría sobre UML : es un lenguaje gráfico con diferentes posibilidades de diagramas:

  • Caso de uso: es un diagrama para los clientes, podrían entender la forma en que desea desarrollar la aplicación
  • Diagrama de clases: es un diagrama para codificadores, podrían crear clases y relaciones.
  • Diagrama de secuencia: es un diagrama para codificadores/clientes, pueden ver las operaciones y las interacciones del sistema a lo largo del tiempo.
  • otros diagramas...

Aprenderá a usarlos de manera avanzada (lo básico parece muy pobre, pero para un gran proyecto, es la mejor manera de evitar la codificación para nada).

Puede usar UMLet, que es gratuito y muy inteligente (y aún se lanzó en 2018). StarUML es abandonware pero hace el trabajo (UML es la versión 1.4).