viernes, 7 de noviembre de 2014

3.2 IDENTIFICACIÓN DE CLASES SEGÚN ESTEREOTIPOS


Para llevar a cabo la transición del modelo de requisitos al modelo de análisis se deben identificar los objetos necesarios para implementar todos los casos de uso. La arquitectura  de objetos debe considerar los tres tipos de estereotipos de objetos como se discutió anteriormente. Para ello, se deben identificar primero las clases borde, luego las clases entidad y, finalmente, las de control. En general, se desea asignar la funcionalidad general del caso de uso. Por otro lado, los objetos entidad y borde deben contener funcionalidad local, limitando su efecto en los demás objetos. El trabajo del analista consiste en distribuir de la mejor manera posible el comportamiento específico en el modelo de requisitos entre los diferentes tipos de objetos de la arquitectura de análisis.

La asignación de funcionalidad es bastante difícil en la práctica, y afecta en gran medida de la calidad y mantenimiento del sistema. Los buenos analistas consideran desde un principio los posibles cambios futuros del sistema.
En general, los cambios más comunes a un sistema son los de funcionalidad y bordes. Los cambios de las interfaces deben afectar solo a los objetos borde. Los cambios a la funcionalidad son más difíciles de administrar, ya que esta puede abarcar todos los tipos de objetos.

A continuación se describen se describirán con mayor detalle el proceso de identificación de los tres tipos de objetos, identificando las clases para cada caso de uso según sus estereotipos. El desafío principal en dicho proceso, es decidir cuantas y cuales clases deben asignarse por cada caso de uso.
Borde
Toda la funcionalidad especificada en las descripciones de los caso de uso que depende directamente de los aspectos externos del sistema, se ubica en los objetos borde, pues a través de ellos se comunican los actores con el sistema. La tarea de una clase borde es traducir los eventos generados por un actor en eventos del sistema en una presentación comprensible por el actor. Las clases borde, en otras palabras, describen la comunicación bidireccional entre el sistema y los actores.

Las clases borde son bastante fáciles de identificar, donde se cuenta con al menos tres estrategias:

 Se puede identificar con base a los actores. 

Se pueden identificar con base en las descripciones de las interfaces del sistema que acompañan al modelo de requisitos. 

 Se pueden identificar con base en las descripciones  de los casos de uso y extraer la funcionalidad específica a los objetos bordes.

 Comenzaremos utilizando la primera estrategia correspondiente a los actores. Cada actor necesita su propia clase borde para comunicarse con el sistema. En muchos casos un actor puede necesitar de varios objetos borde. Es evidente que los objetos no son totalmente independientes de cada uno, ya que, en ciertos casos deben saber de la existencia de los demás. Por ejemplo, el usuario debe interactuar con las clases borde de la interface de usuario que a su vez se comunican con las clases borde de las pantallas. Debe estar muy bien definida la interacción de estos dos grupos de clase borde, las pantallas e interface de usuario.

Existen dos tipos de clase borde a modelar, dependiendo del tipo de actor: borde a otros sistemas y bordes a usuarios humanos.
 En el caso de objetos borde que se comunican con otros sistemas, es muy común que la comunicación se describa mediante protocolos de comunicación. Los objetos bordes pueden traducir las señales del sistema a un protocolo de comunicación estandarizada, o simplemente enviar eventos producidos internamente sin conversiones complejas. Una ventaja de esto, es que si se cambia el protocolo, estos cambios serán locales al objeto borde. Un mayor problema ocurre cuando existen señales continuas del mundo externo, como en los sistemas de medición o control. Entonces los objetos borde deben “muestrear” la señal de entrada, ya que internamente el sistema se procesa en términos de eventos.

En el caso de los objetos borde que se comunican con usuarios humanos se utilizan diversas técnicas para el modelado de la interacción. Es fundamental que las interfaces con el usuario sean lógicas y coherentes. En general, en las aplicaciones interactivas es común que las interfaces de usuario sean un aspecto fundamental y de mayos complejidad dentro de la aplicación completa.

Aunque cada tipo de objeto tiene un propósito distinto, es evidente que los objetos borde tienen como propósito principal el manejo de las presentaciones. Sin embargo, también pueden administrar información y tener comportamiento. Debe decidirse de manera individual la cantidad de información y tener comportamiento de un objeto borde. En un extremo, el objeto borde solo debe enviar el evento que recibe del actor a otros objetos en el sistema, sin participar activamente en el curso de los eventos. En el otro extremo, el comportamiento del objeto borde puede ser muy complejo, de manera que la información se procede dentro del objeto borde, haciendo todo el procesamiento de eventos de manera local.

Para identificar que parte del flujo de un caso debe asignarse a los objetos borde,  se deben analizar las interacciones entre los actores y los casos de uso. Esto significa buscar aspectos como, información que deba presentarse al actor y funcionalidad que dependa del comportamiento del actor.
 Entidad
Se utilizan objetos entidad para modelar la información que el sistema debe manejar a corto y largo plazos. La información a corto plazo existe durante la ejecución de un caso de uso, mientras que la información a largo plazo trasciende los casos de uso, por lo que es necesario guardarla en alguna base de datos o archivo.

Los objetos entidad se identifican principalmente a partir del dominio del problema del modelo de requisitos. Dado que es posible identificar un gran número de entidades, se deben considerar únicamente aquellos necesarios para la aplicación. Los casos de uso deben usarse como guías para identificación, y solamente aquellos objetos entidad que puedan justificarse de la descripción del caso de uso deben incluirse.


Adicionalmente, no es fácil decidir cuándo cierta información debe ser modelada como objeto entidad o atributo. Esto depende de cómo se usara la información. Si esta cuenta con cierta estructura más allá de un simple valor numérico, entonces debe modelarse como un objeto entidad. Por otro lado, información que pueda describirse mediante un simple valor, debe modelarse como un atributo de un objeto entidad. Esta decisión es algo arbitraria, ya que cierta información puede modelarse como objeto entidad en un sistema, mientras que en  otro puede representarse mediante un atributo.
También es difícil identificar que operaciones y cuales atributos serán incluidos dentro de estos objetos.
Dado que la única forma para manipular un objeto entidad es por medio de sus operaciones, se deben identificar suficientes operaciones para manipular completamente al objeto entidad. La descripción detallada de los casos de uso es de nuevo un medio extremadamente valioso para identificar estas operaciones.

Las operaciones pueden ser sencillas, sirviendo de acceso a los valores de los atributos, o complejas, como en el caso de ciertos cálculos matemáticos basados en los valores de los atributos del objeto. Sea cual sea la complejidad, estas operaciones deben depender y afectar solamente a la información local.

Durante la identificación de objetos entidad, se encontrara que objetos similares aparecen en varios casos de uso.

 Control
Hasta ahora se han identificado objetos borde y entidad a partir de cada caso de uso. En algunas situaciones, todo un caso de uso pudiera implementarse exclusivamente mediante estos dos tipos de objetos. Así no se necesitaría ningún objeto control para el respectivo caso de uso. Sin embargo, en la mayoría de los casos de uso, existe un comportamiento que no puede asignar de forma natural a ninguno de los otros dos tipos de objetos. Una posibilidad es repartir el comportamiento entre los dos tipos de objetos, pero la solución no es buena si se considera el aspecto de extensibilidad. Un cambio en el comportamiento podría afectar varios objetos, dificultando su modificación. Por lo tanto, para evitar estos problemas, tal comportamiento se asigna a objetos control.

En general, es difícil lograr un buen balance en la distribución del comportamiento del caso de uso entre los objetos entidad, borde y control. Los objetos de control normalmente proveen la administración de los demás tipos de objetos, dependiendo de la existencia del propio caso de uso. Por lo tanto, los objetos control se especifica directamente de los casos de uso. Como primera aproximación, se especifica un objeto control para cada caso de uso. Dado que se asigna inicialmente el comportamiento a los objetos borde y entidad, el comportamiento restante se agrega a los objetos control. Una manera de asignar el comportamiento es modelar inicialmente el caso de uso sin ningún objeto control, en otras palabras, solo utilizando objetos borde y objetos entidad. Cuando tal modelo se ha desarrollado, se verá que hay ciertos comportamientos que no se asignan de forma natural, a los diversos objetos, o incluso, se distribuye a varios objetos. Estos comportamientos deberían  asignarse a los objetos control. Otra situación es que los comportamientos, después de distribuirse entre objetos borde y entidad, sea demasiado complicado. En tal caso, los comportamientos pueden ser distribuidos en varios objetos control.

En la mayoría de los sistemas, se promueve la distribución del manejo de un caso de uso en un solo objeto control. Sin embargo, la estrategia de asignación de control se debe decidir de acuerdo a cada aplicación.

Bibliografia:


No hay comentarios:

Publicar un comentario