Professional Documents
Culture Documents
Tema 6
Objetivos
caractersticas y mtodos de diseo del software. Comprender la importancia de tener definida una correcta y adecuada arquitectura del sistema. Conocer las caractersticas generales de los principales estilos arquitecturales. Tener una visin general de los distintos tipos de notaciones grficas y textuales para artefactos de diseo software. Conocer las caractersticas generales de las principales estrategias y mtodos de diseo.
6.2
Contenido
1. Diseo
3. Notaciones
Estructurales De Comportamiento
6.3
Bibliografa
Bsica
SWEBOK - Guide to the Software Engineering Body of Knowledge, 2004 Version. Captulo 3. http://www.swebok.org/
Complementaria
Caps. 8 y 11 del libro de Sommerville (2005). Cap. 14 del libro de Sommerville (2005). Caps. 8 y 9 del libro de Pressman (2005). Cap. 6 y 7 del libro de Piattini (2007). Cap. 5 del libro de Pfleeger (2002).
6.4
Introduccin - Definicin 1.1. Definicin En sentido general, disear es una forma de resolucin de problemas. Por ello, al disear se utilizan nociones como
Introduccin - Definicin
software porque permite a los ingenieros de software producir diversos modelos que:
Facilitan el examen y evaluacin de alternativas. Sirven para planificar las siguientes actividades del
desarrollo.
6.6
Introduccin - Definicin
Introduccin - Definicin
6.8
Introduccin Diseo Arquitectural vs Detallado 1.2. Diseo Arquitectural vs Detallado (estndar ISO 12207):
Arquitectural Detallado
[alto nivel]
Describe la estructura y organizacin de alto nivel, es decir, los sub-sistemas o componentes y sus relaciones Describe cada componente y su comportamiento especfico, de forma que puede procederse a su construccin
6.9
Diseo Arquitectural
Es el primer paso en el diseo de un sistema, previo al
diseo detallado.
Representa el enlace entre la especificacin de requisitos y Puede llevarse a cabo en paralelo con actividades de
especificacin de requisitos.
Existe una arquitectura genrica que pueda ser usada? Cmo ser distribuido el sistema? Qu estilos arquitectnicos son apropiados? Qu aproximacin se utilizar para estructurar el
sistema?
Cmo se descompondr el sistema en mdulos? Qu estrategia de control se utilizar? Cmo se evaluar el diseo arquitectural resultante? Cmo se documentar la arquitectura?
6.11
6.12
Abstraccin
Olvidar informacin que diferencia ciertas cosas y as
poder tratarlas como si fueran similares.
6.13
6.14
6.15
6.16
ms pequeas, habitualmente con fines de situar diferentes funcionalidades o responsabilidades en diferentes componentes.
Sub-sistemas vs Mdulos
No siempre hay una diferenciacin clara Sub-sistema: Un sistema en s mismo, cuyo funcionamiento
es independiente de los servicios provistos por otros subsistemas. Mdulo: Componente de un sistema que provee servicios a otros componentes y que no se considera un sistema separado.
Principales Retos
1.4. Principales Retos En los ltimos aos se est abordando el problema del
Principales Retos
Concurrencia.
Cmo repartir el software en procesos, tareas o hilos de ejecucin y abordar los problemas de eficiencia, atomicidad, sincronizacin y planificacin asociados.
Distribucin de componentes.
Cmo distribuir el software en el hardware. Cmo comunicar los componentes. Cmo utilizar el middleware para tratar con software heterogneo.
Interaccin y Presentacin.
Cmo estructurar y organizar las interacciones con el usuario y la presentacin de informacin.
Ej: separando presentacin de la lgica de negocio usando la aproximacin MVC (Modelo-Vista-Controlador).
Persistencia de Datos.
Cmo se manejan los datos que tienen una vida superior e independiente a las ejecuciones del software.
6.23
6.24
Arquitectura
Estructura interna de algo Forma en que algo es construido u organizado
Arquitectura Software
Descripcin de los subsistemas / componentes de un
sistema software y de las interrelaciones entre ellos
6.25
6.26
Rendimiento
Utilizar componentes grandes en vez de grano fino para concentrar las operaciones crticas y minimizar las comunicaciones.
Seguridad
Usar una arquitectura por capas con los activos crticos en las capas ms internas.
Proteccin
Localizar las caractersticas de proteccin crticas en un pequeo nmero de componentes.
Disponibilidad
Incluir componentes redundantes y mecanismos de tolerancia a fallos.
Mantenibilidad
Usar componentes de grano fino ms fcilmente sustituibles.
6.27
Disponibilidad vs Seguridad
Introducir datos redundantes mejora la disponibilidad pero hace ms difcil la seguridad.
Proteccin vs Rendimiento
Localizar las caractersticas de proteccin en diversos componentes suele significar ms comunicacin y por tanto, un rendimiento peor.
6.28
6.29
Arquitectura del Software - Vistas 2.1.Vistas Un Diseo Software puede/debe describir y documentar diferentes vistas.
6.30
implementacin)
Arquitectura del Software Estilos Arquitecturales 2.2. Estilo Arquitectural Es un conjunto de restricciones que definen un conjunto o familia de arquitecturas afines, que satisfacen dichas restricciones.
Puede ser visto como un modelo de modelos (metamodelo) que enmarca a muy alto nivel la organizacin del software (macro-arquitectura).
Sistemas Distribuidos
Cliente-servidor, tres capas, broker
Sistemas Interactivos
MVC (Modelo-Vista-Controlador), PAC (Presentacin-AbstraccinControl)
Sistemas Adaptables
Micro-ncleo, reflexin
Otros
Batch (lotes), intrpretes, control de procesos, basado en reglas
6.33
Sistema Operativo
6.34
Repositorio Compartido
Eficiente para compartir grandes cantidades de datos. Sub-sistemas no necesitan preocuparse de la gestin (backups, seguridad, ) de los datos. Existe un modelo de datos compartido (esquema del repositorio). Todos los sub-sistemas deben usar el mismo modelo de datos. La evolucin de datos es difcil y costosa. No caben polticas de gestin de datos especficas. Es difcil hacer una distribucin eficiente.
6.35
Desventajas
Cliente Servidor
Estructura un sistema distribuido en:
Servidores autosuficientes que proveen servicios (impresin, gestin de datos, ..). Clientes que invocan dichos servicios.
Cliente 1 Cliente 2 Cliente 3 Cliente 4
Internet / Red
Cliente Servidor
Ventajas
La distribucin de datos es real y directa; Se hace uso eficaz de sistemas en red. El hardware para ello puede ser barato; Fcil de aadir nuevos servidores o actualizar los existentes.
Desventajas
Los sub-sistemas usan diferentes modelos de datos. Esto puede hacer ineficiente el intercambio de datos; Gestin redundante en cada servidor; NO existe un registro central de nombres y servicios. Puede ser difcil averiguar qu servidores y servicios estn disponibles.
6.37
Arquitectura del Software Estilos de Control 2.3. Estilos Arquitecturales de Control Enfocados al flujo de control entre subsistemas. Control Centralizado
LlamadaRetorno (Call-Return) Gestor (Manager)
Control Centralizado
Llamada-Retorno Jerarqua Top-Down de Subrutinas
6.39
6.40
6.41
como patrones para la organizacin de alto nivel del software (patrones macro-arquitecturales). Otros patrones de diseo sirven para describir a un nivel ms bajo, ms local (patrones microarquitecturales).
6.42
Creacionales
Constructor (builder), factora (factory), prototipo (prototype), singleton
Estructurales
Adaptador (adapter), puente (bridge), compuesto (composite), decorador (decorator), fachada (facade), peso mosca (flyweight), delegado (proxy)
De Comportamiento
command, intrprete (interpreter), iterador (iterator), mediador (mediator), memento, observador (observer), estado (state), estrategia (estrategy), plantilla (template), visitante (visitor)
6.43
Notaciones 3. Notaciones Existen muchas notaciones y lenguajes para representar los artefactos del diseo software.
6.44
Notaciones Descripciones Estructurales 3.1. Notaciones aspectos estructurales (esttica), es decir, los componentes y sus interconexiones.
Diagramas de Componentes
Para representar un conjunto de componentes (partes fsicas y reemplazables de un sistema que son conformes a y proveen un conjunto de interfaces) y sus interrelaciones.
6.45
Notaciones Descripciones Estructurales Notaciones aspectos estructurales (esttica), es decir, los componentes y sus interconexiones.
Diagramas de Despliegue
Para representar un conjunto de nodos fsicos y sus interrelaciones, modelando los aspectos fsicos de un sistema.
Diagramas Entidad-Interrelacin
Para representar modelos conceptuales de los datos almacenados en sistemas de informacin.
6.46
Notaciones Descripciones Estructurales Notaciones aspectos estructurales (esttica), es decir, los componentes y sus interconexiones.
Grafo de Estructura
Para describir la estructura de llamadas de los programas (qu mdulos llaman y son llamados por qu mdulos).
6.47
Notaciones Descripciones del Comportamiento 3.2. Notaciones comportamiento (dinmica) de un software y sus componentes.
Diagramas de Actividad
Para mostrar el flujo de control entre actividades (ejecuciones no atmicas dentro de una mquina de estados).
Diagramas de Colaboracin
Para mostrar las interacciones entre un grupo de objetos, haciendo nfasis en los objetos, sus conexiones y los mensajes que intercambian en dichas conexiones.
6.48
Notaciones Descripciones del Comportamiento Notaciones comportamiento (dinmica) de un software y sus componentes.
6.49
Notaciones Descripciones del Comportamiento Notaciones comportamiento (dinmica) de un software y sus componentes.
Diagramas de Secuencia
Para mostrar las interacciones entre un grupo de objetos, con nfasis en la ordenacin temporal de los mensajes.
6.50
Notaciones Descripciones del Comportamiento Notaciones comportamiento (dinmica) de un software y sus componentes.
6.51
Tipos de Modelos 4. Tipos de Modelos Muchas de las notaciones anteriores son de tipo grfico (Modelos). En una clasificacin alternativa a la anterior (estructura-comportamiento), algunos de los principales tipos de modelos del software son
6.52
Tipos de Modelos
Modelos de Contexto
Ilustran el contexto operacional de un sistema, mostrando
los dems sistemas con los que se interacta.
Sistema de Proteccin Base de Datos de cuentas Cajero Automtico Sistema Auxiliar de la Sucursal Sistema de Mantenimiento
6.53
Contexto de un Cajero
Automtico
Sistema Contable de la Sucursal
Tipos de Modelos
Proceso de adquisicin de
equipamiento
6.54
Tipos de Modelos
DFD
TRATAR TRABAJADOR 3
Entrada
6.55
Tipos de Modelos
6.56
Tipos de Modelos
Modelos de Datos
Describen la estructura
lgica de los datos procesados por el sistema.
E-R de un sistema de
6.57
Tipos de Modelos
Modelos de Objetos
Describen el sistema en trminos de
clases de objetos y sus asociaciones.
UML es el estndar
para este tipo de modelos
6.58
Tipos de Modelos
Modelos de Objetos
Comportamiento Diagrama de Secuencia del caso
prstamo electrnico de artculos
6.59
Modelos Arquitecturales
De Proceso dinmicos, para mostrar la estructura de procesos del De Interfaces, para definir las interfaces de los sub-sistemas. De Relaciones, para mostrar las relaciones entre sub-sistemas de
forma similar a un DFD.
6.60
Estrategias y Mtodos 5. Estrategias y Mtodos Las estrategias generales de diseo de software ms conocidas son Divide y vencers Refinamiento en pasos sucesivos Top-down vs bottom-up Abstraccin de datos y ocultamiento de informacin Uso de heursticas Uso de patrones Aproximacin iterativa e incremental
6.61
Diseo (Cmo)
Estructura detallada: programas y mdulos
Cuadernos de carga
Codificacin/Programacin
ER
DFD
FUNCION
TIEMPO
Lista de eventos
6.64
forma de grafo dirigido que representa el flujo de datos y las transformaciones que se aplican sobre ellos al moverse desde la entrada hasta la salida del sistema.
Yourdon, DeMarco Flujos de datos Gane y Sarson SSADM MTRICA
Elementos:
Procesos Almacenes Entidades externas Flujos de datos
Procesos
Almacenes de datos
Entidades externas
6.65
PROCESO S S S
ALMACN S NO NO *
ENTIDAD EXTERNA S NO * NO
FLUJO DE CONSULTA
FLUJO DE ACTUALIZACION
FLUJO DE DIALOGO
6.67
Estrategias y Mtodos Diseo Estructurado Diagrama de Flujo de Datos (DFD) Diagrama de Contexto
Delimita la frontera entre el sistema y el mundo exterior, definiendo sus interfaces (flujos externos).
Bibliotecario
Altas_Bajas_Libros
Peticin_Libros
Usuario
Devol_Libros Sancin
0 Gestionar Biblioteca
6.69
Estrategias y Mtodos Diseo Estructurado Diagrama de Flujo de Datos (DFD) Regla de Balanceo
Todos los flujos de datos que entran en un diagrama hijo deben estar representados en el padre por el mismo flujo de datos entrando en el proceso asociado. Las salidas del diagrama hijo deben ser las mismas salidas del proceso padre asociado con una excepcin: los rechazos triviales (caminos de rechazo que no requieren ninguna revisin de la informacin establecida) no necesitan estar balanceados entre padre e hijo.
6.70
Prstamos
Diagrama de Contexto
Bibliotecario
1 Gestionar Peticiones
2 Gestionar Devoluciones
Libros
Altas_Bajas_Libros
Sancin
Peticin_Libros
Usuario
Devol_Libros Sancin
0 Gestionar Biblioteca
3 Actualizar Libros
Altas_Bajas_Libros
6.71
Prstamo_Validado
Libros
6.72
Estrategias y Mtodos Diseo Estructurado Diagrama de Flujo de Datos (DFD) Diccionario de Datos
Lista organizada de los datos utilizados por el sistema, que grficamente se encuentran representados por los flujos de datos y almacenes presentes en el conjunto de DFD. Las entradas son de tres tipos: Flujos de datos Almacenes Datos elementales Se sigue una aproximacin top-down.
6.73
Estrategias y Mtodos Diseo Estructurado Diagrama de Flujo de Datos (DFD) Diccionario de Datos
SIMBOLO = + [] {} () * texto * @ SIGNIFICADO Composicin : est compuesto de, o es equivalente a Inclusin : y Seleccin : seleccin una de la opciones encerradas entre corchetes, y separadas por el smbolo | Iteracin: iteraciones del componente encerrado entre llaves Opcin: significa que el componente encerrado es opcional (puede estar presente o ausente) Comentario : el texto entre asteriscos es un comentario aclarativo de una entrada del DD Identificador: se utiliza para sealar un campo o conjunto de campos que identifican cada ocurrencia de un almacn
6.74
Estrategias y Mtodos Diseo Estructurado Diagrama de Flujo de Datos (DFD) Diccionario de Datos Ejemplos:
PETICION_LIBROS = CARNET_BIBLIOTECA + FICHA_LIBROS CARNET_BIBLIOTECA = NUM_CARNET + APELLIDOS + NOMBRE + TIPO_CARNET TIPO_CARNET = [ SALA | FIN_SEMANA | COLABORADOR | PROYECTO | DOCTORADO]
Definicin de almacenes:
LIBROS_DISPONIBLES = @SIGNATURA + TITULO + AUTOR + NUMERO_UNIDADES
6.75
1
b A2
2
d
3
a
opcin
Leer Opcin
3
6.76
Jerarqua de Control Llamadas entre Mdulos Parmetros que se intercambian en las llamadas
Elementos Principales:
Datos
INFORME PRESTAMO
PET_ACEPTADA
PET_ACEPTADA
Iteracin
PET_PRESTAMO
CONSULTAR STOCK
Decisin
TRATAR PETICION
INFORMAR PETICION
PET_RECHAZADA
RECHAZAR PETICION
Mdulo Predefinido
Control (flag)
6.78
Otro Ejemplo
ALMACN
DOCUMENTOS ALMACEN PEDIDO GLOBAL
PROVEEDOR
ALMACN
PROVEEDOR
MEJORES OFERTAS CATALOGO 1 SELECCIONAR MEJORES OFERTAS 2 HACER PEDIDOS SEGUN OFERTAS
DOCUMENTOS ALMACEN
PEDIDO GLOBAL
NOTIFICACIN PEDIDO
6.79
Otro Ejemplo
HISTORICO VENTAS 2.1 RECIBIR HISTORICO VENTAS HISTORICO VENTAS RECIBIDO HISTORICO PEDIDO RELLENADO RECIBIDO 2.4 HACER PEDIDO GLOBAL NOTIFICACION PEDIDO HISTORICO VENTAS RECIBIDO 2.3 AJUSTAR PEDIDOS ALMACEN CORREGIDO PEDIDOS CORREGIDOS
CATALOGO
CATALOGO RECIBIDO
6.80
Otro Ejemplo
Gestin Central Compras
P_R_R H_V_R C_R P_R_R H_V_R
Corregido
H_V_R
Recibir Catlogo
Catlogo
Leer Catlogo
Imprimir
Notificacin
Pedido
Leer Pedidos
Rellenados
H_V = Historico_Ventas H_V_R = Histrico_Ventas_Recibido P_R = Pedido_Rellenado P_R_R = Pedido_Rellenado_Recibido C_R = Catlogo Recibido M_O = Mejores_Ofertas
6.81
Otro Ejemplo
Gestin Central Compras
Recibir Catlogo
H_V_R
P_R_R
Cat
C_R
Leer H
Leer Cat
Esc PCo
C_R
Impr N_P
M_O Cgdo
Impr P_G
Leer H_V
Esc H
Leer P_R
Esc P
Leer Cat
Esc Cat
Leer Cat
E/L MO
Leer PCo
6.82
Diseo OO
Desarrollar un modelo de objetos del dominio de aplicacin Desarrollar un modelo del sistema orientado a objetos que satisfaga
los requisitos.
Programacin OO
Implementar un diseo OO usando un lenguaje de programacin OO.
6.83
Centrales [90s]
Herencia y polimorfismo juegan un papel clave
[00s]
6.84
Definir el contexto y modos de uso del Disear la arquitectura del sistema; Identificar los objetos principales del sistema; Desarrollar los modelos de diseo; Especificar las interfaces de los objetos.
6.85
Ejemplo
generar mapas del tiempo de una forma regular usando los datos recopilados de estaciones meteorolgicas remotas automticas y otras fuentes como observadores, globos y satlites. Las estaciones meteorolgicas transmiten sus datos a la computadora del sistema cuando reciben una peticin al respecto desde dicha mquina. La computadora del sistema valida los datos recopilados y los integra con los datos de otras fuentes diferentes. Los datos integrados se archivan y, usando dichos datos y una base de datos de mapas digitalizados, se elabora un juego de mapas del tiempo locales. Los mapas pueden imprimirse para su distribucin en una impresora de mapas especializada o pueden mostrarse en varios formatos diferentes.
6.86
subsistema Archivo Datos Data Data storage storage Almacn Mapas Almacn Datos
6.87
Integracin Datos
Apagar
Informar
Calibrar
Probar
6.88
subsistema Instrumentos
6.90
EstacionMeteorologica
Estado Instrumentos
subsistema Instrumentos
TermometroAire
Pluviometro
Anemometro
TermometroTierra
Barometro
Veleta
6.91
6.92
Calibrando
calibracion OK
Apagado
startup()
Esperando
test()
Probando
prueba completada
shutdown()
transmision realizada
reloj
recogida realizada
Transmitiendo
reportWeather() resumen completado
Resumiendo Recopilando
6.93
Estrategias y Mtodos Diseo Centrado en los Datos 5.3. Diseo Centrado en Datos En estos mtodos las estructuras de datos guan el diseo.
(Diagramas de estructura de Jackson) Desarrollar las estructuras de control basadas en dichas estructuras de datos.
6.95
Estrategias y Mtodos Diseo con Componentes 5.4. Diseo Basado en Componentes (CBD)
independiente con interfaces y dependencias bien definidas, que pueda ser desarrollada y desplegada de forma independiente.
Principio de Caja Negra.
6.96