Sie sind auf Seite 1von 41

Diseo del Software

Architectur al
design
Abstract
specificatio
n
Interface
design
Component
design
Data
structur e
design
Algorithm
design
System
architectur e
Software
specification
Interface
specifica tion
Component
specification
Data
structur e
specification
Algorithm
specifica tion
Requirements
specification
Design acti vities
Design pr oducts
Diseo del Software
Ingeniera del Software 1 2
De la Arquitectura al Diseo
() ( ) () () () ( ) () ()
() 2.4 () 2.4
program pepe();
Diseo del Software
Ingeniera del Software 1 3
Criterios Generales
n No existe el mtodo ni el criterio
general
n Hay criterios
n Uso de varias tcnicas
Formalidad vs. facilidad de instrumentos
n n Divisin en mdulos para reducir la Divisin en mdulos para reducir la
complejidad y prevenir cambios complejidad y prevenir cambios
Diseo del Software
Ingeniera del Software 1 4
Mdulos: Visin esttica
n De c/u de los
subsistemas.
El detalle hacia el
cdigo
n pueden estar
divididos en sub-
mdulos
n no son rutinas
pueden tener
memoria persistente
n Herramienta para
reagrupar tipos,
estructuras de
datos,
subprogramas, etc.
n Porcin de software
que brinda recursos
y servicios
computacionales
Diseo del Software
Ingeniera del Software 1 5
Diseo
n Esta fase se refiere
por lo tanto a la
identificacin de
varios mdulos y su
interrrelacin
Diseo del Software
Ingeniera del Software 1 6
Estrategias de Diseo
u Diseo funcional
El sistema es diseado desde un punto de vista funcional. El
estado del sistema es centralizado y compartido entre las
funciones que operan sobre el mismo.
u Diseo Orientado a Objetos
El sistema es visto como una coleccin de objetos
interactuando. El estado del sistema es decentralizado y cada
objeto maneja su propio estado. Objetos pueden ser instancias
de clases de objetos y pueden comunicarse a travs de mtodos.
Diseo del Software
Ingeniera del Software 1 7
Factores Principales
n Cohesin:
unidad
sustancialmente
homognea y que
sea fcilmente
comprendida
n Desacoplamiento
entre mdulos
ser comprendidos
mirando slo a ellos
Hacen a la independencia funcional
Alta cohesin no implica alto desacoplamiento, ni
viceversa
Diseo del Software
Ingeniera del Software 1 8
Niveles Cohesin
u Coincidental cohesion (dbil)
Las partes son unidas por coincidencia
u Logical association (dbil)
Componentes que realizan funciones similares son agrupadas
u Temporal cohesion (dbil)
Componentes que son activadas al mismo tiempo son agrupadas
u Procedural cohesion (dbil)
Los elementos en una misma secuencia son agrupados
Diseo del Software
Ingeniera del Software 1 9
Niveles de Cohesin
u Communicational cohesion (media)
Todos los elementos de una misma componente operan sobre el
mismo input o producen el mismo output
u Sequential cohesion (media)
El output de una parte del componente es el input de otra parte
u Functional cohesion (fuerte)
Cada parte de una componente es necesaria para la ejecucin de
una funcin
u Object cohesion (fuerte)
Cada operacin provee funcionalidades para modificar o
inspeccionar los atributos de un objeto
Diseo del Software
Ingeniera del Software 1 10
Acoplamiento fuerte
Module A Module B
Module C Module D
Shared data
area
Diseo del Software
Ingeniera del Software 1 11
Acoplamiento dbil
Module A
As data
Module B
Bs data
Module D
Ds data
Module C
Cs data
Diseo del Software
Ingeniera del Software 1 12
Hacia un Diseo Modular
5 Criterios
Descomponibilidad
Componibilidad
Comprensibilidad
Continuidad
Proteccin
5 Reglas
Mapeo Directo
Pocas Interfaces
Pequeas interfaces
Interfaces explcitas
Information Hiding
5 Principios
Unidad Lingstica Modular
Autodocumentacin
Uniformidad de Acceso
Abierto-Cerrado
Simple Opcin
Diseo del Software
Ingeniera del Software 1 13
Descomponibilidad Modular
n Un mtodo de construccin
satisface DM si ayuda en la
tarea de descomposicin
del problema software en
un nmero de problemas
menos complejos
conectados por una
estructura simple y lo
suficientemente
independiente para permitir
que el resto del trabajo
proceda separadamente
(B. Meyer)
n Divisin de Trabajo
n Dependencias: pocas pero
Conocidas
n Ej. Top-Down Design
n ContraEj.: Mdulo global de
inicializacin
buena cohesin temporal
poca autonoma modular
se rompe information hiding
En OO cada mdulo es
responsable de su
inicializacin.
Diseo del Software
Ingeniera del Software 1 14
Componibilidad Modular
n Un mtodo de construccin
satisface CM si ayuda en la
produccin de elementos
que pueden ser libremente
compuestos uno con el otro
para producir sistemas
nuevos, posiblemente en un
ambiente distinto del cual
fue inicialmente
desarrollado.
(B. Meyer)
n Sacarlos del contexto
original para ser reusados
n El sueo de la fbrica de
ensamblaje
n Independiente de
Descomponibilidad
atencin con Top-Down
Design
n EJ.1.: libreras
n Ej.2: Shells Unix
n ContraEj.: Preprocesadores
(c++)
Diseo del Software
Ingeniera del Software 1 15
Comprensibilidad Modular
n Un mtodo de construccin
satisface Comprensibilidad
Modular si ayuda en la
produccin de software en la
cual un lector humano puede
entender cada mdulo sin
tener que conocer o
examinar a ninguno del
resto.
(B. Meyer)
n Proceso de Mantenimiento
n ContraEj.: dependencia
secuencial A!B!C (se
entiende B sin A y C?)
n Documentacin
Diseo del Software
Ingeniera del Software 1 16
Continuidad Modular
n Un mtodo de construccin
satisface Continuidad
Modular, si en la arquitectura
de software en la cual se
basa, un pequeo
problema en la
especificaicn dispara un
cambio de slo un mdulo
o un pequeo grupo de
mdulos
(B. Meyer)
n Extendibilidad
n No definible formalmente
n Ej.1.: Constantes simblicas
n Ej.2.: Principio de Acceso
Uniforme (a un objeto sea
este un dato directo o algo a
ser computado)
n ContraEj.1: Usar
representaciones fsicas
n ContraEj.2: Arrays estticos
Diseo del Software
Ingeniera del Software 1 17
Proteccin Modular
n Un mtodo de construccin
satisface Proteccin
Modular, si lleva a que en
las arquitecturas en las que
ocurre una condicin
anormal en run time en un
mdulo queden confinados
al mismo, o a lo sumo slo a
pocos vecinos.
(B. Meyer)
n Evitar propagacin de
Errores Runtime por
hardware, mal input, falta de
recursos como memoria, etc.
n Ej.: validar input en la fuente
n ContraEj.: Excepciones
Indisciplinadas
Diseo del Software
Ingeniera del Software 1 18
Mapeo Directo Pocas Interfaces
n Una estructura modular
definida en el proceso de
construccin de un sistema
software debe mantenerse
compatible con toda
estructura modular definida
en el proceso de modelar el
dominio del problema.
(B. Meyer)
n Modelos
n Continuidad
n Descomponibilidad
(aprovechar lo hecho)
n Cada Mdulo debe
comunicarse con los menos
posibles de otros
(B. Meyer)
n Si hay n mdulos en lo
posible lo ms cerca de n-1
conexiones y no a n(n-1)/2!
n Continuidad
n Componibilidad
Diseo del Software
Ingeniera del Software 1 19
Pequeas Interfaces Explcitas
n Si dos mdulos se
comunican, deberan
intercambiar la menor
cantidad de informacin
posible.
(B. Meyer)
n Continuidad
n Proteccin
n ContraEj.: Common de
Fortran, Programacin
extremadamente
estructurada (muchos
parmetros)
n Cuando dos mdulos A y B
se comunican, esto debe ser
obvio del texto cdigo de
ambos.
(B. Meyer)
n Continuidad
n Componibilidad
n Descomponibilidad
n Comprensibilidad
n Problema con los
acoplamientos indirectos
como por Shared Memory
Diseo del Software
Ingeniera del Software 1 20
Information Hiding
n El diseador de cada
mdulo debe seleccionar un
subconjuto de propiedades
del mdulo como la
informacin oficial sobre el
mismo, para hacerlo
disponible a los autores de
los mdulos clientes.
(B. Meyer)
n No implica proteccin
n Encapsulamiento
n Propiedades Publicas y
Privadas (o secretas)
n Separacin de funciones de
implementacin (TDA y OO)
n Interfaz --- Iceberg
n Continuidad
n Descomponibilidad
n Componibilidad
n Comprensibilidad
n Ej.: procedimiento de
acceso a una tabla indexada
Diseo del Software
Ingeniera del Software 1 21
Notacin
n Sea M un conjunto de mdulos:
M = {m
1
,m
2
,....,m
n
}
n Una relacin R sobre M es
R M x M
n Un mdulo m
i
est en relacin R con m
j
ssi <m
i
,m
j
> R.
Notacin: m
i
Rm
j
Diseo del Software
Ingeniera del Software 1 22
Representacin en Grafo
n Grafo dirigido
G = <N,A>
A N x N
N M
A R
n Ej: M = {a,b,c,d,e}
R = {<a,b>,<a,e>,<b,c>
<e,d>,<d,c>}
a
b
c
e
d
Diseo del Software
Ingeniera del Software 1 23
Caractersticas de la relacin
n No puede ser reflexiva: <m
i
,m
i
> R
n puede ser simtrica y transitiva
n grafos acclicos:
Ej.: rboles
si i <m
i
,m
i
> R* (clausura transitiva)
directo y acclico jerarqua
muchos caminos entre dos nodos
concepto de nivel
Diseo del Software
Ingeniera del Software 1 24
Distintos Niveles
System level
Sub-system
level
Diseo del Software
Ingeniera del Software 1 25
La relacin USA
n Describe las
funcionalidades que
brinda un mdulo y
cuales son las
funcionalidades que
un mdulo necesita
n m
i
resulta ser un
cliente de los
servicios que provee
m
j
n m
i
esta en relacin
USA con m
j
(m
i
USA m
j
) si para
que el mdulo m
i
sea correcto si
necesita la correcta
ejecucin de m
j
.
Diseo del Software
Ingeniera del Software 1 26
La relacin USA
n se define
estticamente
n describe el
desacoplamiento
n llamadas a
procedimientos no
siempre implican
USA y viceversa
n aciclicidad
n Casos extremos:
USA = M x M
USA =
n Indicaciones:
minimizar arcos
salientes
maximizar arcos
entrantes
n anlisis por niveles
de abstraccin
Diseo del Software
Ingeniera del Software 1 27
La relacin Es_Componente_De
n Relacin en la
direccin de
refinamiento
sucesivos (top-
down)
n Debe ser una
jerarqua (no
necesariamente un
rbol)
n Slo las hojas se
implementan
efectivamente
n Los nodos internos
son mdulos lgicos
Diseo del Software
Ingeniera del Software 1 28
Indicaciones
n Redefinicin de USA
respecto a
Es_Componenete_De
n Construccin
Incremental
n Postergar las
decisiones
n INFORMATION HIDING
cajas negras
definidas por los servicios
que brindan
Interfaz e Implementacin
Exportacin e Importacin
principio de divisin de
trabajo
Qu esconder?
Diseo del Software
Ingeniera del Software 1 29
Descripciones de Diseo
u Notaciones Grficas. Usadas para mostrar
relaciones entre los componentes
u Lenguajes de descripcin de Programas. Basados
en lenguajes de prog. pero con ms flexibilidad
para representar conceptos abstractos.
u Texto informal Descripcin en lenguaje natural
u Todas estas notaciones pueden ser usadas para
disear sistemas grandes
Diseo del Software
Ingeniera del Software 1 30
Diseo Orientado a Objetos
n Estrategia de diseo basada en
INFORMATION HIDING
ABSTRACCION
MODULARIDAD
n Crea una representacin del mundo
real y lo corresponde con una solucin
basada en los datos
Diseo del Software
Ingeniera del Software 1 31
n El software es visto como un conjunto
de objetos que interactan, con su
estado privado, en vez de un conjunto
de funciones que comparten un estado
global
El mundo es visto como un conjunto....
Diseo OO
O1
estado 1
O2
estado 2
O3
estado 3
O4
estado 4
Diseo del Software
Ingeniera del Software 1 32
Caractersticas
n Los objetos son abstracciones del mundo real o entidades del
sistema que son responsables de manejar su estado privado y
ofrecen servicios a otros objetos.
Son un modelo de los objetos externos que pueblan el
mundo en que acta el programa.
n Los objetos son entidades independientes que pueden ser
rpidamente cambiados por la informacin de la representacin
y el estado queda dentro del objeto.
un objeto es caracterizado al exterior slo por la interfaz que
brinda, es decir el conjunto de recursos que pone a
disposicin.
Diseo del Software
Ingeniera del Software 1 33
Caractersticas
n La funcionalidad del sistema es expresada en trminos de operaciones
y servicios asociados con cada objeto.
n reas de datos compartidos son eliminados. Los objetos se comunican
llamando los servicios ofrecidos en vez de compartir variables.
Disminuye el acoplamiento
Disminuye el riesgo de modificaciones a datos compartidos
n Los objetos pueden ser distribuidos y pueden ejecutarse en paralelo o
concurrentemente. Estas decisiones no deben tomarse tempranamente.
recordar: posponer lo mayor posible toda decisin trascendente de
diseo.
Diseo del Software
Ingeniera del Software 1 34
No preguntes qu hace el sistema sino qu le
hace a qu cosa
n OOD es el mtodo
que permite definir
arquitecturas del
software basados
en los objetos que
todo sistema o
subsistema usa
n OOD es la
construccin de
sistemas software
como una coleccin
estructurada de
TAD.
Diseo del Software
Ingeniera del Software 1 35
Criterios
n Descomponibilidad: facilidad de descomponer un
gran problema en subproblemas
n Componibilidad: facilidad de reuso reuso
n Comprensibilidad: facilidad de entender un
mdulo por s solo
n Continuidad: pequeos cambios implican pocos
cambios
n Proteccin: reducir efectos colaterales
lo buscado por cualquier mtodo de diseo
Diseo del Software
Ingeniera del Software 1 36
7 conceptos
n Object based modular structure: los sistemas
estn modularizados en base a su estructura de
datos.
n Data abstraction: los objetos deberan ser
descriptos como implementaciones de TADs.
n Automatic Memory Management: los objetos no
usados deberan ser liberados por el lenguaje
subyacente.
n Clases: cada tipo no primitivo es un mdulo y
cada mdulo de alto nivel es un tipo.
Diseo del Software
Ingeniera del Software 1 37
7 conceptos
n Una clase puede ser definida como una
extensin o una restriccin sobre otras.
n Polimorfismo y Dynamic Binding: se
deben permitir referencias a objetos de ms
de una clase y las operaciones deben poder
realizarse en diferentes clases.
n Mltiple y repetida herencia: debe ser posible
declarar una clase como herede de ms de
una clase o ms veces de la misma.
Diseo del Software
Ingeniera del Software 1 38
n La clase es el tipo del objeto
clase persona: descripcin de las caractersticas
comunes a todos los objetos de tipo persona
Clases
Clase Persona
atributos
nombre: string;
apellido: string;
servicios
presentate()
Mario
Rossi
Francisca
Verdi
Carla
Bianchi
module implementation
exports
Diseo del Software
Ingeniera del Software 1 39
HERENCIA
En el mundo real los objetos son clasificados segn
caractersticas comunes
El mismo principio se puede aplicar a los objetos de un
programa. La clasificacin se hace definiendo un
nuevo tipo como extensin de un tipo preexistente
Ttulo del diagrama
Corvinas Surubes
Peces Anfibios Reptiles Pjaros
Carnvoros Herbvoros
Mamferos
Vertebrados
Diseo del Software
Ingeniera del Software 1 40
La relacin HEREDA_DE
la clase (el mdulo) estudiante
extiende la clase (el mdulo)
persona:
n AGREGANDO un nuevo
atributo (matrcula)
n REDEFINIENDO un servicio
(presentate)
nombre =Piero
apellido =Fraternalli
matricula = 585/96
presentate() = Buen da soy
Fraternalli, estudiante 585/96
Persona
Atributos
nombre: string;
apellido: string
presentate()
Estudiante
Atributos
matrcula: int;

presentate()
Heredadas por
ser persona tambin
Heredadas por
ser persona tambin
Diseo del Software
Ingeniera del Software 1 41
HEREDA_DE => ES_UN (IS_A)
Persona
nombre
peso
Mujer
Embarazada
Hombre
Conj. de
Enteros
unin
existe
vaco
Conj. de
Enteros
Ordenados
1er Elem
existe

Das könnte Ihnen auch gefallen