desarrollo de sistemas como el relleno del hueco entre el problema y la máquina. Las actividades de desarrollo del sistema cierran de manera incremental ese hueco al identificar y definir objetos que realizan parte del sistema como se muestra en la siguiente figura:
El análisis reduce el hueco entre el problema y
la máquina, identificando objetos que representan conceptos visibles para el usuario. Durante el análisis describimos el sistema desde el punto de vista del comportamiento externo, como su funcionalidad (modelo de caso de uso), los conceptos del dominio de aplicación que maneja (modelo de objetos), su comportamiento desde el punto de vista de las interacciones (modelo dinámico) y sus requerimientos no funcionales. El diseño del sistema reduce el hueco entre el problema y la máquina definiendo una plataforma de hardware y software que proporciona un nivel de abstracción más alto que el hardware de la computadora. Esto se realiza seleccionando componentes hechos para la realización de servicios estándar, como el middleware, juegos de herramientas de interfaz de usuario, marcos de aplicación y bibliotecas de clases Durante el diseño de objetos refinamos los modelos de análisis y de diseño del sistema, identificamos nuevos objetos y cerramos el hueco entre los objetos de aplicación y los componentes hechos. Esto incluye la identificación de objetos personalizados, el ajuste de los componentes hechos y la especificación precisa de cada interfaz de subsistema y clase. Como resultado, el modelo de diseño de objetos puede particionarse en conjuntos de clases que pueden ser implementados por desarrolladores individuales. El diseño de objetos incluye cuatro grupos de actividades como se muestra en la siguiente figura:
1. Especificación de servicios. Durante el
diseño de objetos especificamos los servicios de subsistemas (identificados durante el diseño del sistema) desde el punto de vista de interfaces de clase, incluyendo operaciones, argumentos, firmas de tipo y excepciones. Durante esta actividad también encontramos operaciones faltantes y objetos necesarios para transferir datos entre subsistemas. El resultado de la especificación de servicios es una especificación de interfaz completa para cada subsistema. A la especificación de servicios de subsistema con frecuencia se le llama API (siglas en inglés de interfaz de programación de aplicaciones) de subsistema.
2. Selección de componentes. hechos
identificados durante el diseño del sistema para realizar cada subsistema. Seleccionamos bibliotecas de clase y componentes adicionales para las estructuras de datos y servicios básicos. A menudo necesitamos ajustar los componentes que seleccionamos antes de poder usarlos envolviendo objetos personalizados alrededor de ellos o refinándolos usando herencia. Durante esas actividades enfrentamos el mismo compromiso de compra frente a construcción que encaramos durante el diseño del sistema 3. Reestructuración. Las actividades de reestructuración manipulan el modelo del sistema para incrementar la reutilización del código o satisfacer otros objetivos de diseño. Cada actividad de reestructuración puede verse como una transformación gráfica de subconjuntos de un modelo particular. Las actividades típicas incluyen la transformación de asociaciones n-arias en asociaciones binarias, la implementación de asociaciones binarias como referencias, la combinación de dos clases similares de dos subsistemas diferentes en una sola clase, la descomposición en atributos de clases que no tienen comportamiento significativo, la división de clases complejas en otras más simples, el reacomodo de clases y operaciones para incrementar la herencia y el empacado. Durante la reestructuración tratamos objetivos de diseño, como el mantenimiento, la legibilidad y la comprensibilidad del modelo del sistema. 4. Optimización. Las actividades de optimización tratan los requerimientos de desempeño del modelo del sistema. Esto incluye el cambio de algoritmos para que respondan a los requerimientos de velocidad o memoria, la reducción de multiplicidades en asociaciones para agilizar las consultas, la adición de asociaciones redundantes para eficiencia, el reacomodo del orden de ejecución, la adición de atributos derivados para mejorar el tiempo de acceso a objetos y la apertura de la arquitectura; eso es, la adición de acceso a capas inferiores debido a requerimientos de desempeño.
El diseño de objetos no es lineal. Aunque cada
una de las actividades que describimos antes aborda un problema específico de diseño de objetos, necesitan suceder en forma concurrente. Un componente hecho específico puede restringir la cantidad de tipos de excepciones mencionadas en la especificación de una operación y, por tanto, puede tener impacto en la interfaz del subsistema. La selección de un componente puede reducir el trabajo de implementación mientras introduce nuevos objetos "de unión", los cuales también tienen que especificarse. Por último, la reestructuración y la optimización pueden reducir la cantidad de objetos a implementar, incrementando la cantidad de reutilización en el sistema. La mayor cantidad de objetos y desarrolladores, la alta tasa de cambio y la cantidad de decisiones concurrentes que se toman durante el diseño de objetos hacen que esta actividad sea mucho más compleja que el análisis o el diseño del sistema. Esto representa un reto de administración, ya que muchas decisiones importantes tienden a resolverse en forma independiente y no se comunican al resto del proyecto. El diseño de objetos requiere que mucha información se ponga a disposición de los desarrolladores para que puedan tomarse las decisiones en forma consistente con las decisiones tomadas por los demás desarrolladores y con los objetivos de diseño. El Documento de Diseño de Objetos, un documento vivo que describe la especificación de cada clase, apoya este intercambio de información.
Actividad: Realiza un mapa cognitivo de panal.
Individual
Mapa cognitivo de panal
Sirve para organizar o clasificar cualquier tipo de información. Este diagrama esta conformado por cuatro celdillas hexagonales o cuadrangulares centrales y ocho subsecuentes que simulan un panal. 1. En la parte central se anota el nombre o título del tema 2. En los nudos de cada celda se escriben los subtemas 3. De los subtemas salen líneas delgadas que forman la celdilla, allí se anotan las características o elementos que se desee incluir 4. Los nudos de las celdas (subtemas), se unen en la parte central por medio de líneas que conforman a su vez otras celdas, donde se sugiere añadir ejemplos nombres de autores del tema 5. En la parte central de cada celdilla se pueden colocar ilustraciones o íconos que ejemplifiquen o representen los contenidos