Você está na página 1de 96

INGENIERA DEL SOFTWARE I

Tema 6

Diseo de Software Univ. Cantabria Fac. de Ciencias


Carlos Blanco, Francisco Ruiz

Objetivos

Tener una visin general de los principios,

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

Definicin Diseo Arquitectural vs

3. Notaciones

Detallado Principios del Diseo de Software Principales Retos

Estructurales De Comportamiento

4. Tipos de Modelos 5. Estrategias y Mtodos


Diseo Estructurado Diseo OO Diseo Centrado en los Datos Diseo con Componentes

2. Arquitectura del Software


Vistas Arquitecturales Estilos Arquitecturales Estilos de Control Patrones de Diseo

6.3

Bibliografa

Bsica

IEEE Computer Society (2004)

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

Objetivos, Restricciones, Alternativas, Representaciones,


Soluciones,
Hay dos formas de realizar un diseo software: Hacer que sea tan simple que sea obvio que no tiene deficiencias, o hacer que sea tan complicado que no tenga deficiencias obvias. El primer mtodo es ms difcil.

C.A.R. Hoare (creador del quicksort, lenguaje CSP,)


6.5

Introduccin - Definicin

Juega un papel clave en el desarrollo de


Caracterizan la solucin a implementar. Pueden ser analizados y evaluados con el fin de
determinar si se satisfacen los requisitos.

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

Perspectiva del Proceso Disear es el esfuerzo para definir la

arquitectura, componentes, interfaces y otras caractersticas de un sistema o componente [IEEE 610-1990].


se analizan los requisitos para producir una descripcin de la estructura interna del software que sirva de base para su construccin.

El Diseo de Software es la actividad en la que:

La salida es un conjunto de modelos y artefactos que


registran las principales decisiones adoptadas.
6.7

Introduccin - Definicin

Perspectiva del Resultado Un Diseo es el resultado de dicho esfuerzo.


Un Diseo Software describe:
La arquitectura del software (cmo est descompuesto y organizado en componentes), La interfaces entre dichos componentes, y Los componentes a un nivel de detalle que permita su construccin.

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

Introduccin Diseo Arquitectural vs Detallado

Diseo Arquitectural
Es el primer paso en el diseo de un sistema, previo al
diseo detallado.

Su resultado se conoce como arquitectura del


software. [se presenta despus] el diseo.

Representa el enlace entre la especificacin de requisitos y Puede llevarse a cabo en paralelo con actividades de
especificacin de requisitos.

Implica un esfuerzo creativo, de forma que las

actividades a realizar pueden cambiar segn la naturaleza del sistema a desarrollar.


6.10

Introduccin Diseo Arquitectural vs Detallado

Durante el diseo arquitectural es necesario


adoptar algunas decisiones:

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

Principios del Diseo de Software 1.3. Principios

Verdades bsicas o leyes generales que se utilizan como

Los Principios del Diseo Software son nociones


Abstraccin Acoplamiento y Cohesin Encapsulamiento Separacin de Interfaz e Implementacin Suficiencia y Completitud Descomposicin

base de razonamiento o como gua para actuar.

clave consideradas fundamentales en muchas aproximaciones y conceptos de diseo diferentes.

6.12

Principios del Diseo de Software

Abstraccin
Olvidar informacin que diferencia ciertas cosas y as
poder tratarlas como si fueran similares.

En Software los mecanismos bsicos de abstraccin


son:

Es una imagen simplificada del mundo real. Parametrizacin Especificacin


Abstraccin Procedural Abstraccin de Datos Abstraccin de Control (iteracin)

6.13

Principios del Diseo de Software

Encapsulamiento [ocultamiento de informacin] Ocultar al exterior los detalles de implementacin,


de manera que el mundo slo vea una interfaz inteligible (la parte pblica).

Interfaz pblica (qu) Atributos+Servicios Representacin privada (cmo)

6.14

Principios del Diseo de Software

Acoplamiento y Cohesin Acoplamiento: Fortaleza de las relaciones entre


mdulos
INTER

Cohesin: cmo estn relacionados los


elementos de un mismo mdulo.
INTRA

6.15

Principios del Diseo de Software

Separacin de Interfaz e Implementacin Definir un componente especificando un interfaz


pblico, conocido por otros componentes o clientes, separado de los detalles de cmo dicho componente es realizado (implementado).

Suficiencia y Completitud Asegurar que un componente software captura


todas las caractersticas importantes de una abstraccin y ninguna ms.

6.16

Principios del Diseo de Software - Descomposicin

Descomposicin Descomponer un software en diversas unidades

ms pequeas, habitualmente con fines de situar diferentes funcionalidades o responsabilidades en diferentes componentes.

Hay dos tipos de Descomposicin


El sistema en sub-sistemas

Estructuracin/Organizacin del sistema: Descomposicin modular:


Sub-sistemas en mdulos.
6.17

Principios del Diseo de Software - Descomposicin

Sub-sistemas vs Mdulos

No siempre hay una diferenciacin clara Sub-sistema: Un sistema en s mismo, cuyo funcionamiento

Aproximaciones para Descomposicin Modular:


Objetos
El (sub)-sistema se decompone en objetos que interactan.

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.

Tubera o Flujo de Datos [orientado a funciones]


El (sub)-sistema se decompone en mdulos funcionales que transforman entradas en salidas.
6.18

Principales Retos
1.4. Principales Retos En los ltimos aos se est abordando el problema del

Diseo de Sistemas Software Genricos mediante Lneas de Producto Software

Su objetivo es el diseo de familias de Haciendo reutilizacin al mximo,


Ej: Gestin de Tiendas de Venta al Pblico pero permitiendo adaptacin y variabilidad en cada producto particular.

programas, es decir, colecciones de programas que tienen muchas cosas en comn.

Ej: Gestin de Tiendas de Ropa / Videoclubs / Supermercados


6.19

Principales Retos

Principales Retos Al disear software es necesario enfrentarse a varios


problemas o dificultades importantes.
Ej: Rendimiento, Seguridad,...

Atributos de Calidad que deben satisfacerse. Componentes: cmo descomponer, organizar y


empaquetar. Aspectos Transversales del comportamiento del software que no son del dominio del problema o aplicacin, sino de dominios laterales que afectan de manera transversal a la funcionalidad del sistema.
Son propiedades que afectan a diversos componentes (en su rendimiento o semntica) de forma sistemtica.
6.20

Principales Retos - Aspectos

Los principales Aspectos Software a enfrentar


son:

Concurrencia.
Cmo repartir el software en procesos, tareas o hilos de ejecucin y abordar los problemas de eficiencia, atomicidad, sincronizacin y planificacin asociados.

Control y Manejo de Eventos.


Cmo organizar datos y flujo de control. Cmo manejar eventos reactivos y temporales (mediante mecanismos como invocacin implcita o llamadas hacia atrs).
6.21

Principales Retos - Aspectos

Los principales Aspectos Software a enfrentar son


(cont.):

Distribucin de componentes.
Cmo distribuir el software en el hardware. Cmo comunicar los componentes. Cmo utilizar el middleware para tratar con software heterogneo.

Manejo de Errores y Excepciones y Tolerancia


a Fallos.
Cmo prevenir y tolerar fallos y tratar condiciones excepcionales (no previstas).
6.22

Principales Retos - Aspectos

Los principales Aspectos Software a enfrentar son


(cont.):

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

Arquitectura del Software


2. Arquitectura del Software La arquitectura de un sistema es la descripcin de los elementos que lo forman y de las interrelaciones entre ellos.

6.24

Arquitectura del Software

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

Arquitectura del Software

Disponer de la Arquitectura de forma explcita


supone las siguientes ventajas

Comunicacin con interesados


Puede utilizarse para la discusin sobre cmo ser el sistema.

Anlisis del Sistema


Permite el anlisis del cumplimiento de los requisitos no funcionales.

Reutilizacin a gran escala


Puede servir para un grupo de sistemas parecidos.

6.26

Arquitectura del Software

Los atributos de calidad del sistema (requisitos no


funcionales) se ven afectados por la arquitectura:

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

Arquitectura del Software

Pero pueden aparecer conflictos:


Rendimiento vs Mantenibilidad
Usar componentes grandes mejora el rendimiento pero reduce la mantenibilidad.

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

Arquitectura del Software

Se suele expresar mediante un diagrama de bloques


que resume la estructura del sistema.
Arquitectura de un sistema de control de un robot de empaquetar

6.29

Arquitectura del Software - Vistas 2.1.Vistas Un Diseo Software puede/debe describir y documentar diferentes vistas.

Una Vista representa un aspecto parcial de un arquitectura


software que muestra propiedades especficas de un sistema software.

Un Diseo Software es un artefacto multi-

perspectiva generalmente compuesto de vistas relativamente independientes y ortogonales.

6.30

Arquitectura del Software - Vistas

Ejemplos de vistas son:


Lgica (requisitos funcionales) De Proceso (concurrencia) Fsica (distribucin) Desarrollo (descomposicin del diseo en unidades de

Otra clasificacin tambin usada es:


Comportamiento Funcional Estructural Modelado de Datos
6.31

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).

En sistemas grandes heterogneos es comn


combinar varios estilos arquitecturales.
6.32

Arquitectura del Software - Estilos Arquitecturales

Principales estilos arquitecturales :


Estructura General
Capas, tuberas y filtros, repositorio compartido (pizarra)

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

Arquitectura del Software - Estilos Arquitecturales

Capas (Mquina Abstracta)


Organiza el sistema en un conjunto de capas, cada una de
las cuales provee una serie de servicios a las capas superiores usando los de las capas inferiores.
Sistema de Gestin de la Configuracin del Software

Sistema de Gestin de Objetos

Sistema de Base de Datos

Sistema Operativo
6.34

Arquitectura del Software - Estilos Arquitecturales

Repositorio Compartido

Datos comunes a los sub-sistemas se almacenan en una


base de datos central o repositorio. Se emplea cuando se comparten muchos datos. Ventajas

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

Arquitectura del Software - Estilos Arquitecturales

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

Servidor del catlogo catlogo

Servidor de Videos archivos de video

Servidor de Imgenes Fotografas digitales

Servidor Web metadatos


6.36

Arquitectura del Software - Estilos Arquitecturales

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)

Un sub-sistema tiene toda la responsabilidad para


controlar, iniciar y parar los otros sub-sistemas.

Control basado en Eventos


Difusin (Broadcast) Guiado por Interrupciones

Cada sub-sistema puede responder a eventos generados

externamente por los otros sub-sistemas o el entorno del sistema.


6.38

Arquitectura del Software Estilos de Control

Control Centralizado
Llamada-Retorno Jerarqua Top-Down de Subrutinas

6.39

Arquitectura del Software Estilos de Control

Control basado en Eventos


Difusin (Broadcast) Cuando ocurre un evento el control se transfiere al subsistema que puede tratarlo. interesan.
Sub-sistema 1

Cada sub-sistema decide sobre los eventos que le


Sub-sistema 2 Sub-sistema 3 Sub-sistema 4

Manejador de eventos y mensajes

6.40

Arquitectura del Software Estilos de Control

Control basado en Eventos


Guiado por Interrupciones Cada interrupcin tiene un manejador.

6.41

Arquitectura del Software Patrones de Diseo 2.4. Patrones de Diseo

Solucin comn a un problema comn en un contexto


dado.

Los estilos arquitecturales pueden ser vistos

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

Arquitectura del Software Patrones de Diseo

Principales clases de patrones de diseo [microarquitecturales].

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.

Unas son para representar la estructura y otras el


comportamiento

Unas sirven principalmente durante el diseo arquitectural,


otras durante el diseo detallado, y algunas durante ambos. mtodos especficos.

Algunas se emplean principalmente en el contexto de

6.44

Notaciones Descripciones Estructurales 3.1. Notaciones aspectos estructurales (esttica), es decir, los componentes y sus interconexiones.

Lenguajes de Descripcin de Arquitecturas (ADLs)


Lenguajes textuales formales ideados para describir una arquitectura software en trminos de componentes y conectores.

Diagramas de Clases y Objetos


Para representar un conjunto de clases (y objetos) y sus interrelaciones.

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.

Tarjetas CRC (Clase Responsabilidad Colaborador)


Para denotar los nombres de los componentes (clases), sus responsabilidades, y los nombres de los componentes con los que colaboran.

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.

Lenguajes de Descripcin de Interfaces (IDLs)


Similares a los lenguajes de programacin normales, sirven para definir las interfaces (nombres y tipos de las operaciones exportadas) de los componentes software.

Diagramas de Estructura de Jackson


Para describir las estructuras de datos en trminos de secuencia, seleccin e iteracin.

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.

Diagramas de Flujo de Datos (DFDs)


Para representar el flujo de datos entre un conjunto de procesos.

6.48

Notaciones Descripciones del Comportamiento Notaciones comportamiento (dinmica) de un software y sus componentes.

Tablas y Diagramas de Decisin


Para representar combinaciones complejas de condiciones y acciones.

Diagramas de Flujo [Estructurados]


Para representar el flujo de control y las acciones asociadas que deben ser realizadas.

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.

Diagramas de Transicin de Estados y Grafos de


Mquinas de Estados
Para mostrar el flujo de control entre estados de una mquina de estados.

6.50

Notaciones Descripciones del Comportamiento Notaciones comportamiento (dinmica) de un software y sus componentes.

Lenguajes de Especificacin Formal


Lenguajes textuales que usan nociones bsicas matemticas (lgica, conjuntos, secuencia) para definir de forma rigurosa y abstracta los interfaces y comportamiento de los componentes (habitualmente en trminos de pre y post-condiciones).

Pseudocdigo y Lenguajes de Diseo de Programas


Lenguajes, al estilo de los tradicionales de programacin estructurada, usados para describir, normalmente en la etapa de diseo detallado, el comportamiento de un procedimiento o mtodo.

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

De Contexto De Procesos De Comportamiento De Datos De Objetos

De Flujo de Datos De Mquinas de Estados

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

Base de Datos de uso comn

Tipos de Modelos

Modelos de Procesos (de Negocio)


Muestran los procesos soportados por el sistema.

Proceso de adquisicin de
equipamiento
6.54

Tipos de Modelos

Modelos de Comportamiento Procesamiento


de Datos

Muestran cmo los datos son procesados por el sistema.


Carnet Estudiante Carnet SELEC. TIPO CARNET 1 Carnet Trabajador TRATAR ESTUDIANTE 2 Entrada

DFD

TRATAR TRABAJADOR 3

Entrada

6.55

Tipos de Modelos

Modelos de Comportamiento Mquinas de


Estado

Muestran la respuesta del sistema ante eventos.


Statechart de un microondas

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

prstamo electrnico de artculos

6.57

Tipos de Modelos

Modelos de Objetos
Describen el sistema en trminos de
clases de objetos y sus asociaciones.

Son una forma de reflejar las


entidades del mundo real, aunque entidades ms abstractas pueden ser difciles de modelar.

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

Tipos de Modelos - Arquitecturales

Modelos Arquitecturales

Se emplean para documentar la arquitectura del sistema Pueden ser


Estructurales estticos, para mostrar los componentes principales o
sub-sistemas. sistema.

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.

De Distribucin, para mostrar cmo los sub-sistemas de distribuyen


entre diversas mquinas.

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

Estrategias y Mtodos Diseo Estructurado 5.1 Diseo Estructurado

Mtodo clsico de diseo basado en


Identificar las funciones principales, y Elaborarlas y refinarlas en un estilo top-down.

Se realiza despus del anlisis estructurado,


para producir, entre otros:

Diagramas de Flujos de Datos (DFDs) Descripciones de los procesos asociados.


6.62

Estrategias y Mtodos Diseo Estructurado


