Diagrama de flujo del proceso de desarrollo de software

Diagrama de flujo del proceso de desarrollo de software: símbolos, tipos y ejemplos.

Un diagrama de flujo de un proceso de desarrollo de software convierte una secuencia de pasos, decisiones y resultados en un diagrama que cualquiera puede interpretar en segundos. Mientras que un párrafo de texto requiere una lectura atenta para comprender el orden de las operaciones y las condiciones que modifican el curso, un diagrama de flujo lo muestra espacialmente: empezar aquí, hacer esto, comprobar esa condición, bifurcar a la izquierda o a la derecha, continuar hasta el final. Esta representación espacial es la razón por la que los diagramas de flujo siguen siendo una de las herramientas de diagramación más utilizadas en la ingeniería de software, más de setenta años después de su introducción.

Esta guía abarca todo lo necesario para leer, crear y aplicar diagramas de flujo en un contexto de desarrollo de software: los símbolos estándar y el significado de cada uno, los diferentes tipos de diagramas de flujo y cuándo usar cada uno, ejemplos prácticos en un formato que se puede copiar y visualizar de inmediato, y cómo se conectan los diagramas de flujo con el código real que representan, incluyendo cómo se puede generar esa conexión automáticamente en lugar de dibujarla a mano.

Diagramas de flujo que se actualizan automáticamente

SMART TS XL Genera diagramas de flujo precisos directamente a partir de su código fuente, sin necesidad de dibujarlos manualmente.

Aprende más

¿Qué es un diagrama de flujo en el desarrollo de software?

Un diagrama de flujo es un esquema que representa un proceso, algoritmo o flujo de trabajo mediante símbolos estandarizados conectados por flechas que indican la dirección del flujo. En el desarrollo de software, los diagramas de flujo representan la lógica de un programa o proceso: la secuencia de operaciones, los puntos donde el programa toma decisiones y las diferentes rutas que puede seguir la ejecución en función de dichas decisiones.

Los diagramas de flujo tienen su origen en la ingeniería industrial de la década de 1920, donde se utilizaban para documentar procesos de fabricación. La técnica se formalizó para la informática en las décadas de 1940 y 1950, y para cuando la programación estructurada se convirtió en práctica habitual en la década de 1970, los diagramas de flujo ya eran una parte fundamental de la documentación del diseño de software. Hoy en día, los diagramas de flujo siguen utilizándose activamente para el diseño de algoritmos, la documentación de incorporación de nuevos empleados, el mapeo de procesos de negocio y la comunicación de la lógica a personas sin conocimientos técnicos, incluso a pesar de que otros tipos de diagramas más especializados (UML, diagramas de secuencia, diagramas de estado) han asumido algunas de las funciones que originalmente desempeñaban los diagramas de flujo.

¿Cuál es la diferencia entre un diagrama de flujo y un diagrama de flujo de procesos?

Estos términos se suelen usar indistintamente, y en la mayoría de los contextos esto no supone ningún problema. En ocasiones, se establece una distinción: un diagrama de flujo suele representar la lógica de un único algoritmo o programa, incluyendo decisiones, bucles y ramificaciones dentro del código. Un diagrama de flujo de procesos (o diagrama de flujo de procesos) representa con mayor frecuencia un proceso de negocio, la secuencia de actividades entre personas, departamentos o sistemas, a menudo sin la lógica de decisión detallada de un diagrama de flujo a nivel de código. En la práctica, ambos comparten símbolos y convenciones, y el término que se utilice depende en gran medida del público objetivo y de las convenciones del sector, más que de una distinción técnica estricta.

Símbolos de diagramas de flujo: La guía completa

Los símbolos de los diagramas de flujo están estandarizados para que cualquier lector, independientemente de su idioma o conocimientos previos, pueda interpretarlos correctamente. La siguiente tabla incluye todos los símbolos utilizados en los diagramas de flujo estándar para el desarrollo de software:

