31. Documentación técnica y comunicación del conocimiento

31.1 Introducción

El software no está formado únicamente por código. También incluye decisiones, reglas de negocio, acuerdos, modelos, configuraciones, pruebas, manuales, procedimientos y conocimiento acumulado por el equipo. Si ese conocimiento no se comunica, el producto se vuelve difícil de entender, mantener y evolucionar.

La documentación técnica permite conservar y transmitir información importante sobre el sistema. Su objetivo no es llenar archivos por obligación, sino ayudar a que distintas personas puedan trabajar mejor con el software.

31.2 ¿Qué es la documentación técnica?

La documentación técnica es el conjunto de textos, diagramas, ejemplos, especificaciones y guías que explican cómo funciona, cómo se construye, cómo se usa, cómo se configura o cómo se mantiene un sistema de software.

Puede estar dirigida a desarrolladores, usuarios finales, administradores, equipos de soporte, líderes de proyecto, auditores, testers, clientes u otros actores interesados.

Idea clave: una buena documentación reduce dependencia de personas específicas y permite que el conocimiento importante no quede solamente en conversaciones o recuerdos.

31.3 ¿Por qué documentar?

Documentar ayuda a responder preguntas que aparecen durante todo el ciclo de vida del software. Cuando el sistema crece, cambia de equipo o debe ser mantenido durante años, la ausencia de documentación se convierte en un riesgo.

  • Facilita la incorporación de nuevos integrantes al equipo.
  • Permite comprender decisiones tomadas en el pasado.
  • Reduce errores al operar, configurar o modificar el sistema.
  • Ayuda a usuarios y clientes a utilizar correctamente el producto.
  • Sirve como referencia para pruebas, mantenimiento y auditorías.
  • Mejora la comunicación entre roles técnicos y no técnicos.

31.4 Documentar para una audiencia

No toda documentación sirve para todas las personas. Antes de escribir, es importante definir quién la leerá, qué problema necesita resolver y qué nivel de detalle requiere.

Audiencia Necesidad principal Ejemplo de documentación
Usuario final Aprender a usar una función o resolver una duda. Guía de uso, preguntas frecuentes o ayuda contextual.
Desarrollador Comprender el código, la arquitectura y las reglas técnicas. README, guía de instalación, diagramas y convenciones de código.
Tester Conocer reglas, flujos, datos y criterios esperados. Casos de prueba, criterios de aceptación y matriz de trazabilidad.
Soporte u operaciones Resolver incidentes y operar el sistema correctamente. Manual de despliegue, guía de monitoreo y procedimientos de recuperación.
Cliente o responsable del negocio Entender alcance, reglas, decisiones y responsabilidades. Especificación funcional, acuerdos de alcance y documentación de procesos.

31.5 Tipos de documentación en software

En un proyecto pueden existir distintos tipos de documentación. La selección depende del tamaño del sistema, la criticidad, el equipo, la metodología y las necesidades de mantenimiento.

  • Documentación de requerimientos: describe necesidades, funcionalidades, restricciones y reglas.
  • Documentación de diseño: explica componentes, responsabilidades, interfaces y decisiones.
  • Documentación de arquitectura: muestra la estructura principal del sistema y sus relaciones.
  • Documentación de código: aclara convenciones, módulos, API y comportamientos relevantes.
  • Documentación de usuario: ayuda a operar el producto desde la perspectiva del usuario final.
  • Documentación operativa: describe instalación, configuración, despliegue, monitoreo y recuperación.
  • Documentación de pruebas: registra estrategia, casos, evidencias, defectos y criterios de aceptación.

31.6 Documentación de requerimientos

La documentación de requerimientos explica qué debe resolver el sistema y bajo qué condiciones. Puede incluir objetivos, alcance, actores, reglas de negocio, requerimientos funcionales, requerimientos no funcionales, historias de usuario, casos de uso y criterios de aceptación.

Su valor principal es alinear a las partes interesadas y reducir ambigüedades antes de construir o modificar el producto.

31.7 Documentación de diseño y arquitectura

La documentación de diseño y arquitectura describe cómo está organizada la solución. No necesita explicar cada línea de código, pero sí debe permitir entender las decisiones principales y sus consecuencias.

  • Componentes principales del sistema.
  • Responsabilidades de cada módulo.
  • Interfaces entre partes del sistema.
  • Dependencias con servicios externos.
  • Decisiones técnicas relevantes y motivos.
  • Restricciones de rendimiento, seguridad o escalabilidad.

31.8 Documentación de código

El código debe ser lo más claro posible por sí mismo, pero eso no elimina la necesidad de documentación. La documentación de código ayuda cuando existe lógica compleja, decisiones no obvias, API públicas, reglas delicadas o comportamientos que no se deducen fácilmente.

Comentarios excesivos o desactualizados pueden perjudicar más de lo que ayudan. Por eso, conviene documentar el propósito, las restricciones y las razones importantes, no repetir instrucciones evidentes.

31.9 Documentación para usuarios

La documentación para usuarios debe explicar cómo realizar tareas concretas en el sistema. Debe usar lenguaje claro, pasos ordenados, capturas cuando sean útiles y ejemplos cercanos al trabajo real del usuario.

