Vous êtes sur la page 1sur 25

DISEO DE SOFTWARE

1. Parte
NOTAS DEL CURSO
Ingeniera de Software I
DRA. MARIA DEL PILAR GMEZ GIL
INAOEP

Versin:25-10-2009

(c) P. Gomez-Gil, INAOEP. 2009

Pasando del Anlisis al Diseo


[Pressman 05]

(c) P. Gomez-Gil, INAOEP. 2009

Diseo

Es el proceso de aplicar varias


tcnicas y principios con el propsito
de definir un dispositivo, proceso o
sistema con suficiente detalle que
permita su realizacin fsica.

Diseo es mas que programar o


escribir cdigo
(c) P. Gomez-Gil, INAOEP. 2009

Guas para un Diseo de Calidad

. .Hay una diferencia entre hacer que


un software trabaje, y hacerlo que
trabaje correctamente. . .

(c) P. Gomez-Gil, INAOEP. 2009

Guas para un Diseo de Calidad (cont.)


1.

Un buen diseo debe tener una arquitectura que:


1.
2.
3.

2.
3.

Se ha creado utilizando estilos o patrones reconocidos


Esta hecho de componentes
Se puede implementar de una manera evolutiva, facilitando la
implementacin y las pruebas

Un buen diseo es modular, es decir, puede partirse de


manera lgica en elementos o subsistemas.
Un buen diseo contiene representaciones
diferenciales de datos, arquitectura, interfaces y
componentes.

(c) P. Gomez-Gil, INAOEP. 2009

Guas para un Diseo de Calidad (cont.)


4.

5.

6.

Un buen diseo debe conducir a estructuras de


datos que son apropiadas para las clases a
implementarse, y que resultan de patrones
reconocidos.
Un buen diseo debe llevar a componentes
que presentan caractersticas funcionales
independientes.
Un buen diseo debe conducir a interfaces que
reducen la complejidad de las conexiones
entre componentes y el medio externo.
(c) P. Gomez-Gil, INAOEP. 2009

Guas para un Diseo de Calidad


(cont.)

Un buen diseo debe llevarse a cabo utilizando


mtodos repetibles y que es conducida por la
informacin obtenida en el anlisis.
Un buen diseo debe representarse usando
una notacin que es efectiva en la manera que
comunica el significado del diseo.

(c) P. Gomez-Gil, INAOEP. 2009

Atributos de Calidad en el Diseo


Funcionalidad
Usabilidad
Confiabilidad
Desempeo
Sustentabilidad

y que significa todo esto??

(c) P. Gomez-Gil, INAOEP. 2009

Conceptos fundamentales de Diseo


1.
2.
3.
4.
5.
6.

Abstraccin
Refinamiento
Arquitectura
Modularidad
Patrones
Clases del diseo

(c) P. Gomez-Gil, INAOEP. 2009

Conceptos fundamentales de diseo:


Abstraccin y Refinamiento
1. ABSTRACCIN
La solucin a cualquier problema se presenta en varios
niveles de abstraccin. En el nivel mas alto se
presenta una solucin general. En el nivel mas bajo se
presenta una solucin que puede implementarse
directamente.
2. REFINAMIENTO
La arquitectura de un programa se desarrolla a travs
del detallado sucesivo de niveles.
(c) P. Gomez-Gil, INAOEP. 2009

10

Conceptos fundamentales de diseo:


3. Arquitectura

La arquitectura de software se refiere a la estructura


global del software y la manera en que esta estructura
proporciona integridad conceptual al sistema.
Representa los componentes que tiene el software,
como interactan y la estructura de los datos que usan
estos componentes
El uso de patrones arquitectnicos permitirn a los
diseadores reutilizar componentes
La arquitectura del diseo se puede representar
utilizando diferentes modelos: Estructurales, Plantillas,
Dinmicos, de procesos, y funcionales.

(c) P. Gomez-Gil, INAOEP. 2009

11

Conceptos fundamentales de diseo:


4. Modularidad

Es un atributo del software que permite que un programa


sea manejable intelectualmente hablando.
Tericamente el aumento en el nmero de mdulos
disminuye la complejidad, y por lo tanto el esfuerzo de
resolver un problema; entonces con un nmero infinito
de mdulos tendramos un problema de complejidad
cero.
Sin embargo el aumento en el nmero de mdulos
genera un aumento en el costo por comunicacin entre
mdulos.

(c) P. Gomez-Gil, INAOEP. 2009

12

Nmero de mdulos vs. costo

COSTO O ESFUERZO
costo por
interface
Regin de
mnimo costo
costo por mdulo
NMERO DE MDULOS

(c) P. Gomez-Gil, INAOEP. 2009

13

Otras caractersticas de modularidad


COHESIN
Es la medida de la fuerza funcional de un mdulo o
clase. Se busca que la clase tenga la cohesin mas
alta posible, lo cual ocurre cuando todos sus
elementos contribuyen a la ejecucin de una misma
tarea.
ACOPLAMIENTO
Es la medida de la interdependencia relativa entre
clases. Se busca que exista el mnimo posible de
acoplamiento entre clases, lo cual sucede cuando
las clases se comunican solamente por medio de
mensajes.
(c) P. Gomez-Gil, INAOEP. 2009

