Dibujar diagramas con PlantUML

El proyecto de software libre PlantUML busca proporcionar un mecanismo para dibujar diagramas mediante un código sencillo en texto.

PlantUML utiliza la plataforma Java para su herramienta de generación de diagramas. Esto a diferencia de Mermaid facilita que la herramienta  pueda ejecutarse localmente aunque también se dispone de un servicio de PlantUML onLine.

Instalación de PlantUML

La instalación de PlantUML en sistemas MacOS y Linux es muy sencilla ya que se encuentra disponible en varios repositorios.

Por ejemplo instalar PlantUML en MacOS es muy sencillo si ya se posee la herramienta HomeBrew. Sería tan sencillo como ejecutar el siguiente comando en la Terminal de Mac:

brew install plantuml
Una vez instalada simplemente en la Terminal ejecutaríamos el comando plantuml pasando como parámetro el fichero de texto con la información de nuestro diagrama.

Ejemplo de diagrama de estado

Como vimos en el artículo sobre dibujar diagramas con Mermaid tenemos un diagrama de estado que representa los posibles estados de un ser vivo.

En PlantUML el código sería algo como:

@startuml
[*] --> Nacer
Nacer -> Crecer
Crecer -> Reproducirse
Reproducirse -> Envejecer
Envejecer -> Morir
Morir --> [*]
@enduml

El diagrama generado tiene el siguiente aspecto:

Diagrama de estados generado con PlantUML

Además PlantUML permite exportar a un formato ASCII en texto que puede resultar interesante para leer con líneas braille.

El anterior diagrama tiene el siguiente aspecto en ASCII:

,------.                                                  
|*start|
|------|
`------'
|
|
,-----. ,------. ,------------. ,---------. ,-----.
|Nacer| |Crecer| |Reproducirse| |Envejecer| |Morir|
|-----|---|------|---|------------|---|---------|--|-----|
`-----' `------' `------------' `---------' `-----'
|
,----.
|*end|
|----|
`----'

Conclusiones

En conclusión podemos indicar que PlantUML proporciona una herramienta local sencilla y rápida para generar cierto tipo de diagramas. Proporciona algunos mecanismos de personalización que la hacen interesante para usuarios ciegos que dispongan de línea braille aunque su sintaxis quizás pueda ser más engorrosa que Mermaid para algunos tipos de diagramas de ingeniería.

Dibujar diagramas para tareas de ingeniería con Mermaid

A la hora de que una persona ciega pueda integrarse en un equipo técnico uno de los problemas más habituales es poder utilizar un lenguaje común entre todos los miembros del equipo. En muchas tareas y etapas de un proyecto técnico un diagrama puede ser indispensable para que todos los miembros del equipo entiendan el contexto y el momento del proyecto.

El dibujar un diagrama para una persona ciega puede ser una tarea muy compleja pero además entender el diagrama dibujado puede ser aún más complicado ya que los sistemas de reconocimiento de imagen aún no saben interpretar ese tipo de dibujos.

El software libre nos ofrece una solución para todo esto con el proyecto Mermaid.

¿Qué es Mermaid?

Mermaid es un proyecto de código abierto que utiliza tecnología Javascript para interpretar código y texto para obtener el dibujo de un diagrama.

Esta herramienta permite crear diagramas y visualizaciones usando texto y código.

Mermaid se inspira en la gramática de Markdown para que la creación de diagramas sea lo más sencilla posible.

El propósito inicial de Mermaid es conseguir que la documentación técnica de un proyecto pueda ser actualizada por completo, incluido sus diagramas, de forma rápida y eficiente.

Mermaid permite dibujar diagramas de estado, diagramas de clase, diagramas de Gantt, diagramas entidad/relación, diagramas de secuencia y diagramas de barras. Incluso permite incorporar nuevos tipos de diagramas.

Ejemplo de diagrama

Con Mermaid dibujar por ejemplo un diagrama de los estados vitales es tan sencillo como escribir un texto como el siguiente:

stateDiagram-v2
accDescr: Diagrama de estados vitales
[*] --> Nacer
Nacer --> Crecer
Crecer --> Reproducirse
Reproducirse --> Envejecer
Envejecer --> Morir
Morir --> [*]

El diagrama obtenido es el siguiente:

Diagrama de estados vitales dibujado por Mermaid

Con muy pocas líneas de texto bastante comprensible una persona ciega y otra persona que interprete mejor la información en diagramas pueden comunicarse y trabajar juntas.

Queremos ser más que clientes, queremos xCode accesible

Apple, al igual que otras grandes empresas de tecnología, está trabajando desde hace años en incluir características de accesibilidad en sus productos porque han comprendido que las personas con discapacidad pueden ser buenos clientes. Este enfoque empresarial beneficia a la mayoría de las personas pero en algunos casos es insuficiente: las personas con discapacidad además de clientes queremos ser trabajadores, creadores, colaboradores y apple, al igual que estas otras grandes empresas tecnológicas, no ven a las personas con discapacidad como personas que puedan trabajar en tecnología ya que las herramientas para desarrollo software, diseño y gestión de proyectos u otras herramientas y aplicaciones relacionadas con el trabajo del software no incluyen tantas características de accesibilidad como otras aplicaciones publicadas por estas empresas.

Colaborando para mejorar

Siempre he considerado que para conseguir algo es mejor comenzar a trabajar en ello que no lamentarse y hacer una pataleta. Si hay que quejarse, pedir algo o contribuir comunicando la realidad de este mundo de personas con diversidad es necesario utilizar los canales apropiados para que nuestras palabras y nuestras intenciones consigan el mejor resultado. Por esta razón he enviado a la dirección de eMail de Apple para temas de accesibilidad (accessibility@apple.com) un texto en inglés pidiendo que hagan xCode, su herramienta de desarrollo para crear aplicaciones para MacOS e iOS, accesible para todos para que todos podamos ser clientes y trabajadores.

Creo que una de las razones por las que hay tal escasez de aplicaciones accesibles es porque hay muy pocos desarrolladores con discapacidad ya que no hay herramientas accesibles para ser desarrollador

El texto que he enviado a Apple es el siguiente:

Hello Apple Accessibility Team,

I know that xCode, the development tool for apple developers, has many accessibility barriers.

Blind developers cannot design interfaces for MacOS and iOS apps because the Interface Builder tool is not compatible with VoiceOver and other assistive tools.

There are few developers with disabilities because the developers’ tools are not fully accessible.

I think Apple should consider people with disabilities clients and workers as well. A person with any disability can buy any product, but he cannot work because there are not any accessible tools to work with.

Xcode offers developers some tools in order to make interfaces accessible, but xCode doesn’t offer developers with disabilities an accessible way to work with xCode itself.

In conclusion, I want Apple to create an accessible development tool for everybody. I want an accessible xCode.

Un amigo me pidió que compartiese este texto porque también quiere participar para que Apple ofrezca más oportunidades a sus clientes así que aquí está el texto. Si tu también quieres participar puedes obtener este texto en formato txt y enviarlo en un correo electrónico a accessibility@apple.com.

Script para identificar nivel de indentación con VoiceOver

A la hora de escribir textos para desarrollar aplicaciones en un lenguaje de programación se utilizan una serie de caracteres para indentar el texto separándolo una distancia determinada con respecto al margen izquierdo del documento. Esto se utiliza para estructurar el código del proyecto software y obtener una mejor visualización de las diversas estructuras y áreas del archivo de código. Algunos lenguajes de programación, como Python, utilizan estos caracteres de indentación para definir bucles o subrutinas por lo que la indentación pasa a tomar mayor importancia.

Para indentar un texto se suele utilizar el caracter de espacio o el caracter de tabulación. De esta forma se pueden definir distintos niveles de indentación de forma homogénea.

Los desarrolladores con discapacidad visual que utilizan un lector de pantallas no pueden acceder a esta información de forma habitual. Aunque algunos lectores de pantallas, como las últimas versiones de Jaws, incorporan funciones para identificar cambios en la indentación del texto la mayoría de estos productos de apoyo carecen de herramientas para gestionar este atributo del texto. VoiceOver para OSX carece de esta funcionalidad pero podemos incorporar algo que nos permita consultar el nivel de indentación de una línea de texto gracias a la ampliación de funcionalidad de VoiceOver mediante Apple script.

Script para verificar el nivel de indentación de una línea de texto

Tyflos Accessible Software ha desarrollado un script para VoiceOver el cual devuelve el número de indentación del último texto verbalizado por VoiceOver.

Esta primera versión del script sólo soporta caracteres de tabulación. En futuras versiones se aportará mayor soporte para otros caracteres de indentación.

Puedes descargar el archivo comprimido del script de verificación del nivel de indentación e instalarlo en tu sistema OSX.

Para utilizarlo es necesario activar el soporte de scripts de VoiceOver y añadir un comando para VoiceOver asociado a este script.

La accesibilidad en crisis para los desarrolladores ciegos

En todas partes se habla de la accesibilidad en general, en otras partes, además, se habla de la accesibilidad a la Web. En muy pocas partes se habla de los problemas que encontramos los desarrolladores ciegos para poder diseñar y desarrollar software.

En la red se está moviendo una corriente de curiosidad sobre si una persona con ceguera puede desarrollar software. La respuesta, hablando desde mi experiencia personal como desarrollador en varios lenguajes y plataformas, es que si pero no gracias a esas grandes empresas y organizaciones que se mueven en pro de la accesibilidad. Esa accesibilidad que atrae a la gente y los medios de comunicación es para una mayoría de personas con discapacidad, con perfiles de discapacidad mayoritarios. Digo esto porque conozco la postura de grandes empresas como Sun microsystems, recientemente adquirida por Oracle, que no duda en adherirse a proyectos europeos en pro de la Accesibilidad pero ante una pregunta de un servidor sobre si sus herramientas de desarrollo serán accesibles también le contestaron que hay muy pocos desarolladores ciegos en el mundo como para tomarse el trabajo. Otra gran empresa de desarrollo de software y sistemas operativos, hablamos de Microsoft, que tiene uno de los departamentos de accesibilidad con más personal del mundo; parece que se asegura que cada nueva versión de sus diversos productos software guarden una compatibilidad hacia atrás en su interfaz para mantener la poca accesibilidad que tengan sus productos. Esto es así excepto para sus herramientas de desarrollo, donde a cada nueva versión un desarrollador ciego encontrará más y más problemas. Apple, empresa que se enorgullece de sacar todos sus productos accesibles desde la caja y con un departamento de accesibilidad bastante funcional, ante la petición de hacer más accesible su herramienta de diseño de interfaces comenta que mejor esforzarse en hacer accesible la versión que saldrá para la nueva generación de su suite de desarrollo software, suite que va con retraso y mientras un servidor diseña los interfaces de sus aplicaciones para MacOS X, iPhone e iPad utilizando matemáticas, mucha imaginación y mucha cantidad de código fuente en sus programas.

Las propias empresas de desarrollo de software para personas con discapacidad, como pueden ser Freedom scientific (creadores de Jaws), GWMicro (Window eyes) o Dolphin software (creadores de Hal) no se interesan en proporcionar soporte, scripts y mapas de ventana para sus lectores de pantalla.

Editoriales que publican sus libros o sólo en papel o en formato electrónico donde el código fuente se imprime en una imagen, o redactan las explicaciones haciendo referencia a imágenes y resultados visuales por pantalla.

Con todo esto se podría aventurar uno a decir que no se puede programar si un desarrollador no puede ver la pantalla. Incluso hay un movimiento por crear un lenguaje de programación para ciegos ya que con los actuales parece que no puede trabajar un desarrollador ciego.

La realidad es que los lenguajes de programación son, la gran mayoría, completamente accesibles. Lo inaccesible son los entornos de desarrollo o herramientas de desarrollo. ¿Para qué quiero aprender un lenguaje de programación discriminatorio que no va a utilizar ninguna empresa de desarrollo de software? Nadie me contrataría si sólo domino un lenguaje de programación para ciegos. Un desarrollador debe conocer varios lenguajes de programación y dominar el manejo de los entornos de desarrollo para dichos lenguajes. Si un entorno de desarrollo es inaccesible, como puede ser el nuevo Visual studio 2010, un desarrollador ciego puede optar por utilizar un procesador de textos común y corriente, y normalmente muy accesible, y utilizar el compilador y depurador en línea desde la consola de comandos. El problema de esta solución es que hace que el desarrollador ciego sea menos productivo que un desarrollador que utilice Visual Studio 2010 y en la actualidad las empresas valoran más la productividad del desarrollador que su situación o la calidad de su código.

En esta situación de posible baja productividad nos encontramos muchos desarrolladores ciegos obligados por cada nueva versión que sale de un entorno de desarrollo por parte de estas empresas con gran responsabilidad social. Estas empresas que condenan a muchos profesionales del desarrollo software que poseen una discapacidad visual a buscar sus propias soluciones porque ni las empresas que desarrollan sus productos de apoyo les apoyan.

La conclusión es que la respuesta inicial se convierte en: hay desarrolladores ciegos pero están en peligro de extinción gracias a los mismos que alzan el estandarte de la accesibilidad para todos.