Apuntes DAM
    Tema 6 de 9DI · 2º DAM

    Desarrollo de Interfaces

    Documentación de Aplicaciones

    Documentación técnica y de usuario: Javadoc y KDoc, README y CHANGELOG, manuales de usuario, ayuda integrada y contextual, y versionado semántico.

    45 min lecturaPrincipiante

    1. Documentar una aplicación

    Una aplicación sin documentación es difícil de usar, de instalar y de mantener. La documentación forma parte del producto: se planifica, se escribe mientras se desarrolla y se actualiza con cada versión.

    Tres lectores, tres documentaciones 📚

    🧑‍💻
    Desarrolladores
    Cómo está hecho: arquitectura, API, comentarios del código, cómo compilar y contribuir.
    🛠️
    Técnicos de sistemas
    Cómo instalarlo y mantenerlo: requisitos, despliegue, configuración, copias.
    🙋
    Usuarios finales
    Cómo usarlo: manual, ayuda en la propia aplicación, tutoriales y preguntas frecuentes.
    DocumentoContenidoFormato habitual
    Documentación del códigoQué hace cada clase y método, parámetros, excepcionesJavadoc, KDoc (Dokka), comentarios
    Documentación técnica / de diseñoRequisitos, arquitectura, modelo de datos, diagramas UML, decisionesMarkdown en el repositorio, wiki, Confluence
    READMEQué es, cómo instalarlo y ejecutarlo, cómo contribuir, licenciaMarkdown en la raíz del proyecto
    Guía de instalación y configuraciónRequisitos, pasos, parámetros, resolución de problemasPDF, web
    Manual de usuarioTareas explicadas paso a paso con capturasPDF, web, ayuda integrada
    Ayuda en línea / contextualAyuda de la pantalla o el campo actualTooltips, F1, panel de ayuda, sistema de ayuda HTML
    Notas de la versión (changelog)Novedades, correcciones y cambios incompatiblesCHANGELOG.md, página de novedades
    Tutoriales y FAQPrimeros pasos, casos concretos, dudas frecuentesWeb, vídeo

    2. Documentar el código: Javadoc y KDoc

    Los comentarios de documentación se escriben junto al código y una herramienta genera con ellos una web de referencia (la documentación de la API de Java está hecha así). Se documenta qué hace y cómo usarlo, no cómo está programado por dentro.

    Validador.java
    1/**
    2 * Comprueba los datos introducidos en los formularios de la aplicación.
    3 * <p>
    4 * Todos los métodos son estáticos y no modifican sus argumentos.
    5 *
    6 * @author Equipo de interfaces
    7 * @version 2.1
    8 * @since 1.0
    9 * @see java.util.regex.Pattern
    10 */
    11public final class Validador {
    12
    13    /**
    14     * Indica si un NIF español tiene formato válido y su letra de control es correcta.
    15     *
    16     * @param nif el NIF a comprobar, con o sin espacios; no puede ser {@code null}
    17     * @return {@code true} si el NIF es válido
    18     * @throws NullPointerException si {@code nif} es {@code null}
    19     */
    20    public static boolean nifValido(String nif) { … }
    21
    22    /**
    23     * Calcula el precio con descuento.
    24     *
    25     * @param precio precio original en euros, mayor o igual que 0
    26     * @param descuento porcentaje de descuento entre 0 y 100
    27     * @return el precio con el descuento aplicado, redondeado a 2 decimales
    28     * @throws IllegalArgumentException si algún valor está fuera de rango
    29     * @deprecated usar {@link Tarifas#aplicarDescuento(double, int)}
    30     */
    31    @Deprecated
    32    public static double conDescuento(double precio, int descuento) { … }
    33}
    terminal
    1javadoc -d docs -author -version -encoding UTF-8 -charset UTF-8 -sourcepath src -subpackages com.empresa
    2mvn javadoc:javadoc              # con Maven: target/site/apidocs
    3./gradlew dokkaHtml              # Kotlin (KDoc) con Dokka
    • Etiquetas: @param, @return, @throws, @see, @since, @deprecated, {@link}, {@code}.
    • La primera frase es el resumen: aparece en los listados.
    • En Kotlin (KDoc) se usa Markdown y las mismas etiquetas; en C# comentarios XML (///); en JavaScript/TypeScript, JSDoc/TSDoc.
    • El README y la documentación de diseño viven en el repositorio (carpeta docs/) y se publican con MkDocs, Docusaurus o GitHub Pages.
    Programación Java. Documenta tu código como un profesional con Javadoc — David Bueno Vallejo

    3. El manual de usuario

    El manual explica cómo realizar tareas, no cómo es cada pantalla. Está escrito para alguien que no sabe programar, con el vocabulario del usuario.

    1. Introducción: para qué sirve la aplicación, a quién va dirigida y convenciones del manual.
    2. Requisitos e instalación (o cómo acceder, si es web).
    3. Primeros pasos: iniciar sesión, la pantalla principal, menús.
    4. Tareas: un apartado por tarea («Dar de alta un cliente», «Emitir una factura»), con pasos numerados, capturas señaladas y el resultado esperado.
    5. Mensajes de error y qué hacer ante cada uno.
    6. Preguntas frecuentes, glosario, índice y contacto de soporte.

    Buenas prácticas

    Un paso = una acción («Pulsa Guardar»), los nombres de botones y menús tal cual aparecen, capturas actualizadas con la versión actual y el mismo término siempre para lo mismo. Prueba el manual con un usuario real antes de publicarlo.
    Manual tecnico y Manual de usuario - Ingenieria del software — Ransacked Snake | MGS content

    4. Ayuda integrada en la aplicación

    La mejor ayuda es la que aparece en el momento y en el lugar en que se necesita, sin salir de la aplicación.

    TipoEjemploImplementación
    TooltipAl pasar el ratón sobre un iconoJavaFX Tooltip, Swing setToolTipText, HTML title, Android tooltipText
    Texto de ayuda del campo«8 números y una letra» bajo el NIFEtiquetas de ayuda y placeholder (sin sustituir a la etiqueta)
    Ayuda contextual (F1)Abre la ayuda de la pantalla o campo actualAtajo de teclado que abre la página de ayuda asociada
    Asistentes (wizards)Configuración inicial paso a pasoDiálogos encadenados
    Recorrido guiado (onboarding)Burbujas que señalan las partes de la interfaz la primera vezLibrerías como Shepherd.js o componentes propios
    Mensajes de error útiles«El NIF debe tener 9 caracteres (tiene 8)»Explicar qué ha pasado y cómo solucionarlo
    Sistema de ayudaVentana de ayuda con índice y buscadorHTML generado (Help+Manual, MkDocs), JavaHelp, CHM en Windows
    AyudaFx.java
    1// JavaFX: tooltip y ayuda contextual con F1
    2TextField nif = new TextField();
    3nif.setTooltip(new Tooltip("8 números y una letra, sin espacios"));
    4nif.setUserData("ayuda/clientes.html#nif");            // página de ayuda de este campo
    5
    6scene.getAccelerators().put(new KeyCodeCombination(KeyCode.F1), () -> {
    7    Node foco = scene.getFocusOwner();
    8    String pagina = (foco != null && foco.getUserData() != null) ? (String) foco.getUserData() : "ayuda/indice.html";
    9    WebView vista = new WebView();
    10    vista.getEngine().load(getClass().getResource("/" + pagina).toExternalForm());
    11    Stage ventana = new Stage();
    12    ventana.setTitle("Ayuda");
    13    ventana.setScene(new Scene(vista, 700, 500));
    14    ventana.show();
    15});
    🧩JS · DOMAyuda contextual con F1Medio

    Cada campo del formulario tiene un atributo data-ayuda con su explicación. Implementa la ayuda contextual: • Guarda cuál es el último elemento que ha recibido el foco (evento focusin). Al pulsar F1, si ese elemento tiene ayuda, muéstrala en #panel-ayuda (y quita el atributo hidden del panel). Evita la ayuda del navegador con preventDefault. • Si no hay ningún campo con ayuda enfocado, muestra «Selecciona un campo para ver su ayuda». • Al pulsar Escape, oculta el panel. • Además, cada campo debe tener como title su texto de ayuda (tooltip).

    index.htmlsolo lectura
    script.js
    Vista previa

    5. Guías de instalación y control de versiones de la documentación

    README.md
    1# GestiónClientes
    2
    3Aplicación de escritorio (JavaFX) para gestionar los clientes y las facturas de una pyme.
    4
    5## Requisitos
    6- Windows 10/11, macOS 13+ o Linux x64
    7- 4 GB de RAM · MySQL 8 o MariaDB 10.6
    8
    9## Instalación
    101. Descarga el instalador de la [última versión](https://github.com/empresa/gestion/releases).
    112. Ejecuta `GestionClientes-2.1.0.msi` y sigue el asistente.
    123. En el primer arranque indica los datos de conexión a la base de datos.
    13
    14## Desarrollo
    15```bash
    16git clone https://github.com/empresa/gestion.git
    17mvn javafx:run
    18```
    19
    20## Licencia
    21MIT — véase [LICENSE](LICENSE).
    CHANGELOG.md
    1## [2.1.0] - 2025-09-30
    2### Añadido
    3- Exportación de facturas a Excel.
    4### Corregido
    5- La búsqueda de clientes ignoraba las tildes (#142).
    6
    7## [2.0.0] - 2025-06-12
    8### Cambiado
    9- Nueva interfaz con modo oscuro. **Incompatible**: requiere Java 21.
    • Numera las versiones con versionado semántico (MAYOR.MENOR.PARCHE): mayor si rompe la compatibilidad, menor si añade funciones, parche si corrige errores.
    • Guarda la documentación en el mismo repositorio que el código para que evolucionen juntos y se revise en cada pull request.
    • Indica en cada documento a qué versión corresponde y su fecha.

    6. Ejercicios

    Ejercicio Práctico
    Fácil

    Documenta una clase con Javadoc

    Añade los comentarios Javadoc completos (clase, constructor y métodos, con todas las etiquetas necesarias) a esta clase y genera la documentación HTML: public class Carrito { private final List<Linea> lineas = new ArrayList<>(); public Carrito() { } public void añadir(Producto p, int cantidad) { if (cantidad <= 0) throw new IllegalArgumentException("Cantidad no válida"); lineas.add(new Linea(p, cantidad)); } public double total() { return lineas.stream().mapToDouble(Linea::importe).sum(); } public boolean estaVacio() { return lineas.isEmpty(); } }

    Ejercicio Práctico
    Medio

    Manual de usuario de una tarea

    Escribe el apartado del manual de usuario «Emitir una factura» de una aplicación de gestión. Debe tener: objetivo, requisitos previos, pasos numerados con los nombres exactos de los botones, el resultado esperado, dos mensajes de error posibles con su solución y una nota de consejo. Indica dónde irían las capturas.

    ¿Has terminado este tema?

    Crea una cuenta gratis para guardar qué temas has terminado, subir de nivel y ganar medallas.

    Guardar mi progreso