SímboloFormaNombreSignificado
Óvalo / Rectángulo redondeadoTerminador (Inicio/Fin)Marca el principio o el final del proceso.
RectangularProcesoRepresenta un solo paso, acción u operación.
DiamanteDecisiónUn punto de bifurcación con dos o más resultados posibles (Sí/No, Verdadero/Falso).
ParalelogramoEntrada / SalidaRepresenta la entrada o salida de datos del proceso.
HexágonoPreparaciónRepresenta un paso de configuración, como la inicialización de un contador de bucle.
▭ (con doble borde)Proceso predefinidoUna llamada a un proceso o subrutina separado y ya definido.
Comparación deRepresenta un documento impreso o generado
Pequeño círculoConectorUne dos puntos en el diagrama de flujo, a menudo utilizado para evitar que las líneas se crucen.
Triángulo (punta hacia abajo)irCombina múltiples rutas en una sola.
Triángulo (punta hacia arriba)ExtraerDivide un camino en varios
flechaLínea de flujoIndica la dirección del flujo del proceso
Conector fuera de páginaIndica que el flujo continúa en otra página.

Los dos símbolos que todo lector debe reconocer de inmediato son el rectángulo (un paso del proceso) y el rombo (un punto de decisión con múltiples salidas). Estos dos, por sí solos, abarcan la mayor parte del contenido de cualquier diagrama de flujo. El óvalo o redondeado que marca el inicio y el final completa el vocabulario mínimo necesario para interpretar correctamente la mayoría de los diagramas de flujo.

Tipos de diagramas de flujo utilizados en el desarrollo de software

Los distintos tipos de diagramas de flujo cumplen diferentes funciones. Elegir el tipo incorrecto para cada situación da como resultado un diagrama técnicamente correcto, pero más difícil de leer de lo necesario.

Tipo de diagrama de flujoQué MuestraMejor utilizado para
Diagrama de flujo del procesoPasos secuenciales en un solo procesoDocumentar un algoritmo, la lógica de una función o un procedimiento empresarial.
Diagrama de flujo del sistemaCómo se mueven los datos a través de los componentes de hardware y software.Documentación de arquitectura de alto nivel, mapeo de sistemas heredados
Diagrama de flujo de carriles (interfuncional)Pasos agrupados por la persona, el equipo o el sistema responsable.Procesos que abarcan múltiples funciones o departamentos.
Diagrama de flujo de datos (DFD)Cómo se mueven los datos entre procesos, almacenes y entidades externas.Documentar las transformaciones de datos en lugar de la lógica de control.
Diagrama de flujo de trabajoTransferencias de tareas y cadenas de aprobación en un proceso empresarialGestión de proyectos, flujos de trabajo de aprobación, enrutamiento de tickets
Diagrama de actividades UMLActividades concurrentes y secuenciales con notación UML formal.Documentación de diseño de software orientado a objetos

Diagrama de flujo de datos vs. Diagrama de flujo: ¿Cuál es la diferencia?

Este es uno de los puntos de confusión más comunes y merece una respuesta directa. Un diagrama de flujo muestra el flujo de control : el orden en que se ejecutan los pasos y las condiciones que determinan qué ruta se toma. Un diagrama de flujo de datos (DFD) muestra el flujo de datos : de dónde provienen los datos, qué procesos los transforman, dónde se almacenan y adónde van finalmente, sin mostrar necesariamente el orden secuencial de las operaciones ni la lógica de decisión.

Un diagrama de flujo responde a las preguntas "¿qué sucede, en qué orden y bajo qué condiciones?". Un diagrama de flujo de datos responde a las preguntas "¿de dónde provienen estos datos, qué los modifica y dónde terminan?". Muchos sistemas reales se benefician de ambos: un diagrama de flujo para documentar la lógica de procesamiento y un DFD para documentar cómo la información se mueve a través de esa lógica.

Ejemplos de diagramas de flujo en el desarrollo de software

La sintaxis Mermaid que se muestra a continuación se visualiza directamente en GitHub, GitLab, Notion y la mayoría de las plataformas de documentación modernas, lo que la convierte en la forma estándar de mantener los diagramas de flujo versionados junto con el código, en lugar de mantenerlos como imágenes estáticas separadas.

Diagrama de flujo del proceso básico

Este diagrama de flujo muestra el patrón canónico que todo desarrollador reconoce: un terminador para comenzar, un paso del proceso, un diamante de decisión con dos resultados y la convergencia hacia un único punto final. Todo diagrama de flujo, por complejo que sea, se construye a partir de la repetición de este mismo patrón.

Diagrama de flujo con un bucle

