sábado, 29 de noviembre de 2014

4.1 ESTRATEGIAS DE DISEÑO

A través de la historia de la ingeniería de software ha evolucionado un conjunto de conceptos fundamentales de diseño de software. Cada uno ofrece al ingeniero de software un fundamento sobre el cual pueden aplicarse métodos de diseño más elaborados. Los conceptos fundamentales del diseño de software ofrecen el marco de trabajo necesario para hacer las cosas del “modo correcto”.

Estrategias de diseño – Abstracción
Para un problema determinado se pueden considerar muchos grados de abstracción. En un alto grado deabstracción una solución se establece en términos generales con el lenguaje de entorno del problema. En losgrados de menor abstracción se proporciona una solución más detallada de la solución. Una abstracción procedimental se refiere a una secuencia de instrucciones que tiene una función específica y limitada.


Una abstracción de datos es una colección nombrada de datos que describe un objeto de datos.  Por ejemplo, se puede decir que la abstracción procedimental abrir emplearía la información contenida en los atributos de la abstracción de datos puerta. 


Estrategias de diseño – Arquitectura
La arquitectura del software alude a la estructura general del software y las formas en las que la estructura proporciona una integridad conceptual para un sistema. La arquitectura es la estructura u organización de los componentes del programa (módulos), la manera en que estos componentes interactúan, y la estructura de datos que utilizan los componentes. 


Estrategias de diseño – Patrones
Un patrón de diseño describe una estructura de diseño que resuelve un problema recurrente de diseño particular dentro de un contexto específico y en medio de fuerzas que pueden tener un impacto en la manera en que se aplica y utiliza el patrón. 


Estrategias de diseño – Modularidad
Los patrones de arquitectura y diseño de software materializan la modularidad; es decir, el software se divideen componentes con nombres independientes y que es posible abordar en forma individual. Estos componentes llamados módulos se integran para satisfacer los requisitos del problema. La modularidad se basa en la estrategia divide y vencerás (es más fácil resolver un problema complejo cuando éste se divide en piezas más manejables).


Estrategias de diseño – Ocultación de información
El principio de ocultación de información sugiere que los módulos se caracterizan por las decisiones de diseño que cada uno oculta a los otros. Los módulos deben especificarse y diseñarse de manera que la información (procedimientos y datos) que está dentro del módulo sea inaccesible para otros módulos que no necesiten esta información.
 
Estrategias de diseño – Independencia funcional
Es la suma de directa de la modularidad y de los conceptos de abstracción y ocultación de información. Laindependencia funcional se consigue al desarrollar módulos con una función determinante y una aversión a la interacción excesiva con otros módulos. Los módulos independientes son más fáciles de mantener, probar, modificar y se reduce la propagación de errores. 
 
Estrategias de diseño – Refinamiento
El refinamiento es una estrategia de diseño descendente. El desarrollo de un programa se realiza al refinar de manera sucesiva los niveles de detalle procedimentales.  El refinamiento hace que el diseñador trabaje sobre elenunciado original y que proporcione más y más detalles conforme se realiza cada refinamiento sucesivo. Laabstracción y el refinamiento son conceptos complementarios.
 
Estrategias de diseño
La meta del diseño es crear un modelo de software que implemente todos los requisitos del cliente de manera correcta y complazca a aquéllos que lo usen. El proceso de diseño avanza de una visión general del software a una visión más estrecha que define el detalle requerido para implementar un sistema.

El proceso de diseño comienza con un enfoque en la arquitectura. Se definen los subsistemas, se establecen mecanismos de comunicación entre los subsistemas; se identifican los componentes y se realiza una descripción detallada de cada componente. Además, se diseñan las interfaces internas, externas y del usuario.
            
                          BIBLIOGRAFIA :
       

4.2 DISEÑO DE OBJETOS

Un sistema orientado a objetos está compuesto de objetos que interactúan, los cuales mantienenellos mismos su estado local y proveen operaciones sobre su estado. La representación del estado es privada y no se puede acceder a ella directamente desde fuera del objeto. El proceso de diseño de objetos comprende el diseño de clases de objetos y las relaciones entre estas clases. El diseño orientado a objetos comprende el desarrollo de un modelo orientado a objetos de un sistema de software para implementar los requerimientos identificados. 


