Sunday, July 12, 2015

Patrones y anti-patrones

Patrones y anti-patrones en creación de soluciones de negocio basadas en software

Si un proyecto, como una totalidad, se contempla como un sistema humano, un sistema organizacional, entonces puede tomarse por sí mismo como un objeto de análisis, diseño y liberación productiva. Sistemólogos, sistémicos y sistemistas investigan numerosos proyectos desde esa perspectiva y suelen reportar sus hallazgos en términos de patrones y anti-patrones. En ocasiones haré mención de tales conceptos, por lo que se hace necesario resumirlos e ilustrarlos de manera concisa con la intención de aclararlos.

Problema: no pocos clientes se quejan de que su saldo bancario es incorrecto.

Contexto: el problema ocurre cada vez que se realizan dos operaciones al mismo tiempo sobre el mismo registro electrónico de saldo de un cliente; por ejemplo, si el cliente dispone $700 en efectivo usando un cajero electrónico al mismo tiempo en que la misma cuenta bancaria recibe un depósito en ventanilla de $200, el saldo resultante refleja sólo una de las operaciones, el saldo parece ignorar que la otra operación haya ocurrido y, por tanto, es un saldo incorrecto. Además, el saldo final es inconsistente entre diferentes casos de quejas de parte de los clientes; es decir, continuando con el ejemplo, si el saldo antes de las operaciones fuese de $1000, en algunos casos el saldo final resulta en $300 y en otros casos en $1200 cuando el saldo final correcto es $500. La causa del problema está en que al calcular el saldo final de manera simultánea por dos procesos diferentes, cada proceso partió del mismo saldo inicial y registró su propio resultado sin provisión alguna de que tal saldo inicial fue modificado en el transcurso de la operación.

Solución: modificar los procesos de modificación de saldo para que apliquen el concepto de «transacción», el cual permite que operaciones simultáneas sobre el saldo mantengan la consistencia buscada.

Lo anterior es un ejemplo del concepto de «patrón de diseño»; es decir, una regularidad en la relación tripartida entre un problema, su contexto y una solución satisfactoria y estable para dicho problema. Los patrones suelen clasificarse en categorías; por ejemplo, patrones de diseño, de análisis, de proceso, organizacionales, etc. A continuación un ejemplo de un «anti-patrón organizacional», este otro concepto suele ser la contrapartida de un patrón; es decir, la práctica de lograr una solución pero insatisfactoria o inestable.

Problema: no pocos clientes se quejan de que su saldo bancario es incorrecto.

Contexto: mismo contexto anterior.

Solución: retirar la capacidad de los clientes en general para consultar su saldo bancario de manera electrónica y crear un servicio bancario personal para tal consulta, pero sólo para los clientes que contraten tal servicio especial y paguen las comisiones adicionales debidas al esfuerzo administrativo de calcular un saldo consistente de manera manual.

La solución del anti-patrón anterior es exagerada y superficial, quizá irreal, pero sirve para aclarar un rasgo que distingue a los anti-patrones: el exceso en que se incurre debido al desconocimiento o aplicación incorrecta de otros conceptos clave; en este caso el concepto de «transacción».

No comments: