Ortogonalidad


Dos o más cosas (de software) son ortogonales si los cambios en una de ellas no afectan a ninguna de las otras. La ortogonalidad, además de eliminar efectos entre cosas no relacionadas, facilita los desarrollos con equipos grandes.


Un Sistema No Ortogonal

Está un helicóptero sobre el Gran Cañón, cuando el piloto, que cometió el error obvio de comer pescado para el almuerzo, repentinamente gime y se desmaya. Afortunadamente, lo deja suspendido a 30 metros sobre el suelo. Usted razona que nivel de inclinación colectiva controla la elevación, así que bajándola un poco empezaría a descender suavemente a tierra. Sin embargo, cuando lo intenta, descubre que la vida no es tan simple. La nariz del helicóptero baja, y usted comienza a hacer una espiral descendente hacia la izquierda. De pronto, descubre que está volando un sistema donde cada entrada de control tiene efectos secundarios. Baja el nivel de la mano izquierda y necesita agregar un movimiento de compensación a la palanca de la mano derecha y presionar el pedal derecho. Pero entonces cada uno de estos cambios afecta todos los otros controles otra vez. De pronto, está haciendo malabares con un sistema increíblemente complejo, donde cada cambio afecta todas las otras entradas. Su carga de trabajo es fenomenal, sus manos y pies están moviéndose constantemente, tratando de balancear todas las fuerzas que interactúan.

Los controles del helicóptero no son ortogonales, definitivamente.


Beneficios de la Ortogonalidad

Como ilustra el ejemplo del helicóptero, los sistemas no ortogonales son inherentemente más complicados para cambiar y controlar.

Queremos diseñar componentes que sean autocontenidos: independientes, y con un propósito singular y bien definido. Cuando los componentes están aislados uno del otro, sabe que puede cambiar uno sin preocuparse del resto. Mientras no cambie las interfaces externas de los componentes, puede estar confiado en que no causará problemas que se propaguen por todo el sistema.

Escribiendo sistemas ortogonales gana dos grandes beneficios: incrementa la productividad, y reduce el riesgo.

Comentarios