Table Of ContentESCUELA POLITÉCNICA DEL EJÉRCITO
Departamento de Ciencias de la Computación
Carrera de Ingeniería en Sistemas e Informática
Análisis de Patrones de Software y su aplicación en un
Framework de Desarrollo utilizando plataforma .net
Previa a la obtención del Título de:
INGENIERO EN SISTEMAS E INFORMÁTICA
POR: IVÁN AURELIO FERNÁNDEZ SILVA
JUAN GABRIEL JALIL MORENO
SANGOLQUÍ, 07 de marzo de 2007
CERTIFICACIÓN
Certifico que el presente trabajo fue realizado en su totalidad por los Sres.
IVÁN AURELIO FERNÁNDEZ SILVA y JUAN GABRIEL JALIL MORENO como
requerimiento parcial a la obtención del título de INGENIEROS DE SISTEMAS E
INFORMÁTICA
_______________
Fecha
__________________
Ing. Rolando Reyes
II
DEDICATORIA
Dedicada a mi familia, mi novia y mis amigos, espero que algo de lo que aquí
hay, les ayude en algún momento para seguir su camino.
Iván Fernández
III
DEDICATORIA
Este trabajo es dedicado a todos esos años en los que junto con amigos y
colaboradores continuamente se trabajó para sacarle cada día mas provecho a
las oportunidades que tuvimos. A todos los que no nos quisimos quedar solo con
lo aprendido sino ver que pueden existir otras formas de hacer girar la rueda.
Juan G. Jalil
IV
AGRADECIMIENTOS
A mi familia y amigos, por siempre estar a mi lado y apoyarme cuando lo necesito,
sin dejarme caer y dándome el soporte para seguir adelante. Muchas gracias a
todos quienes han estado a mi lado durante toda mi carrera, las malas noches, los
problemas y los buenos momentos, por que sin todos ellos no hubiera llegado tan
lejos.
Iván Fernández
V
AGRADECIMIENTOS
A quienes fueron mi guía y un “primer impulso” para lograr lo que he
conseguido hasta ahora: mis padres, quienes me dieron su apoyo incondicional
durante ya tantos años. A todas esas personas, amigos y familia que confiaron en
mí a todo momento y a mi hijo Samuel que sacrificó junto a mí muchos días de
sol.
Juan G. Jalil
VI
Tabla de Contenidos
LISTADO DE TABLAS ............................................................................... XIX
LISTADO DE CUADROS ............................................................................ XX
LISTADO DE FIGURAS ............................................................................. XXI
LISTADO DE FIGURAS ............................................................................. XXI
LISTADO DE ANEXOS ......................................................................... XXVIII
LISTADO DE BLOQUES DE CÓDIGO ................................................... XXIX
RESUMEN ............................................................................................... XXXI
CAPÍTULO I : INTRODUCCIÓN .................................................................. 33
1.1. Antecedentes .......................................................................................................................... 33
1.2. Justificación ............................................................................................................................ 34
1.3. Importancia ............................................................................................................................ 35
1.4. Objetivos ................................................................................................................................. 36
1.4.1. Objetivo General ............................................................................................................ 36
1.4.2. Objetivos Específicos ..................................................................................................... 36
1.5. Alcance.................................................................................................................................... 36
CAPÍTULO II: MARCO TEÓRICO ............................................................... 38
2.1. Patrones de Software ............................................................................................................. 38
VII
2.2. UML - Lenguaje Unificado de Modelamiento (Unified Modeling Language)................. 40
2.2.1. Introducción ................................................................................................................... 40
2.2.2. Diagramas de clases ....................................................................................................... 44
2.2.3. Diagrama de casos de uso .............................................................................................. 46
2.2.4. Diagrama de Componentes ............................................................................................ 48
2.2.5. Diagramas de Estados .................................................................................................... 50
2.2.6. Diagrama de Actividad .................................................................................................. 51
2.2.7. Diagramas de Interacción ............................................................................................... 53
2.2.7.1. Diagrama de Secuencia .............................................................................................. 54
2.2.7.2. Diagrama de Colaboración ......................................................................................... 55
2.3. Frameworks ........................................................................................................................... 57
2.3.1. Definición ...................................................................................................................... 57
2.3.2. Características ................................................................................................................ 58
2.3.3. Tipos de Frameworks ..................................................................................................... 60
2.3.3.1. System infrastructure frameworks ............................................................................. 61
2.3.3.2. Middleware integration frameworks .......................................................................... 61
2.3.3.3. Enterprise application frameworks ............................................................................ 62
2.3.3.4. White Box, Frameworks de Caja Blanca ................................................................... 62
2.3.3.5. Black Box, Frameworks de Caja Negra ..................................................................... 64
2.3.3.6. Grey Box, Frameworks de Caja Gris ......................................................................... 65
2.3.3.7. Visual Builders y Soporte de Lenguaje ...................................................................... 66
2.3.4. Frameworks y Patrones de Software .............................................................................. 66
2.4. Descripción de la Tecnología .net ......................................................................................... 67
2.4.1. El .net Framework .......................................................................................................... 68
2.4.2. El CLR Common Language Runtime ............................................................................ 69
2.4.2.1. Ejecución de Código dentro del CLR ........................................................................ 71
2.4.3. IL Intermediate Language (MSIL Microsoft Intermediate Language) ........................... 71
2.4.4. Compilador Just In Time ................................................................................................ 71
2.4.5. CTS (Common Type System) ........................................................................................ 74
VIII
2.4.6. CLS (Common Language Specification) ....................................................................... 76
2.4.7. Namespaces .................................................................................................................... 77
2.4.8. Assemblies ..................................................................................................................... 77
2.4.9. Librería de clases ........................................................................................................... 79
2.4.10. Ado.net ........................................................................................................................... 80
2.4.11. ASP.NET ....................................................................................................................... 81
2.5. Aplicaciones Distribuidas en .net ........................................................................................ 84
2.5.1. Componentes y niveles en aplicaciones y servicios ....................................................... 87
2.5.1.1. Componentes de interfaz de usuario (IU) .................................................................. 89
2.5.1.2. Componentes de proceso de usuario .......................................................................... 90
2.5.1.3. Flujos de trabajo empresariales .................................................................................. 90
2.5.1.4. Componentes empresariales ....................................................................................... 90
2.5.1.5. Agentes de servicios .................................................................................................. 91
2.5.1.6. Interfaces de servicios ................................................................................................ 91
2.5.1.7. Componentes lógicos de acceso a datos ..................................................................... 91
2.5.1.8. Componentes de entidad empresarial ......................................................................... 91
2.5.1.9. Componentes de seguridad, administración operativa y comunicación ..................... 92
2.6. Arquitectura orientada a servicios (SOA) ........................................................................... 92
CAPÍTULO III : ESTUDIO DE LOS PATRONES DE SOFTWARE ............. 97
3.1. Clasificación de los patrones de software ............................................................................ 97
3.1.1. Niveles de Patrones ........................................................................................................ 98
3.1.2. Estructura de los Patrones .............................................................................................. 99
3.2. Patrones de Programación de Software ............................................................................. 100
3.2.1. Patrones de Diseño ....................................................................................................... 100
3.2.2. Clasificación de los Patrones de Diseño ...................................................................... 102
3.2.2.1. Patrones Creacionales .............................................................................................. 104
3.2.2.1.1. Factory method ................................................................................................ 104
IX
3.2.2.1.2. Abstract Factory .............................................................................................. 106
3.2.2.1.3. Builder .............................................................................................................. 109
3.2.2.1.4. Prototype .......................................................................................................... 111
3.2.2.1.5. Singleton .......................................................................................................... 113
3.2.2.2. Patrones Estructurales .............................................................................................. 115
3.2.2.2.1. Adapter ............................................................................................................. 116
3.2.2.2.2. Bridge ............................................................................................................... 119
3.2.2.2.3. Composite ........................................................................................................ 121
3.2.2.2.4. Decorator .......................................................................................................... 123
3.2.2.2.5. Facade .............................................................................................................. 126
3.2.2.2.6. Flyweight ......................................................................................................... 129
3.2.2.2.7. Proxy ................................................................................................................ 133
3.2.2.3. Patrones de Comportamiento ................................................................................... 136
3.2.2.3.1. Interpreter ......................................................................................................... 136
3.2.2.3.2. Template method .............................................................................................. 139
3.2.2.3.3. Chain of Responsability ................................................................................... 141
3.2.2.3.4. Command ......................................................................................................... 143
3.2.2.3.5. Iterator .............................................................................................................. 146
3.2.2.3.6. Mediator ........................................................................................................... 148
3.2.2.3.7. Memento .......................................................................................................... 151
3.2.2.3.8. Observer ........................................................................................................... 153
3.2.2.3.9. State .................................................................................................................. 156
3.2.2.3.10. Strategy .......................................................................................................... 157
3.2.2.3.11. Visitor ............................................................................................................. 159
3.2.3. Patrones de Programación ............................................................................................ 162
3.3. Patrones de Arquitectura .................................................................................................... 164
3.3.1. Layers (Capas) ............................................................................................................. 165
3.3.2. Patrones de lógica de dominio ..................................................................................... 166
3.3.2.1. Transaction script ..................................................................................................... 166
3.3.2.2. Domain model .......................................................................................................... 168
X
Description:A mi familia y amigos, por siempre estar a mi lado y apoyarme cuando lo necesito, sin dejarme caer y dándome el soporte para seguir adelante. Muchas gracias a todos quienes han estado a mi lado durante toda mi carrera, las malas noches, los problemas y los buenos momentos, por que sin todos