Uno de los propósitos de este año 2013 ha sido retomar este blog que ha sido abandonado por ocupaciones personales entre otras cosas. Inicio con un relato que me hizo volver a algunos conceptos básicos. Lo cierto es que hace poco un alumno del IUT Cumaná de Venezuela (ahora con un nombre largo y horrible) quien estaba comenzando sus estudios de análisis y diseño de sistemas con orientación a objetos me pidió que le explicará las bases conceptuales del paradigma OO, esa explicación me llevó a revisar algunos elementos filosóficos y básicos que quedaron reflejados en un artículo sucinto, aquí les dejo la redacción:
Introducción
Realizar un software que ejecute alguna funcionalidad requiere que se identifique ampliamente el contexto en donde funcionará. Es decir, debe haber una vinculación directa del software y su propósito con el propósito del sistema donde estará inserto. Para cumplir con la relación dominio (contexto del sistema) – funcionalidad del software se debe iniciar con un proceso de abstracción que permita trasladar los conceptos que encierra el dominio según nuestra percepción.
El ser humano identifica su entorno dándole nombre a las cosas e identificando su significado (utilidad y naturaleza). El paradigma de abstracción Orientado a objetos y su correspondiente diagramación en el Lenguaje Unificado de Modelado (UML) permiten realizar parte de la tarea del diseño que conlleva a la realización del código funcional que compone a la aplicación final. Este artículo pretende establecer la importancia del modelado orientado a objetos en el proceso de elaboración del software.
El Paradigma OO
El ser humano da nombre y significado a cada uno de los elementos que lo rodea. De igual manera ocurre cuando el analista inicia la exploración del dominio para saber cuáles son los conceptos asociados con el sistema. Desde el punto de vista de Orientación de Objetos se hace una identificación de todo aquello que juegue un rol en el sistema y cómo interactúa con otros elementos, esa es la definición de objeto. Cuando los objetos identificados encajan en conceptos generales o de clasificación entonces ya se habla de clases. Un ejemplo muy sencillo es el hecho de que existen muchos carros en las calles, de diferentes marcas, colores y modelos, cada uno es un carro en lo particular pero todos vistos en conjunto clasifican como objetos del tipo carro. En definitiva la palabra Carro representa la clase y cada uno de los carros del conjunto es un objeto (instancia) de esa clase.
Cada clase conoce algo (atributos) y se comporta de alguna manera (operaciones). Además, cada clase normalmente establece una relación (colaboración) con otra clase y con ese mecanismo se define el comportamiento general del sistema. En definitiva, las clases representan la arquitectura del software y sus relaciones definen la dinámica del mismo.
El análisis de las colaboraciones entre clases permite inferir la invocación de las operaciones (métodos) que implementan las reglas del negocio. Los algoritmos definidos para las reglas del negocio definen el comportamiento global del sistema que resulta finalmente en la ejecución de sus funcionalidades. Es así como el proceso de abstracción que parte de la observación del dominio termina en un modelo arquitectónico que representa al software.
El UML (Unified Modeling Language) como herramienta de representación del software
El Lenguaje Unificado de Modelado es un instrumento determinante en el modelado de sistemas bajo el enfoque orientado a objetos que permite ver desde diferentes perspectivas al mismo sistema. Las cuatro vistas más uno (4+1 vistas) permiten hacer un enfoque aislado de cada aspecto del sistema que a su vez permite integrar con el resto de las vistas. De esta manera se reduce la complejidad y se propicia la especificación en detalle del sistema.
Dentro de UML, el modelo de clases responde al aspecto estático del sistema (la arquitectura del software), para efectos de la visión dinámica existen diagramas específicos como el de actividad y secuencia que se complementan con el de clases mediante el mecanismo de trazabilidad. El UML también aborda el enfoque de implementación mediante los diagramas de componentes y despliegue.
Existen herramientas CASE (Computer Aided Software Engineering) que permiten expresar todo el modelo del sistema software de manera que haya coherencia y trazabilidad entre los diferentes diagramas (vistas). El elemento importante de las herramientas CASE es que, en muchas de ellas, es posible generar el código junto con la base de datos. En nuestros días no se hace esta tarea con la completitud necesaria pero es posible que en un futuro se llegue a un UML ejecutable o algo muy cercano a eso.
Conclusiones
El paradigma Orientado a Objeto es la visión fundamental para desarrollar sistemas de cualquier tamaño con complejidad reducida que garantice de alguna manera un software de alta calidad. La combinación del paradigma con la visualización que provee el UML y el soporte que aportan las herramientas CASE resultan en una combinación de mucho alcance para los analistas desarrolladores. Este artículo no ha pretendido ser completo ni detallado pero si como un preámbulo para aquellos que recién incursionan en OO.