Sei sulla pagina 1di 13

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

Análisis Orientado a Objetos.

Indice

1.- Introducción.

2.- Problemas del Análisis:

2.1.- Tratamiento de la complejidad del dominio del problema en AOO

3.- Métodos de análisis

4.- Búsqueda de clases y objetos

5.- Identificar estructuras

6.- Identificación de Areas.

7.- Definición de Atributos.

8.- Definición de Procesos.

1.- Introducción.

La programación orientada a Objetos surgió en los años 70. Como ha ocurrido con otras metodologías de desarrollo del software los conceptos O.O. se extendieron hacia atrás dándose forma al Diseño orientado a Objetos, pero dejándose de lado el Análisis. En la actualidad son varias las metodologías de Análisis Orientado a Objeto que se han desarrollado, UML se perfila como estándar. Vamos a estudiar una de las primeras que surgieron, ya que ofrecen un enfoque relativamente simple e intuitivo. Esta es la metodología debida a Coad y Yourdon que tiene su continuación en un Diseño Orientado a Objetos.

Una de las ventajas que ofrece el enfoque orientado a objeto es que permite mantener un lenguaje común entre las diferentes fases del ciclo de vida, evitándose el problema que surge en las metodologías estructuradas relativo al cambio de nomenclatura al pasar de una fase a otra por cambiarse de herramienta o modo de expresión o al realizar el estudio de los procesos y de los datos.

Una de las razones de ese paso de metodologías estructuradas a las orientadas a objeto se deben en parte a que los sistemas a desarrollar son mucho más grandes y complejos, dándose cada vez más importancia a las interfaces de usuario. Por otra parte se consigue una complejidad funcional mucho menor y llegando a darse más importancia al modelado de los datos.

En el conocimiento del mundo real, se emplean 3 métodos de organización:

1.- Se diferencia entre los objetos particulares y sus características (o atributos). Ej. Un árbol, su tamaño, y su relación con otros objetos

2.- Distinción entre objetos (como un todo) y las partes que los componen. Ej.:

El árbol y las ramas que lo componen.

3.- La formación de, y la distinción entre clases de objetos. Ej. Clase de los arboles, de piedras

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

El modelo de AOO se basa en estos tres modelos de organización empleados en la vida real. Así, de un modelo simplificado, podemos mencionar como beneficios que aporta el AOO los siguientes:

- Se pueden asumir mayores desafíos en el dominio del problema. Esto supone hacer más énfasis en el conocimiento del mismo.

- Existe una mayor interacción entre el analista y el dominio del problema. Es

decir, se organiza el análisis y la especificación utilizando los mismos métodos de trabajo que los que rigen el pensamiento humano.

- Aumenta la consistencia interna de los resultados del análisis. Es decir, reduce

el gap semántico entre las diferentes actividades del análisis y el diseño, tratando atributos y procesos como un todo.

- Se construyen especificaciones fácilmente modificables proporcionando estabilidad frente a las modificaciones de los requerimientos.

- Da reusabilidad de los resultados del Análisis, permitiendo definir familias de sistemas.

- Da una representación consistente para el análisis y el Diseño mediante una

representación continua para la expansión sistemática de los resultados del Análisis al Diseño.

2.- Problemas del Análisis:

Fundamentalmente podemos distinguir:

1. Comprensión del dominio del problema. - Este es realmente el punto central del análisis.

2. Comunicación.- Es fundamental en la labor de análisis ya que el analista ha de transmitir la gestión del análisis realizado así como extraer del cliente todo lo que le pueda aportar para el conocimiento del problema y los requerimientos. A su vez ha de comunicar las conclusiones a las que haya llegado. Los métodos aplicables en Ingeniería del Software han de facilitar la comunicación y se construyen a partir de métodos de organización humana.

3. Continua modificación. La característica de todo sistema es que cambia con el tiempo, por lo tanto cambian también los requerimientos que lo definen, aunque se intenten congelar durante un tiempo. Por tanto, es necesario organizar el trabajo del análisis de forma que se amolde fácilmente a los cambios.

4. Reusabilidad. En el sentido del análisis de sistema, significa la utilización de resultados obtenidos en análisis anteriores al actual.

2.1.- Tratamiento de la complejidad del dominio del problema en AOO

Los principios en los que se basa son:

a) Abstracción.

Consiste en ignorar aquellos aspectos del problema en estudio que no son relevantes para centrarse en aquellos que sí son importantes.

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

La abstracción procedural consiste en dividir sucesivamente los procesos en subprocesos.

La abstracción de datos consiste en definir los tipos de datos en término de operaciones que se aplican a los objetos de ese tipo. Así se definen atributos de los objetos, y procesos que los manipulan. El único modo de acceder a los atributos es vía proceso.

b) Encapsulamiento.

Es otro de los principios del tratamiento de la complejidad que consiste en la ocultación de la información.

c) Heredabilidad.

Este principio básico en el AOO permite que atributos y procesos comunes a clases similares se definan sólo una vez, simplificando así la definición de cada una de ellas. Además esta característica permite llevar a cabo la generalización y especialización de esos atributos y procesos a casos específicos.

d) Asociación.

Se refiere a la unión o conexión de cosas que en un cierto momento tienen algo en común.

e) Comunicación de mensajes.

Es uno de los principios relativos al tratamiento de la complejidad.

f) Métodos de Organización del AOO (Coad y Yourdon). Introducción.

La notación y estrategia del AOO se puede construir a partir de los 3 métodos de organización mencionados más arriba:

.- Objetos y atributos. Todo y parte. Clases y miembros.

g) Escala

Es la relación que existe entre los términos que representan las partes y el todo.

h) Modos de comportamiento de los objetos.

Se refiere a cómo evolucionan los objetos durante su ciclo de vida ( como se comporta.)

3.- Métodos de análisis

De un modo general entendemos por Análisis de sistemas el estudio de un problema de mayor o menor complejidad. Según la nomenclatura que estamos utilizando, diremos que el análisis es el estudio del Dominio del Problema, llegando a una especificación completa del comportamiento del mismo, consistente y viable, en el que se especifican las características funcionales y operacionales (facilidad de uso, seguridad, disponibilidad, mantenimiento, etc.) del mismo.

El análisis es el proceso de extraer las necesidades de un sistema - qué es lo que debe hacer el sistema, no cómo se va a implementar. La documentación de requerimientos debe dar una visión completa del Sistema y de lo que debe hacer. Otros métodos de Análisis son:

- Descomposición funcional de Yourdon /Constantine en 79 y Page/Jones en 88.

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

- Técnica de FD de DeMarco en 78, Gane y Sarson en 77. Moderno Yourdon 89

- Modelado de la Información: Chen 76 Shlaer /Mellor 88. Del Modelo Entidad Relación se pasa a modelos semánticos de datos.

Orientación a Objetos debida a Shlaer y Mellor en 88, Coad/Yourdon en 89 y otros como Booch, OMT.

La Orientación a Objetos está constituida por Clases y Objetos, las propiedades y características de la Herencia y la posibilidad de comunicación con mensajes,

lo que permite el manejo de la complejidad.

AOO se construye a partir de conceptos de diversas estrategias de desarrollo:

a) Por una parte, a partir del Modelado de información se toman construcciones

análogas a atributos, conexiones entre elementos, Generaliz.- Espec. y todo-

parte

b) Por otra parte, de los Lenguajes O.O., de los que se toma la encapsulación de

atributos, comunicación de mensajes, gen - espec, y heredabilidad.

AOO es especialmente interesante cuando se tratan problemas amplios y de complejidad alta, no siendo especialmente útiles en el caso de sistemas pequeños.

El método propuesto por Coad y Yourdon se enmarca en 5 actividades:

- Búsqueda de clases y objetos.

- Identificar Estructuras.

- Identificar Areas.

- Definir atributos.

- Definición de procesos

