Documentación e Ingeniería de Software: Guía Completa
Documentación de Software
La documentación de software es un conjunto de manuales que explican el funcionamiento de una aplicación informática o programa. Debe cubrir tanto la faceta técnica (información para informáticos) como funcional (información para todos, sobre todo usuarios).
Este proceso comienza desde el principio del proyecto y nunca termina, pasando por distintas etapas según su ciclo de vida clásico:
- Fase inicial: Se planifican las fases del proyecto.
- Análisis: Se analizan los problemas a resolver.
- Diseño: Se definen los requisitos a cubrir.
- Codificación: Se utiliza código de programación, el cual se comenta para explicar las funcionalidades.
- Pruebas: Se realizan pruebas para comprobar que cada módulo cumple su función.
- Explotación: Se ponen en común todas las partes del software. En esta fase, suelen surgir fallos que se recogen para su análisis.
- Mantenimiento: Se corrigen los fallos detectados, para lo cual es fundamental una buena documentación.
Los documentos mínimos a generar son:
- Manual de usuario: Permite al usuario desenvolverse con el programa.
- Manual técnico: Dirigido a los técnicos encargados del desarrollo y mantenimiento.
- Manual de instalación: Describe los pasos a seguir para instalar el software.
En Java, la documentación del código se escribe dentro del mismo, lo cual resulta muy útil. Además, la herramienta Javadoc extrae textos y comentarios del código fuente y los transforma en páginas web (formato HTML). Para escribir comentarios, se utiliza /** ... */, pudiendo incluir etiquetas HTML para dar formato al texto.
Ingeniería de Software
Para evaluar los criterios o factores de calidad del software, se establecen métricas que indican la forma preestablecida de proceder. Algunas de estas métricas son:
- Expansión
- Independencia
- Modularidad
- Estandarización
- Tolerancia a los errores
Por su parte, las pruebas de calidad del software son el conjunto de procesos que permiten verificar (comprobar que el código funciona de acuerdo a lo pedido) y validar (el usuario valida que la aplicación funciona como ha pedido) su calidad. Existen diferentes tipos de pruebas:
- Estrés: Evalúa el comportamiento del software en situaciones límite.
- Unitaria: Se prueba cada módulo por separado.
- Integración: Se testean los módulos por separado y luego en conjunto, verificando su funcionalidad.
- Interfaces: Se prueba la interacción del usuario con el sistema, creando un plan de pruebas específico.
La metodología hace referencia a la planificación del desarrollo del software, pudiendo ser de dos tipos: ciclos de vida ágiles y clásicas.
Metodologías ágiles
Se utilizan en equipos pequeños y están orientadas a obtener resultados a corto plazo. Dos ejemplos son:
- Scrum: Organiza las tareas en ciclos cortos (sprints) de un mes de duración.
- Kanban: Las tareas se dividen en categorías y se representan en un tablero. Cada tarea es un requisito y el proceso es continuo, agregando nuevas tareas a medida que se completan las anteriores.
Metodologías clásicas o cascada
Se caracterizan por una planificación detallada del proyecto, dividiéndolo en fases secuenciales:
- Planificación: Se define el alcance del proyecto, los recursos necesarios y el cronograma.
- Definición de necesidades: Se realiza una aproximación inicial a los requisitos del software.
- Análisis: Se recopilan y examinan en detalle los requisitos del cliente.
- Diseño: Se determinan los requisitos generales de la arquitectura de la aplicación, tanto a alto nivel (sistemas) como a bajo nivel (diseño de clases).
- Codificación: Se utiliza un lenguaje de programación para crear las funciones definidas en la etapa de diseño.
- Pruebas: Se realizan pruebas de los módulos por separado para garantizar su correcta integración.
- Validación: Se verifica que el software cumple con las especificaciones originales y se instala en el entorno real de uso.
- Mantenimiento y evolución: Se realizan procedimientos correctivos y actualizaciones para dar un mantenimiento continuo al software.