14

Conceptos fundamentales de diseo:


5. Patrones
Un patrn de diseo describe una estructura de
diseo que resuelve un problema de diseo
particular, dentro de un contexto especfico.
Un patrn de diseo provee informacin que
permite al diseador determinar si el patrn es
aplicable, si puede re-usarse y si se puede usar
como gua para desarrollar algn patrn similar
con estructura diferente.

(c) P. Gomez-Gil, INAOEP. 2009

15

Conceptos Fundamentales del diseo (cont.)


6. Clases de Diseo

Las clases generadas en el anlisis definen el dominio


del problema.
En el diseo, las clases se definen de manera que se
refinan las clases obtenidas en el anlisis a fin de que se
puedan implementar,
El diseo crea un nuevo conjunto de clases que permiten
implementar la infraestructura de software que va a
sostener la solucin.

(c) P. Gomez-Gil, INAOEP. 2009

16

Niveles de clases del diseo

Se sugieren 5 niveles de clases de diseo:


Clases para el manejo de la interfaz con el
usuario
Clases para el dominio del negocio
Clases para el proceso
Clases para la persistencia
Clases de administracin y control del sistema

(c) P. Gomez-Gil, INAOEP. 2009

17

Caractersticas de clases bien


formadas

Completa y suficiente. Una clase de diseo debe tener todos


los atributos y mtodos razonablemente esperados para
existir.
Primitividad. Los mtodos se deben enfocar en resolver UN
servicio de la clase. Una vez que se ha implementado un
servicio a travs de un mtodo, la clase no debe proveer
ninguna otra manera de hacer la misma cosa
Alta cohesin. Una clase con un diseo cohesivo tiene un
conjunto pequeo y enfocado de responsabilidades y enfoca
exclusivamente sus atributos y mtodos a cumplir esas
responsabilidades
Bajo acoplamiento. Aunque las clases tienen que colaborar
entre s, esta colaboracin debe ser lo mnimo necesario

(c) P. Gomez-Gil, INAOEP. 2009

18

El modelo de diseo

Puede verse desde 2 posibles dimensiones: proceso y


abstraccin
La dimensin del proceso indica la evolucin del modelo
confirme se van ejecutado el proceso de desarrollo de
software
La dimensin de abstraccin representa el nivel de
detalle que surge cuando cada elemento del modelo de
anlisis se va transformando en su equivalente de
diseo, y posteriormente se va refinando iterativamente
La lnea punteada en la figura indica la frontera (difusa)
entre anlisis y diseo
(c) P. Gomez-Gil, INAOEP. 2009

19

Dimensiones del modelo de diseo


[Pressman 05]

(c) P. Gomez-Gil, INAOEP. 2009

20

Elementos de diseo de datos

Crea el modelo de datos e informacin,


representado en un nivel de abstraccin alto, y
se va refinando progresivamente
En la implementacin este modelo de datos se
traduce en bases de datos, las cuales en un
futuro formarn warehouses que permitirn el
manejo de sistemas administradores de
conocimiento de la empresa

(c) P. Gomez-Gil, INAOEP. 2009

21

Elementos de diseo de arquitectura

El modelo de arquitectura se obtiene


principalmente de 3 fuentes:
1.
2.

3.

Informacin acerca del dominio de


aplicacin del software a construirse
Elementos del modelo de anlisis tales
como diagramas de flujo o clases generadas
en el anlisis sus relaciones y
colaboraciones
Disponibilidad de patrones de arquitectura
(c) P. Gomez-Gil, INAOEP. 2009

22

Elementos de diseo de interfaz

Los elementos de diseo de interfaz describen


como la informacin fluye entrando y saliendo del
sistema, y como se comunican a travs de los
componentes definidos como parte de la
arquitectura
Hay 3 elementos importantes en el diseo de
interfaces:
1.
2.

3.

Interfaz con el usuario


Interfaces externas con otros sistemas, dispositivos,
redes u otros productores o consumidores de
informacin
Interfaces internas entre los diferentes componentes
de diseo
(c) P. Gomez-Gil, INAOEP. 2009

23

Diseo de interfaces externas


Requiere informacin definitiva sobre la
entidad a la cual la informacin se manda
o recibe.
Debe incluir pruebas de errores y
caractersticas de seguridad

(c) P. Gomez-Gil, INAOEP. 2009

24

Diseo de interfaces internas

Est fuertemente relacionado con el diseo a nivel


componentes (diseo detallado)
En algunos casos, una interface se disea de igual
manera que una clase.
Segn la OMG una interfaz es un especificador
de operaciones externamente visibles (publicas)
de una clase, componente u otro clasificador
(incluyendo subsistemas) sin la especificacin de
una estructura interna
Una interfaz es un conjunto de operaciones que
describe alguna parte del comportamiento de un
sistema y las operaciones necesarias para
accesar esas operaciones
(c) P. Gomez-Gil, INAOEP. 2009

25