Considerando que normalmente las actividades guían al analista desde los altos niveles de abstracción (Clases y objetos) hasta los más bajos (estructuras, atributos y procesos), la secuencia que se suele seguir a estas 5 actividades es el propuesto. Sin embarco las actividades no son pasos secuenciales. A veces, el analista, al encontrar una/s clase/s y objeto/s sigue con el estudio de un proceso asociado para después continuar buscando más clases y objetos. Otros analistas prefieren detenerse en la búsqueda de atributos y luego las estructuras, antes de avanzar más en el estudio de las clases y objetos.

A partir de las 5 actividades definidas en AOO, éste se desarrolla según un

modelo de 4 niveles que permiten ir bajando el nivel de detalle del estudio:

Nivel de Area.

Nivel de clase y objeto

Nivel de estructura

Nivel de atributo

Nivel de proceso

NO

ESTUDIAR

Terminología:

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

Mod. de datos

Leng POO

AOO

Objeto

Clase

Clase

Atributo

Variable

Atributo

-

Método

Proceso, Operación

Ocurrencia

Objeto( instancia)

Objeto(instancia)

Supertipo/subtipo

Superclase/subclase

Estructura Gen-Espec.

Agregación

-

Estructura Todo-Parte

Relación

-

Conexión típica

-

Mensaje

Conexión de mensaje

4.- Búsqueda de clases y objetos:

Recordemos las definiciones de objeto y clase:

Objeto: Una abstracción de algo en el dominio del problema, que mantiene información del sistema y/o que interactúa con él. Por otra parte lleva consigo la encapsulación de datos (atributos) y sus procesos exclusivos.

Clase: Descripción de uno o más objetos con el mismo conjunto de atributos y procesos, incluso una descripción de cómo crear nuevos objetos dentro de la clase.

Clase y Objeto: Término que se refiere a una clase y los objetos en esa clase.

Mediante la definición de clases y objetos en el dominio del problema se llega a una mejor comprensión del mismo. Esta abstracción del mundo real es una herramienta para el análisis y la especificación. Además las clases y objetos son relativamente estables con el paso del tiempo, a diferencia de los atributos y procesos que los componen.

Otra gran ventaja del desarrollo Orientado a Objetos es que se mantiene la misma notación durante el Análisis y el Diseño e incluso la implementación, evitándose así los problemas en este sentido que surgían en otras metodologías.

en este sentido que surgían en otras metodologías. clase objetos de la clase Símbolo de clase

clase

en este sentido que surgían en otras metodologías. clase objetos de la clase Símbolo de clase

objetos de

la clase

Símbolo de clase y objeto

Este símbolo representa una clase (rectángulo interior dividido en 3 secciones) y sus objetos (rectángulo exterior). En el interior se presentarán el nombre de la clase, sus atributos, y procesos. Es posible utilizar como notación sólo el rectángulo interior para representar una generalización de clase en el dominio del problema, cuyos objetos correspondientes se representan del modo anterior.

Nombre de la clase: Sustantivo singular, adjetivo + sustantivo.

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

Nombre de objeto: Debe describir un único objeto incluido dentro de la clase.

Los nombres de clases y objetos se elegirán entorno al dominio del problema.

El número de clases a definir en el modelo AOO dependerá del problema.

Para encontrar las clases y objetos en el dominio del problema se dieron ya las normas propuestas por varios autores en el tema relativo al desarrollo Orientado a Objetos (Tema 3). De cualquier modo hay que llevar a cabo un estudio en profundidad del dominio del problema. Así mismo se considerará la posibilidad de reutilizar clases ya definidas en análisis previos o en dominios similares.

Las clases descubiertas en este estudio se convierten en clases candidatas . Las razones de su inclusión en el modelo de AOO también se dieron con anterioridad.

5.- Identificar estructuras

Una vez que se han definido los objetos, el analista pasa a centrarse en la estructura de clasificación. Se considera cada objeto como una generalización, y luego como una especificación. Es decir, se definen y nombran las instancias de un objeto. Puede ser que un objeto representado en el modelo inicial esté realmente compuesto por varias partes que pueden ser definidas en sí mismas como objeto.

La representación estructural proporciona al analista un medio de partición del modelo de requisitos. LA expansión de cada objeto proporciona los detalles necesarios para las revisiones y el subsiguiente diseño.

Una estructura en AOO es una expresión de la complejidad del dominio del problema, relativo a las responsabilidades del sistema. Este término se usa de un modo global, describiendo tanto la estructura de Generalización-Especialización como la de Todo-Parte.

Estructura Generlización -Especialización: Es un método básico de organización que se basa en considerar cada clase como una generalización que tendrá un conjunto de posibles especializaciones. Con las estructuras Generalización- Especialización se aplica la heredabilidad .

Estructura Todo-Parte. Es un método básico de organización que se basa en considerar cada objeto como un todo que tendrá una serie de posibles partes (ej. objeto: Vehículo, parte: motor), y considerar también cada objeto como una posible parte.

La definición de estructuras centran la atención del desarrollador en el dominio del problema sobre la complejidad de objetos y clases múltiples, además de permitir la detección de objeto y clases no detectadas hasta ahora, así como la aplicación de la heradabilidad.

5.1.- Definición y representación de estructuras.

Para cada clase se examina la estructura de Gen-Espec., y cada objeto para la estructura todo-parte.

a) Estructura Generalización-Especialización.

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

La clase generalización se representa en la parte alta de un diagrama, poniendo en la parte inferior la/s clase/s especialización:

Generalizacion Especializacion Especializacion
Generalizacion
Especializacion
Especializacion

- El semicírculo indica la dirección de la generalización.

la

generalización y el nombre que describe la especificación.

Si la clase generalización no tiene instancias de objetos, el símbolo asociado es el interior solamente.

El

nombre

de

las

especializaciones

viene

dado

por

el

nombre

de

* Modo definir Estructuras de Gen-ESpec.

1.- Considerar cada clase como una generalización. Para cada una de sus posibles especializaciones, considerar si:

- Está en el dominio del problema.

- Está dentro de las responsabilidades del problema.

- Habrá heredabilidad.

- Coinciden las especificaciones con el criterio de inclusión para clases y objetos.

2.- Considerar cada clase como una especialización, y hacer el mismo estudio para posibles generalizaciones.

3.- Estudiar dominios similares, ver si hay estructuras reutilizables, o si hay que tener en cuenta alguna consideración particular en las nuevas definiciones.

4.- Si son posibles varias especializaciones, considerar las más sencilla y la más compleja, y situar las otras entre ellas.

Jerarquía y entramado.

La forma más común de expresar una Generalización-Especialización es en una jerarquía de Gen-Espec. También pueden representarse en forma de entramado:

Resalta especializaciones adicionales, e incrementa la complejidad del modelo.

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

Si la complejidad fuera muy alta, conviene reorganizar parte del entramado en una jerarquía.

b) Estructura Todo-Parte

Este es uno de los métodos básicos que utiliza la mente humana en la elaboración de cualquier razonamiento. También ayuda en el estudio del dominio del problema.

Se representa como un objeto Todo en la parte superior del esquema, y un objeto Parte debajo, uniendo ambos componentes una línea con un triángulo. La notación es direccional, por lo que la estructura podría ser representada en cualquier ángulo.

Todo Todo 1,m 1 1
Todo
Todo
1,m
1
1

1,m

Parte
Parte
Parte
Parte

También se representa en el diagrama el número de partes que puede tener un todo, y viceversa.

* Modo de definir estructuras Todo-Parte.

Se considerará cada objeto como un todo y se estudia sus posibles partes componentes, sus posibles contenidos, o posibles elementos.

c) Estructuras múltiples.

Las estructuras múltiples incluyen varias combinaciones de Estructuras Gen- Espec., y Todo-Parte

6.- Identificación de Areas.

Un Area es un mecanismo para guiar al analista a través de un modelo complejo. Sirven de ayuda para la organización de paquetes de trabajo en proyectos más grandes, basándose en investigaciones de AOO iniciales. Un área es una parte de un problema complejo. Así las áreas dan una vista del modelo del AOO al más alto nivel. En este sentido permiten centrar el estudio del problema en los subproblemas considerados en

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

cada área. Las áreas ayudan al analista a revisar el modelo, considerando las áreas comprendidas en el dominio del problema y las responsabilidades del problema bajo su consideración.

Hay 3 modos de representarlos:

a) Notación reducida. Sólo figura el nombre del área.

1. Area1

1. Area2

.

b) Notación parcialmente expandidas. Figuran clases y objetos

1.- Area 1

1.- Area 2

Clase y Objeto 1 Clase y Objeto 2

Clase y Objeto 3 Clase y Objeto 4

c) Notación expandida. Cuando se muestra con otros estratos. Es decir al representar otros estratos, se indica el área en que está incluida

1 1 2 2 1 1 2 2
1
1
2
2
1
1
2
2

* Cómo seleccionar arreas.

Se tomará la Clase de más alto nivel de cada Estructura y se considerará la posibulidad de definir subdominios . Se debe procurar que la interrelación entre las áreas sea mínima.

- Cada área se identifica con un nombre y un número. Se dibujará en un rectángulo. En él se puede incluir también la lista de las clases que incluye.

- Una Clase y Objeto puede estar en más de un área.

- Las áreas pueden contener subareas.

- El número de áreas que compongan un modelo depende de la complejidad de

éste. Incluso puede no ser necesaria su inclusión si es relativamente pequeño.

En un modelo con un número de clases del orden de 35, se debe definir algún área para facilitar el seguimiento del AOO.

En proyectos más grandes, la definición de áreas es imprescindible, para dividir el dominio del problema en subdominios (subproblemas), y llevar a cabo la división del trabajo entre varias personas, o equipos.

Ingenieria del software

7.- Definición de Atributos.

Analisis Orientado a Objetos. Una metodología.

En AOO un atributo se define como un dato (información de estado) para el cual cada objeto en una clase tiene su propio valor.

Las Clases y Objetos se describen detalladamente mediante sus atributos.

Los atributos se definen para añadir detalle a las abstracciones de clase y Objeto

y Estructura. Los atributos describen el estado de un objeto y sólo pueden ser

manipulados por los Servicios (métodos) de ese objeto. Para acceder a los atributos de

un objeto por parte de otro, se ha de hacer mediante un mensaje a un método definido para ese objeto. Esta es una manera de mantener la encapsulación y la abstracción.

Los atributos se anotan en la parte central de los rectángulos que representan un objeto o una clase y objeto.

1.- Identificar atributos:

Son atributos todos aquellas cosas que debe conocer un objeto y que lo caracteriza: Qué es y qué lo caracteriza, qué información debe guardar y conocer, estados por los que pasa.

Antes de definir los atributos de un objeto se deben repasar Análisis anteriores para dominios similares.

Cada atributo debe ser un concepto atómico, significando un único valor (código

de un artículo) o conjunto de valores estrechamente relacionados (datos personales).

En el AOO no debemos preocuparnos por la normalización de las tablas en cuanto a eliminación de redundancia. Se hará en diseño.

2.- Posicionar los atributos.

Los atributos se definen asociados a una clase y objeto. Se definirán tantos atributos como se considere necesario para que la clase y objeto quede bien definida. Cuando se trate de estructuras Generalización- Especificación, se pondrán más arriba los atributos más generales, y más abajo los mas especializados.

3.- Identificar conexiones de instancias.

Los atributos describen el estado de un objeto. Las conexiones de instancias describen el tipo de asociación que existe entre las clases y objeto relacionados. Para representarlas en el esquema, se dibuja una línea entre los objetos y se expresa el tipo de asociación indicando el número de proyecciones que pueden ocurrir en la conexión de esos elementos (1, m, o rango n-m)

Clase y Objeto Clase y Objeto 1,m 1
Clase y Objeto
Clase y Objeto
1,m
1

Ingenieria del software

Casos especiales.

Analisis Orientado a Objetos. Una metodología.

.- Clase y objeto con un solo atributo. Es un caso raro pero que puede ocurrir. Hay que comprobar que realmente está bien definida la clase y objeto de este modo.

.- Un atributo con n valores repetidos. En estos casos, revisar la definición de clases y objetos, para ver la posibilidad de descomponer la clase y objeto con e l atributo de valores repetido en 2 clases y objeto.

Casos especiales de conexiones de instancias.

- Conexión de instancias muchos a muchos.

- Conexión de instancia entre objetos de la misma clase.

- Conexión de instancia múltiples entre objetos.

4 Nombrar atributos.

Nombrar cada atributo con el nombre más apropiado. Deben ser legibles y suficientemente claros

8.- Definir Procesos.

En AOO el analista debe hacer una descripción completa del procesamiento y los requerimientos de ejecución del sistema.

En AOO entendemos por proceso como el comportamiento de un objeto (método en LPOO).

Los procesos detallan el comportamiento de un objeto dentro de una clase, a partir del modelo abstracto que se está diseñando.

Los procesos identificados para una clase y objeto se anotan en la sección inferior de los símbolos de clase y objeto y de clase.

Clase y Objeto Proceso 1 Proceso 2
Clase y Objeto
Proceso 1
Proceso 2
Clase Proceso 1 Proceso 2
Clase
Proceso 1
Proceso 2

8.1.- Identificar los estados de cada objeto.

Cada objeto pasa por diferentes estados, desde que se crea hasta que desaparece. El estado de un atributo viene dado por los valores que puede tener.: Cualquier cambio en el valor de un atributo provoca un cambio en el estado del objeto. Para identificar los estados de un objeto hay que examinar los valores potenciales de los atributos y después examinar si el objeto se comporta de diferente manera para cada uno de esos valores

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

potenciales. Los estados por los que pasa un objeto en el tiempo se representa mediante los Diagramas de Estado en los que se representan también las transiciones de un estado

a otro.

* Identificar procesos.

Podemos

distinguir

entre

los

procesos

algoritmicamente complejos:

Procesos algoritmicamente simples:

algorítmicamente

simples

y

los

Se aplican a todos y cada uno de los objetos del modelo. Su modo de operación es siempre el mismo. Entre ellos:

Crear: Crea un objeto en una clase. También lo inicializa.

Conectar: Conecta/desconecta un objeto a otro Establece relaciones entre ellos.

Acceder: Toma o asocia los valores de un atributo a un objeto

Liberar: Libera ( desconecta o borra) un objeto.

Procesos algoritmicamente complejos. Podemos distinguir 2 categorías

- Calcular. Calcula el resultado a partir de los valores de un atributo de un

objeto.

- Monitorizar: Controla el Sistema. o un dispositivo externo. Trabaja con E/S.

Se debe asignar nombre a los procesos que sean claros y representativos de la acción que realizan.

* Identificar conexiones de mensaje

Una conexión de mensaje es una proyección de un objeto sobre otros objetos. Un emisor envía un mensaje al receptor, solicitando la realización de un proceso.

Una conexión de mensaje se representa mediante una flecha que relaciona los

dos objetos (emisor y receptor) implicados en el mensaje. El origen se sitúa en el emisor

y el destino en el receptor. El emisor envía un mensaje al receptor quien realiza alguna acción y devuelve el resultado al emisor. La conexión aunque suele ser entre objetos, también puede darse entre un objeto y una clase(para crear un nuevo objeto. )

La comunicación entre objeto. mediante mensaje es una manera de manejar la complejidad.

Clase y Objeto Clase y Objeto Proceso 1 Proceso 1 Proceso 2 Proceso 2
Clase y Objeto
Clase y Objeto
Proceso 1
Proceso 1
Proceso 2
Proceso 2

Las líneas de conexión de mensajes pueden etiquetar con nombres de procesos.

Si hay un objeto emisor y varios receptores, se pueden usar varias flechas.

Ingenieria del software

Analisis Orientado a Objetos. Una metodología.

Para identificar las conexiones de mensaje necesarias, para cada objeto hay que considerar:

la

- correspondiente conexión de mensaje.

De

qué

otros

objeto

necesita

información

este

proceso.

Dibujar

- Que otros objeto necesitan información de este

- Repetir el proceso para cada objeto.

Los procesos se especifican usando diagramas de Proceso, que representan gráficamente los requerimientos del proceso.