jueves, 22 de noviembre de 2012

Ingeniería del Software Orientada a Objetos

Autor:
PhD. Guillermo Choque Aspiazu
http://www.eldiario.net/
Publicado en:
Abril 28 de 2008

De acuerdo con la definición proporcionada por el Instituto de Ingenieros Eléctricos y Electrónicos de los Estados Unidos “software es la suma total de los programas de computadora, procedimientos, reglas, la documentación asociada y los datos que pertenecen a un sistema de cómputo”. Según el mismo Instituto, “un producto software es un producto diseñado para un usuario”. En este contexto, la ingeniería del software es un enfoque sistemático del desarrollo, operación, mantenimiento y retiro del software; en palabras más sencillas, se considera que “la ingeniería del software es la rama de la ingeniería que aplica los principios de la ciencia de la computación y las matemáticas para lograr soluciones costo-efectivas a los problemas de desarrollo del software”.


Se dice que el ser humano vive en un mundo de objetos, estos objetos existen en la naturaleza, en entidades hechas por el hombre, en los negocios y en los productos que se utilizan cotidianamente. Pueden ser clasificados, descritos, organizados, combinados, manipulados y creados. Por eso no es sorprendente que se proponga una visión orientada a objetos para la creación del software de computadora, una abstracción que modela el mundo de forma tal que ayuda a entenderlo y gobernarlo mejor. La primera vez que se propuso un enfoque orientado a objetos para el desarrollo del software fue a finales de los años 1960. Sin embargo, las tecnologías de objetos han necesitado más de veinte años para llegar a ser ampliamente usadas. Durante los años 1990, la ingeniería del software orientada a objetos se convirtió en el paradigma de elección para muchos productores de software y para un creciente número de sistemas de información y profesionales de la ingeniería.

Las tecnologías de objetos llevan a reutilizar, y la reutilización conduce a un desarrollo del software más rápido y a programas de mejor calidad. El software orientado a objetos es más fácil de mantener debido a que su estructura es inherentemente poco acoplada. Esto lleva a menores efectos colaterales cuando se deben hacer cambios. Los sistemas orientados a objetos son fáciles de adaptar y son altamente escalables, pudiendo crearse grandes sistemas mediante el ensamblado de subsistemas reutilizables. Hacia mediados de los años 1980, los beneficios de la programación orientada a objetos empezaron a obtener reconocimiento, y el diseño de objetos pareció ser un enfoque sensato para la gente que deseaba utilizar el lenguaje de programación orientada a objetos.

El paradigma orientado a objetos se basa en el concepto de objeto. Un objeto es aquello que tiene: (1) estado, que hace alusión a las propiedades más valores; (2) comportamiento, referido a las acciones y reacciones a mensajes y (3) identidad, referida a la propiedad que la distingue de los demás objetos. La estructura y comportamiento de objetos similares se encuentran definidos en una clase común; los términos instancia y objeto son intercambiables. Una clase es un conjunto de objetos que comparten una estructura y comportamiento común. La diferencia entre un objeto y una clase es que un objeto es una entidad concreta que existe en tiempo y espacio, mientras que una clase representa una abstracción, la “esencia” de un objeto.

La orientación a objetos puede describirse como el conjunto de disciplinas que desarrollan y modelan software de modo tal que facilitan la construcción de sistemas complejos a partir de los denominados componentes. El atractivo intuitivo de la orientación a objetos es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo real tan fielmente como sea posible. Estos conceptos y herramientas orientados a objetos son tecnologías que permiten que los problemas del mundo real sean expresados de modo fácil y natural. Las técnicas orientadas a objetos proporcionan mejoras y metodologías para construir sistemas de software complejos a partir de unidades de software modulares y reutilizables. La orientación a objetos trata de cubrir las necesidades de los usuarios finales, así como las propias de los desarrolladores de los productos software. Estas tareas se realizan mediante el modelado del mundo real. El soporte fundamental es el modelo objeto.

En el enfoque orientado a objetos las propiedades del objeto son claves. Los principios del modelo orientado a objetos son: abstracción, encapsulación, modularidad y jerarquía, fundamentalmente, y en menor grado tipificación, concurrencia y persistencia. Grady Booch en el año 1986 establece que un modelo puede ser considerado como orientado a objetos si contiene alguno de los primeros cuatro elementos siguientes: (1) Abstracción. Es una descripción simplificada o especificación de un sistema que enfatiza algunos de los detalles o propiedades del sistema, mientras suprime otros. (2) Encapsulación. En el proceso de ocultar todos los detalles de un objeto que no contribuyen a sus características esenciales. (3) Modularidad. Es la propiedad de un sistema que ha sido descompuesto en un conjunto de módulos coherentes e independientes. (4) Jerarquía o herencia. Es el orden de las abstracciones organizado por niveles. (5) Tipificación. Es la definición precisa de un objeto de tal forma que objetos de diferentes tipos no puedan ser intercambiados o, cuando mucho, puedan intercambiarse de manera muy restringida. (6) Concurrencia. Es la propiedad que distingue un objeto que está activo de uno que no lo está. (7) Persistencia. Es la propiedad de un objeto a través de la cual su existencia trasciende el tiempo, es decir, el objeto continúa existiendo después de que su creador ha dejado de existir o trasciende el espacio, es decir, la localización del objeto se mueve del espacio de dirección en que fue creado.

Existe un gran número de métodos orientados a objetos, que datan de fines del siglo pasado y de principios del presente. Muchos de los métodos pueden ser clasificados como orientados a objetos porque soportan de manera central los conceptos orientados a objetos. Algunas de las metodologías más conocidas y estudiadas hasta antes del Lenguaje de Modelado Unificado son: (1) Diseño Orientado a Objetos (OOD) propuesto por Booch. (2) Técnica para el Modelado de Objetos (OMT) de Rumbaugh. (3) Análisis Orientado a Objetos (OOA) de Coad y Yourdon. (4) Diseño Jerárquico Orientado a Objetos (HOOD). (5) Diseño Estructurado Orientado a Objetos (OOSD) de Wasserman. (6) Análisis de Sistemas Orientados a Objeto (OOSA) de Shaler y Mellor. (7) Diseño Guiado por Responsabilidades (RDD) de Wirfs y Brock, entre otros. A principios de este siglo, las metodologías más importantes de análisis y diseño de sistemas han confluido en lo que se denomina Lenguaje de Modelado Unificado (UML), bajo el respaldo del Grupo de Administración de Objetos (OMG).

El Proceso Unificado es un “proceso de desarrollo de software configurable que se adapta a través de los proyectos variados en tamaños y complejidad”. Se basa en muchos años de experiencia en el uso de la tecnología orientada a objetos para el desarrollo del software de misión crítica en una variedad de industrias por la compañía Rational, donde confluyen “los tres amigos” como se llaman a sí mismos o los tres grandes gurus de la orientación a objetos: Grady Booch, James Rumbaugh e Ivar Jacobson. A mediados de los años 1990 ya llegaba a una etapa de madurez el enfoque orientado a objetos como paradigma para el desarrollo de sistemas de información. El Grupo para la Administración de Objetos es un consorcio a nivel internacional que integra a los principales representantes de la industria de la tecnología de información orientada a objeto. El Grupo para la Administración de Objetos tiene como objetivo central la promoción, fortalecimiento e impulso de la industria orientada a objetos. Este grupo propone y adopta por consenso especificaciones entorno a la tecnología orientada a objeto. Una de las especificaciones más importantes es la adopción en 1998 del Lenguaje de Modelado Unificado como un estándar, que junto con el Proceso Unificado logran consolidar la tecnología orientada a objetos.

Algunos de los beneficios del enfoque orientado a objetos son: Primero, el uso del modelo orientado a objetos ayuda a explotar el poder expresivo de todos los lenguajes de programación basados en objetos y los orientados a objetos, como Smalltalk, Object Pascal, C++, CLOS, Ada y Java. Segundo, el uso del modelo orientado a objetos alienta la reutilización no solo del software, sino de diseños completos. Tercero, el modelo orientado a objetos produce sistemas que están construidos en formas intermedias estables y por ello son más resistentes al cambio en especificaciones y tecnología. Con lo mencionado se considera que el principal beneficio del diseño orientado a objetos es que proporciona un mecanismo para formalizar modelos de la realidad.

Para conocer más acerca del Doctor Choque y sus publicaciones, haz clic en el siguiente vínculo: