# Diagrama de flujo

El diagrama de flujo o flujograma o diagrama de actividades es la representación gráfica de un algoritmo o proceso. Se utiliza en disciplinas como programación, economía, procesos industriales y psicología cognitiva.
En Lenguaje Unificado de Modelado (UML), es un diagrama de actividades que representa los flujos de trabajo paso a paso.
Estos diagramas utilizan símbolos con significados definidos que representan los pasos del algoritmo, y representan el flujo de ejecución mediante flechas que conectan los puntos de inicio y de fin del proceso.
| Diagrama de flujo sencillo con los pasos a seguir si una lámpara no funciona. | Diagrama de actividades para un loop (bucle) |

## Normas de trabajo

Las siguientes son acciones previas a la realización del diagrama de flujo:
* Definir qué se espera obtener del diagrama de flujo.
* Identificar quién lo empleará y cómo.
* Establecer el nivel de detalle requerido.
* Determinar los límites del proceso a describir.
Los pasos a seguir para construir el diagrama de flujo son:
* Establecer el alcance del proceso a describir. De esta manera quedará fijado el comienzo y el final del diagrama. Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente.
* Identificar y listar las principales actividades/subprocesos que están incluidos en el proceso a describir y su orden cronológico.
* Si el nivel de detalle definido incluye actividades menores, listarlas también.
* Identificar y listar los puntos de decisión.
* Construir el diagrama respetando la secuencia cronológica y asignando los correspondientes símbolos.
* Prueba para ver errores

## Descripción

En UML 1.x, un diagrama de actividades es una variación del diagrama de estado UNL donde los "estados" representan operaciones, y las transiciones representan las actividades que ocurren cuando la operación se termina.
El diagrama de mensajes de UML 2.0, mientras que es similar en aspecto al diagrama de actividades UML 1.x, ahora tiene semánticas basadas en redes de Petri. En UML 2.0, el diagrama general de interacción está basado en el diagrama de actividades. El diagrama de actividad es una forma especial de diagrama de estado usado para modelar una secuencia de acciones y condiciones tomadas dentro de un proceso.
La especificación del Lenguaje de Notificación Unificado (UNL) define un diagrama de actividad como:
El propósito del diagrama de actividad es modelar un proceso de flujo de trabajo (workflow) y/o modelar operaciones.
Una operación es un servicio proporcionado por un objeto, que está disponible a través de una interfaz.
Una interfaz es un grupo de operaciones relacionadas con la semántica.

## Características

1.-Según Gómez Cejas, Guillermo. Año 1997:
* Sintética: La representación que se haga de un sistema o un proceso deberá quedar resumido en pocas hojas, de preferencia en una sola. Los diagramas extensivos dificultan su comprensión y asimilación, por tanto dejan de ser prácticos.
* Simbolizada: La aplicación de la simbología adecuada a los diagramas de sistemas y procedimientos evita a los analistas anotaciones excesivas, repetitivas y confusas en su interpretación.
* De forma visible a un sistema o un proceso: Los diagramas nos permiten observar todos los pasos de un sistema o proceso sin necesidad de leer notas extensas. Un diagrama es comparable, en cierta forma, con una fotografía aérea que contiene los rasgos principales de una región, y que a su vez permite observar estos rasgos o detalles principales.
2.-Según Chivenato, Idalberto. Año 1993:
* Permitir al analista asegurarse que ha desarrollado todos los aspectos del procedimiento.
* Dar las bases para escribir un informe claro y lógico.
* Es un medio para establecer un enlace con el personal que eventualmente operará el nuevo procedimiento.
3.-Según Gómez Rondón, Francisco. Año 1995:
* De uso, permite facilitar su empleo.
* De destino, permite la correcta identificación de actividades.
* De comprensión e interpretación, permite simplificar su comprensión.
* De interacción, permite el acercamiento y coordinación.
* De simbología, disminuye la complejidad y accesibilidad.
* De diagramación, se elabora con rapidez y no requiere de recursos sofisticados.

## Tipos de diagramas de flujo

* Formato vertical: en él, el flujo y la secuencia de las operaciones, va de arriba hacia abajo. Es una lista ordenada de las operaciones de un proceso con toda la información que se considere necesaria, según su propósito.
* Formato horizontal: en él, el flujo o la secuencia de las operaciones, va de izquierda a derecha.
* Formato panorámico: el proceso entero está representado en una sola carta y puede apreciarse de una sola mirada mucho más rápido que leyendo el texto, lo que facilita su comprensión, aun para personas no familiarizadas. Registra no solo en línea vertical, sino también horizontal, distintas acciones simultáneas y la participación de más de un puesto o departamento que el formato vertical no registra.