Actividades del Diseo Estructurado ERS
E-R
Enfoque de datos Diseo de alto nivel (arquitectnico) Diseo de bajo nivel (detallado)
Modelo lgico de datos

Anlisis (Qu) Lenguaje comprensible para el usuario/cliente DFD


Enfoque funcional
Arquitectura de procesos Decisiones generales y abstractas (organizacin lgica)

Diseo (Cmo)
Estructura detallada: programas y mdulos

Modelo fsico de datos Esquema de BD y ficheros

Cuadernos de carga

Decisiones concretas y especficas (optimizacin y rendimiento)

Codificacin/Programacin

Implementacin Lenguaje comprensible por la mquina


6.63

Estrategias y Mtodos Diseo Estructurado


Tcnicas de Especificacin segn el enfoque de modelado
INFORMACION

ER

- DFD - Matriz Entidad-funcin

- Diagrama de historia de vida - Matriz entidad-evento

DFD

FUNCION

- Diagrama Transicinestado - Redes de petri

TIEMPO

Lista de eventos

6.64

Estrategias y Mtodos Diseo Estructurado

Diagrama de Flujo de Datos (DFD): Diagrama en

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

Estrategias y Mtodos Diseo Estructurado

Diagrama de Flujo de Datos (DFD)


Conexiones permitidas

Destino/ Fuente PROCESO ALMACN ENTIDAD EXTERNA

PROCESO S S S

ALMACN S NO NO *

ENTIDAD EXTERNA S NO * NO

Permitida slo en el Diagrama de Contexto


6.66

Estrategias y Mtodos Diseo Estructurado

Diagrama de Flujo de Datos (DFD)


La conexin entre entidades externas y almacenes de datos es posible
(en el Diagrama de Contexto) con almacenes externos que sirven de interfaz entre el sistema y una entidad externa.
Gestionar Prstamos biblioteca
Libros

Sistema de mantenimiento de publicaciones

Conexiones entre procesos y almacenes

FLUJO DE CONSULTA

FLUJO DE ACTUALIZACION

FLUJO DE DIALOGO

6.67

Estrategias y Mtodos Diseo Estructurado

Diagrama de Flujo de Datos (DFD)


Un DFD queda definido por:
Diagrama de Contexto Niveles medios Funciones primitivas
Diagrama de Contexto Diagrama de Sistema

DFDs no caben en una pgina


se representan por capas.

Aproximacin top-down. Ventajas:


Ayuda a construir especificaciones de arriba abajo. Distintos niveles dirigidos a distintas personas. Facilita el trabajo de los analistas. Facilita la documentacin del sistema.
6.68

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

Contiene: Un proceso Entidades externas Flujos

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

Estrategias y Mtodos Diseo Estructurado


Ejemplos DFDs Diagrama de Sistema
Peticin_Libros Devol_Libros

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

Estrategias y Mtodos Diseo Estructurado


Ejemplos DFDs

Diagrama de Sistema detallado


Peticin_Libros

Prstamos 1.1 Validar Prstamo 1.2 Realizar Prstamo

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

Estrategias y Mtodos Diseo Estructurado

Habitualmente, a partir de los DFDs (comportamiento) se genera un Diagrama de Estructura (DE)


c A1

1
b A2

2
d

3
a

opcin

Leer Opcin

3
6.76

Estrategias y Mtodos Diseo Estructurado

Existen varios tipos de Diagramas de Estructura (cambian en la simbologa usada):

Diagramas de Jackson Diagrama de Cuadros de Constantine (usados en METRICA 3)

Un DE muestra la descomposicin de un sistema en mdulos incluyendo

Jerarqua de Control Llamadas entre Mdulos Parmetros que se intercambian en las llamadas

1. Mdulos 2. Conexiones entre Mdulos 3. Comunicacin entre Mdulos


6.77

Elementos Principales:

Estrategias y Mtodos Diseo Estructurado

Diagrama de Estructura Mdulo


GESTIONAR PETICIONES INFORME PRESTAMO

Datos
INFORME PRESTAMO

PET_ACEPTADA

PET_ACEPTADA

Iteracin
PET_PRESTAMO

CONSULTAR STOCK

Decisin

TRATAR PETICION

INFORMAR PETICION

EOF LEER PETICION PRESTAMO

PET_RECHAZADA

RECHAZAR PETICION

Mdulo Predefinido

Control (flag)
6.78

Estrategias y Mtodos Diseo Estructurado

Otro Ejemplo
ALMACN
DOCUMENTOS ALMACEN PEDIDO GLOBAL

PROVEEDOR

0 GESTIONAR CENTRAL DE COMPRAS


CATALOGO NOTIFICACIN PEDIDO

ALMACN

PROVEEDOR

MEJORES OFERTAS CATALOGO 1 SELECCIONAR MEJORES OFERTAS 2 HACER PEDIDOS SEGUN OFERTAS

DOCUMENTOS ALMACEN

PEDIDO GLOBAL

NOTIFICACIN PEDIDO
6.79

Estrategias y Mtodos Diseo Estructurado

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

CORREGIDO PEDIDO GLOBAL

PEDIDOS PEDIDO RELLENADO 2.2 RECIBIR PEDIDOS RELLENADOS

PEDIDO RELLENADO RECIBIDO

MEJOR OFERTA MEJORES OFERTAS MEJOR OFERTA

CATALOGO

1.1 RECIBIR CATALOGO

CATALOGO RECIBIDO

CATALOGOS CATALOGO RECIBIDO 1.2 CALCULAR MEJORES OFERTAS

6.80

Estrategias y Mtodos Diseo Estructurado

Otro Ejemplo
Gestin Central Compras
P_R_R H_V_R C_R P_R_R H_V_R
Corregido

M_O Corregido C_R M_O

H_V_R

Recibir Documentacin Almacen


P_R_R

Recibir Catlogo
Catlogo

Ajustar Pedidos Almacn

Calcular Mejores Ofertas


Notificacin Pedido

Hacer Pedido Global


Pedido Global

Recibir Histrico Ventas


H_V

Recibir Pedidos Rellenados


P_R

Leer Catlogo

Imprimir
Notificacin

Pedido

Imprimir Pedido Global

Leer Histrico Ventas

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

Estrategias y Mtodos Diseo Estructurado

Otro Ejemplo
Gestin Central Compras

Recibir Documentacin Almacen

Recibir Catlogo

Ajustar Pedidos Almacen

Calcular Mejores Ofertas


Cgdo M_O

Hacer Pedido Global


P_G N_P

H_V_R

P_R_R

Recibir Histrico Ventas


H_V H_V_R

Recibir Pedidos Rellenados


P_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

Estrategias y Mtodos Diseo OO 5.2. Diseo OO

Obviamente el Diseo OO est relacionado con el Anlisis y la


Programacin OO Anlisis OO

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

Estrategias y Mtodos Diseo OO

Existentes muchos mtodos de diseo


basados en objetos

Desde los iniciales [80s]


Nombre->objeto, verbo->mtodo, adjetivo->atributo

Centrales [90s]
Herencia y polimorfismo juegan un papel clave

Diseo basado en Componentes (CBD)

[00s]

Meta-informacin puede ser definida y accedida (mediante reflexin)

6.84

Estrategias y Mtodos Diseo OO

En general, en todos los mtodos de Diseo


OO se llevan a cabo las siguientes actividades:
sistema;

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

Estrategias y Mtodos Diseo OO

Ejemplo

Se necesita un sistema de mapas climticos para

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

Estrategias y Mtodos Diseo OO

Ejemplo - Contexto del Sistema


(subsistemas)
subsistema Recogida datos Observador Satlite Comunicaciones Estacin Meteorolgica Globo subsistema Visualizacin Datos Interfaz de User usuario inter face Mapas Visualizador de Mapas Impresora de Mapas

subsistema Procesamiento Datos Control Datos

subsistema Archivo Datos Data Data storage storage Almacn Mapas Almacn Datos
6.87

Integracin Datos

Estrategias y Mtodos Diseo OO

Ejemplo Modelos de Uso


Casos de Uso
Iniciar
Sistema Estacin Meteorolgica Caso de Uso Informar Actores Sistema de recoleccin de datos climticos, Estacin meteorolgica La estacin meteorolgica enva un resumen de los datos climticos que han sido recogidos de los instrumentos en el perodo de recoleccin al sistema de recoleccin de datos climticos. Los datos enviados son: temperaturas mnima, mxima y media de tierra y aire; presin Datos atmosfrica mxima, mnima y media; velocidad del viento mxima, mnima y media; total de lluvia cada; y direccin del viento. Se toman muestras de estos datos cada 5 minutos. El sistema de recoleccin de datos climticos establece una conexin por Estmulos modem con la estacin meteorolgica y le requiere la transmisin de datos. Los datos resumidos (agregados) se envan al sistema de recoleccin de Respuesta datos. Habitualmente las estaciones meteorolgicas reciben la peticin de Comentariosinformar una vez por hora, pero esta frecuencia puede diferir de una estacin a otra y cambiar en el futuro.

Apagar

Informar

Calibrar

Probar

6.88

Estrategias y Mtodos Diseo OO

Ejemplo Arquitectura por capas


Estacin Meteorolgica Gestiona todas las comunicaciones externas Recopila y resume datos del tiempo subsistema Interfaz

subsistema Recogida Datos

subsistema Instrumentos

Paquete de instrumentos para recogida fsica de datos

No ms de 7 entidades en un modelo arquitectural


6.89

Estrategias y Mtodos Diseo OO

Ejemplo Identificar objetos (clases)


EstacionMeteorologica identifier repor tWeather () calibrate (instruments) test () star tup (instruments) shutdown (instruments) DatosClimaticos airTemper atures groundT emper atures windSpeeds windDirections pressures rainf all collect () summarise ()

Termometro temper ature test () calibr ate ()

Anemometro windSpeed windDirection test ()

Barometro pressure height test () calibr ate ()

6.90

Estrategias y Mtodos Diseo OO

Ejemplo Modelos de Diseo


Esttico: Objetos
por Subsistemas
subsistema Interfaz subsistema Recogida Datos ControladorComunic DatosClimaticos

EstacionMeteorologica

Estado Instrumentos

subsistema Instrumentos

TermometroAire

Pluviometro

Anemometro

TermometroTierra

Barometro

Veleta

6.91

Estrategias y Mtodos Diseo OO

Ejemplo Modelos de Diseo


Dinmico: Secuencia del caso de uso Informar
:ControladorComunic :EstacionMeteorologica request(report) acknowledge() report() summarise() :DatosClimaticos

send(report) reply(report) acknowledge()

6.92

Estrategias y Mtodos Diseo OO

Ejemplo Modelos de Diseo


Dinmico: Mquina de estados de EstacionMeteorologica
Operacion
calibrate()

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 OO

Ejemplo Interfaz Java de EstacionMeteorologica


interface WeatherStation { public void WeatherStation () ; public void startup () ; public void startup (Instrument i) ; public void shutdown () ; public void shutdown (Instrument i) ; public void reportWeather ( ) ; public void test () ; public void test ( Instrument i ) ; public void calibrate ( Instrument i) ; public int getID () ; } //WeatherStation
6.94

Estrategias y Mtodos Diseo Centrado en los Datos 5.3. Diseo Centrado en Datos En estos mtodos las estructuras de datos guan el diseo.

Se diferencian de los estructurados en que el foco


son las estructuras de datos que manipula un programa y no las funciones que realiza con ellas. Hay dos pasos principales:

Mtodo de Jackson Mtodo de Warnier-Orr

Describir las estructuras de datos de entrada y salida

(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)

Un Componente Software es una unidad

independiente con interfaces y dependencias bien definidas, que pueda ser desarrollada y desplegada de forma independiente.
Principio de Caja Negra.

CBD aborda problemas para proveer,

desarrollar e integrar componentes. Su finalidad es mejorar la reutilizacin.

6.96