Puede tomar la forma de manuales, tutoriales, ayuda dentro de la aplicación, preguntas frecuentes, guías rápidas o mensajes contextuales.

31.10 Documentación operativa

La documentación operativa permite instalar, configurar, desplegar, monitorear y recuperar el sistema. Es especialmente importante cuando el software debe funcionar en ambientes productivos con disponibilidad, seguridad y continuidad.

  • Requisitos de instalación.
  • Variables de configuración.
  • Pasos de despliegue.
  • Procedimientos de respaldo y restauración.
  • Indicadores de monitoreo.
  • Acciones ante incidentes frecuentes.

31.11 Decisiones de arquitectura

Muchas veces, lo más valioso no es saber qué decisión se tomó, sino por qué se tomó. Registrar decisiones de arquitectura ayuda a que el equipo futuro entienda alternativas evaluadas, restricciones, beneficios y costos.

Por ejemplo, si se eligió una base de datos determinada, conviene registrar qué necesidades resolvía, qué alternativas se descartaron y qué limitaciones se aceptaron.

31.12 Comunicación del conocimiento

La documentación es una forma de comunicación, pero no la única. El conocimiento también se transmite mediante reuniones técnicas, revisiones de código, demostraciones, sesiones de aprendizaje, diagramas compartidos, conversaciones con usuarios y acompañamiento entre integrantes del equipo.

Un equipo saludable no depende de que una sola persona sepa cómo funciona una parte crítica del sistema. Debe distribuir el conocimiento para reducir riesgos y mejorar la colaboración.

31.13 Conocimiento explícito y conocimiento tácito

Tipo de conocimiento Características Ejemplo
Explícito Está registrado y puede consultarse directamente. Manual de instalación, especificación de API o diagrama de arquitectura.
Tácito Está en la experiencia de las personas y puede ser difícil de expresar. Conocer qué módulo suele fallar ante ciertos cambios o qué usuario valida una regla.

El desafío consiste en convertir el conocimiento tácito importante en conocimiento compartido, cuando sea necesario para mantener, operar o evolucionar el sistema.

31.14 Características de una buena documentación

  • Clara: usa lenguaje comprensible para su audiencia.
  • Útil: responde preguntas reales y ayuda a realizar tareas.
  • Actualizada: refleja el estado vigente del sistema.
  • Accesible: es fácil de encontrar y consultar.
  • Concreta: evita información innecesaria o repetitiva.
  • Confiable: mantiene coherencia con el código, los procesos y las decisiones reales.

31.15 Documentación viva

La documentación viva se mantiene cerca del trabajo diario y se actualiza junto con los cambios del sistema. No se trata de escribir grandes documentos que nadie consulta, sino de conservar información útil en lugares adecuados.

Puede estar integrada en repositorios, herramientas de gestión, wikis, comentarios de código, especificaciones ejecutables, diagramas versionados o manuales actualizados con cada versión.

31.16 Ejemplo práctico

Supongamos un sistema de turnos médicos. Para que pueda mantenerse correctamente, no alcanza con tener el código fuente. También sería útil contar con documentación que explique:

  • Qué tipos de usuarios existen y qué permisos tiene cada uno.
  • Cómo se calcula la disponibilidad de turnos.
  • Qué datos del paciente son obligatorios y por qué.
  • Cómo se despliega una nueva versión.
  • Qué hacer si falla el envío de recordatorios.
  • Qué decisiones se tomaron sobre seguridad y privacidad.

31.17 Errores comunes

  • Documentar solo al final del proyecto.
  • Escribir documentos extensos que nadie mantiene ni consulta.
  • Usar lenguaje demasiado técnico para audiencias no técnicas.
  • Repetir en comentarios lo que el código ya dice claramente.
  • No registrar decisiones importantes y sus motivos.
  • Guardar documentación en lugares difíciles de encontrar.
  • Permitir que la documentación quede desactualizada frente al sistema real.

31.18 Buenas prácticas

  • Definir quién necesita la documentación y para qué la usará.
  • Documentar decisiones, reglas y procedimientos que no son evidentes.
  • Mantener la documentación cerca del artefacto que describe.
  • Actualizar documentos junto con cambios importantes del sistema.
  • Usar diagramas cuando ayuden a comprender relaciones o flujos.
  • Revisar documentación como parte del proceso de desarrollo.
  • Eliminar o corregir documentación obsoleta.

31.19 Qué debes recordar

  • La documentación técnica conserva y comunica conocimiento importante del sistema.
  • Debe escribirse pensando en una audiencia y una necesidad concreta.
  • No toda documentación debe tener el mismo nivel de detalle.
  • La documentación desactualizada puede generar errores y pérdida de confianza.
  • Comunicar conocimiento también implica conversaciones, revisiones y colaboración.

31.20 Conclusión

La documentación técnica y la comunicación del conocimiento permiten que el software sea comprensible, mantenible y transferible. En proyectos reales, el conocimiento no puede depender únicamente de la memoria de algunas personas.

En el próximo tema veremos gestión de configuración, ambientes y versiones, aspectos necesarios para controlar cambios y mantener ordenado el producto a lo largo del tiempo.

Volver al índice