## Simbología y significado
### Formas comunes

El Instituto Nacional Estadounidense de Estándares (ANSI, por su siglas en inglés) estableció estándares para los diagramas de flujo y sus símbolos en los años 1960s. La Organización Internacional de Normalización (ISO, por sus siglas en inglés) adoptó los símbolos ANSI en 1970. El estándar actual, ISO 5807, fue revisado en 1985.
| Nombre | Forma | Descripción |
| Línea de flujo (Flecha) | Línea saliendo de un símbolo y apuntando a otro. | Muestra el orden de operación de los procesos. Las flechas se agregan si el flujo no es el estándar de arriba hacia abajo, de izquierda a derecha. |
| Terminal | Estadio, óvalo. | Indica el inicio o fin de un programa o subprocesos. Usualmente contienen la palabra "Inicio" o "Fin", o alguna otra frase señalando el inicio o fin de un proceso, como "presentar consulta" o "recibir producto". |
| Proceso | wtf | Representa un conjunto de operaciones que cambiar el valor, forma o ubicación de datos. |
| Decisión | Rombo. | Muestra una operación condicional que determina cuál de los dos caminos tomará el programa. La operación es comúnmente una pregunta de sí/no o una prueba de verdadero/falso |
| Entrada | Paralelogramo. | Indica el proceso de hacer entrar datos en la forma de ingresar datos. |
| Salida | Hoja de papel impresa | Indica el proceso de hacer salir datos, en la forma de mostrar resultados. |
| Anotación (Comentario) | Rectángulo abierto con una línea (que puede ser punteada) conectándolo con el símbolo correspondiente del diagrama de flujo. | Indica información adicional acerca de un paso en el programa. |
| Proceso Predefinido | Rectángulo con un doble lateral en cada lado. | Muestra, por su nombre, un proceso que ha sido definido en otro lugar. |
| Conector de Página | Pequeño círculo con una letra dentro. | Pares de conectores etiquetados reemplazan líneas largas o confusas en la página del diagrama. |
| Conector fuera de página | Plato de "Home" (béisbol) pentágono. | Un conector etiqueta para usar cuando el objetivo es otra página. |

### Otras formas

* Óvalo o Elipse: Inicio y Final (Abre y cierra el diagrama).
* Rectángulo: Actividad (Representa la ejecución de una o más actividades o procedimientos).
* Rombo: Decisión (Formula una pregunta o cuestión).
* Círculo: Conector (Representa el enlace de actividades con otra dentro de un procedimiento).
* Triángulo boca abajo: Archivo definitivo (Guarda un documento en forma permanente).
* Triángulo boca arriba: Archivo temporal (Proporciona un tiempo para el almacenamiento del documento).

## Cursograma

Se trata de la más común y práctica entre todas las clases de diagramas de flujo. Describe el flujo de información en un ente u organización, sus procesos, sistemas administrativos y de control. Permite la impresión visual de los procedimientos y una clara y lógica interpretación.

### Simbología y normas del diagrama

* Elipse: Inicio del Diagrama y Final del Diagrama
* Cuadrado: Proceso de control.
* Línea continua: Flujo de información vía formulario o documentación en soporte de papel escrito.
* Línea interrumpida: Flujo de información vía formulario digital.
* Rectángulo: Formulario o documentación. Se grafica con el doble de largo que su altura.
* Rectángulo Pequeño: Valor o medio de pago (cheque, pagaré, etc.). Se grafica con el cuádruple de largo que su altura, siendo su ancho igual al de los formularios.
* Triángulo (base inferior): Archivo definitivo.
* Triángulo Invertido (base superior): Archivo Transitorio.
* Semióvalo: Demora.
* Rombo: División entre opciones.
* Trapezoide: Carga de datos al sistema.
* Hexágono: Proceso no representado.
* Pentágono: Conector.
* Cruz de Diagonales: Destrucción de Formularios, y recreación de nuevas acciones.
Según la normativa, el flujo presupuesto es de izquierda a derecha y de arriba hacia abajo, siendo optativo el uso de flechas. Cuando el sentido es invertido (de derecha a izquierda o de abajo hacia arriba), es obligatorio el uso de la flecha.

## Historia

