Académique Documents
Professionnel Documents
Culture Documents
/)"'*
*
34-5+$67$
8&)9,):)05$;+9+&-4+5$.+4$$
<)5+=0$.+$/)5*+>-5$$
$
!"#$%$"&'()*+,*(&-$.+$/012-&+
$.+$/012-&+
012'34-5*+'*'5&)*67)5'*
-! 30>:&+9.+&$+4$,09,+:*0$.+$
:&)9,):)0$.+$.)5+=0$$
-! @.+9AB,-&$,(C4+5$509$405$:&)9,):)05$
D+9+&-4+5$.+$.)5+=0$.+$(9$5)5*+>-$
.+$5012-&+E$$
!"#$%$"&'()*+,*(&-$.+$/012-&+
?$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
F$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
J$
9:$;*'5*$8*
<"%8(%=%-*+'*>%5'?-@*
N9$*S&>)905$D+9+&-4+5T$(9$:&)9,):)0$+5$(9-$4+U$0$&+D4-$
'(+$A+9+$'(+$5+&T$0$:0&$40$D+9+&-4$5+$.+V+$5+D()&T$0$5+$
:(+.+$5+D()&$,09W+9)+9*+>+9*+E$$
!9$="%8(%=%-*+'*+%5'?-*+'*5-./)"'*:(+.+$
+9*+9.+&5+$,0>0$(9-$&+D4-$,0>X9>+9*+$
-,+:*-.-$'(+$-U(.-$-$+W)*-&$(9$>-4$.)5+=0E$
8+&0T$'()S9$:&0:(50$+5*05$
:&)9,):)05$.+$.)5+90$.+$
5012-&+Y$
!"#$%$"&'()*+,*(&-$.+$/012-&+
6$
<"%8(%=%-5*+'*>%5'?-*
-! /)$+Z->)9->05$405$+4+>+9*05$+9$+4$.)5+=0$.+$
(9$5)5*+>-$.+$5012-&+T$905$.-&+>05$,(+9*-$
'(+$+5*-5$,0>:-&*+9$(9$,09P(9*0$.+$
.+,)5)09+5$.+$.)5+=0E$
-! 309$+4$A+>:0T$U$-4$5+&$*-9$&+,(&&+9*+5T$+5*-5$
.+,)5)09+5$.+$.)5+=0$5+$,09W)&A+&09$+9$
:&)9,):)05$.+$.)5+=0$+9$+4$C&+-$.+$4-$@9D+9)+&[-$
.+$/012-&+E$
!"#$%$"&'()*+,*(&-$.+$/012-&+
M$
<"%8(%=%-*+'*>%5'?-*
"4D(905$.+$405$:&)9,):)05$D+9+&-4+5$'(+$
+Z:4),-&+>05$K0U$)9,4(U+97$
$
-! H@//$
-! I0.(4-&).-.$
-! ",0:4->)+9*0$$
-! 30K+5)L9$$
-! N9,-:5(4-,)L9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
O$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
Q$
AB,,*
Keep it simple, stupid!
Keep it simple and short
Keep it simple, sir
Keep it simple and straightforward
!
Alguna
idea?
\$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
G]$
Recuerdan que
son las interfaces?
C-+$7)"%+)+*
GG$
C-+$7)"%+)+*
^0&>-5$.+$:-&A,)09-&$(9$5)5*+>-7$
-! !9$5)5*+>-$.)5*&)V().0$5+$.)W).+$+9$,4)+9*+5$U$
5+&W).0&+5$$
-! !9$5)5*+>-$5+$.)W).+$+9$5(V5)5*+>-5$$
-! !9$5(V5)5*+>-$:(+.+$5+&$.)W).).0$+9$(90$0$
>C5$:-'(+*+5$$
-! !9$:-'(+*+$5+$.)W).+$+9$,4-5+5$$
-! !9-$,4-5+$5+$.)W).+$+9$>S*0.05$
!"#$%$"&'()*+,*(&-$.+$/012-&+
G?$
C-+$7)"%+)+*
-! En general la modularidad reduce la complejidad de un diseo,
pues este es ms fcil de entender
-! Prodra promover la reusabilidad de los mdulos o
componentes en algunos casos
-! Sin embargo, si se realiz una particin muy fina del sistema:
-! Podra resultar en comunicacin ms compleja entre los
mdulos
-! Podra afectar la seguridad debido al nmero de canales de
comunicacin (expuestos)
-! Podra inhibir el desempeo, debido al overhead de
comunicacin
-! Si se realiz poco particionamiento, podran reducirse las
desventajas anteriores, aunque al costo de cdigo ms grande
(y sus posibles implicaciones, e.g. system footprint).
!"#$%$"&'()*+,*(&-$.+$/012-&+
GF$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
GJ$
!(-=7)D%'8&-*
E%4'7*+'*>'='8+'8(%)*
_-P0$",0:4->)+9*0$
!"#$%$"&'()*+,*(&-$.+$/012-&+
"4*0$",0:4->)+9*0$
G6$
!(-=7)D%'8&-*
-! Es un principio de diseo basado en la idea de que
los elementos de un sistema deberan ser altamente
independientes entre ellos.
-! Los elementos altamente desacoplados no dependen
altamente de otros elementos para prestar un
servicio.
-! Al ser autocontenidos, los elementos altamente
desacoplados requieren muy pocos elementos de
informacin de otros elementos en el sistema.
!"#$%$"&'()*+,*(&-$.+$/012-&+
GM$
!(-=7)D%'8&-*
En la Ingeniera de Software se reconocen algunos tipos de
acoplamiento:
Acoplamiento Normal: Un componente llama a otro y solo intercambian
datos (parmetros de entrada/salida). Se reconocen algunos subtipos,
dependiendo de los datos que intercambien los componentes:
a)! de datos: los componentes se comunican mediante parmetros que
son tipos de datos simples.
b)! de marca o por estampado: los componentes se comunican
mediante el paso de estructuras de datos. No es muy deseable si el
componente receptor slo requiere parte de los datos que se le
pasan.
c)! de control: cuando un mdulo controla la ejecucin del otro mediante
un comando de control.
!"#$%$"&'()*+,*(&-$.+$/012-&+
GO$
F2'D=7-*+'*!(-=7)D%'8&-*
E-"D)7*+'*6-8&"-7*
!"#$%$"&'()*+,*(&-$.+$/012-&+
GQ$
!(-=7)D%'8&-*
contina !
Acoplamiento Comn: Dos componentes acceden a
un mismo recurso comn, tpicamente memoria
compartida, una variable global o un archivo.
Acoplamiento de Contenido: Ocurre cuando un
componente modifica datos que son internos/
privados de otro componente.
!"#$%$"&'()*+,*(&-$.+$/012-&+
G\$
!(-=7)D%'8&-*
-! ",0:4->)+9*0$`0&>-4$
-! ",0:4->)+9*0$$30>X9$
-! ",0:4->)+9*0$.+$309*+9).0$
!"#$%$"&'()*+,*(&-$.+$/012-&+
?]$
!(-=7)D%'8&-*
-! En general el desacoplamiento promueve la
modificabilidad del sistema, pues los cambios no
deberan tener gran impacto sobre otras
elementos.
-! Sin embargo, el hecho de tener elementos
autocontenidos, podra resultar en cdigo ms
grande (y sus posibles implicaciones, ej. system
foot print).
!"#$%$"&'()*+,*(&-$.+$/012-&+
?G$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
??$
6-G'5%H8*
!"#$%$"&'()*+,*(&-$.+$/012-&+
?F$
6-G'5%H8*
En la Ingeniera de Software se reconocen algunos tipos de
cohesin:
Cohesin Funcional: Los elementos del componente estn
relacionados porque contribuyen a una nica funcin.
Cohesin Secuencial: Los elementos del componente estn
relacionados porque realizan distintas tareas en
secuencia, de forma que las entradas de cada tarea son las
salidas de la tarea anterior.
Cohesin Comunicacional: Los elementos del componente
estn relacionados porque realizan actividades usando los
mismos datos.
!"#$%$"&'()*+,*(&-$.+$/012-&+
?J$
6-G'5%H8*
contina !
Cohesin Procedimental: Los elementos del componente
estn relacionados porque realizan actividades siempre en
el mismo orden.
Cohesin Lgica: Los elementos del componente estn
relacionados porque tienen la misma categora.
Cohesin Casual o Coincidente: Los elementos del
componente estn relacionados porque contribuyen a las
actividades pero relacionndose de una manera poco
significativa.
!"#$%$"&'()*+,*(&-$.+$/012-&+
?6$
6-G'5%H8*
-! 30K+5)L9$a(9,)09-4$
-! 30K+5)L9$5+,(+9,)-4$
b$
c! 30K+5)L9$4LD),-$
c! 30K+5)L9$,0)9,).+9*+$
!"#$%$"&'()*+,*(&-$.+$/012-&+
?M$
6-G'5%H8*
La alta cohesin facilita el mantenimiento. Facilita el
aislar los elementos para la modificacin o evolucin.
Similarlmente, la alta cohesin hace los mdulos mas
fciles de entender.
Sin embargo,
-! A menudo resulta cdigo ms grande.
-! Podra inhibir el desempeo, por la razn anterior.
!"#$%$"&'()*+,*(&-$.+$/012-&+
?O$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
?Q$
F8()=5$7)(%H8*
-! La encapsulacin es un principio de diseo basado en
la idea de ocultar los detalles de implementacin de un
componente del sistema al exterior
-! La encapsulacin permite a los usuarios de un
componente del sistema hacer uso de sus
funcionalidades a travs de interfaces estables y bien
definidas
-! Una encapsulacin efectiva generalmente resulta en
interfaces simples, pues detalles irrelevantes son
removidos de las mismas
!"#$%$"&'()*+,*(&-$.+$/012-&+
?\$
F8()=5$7)(%H8*
Beneficios:
-! Reduce complejidad en el sentido de que
a.! los elementos de la arquitectura pueden ser tratados como
cajas negras que reciben entradas y producen salidas.
b.! las interfaces simples, son ms fciles de comprender y
utilizar.
-! Facilita la modificabilidad en el sentido de que cambios la
implementacin no son percibidos por los usuarios de los
elementos. Las interfaces no sufren cambios.
Limitaciones:
-! Podra inhibir la modificabilidad en el sentido de que algunos
cambios podran requerir cambios en las interfaces.
!"#$%$"&'()*+,*(&-$.+$/012-&+
F]$
<"%8(%=%-5*+'*>%5'?-*
"4D(905$.+$405$:&)9,):)05$D+9+&-4+5$'(+$
+Z:4),-&+>05$K0U$)9,4(U+97$
Para nunca olvidar:
$
-! Alta Cohesin
-! Bajo Acoplamiento
-! H@//$
-! I0.(4-&).-.$
La modularidad implica
-! ",0:4->)+9*0$$
cohesin?
-! 30K+5)L9$$
La encapsulacin
-! N9,-:5(4-,)L9$
promueve el bajo
acoplamiento?
!"#$%$"&'()*+,*(&-$.+$/012-&+
FG$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
F?$
F2'D=7-*
Qu es un
compilador?
Compilador
cdigo
mquina
Qu tipo de tareas se requieren para
llevar a cabo la generacin de cdigo
mquina?
!"#$%$"&'()*+,*(&-$.+$/012-&+
FF$
F2'D=7-*
Este es el diseo tpico de un compilador.
cdigo
fuente
Anlisis
Lxico
Compilador
Anlisis
Sintctico
cdigo
mquina
Anlisis
Semntico
Generacin
de Cdigo
Intermedio
Flujo de datos
Optimizaci
n de Cdigo
Generacin
de Cdigo
Mquina
!"#$%$"&'()*+,*(&-$.+$/012-&+
FJ$
F2'D=7-*
-! !8I7%5%5*J;K%(-7$&+,)V+$,L.)D0$a(+9*+$U$:&0.(,+$
(9-$(9$,09P(9*0$.+$*0d+95$
-! !8I7%5%5*,%8&I(3(-7$&+,)V+$405$*0d+95$U$5+$&+W)5-$
5)$509$5)9*C,A,->+9*+$,0&&+,*05$e0V+.+,+9$-$4-$
D&->CA,-$.+4$4+9D(-P+f$U$:&0.(,+$(9-$
&+:&+5+9*-,)L9$.+$405$>)5>05$+9$(9-$
+5*&(,*(&-$,09W+9)+9*+$:-&-$&+-4)g-&$0*&05$
-9C4)5)5$
!"#$%$"&'()*+,*(&-$.+$/012-&+
F6$
F2'D=7-*
-! !8I7%5%5*,'DI83(-7$&+W)5-$4-$+9*&-.-$&+,)V).-$
:-&-$*&-*-&$.+$+9,09*&-&$+&&0&+5$5+>C9A,05$U$
&+X9+$4-$)9a0&>-,)L9$50V&+$405$A:05$.+$.-*05$
:-&-$4-$a-5+$.+$D+9+&-,)L9$.+$,L.)D0E$
-! L'8'")(%H8*+'*6H+%M-*B8&'"D'+%-7$<+5:(S5$.+$
405$-9C4)5)5$5)9*C,A,0$U$5+>C9A,0T$-4D(905$
,0>:)4-.0&+5$D+9+&-9$(9-$&+:&+5+9*-,)L9$
)9*+&>+.)-$+Z:4[,)*-$.+4$:&0D&->-$a(+9*+E$$
!"#$%$"&'()*+,*(&-$.+$/012-&+
FM$
F2'D=7-*
-! 0=3D%N)(%H8*+'*6H+%M-7$3095)5*+$+9$>+P0&-&$
+4$,L.)D0$)9*+&>+.)0T$.+$>0.0$'(+$&+5(4*+$(9$
,L.)D0$>C'()9-$>C5$&C:).0$.+$+P+,(*-&E$$
-! L'8'")(%H8*+'*6H+%M-*CI#$%8)O*$/+$*&-.(,+9$
4-5$)95*&(,,)09+5$.+$,L.)D0$)9*+&>+.)0$-$
)95*&(,,)09+5$.+$4-$>C'()9-$+5:+,[B,-E$
!"#$%$"&'()*+,*(&-$.+$/012-&+
FO$
6-8('=&-5*L'8'")7'5*+'*>%5'?-*
Podemos reconocer
*
Podemos reconocer
aqu el principio de
modularidad?
Anlisis
Lxico
Compilador
Anlisis
Sintctico
aqu el principio de
cohesin?
cdigo
mquina
Anlisis
Semntico
Generacin
de Cdigo
Intermedio
Flujo de datos
Optimizaci
n de Cdigo
Generacin
de Cdigo
Mquina
FQ$
6-8('=&-5*L'8'")7'5*+'*>%5'?-*
*
Podemos reconocer
Este diseo es
aqu el principio de
acoplamiento ?
simple?
cdigo
fuente
Anlisis
Lxico
Compilador
Anlisis
Sintctico
cdigo
mquina
Anlisis
Semntico
Generacin
de Cdigo
Intermedio
Flujo de datos
Optimizaci
n de Cdigo
Generacin
de Cdigo
Mquina
!"#$%$"&'()*+,*(&-$.+$/012-&+
F\$
6-8&'8%+-*
G!
?!
F!
J!
6!
M!
O!
Q!
8&)9,):)0$.+$<)5+=0$
H@//$
I0.(4-&).-.$
",0:4->)+9*0$
30K+5)L9$
N9,-:5(4-,)L9$
NP+>:40$$
R+5(>+9$
!"#$%$"&'()*+,*(&-$.+$/012-&+
J]$
P'5$D'8**
1! Qu es un Principio de Diseo de
Software?
2! KISS
3! Modularidad
4! Acoplamiento
5! Cohesin
6! Encapsulacin
!"#$%$"&'()*+,*(&-$.+$/012-&+
JG$
8&+D(9*-5Y$
30>+9*-&)05Y$
R+W)5-&$4-$N5:+,)B,-,)L9$
.+4$N9*&+D-V4+$G$.+4$
8&0U+,*0$.+$<)5+=0$
!"#$%$"&'()*+,*(&-$.+$/012-&+
J?$