Documentar los aspectos de un proyecto

Introducción

A lo largo de la vida de un proyecto, este debe documentarse cuidadosamente. La documentación se gestiona en configuración (versiones), del mismo modo que el código: es parte integrante del proyecto y debe entregarse al mismo tiempo que la producción de los elementos técnicos.

Muchos departamentos informáticos disponen de procesos para asegurar la calidad y cumplen normas diseñadas para garantizar que, de un proyecto a otro, su producción de software madure y no empeore en diversos criterios. Uno de los autores de este libro ha tenido la oportunidad de certificar el nivel de madurez de varias grandes organizaciones de TI según la norma CMMI (Capability Maturity Model Integration) de ISACA, ahora en su versión 2 (ISACA cuenta con más de 140 000 miembros y profesionales certificados en más de 180 países).

Esta lista de comprobación es, en cierto modo, fruto de esa experiencia: representa los temas que hay que sacar a la luz, dirigir y documentar para prepararse a alcanzar el primero de los cinco niveles de madurez de CMMI, que, paradójicamente, es el nivel 2 (el nivel 1 indica una madurez no homogénea en los procesos del proyecto).

Si usted es «responsable funcional del proyecto», «jefe de proyecto», «responsable de método o de calidad», «business owner» o «scrum master»...

Características principales de la documentación de un proyecto informático

Los proyectos mal documentados rara vez llegan a buen puerto.

Una documentación pertinente, completa -sin ser excesiva-, garantiza una mejor coordinación entre todos los implicados en el proyecto, acelera la integración de los recién llegados y reduce el riesgo de conflictos, decepciones y malentendidos respecto a los entresijos del proyecto.

La documentación forma parte de los entregables de un proyecto tanto como su código.

Al igual que el código, la documentación debe gestionarse en términos de configuración (versionada, estructurada, etc.) y mantenerse actualizada. Los elementos de la documentación que estén obsoletos deben, como mínimo, marcarse como obsoletos, para evitar cualquier confusión entre los futuros lectores. Para gestionar la obsolescencia de los componentes de la documentación, puede, como primera aproximación, adjuntarlos a las grandes ramas gestionadas en su herramienta de control de versiones (Git, etc.).

Una cuidadosa documentación de los proyectos informáticos es esencial para garantizar su convergencia a medio plazo, su mantenimiento y su escalabilidad a largo plazo. La documentación facilita a los desarrolladores que vendrán detrás la comprensión y modificación del código fuente, y reduce...

Documentación de los aspectos clave y de los métodos de gestión de proyectos

En cuanto se habla de la oportunidad de un proyecto, las cuestiones clave asociadas guían naturalmente los debates en torno a este proyecto. Sin embargo, la comprensión de estas cuestiones evoluciona durante el proyecto, por lo que es importante mantener esta información actualizada a lo largo del proceso y recordar los supuestos en los que se basó cada decisión.

En algunas organizaciones, toda esta información se registra en un plan de proyecto que se actualiza periódicamente (puede tratarse de un sitio web o una aplicación dedicada alojada en un entorno como Gitlab, Obsidian, etc.), compartido y conocido por todos, que hace referencia a todos los demás documentos del proyecto, ya sean cuadros actualizados de seguimiento del progreso o documentos técnicos.

1. Necesidades que motivan la creación del proyecto

Describa el origen de los requisitos preliminares: cambio de normativa, mal funcionamiento de la solución existente, innovación, conclusiones de auditorías, deseo o necesidad de aplicar un cambio, lanzamiento de un nuevo producto, rediseño, actualización de un producto (familias de productos, tipos de productos, métodos de gestión de productos, etc.).

Más adelante en la vida del proyecto, estas necesidades impulsarán la definición de requisitos, casos de uso o user stories gestionadas en un ciclo ágil.

Describa los canales de distribución y los posibles objetivos de marketing del proyecto.

2. Ámbito de aplicación y situación

Explorar el «por qué» del proyecto.

a. Definición del problema

Presente una declaración que resuma el problema que este proyecto pretende resolver. Se puede utilizar el siguiente formato.

[describir el problema]

incumbe

[quiénes son las partes interesadas afectadas por este problema]

cuyas consecuencias son

[cuál es el impacto del problema]

una solución eficaz permitiría

[enumerar las principales ventajas de una solución eficaz]

b. Posicionamiento del producto o de la solución

Describa la posición que el producto o solución pretende ocupar en el mercado o en relación con su organización. Puede utilizarse el siguiente formato.

Para

[definición del tipo...

Arquitectura global del SI en relación con el proyecto

La arquitectura global ofrece una visión general de la arquitectura de la solución, representando sus distintos aspectos mediante diferentes vistas. Su objetivo es captar, aclarar y transmitir las decisiones de arquitectura significativas que se han tomado o se deben tomar.

La arquitectura global ofrece una visión completa de la arquitectura de la solución. Sirve de medio de comunicación entre el patrocinador y los arquitectos en relación con los puntos importantes del proyecto. La arquitectura global es el documento de referencia para las revisiones que verificarán la calidad de la arquitectura dedicada al proyecto, tanto intrínsecamente como con respecto a las normas de arquitectura de la organización.

1. Personalización de la arquitectura global

El plan de la arquitectura global puede adaptarse a la naturaleza del proyecto. Algunas secciones pueden considerarse no pertinentes o acortarse. Algunos aspectos específicos pueden requerir su propia sección adicional. Pueden añadirse apéndices para explicar determinados aspectos.

2. Alcance de la arquitectura global

Describa su arquitectura global:

  • ¿Qué necesidades se cubren? ¿Cuáles son los principales procesos/actividades y las partes interesadas involucradas? ¿Existen vínculos con otras áreas, socios comerciales, clientes finales o sistemas externos?

  • ¿Qué aplicaciones crea, sustituye o modifica el proyecto? ¿Son aplicaciones internas, B2B (Business to Business) o B2C (Business to Consumer)?

  • ¿Es el proyecto una oportunidad para construir un nuevo marco arquitectónico o una nueva infraestructura?

  • ¿Existen requisitos previos para el proyecto o vínculos con otros proyectos? ¿Puede desincronizarse el proyecto de otros proyectos?

  • ¿Se trata de un proyecto urgente o de un proyecto clásico?

  • ¿Qué no hace el proyecto o la solución? (Indíquelo explícitamente). ¿Qué elementos se excluyen del proyecto?

  • ¿La solución propuesta es general o desechable?

a. Definiciones, acrónimos y abreviaturas

Enumere todas las definiciones, siglas y abreviaturas a las que se hace referencia en la arquitectura global.

b. Resumen para los no técnicos

Describa en términos...

Fichas de «Casos de uso de negocio»

Estas fichas constituyen el núcleo de su estrategia de recopilación de requisitos de los futuros usuarios de su aplicación. Establecen un vocabulario común entre usted y ellos.

Cada caso de uso de negocio debe ir acompañado de una descripción clara (puede proporcionar un diagrama de casos de uso UML).

En el ciclo ágil de gestión de proyectos, es esencial gestionar «historias» para entregar «versiones de software» que engloben «funcionalidades».

Un ejemplo típico de historia (story) de usuario es el siguiente: Como <tipo de usuario>, quiero <...> para <...>.

Los requisitos, los modelos UML, los modelos de arquitectura (como en TOGAF) y las funcionalidades están interconectados y a menudo vinculados a historias y casos de uso. Sin embargo, sus descripciones no siempre son exhaustivas ni están formalizadas. Por el contrario, las historias y los casos de uso tienen una definición semántica clara.

Dado que un caso de uso es más detallado que una historia:

  • Algunas historias las completa el propietario del producto con una hoja de casos de uso para aclararlas.

  • El equipo de desarrollo debe actualizar o crear todos los casos de uso implicados en cada nueva iteración (sprint) para garantizar la calidad del proceso de pruebas y la eficacia de la comunicación entre el propietario...

Documentación para gestionar problemas y fallos

Debe existir un sistema de gestión de problemas/fallos.

Cuándo utilizar el formulario que aparece más abajo:

  • Si no utiliza un gestor de problemas integrado o si desea gestionar los problemas en detalle, puede utilizar un formulario de este tipo. Este formulario de defectos no es necesario si se utiliza una herramienta de pruebas, ya que la herramienta permite gestionar formularios y listas de defectos.

  • Este formulario es un medio de comunicación entre los equipos siempre que sea necesario describir elementos adicionales para un defecto determinado. No es obligatorio para todos los defectos.

Ficha de Problema/Anomalía

Campo

Descripción del campo

Comentarios y ejemplos

0 - Cabecera

Proyecto

El nombre del proyecto/subproyecto o cartera de aplicaciones, junto con el código del proyecto o cartera de aplicaciones que define el perímetro en el que es aplicable el formulario del fallo. Este campo es obligatorio al registrar el fallo.

1 - Identificación

Descripción breve

Breve identificación del fallo. Este campo es obligatorio al registrar el fallo.

Identificador del fallo

Es el identificador del fallo, idéntico al de la lista de fallos. Este campo es obligatorio al registrar el fallo.

Referencia de seguimiento

Corresponde al identificador utilizado como referencia para el seguimiento del tratamiento del fallo por un tercero o una herramienta específica. Si la lista de defectos y los formularios se gestionan manualmente, esta referencia puede ser idéntica al identificador del defecto.

Asunto o tema

Esta información puede utilizarse para agrupar los fallos por tema o asunto (Función, Código de Estado de Disposición, Código de Transacción MMI, etc.).

Nivel de prueba

Fase de la prueba en la que se produce...

Release note (nota que describe el contenido de una versión entregada)

Cada publicación en la fase de pruebas de aceptación o en producción debe incluir una descripción clara y concisa que incluya:

  • un resumen de los objetivos generales de la release;

  • el perímetro global de la publicación;

  • las licencias y los derechos asociados a la versión y sus componentes;

  • una lista de referencias [esta subsección proporciona una lista completa de todos los documentos referenciados con un estado claro: documento actualizado o no];

  • visión global [esta subsección describe el contenido del resto de las notas de publicación y explica cómo está organizado el documento];

  • características incluidas en la release [una descripción funcional que incluya las características o funcionalidades que definen la versión];

  • productos compatibles, ese producto ha sido probado en las siguientes plataformas o con los siguientes productos:

  • [Enumere los productos o plataformas].

  • [Enumere los requisitos del entorno operativo].

  • técnicas de actualización [describa el proceso de actualización desde versiones anteriores del producto, haga referencia a scripts y herramientas de instalación o actualización];

  • nuevas funcionalidades que aporta la versión;

  • funciones eliminadas en la versión;

  • errores y limitaciones conocidos;

  • principales cambios previstos...

Documentación técnica moderna de las aplicaciones y los sistemas de información

Al final del proyecto o de una release importante, hay que entregar diversos códigos, scripts, etc., pero también documentación explícita que permita iniciar el ciclo de mantenimiento de la aplicación. Esta documentación se ha ido construyendo a lo largo del proyecto y forma parte intrínseca del producto que se entrega.

Hoy en día, la documentación técnica que debe elaborarse y gestionarse en una organización adopta la forma de un «producto similar a un código informático», del mismo modo que los demás componentes de la aplicación o SI. Todos estos componentes se gestionan en configuración mediante programas informáticos como Git.

Idealmente, sus componentes deben ser los siguientes:

  • Componentes puramente documentales (¡es lo mínimo!):

  • un corpus de documentos en markdown o similar (quarto.org, Rmarkdown Obsidian, etc.) que utilicen los otros componentes;

  • los códigos de modelos gráficos (UML, C4, Archimate, etc.) utilizados para regenerar los gráficos que se incluirán en la documentación (por ejemplo: plantUML, código Mermaid o GraphviZ, etc.);

  • cualquier posible archivo gráfico SVG (cuando tenga que dibujar en lugar de generar sus gráficos, dibuje en SVG);

  • cualquier captura de pantalla de la aplicación en formato .png (utilizar software para describir wireframes, es decir, diagramas de las interfaces hombre-máquina (pantallas), es una idea excelente);

  • fichas bibliográficas (en formato .bib) en las que se describan los documentos...