Los bucles en los diagramas de flujo se representan mediante una flecha que regresa a un punto de decisión anterior en lugar de continuar hacia adelante. Este es el equivalente en diagramas de flujo de un for or while En el código, el bucle es uno de los patrones que se evalúan con mayor frecuencia en los cursos de programación introductoria: "dibuje un diagrama de flujo para encontrar el mayor de tres números" y ejercicios similares casi siempre requieren un bucle o una estructura de decisión anidada.

Ejemplo de diagrama de flujo de carriles

Los diagramas de flujo (también llamados diagramas de carriles) agrupan los pasos del proceso según quién los realiza, lo que permite visualizar de inmediato las transferencias entre equipos o sistemas. Este formato es el estándar para documentar procesos de negocio que involucran a varios departamentos o terceros.

Cómo crear un diagrama de flujo del proceso de desarrollo de software

Paso 1: Defina los puntos de inicio y fin. Todo diagrama de flujo necesita un punto de inicio claro y uno o más puntos de fin claros. Si el proceso que está documentando no tiene un inicio y un final evidentes, su alcance aún no está lo suficientemente definido como para crear un diagrama de flujo eficaz.

Paso 2: Enumere cada paso en secuencia. Escriba los pasos en lenguaje sencillo antes de asignarles símbolos. Esto separa la definición lógica del diagrama y facilita la detección de errores; corregir un paso faltante en una lista de texto es mucho más rápido que en un diagrama incompleto.

Paso 3: Identifica cada punto de decisión. Revisa la lista de pasos y marca cada lugar donde la siguiente acción dependa de una condición. Cada punto de decisión se convierte en un rombo con al menos dos rutas de salida, y cada ruta debe estar etiquetada (Sí/No, Verdadero/Falso o la condición específica).

Paso 4: Asigne los símbolos correctos. Asigne un símbolo a cada paso: rectángulos para acciones, rombos para decisiones, paralelogramos para entrada/salida y óvalos para inicio y fin. El uso coherente de los símbolos permite que un diagrama de flujo sea comprensible para alguien que no esté familiarizado con el proceso específico.

Paso 5: Conectar con flechas direccionales. Cada símbolo debe tener una conexión clara de entrada y salida (excepto el inicio, que no tiene entrada, y el final, que no tiene salida). Las flechas deben seguir una dirección general consistente, normalmente de arriba abajo o de izquierda a derecha, para evitar confusiones visuales.

Paso 6: Validar recorriendo cada ruta. Siga manualmente el diagrama de flujo, recorriendo todas las rutas posibles de principio a fin. Confirme que cada rama de decisión conduce a algún lugar, que ninguna ruta termina sin llegar a un terminador y que los bucles tienen una condición de salida definida.

Herramientas de diagramas de flujo para el desarrollo de software

Para los diagramas de flujo creados manualmente, existen varias herramientas estándar en los flujos de trabajo de desarrollo de software:

Mermaid y PlantUML son herramientas para diagramas como código: el diagrama de flujo se define como texto y se genera automáticamente, lo que permite mantenerlo bajo control de versiones junto con el código fuente que documenta. Este es el enfoque recomendado para cualquier diagrama de flujo que documente la lógica del código, ya que puede actualizarse en la misma confirmación que el cambio de código que describe.

Lucidchart , Microsoft Visio y draw.io son herramientas de diagramación de propósito general con interfaces de arrastrar y soltar, adecuadas para la documentación de procesos comerciales, presentaciones y diagramas que se mantienen fuera del control de versiones.

Las herramientas de pizarra blanca (pizarras blancas físicas, Miro, FigJam) son apropiadas para sesiones de diseño colaborativo donde el diagrama de flujo es un artefacto de trabajo durante una discusión en lugar de un documento permanente.

La disyuntiva entre estas categorías radica en la sincronización: los diagramas mantenidos manualmente en Lucidchart o Visio se desactualizan a medida que cambia el proceso o el código subyacente, ya que actualizar el diagrama requiere un paso manual independiente que es fácil de olvidar. Tanto los diagramas como código como la generación automatizada solucionan este problema al vincular la precisión del diagrama a un proceso automatizado en lugar de a la memoria humana.

Generación automática de diagramas de flujo a partir de código existente

Dibujar manualmente un diagrama de flujo para un nuevo diseño funciona bien. Sin embargo, dibujar manualmente un diagrama de flujo para documentar un sistema existente, complejo y sin documentar no es escalable y produce un diagrama que ya está desactualizado cuando se termina si el código subyacente cambia durante el proceso de documentación.