La paternidad del diagrama de flujo es en principio algo difusa. El método estructurado para documentar gráficamente un proceso como un flujo de pasos sucesivos y alternativos, el "proceso de diagrama de flujo", fue expuesto por Frank Gilbreth, en la Sociedad Americana de Ingenieros Mecánicos (ASME), en 1921, bajo el enunciado de "Proceso de Gráficas-Primeros pasos para encontrar el mejor modo". Estas herramientas de Gilbreth rápidamente encontraron sitio en los programas de ingeniería industrial.
Al principio de los 30, un ingeniero industrial, Allan H. Mogensen comenzó la formación de personas de negocios en Lake Placid, Nueva York, incluyendo el uso del diagrama de flujo. Art Spinanger, asistente a las clases de Mogesen, utilizó las herramientas en su trabajo en Procter & Gamble, donde desarrolló su “Programa Metódico de Cambios por Etapas”. Otro asistente al grupo de graduados en 1944, Ben S. Graham, director de ingeniería de Formcraft Standard Register Corporation, adaptó la gráfica de flujo de procesos al tratamiento de la información en su empresa. Y desarrolló la gráfica del proceso de múltiples flujos en múltiples pantallas, documentos, y sus relaciones. En 1947, ASME adoptó un conjunto de símbolos derivados de la obra original de Gilbreth como Norma ASME para los gráficos de procesos (preparada Mishad, Ramsan y Raiaan).
Sin embargo, según explica Douglas Hartree fueron originalmente Herman Goldstine y John von Neumann quienes desarrollaron el diagrama de flujo (inicialmente llamado "diagrama") para planificar los programas de ordenador. Las tablas de programación original de flujo de Goldstine y von Neumann, aparecen en un informe no publicado, "Planificación y codificación de los problemas de un instrumento de computación electrónica, la Parte II, Volumen 1 "(1947), reproducido en las obras completas de von Neumann.
Inicialmente los diagramas de flujo resultaron un medio popular para describir algoritmos de computadora, y aún se utilizan con este fin. Herramientas como los diagramas de actividad UML, pueden ser considerados como evoluciones del diagrama de flujo.
En la década de 1970 la popularidad de los diagramas de flujo como método propio de la informática disminuyó, con el nuevo hardware y los nuevos lenguajes de programación de tercera generación. Y por otra parte se convirtieron en instrumentos comunes en el mundo empresarial. Son una expresión concisa, legible y práctica de algoritmos. Actualmente se aplican en muchos campos del conocimiento, especialmente como simplificación y expresión lógica de procesos, etc.

## Ventajas

* Favorecen la comprensión del proceso al mostrarlo como un dibujo. El cerebro humano reconoce muy fácilmente los dibujos. Un buen diagrama de flujo reemplaza varias páginas de texto.
* Permiten identificar los problemas y las oportunidades de mejora del proceso. Se identifican los pasos, los flujos de los reprocesos, los conflictos de autoridad, las responsabilidades, los cuellos de botella, y los puntos de decisión.
* Muestran las interfaces cliente-proveedor y las transacciones que en ellas se realizan, facilitando a los empleados el análisis de las mismas.
* Son una excelente herramienta para capacitar a los nuevos empleados y también a los que desarrollan la tarea, cuando se realizan mejoras en el proceso.
* Al igual que el pseudocódigo, el diagrama de flujo con fines de análisis de algoritmos de programación puede ser ejecutado en un ordenador, con un IDE como Free DFD.

## Software de diseño de diagramas de flujo

Actualmente existe una gran cantidad de software para la elaboración de diagramas de flujo. A continuación se listan los programas más comunes para elaborar diagramas de flujo.
* yEd es una gran herramienta para la creación de diagramas de flujo, es de uso libre, y frecuentemente actualizado, aunque es una herramienta para la creación de diagramas en general, su pestaña de diagramas de flujo es muy completa, además tiene herramientas para automáticamente alinear el diagrama, se puede encontrar en su sitio web: https://www.yworks.com/products/yed está disponible para Windows, macOS y linux.
* La suite Microsoft Office ofrece la herramienta "Formas" (bloque Diagrama de flujo), presente en sus programas Word, Excel y Power Point, la cual permite insertar figuras para crear diagramas de flujo básicos. Otra herramienta un poco más sofisticada es Microsoft Visio, la cual además de la simbología básica de los diagramas de flujo, cuenta con herramientas para elaborar una variedad de diagramas, como diagramas UML, entre otros.
* LibreOffice Draw permite crear diagramas de flujo además de otro tipo de diagramas usados en el ambiente informático. Es considerado la versión no comercial de Microsoft Visio.
* Algunos software de gráficos profesionales, como GitMind y SmartDraw, también son buenos creadores de diagramas de flujo, ya que todos tienen plantillas ricas para descargar. XMind es también otra aplicación de mapas mentales para hacer diagramas de flujo, así como Miro o Lucidchart.
También existen aplicaciones que permiten que, una vez que un creador haya diseñado el diagrama de flujo, un usuario final lo utilice y, sobre la base de las opciones que vaya escogiendo, se le vayan mostrando las siguientes etapas hasta llegar a un resultado final. Un ejemplo de este tipo de aplicaciones es iBoske.