Los objetos en un diseño orientado a objetos están relacionados con el problema a resolver. Un proceso general para el diseño orientado a objetos puede contener las siguientes etapas:

  1.  Comprender y definir el contexto y los modos de utilización del sistema. 
  2. Diseñar la arquitectura del sistema. 
  3. Identificar los objetos principales del sistema.  
  4. Desarrollar los modelos de diseño.  
  5. Especificar las interfaces de los objetos.
         Todas estas actividades se pueden ver como actividades entrelazadas que influyen entre sí. Los objetos se identifican y las interfaces se especifican completa o parcialmente en el momento de definir la arquitectura del sistema.


B  BIBLIOGRAFIA:
Ç

4.3 DISEÑO DEL SISTEMA

Durante el diseño de objetos, se ha desarrollado un diseño detallado con base en la arquitectura especificada. En general, el diseño de sistemas incluye aspectos como los siguientes:



  • Selección del lenguaje de programación a utilizarse.
  • Incorporación de bibliotecas (para interfaces gráficas, estructuras de datos, etc.) 
  • Incorporación de una base de datos. 
  • Incorporación de archivos en sus diferentes formatos. 
  • Consideraciones de procesamiento,  como concurrencia, paralelismo, distribución y tiempo real.
Estos aspectos pueden variar entre un sistema y otro. Además, pueden afectar de manera importante laarquitectura final del sistema. Existen diferentes enfoques para la incorporación del ambiente de implementación a la arquitectura del sistema:
  •  Agregar clases abstractas o interfaces que luego se  especializarán según el ambiente de implementación. 
  • Instanciar objetos especializados para la administración del ambiente de implementación 
  • Configurar múltiples versiones del sistema correspondientes a diferentes plataformas.
 Diseño de sistema - Lenguajes de programación
 
Es importante señalar que un diseño orientado a objetos no necesariamente se tiene que implementar mediante un lenguaje orientado a objetos. Sin embargo, es más natural hacerlo de esta manera. Esto es debido a que los lenguajes orientados a objetos tienen un apoyo directo a los conceptos del análisis orientado a objetos(encapsulamiento, generalización, polimorfismo). Sin embargo, se puede traducir cualquier concepto o mecanismo orientado a objetos a otros existentes en los lenguajes no orientados a objetos. El problema con este tipo de lenguajes es su conveniencia, mantenimiento y protección contra errores. Un lenguaje orientado a objetos hace que la escritura, mantenimiento y extensión de los programas sea más fácil y segura.
 
Cabe mencionar que no todos los lenguajes de programación orientados a objetos implementan de la misma forma los conceptos de la metodología orientada a objetos.  Aspectos como manejo de encapsulamiento, referencias, herencia múltiple varían de manera importante entre los lenguajes de programación.
 
 Diseño de sistema – Interfaces gráficas
Las interfaces gráficas tienen como objetivo principal administrar la interacción entre el usuario mediante elementos gráficos, como son botones, menús y textos. Las aplicaciones interactivas donde el control del ratón y teclado desempeñan un papel importante se conocen como sistemas controlados o dirigidos por eventos. Estos eventos comprenden: mover el ratón, oprimir uno de sus botones, oprimir una tecla, etc. 

Desarrollar un sistema dirigido por eventos significa que la aplicación desde un inicio debe considerar un diseño adecuado. Por ejemplo, en Java se escoge alguna de las bibliotecas gráficas (AWT o Swing) para utilizar el manejo apropiado de interfaces mediante sus clases (JFrame, Jpanel, JButton). Más allá de estas bibliotecas o clases también se afecta la lógica del diseño, ya que se debe contemplar el momento de procesar eventos. 

Por ejemplo, si se desarrolla un sistema con varias pantallas se puede manejar cada evento mediante una clase para cada pantalla. Otra solución es usar un JFrame para todas las pantallas y declarar una clase que maneje los eventos del JFrame. En el segundo caso, en lugar de que cada pantalla reciba un evento del usuario, se hace que los eventos sean recibidos por parte de la clase y las pantallas se vuelven más pasivas y fáciles de manipular.