Para bases de código existentes, particularmente sistemas grandes o heredados, la generación automatizada de diagramas de flujo analiza el código fuente real y produce el diagrama de flujo directamente a partir de su flujo de control, cada ifCada bucle y cada llamada a función se representan mediante el símbolo del diagrama de flujo correspondiente, sin necesidad de que un humano rastree manualmente la lógica previamente.

Esta distinción es especialmente importante para los sistemas heredados. Un programa COBOL modificado por una docena de desarrolladores a lo largo de veinte años acumula una lógica condicional que nadie comprende del todo. Un diagrama de flujo dibujado manualmente de ese programa requeriría que alguien leyera e interpretara correctamente cada línea, precisamente el problema que se supone que el diagrama debe resolver. La generación automática a partir del código fuente produce un diagrama de flujo preciso, independientemente del grado de comprensión actual del programa, ya que se deriva de la funcionalidad real del código, en lugar de basarse en la interpretación que se le da.

Cómo SMART TS XL Genera diagramas de flujo a partir de tu código fuente.

SMART TS XL Genera diagramas de flujo, gráficos de llamadas y diagramas de dependencias directamente a partir del análisis del código fuente, COBOL, JCL, Java, Python, RPG y otros lenguajes, en lugar de requerir que los desarrolladores los dibujen manualmente. Este enfoque es fundamentalmente diferente al de las herramientas de diagramación de propósito general como Lucidchart o Visio, que proporcionan lienzos de dibujo pero no tienen conocimiento de la función real del código.

La función de visualización de código analiza el flujo de control de un programa y genera automáticamente un diagrama de flujo preciso de su lógica de decisión, bifurcaciones y bucles. Para un programa COBOL heredado con décadas de lógica condicional acumulada, esto significa que se puede generar un diagrama de flujo completo y preciso en cuestión de segundos, en lugar de requerir días de lectura manual del código y dibujo del diagrama.

Dado que el diagrama de flujo se genera directamente a partir del estado actual del código fuente, no puede desincronizarse como ocurre con un diagrama mantenido manualmente. Cada vez que el programa subyacente cambia, la regeneración del diagrama de flujo produce un diagrama actualizado que refleja la lógica actual, resolviendo así el problema de sincronización que afecta a todos los equipos que dependen de la documentación de procesos dibujada manualmente.

Para los equipos que documentan sistemas complejos, la capacidad de mapeo de dependencias de aplicaciones va más allá de los diagramas de flujo de un solo programa para mostrar cómo se conectan múltiples programas, flujos de trabajo y fuentes de datos en todo un portafolio de aplicaciones, respondiendo no solo a "¿qué hace este programa?" sino también a "¿con qué se conecta este programa y qué se conecta con él?". Como se describe en el contexto de las técnicas de visualización de código , los diagramas generados automáticamente resuelven el problema de la obsolescencia que hace que la documentación mantenida manualmente sea poco confiable en cualquier sistema en desarrollo activo.

Los diagramas de flujo son una herramienta de comunicación, no solo un artefacto de documentación.

El valor de un diagrama de flujo no reside en el diagrama en sí, sino en la comprensión compartida que genera entre todos los que lo consultan. Un diagrama de flujo que representa con precisión un proceso, pero al que nadie recurre durante el desarrollo, la revisión de código o la incorporación de nuevos empleados, solo genera documentación sin aportar valor. Un diagrama de flujo que el equipo utiliza para analizar casos excepcionales, para integrar a un nuevo desarrollador en un módulo desconocido o para identificar una rama de manejo de errores faltante, ha cumplido su función.

Ese valor práctico depende de que el diagrama de flujo se mantenga actualizado. Un diagrama dibujado una sola vez durante el diseño inicial y nunca actualizado se vuelve engañoso cuando el código se desvía de él, peor que no tener ningún diagrama, porque genera una falsa sensación de seguridad. Ya sea mediante prácticas de diagramas como código que mantienen el diagrama de flujo en el mismo repositorio que el código, o mediante la generación automatizada que deriva el diagrama de flujo del estado actual del código, la disciplina de mantener el diagrama preciso es lo que distingue a los diagramas de flujo que realmente ayudan a un equipo de aquellos que se convierten en artefactos obsoletos en los que nadie confía.