

Descubra más de La Naturaleza del Software
En inglés, la palabra “principle” corresponde a una verdad fundamental o a una proposición que sirve como fundación de un sistema de creencias, comportamientos, o una cadena de razonamiento. En español la acepción corresponde al origen o inicio de algo, y es por eso que hablamos de principios racionales, para referirnos al mismo concepto que en inglés.
Los principios son importantes en ciencia. Se parte de principios para deducir las leyes. Por ejemplo, el principio de mínima acción, que dice que la evolución temporal de todo sistema físico se da de tal manera que la acción tiende a ser la mínima posible. Esto requiere la definición de “acción”, que dependerá de si estamos hablando de mecánica clásica o relativista. Pero, una vez definido estos términos y el campo donde se aplicará, es posible deriva diversas leyes, que después se confirman mediante la experimentación.
La clave de las teorías científicas es poder encontrar estos principios que se toman como axiomas que permiten armar toda la estructura, que permite explicar cómo funcionan los sistemas físicos. Un desafío intelectual, que se nos ocurre que solo genios como Newton, Einstein o Feynman pudieron concebir.
En el desarrollo de software el establecer principios nos permite ordenar y guiar nuestra labor de una forma efectiva. Esto es lo que llamamos contexto arquitectural, que se representa de este modo:
Lo que nos dice este diagrama es que en el contexto de un negocio, que tiene una serie de guías y metas, debemos identificar los principios de negocio que permiten apalancar esos objetivos. Dado esos principios de negocios podemos elegir principios tecnológicos que se alinean con esos principios de negocio. Finalmente, las decisiones de arquitectura se derivan de estos principios, y deben estar alineadas a estos principios.
Veamos esto con un ejemplo.
Supongamos que una organización quiere “convertirse en el proveedor más ágil y eficiente de sus clientes, otorgándoles más y mejores servicios a través de internet”.
A partir de esto, podemos establecer ciertas metas o guías de negocio, como los siguientes:
G1: Adoptar métodos ágiles de desarrollo de software.
G2: Mejorar la disponibilidad de los servicios.
G3: Reducir incidentes que afecten la reputación de la empresa
Con estas guías podemos definir algunos principios de negocio:
B1: Procesos transparentes. Todos los stakeholders pueden observar en que etapa del proceso se encuentra el desarrollo e implantación de un nuevo requisito.
B2: Detección temprana de fallos. Los sistemas deben permitir que cualquier falla en el proceso sea detectada e informada lo más pronto posible a los stakeholders.
B3: Automatización. Toda operación repetitiva debe automatizarse.
Pueden notar como B1 permite apalancar G1, y así con los otros principios.
Ahora podemos definir nuestros principios tecnológicos.
T1: Entrega continua. Existe una cadencia de entrega clara y definidas de mejoras en el software.
T2: Observabilidad. Implantar trazas y bitácoras al software que permita observar el comportamiento de los sistemas.
T3: Infraestructura como código. La forma de la infraestructura se especifica en archivos del mismo modo que se escribe el código de las aplicaciones.
Con estos principios podemos tomar decisiones. Por ejemplo, implementar CI/CD usando herramientas específicas. Adoptar métodos como Kanban o XP. Implantar infraestructura como Kubernetes, etc.
Espero haber transmitido en este breve artículo la importancia de los principios, porque pretendo hablar de algunos de los más importantes en el futuro. Ahora tú, cuéntame si te hace sentido, y si has utilizado este enfoque en tu organización.
Hablemos de principios
Hola Eduardo, no entendí por qué "G1: Adoptar métodos ágiles de desarrollo de software." vendría a ser un "objetivo de negocio".