lunes, 12 de noviembre de 2018

Cinco buenas prácticas para implantar RPA (Robotic Process Automation)


Aunque RPA (Robotic Process Automation) es una disciplina o, más bien, un tipo de soluciones bastante novedosas, ya existe suficiente experiencia como para hablar de buenas prácticas para implantar RPA.Y más teniendo en cuenta que, en general, son buenas prácticas que derivan del sentido común y, sobre todo, de la innegable herencia de dos disciplinas existentes desde hace muchos años, la gestión de procesos de negocio (BPM, Business Process Management) y la Ingeniería de Software. Porque, en el fondo, no lo olvidemos, hacer un robot no deja de ser una forma algo especial de desarrollo software y porque, además, el objeto de esos desarrollos es la automatización de secciones de un proceso de negocio.

Aunque seguro que hay más consejos y buenas prácticas que vale la pena observar, en este post vamos a recoger cinco buenas prácticas que nos propone Vaibhav Jain en su libro 'Crisper Learning for UiPath'. Hay que hacer notar que el libro habla exclusivamente de RPA y, además, un RPA implementado sobre la solución de UiPath. Sin embargo, las propuestas son bastante generalistas y, además, vamos a intentar ponerlas en contexto para que se entienda mejor su sentido y la herencia de que son deudoras.

Práctica 1 - Establece el diseño del workflow antes de construir el robot


Los robots de RPA automatizan, normalmente de forma parcial, un proceso de negocio. Por tanto, esta buena práctica es muy simple: antes de ponerte a automatizar nada (esto es, antes de desarrollar), primero entiende y define bien el proceso que vas a automatizar. Esta es una buena práctica que es aplicable a cualquier automatización de procesos, la hagamos mediante la parametrización de software empresarial como un ERP o un CRM, la hagamos mediante un BPMS (Business Process Management System), la hagamos mediante un desarrollo a medida o la hagamos, en este caso, mediante RPA.

En el caso específico de RPA y UiPath se habla más de flujos o workflows que de procesos y el software que desarrollamos es un robot, de ahí la manera de formularlo: 'diseñar el workflow antes de construir el robot'. Pero la buena práctica aplica tanto a RPA como a cualquier automatización de procesos: antes de automatizar, define y optimiza bien el proceso que vas a automatizar y luego ya empieza con el software..

Práctica 2 - Divide los problemas de negocio complejos en implementaciones lógicas más simples


Esta es una buena práctica de ámbito casi general: descomponer los problemas complejos en otros más simples.

Cuando esto se lleva al ámbito de la ingeniería de software, eso conduce a la subdivisión en módulos y componentes buscando, además de tratar con problemas más simples, la posibilidad de reutilización de los componentes así definidos.

Cuando esto lo trasladamos al ámbito de RPA estamos hablando de disponer de robots que hagan tareas más sencillas y puedan ser invocados por otros. Específicamente en el caso de UiPath, una de las formas de reutilización es definir unos workflows reutilizables que luego pueden ser invocados desde otros.

Práctica 3 - Manejo de excepciones exhaustivo


Esta buena práctica la conocerán muy bien todos aquellos que se hayan enfrentado a un software real puesto en producción real.

Tendemos a definir los procesos de negocio y el software pensando en la situación más limpia, el llamado 'happy path' o 'sunny day' en que todo funciona como tiene que funcionar. Pero la experiencia demuestra que lo inesperado sucede y los errores y situaciones extrañas abundan, Y todo software, sea de automatización de procesos o no, debe estar preparado para reaccionar de una forma razonable y no catastrófica ante cualquier error que aparezca.

Lo que esta buena práctica nos está diciendo es que debemos diseñar el software, en este caso los robots, para que reacciones adecuadamente ante cualquier posible error o situación inesperada.

Cuando hablamos de una RPA basada en UiParh eso quiere decir, fundamentalmente, que tenemos que ser capaz de hacer un adecuado tratamiento de excepciones, es decir, capturar todas las excepciones posibles y prever e implementar un tratamiento adecuado.

Los mecanismos que para ello proporciona una herramienta como UiPath, las excepciones, son conceptualmente muy similares a cómo se tratan las excepciones, por ejemplo, en un lenguaje como Java.

En cualquier caso, la buena práctica nos exhorta a este tratamiento exhaustivo de errores, en este caso en forma de excepciones.

Práctica 4 - Mantener el sistema limpio


Lo que esta buena práctica quiere decir es que seamos frugales en el uso de los recursos computacionales, tanto por un mayor orden en el software como también por no agotar los recursos de la máquina.

Eso, llevado al campo de un software general nos hablaría, por ejemplo, de liberar toda memoria dinámica que ya no vayamos a utilizar, o cerrar todos los ficheros que hayamos abierto si ya hemos acabado su tratamiento.

Trasladado al caso de RPA, la idea es la misma pero se nos habla, más bien, de cerrar todas las ventanas que ya no vayamos a utilizar, todas las aplicaciones con las que ya no vayamos a interactuar o todos los ficheros cuyo tratamiento hemos finalizado.

Práctica 5 - Control de versiones y backup periódico


Esta buena práctica es bastante general para cualquier desarrollo de software. Dado que éste evoluciona, es preciso mantener un buen control de versiones, de manera que éstas sean conocidas, coherentes y se puedan gestionar, incluyendo una eventual marcha atrás si la implantación de una nueva versión nos trae problemas inesperados y graves.

¿Y qué decir del backup? Ésta es una buena práctica tan general, que apenas precisa comentario. Lo que se necesita, en realidad, es su aplicación rigurosa y continua, sea en el campo de RPA o en cualquier otro.


*****


Como se puede ver, aunque existen pequeños matices derivados del hecho de tratar con RPA y la automatización robótica de procesos de negocio, éstas buenas prácticas son mero sentido común y fruto de una experiencia de años en gestión de procesos y desarrollo de software, que antecede a RPA (Robotic Process Automation) y de la que ésta es heredera.