Contexto
En un hospital puedes encontrar diferentes médicos que se especializan en distintas áreas del cuerpo humano. Cuando un persona que llega a un hospital se le realizan diferentes estudios clínicos con el fin de obtener información sobre la enfermedad que aqueja al paciente. Estos estudios ofrecen diferentes vistas de una misma persona.
Así por ejemplo, una persona que tenga dolor en el pecho, el médico en turno hará un primer reconocimiento haciendo uso del estetoscopio, tratando de encontrar anomalías en válvulas cardiacas escuchando los sonidos del corazón. Después se procede a medir la presión arterial haciendo uso del esfigmomanómetro. Una radiografía al corazón permite conocer si presenta alguna forma irregular o si es más grande de lo normal y un cardiograma será útil para conocer la intensidad y ritmos de los movimientos del corazón.
Como puedes observar cada estudio al corazón ofrece una perspectiva y detalle diferentes que los médicos pueden utilizar para identificar qué es lo que sucede en el paciente.
En este sentido el modelo de diseño de software ofrece diferentes perspectivas del sistema que está por construirse. El equipo de programadores buscará el modelo y el detalle que le permitirá desarrollar el software con la información del diseño.
Explicación
2.1 Diseño de datos
El diseño de software toma los modelos elaborados en la etapa de análisis y los refina en un proceso iterativo. En la siguiente figura, Pressman (2010) logra aclarar la transición del trabajo elaborado en el análisis o ingeniería de requerimientos, a modelo de diseño. Observa cómo la línea vertical muestra el nivel de abstracción requerido para pasar de uno a otro, mientras que la línea horizontal punteada establece la frontera entre ambos modelos.
Imagen recuperada de Pressman, R. (2010). Ingeniería de Software. Un enfoque práctico (7ª ed.). México: McGraw Hill. Sólo para fines educativos.
Por ejemplo, el diagrama de clases que se desarrolló en el modelo del análisis se transforma en realizaciones de la clase del diseño y pasa por un proceso de refinamiento para detallar las clases de los objetos que serán utilizados en la etapa de construcción.
Observa cómo un mismo modelo generado en el análisis puede servir para generar modelos de diseño. Por ejemplo, el diagrama de flujo de datos, es utilizado para realizar otros modelos de diseño como el diseño de los elementos de la arquitectura y el diseño de elementos en el nivel de componentes.
También es posible que el mismo modelo de análisis sea refinado en el diseño. Por ejemplo, diagrama de secuencias generado en el análisis, puede ser retomado para afinar detalles en el modelo a nivel de componentes y el modelo a nivel de despliegue.
Elementos del diseño de datos
El diseño de datos es un modelo sobre el que se fundamenta el resto de los modelos de diseño y establece el nivel más alto de abstracción.
Haciendo una analogía con una construcción, el diseño de datos equivale al montaje de la cimentación de una casa. Unos buenos cimientos podrán soportar la casa que fue ideada por el arquitecto y, a la vez, determinará las características físicas de la construcción. Unos cimientos adecuados para una casa de 2 pisos podrían no serlo para un edificio de 10 pisos.
Este modelo de datos debe irse detallando en un proceso iterativo hasta llegar a generar las estructuras de datos necesarias para almacenar, recuperar y procesar la información del sistema.
Para Pressman (2010), este modelo es la piedra angular del desarrollo de software ya que influenciará de manera significativa al resto del diseño, tal y como lo hacen los cimientos de la casa.
La estructura de datos determina, por una parte, la manipulación de los componentes del sistema, y por otra, da forma al diseño de las tablas, campos, índices de la base de datos de una aplicación de la que se obtendrá información para cumplir con los objetivos del negocio, que a su vez permite generar Datamarts, Datawarehouses, y Data mining, con los que la organización puede aprovechar la información, analizar indicadores de negocio y ayudar a los directores ejecutivos de las empresas a tomar decisiones estratégicas que creen ventajas competitivas.
2.2 Diseño arquitectónico e interfaz
El diseño del software ha tomado prestado el término arquitectura de la industria de la construcción en un esfuerzo por asemejar las actividades que se presentan en ambas áreas del diseño.
El diseño de la arquitectura de software es similar a un plano de una construcción. Si estás buscando comprar una casa, posiblemente lo que más te interese sea cómo se encuentran distribuidos sus espacios. Para ello te será muy útil revisar el plano de la casa, y en si tienes algo de suerte te podrán presentar un plano en 3D con el que te puedan hacer un recorrido virtual dentro de la casa, de esa manera podrás hacerte una idea muy clara sobre los espacios interiores, iluminación nación natural, tamaño de los cuartos, baños, entre otras.
Diseño de la arquitectura: Define la relación que existe entre los elementos del sistema como son estructuras,
estilos, patrones y los componentes arquitectónicos.
Por otro lado, el diseñar la interfaz permite aclarar cómo debe ser la interacción del usuario o de los componentes con el sistema. Para ello será importante conocer los tipos de usuarios, sus funciones y las necesidades que deberá cubrir el sistema. Una interfaz gráfica haciendo uso de una pantalla táctil destinada al alta de órdenes de un restaurant por el mesero, puede ser muy diferente a la interfaz que el gerente requiera para generar el corte de caja diario.
En el diseño de la interfaz del software también se especifican cómo fluirá la información entre los procesos internos y externos del sistema. Siguiendo con la analogía a la industria de la construcción, el diseño de la interfaz se parece a las especificaciones de las ventanas, puertas, pasillos, enchufes eléctricos, altura de las llaves y regadera, es decir, todo aquello que exprese cómo los habitantes de la casa estarán interactuando con los servicios que ofrece cada espacio de la construcción.
Según Pressman (2010) existen tres elementos del diseño de la interfaz:
Haz clic en cada concepto para conocer más detalle.
Que detalla los elementos estéticos (imágenes, botones, colores), elementos técnicos (patrones de interfaz de usuario), y elementos ergonómicos (distribución, metáforas, menús, pestañas).
Que tienen que ver con otros sistemas, dispositivos, redes y otros productos o consumidores de información. Piensa por ejemplo en un desarrollo que requiere conectarse con un módulo de compras del sistema que posee un proveedor.
Que involucran a diferentes componentes del diseño. Este tipo de interfaz describe el intercambio de información entre los procesos internos de cada componente o módulo del sistema.
2.3 Diseño por componentes y despliegue
Por lo general, los sistemas se diseñan por módulos independientes que son descritos a detalle a través del diseño de componentes. Este diseño establece los detalles de cada componente para poder ser interconectado entre sí por medio de estructuras de datos, algoritmos que describen los procesos y su interfaz de usuario.
Este nivel de abstracción del diseño de software es parecido al detalle de las instalaciones de los servicios de agua, luz, teléfono, gas, de la construcción de una casa. Si deseas colocar una aparato de aire acondicionado (minisplit) en la sala de la casa, seguramente te interesará conocer dónde podrás tomar la corriente eléctrica, cuál es la tubería de drenaje para sacar el fluido condensado que genere, en qué lugar de la pared deberás hacer montar la unidad interna del minisplit. De manera similar el diseño de componentes establece las interconexiones con los módulos del sistema.
En opinión de Pressman (2010), el diseño a nivel de los componentes se logra a través de la descripción del procesamiento de información que ocurre en cada componente mediante la definición de estructuras de datos, detalles algorítmicos y la interfaz de acceso a cada uno de ellos.
Los diagramas de componentes permiten representar gráficamente los elementos de software que deberán ser construidos para dar solución a los requerimientos del cliente.
Usualmente pueden implementar una o más clases en el paradigma orientado a objetos, sin embargo, su nivel de abstracción es más alto que un diagrama de clases.
Haz clic en cada concepto para conocer más detalle.
Ejemplo de un diagrama de componentes
El diagrama de componentes es una herramienta que puede ser utilizada durante la etapa de construcción haciendo uso de los siguientes estereotipos de UML con el objetivo de ofrecer información del tipo de componente al que se refiere
El diseño de despliegue es el último nivel del diseño de software, detalla cómo debe ser implementado el software en el hardware. Para ello podrá hacer uso de diagramas de despliegue que describan la funcionalidad de los componentes.
Por ejemplo, en un proyecto de desarrollo de una estación meteorológica, podrían aparecer tres posibles ambientes físicos: el sensor ubicado en la intemperie que está detectando indicadores como humedad, velocidad del viento, presión atmosférica; un servidor que recopila la información del sensor cada 5 minutos y un sistema instalado en la computadora del cliente que revisa la información del servidor y ofrece finalmente reportes que son útiles para hacer pronósticos.
Como puedes observar en este diagrama, es fácil ubicar los componentes que serán instalados en los equipos físicos, mientras que no se detallan las características del hardware que será utilizado en el sistema, lo que permite que las decisiones del modelo y marca del equipo a utilizar sean tomadas en la etapa de la construcción.
Los diagramas de despliegue muestran los dispositivos de hardware que intervienen en el sistema. Son particularmente útiles para conocer a grandes rasgos los tipos de dispositivos y los componentes de software que contendrán.
Las partes del diagrama de despliegue son:
Haz clic en cada concepto para conocer más detalle.
Son cubos que representan diferentes dispositivos electrónicos que tienen capacidad de procesamiento.
Son utilizadas para representar protocolos de comunicación que utiliza el hardware. Se representan por una línea continua que interconecta a los diferentes nodos del diagrama.
Se representa a través de una línea punteada y expresa la dependencia que existe entre los componentes.
Es un módulo independiente que expresa una función específica. En un diagrama de despliegue es posible incluir componentes dentro de los nodos.
Observa el diagrama de despliegue de un sistema de terminales punto de venta que son frecuentemente utilizados en comercios para registrar pagos de los clientes a través de una tarjeta de crédito. La terminal se conecta a un servidor que contiene la base de datos del banco través de internet (TCP/IP) y también puede ser conectada por la red telefónica a una caja de control que a su vez se conecta una red LAN por medio del protocolo ETHERNET o RDSI al servidor del banco.
Diagrama de despliegue
Cierre
El diseño de software es una actividad que requiere un esfuerzo considerable al proveer de diferentes vistas del software para diferentes grupos de personas. Así por ejemplo, los diagramas de clases serán bastante útiles para el equipo de programadores, mientras que el modelo de datos y el diccionario de datos contienen la información que un administrador de bases de datos requiere para implementar la estructura que soportará la gestión de información en el sistema.
El diseño incluye 5 niveles de información que va desde el nivel de abstracción más alto, que es el diseño de datos, también llamada arquitectura de datos, hasta el diseño de despliegue que describe los elementos físicos y su relación con los componentes del sistema.
Las herramientas UML que puedes utilizar en el diseño son el diagrama de componentes y el diagrama de despliegue. Ambas herramientas ofrecen una vista general sobre la agrupación de funciones y su relación con los dispositivos físicos del sistema.
Si fueras un recurso recién incorporado al equipo que desarrollará el sistema, la mejor estrategia que puedes llevar a cabo para comprender el alcance y la solución que se trabajará en el proyecto será tener acceso a los 5 niveles del modelo general de diseño de software. Esto te dará una idea bastante clara sobre lo que se construirá, tal y como sucede con la construcción de una casa. El encargado de la obra revisará los planos que muestren la distribución de los espacios y la fachada, otros en los que aparece el diseño de los servicios de luz, agua, gas, teléfono, entre otras. Cada uno de estos planos ofrece un detalle diferente y todos a su vez contienen información de lo que será la casa por construirse.
Checkpoint
Asegúrate de poder:
Referencias
Glosario
Data marts: es un conjunto de bases de datos de las que se puede recopilar información para ayudar a la toma de decisiones a nivel de un área o departamento funcional de una organización.
Data warehouses: es un conjunto bases de datos o data marts que apoya a tomar decisiones a nivel global en la organización.
Data mining: se refiere al proceso de analizar información de varias fuentes y determinar las relaciones que existen entre factores internos como el precio y los factores externos como la competencia, posicionamiento en el mercado. Esto les permite a las empresas determinar el impacto en las ventas, satisfacción del cliente y las ganancias a nivel corporativo.
Metáforas de software: el software utiliza conceptos abstractos que son difíciles de interpretar, por lo que es más sencillo explicarlos a través de esquemas ya conocidos llamadas metáforas. El uso del concepto de escritorio, carpetas, papelera de reciclaje, son metáforas muy útiles para hacer más amigable una interfaz gráfica porque son objetos cotidianos que todos conocemos.
RDSI: Red Digital de Servicios Integrados. Es una red que facilita las interconexiones digitales de extremo a extremo a través de líneas telefónicas. A través de estas redes es posible transmitir voz, datos, video.
ETHERNET: es un protocolo de interconexión utilizada en redes LAN que soporta tasas de transferencia de hasta 100 gigabits por segundo.
TCP/IP: es el protocolo de interconexión utilizado en Internet en el que la información es paquetizada añadiéndoles encabezados de direccionamiento que permiten ser enviados desde el origen y enrutada hasta el destino.