La aproximación a objetos consiste en definir las características de los objetos que constituyen una aplicación para posteriormente implementar su interacción por medio del intercambio de mensajes. Un objeto comporta un aspecto estático que representa su estado por medio de variables de instancia, llamadas también atributos. Este aspecto estático queda escondido por un aspecto dinámico que representa el comportamiento del objeto.
El diseño es sin duda el primer ámbito en que los objetos facilitan el trabajo. Permiten representar las entidades del mundo real y las relaciones entre dichas entidades. Por medio de grafos que dispongas de nodos para representar a las clases y arcos para representar las relaciones de generalización de agregación de entidades, es posible visualizar un modelo de aplicación por medio de un grafico apropiado y normalmente diáfano. Una metodología orientada a objetos permite visualizar los servicios ofrecidos por las diferentes entidades.
La programación orientada a objetos se distingue de la programación clásica por su visión de los objetos como entidades activas que ejecutan comportamientos en respuesta a mensajes.
En la programación orientada a objetos un programa es un conjunto de objetos que intercambian mensajes que provocan operaciones, los cuales hacen evolucionar sus estados internos y devuelven parámetros.
Un objeto pertenece a una clase(es una instancia de clase) y una clase agrupa lógicamente a los objetos de la misma estructura y con el mismo comportamiento. Un objeto corresponde a una tupla.
Objeto= identidad + comportamiento + estado
La identidad de un objeto viene dada por su identificador (OID), único e invariable, que permite referenciar al objeto independientemente de otros objetos.
El comportamiento de un objeto viene definido por un conjunto de operaciones, métodos, aplicables al objeto y definidos en su clase de pertenencia.
El estado de un objeto es un valor que puede ser simple o valores a su vez estructurados
Clase
Una clase fabrica la estructura y el comportamiento comunes a una colección de objetos (sus instancias) y puede esquematizarse del siguiente modo.
Clase= atributos+ métodos + instanciación
Una clase es ante todo in tipo abstracto de datos que define el tipo y el comportamiento comunes a objetos (las instancias de la clase). Los atributos, llamados variables de instancia, tienen un nombre y un tipo que es, o bien un tipo de base (simple o compuesto), o bien una clase
Envío de mensajes. Protocolo de comunicación interobjeto por invocación de método publico representado por el identificador del objeto receptor, el nombre del objeto y los argumentos
Grafo de generalización
Como los tipos abstractos que ofrecen la relación subtipo, las clases pueden ser organizadas según la relación de generalización o relación es –un. Se habla entonces de grafo de clases o de grafo de herencia, porque esta relación se encuentra en la base de la herencia. Surgida de los modelos de datos semánticos, la generalización es útil para clasificar los objetos en función de sus puntos comunes (generales) y de su especificidad por un mismo grafo. Se puede definir así:
Generalización: función que hace corresponder a una clase origen, llamada subclase, una clase mas general, llamada superclase
Grafo de instanciación
La instanciación relaciona las instancias de clases(los objetos) con su clase generatriz
Instanciación: relación entre un objeto y su clase de pertenencia que ha permitido crearlo
Metaclase: clase generadora de clases (sus instancias), que agrupa en particular los métodos aplicables a las clases y las estructuras de datos comunes a todas las clases
Grafo de agregación
Las asociaciones y conexiones entre objetos pueden ser descritas a nivel de clases por la relación de agregación, que es el equivalente de la asociación entre entidades
Agregación: relación entre dos clases que específica que objetos de una clase (la clase anfitrión) son los componentes de la otra clase (la clase fuente)
El grafo de agregación permite pues capturar estas relaciones y modelizar directamente los objetos complejos; además permite considerar que una sección esta compuesta por mensajes enviados y por empleados. La agregación se simboliza por medio de un “y” lógico
Colecciones
Cuando un atributo es multivalor, su valor es una colección
Colección: construcción que permite agrupar a un conjunto o conjuntos de elementos en una estructura manipulada por medio de métodos característicos, obtenida a menudo mediante la utilización de una clase parametrizada
Herencia: es la aportación esencial de los lenguajes orientados a objetos. Pueden ser simples o múltiples y permite soportar el polimorfismo de los métodos.
La herencia es un mecanismo que permite el paso de propiedades de una clase a una subclase
Herencia múltiple: mecanismo por el cual una subclase hereda propiedades de más de una superclase
Sobrecarga: redefinición de un método heredado con un código distinto
Un método redefinido, por lo tanto, puede pues tomar diferentes formas o implementaciones, en función del tipo de objeto al que se aplica. El método es en este caso llamado polimórfico
Polimorfismo: facultad de un método de poder aplicarse a objetos de clases diferentes
Seguridad del tipado
El tipado seguro de un programa garantiza en tiempo de compilación que no se producirán errores de tipos en tiempo de ejecución. La seguridad del tipado es difícil de realizar en presencia de métodos polimorfitos. En tanto que la redefinición de un método presenta el interés de poder tener en cuenta las propiedades locales de la subclase, es interesante poder especializar no solamente el tipo del objeto receptor, sino también los tipos de los argumentos y del resultado, el principio de covariacion permite definir la conformidad de los tipos de las firmas de métodos como sigue
Covariacion: relación entre un método y un método sobrecargado en que el tipo de cada argumente del método sobrecargado puede ser mas especializado que tipo correspondiente del método heredado
Contra variación: relación entre un método y un método sobrecargado, en que el tipo de cada argumento del método heredado puede ser más general que el tipo correspondiente del método sobrecargado
Los Lenguajes Orientados a Objetos
Tipos Abstractos
Un tipo abstracto se compone de una interfaz y de una implementación. La interfaz define la visión ofrecida a los usuarios en términos de operaciones. La implementación se compone de una representación en términos de estructuras de datos y algoritmos que especifican las funciones. En los lenguajes orientados a objetos, la noción de clase permite en general la representación de tipos abstractos.
Las operaciones que caracterizan a un tipo abstracto se denominan funciones o métodos. Se designara por operación toda acción que afecte a un objeto, generalmente especificado a nivel de la clase.
La agrupación de las operaciones y datos en el interior de una misma entidad llamada objeto se denomina principiodeencapsulación. La encapsulación esconde los datos y los algoritmos dejando visibles solo las interfaces.
En un lenguaje orientado a objetos, el tipado es o bien estático, o bien dinámico. En el caso del tipado estático, el tipo de una variable se determina en la compilación. En el caso del tipado dinámico el tipo no se conoce hasta el momento de la ejecución.
Identidad de Objeto
El identificador es una propiedad de un objeto que permite distinguirlo del resto. La identificación de las entidades por medio de un identificador único es una característica distintiva de los entornos orientados a objetos: los tipos se implementan bajo la forma de clases cuyos elementos son objetos con identificadores. Los identificadores permiten organizar los objetos de una aplicación en grafos. En todos los lenguajes, el identificador de un objeto a nivel interno es un puntero a memoria. Esto puede ser manipulable directamente por parte del usuario (C++, Clos) o generado automáticamente para implementar toda variable que tenga el tipo de un objeto (Smalltalk, Object Pascal); esta variable contiene entonces el identificador del objeto referenciado.
Generalización y Herencia
Los lenguajes orientados a objetos permiten organizar las clases de objetos en jerarquía de especialización, de lo general a lo particular. Esto permite una programación por enriquecimiento progresivo.
La herencia puede ser simple (una clase solo puede heredar de una clase inmediatamente superior) o múltiple (una clase puede heredar de varias clases inmediatamente superiores). Actualmente, la mayor parte de los lenguajes dan soporte a la herencia múltiple. Sin embargo, los lenguajes totalmente orientados a objetos como Smalltalk fueron concebidos inicialmente para la herencia simple.
Envío de Mensajes
En un lenguaje orientado a objetos, la activación de un método se realiza por medio del envío de un mensaje a un objeto receptor. El mensaje esta compuesto por el selector de método (nombre) y los parámetros pasados al método. El enlace consiste en seleccionar el código del método a ejecutar en el momento de la recepción de un mensaje por parte de un objeto. El enlace puede realizarse en le ejecución o en la compilación. Así, el enlace es dinámico en Smalltalk, Clos, Object C, Spoke, es decir efectuado en tiempo de ejecución. Es estático en C++ y Object Pascal, excepto en el caso de las funciones virtuales.
Creación de los Objetos
La creación de objetos en un lenguaje orientado a objetos requiere la asignación de una zona de memoria y la inicialización del estado (variables de instancia o atributos). En general, la creación de los objetos se realiza por medio de la activación de un constructor de objetos. Existen constructores estándar que pueden ser sobrecargados.
Un constructor puede considerarse una función particular disponible a nivel de la clase. Es por ejemplo en el caso de C++. El constructor lleva el nombre de la clase. La llamada de un constructor de objeto no se considera como envío de mensaje, porque el objeto receptor no existe.
En otros lenguajes es posible crear un objeto por medio del envío de un mensaje a una clase considerada como un objeto. Es por ejemplo el caso de Smalltalk y Clos.
Destructor de los Objetos
Puede ser automática (Smalltalk, Clos Spoke) o manual (C++). La destrucción automática necesita una recogida de basura: un objeto se destruye cuando ya no es referenciado. La destrucción manual se efectúa simplemente por medio de la llamada a un destructor. Como el constructor, el destructor tiene generalmente una definición predeterminada, pero puede ser definido explícitamente por el usuario.
Metaclase
La “orientación total a objetos” conduce a considerar a una clase como un objeto. Esto presenta la ventaja de poder enviar un mensaje a una clase. El problema que se presenta entonces es definir la clase de una clase. La respuesta clásica es llamar metaclase a la clase de una clase. Una clase es entonces instancia de su metaclase, es decir que el descriptor de una clase es un objeto de la metaclase.
Los Modelos de Bases de Datos
Un lenguaje de programación orientado a objetos como Smalltalk o C++ permite crear, manipular y destruir objetos en memoria virtual. La duración de vida de un objeto esta subordinada a la duración de la ejecución del programa que lo crea. Como en todo lenguaje, es posible prolongar los objetos del programa copiándolos en ficheros para ser leídos posteriormente. Esta asociación entre lenguajes de programación y sistemas de ficheros proporciona una forma primitiva de persistencia de los objetos que presenta no pocos problemas importantes. En primer lugar, la persistencia no es transparente: debe gestionarse explícitamente en el programa o los programas que integran los objetos en los ficheros por medio de operaciones de transformación de formato fichero de objetos. Además, el acceso a grandes cantidades de objetos en memoria, controlado por el mecanismo de gestión de memoria virtual, puede tener bajos rendimientos. Finalmente, el acceso a objetos de dependencia física programa/datos y solo permite un bajo grado de concurrencia multiusuario por cuanto la unidad de acceso es todo el fichero.
La aproximación por medio de bases de datos orientadas a objetos (BDOO) aporta una solución reciente a la gestión transparente de la persistencia de los objetos
Objetivos de las Bases de Datos Orientadas a Objetos
La primera motivación para las BDOO es la necesidad de acceso a objetos persistentes por medio de programas escritos en un lenguaje orientado a objetos. Una segunda motivación, tal vez más importante, proviene de las nuevas necesidades expresadas por ámbitos de aplicaciones complejas, como la ingeniería o la multimedia
Sistema de Gestión de Bases de Datos
Una base de datos es una organización coherente de datos permanentes y accesibles para usuarios concurrentes. Las tres funciones de base de un SGBD son pues la coherencia, la permanencia y la concurrencia de acceso. Una base de datos se llama coherente si satisface el conjunto de restricciones de integridad semántica que tiene asociadas, y ellos en presencia de fallos materiales o de programación. La permanencia de los datos implica la gestión de los métodos de acceso al disco y la gestión de memoria intermedia para aumentar la velocidad de acceso a los datos. Finalmente, la concurrencia de acceso en lectura o escritura de la base debe controlarse mediante un mecanismo de gestión de transacciones. Su función es asegurar un grado de multiusuario elevado, conservando la coherencia de los datos.
A fin de inmunizar los programas de aplicación en relación a las modificaciones de las descripciones de datos, una función fundamental de un SGBD es la independencia física de los datos, que asegura el esquema conceptual
Bases de Datos Orientadas a Objetos
Base de datos orientada a objetos es una organización coherente de objetos persistentes y compartidos de modo concurrente por varios usuarios. Los problemas de los SGBD relacionales para soportar aplicaciones complejas limitan simultáneamente la productividad de los desarrolladores y de los usuarios y el rendimiento de la aplicación. Las BDOO intentan resolver estos problemas por medio de tres objetivos complementarios:
·Reducir, incluso eliminar, el disfuncionamiento entre leguajes de programación y lenguajes de base de datos, ofreciendo un único lenguaje de programación de base de datos.
·Soportar directamente los objetos arbitrariamente complejos por medio de un modelo orientado a objetos
·Compartir el código reutilizable de las aplicaciones en el interior del SGBD
Las bases de datos orientadas a objetos deben permitir el acceso transparente a objetos persistentes a partir de un lenguaje orientado a objetos. No hay definición formal de bases de datos orientadas a objetos ni de un SGBDOO. Sin embargo, se ha propuesto una definición de las funciones de un SGBDOO:
·La integridad de los datos: los objetos de la base deben satisfacer siempre las restricciones de integridad semántica, independencia de posibles fallos;
·La permanencia de los datos: los objetos se almacenan en disco independientemente de los programas que los crean, y se tiene que poder acceder rápidamente a ellos por medio de métodos de acceso adecuados;
·La gestión de transacciones: los programas de acceso a la base de datos son transacciones que verifican las propiedades de atomicidad, coherencia, aislamiento y durabilidad por medio de los mecanismos de control de concurrencia y de fiabilidad;
·La independencia física de los datos: el esquema conceptual de la base no impone una implementación de los objetos, siendo esta especifica del esquema físico;
·La posibilidad de consultas: las consultas que provienen del esquema conceptual o externo tienen que poder expresarse en un lenguaje declarativo que reste lógicamente a la optimización automática
Los SGBDOO se clasifican según el modelo soportado:
·Relacional extendido: extensión de un SGBD relacional y de su lenguaje de interfaz con los conceptos de objeto.
·Objeto persistente: extensión de un sistema de objetos para la definición y manipulación de objetos persistentes.
·Integrado: SGBDOO que soporta un nuevo modelo que integra los conceptos semánticos y orientado a objeto
Lenguajes Relacionales Extendidos
La aproximación relacional extendida se basa en la simplicidad y la madures de la tecnología relacional para añadirle capacidades de gestión de objetos. Es posible una evolución suave de lo relacional al objeto.
La Persistencia de los Objetos
La aproximación orientada a objetos tiene como objetivo el acceso uniforme a los objetos transitorios y persistentes basándose en el mismo sistema de tipos para eliminar toda mal función. La gestión de la persistencia debe ser tal que los objetos persistentes puedan ser manipulados como objetos transitorios. Además, el SGBDOO debe proporcionar un soporte mas elaborado para la manipulación de colecciones por medio de un algebra extendida a los objetos complejos. Finalmente, como el esquema de la BDOO es un grafo de clases con asociaciones, la evolución de esquema adquiere una funcionalidad importante
Leguajes BDO Integrados
La aproximación integrada puede considerarse como a medio camino entre la aproximación relacional extendida y objeto persistente para preservar las ventajas de un lenguaje declarativo y un modelo orientado a objetos. En general, el modelo posee mayor nivel semántico que un modelo orientado a objetos persistente.
Panorama De Los Métodos Orientados A Objetos
El Método OOD (Object Oriented Desing)
Este método fue definido por G. Booch. Desde el punto de vista de las aplicaciones industriales es probablemente uno de los métodos precursores de la aproximación orientada a objetos
La idea principal de OOD es sugerir a los programadores la utilización de los paquetes ADA, para implementar clases en el sentido de la aproximación orientada a objetos. De este modo cualquier objeto del sistema se representa como un paquete. Lo esencial del método esta dedicado a la elaboración del modelo estático; el modelo dinámico solamente se aborda muy parcialmente y el modelo funcional no se tiene en cuenta
Los modelos del método
OOD se centra en la definición del modelo estático y completa esta definición con algunos diagramas de estado para representar el aspecto dinámico.
Herramientas de modelización estática
Estas herramientas están constituidas por un conjunto de diagramas que permiten describir los datos a nivel lógico y a nivel físico
Diagramas de nivel lógico
Se proponen dos tipos de diagramas: los diagramas de clases y los de objetos. Los principales conceptos siguientes constituyen los elementos de estos diagramas:
Objeto: además de su definición por sus atributos, sus operaciones y su identificador, un objetos posee además un estado o un conjunto de estados que controlan si evolución en el tiempo.
Asociaciones: además de las asociaciones de herencia, de instanciación y de meta clases, el modelo estático comporta una relación que expresa un mensaje enviado por un objeto a otro. Esta relación se denomina relación de utilización
Objeto cliente: un objeto que utiliza los recursos de otro objeto.
Protocolo de un objeto: es la lista de operaciones que un objeto puede efectuar sobre las demás objetos.
Comportamiento de un objeto: es el protocolo del objeto mas la lista de operaciones que los demás objetos pueden efectuar sobre el.
Funciones de un objeto: un objeto puede ser cliente o actor cunado opera sobre otro objeto. Puede ser servidor es utilizado por los demás. Puede ser agente cuando es a la vez cliente y servidor.
Concurrencia entre objetos: un objeto puede tener un comportamiento secuencial o concurrente.
Objeto persistente: OOD menciona la persistencia de los objetos sin enunciar la naturaleza del sistema que gestionará dicha persistencia.
Un diagrama de clases describe las jerarquías de clases de objetos con un cierto número de vinculaciones entre estas clases.
Un diagrama de objetos describe, las mismas informaciones que el diagrama de clases, pero a nivel de instancias.
Diagrama de nivel físico
Los diagramas siguientes describen las implementaciones de los diagramas lógicos. El diagrama de modulo implementa el diagrama de clases. El diagrama de procesos implementa el diagrama de objetos
El modelo dinámico
Se sugieren dos diagramas para representar el aspecto dinámico: un diagrama de estados/transiciones y un diagrama de tiempo.
El diagrama de estados/transiciones se realiza para cada objeto cuyo ciclo de vida interese al programador. Es una descripción complementaria del diagrama de objetos y del diagrama de clases.
El diagrama de tiempo representa las interacciones entre los componentes de diferentes objetos.
El sistema del método
ODD traza una neta distinción entre las herramientas de descripción proporcionadas y el método de desarrollo a seguir. Este método se basa en el ciclo de desarrollo en cascada
El método propuesto sigue el sentido común y aconseja dirigir el estudio de diseño lógico según las etapas siguientes:
identificación de las clases y objetos
identificación de la semántica de las clases y objetos
identificación de las asociaciones entre clases y objetos
implementación de las clases y objetos
HOOD (Hirarchional Object Oriented Design)
El método HOOD es una síntesis de ODD, al cual extiende con maquinas abstractas técnicas de diseño de aplicaciones de tiempo real.
Este métodos solamente afecta a la dimensión estática de las aplicaciones y se limita a cubrir el nivel lógico del diseño. Es un subconjunto de ODD,
El Modelo Estático
HOOD ha introducido una relación incluye entre objetos para expresar el hecho de que un objeto incluye a otro. La posibilidad de compartir objetos también se ha introducido mediante la asociaciones use ya utilizada en ODD.
HOOD ha mejorado la representación grafica de los objetos, adoptando una representación más funcional para los objetos y explicitando las interfaces de cada tipo de objeto.
HOOD no soporta las jerarquías de clases ni la herencia
El Sistema Metodológico
HOOD preconiza el método por descomposición jerárquica, los objetos se consideran maquinas abstractas que se van refinando progresivamente.
Proporciona un gran número de reglas de diseño interesante sobre la definición de clases de objetos, de las diferentes relaciones entre los objetos, de operaciones y de interfaces y también de la visibilidad de los objetos.
OOA (Object Oriented Analysis)
OOA cubre las tres dimensiones: estática, dinámica y funcional, y utiliza respectivamente el modelo relacional extendiendo a al herencia, los diagramas de estados/transiciones y los diagramas de flujo de datos.
Los modelos del método
El modelo estático es un modelo relacional clásico, sin atributos complejos ni operaciones obre los objetos. El modelo dinámico se basa en los diagramas de estados/transiciones, sobre los que se especifican los eventos que disparan las transiciones y las operaciones que realizan las transformaciones. El modelo funcional no describe una función del sistema sino una operación de un objeto. Se basa en el DFD.
El modelo estático
A este modelo se añaden los conceptos de generalización y de asociación representad por referencias al sentido relacional. Los objetos se identifican como en el modelo relacional, por medio de claves compuestas por atributos.
Las nociones de clase y de topo se confunden y representan por medio del concepto objeto.
Los objetos se catalogan según su naturalaza, yendo de los objetos tangibles a abstracciones de alto nivel que definen roles, incidentes o interacciones.
El modelo dinámico
OOA utiliza los diagramas de estados/transición para representar la dinámica de los objetos. Cada objeto posee un ciclo de vida, descrito para una sucesión de estados cuyas transiciones son activadas por eventos.
El modelo funcional
El modelo funcional de OOA permite especificar el contenido de cada actividad asociada a un estado de un objeto. Define el procedimiento de esta actividad organizando las operaciones que lo definen, explicando los flujos de datos que circulan entere estas operaciones e introduciendo eventualmente el tiempo para limitar el desarrollo de estas operaciones.
La interacción entre los modelos
Los tres modelos interactúan entre ellos teniendo en común, o bien objetos, o bien eventos o flujos de datos, o bien operaciones. Así los diagramas de estados son descripciones detalladas de los objetos del modelo de información, y los diagramas funcionales son especificaciones detalladas de las actividades de los objetos cuando alcanzan un cierto estado.
El sistema metodológico
Se define según dos aproximaciones complementarias: una aproximación para la construcción de los modelos y otra para el análisis del problema.
El sistema de construcción de modelos
El método de OOA es una utilización ordenada de los diferentes modelos estáticos, dinámicos y funcionales.
Método de análisis
OOA recomienda la partición de una aplicación en 4 categorías:
Ámbito de la aplicación
Ámbito de los servicios
Ámbito de arquitectura
Ámbitos de implementación
OOA/OOD
El método se centra esencialmente en el nivel estático; los niveles dinámicos y funcionales no se toman en cuenta. El objetivo es aprovechar lo mejor posible la aproximación orientada a objetos para la modelización conceptual y la modelización lógica.
OOA/OOD propone un único modelo que describe el aspecto estático. Este modelo es una extensión del modelo entidad – relación hacia la representación de los objetos complejos y hacia la descripción del comportamiento activo de los objetos.
El modelo único del método
Se proponen dos modelos: un modelo de objeto conceptual y un modelo lógico.
El modelo de objeto conceptual es una extensión del modelo entidad – relación en el que se introducen los conceptos de generalización-especificación y de agregación. Cada entidad es descrita a la vez por atributos y operaciones sobre sus atributos.
El sistema metodológico
El sistema metodológico de OOA/OOD se compone de dos fases: la modelización conceptual y el diseño lógico.
OOA/OOD propone un método de modelización basado en 5 niveles de especificación:
El nivel de tema que determina los subámbitos que constituyen el ámbito de aplicación
El nivel del objeto que identifica
El nivel de la estructura que define las asociaciones
El nivel de atributo que describe
El nivel del servicio que especifica las operaciones posibles sobre los objetos y también los mensajes intercambiados por los objetos.
OMT (Object Modeling Technique)
OMT proporciona tres modelos principales para describir los aspectos estático, dinámico y funcional. El modelo estático es una extensión del modelo entidad – relación hacia los conceptos del objeto. El modelo dinámico se basa en los diagramas de estado/transiciones con especificación de los eventos que activan las transiciones, operaciones de transformaciones y atributos afectados. El modelo funcional se basa en el DFD clásico. Estos diagramas se utilizan para especificar funciones que van a operar sobre los objetos.
El modelo estático
Es una extensión del modelo entidad-relación. Las extensiones aportadas son la agregación y la generalización por una parte, y la especificación de operaciones sobre los objetos por otra. En el modelo se proponen otros conceptos, como las meta clases, las clases abstractas, las clases derivadas o las asociaciones derivadas.
El modelo dinámico
El objetivo de este modelo es describir el ciclo de vida de los objetos. El OMT utiliza los diagramas de estado/transición sobre los que se colocan los eventos que disparan transiciones y las operaciones de transformación correspondiente. El paso de un estado a otro se traduce en la modificación del valor de uno o más atributos de los objetos.
El modelo funcional
Basado en los diagramas de flujo, el modelo funcional describe los procesos de transformación de la aplicación. El modelo utilizado se basa en los diagramas de flujo de datos DFD clásicos, que comportan actores, procesos, contenedores y flujo de datos circulando entre estos elementos.
El sistema metodológico
El ciclo de desarrollo de OMT es un ciclo en cascada en el que las nociones de sistema y de componentes son introducidas como en el ciclo V. pero las únicas interacciones permitidazas son hacia la etapa anterior.
Análisis
Diseño del sistema
Diseño de los objetos
Implementación
La etapa de análisis permite elaborar los tres modelos conceptuales (estático, dinámico y funcional). Este nivel es una descripción de lo que el sistema debe hacer no de cómo hacerlo
La etapa de diseño del sistema permite definir la arquitectura, los constituyentes y los recursos del sistema informático.
La etapa de diseño de los objetos es una especificación detallada de la implementación de los objetos, independientemente de un entorno dado, pero compatible con una tecnología escogida.
OOSE (Object Oriented Software Engineering)
El método OOSE, es un método que como muchos métodos, ha sufrido la influencia de los objetos. En efecto, la definición de un sistema de información con OOSE incluye, con los objetos y su comportamiento, una descripción de las interfaces de usuario.
Los modelos del método
OOSE propone cinco modelos de descripción para describir el SI:
El modelo de necesidades que delimita las fronteras del sistema, enumerando los escenarios funcionales que lo componen.
El modelo de análisis que describe el nivel conceptual
El modelo de diseño que describe el nivel lógico
El modelo de implementación que describe el nivel físico
El modelo de pruebas que verifica la coherencia interna del sistema construido
El modelo de análisis
El modelo de análisis no es una descripción integrada del conjunto del sistema, como es el caso de las bases de datos y de la mayor parte de los métodos, sino una descripción del conjunto de las vistas que lo componen (llamadas use cases o casos de uso).
El modelo lógico y físico
El paso del nivel conceptual al nivel lógico, y posteriormente del nivel lógico al nivel físico, debe respetar el principio de trazabilidad que conserva la identidad de los objetos a lo largo de todo el ciclo de desarrollo. Esto permite identificar más fácilmente los objetos y describir los impactos eventuales de una modificación.
El sistema metodológico
El método de OOSE se basa en una doble aproximación. Una aproximación sistémica que permite descomponer el sistema de información en subsistemas y así, de forma recursiva, hasta llegar al nivel del objeto. Y una aproximación estructurada que inicializa el ciclo de desarrollo con la identificación y el análisis de las principales funciones del sistema.
El ciclo de desarrollo del método consta de las fases siguientes:
·Una fase de análisis que se descompone en dos etapas de necesidades y la especificación formal de dichas necesidades. Estas dos etapas producen respectivamente un modelo informal de análisis y un modelo conceptual formal que comporta los objetos entidades, los objetos de interfaz y los objetos de control.
·Una fase de construcción que se descompone en dos etapas: la especificación formal del sistema y su implementación. Estas dos etapas producen respectivamente un modelo lógico y un modelo físico.
·Una fase de prueba que se descompone en tres etapas: la prueba unitaria, la prueba de integración y la prueba del sistema. Estas etapas producen respectivamente informes de evaluación sobre la calidad del sistema construido
LAS INTERFACES HOMBRE-MÁQUINA
Introducción
Con el desarrollo de los microordenadores y las estaciones de trabajo, ha aumentado el número de usuarios informáticos considerablemente. Se agregaron a los usuario y los desarrolladores los usuarios-desarrolladores quienes desarrollos software complejo con herramientas simples.
Las Herramientas de interacción directa (ratón, pantalla sensible al tacto) han posibilitado la un nuevo tipo de comunicación llamado desktop metaphor. El desktop methapor consiste en la interacción con el sistema por medio de íconos gráficos que representan metáforas de los objetos cotidianos. Las metáforas se han desarrollado en el ámbito de la ofimática, donde se han materializado objetos por medio de formas gráficas evocadoras de la realidad, permitiendo un uso intuitivo de sus servicios. Varias formas gráficas se han popularizado por el Macintosh o por otras herramientas.
Esta aproximación de utilización intuitiva se ha impuesto como medio de comunicación práctica. Se han inventado varios objetos gráficos muy abstractos para simbolizar un programa.
Los entornos de interfaces modernas se componen de ventanas, menús, íconos, cajas de herramientas y lenguajes de comandos.
Se puede observar la influencia del objeto en las interfaces gráficas. Son ellos los que simbolizan los conceptos de encapsulamiento y de comportamiento dinámico.
Realización de interfaces en SMALLTALK
El desarrollo de una aplicación en Smalltalk necesita de una separación entre la aplicación y la interfaz de usuario. Esto permite la utilización de diferentes interfaces para una misma aplicación.
El método se basa en la existencia de 3 clases de objetos:
*Modelo: es el objeto sobre el que se quiere trabajar.
*La vista: es una interfaz externa que sirve para presentar un objeto para el usuario, puede estar constituido por menús, íconos o cuadros de diálogos.
*El controlador: es una interfaz interna que realiza la asociación dinámica entre el objeto y su representación.
La vista y el controlador están íntimamente relacionados. La primera asegura la visualización gráfica, el segundo la interacción con el usuario.
Una vista se considera como una ventana en la pantalla, la cual contiene objetos que puede ser pasivos (sobre los que no se puede actuar) y activos (sobre los que el usuario puede interactuar).
En Smalltalk hay tres tipos de ventanas:
*Normales con decoración: con etiqueta y barra de desplazamiento.
*De diálogo:
*De tipo menú
Cada ventana es una instancia de la clase correspondiente a dicha ventana.
El Entorno Macintosh
El entorno Macintosh es uno de los más elaborados y amigables, a tal punto que la máquina y el sistema operativo se confunden con el entorno gráfico que los encapsula, es que se realiza hasta tal nivel la encapsulación que los usuarios no ven comandos del SO. Las operaciones se realizan por medio de mensajes a objetos o entre éstos. El desktop metaphor se generaliza para todo tipo de aplicación.
Está constituido por las siguientes funciones principales:
*Gestor de ventanas, íconos, etc.
*Gestor de eventos (generados por el teclado, el ratón, etc.)
*Gestor de memoria
*Gestor de fuentes
*Gestor de Ficheros
*Gestor de sonido
*Funciones de base de edición de texto (copiar, pegar, etc.)
*Herramientas de Ofimática (Reloj, Calculadora)
Los desarrolladores y los usuarios pueden personalizar las interfaces o usarlas tal cual.
El Entorno MS-WINDOWS/OBJECTWINDOWS
MS-windows es un entorno de desarrollo gráfico para PC realizado por MICROSOFT. Su éxito se debe a la gestión de la extensión de la memoria (limitada bajo DOS), al tratamiento de la multitarea y a la independencia del hardware. La API (Interfaz de Programación de Aplicaciones) de Windows es un lenguaje de muy bajo nivel, que incorpora más de 1000 funciones y declaraciones complicadas.
Principales características de MS- WINDOWS
Las principales características de Windows son la uniformidad de la presentación, su compatibilidad ascendente con MS-DOS, posibilidad de compartir o transferir datos de todo tipo entre ventanas y entre aplicaciones por medio de un protocolo de intercambio dinámico (DDE Dynamic Data Exchange).
La ventana es el componente básico de Windows. Su estructura consta de una barra de títulos, íconos que permiten cerrarla, maximizarla o minimizarla. Cada ventana es una instancia de una clase definida previamente.
Las Aportaciones de OBJECTWINDOWS
OBJECT WINDOWS es una caja de herramientas que ofrece Borland y construida sobre MS-WINDOWS. Su principal aportación es una librería de clase predefinidas que contienen las características fundamentales de los objetos más usuales en el desarrollo de aplicaciones gráficas.
El Entorno X-WINDOWS/OFF-MOTIF
Como MS-WINDOWS y X-WINDOWS son de bajo nivel, el lenguaje de programación de interfaz es bastante engorroso y difícil de utilizar. Además la aproximación a objeto está aplicada parcialmente. Las cajas de herramientas de nivel superior, como Object Windows y OSF-Motif, las que integran efectivamente las nociones de objeto, de clases, de herencia y de encapsulación.
X-WINDOW(X11)
X-windows es un entorno gráfico propuesto por sobre de UNIX. La realización y mantenimientos están a cargo del MIT Consortium. Ha tenido numerosas versiones la más industrial es la 11 de ahí X11. Es independiente del hardware.
Permite el diseño de interfaces sobre una máquina y usarlas en otra que esté en red. Cada puesto de trabajo conectado al servidor, puede servir como servidor gráfico.
OSF/MOTIF
Ofrece un entorno gráfico similar al de MS-windows y Presentation Manager de OS/2 para PC. Es una librería de objetos definida sobre X-Window. La principal contribución de Motif es proporcionar los objetos compuestos utilizados más habitualmente, encapsularlos y organizarlos en clases jerárquicas, facilitando así su reutilización.
Diseño y ergonomía de las interfaces
A pesar de la existencia de herramientas de alto nivel, la realización de interfaces amigables no está garantizada si no se respetan ciertas reglas de ergonomía. Un factor clave es tener en cuenta el perfil del usuario, es decir a quién estará destinada la aplicación a desarrollar. Casos reales demuestran que sistemas con interfaces mal adaptadas pueden provocar rechazo e incluso traer consigo daños comerciales y económicos para la empresa. Para ello se deben seguir ciertas reglas:
*No se debe cargar la pantalla con datos inútiles.
*Evitar hacer recordar al usuario datos de comandos o funciones.
*El concepto de metáfora debe ser usado, para hacer más intuitiva la interfaz. Los colores y motivos hacen más fácil la memorización y más inmediata la interacción.
*El diseño de las interfaces debe ser realizado según censos ya estudiados. Una correcta formalización del perfil, de su interacción con la máquina y los símbolos usados para la interacción son garantía de la aceptación del sistema realizado.
INTRODUCCION A LOS MÉTODOS DE DISEÑO Y DE DESARROLLO.
INTRODUCCIÓN
Cuando los sistemas informáticos se hacen cada vez más complejos, es necesario racionalizar su creación y desarrollo. Algunos proyectos requieren gran cantidad de personal y tiempo. Si los costos de desarrollo son altos, los de mantenimiento pueden ser varias veces superiores.
Para disminuir los costos y limitar los riesgos, es necesario disponer de técnicas, métodos y herramientas. Los métodos de diseño aportan un plan de acción, modelo de síntesis y herramientas de control de calidad.
El desarrollo de los métodos de diseño ha sido influenciado por las tecnologías sucesivas de lenguajes de programación, bases de datos, redes. La nueva generación de métodos orientados a objetos ha sido desarrollada bajo la influencia de los lenguajes y base de datos orientados a objetos.
MOTIVACIONES PARA NUEVOS MÉTODOS DE DISEÑO
Actualmente, hay dos tipos de motivaciones que orientan a los diseñadores en la elección de los métodos de diseño: la posibilidad de tener en cuenta aplicaciones cada vez más complejas y la necesidad de disminuir los costes de desarrollo y mantenimiento.
Por otra parte, se reconoce que los costes de desarrollo y de mantenimiento son elevados. Pero gran parte de los costes de mantenimiento se debe a los cambios de las necesidades de los usuarios y a la rápida evolución tecnológica.
EVOLUCIONES DE LAS APLICACIONES DE GESTIÓN
Una aplicación de gestión tradicional consiste, por una parte, en un almacenamiento y recuperación de información codificada y estructurada y por otra parte en transformaciones simbólicas o cálculos aritméticos sobre las informaciones. Las estructuras utilizadas son por lo general planas (registros de ficheros o líneas de una tabla de bases de datos relacionales). Lo esencial de estas aplicaciones consiste en consulta, actualización y modificación de datos. Estos tratamientos se realizan en tiempo real como por lotes (batch).
CONSIDERACIÓN DE NUEVAS APLICACIONES TÉCNICAS
Las aplicaciones técnicas se caracterizan por una evolución frecuente de la estructura y comportamiento de los objetos, la necesidad de disponer de numerosas versiones para el mismo objeto y la reutilización intensiva de clases de objetos existentes para construir nuevas clases de objetos.
LOS CICLOS CLÁSICOS DE DESARROLLO DE APLICACIONES
Se detallan a continuación los distintos ciclos de desarrollo conocidos:
EL MODELO EN CASCADA
Es el enfoque metodológico que ordena rigurosamente las etapas del ciclo de vida del software, de tal forma que el inicio de cada etapa debe esperar a la finalización de la inmediatamente anterior.
De esta forma, cualquier error de diseño detectado en la etapa de prueba conduce necesariamente al rediseño y nueva programación del código afectado, aumentando los costes del desarrollo. La palabra cascada sugiere, mediante la metáfora de la fuerza de la gravedad, el esfuerzo necesario para introducir un cambio en las fases más avanzadas de un proyecto.
EL MODELO EN V
La figura que aparece a continuación presenta el Modelo en V, o Modelo de Cuatro Niveles, del ciclo de vida de un proyecto de desarrollo de software. El modelo representa, en forma de V, las relaciones temporales entre las distintas fases del ciclo de desarrollo de un proyecto.
En los niveles lógicos del 1 al 4, para cada fase del desarrollo, existe una fase correspondiente o paralela de verificación o validación. Esta estructura obedece al principio de que para cada fase del desarrollo debe existir un resultado verificable. En la misma estructura se advierte también que la proximidad entre una fase del desarrollo y su fase de verificación correspondiente va decreciendo a medida que aumenta el nivel dentro de la V. La longitud de esta separación intenta ser proporcional a la distancia en el tiempo entre una fase y su homóloga de verificación.
El nivel 1 está orientado al “cliente”. El inicio del proyecto y el fin del proyecto constituyen los dos extremos del ciclo. Se compone del análisis de requisitos y especificaciones, se traduce en un documento de requisitos y especificaciones.
El nivel 2 se dedica a las características funcionales del sistema propuesto. Puede considerarse el sistema como una caja negra, y caracterizarla únicamente con aquellas funciones que son directa o indirectamente visibles por el usuario final, se traduce en un documento de análisis funcional.
El nivel 3 define los componentes hardware y software del sistema final, a cuyo conjunto se denomina arquitectura del sistema.
El nivel 4 es la fase de implementación, en la que se desarrollan los elementos unitarios o módulos del programa.
EL MODELO EN ESPIRAL
Es un modelo de proceso de software evolutivo. En el modelo espiral, el software se desarrolla en una serie de versiones incrementales. Durante las primeras iteraciones. La versión incremental podría ser un modelo en papel o un prototipo. Durante las últimas iteraciones, se producen versiones cada vez más completas de ingeniería del sistema.
*Es también al igual que el anterior un modelo evolutivo que combina el modelo clásico con el diseño de prototipos.
*Incluye la etapa de análisis de riesgos, no incluida anteriormente.
*Es ideal para crear productos con diferentes versiones mejoradas como se hace con el software moderno de microcomputadoras.
*La ingeniería puede desarrollarse a través del ciclo de vida clásico o el de construcción de prototipos.
*Este es el enfoque más realista actualmente.
PUNTOS DÉBILES DE LOS MÉTODOS EXISTENTES
El conjunto de ciclos de desarrollo presentados se focaliza en el proceso global de producción del sistema informático. Éste identifica las principales fases de desarrollo, pero no hace aparecer las técnicas de modelización y realización en sí mismas.
EN LAS DIMENSIONES ESTÁTICAS DINÁMICAS Y FUNCIONALES
La mayor parte de los métodos orientados a objetos tienen una aproximación común basada en una triple percepción del sistema de información
*Dimensión Estática: Describe los Objetos del Sistema
*Dimensión Dinámica: Controla los cambios de estados de los objetos frente a ciertos eventos.
*Dimensión Funcional: Describe los procesos de transformación de los usuarios.
àDIMENSIÓN ESTÁTICA: Describe los objetos del sistema de información, las asociaciones entre los objetos, las restricciones y las operaciones asociadas. El modelo utilizado es el modelo Entidad-Relación.
àDIMENSIÓN DINÁMICA: Representa los tipos de eventos que pueden darse en el Sistema de información y los cambios de estados resultantes del tratamiento de estos eventos. El modelo utilizado es las redes de Petri.
àDIMENSIÓN FUNCIONAL: Representa los flujos de informaciones que circulan entre los diferentes actores de un sistema de información, como los procesos que los transforman, eventualmente con los recursos que se necesitan. El modelo utilizado es las redes de Petri.
EN LOS MODELOS FORMALES
Constituyen las piedras angulares de los métodos de diseños y desarrollo orientado a objetos. La elección del modelo proporciona las indicaciones más objetivas sobre las capacidades de modelización del método, su facilidad de uso y sus posibilidades de ser soportado por herramientas de ingeniería en software. La mayoría de los métodos de diseño utilizan una jerarquía de modelos que describen sucesivamente el nivel conceptual, el nivel lógico y físico.
Los métodos se pueden clasificar en dos categorías, según si utilizan modelos clásicos con eventuales extensiones o modelos específicos. En la primera se encuentra los métodos OOD, HOOD y OOSE y en la segunda los métodos OOA/OOD, OMT y OOM.
àLOS MODELOS DE DATOS
El modelo conceptual de datos más usado es el de entidad-relación, con sus distintas variantes binarias o n-arias y sus diferentes extensiones. Ciertos métodos utilizan el modelo relacional o un modelo ad-hoc surgido de los tipos proporcionados por los lenguajes de programación.
àLOS MODELOS DINÁMICOS
Los modelos dinámicos tienen por objetivo describir las reglas de evolución de los objetos a lo largo del tiempo. Esto no se representa explícitamente, pero se percibe a través de la presencia de eventos y la descripción de los estados sucesivos tomados por los objetos según dichos eventos.
En los métodos orientados a objetos, la dinámica de los objetos se describe por medio de diagramas de estado (derivados de la máquina de estados finitos) (caso de OOD, OOA, OMT), o bien mediante redes de Petri (caso de OOM). Estos modelos generalmente son los mismos que los utilizados en los métodos clásicos.
*LAS REDES DE PETRI: Constituyen una especie de extensión a la teoría de grafos, permiten representar eventos, estados y transiciones. Los dos conceptos fundamentales son los lugares y las transiciones.
En cada lugar se puede depositar un cierto número de fichas que constituyen el marcaje inicial de la red. Cada ficha puede ser interpretada como una ocurrencia de evento o un estado de objeto.
Los rectángulos representan los estados sucesivos de objetos y las elipses los eventos que activan los cambios de estados.