Вы находитесь на странице: 1из 8

Fundamentos de Ingeniera del Software

Diseo 1

Diseo?

Departamento de Informtica | Universidad de Valladolid

Fundamentos de Ingeniera del


Software

El diseo de software es el proceso de refinar la


arquitectura, componentes, interfaces y otras
caractersticas de un sistema o componente y el
resultado de ste proceso (IEEE)
El diseo del software es una descripcin de la
estructura del mismo que vamos a implementar, los
datos que son parte del sistema, las interfaces entre
sus componentes y, en ocasiones, los algoritmos
utilizados (S OMMERVILLE)

Diseo
Miguel A. Laguna, Flix Prieto
Curso 2011/12

Universidad de Valladolid
Fundamentos de Ingeniera del Software

Diseo 2

Diseo?

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 3

Espacio de diseo

El diseo es un proceso de resolucin de problemas,


cuyo objetivo es encontrar y describir una forma
Para implementar los requisitos funcionales del
sistema
Respetando las restricciones impuestas por los
requisitos no funcionales
Ajustndose a los principios generales de calidad

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 4

Elementos del diseo

Diseo 5

Identificacin de la concurrencia
Determinacin del estilo arquitectnico

Diseo detallado de las clases


De clases orientadas al anlisis a clases centradas en
la implementacin prctica

Organizacin en subsistemas
Asociacin de sistemas a procesadores

Diseo de la Interfaz de Usuario

FLiX

Fundamentos de Ingeniera del Software

Diseo 6

Objetos persistentes

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 7

Almacenamiento en ficheros

Sobreviven a la ejecucin del sistema


No todos los objetos deben ser persistentes
(replicacin de la estructura de objetos en tiempo de
ejecucin)
Soluciones a la persistencia:
Almacenamiento simple: Archivos de texto, archivos
con formato, xml, objetos serializados (pickle en
python)
Gestores de bases de datos (relacionales u
orientados a objetos)

Universidad de Valladolid

FLiX

Resolucin de la persistencia

Decisiones de alto nivel sobre la estructura global del


sistema

Departamento de Informtica

Departamento de Informtica

Fundamentos de Ingeniera del Software

Diseo del sistema

Diseo del sistema

Universidad de Valladolid

Universidad de Valladolid

Departamento de Informtica

FLiX

Solucin barata (bibliotecas bsicas de los


lenguajes)
Dependiente del sistema operativo
Fcil si son ficheros secuenciales
Adecuado para objetos poco estructurados (imagen,
sonido)
Objetos que se guardan poco tiempo

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 8

Bases de datos

En anlisis se pueden considerar todos los objetos


como concurrentes

Accesibles desde varias plataformas

En implementacin no disponemos de un procesador


para cada objeto
Generalmente no es preciso porque

Independencia de la aplicacin
Proporciona soporte de acceso
Requiere traduccin del modelo OO al modelo
relacional

En un hilo de control se pasa el control de un proceso


a otro
Todos los objetos que son activos de forma excluyente
se pueden implementar sobre un mismo procesador

Requiere una conexin ms compleja entre el


sistema y el gestor de bases de datos

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 10

Identificacin de la concurrencia

Un hilo de control es un camino a travs de un


conjunto de diagramas de estados, en el cual slo
est activo un objeto en cada instante

FLiX
Diseo 12

Diagrama de paquetes

Universidad de Valladolid

FLiX
Diseo 13

Diagrama de componentes

Un componente representa
una parte de un sistema que
encapsula su contenido y
puede ser reemplazado por
otro con una funcionalidad
similar
El comportamiento de un
componente est definido en
trminos de las interfaces que
requiere y proporciona

Puede contener otros


paquetes

Departamento de Informtica

Departamento de Informtica

Fundamentos de Ingeniera del Software

Proporciona un espacio de
nombres a los elementos
agrupados

Fundamentos de Ingeniera del Software

Diseo 11

Es preciso definir la interfaz entre subsistemas

Un paquete agrupa otros


elementos

Universidad de Valladolid

FLiX

Lo ideal es identificar los servicios que proporcionan


los subsistemas

Si no hay restricciones de tiempo, la concurrencia se


puede resolver mediante sistemas multitarea

Departamento de Informtica

Departamento de Informtica

Fundamentos de Ingeniera del Software

Dividir el sistema en conjuntos de clases (paquetes)


basndose en algn tipo de propiedad comn
(funcionalidad, ubicacin fsica,...)

Necesitaremos un procesador por hilo

Fundamentos de Ingeniera del Software

Universidad de Valladolid

Organizacin en subsistemas

Hay que identificar los casos de concurrencia


necesaria que no pueda ser eliminada

Universidad de Valladolid

Diseo 9

Concurrencia

Grandes volmenes de informacin

Universidad de Valladolid

Fundamentos de Ingeniera del Software

FLiX
Diseo 14

Diagrama de despliegue

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 15

Arquitectura del sistema

Representa la organizacin del sistema


Muestra la localizacin de
artefactos dentro de los
nodos

Su representacin facilita la comunicacin entre los


participantes en el desarrollo

Un nodo es un recurso
computacional que puede
ser desplegado en ejecucin

Existen varios Estilos Arquitectnicos apropiados


para diferentes tipos de problemas
Tambin denominados Patrones Arquitectnicos
Puede ser preciso combinar varios estilos en el mismo
sistema

Universidad de Valladolid

Departamento de Informtica

FLiX

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 16

Estilos arquitectnicos

Un flujo de datos de formato relativamente simple es


transmitido entre una serie de filtros que lo
modifican

Basado en transacciones

Cada uno de los filtros transforma los datos de una


forma bien definida
Los datos entran de forma constante en la tubera
El proceso se realiza de forma concurrente
La arquitectura es muy flexible, permitiendo
modificacin de los filtros utilizados

Cliente-Servidor
Multicapa
Modelo-Vista-Controlador
...

Departamento de Informtica

Fundamentos de Ingeniera del Software

Diseo 17

Tubera y filtro

Tubera y filtro

Universidad de Valladolid

Fundamentos de Ingeniera del Software

FLiX
Diseo 18

Tubera y filtro

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 19

Proceso de transacciones

Un proceso lee una serie de entradas una por una


Cada entrada describe una transaccin, un
comando que cambia el estado de alguno de los
datos almacenados en el sistema
Existe un componente que decide qu hacer con
cada transaccin
Este componente decide quin ser el encargado de
procesar la transaccin

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 20

Proceso de transacciones

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 21

Cliente/Servidor
Existe al menos un componente que juega el papel
de cliente, iniciando conexiones para obtener
determinado servicio
Existe al menos un componente que juega el papel
de servidor, esperando y atendiendo conexiones
para proporcionar un servicio
Se puede optar por clientes ligeros o pesados en
funcin de la distribucin de servicios entre clientes y
servidores
Se puede extender a una arquitectura Peer to Peer
en que los componentes actan como clientes y
como servidores indistintamente

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 22

Cliente/Servidor

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 23

Sistemas multicapa

El sistema se distribuye en capas


El acoplamiento entre capas debe ser dbil
Cada capa ve a las que tiene por debajo como un
conjunto de servicios
Cada capa se elabora con nivel ms alto de
abstraccin
Varios estilos de capas:
Arquitectura cerrada: Cada capa se comunica
exclusivamente con la inmediatamente inferior
Arquitectura abierta: Cada capa puede comunicarse
con todas las capas que tiene por debajo

Universidad de Valladolid

Departamento de Informtica

FLiX

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 24

Sistemas multicapa

Fundamentos de Ingeniera del Software

Diseo 25

Modelo-Vista-Controlador (MVC)

Permite separar la capa de interfaz de usuario del


resto de las partes del sistema
El modelo contiene las clases que modelan el
problema a resolver
La vista contiene las clases utilizadas para mostrar la
informacin del modelo al usuario
El controlador contiene las clases que se ocupan de
la interaccin con el usuario y el control del modelo
y la vista
Usualmente se aplica el patrn observador para
separar el modelo de la vista

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 26

Modelo-Vista-Controlador

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 27

Objetivo del diseo de las clases

Refinar la estructura de las clases que ya tenemos


Aadir detalles sobre
Tipos de atributos, argumentos
algoritmos de los mtodos
descomposicin de los mtodos en otros privados
dentro de las clases

Se trata de un proceso iterativo y combinado con el


anlisis

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 28

Diseo detallado de las clases

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 29

Obtener las operaciones

[Combinacin de los distintos diagramas para la]


Determinacin de las operaciones

Combinamos los distintos diagramas para determinar


las operaciones pblicas de cada clase

Diseo de los algoritmos

Cada mensaje recibido por un objeto implica una


operacin en su clase

Optimizacin del acceso a la informacin


Implementacin de interacciones internas

Cada cambio de estado en un objeto implica una


operacin en su clase

Ajuste de la estructura de las clases

Las herramientas CASE bien utilizadas facilitan el


proceso

Diseo de las asociaciones


Determinacin de la representacin de los objetos

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 30

Disear algoritmos

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 31

Determinar la representacin

La mayora de los mtodos son triviales pero . . .


En ocasiones hay que disear algoritmos complejos
En ocasiones hay que disear estructuras apropiadas
para los algoritmos
Para ciertos algoritmos necesitaremos mtodos
privados que permitan descomponer la operacin en
varios mdulos

Universidad de Valladolid

Universidad de Valladolid

Departamento de Informtica

FLiX

Debemos decidir si los atributos se representan


mediante
Un tipo primitivo o proporcionado por la biblioteca
bsica del lenguaje
Una clase proporcionada por una biblioteca auxiliar
Una clase de fabricacin propia

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 32

Optimizar el acceso

Fundamentos de Ingeniera del Software

Diseo 33

Implementar el control

En el modelo de anlisis evitamos la redundancia


En el modelo de diseo puede ser interesante
mejorar los tiempos de acceso mediante:
Asociaciones redundantes que minimicen el coste
de acceso
Atributos derivados, que eviten repetir la llamada a
operaciones

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 34

Implementar el control

Guiamos al usuario a travs de ella


Normalmente podemos utilizar una biblioteca de
control proporcionada por el Framework elegido

Pero la herencia no es la nica alternativa de


implementacin

FLiX

Fundamentos de Ingeniera del Software

Diseo 36

Implementar las asociaciones

FLiX
Diseo 37

En su construccin deberan participar diseadores


grficos, siclogos, socilogos,. . . adems de
ingenieros de software
Elementos de diseo:

Como referencia en una direccin y bsqueda en la


otra
Como referencia en ambas direcciones
Como objetos-asociacin, con referencias a los
objetos implicados

Diseo externo: Lo que el usuario ve


Diseo interno: Lo que el usuario no ve

FLiX
Diseo 38

Factores humanos

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 39

Reglas de oro del diseo de IU

Tenemos una memoria limitada a corto plazo

Dejar el control al usuario

Cometemos errores

Reducir su carga de memoria

Poseemos un amplio rango de capacidades fsicas

Hacer consistente la interfaz

Tenemos diferentes preferencias de interaccin

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

La interfaz del software es determinante para la


experiencia de los usuarios

Las asociaciones unidireccionales se implementan


como referencias o conjuntos de referencias
(atributos o conjuntos de atributos en el lenguaje de
programacin)
Las asociaciones bidireccionales:

Departamento de Informtica

Universidad de Valladolid

El diseo de la IU

Determinar el modo en que se usarn las


asociaciones

Fundamentos de Ingeniera del Software

Diseo 35

Operaciones con la misma semntica y signatura


Operaciones similares
Atributos similares
Abstraccin del comportamiento a posteriori

Si utilizamos un control guiado por eventos

Universidad de Valladolid

FLiX

Incrementar la herencia para optimizar y reducir el


nmero de operaciones

Si se utiliza un control procedimental

Departamento de Informtica

Departamento de Informtica

Fundamentos de Ingeniera del Software

Ajustar la estructura de clases

Tomamos como base la mquina de estados que


representa la interfaz

Universidad de Valladolid

Universidad de Valladolid

Departamento de Informtica

FLiX

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 40

Dejar el control al usuario

Fundamentos de Ingeniera del Software

Diseo 41

Reducir la carga de memoria del usuario

No obligar al usuario a realizar acciones innecesarias


o indeseadas
Dar una interaccin flexible

Reducir la demanda de memoria a corto plazo


Hacer que lo preestablecido sea significativo

Permitir que la interaccin sea interrumpible y


reversible

Definir atajos intuitivos

Facilitar la interaccin del usuario experto

Utilizar metforas del mundo real

Ocultar tecnicismos al usuario ocasional

Revelar informacin de modo progresivo

Disear interaccin directa con los objetos de


pantalla siempre que sea posible

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 42

Hacer consistente la interfaz

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 43

Tipos de IU

Manipulacin directa
Colocar la tarea actual en un contexto significativo

Seleccin de mens

Mantener la consistencia en familias de aplicaciones

Rellenado de formularios

No hacer cambios en la interfaz sin una buena razn

Lenguaje de comandos
Lenguaje natural

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 44

Un diseo malo

Universidad de Valladolid

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 45

Un diseo mejor

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 46

Diseo interno de la IU

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 47

Conexin con la capa de dominio

El diseo de los mecanismos que recogen, procesan


y dan respuesta a las peticiones del usuario
En una arquitectura en tres capas, el diseo interno
incluye el diseo de la comunicacin entre la capa
de presentacin y la capa de dominio
Mecanismos que gestionan la interaccin con el
usuario
Mecanismos que gestionan la presentacin de la
informacin
Mecanismos de comunicacin con la capa de
dominio

Diseo interno y externo deben realizarse en paralelo

Universidad de Valladolid

Departamento de Informtica

FLiX

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 48

Conexin con la capa de dominio

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

Fundamentos de Ingeniera del Software

Diseo 49

Conexin con la capa de dominio

FLiX
Diseo 50

Datos iniciales para el diseo

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 51

Etapas del diseo


Disear los casos de uso reales a partir de los
esenciales

Casos de uso esenciales


Definen la interaccin entre usuario y sistema sin tener
en cuenta la tecnologa utilizada

Modelo de dominio

Dependiente del diseo externo


Puede implicar cambios en los DSS

Asignar la responsabilidad del cumplimiento de las


postcondiciones
La responsabilidad puede residir en la capa de
presentacin, en la capa de dominio, o ser
compartida por ambas
Dependiente del diseo externo de la capa de
presentacin

Definen los conceptos relevantes del dominio

Diagramas de secuencia del sistema


Hacen referencia a los casos de uso esenciales

Contratos de las operaciones


Especifican el resultado esperado en funcin de las
entradas

Elaborar un diseo interno de la capa de


presentacin
Responsable de gestionar la interacin con el usuario
y la presentacin de la informacin
Ha de garantizar las responsabilidades asignadas

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 52

Un caso de uso esencial

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 53

Realizacin del caso de uso


altaSocio(dni:String, nombre:String, direccin:String,
email:String, formaPago:String)
Objetivo: Dar de alta al nuevo socio y asignar su
forma de pago

Escenario normal:
El caso de uso comienza cuando el administrador
desea dar de alta a un nuevo socio
El sistema solicita los datos necesarios
El administrador indica el dni, el nombre, la direccin,
el e-mail y la forma de pago
El sistema comprueba que los datos son correctos, da
de alta al socio y registra que paga mediante la
forma de pago elegida

Precondiciones
Postcondiciones:
La operacin es invlida si los parmetros, excepto el
email, son nulos
Si el formaPago no es vlido, la operacin no es
vlida
En el resto de los casos, la operacin es vlida y:
Se crea un objeto instancia de Socio
El atributo numSocio del socio es igual al atributo
ultNumSocio del club ms uno
El atributo utlNumSocio del club se incrementa en uno
Se crea un nuevo enlace entre el socio y la forma de
pago

Universidad de Valladolid

Departamento de Informtica

Fundamentos de Ingeniera del Software

FLiX
Diseo 54

Diseo del caso de uso real

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 55

Diseo del caso de uso real


El caso de uso comienza cuando el administrador
desea dar de alta a un nuevo socio
El sistema muestra el formulario con los datos
necesarios

Se decide que el usuario


puede elegir la forma de
pago mediante un men
desplegable
Se ordenan los campos
segn un criterio razonable

El administrador indica en D el dni, en A el nombre,


en B la direccin, en C el e-mail y en E la forma de
pago, eligiendo entre las opciones disponibles
Si se quiere dar de alta al socio se pulsa Aceptar, en
caso contrario se pulsa cancelar
El sistema comprueba que los datos son correctos,
da de alta al socio y registra que paga mediante la
forma de pago elegida. El sistema muestra en el
campo F el nmero de socio.

Universidad de Valladolid

Departamento de Informtica

FLiX

Universidad de Valladolid

Departamento de Informtica

FLiX

Fundamentos de Ingeniera del Software

Diseo 56

Completando las operaciones

La operacin es invlida si los parmetros, excepto el


email, son nulos
Si ya existe un socio con ese dni la operacin no es
vlida
Si el formaPago no es vlido, la operacin no es
vlida
En el resto de los casos, la operacin es vlida y:
Se crea un objeto instancia de Socio
El atributo numSocio del socio es igual al atributo
ultNumSocio del club ms uno
El atributo utlNumSocio del club se incrementa en uno
Se crea un nuevo enlace entre el socio y la forma de
pago
Departamento de Informtica

Diseo 57

Completando las operaciones

altaSocio(dni:String, nombre:String, direccin:String,


email:String, formaPago:String)
Objetivo: Dar de alta al nuevo socio y asignar su
forma de pago
Precondiciones
Postcondiciones:

Universidad de Valladolid

Fundamentos de Ingeniera del Software

FLiX

altaSocio(dni:String, nombre:String, direccin:String,


email:String, formaPago:String)
Objetivo: Dar de alta al nuevo socio y asignar su
forma de pago
Precondiciones
Postcondiciones:
La operacin es invlida si los parmetros, excepto el
email, son nulos capa de presentacin
Si ya existe un socio con ese dni la operacin no es
vlida capa de dominio
Si el formaPago no es vlido, la operacin no es
vlida Capa de presentacin
En el resto de los casos, la operacin es vlida y:
Capa de dominio

Universidad de Valladolid

Se crea un objeto instancia de Socio


El atributo numSocio del socio es igual al atributo
ultNumSocio del club ms uno
El atributo utlNumSocio del club se incrementa en uno
Se crea un nuevo enlace entre el socio y la forma de
Departamento de Informtica
FLiX
pago

Вам также может понравиться