INGENIERÍA DE
SOFTWARE I
Ing. Angel Ochoa Flores, MSc.
[email protected]
CONCEPTOS DE DISEÑO
II
Conceptos de diseño orientados a objeto
Clases de diseño
Conforme el diseño evoluciona, se definirá un conjunto de clases de
diseño que refinan las clases de análisis, dando detalles del diseño
que permitirán que las clases se implementen y generen una
infraestructura para el software que apoye la solución de negocios.
Pueden desarrollarse cinco tipos diferentes de clases de diseño, cada
una de las cuales representa una capa distinta de la arquitectura del
diseño.
• Clases de usuario de la interfaz. Definen todas las abstracciones necesarias para la interacción
humano-computadora (IHC). En muchos casos, la IHC ocurre dentro del contexto de una metáfora
(por ejemplo, cuaderno de notas, formato de orden, maquina de fax, etc.) y las clases del diseño
para la interfaz son representaciones visuales de los elementos de la metáfora.
• Clases del dominio de negocios. Es frecuente que sean refinamientos de las clases de análisis
definidas antes. Las clases identifican los atributos y servicios (métodos) que se requieren para
implementar algunos elementos del dominio de negocios.
• Clases de proceso. Implantan abstracciones de negocios de bajo nivel que se requieren para
administrar por completo las clases de dominio de negocios.
• Clases persistentes. Representan almacenamientos de datos (por ejemplo, una base de datos)
que persistirán mas allá de la ejecución del software.
• Clases de sistemas. Implantan las funciones de administración y control del software que
permiten que el sistema opere y se comunique dentro de su ambiente de computación y con el
mundo exterior.
EL MODELO DEL DISEÑO
El modelo del diseño puede verse en dos dimensiones distintas, como se ilustra en
la figura 8.4.
La dimensión del proceso indica la evolución del modelo del diseño conforme se
ejecutan las tareas de este como parte del proceso del software. La dimensión de la
abstracción representa el nivel de detalle a medida que cada elemento del modelo
de análisis se transforma en un equivalente de diseño y luego se mejora en forma
iterativa.
En relación con la figura 8.4, la línea punteada indica la frontera entre los modelos
de análisis y de diseño. En ciertos casos, es posible hacer una distinción clara entre
ambos modelos. En otros, el modelo de análisis se mezcla poco a poco con el de
diseño y la distinción es menos obvia.
Los elementos del modelo de diseño usan muchos de los diagramas UML que se utilizaron en el
modelo del análisis.
La diferencia es que estos diagramas se refinan y elaboran como parte del diseño; se dan mas
detalles específicos de la implantación y se hace énfasis en la estructura y en el estilo
arquitectónico, en los componentes que residen dentro de la arquitectura y en las interfaces entre
los componentes y el mundo exterior.
No obstante, debe observarse que los elementos del modelo indicados a lo largo del eje horizontal
no siempre se desarrollan en forma secuencial. En la mayoría de los casos, el diseño preliminar de la
arquitectura establece la etapa y va seguido del diseño de la interfaz y del diseño del nivel de los
componentes, los cuales con frecuencia ocurren en paralelo.
El modelo de despliegue por lo general se retrasa hasta que el diseño haya sido desarrollado por
completo. Es posible aplicar patrones de diseño en cualquier punto de este proceso. Estos patrones
permiten aplicar el conocimiento del diseño a problemas especificos del dominio que han sido
encontrados y resueltos por otras personas.
Elementos del diseño de datos
Igual que otras actividades de la ingeniería de software, el diseño de datos crea un modelo de datos o
información que se representa en un nivel de abstracción elevado. Este modelo de los datos se refina
después en forma progresiva hacia representaciones mas especificas de la implementación que puedan
ser procesadas por el sistema basado en computadora. En muchas aplicaciones de software, la
arquitectura de los datos tendrá una influencia profunda en la arquitectura del software que debe
procesarlo.
La estructura de los datos siempre ha sido parte importante del diseño de software. En el nivel de
componentes del programa, del diseño de las estructuras de datos y de los algoritmos requeridos para
manipularlos, es esencial la creación de aplicaciones de alta calidad. En el nivel de la aplicación, la
traducción de un modelo de datos (obtenido como parte de la ingeniería de los requerimientos) a una
base de datos es crucial para lograr los objetivos de negocios de un sistema. En el nivel de negocios, el
conjunto de información almacenada en bases de datos incompatibles y reorganizados en un “data
warehouse” permite la minería de datos o descubrimiento de conocimiento que tiene un efecto en el
exito del negocio en si. En cada caso, el diseño de los datos juega un papel importante.
Elementos del diseño arquitectónico
El diseño de la arquitectura del software es el equivalente del plano de una casa. Este ilustra la
distribución general de las habitaciones, su tamaño, forma y relaciones entre ellas, así como las puertas y
ventanas que permiten el movimiento entre los cuartos. El plano da una visión general de la casa. Los
elementos del diseño de la arquitectura dan la visión general del software.
El modelo arquitectónico proviene de tres fuentes:
1) información sobre el dominio de la aplicación del software que se va a elaborar,
2) los elementos especificos del modelo de requerimientos, tales como diagramas de flujo de datos o
clases de análisis, sus relaciones y colaboraciones para el problema en cuestión y
3) la disponibilidad de estilos arquitectónicos
Por lo general, el elemento de diseño arquitectónico se ilustra como un conjunto de sistemas
interconectados, con frecuencia obtenidos de paquetes de análisis dentro del modelo de requerimientos.
Cada subsistema puede tener su propia arquitectura (por ejemplo, la interfaz grafica de usuario puede
estar estructurada de acuerdo con un estilo de arquitectura preexistente para interfaces de usuario).
Elementos de diseño de la interfaz
Los elementos de diseño de la interfaz del software permiten que la
información fluya hacia dentro y afuera del sistema, y como están
comunicados los componentes que son parte de la arquitectura.
Hay tres elementos importantes del diseño de la interfaz:
1) la interfaz de usuario (IU),
2) las interfaces externas que tienen que ver con otros sistemas,
dispositivos, redes y otros productores o consumidores de información y
3) interfaces internas que involucran a los distintos componentes del diseño.
Estos elementos del diseño de la interfaz permiten que el software se
comunique externamente y permita la comunicación y colaboración internas
entre los componentes que constituyen la arquitectura del software.
Elementos del diseño en el nivel de los componentes
El diseño en el nivel de los componentes del software es el equivalente de los planos (y
especificaciones) detallados de cada habitación de la casa. Estos dibujos ilustran el cableado y
la plomería de cada cuarto, la ubicación de cajas eléctricas e interruptores, grifos, coladeras,
regaderas, tinas, drenajes, gabinetes y closets. También describen el tipo de piso que se va a
usar, las molduras que se van a aplicar y todos los detalles asociados con una habitación.
El diseño de componentes para el software describe por completo los detalles internos de cada
componente. Para lograrlo, este diseño define estructuras de datos para todos los objetos de
datos locales y detalles algorítmicos para todo el procesamiento que tiene lugar dentro de un
componente, asi como la interfaz que permite el acceso a todas las operaciones de los
componentes (comportamientos).
En el contexto de la ingeniería de software orientada a objeto, un componente se representa
en forma de diagrama UML, como se ilustra en la figura 8.6.
Los detalles del diseño de un componente se modelan en muchos niveles de abstracción
diferentes. Se utiliza un diagrama de actividades UML para representar la lógica del
procesamiento.
El flujo detallado del procedimiento para un componente se representa con pseudocódigo o
con alguna otra forma diagramática. La estructura algorítmica sigue las reglas establecidas
para la programación estructurada (por ejemplo, un conjunto de construcciones restringidas de
procedimiento). Las estructuras de datos, seleccionadas con base en la naturaleza de los
objetos de datos que se van a procesar, por lo general se modelan con el empleo de
pseudocódigo del lenguaje de programación que se usara para la implementación.
Elementos del diseño del despliegue
Los elementos del diseño del despliegue indican la forma en la que se
acomodaran la funcionalidad del software y los subsistemas dentro del
ambiente físico de la computación que lo apoyara.
Durante el diseño se desarrolla un diagrama de despliegue que después
se refina, como se ilustra en la figura 8.7. En ella aparecen tres
ambientes de computación. Se indican los subsistemas (funcionalidad)
que están alojados dentro de cada elemento de computación. Por
ejemplo, la computadora personal aloja subsistemas que implementan
características de seguridad, vigilancia, administración del hogar y
comunicaciones.
El diagrama que aparece en la figura 8.7 es un formato descriptor. Esto
significa que el diagrama de despliegue muestra el ambiente de
computación, pero no indica de manera explicita los detalles de la
configuración. Por ejemplo, no se da mayor identificación de la
“computadora personal”. Puede ser una Mac o basarse en Windows,
una estación de trabajo Sun o un sistema Linux. Estos detalles se dan
cuando se regrese al diagrama de despliegue en el formato de instancia
en las etapas finales del diseño, o cuando comience la construcción. Se
identifica cada instancia del despliegue (una configuración especifica,
llamada configuración del hardware).