Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
INTRODUCCIN
El reciente aumento de aplicaciones en donde se utiliza la computadora ha sido posible debido a un hardware de bajo costo, por lo cual la demanda de software ha crecido de forma exponencial. Esto implica que son necesarias tcnicas y tecnologa eficientes de Ingeniera de Software para resolver los mltiples problemas que se derivan de las aplicaciones en donde se desarrollan sistemas software de gran tamao. La Ingeniera de Software implica seguir en cualquier proyecto de software una metodologa de desarrollo y la utilizacin de distintas tcnicas y herramientas. Los diferentes procedimientos a seguir en cualquier proyecto de Ingeniera de software son: Definicin de requerimientos, Anlisis, Diseo, Verificacin y Validacin (Pruebas de Calidad del Software), Pruebas y Mantenimiento. El presente documento intenta dar a conocer y describir los conceptos y aspectos fundamentales del diseo orientado a objetos (DOO) dentro del desarrollo de un producto software, as como las tcnicas , metodologas y herramientas actuales de dicho paradigma en la Ingeniera de software. As pues, definimos Diseo de Software como la accin de construir soluciones que satisfagan los requerimientos del cliente. Existen varias etapas en el proceso de diseo de software, a saber son: ? Entendimiento del problema ? ? Identificar una o mas soluciones ? ? Describir abstracciones de la solucin ? ? Repetir el proceso para cada abstraccin identificada hasta que el diseo este ? expresado en trminos sencillos Cualquier diseo debe ser modelado como una grfica dirigida hecha de entidades con atributos los cuales participan en relaciones. El sistema debe estar descrito a distintos niveles de abstraccin y el diseo ocurre en etapas que se traslapan. La primera idea que se tiene al construir una solucin de un determinado problema es un modelo mental que constituye el primer intento de diseo llamado comnmente diseo informal. Este diseo a medida que se va describiendo en papel utilizando tcnicas y procedimientos esquemticos y metdicos va adquiriendo forma hasta constituirse en un diseo formal equivalente. La siguiente figura ejemplifica este hecho:
Info rm a l d es ig n o ut li ne Info rm a l d es ig n M ore f o rm a l d es ig n
F i ni sh e d d es ig n
Pues bien, dentro del paradigma de la orientacin a objetos, el diseo OO es con mucho; ms complejo que el diseo estructurado clsico, ya que lo que se busca es crear un diseo genrico y abierto y no cerrado y concreto. El Diseo Orientado a Objetos se define como un diseo de sistemas que utiliza objetos auto-contenidos y clases de objetos.
Caractersticas principales del Diseo Orientado a Objetos: Los objetos son abstracciones del mundo real o entidades del sistema que se administran entre ellas mismas
u uLos
uLas
reas de datos compartidas son eliminadas. Los objetos se comunican mediante paso de parmetros
uLos
uLos objetos son componentes reutilizables uPara algunos sistemas, puede haber un mapeo obvio entre las entidades del mundo real
diferentes
u El anlisis orientado a objetos concierne al desarrollo del modelo de objetos del dominio
de la aplicacin
u El Diseo Orientado a Objetos trata del desarrollo del modelo del sistema orientado a
mtodos que fueron originalmente basados en funciones (mtodo de Yourdon) han sido adaptadas al diseo orientado a objetos. Otros mtodos como el mtodo de Booch han sido especficamente desarrolladas especficamente para el Diseo Orientado a Objetos
uEl
Diseo Orientado a Objetos es un mtodo de diseo desarrollado para soportar la programacin en Ada.
uJSD
(Jackson system development) tiene una cierta orientacin a objetos pero no contiene informacin sobre estados entidad
uLa organizacin de objetos dentro de una jerarqua uLa construccin de descripciones dinmicas de objetos que muestran como se usan los
servicios
uLa especificacin de interfaces de objetos
Objetos:
? Un objeto es una entidad que tiene un estado y un conjunto definido de ? operaciones que operan sobre este estado. ? El estado se representa mediante un conjunto de atributos del objeto. ? ? Las operaciones asociadas con el objeto proveen servicios a otros objetos ? (clientes) que requieren estos servicios cuando necesitan realizar alguna actividad de cmputo. ? Los objetos se crean de acuerdo a una definicin de la clase objeto. ? ? La definicin de la clase objeto sirve como template para los objetos. Esta ? incluye las declaraciones de todos los atributos y servicios los cuales deben estar asociados con un objeto de esta clase.
LA CLASE TRANSPORTES
El nombre del servicio requerido por algn objeto que llama. Copias de la informacin requerida para ejecutar el servicio y el nombre de quien tiene esta informacin.
uEn la practica, los mensajes se implementan a menudo mediante llamadas de
Herencia:
uLos objetos son miembros de clases que define tipos de atributos y operaciones
uLas clases pueden organizarse en jerarquas de clases donde una clase se deriva de
Animal
Mamfero
Reptil...
Canino
Felino...
? Punto de vista 1. Identificar la jerarqua de herencias es una parte fundamental del ? diseo orientado a objetos. Obviamente esto solo puede implementarse utilizando lenguajes de programacin orientados a objetos.
? ?
Punto de vista 2. La herencia es un concepto til para implementacin que permite reusar los atributos y las operaciones. La identificacin de la jerarqua de herencias en la fase de diseo pone muchas restricciones en la implementacin.
Identificacin de Objetos:
uLa identificacin de objetos es la parte ms difcil del diseo orientado a objetos
uNo hay una formula mgica para la identificacin de objetos. Se base en la experiencia y
vez
En Resumen:
DISEO DE MENSAJES
La capa del subsistema.- Contiene una representacin de cada uno de los subsistemas que le permiten al software conseguir los requisitos definidos por el cliente e implementar la infraestructura tcnica que los soporta. La capa de clases y Objetos.- Contiene las jerarquas de clase que permiten crear el sistema usando generalizaciones y especializaciones mejor definidas. Esta capa tambin contiene representaciones de diseo para cada objeto.
La capa de mensajes.- Contiene los detalles que le permiten a cada objeto comunicarse con sus colaboradores. Esta capa establece las interfaces externas e internas para el sistema. La capa de responsabilidades.- Contiene las estructuras de datos y el diseo algortmico para todo los atributos y operaciones de cada objeto. Esta pirmide de diseo se centra entonces en el diseo de un producto o sistema especfico.
II.1. EL ENFOQUE CONVENCIONAL Y EL ENFOQUE OO Los enfoques convencionales para el diseo del software aplican notaciones y heursticas diferentes para establecer correspondencias entre el modelo de anlisis y el diseo. Si recordamos la ingeniera de software clsica (imperativa), veremos que cada elemento del modelo de anlisis convencional tiene correspondencia con una o ms capas del modelo de diseo tal como lo ilustra la siguiente figura:
b a d g e
f c El modelo de Anlisis
El modelo de Diseo
10
a.- Descripcin de los objetos de datos b.- Especificacin del proceso c.- Especificacin de control d.- Diagrama Entidad-Relacin e.- Diagrama de flujo de datos D.- Diseo Procedimental D.- Diseo Procedimental A.- Diseo de Datos B.- Diseo Arquitectnico C .- Diseo de Interfaz
Al igual que el diseo de software convencional, el DOO aplica diseo de datos (cuando se representan atributos), diseo de interfaces (cuando se presenta el intercambio de mensajes) y diseo procedimental (en el diseo de operaciones), no obstante el diseo arquitectnico es diferente. La arquitectura de diseo OO se centra ms en las colaboraciones entre los objetos que con el flujo de control de datos. De esta manera las capas de la pirmide se renombran para reflejar de forma ms exacta la naturaleza del DOO. La siguiente figura muestra ahora la correspondencia entre el AOO con las correspondientes capas de la pirmide de diseo OO.
a b e
El modelo de Anlisis OO 11
El modelo de Diseo OO
M.C. Mario Rossainz Lpez D.- Responsabilidades en el diseo B.- Diseo de clases y objetos
II.2.- EL DISEO:
Bertrand Meyer sugiere los siguientes criterios para poder juzgar la capacidad que pose un mtodo de diseo en poder lograr ciertos elementos importantes tales como la modularidad: Descomponibilidad.- Facilidad con la cual un mtodo de diseo ayuda al diseador a descomponer un gran problema en subproblemas ms sencillos de resolver. Componibilidad.- Grado con el cual un mtodo de diseo asegura que los componentes de un programa (mdulos), una vez diseados y construidos, pueden reusarse para crear otros sistemas. Comprensibilidad.- Facilidad de comprensin de un componente de programa sin referencia a otra informacin o mdulos. Continuidad.- Facilidad de hacer pequeos cambios en un programa y hacer que estos se manifiesten por s mismos en cambios correspondientes solamente en no o unos pocos mdulos ms. Proteccin.- Caracterstica arquitectnica que reducir la propagacin de efectos colaterales si ocurre un error en un mdulo dado. stos criterios y principios de diseo presentados por Meyer pueden aplicarse a cualquier mtodo de diseo (incluyendo diseo estructurado), no obstante el mtodo de diseo orientado a objetos alcanza cada uno de los principios de manera ms eficiente que otros enfoques y el resultado final es una arquitectura modular que permite cumplir con todos los principios de modularidad de una manera ms eficiente.
12