Diseño de sistema – Bases de datos
Las bases de datos son fundamentales en los sistemas de información. Una decisión estratégica importante en tal contexto es si debe utilizar bases de datos relacionales u orientadas a objetos. 

En general se consideran tres modelos de bases de datos principales:
•Modelo relacional: se define una colección de tablas donde cada una tiene un número específico de columnas y un número arbitrario de filas. Cada objeto se representa como una fila en una tabla y donde cada columna corresponde a un atributo distinto en el objeto.
•Modelo relacional extendido: el modelo relacional se extiende mediante procedimientos, objetos, versiones y otras nuevas capacidades. No hay un solo modelo relacional extendido, más bien hay una variedad de ellos, aunque todos comparten las tablas y consultas básicas del modelo relacional.
•Modelo orientado a objetos: se define un modelo orientado a objetos donde varía el tipo de encapsulamientode datos y los procedimientos en el objeto. El término
orientado a objetos varía según cada autor.   

Las bases de datos son depósitos de datos guardados en uno o más archivos. Existen sistemas de manejo de bases de datos (DBMS) y orientados a objetos (OOBDMS). Las bases de datos dan apoyo en los siguientes aspectos:

  •  Múltiples usuarios 
  • Múltiples aplicaciones 
  • Seguridad 
  • Integridad 
  • Distribución de datos
La tarea del diseño se simplifica, creando una tabla correspondiente a cada clase entidad del dominio delproblema y manteniendo las asociaciones entre clases. Obviamente el diseño de tablas puede optimizarse para un acceso más eficiente.
 
Diseño de sistema – Archivos
Aunque es más efectivo trabajar con bases de datos, es posible utilizar archivos, sobre todo cuando la especificación del sistema así lo requiera. En el caso de usar una base de datos, regularmente una clase se comunica con el DBMS para hacer solicitudes a cualquier tabla. Sin embargo, en el caso de los archivos, tal manejador no existe por lo que el proceso se hace manualmente.

BIBLIOGRAFIA:

4.4 REVISIÓN DEL DISEÑO

Según la IEEE 610.12, una revisión es un proceso o reunión durante la cual un producto de trabajo, un conjunto de productos de trabajo o la evidencia de la ejecución de un proceso se presenta al equipo del proyecto, a los administradores, usuarios, clientes u otras partes interesadas para su comentario o aprobación.


Las revisiones al diseño de los productos de software se realizan por demanda con el objetivo de detectar e identificar no conformidades en el diseño antes de pasar a la codificación, así como también identificar aspectos de mejoramiento. Entre otros, en esta actividad se verifica la arquitectura y utilización de patrones en el diseño.

Una revisión es una forma de aprovechar la diversidad de un grupo de personas para:

         Señalar la necesidad de mejoras en el producto de una sola persona o de un equipo

         Confirmar las partes del producto en las que no es necesaria o no es deseable una mejora.

         Conseguir un trabajo de mayor calidad maximizando los criterios de Correctitud  y Completitud principalmente.

Existen muchos tipos diferentes de revisiones que se pueden llevar adelante como parte de la ingeniería del software. Cada una tiene su lugar. Una reunión informal durante el almuerzo o en un café es una forma de revisión, si se discuten problemas técnicos.

Una presentación formal de un diseño de software a una audiencia de clientes, ejecutivos y personal  técnico es una forma de revisión. Sin embargo en éste trabajo nos concentraremos en una revisión técnica formal, que  llamaremos Inspección de Software.

El objetivo primario de las revisiones técnicas formales (inspección) es encontrar errores durante el proceso para evitar  que se conviertan en defectos después de la entrega del software. El beneficio obvio de estas inspecciones es el  descubrimiento de errores al principio para que no se propaguen al paso siguiente del proceso de desarrollo del software (catarata de errores de Mizuno).

BIBLIOGRAFIA:

4.5 DIAGRAMAS DE SECUENCIA DEL DISEÑO

El Diagrama de Secuencia de un sistema muestra gráficamente los eventos que fluyen de los actores al sistema. Su creación forma parte de la investigación para conocer el sistema; se incluye dentro de la etapa del análisis.


En UML los Diagrama de Secuencia muestran gráficamente los eventos que pasan de los actores al sistema.
  • Actividades y dependencias
Los Diagramas de Secuencia de un sistema se preparan durante la fase del análisis. Para su creación, debemos formular antes los Casos de Uso.
  • Comportamiento del sistema
Antes de iniciar el diseño lógico de cómo funcionará una aplicación de software, es necesario investigar y definir su comportamiento como una “caja negra”. El comportamiento del sistema es una descripción de lo quehace, sin explicar la manera en que lo hace. Una parte de la descripción es un Diagrama de la Secuencia del sistema.
  • Diagrama de secuencia del sistema
Los casos de uso indican cómo los actores interactúan con el Sistema de Software. Durante esa interacción un actor genera eventos dirigidos al sistema, solicitando alguna operación a cambio.

Conviene aislar y explicar gráficamente las operaciones que un actor solicita al sistema, porque ello contribuye a entender el comportamiento del sistema.
En UML los Diagramas de Secuencia dan una descripción gráfica de las interacciones del actor y de las operaciones que las mismas originan.
DIAGRAMA DE SECUENCIA => Representación que muestra, en un determinado Caso de Uso, los eventos generados por actores externos, su orden y los eventos internos del sistema.
A todos los sistemas se los trata como una caja negra; los diagramas se centran en los eventos que trascienden las fronteras del sistema y que fluyen desde los actores hacia los sistemas.

BIBLIOGRAFIA:
http://adimen.si.ehu.es/~rigau/teaching/EHU/ISHAS/Curs2008-2009/Apunts/IS.6.pdf


4.6 HERRAMIENTAS CASE PARA EL DISEÑO

Herramientas CASE para el proceso de desarrollo de software son las Herramientas de bajo nivel,L-CASE  (Lower CASE -  CASE inferior) o back-end ,dirigidas a las ultimas fases del desarrollo: construccion e implantacion.                                           


Juegos de herramientas o toolkits , son el tipo mas simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarian las herramientas de reingenieria, orientadas a la fase de mantenimiento.

      Las herramientas CASE se han venido ampliando y desarrollando, existe una gran variedad de estas con caracteristicas especificas, a continuacion describiremos algunas de ellas, desde las mas actuales hasta otras ya no tanto. 
  •        Microsoft  Project
Microsoft  Project es un software de administracion de proyectos diseñado, desarrollado y comercializado por Microsoft para asistir a administradores de proyectos en el desarrollo de planes, asignacion de recursos a tareas, dar seguimiento al progreso, administrar presupuesto y analizar cargas de trabajo.

Permite el aprendizaje rapido con el planeamiento y la administracion guiados organización y seguimiento de las tareas y recursos, comprar versiones de planes de proyectos evaluar los cambios, realizar un seguimiento del rendimiento, generar informes predefinidos, compartir planes de proyecto, colaboracion entre grupos de trabajo, presenta diagramas como: Diagrama de Grant  y Diagrama de Pert (diagrama de red).

El Software Microsoft  Office Project  en todas sus versiones (la version 2007 es la mas reciente) es util para la gestion de proyectos, aplicando procedimientos descritos en el PMBoK (Management Body of Knowledge) del PMI (Project Management Institute).

La aplicación crea calendarizacion de rutas criticas, ademas de cadenas y metodologia de eventos en cadena disponibles como add-ons de terceros. Los calendarios pueden ser resourse leveled, y las graficcas visualizadas en una Grafica de Gantt. 
  •  Racional Rose
Rational Rose es una herramienta de produccion y comercializacion establecidas por Rational Software Corporation (actualmente parte de IBM). Rose es un instrumento operativo conjunto que utiliza el Lenguaje Unificado (UMI) como medio para facilitar la captura de dominio de la sematica, la arquitectura y el diseño.
Este software tiene la capacidad de:
·         Crear
·         Ver
·         Modificar
·         Manipular 

       Sus caracteristicas principales: 
  1.  No es gratuito, se debe hacer un previo pago para poder adquirir el producto.
  2. La ingenieria de codigo (directa e inversa) es posible para ANSI C++, Visual Basic 6, Java, J2EE/EJB, CORBA, Ada 83, Ada 95, Bases de datos:DB2, Oracle, SOL 92, SOL Server, Sybase, Aplicaciones WEB. 
  3. Solamente Ingenieria reversa para COM.
  4. Rational Rose habilita asistentes para crear clases y provee plantillas de codigo que pueden aumentar significativamente la cantidad de codigo fuente generado. Adicionalmente, se pueden aplicarmlos patrones de diseño, Racional Rose ha provisto 20 de los patrones de diseño  GOF para Java. 
  5.  Admite la integraacion con otras herramientas de desarrollo (IDEs). 
  • JDeveloper
Este magnifico entorno integrado desarrollado por Oracle trabaja con la ingenieria inversa, es decir primero se crea el codigo y despues el diagrama.

Es un software propietario pero gratuito desde 2005. Las primeras vesrsiones de 1998 estaban basadas en el entorno JBuilder de Borland, pero desde la version 9i de 2001 esta basado en Java, no estando ya relacionado con el codigo anterior de JBuilder.

viernes, 7 de noviembre de 2014

3.1 ARQUITECTURA DE CLASE

El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño del sistema. Dependiendo del tipo de aplicación existen diversas arquitecturas  que se pueden utilizar.

Las arquitecturas se distinguen según la organización de los objetos de acuerdo a su funcionalidad. Esto es también conocido como la dimensión de la arquitectura. Por ejemplo, si existe un grupo de objetos para el manejo de la funcionalidad de la aplicación y otro para interactuar con las entidades externas de la aplicación, como el usuario y las bases de datos, entonces se considera que la arquitectura es de dos dimensiones. Por el contrario, si existe un solo grupo de objetos que maneja de manera indistinta la funcionalidad junto con la interacción externa, entonces se considera que la arquitectura es de una sola dimensión.

Una arquitectura puede incluir cualquier número de dimensiones. Algo que depende del tipo de aplicación que desee desarrollar. En genera el planteamiento es: si se diseña un sistema con cierto número de dimensiones. ¿se obtendrá un sistema más estable y fácil de extender que con  un número menor o mayor?. La respuesta depende de que tan independiente sean los objetos de un eje de funcionalidad con los demás. Si se cuenta con ejes de funcionalidad completamente ortogonales, algo que es difícil de lograr, el efecto de cambios en una dimensión no debería afectar a las demás dimensiones. Sin embargo, si los grupos de objetos no son lo suficientemente independientes, aun se puede limitar el efecto de los posibles cambios.
En el caso de los sistemas de información, una de las arquitecturas mas utilizadas es la de Modelo, Vista, Control (MCV – Model, View, Control). Esta arquitectura se basa en tres dimensiones principales: Modelo correspondiente a la información, Vista corresponde a la presentación o interacción con el usuario y Control correspondiente alcomportamiento, como se ilustra en la siguiente figura.
  

La vista o presentación de la información corresponde a las interfaces que se le presentan al usuario para el manejo de la información, donde por lo general pueden existir múltiples vistas sobre un mismo modelo. Típicamente la información representa el domino del problema y se almacena en una base de datos. Por otro lado, el control corresponde a la manipulación de la información a través de diversas presentaciones. Aunque existe cierta dependencia entre estas tres dimensiones, se considera que la manera de presentar la información es independiente de la propia información y de cómo se controla esta. Sin embargo cada una de ellas probablemente experimente cambios a lo largo del ciclo de vida del sistema, donde el control es el mas propenso a ser modificado, seguido de la vista y, finalmente, del modelo.
En correspondencia con el modelo MVC, la arquitectura para el modelo de análisis se basara en tres tipos o estereotipos de objetos correspondientes a las tres dimensiones anteriores. Ers importante notar que la correspondencia con la tres dimensiones utilizadas durante el modelo de requisitos.


Bibliografia:


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: