Está en la página 1de 25

DISEÑO DE SOFTWARE

1ª. Parte

NOTAS DEL CURSO

Ingeniería de Software I
DRA. MARIA DEL PILAR GÓMEZ GIL
INAOEP

Versión:25-10-2009 (c) P. Gomez-Gil, INAOEP. 2009 1


Pasando del Análisis al Diseño
[Pressman 05]

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


Diseño

 Es el proceso de aplicar varias


técnicas y principios con el propósito
de definir un dispositivo, proceso o
sistema con suficiente detalle que
permita su realización física.

 Diseño es mas que programar o


escribir código…

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


Guías para un Diseño de Calidad

.. .Hay una diferencia entre hacer que


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

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


Guías para un Diseño de Calidad (cont.)
1. Un buen diseño debe tener una arquitectura que:
1. Se ha creado utilizando estilos o patrones “reconocidos”
2. Esta hecho de componentes
3. Se puede implementar de una manera evolutiva, facilitando la
implementación y las pruebas
2. Un buen diseño es modular, es decir, puede partirse de
manera lógica en elementos o subsistemas.
3. Un buen diseño contiene representaciones
diferenciales de datos, arquitectura, interfaces y
componentes.

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


Guías para un Diseño de Calidad (cont.)

4. Un buen diseño debe conducir a estructuras


de datos que son apropiadas para las clases a
implementarse, y que resultan de patrones
reconocidos.
5. Un buen diseño debe llevar a componentes
que presentan características funcionales
independientes.
6. Un buen diseño debe conducir a interfaces que
reducen la complejidad de las conexiones
entre componentes y el medio externo.
(c) P. Gomez-Gil, INAOEP. 2009 6
Guías para un Diseño de Calidad
(cont.)

 Un buen diseño debe llevarse a cabo


utilizando métodos repetibles y que es
conducida por la información obtenida en el
análisis.
 Un buen diseño debe representarse usando
una notación que es efectiva en la manera que
comunica el significado del diseño.

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


Atributos de Calidad en el Diseño

 Funcionalidad
 Usabilidad
 Confiabilidad
 Desempeño
 Sustentabilidad …y que significa todo esto??

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


Conceptos fundamentales de Diseño
1. Abstracción
2. Refinamiento
3. Arquitectura
4. Modularidad
5. Patrones
6. Clases del diseño

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


Conceptos fundamentales de diseño:
Abstracción y Refinamiento

1. ABSTRACCIÓN
La solución a cualquier problema se presenta en
varios niveles de abstracción. En el nivel mas alto se
presenta una solución general. En el nivel mas bajo se
presenta una solución que puede implementarse
directamente.

2. REFINAMIENTO
La arquitectura de un programa se desarrolla a través
del detallado sucesivo de niveles.

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


Conceptos fundamentales de diseño:
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 interactúan y la estructura de los datos que usan
estos componentes
 El uso de patrones arquitectónicos permitirán a los
diseñadores reutilizar componentes
 La arquitectura del diseño se puede representar
utilizando diferentes modelos: Estructurales, Plantillas,
Dinámicos, de procesos, y funcionales.

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


Conceptos fundamentales de diseño:
4. Modularidad

 Es un atributo del software que permite que un programa


sea manejable intelectualmente hablando.
 Teóricamente el aumento en el número de módulos
disminuye la complejidad, y por lo tanto el esfuerzo de
resolver un problema; entonces con un número infinito
de módulos tendríamos un problema de complejidad
cero.
 Sin embargo el aumento en el número de módulos
genera un aumento en el costo por comunicación entre
módulos.

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


Número de módulos vs. costo

COSTO O ESFUERZO
costo por
interface

Región de
mínimo costo

costo por módulo


NÚMERO DE MÓDULOS

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


Otras características de modularidad
COHESIÓN
Es la medida de la fuerza funcional de un módulo o
clase. Se busca que la clase tenga la cohesión mas
alta posible, lo cual ocurre cuando todos sus
elementos contribuyen a la ejecución de una misma
tarea.
ACOPLAMIENTO
Es la medida de la interdependencia relativa entre
clases. Se busca que exista el mínimo 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 diseño:
5. Patrones

Un patrón de diseño describe una estructura de


diseño que resuelve un problema de diseño
particular, dentro de un contexto específico.
Un patrón de diseño provee información que
permite al diseñador determinar si el patrón es
aplicable, si puede re-usarse y si se puede usar
como guía para desarrollar algún patrón similar
con estructura diferente.

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


Conceptos Fundamentales del diseño (cont.)
6. Clases de Diseño
 Las clases generadas en el análisis definen el dominio
del problema.
 En el diseño, las clases se definen de manera que se
refinan las clases obtenidas en el análisis a fin de que se
puedan implementar,
 El diseño crea un nuevo conjunto de clases que permiten
implementar la infraestructura de software que va a
sostener la solución.

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


Niveles de clases del diseño

Se sugieren 5 niveles de clases de diseño:


 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 administración y control del sistema

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


Características de clases “bien
formadas”
 Completa y suficiente. Una clase de diseño debe tener
todos los atributos y métodos razonablemente esperados para
existir.
 Primitividad. Los métodos se deben enfocar en resolver UN
servicio de la clase. Una vez que se ha implementado un
servicio a través de un método, la clase no debe proveer
ninguna otra manera de hacer la misma cosa
 Alta cohesión. Una clase con un diseño cohesivo tiene un
conjunto pequeño y enfocado de responsabilidades y enfoca
exclusivamente sus atributos y métodos a cumplir esas
responsabilidades
 Bajo acoplamiento. Aunque las clases tienen que colaborar
entre sí, esta colaboración debe ser lo mínimo necesario

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


El modelo de diseño
 Puede verse desde 2 posibles dimensiones: proceso y
abstracción
 La dimensión del proceso indica la evolución del modelo
confirme se van ejecutado el proceso de desarrollo de
software
 La dimensión de abstracción representa el nivel de
detalle que surge cuando cada elemento del modelo de
análisis se va transformando en su equivalente de
diseño, y posteriormente se va refinando iterativamente
 La línea punteada en la figura indica la frontera (difusa)
entre análisis y diseño

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


Dimensiones del modelo de diseño
[Pressman 05]

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


Elementos de diseño de datos
 Crea el modelo de datos e información,
representado en un nivel de abstracción alto, y
se va refinando progresivamente
 En la implementación este modelo de datos se
traduce en bases de datos, las cuales en un
futuro formarán “warehouses” que permitirán el
manejo de sistemas administradores de
conocimiento de la empresa

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


Elementos de diseño de arquitectura
 El modelo de arquitectura se obtiene
principalmente de 3 fuentes:
1. Información acerca del dominio de
aplicación del software a construirse
2. Elementos del modelo de análisis tales
como diagramas de flujo o clases generadas
en el análisis sus relaciones y
colaboraciones
3. Disponibilidad de patrones de arquitectura

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


Elementos de diseño de interfaz
 Los elementos de diseño de interfaz describen
como la información fluye entrando y saliendo del
sistema, y como se comunican a través de los
componentes definidos como parte de la
arquitectura
 Hay 3 elementos importantes en el diseño de
interfaces:
1. Interfaz con el usuario
2. Interfaces externas con otros sistemas, dispositivos,
redes u otros productores o consumidores de
información
3. Interfaces internas entre los diferentes componentes
de diseño
(c) P. Gomez-Gil, INAOEP. 2009 23
Diseño de interfaces externas
 Requiere información definitiva sobre la
entidad a la cual la información se manda
o recibe.
 Debe incluir pruebas de errores y
características de seguridad

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


Diseño de interfaces internas
 Está fuertemente relacionado con el diseño a nivel
componentes (diseño detallado)
 En algunos casos, una interface se diseña de igual
manera que una clase.
 Según la OMG “una interfaz es un especificador
de operaciones externamente visibles (publicas)
de una clase, componente u otro clasificador
(incluyendo subsistemas) sin la especificación 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

También podría gustarte