Академический Документы
Профессиональный Документы
Культура Документы
Resumen
Resumen
Descriptores
Bibliografa
Esquema
Introduccin
Diseo de la arquitectura
Ejercicios
Lecturas complementarias
Referencias
1. Introduccin
Definicin de DOO
DOO es el proceso que modela el dominio de la
solucin, lo que incluye a las clases semnticas con
posibles aadidos, y las clases de interfaz, aplicacin y
utilidad identificadas durante el diseo
[Monarchi y Puhr, 1992]
Generalidades (i)
Generalidades (ii)
Herencia
Modelo Conceptual
Modelo Fsico
Menos formal
Ms formal
Ms caro de desarrollar
Menos capas
Ms capas
Centrado en la secuencia
Puede no necesitar
mantenimiento
Necesidad de mantenimiento a
lo largo de todo el ciclo de vida
Diseo arquitectnico
10
Especificaciones abstractas
Diseo de interfaces
Diseo detallado
11
12
Disciplina de diseo
Fases
Disciplinas
Inicio
Elaboracin
Construccin
Transicin
Requisitos
Anlisis
Diseo
Implementacin
Pruebas
Iteraciones
preliminares
iter.
#1
iter.
#2
iter.
#n
iter.
#n+1
ite r.
#n+2
iter.
#m
iter.
#m+1
Iteraciones
13
Arquitecto
Ingeniero de
Casos de Uso
Ingeniero
de componentes
responsable de
responsable de
responsable de
Realizacin de
Casos de Uso
Diseo
Clases de
Diseo
Subsistema
de diseo
Interfaz
14
Modelo de diseo
Clase de diseo
Realizacin de casos de uso diseo
Subsistema de diseo
Interfaz
Modelo de despliegue
Descripcin de la arquitectura
15
16
Sistema de
diseo
1
1
Subsistema
de diseo
*
*
*
*
Interfaz
Clase de diseo
17
Clase de diseo
18
19
Subsistema de diseo
Son una forma de organizar los artefactos del modelo del diseo en piezas
ms manejables
Deben ser una coleccin cohesiva de clases de diseo, realizaciones de
caso de uso, interfaces y otros subsistemas
El acoplamiento entre subsistemas ha de ser mnimo
Utilizados para separar los aspectos del diseo
Las dos capas de aplicacin de ms alto nivel y sus subsistemas dentro del
modelo de diseo suelen tener trazas directas hacia paquetes del anlisis
Los subsistemas pueden representar componentes de grano grueso en la
implementacin del sistema, es decir, componentes que proporcionan
varias interfaces a partir de otros elementos de grano ms fino, y que se
convierten ellos mismos en ejecutables, ficheros binarios o entidades
similares que pueden distribuirse en diferentes nodos
Pueden representar productos software reutilizados que han sido
encapsulados en ellos
Pueden representar sistemas heredados o partes de ellos
20
Interfaz
21
Modelo de despliegue
22
Descripcin de la arquitectura
23
3. Diseo de la arquitectura
24
Introduccin
Subsistema (esbozo)
Modelo de
casos de uso
Interfaz (esbozo)
Requisitos
adicionales
Arquitecto
Clase de
diseo (esbozo)
Modelo de
anlisis
Diseo de la
arquitectura
Modelo de despliegue
(esbozo)
Descripcin de la
Descripcin de la
arquitectura
arquitectura
(vista anlisis)
(vista de diseo y despliegue)
Universidad de Salamanca Departamento de Informtica y Automtica
25
Las configuraciones de red suelen tener una gran influencia sobre la arquitectura
del software
Las configuraciones de red habituales utilizan un patrn de tres capas (o un
derivado del mismo)
26
27
Los paquetes del anlisis no representan una divisin adecuada del trabajo
Los paquetes del anlisis no representan la incorporacin de un sistema
heredado
Los paquetes del anlisis no estn preparados para una distribucin directa
sobre los nodos
28
29
Capa intermedia
30
Gestin de
planificacin de
pagos
Java.applet
Gestin de
cuentas
Java.awt
Java.rmi
Capa intermedia
Mquina virtual
Java
Navegador de
Internet
31
Paquete
dependiente
Paquete
32
Ventana de
mensaje
Ventana de
tarea
Mis
Tareas
Base de
Datos
Tarea
Ventanas
Mis
Dilogos
33
Ventana de
mensaje
Ventana de
tarea
Mis
Tareas
Base de
Datos
Tarea
Ventanas
Mis
Dilogos
34
MiAplicacin
Y
Antes
Despus
MisDilogos
MiAplicacin
Servidor
X
35
36
Persistencia
Distribucin transparente de objetos
Caractersticas de seguridad
Deteccin y recuperacin de errores
Gestin de transacciones
37
38
Introduccin (i)
39
Introduccin (ii)
Un patrn es
40
Definicin
Un patrn es una regla que establece una relacin entre un contexto, un sistema de
fuerzas que aparecen en el contexto y una configuracin [Alexander, 1979]
Un patrn es una descripcin en un formato fijo de cmo solucionar un cierto tipo de
problemas [Reenskaug et al., 1996]
Cada patrn es una regla constituida por tres partes, la cual expresa una relacin entre un
cierto contexto, un cierto sistema de fuerzas que ocurren repetidamente en ese contexto, y
una cierta configuracin software que permite a estas fuerzas resolverse as mismas
[Coplien, 2007]
Un patrn es una unidad de informacin instructiva con nombre que captura la estructura
esencial y la comprensin de una familia de soluciones exitosas probadas para un problema
recurrente que ocurre dentro de un cierto contexto y de un sistema de fuerzas [Appleton,
2000]
Un patrn es un par problema/solucin que tiene un nombre y que puede aplicarse en
contextos nuevos, con las instrucciones correspondientes acerca de cmo utilizarlo en una
situacin nueva [Larman, 2002]
Un patrn de diseo es una descripcin de clases y objetos comunicndose entre s,
adaptada para resolver un problema de diseo general en un contexto particular [Gamma et
al., 1995]
Un patrn de diseo es una abstraccin de un problema de diseo general, que ocurre
recurrentemente en contextos especficos no arbitrarios [Aklecha, 1999]
41
42
Nombre
Contexto
Problema
Caractersticas (fuerzas)
Indica los atributos del diseo que han de ajustarse para permitir que el patrn
se acomode a una gran variedad de problemas
Son objetivos y restricciones; factores que lo motivan; indicaciones de por qu
el problema es complicado
43
Consecuencias
Solucin
Ejemplo
Patrones relacionados
Patrones que son similares; patrones que usa o que son usados por l
Usos conocidos
44
Tipos de patrones
Anlisis
Organizativos
Diseo
Arquitectnico
Idiomas
45
Propsito
mbito
Bsicos y avanzados
46
Patrones arquitectnicos
Patrones de diseo
Para expresar el esquema de una organizacin estructural fundamental para los sistemas software
Son plantillas para arquitecturas software concretas
Proporcionan un conjunto de subsistemas predefinidos, especifican sus responsabilidades e incluye
reglas y recomendaciones para organizar las relaciones entre los subsistemas
La seleccin de un patrn arquitectnico es una decisin de diseo fundamental cuando se desarrolla
un sistema software
Ejemplos: Modelo-Vista-Controlador, Capas (Layers), Broker, Pipes and Filter
De menor escala que los patrones arquitectnicos y sin efectos sobre la estructura fundamental de los
sistemas software
Proporcionan un esquema para refinar los subsistemas o componentes de un sistema software o las
relaciones entre ellos
Describen un estructura frecuente de componentes que se comunican y que resuelven un problema
general de diseo en un contexto particular
Ejemplos: Observer, Publisher-Subscriber
Idiomas
47
Sistemas distribuidos
Sistemas adaptables
Sistemas interactivos
Descomposicin estructural
48
Control de acceso
Comunicacin
Gestin
Manejo de recursos
49
POSA Patrones
POSA
Arquitectnicos
Estructuracin
Layers; Pipes&Filters;
Blackboard
Sistemas distribuidos
Broker
Pipes&Filters
Microkernel
Sistemas interactivos
MVC; PAC
Sistemas adaptables
Microkernel, Reflection
Diseo
Descomposicin
estructural
Whole-Part
Master-Slave
Control acceso
Proxy
Gestin
Command Processor
View Handler
Comunicacin
Publisher-Subscriber
Forwarder-Receiver
Client-Dispatcher-Server
Manejo recursos
Universidad de Salamanca Departamento de Informtica y Automtica
Idiomas
Counted Pointer
50
GoF Introduccin
Plantilla bsica
51
mbito
Dominio de aplicacin
Clase
Objeto
Composicin
Propsito
Qu hacer
Creacin
Estructural
Comportamiento
Las formas en las que las clases y objetos interaccionan y se distribuyen las
responsabilidades
52
mbito de clase
Patrones de Creacin Cmo instanciar objetos ocultando la parte especfica del proceso de creacin
Template Method
mbito de objeto
Abstract Factory
Patrones estructurales Cmo juntar objetos para hacerse cargo de una funcionalidad nueva
Proxy, Flyweight
Patrones de comportamiento Cmo un grupo de objetos equivalentes (peer) coperan para llevar a
cabo una tarea que un objeto por s solo no puede llevar a cabo
Adapter
Patrones de comportamiento Cmo cooperan las clases con sus subclases para ajustarse a su
semntica
Factory Method
mbito de composicin
Builder
Composite, Wrapper
Iterator
53
GoF Patrones
Propsito
mbito
Creacin
Estructural
Clase
Factory Method
Adapter (class)
Bridge (class)
Template method
Objeto
Abstract
Factory
Prototype
Solitaire
Adapter
(object)
Bridge (object)
Flyweight
Glue
Proxy
Chain of Responsibility
Command
Iterator (object)
Mediator
Memento
Observer
State
Strategy
Composicin
Builder
Composite
Wrapper
Interpreter
Iterator (compound)
Walker
Comportamiento
54
Arquitectnicos
Diseo
Estructuracin
Layers (POSA)
Pipes&Filters (POSA)
Blackboard (POSA)
Interpreter (GOF)
Sistemas distribuidos
Broker (POSA)
Pipes&Filters (POSA)
Microkernel (POSA)
Sistemas interactivos
MVC (POSA)
PAC (POSA)
Sistemas adaptables
Microkernel (POSA)
Reflection (POSA)
Creacin
Descomposicin
estructural
Whole-Part (POSA)
Composite (GOF)
Organizacin del
trabajo
Master-Slave (POSA)
Chain of Reponsibility (GOF)
Command (GOF)
Mediator (GOF)
Idiomas
Singleton (GOF)
Factory Method (GOF)
55
Arquitectnicos
Diseo
Control acceso
Proxy (POSA)
Facade (GOF)
Iterator (GOF)
Variacin Servicio
Bridge (GOF)
Strategy (GOF)
State (GOF)
Extensin Servicio
Decorator (GOF)
Visitor (GOF)
Gestin
Adaptacin
Adapter (GOF)
Comunicacin
Publisher-Subscriber (POSA)
Forwarder-Receiver (POSA)
Client-Dispatcher-Server (POSA)
Manejo recursos
Flyewight (GOF)
Idiomas
56
GRASP Introduccin
57
GRASP Patrones
Experto en informacin
Creador
Bajo acoplamiento
Alta cohesin
Controlador
Polimorfismo
Fabricacin Pura
Indireccin
Variaciones protegidas
58
59
MVC (i)
60
MVC (ii)
Problema
61
MVC (iii)
Solucin
62
MVC (iv)
Clase
Modelo
Colaboradores
Vista
Controlador
Responsabilidades
Ofrece la funcionalidad
central de la aplicacin
Registrar las vistas y
controladores dependientes
Notificar a los componentes
dependientes sobre cambio
en los datos
Clase
Vista
Responsabilidades
Colaboradores
Controlador
Modelo
Crear e iniciar su
controlador asociado
Mostrar la informacin al
usuario
Implementar el mtodo
actualizar()
Recuperar datos del
modelo
63
MVC (v)
Clase
Controlador
Colaboradores
Responsabilidades
Vista
Modelo
64
MVC (vi)
Observador
1..*
actualizar()
Modelo
Vista
Controlador
datos
conectar(Observador)
desconectar(Observador)
notificar()
conseguirDatos()
servicio()
iniciar(Modelo)
hacerControlador()
activar()
mostrar()
1 iniciar(Modelo, Vista)
manejarEvento()
65
MVC (vii)
Ventajas
Inconvenientes
Se incrementa la complejidad
Nmero de actualizaciones potencialmente alto
ntima conexin entre la vista y el controlador
Alto acoplamiento de las vistas y los controladores con respecto al modelo
Acceso ineficiente a los datos desde la vista
Cambio inevitable de las vistas y controladores cuando se porte a otras
plataformas
66
67
Aplicabilidad
68
Solucin
<<estereotipo>>
CLIENTE
<<estereotipo>>
FactoraAbstracta
{abstracta}
+CrearProducto():ProductoAbstracto{abstracto}
<<estereotipo>>
ProductoAbstracto
{abstracta}
<<estereotipo>>
FactoraConcreta
<<estereotipo>>
Producto
+CrearProducto():ProductoAbstracto
#Producto()
69
Cliente
char *msg
int x1,y1,x2,y2
+ Botn()
+ DibujaBotn()
FactoriaControles
{abstracta}
+ CrearDispositivo(): *Dispositivo {abstracto}
+ CrearBoton(): *Boton {abstracto}
+ CrearFormulario(): *Formulario {abstracto}
+ ...
BotnTexto
BotnGrfico
Dispositivo
{abstracta}
FactoriaControlesGrfico
FactoriaControlesTexto
+ CrearDispositivo(): *Dispositivo
+ CrearBoton(): *Boton
+ CrearFormulario(): *Formulario
+ ...
+ CrearDispositivo(): *Dispositivo
+ CrearBoton(): *Boton
+ CrearFormulario(): *Formulario
+ ...
+ Inicia()
DispositivoTexto
DispositivoGrfico
70
Ventajas
Inconveniente
71
Puente (i)
72
Puente (ii)
Problema
Pila
Push(T)
Pop( ) : T
Top( ) : T
EstVaca( ):bool
PilaArray
PilaLista
PilaFichero
73
Puente (iii)
Aplicabilidad
74
Puente (iv)
Solucin
Cliente
Abstraccin
impl
Implementador
ImpOperacin( )
Operacin( )
impl->ImpOperacin()
AbstraccinRefinada
ImplementadorConcretoA
ImplementadorConcretoB
75
Puente (v)
Puente
T
Pila
ImpPila
Push(T)
Pop( ) : T
Top( ) : T
EstVaca( ):bool
PilaExtendida
impl
impPush(T)
impPop( ) : T
impTop( ) : T
impEstVaca( ):bool
ImpPilaArray
ImpPilaLista
ImpPilaFichero
Vaciar()
while ( ! EstVaca ( ) )
Pop()
76
Puente (vi)
Consecuencias
77
Mediador (i)
78
Mediador (ii)
Problema (i)
A
C
B
Mediator
79
Mediador (iii)
Problema (ii)
80
Mediador (iv)
Aplicabilidad
81
Mediador (v)
Solucin
Mediador
MediadorConcreto
mediador
Colega
ColegaConcreto1
ColegaConcreto2
82
Mediador (vi)
Dilogo
Mostrar( )
CrearControles( )
CambioEnControl(Control)
mediador
lista
DilogoAbrirArchivo
Control
Cambiado( )
Lista
GetSeleccin():Cadena
mediador->CambioEnControl (this)
Visor
SetImagen(Archivo: Cadena)
visor
83
Mediador (vii)
unCliente
unDilogoAbrirArchivo
unaLista
unVisor
Mostrar( )
CambioEnControl(this)
img=GetSeleccin( )
SetImagen(img)
84
Mediador (viii)
Ventajas
Inconveniente
85
Solucin
86
1
1..*
Producto
LneaVenta
-cantidad
+getSubTotal()
-descripcin
-precio
-unidades
+getPrecio()
1 *: st:=getSubtotal()
t:=getTotal()
:Venta
:LneaVenta
1.1 p:=getPrecio()
:Producto
Universidad de Salamanca Departamento de Informtica y Automtica
87
Contraindicaciones
Beneficios
88
Creador (i)
Si se asignan bien, el diseo puede soportar un bajo acoplamiento, mayor claridad, encapsulacin y
reutilizacin
Solucin
B agrega objetos de A
B contiene objetos de A
B registra objetos de A
B utiliza ms estrechamente objetos de A
B tiene los datos de inicializacin que se pasarn a un objeto A cuando sea creado (B es un
Experto con respecto a la creacin de A)
89
Creador (ii)
Venta
-fecha
-hora
1
1..*
Producto
LneaVenta
-cantidad
*
-descripcin
-precio
-unidades
:Registro
:Venta
crearLneaVenta(cantidad)
create(cantidad)
:LneaVenta
90
Creador (iii)
Contraindicaciones
Beneficios
Bajo acoplamiento
91
Solucin
92
Venta
Opcin 1
realizarPago()
Opcin 2
1:create()
:Registro
realizarPago()
p:Pago
2: aadirPago(p)
1:create()
:Registro
:Venta
1.1 : create()
Pago
:Venta
:Pago
93
Contraindicaciones
Beneficios
94
Existe una alta cohesin funcional cuando los elementos de un componente (clase) trabajan todos juntos
para proporcionar algn comportamiento bien delimitado [Booch, 1994]
Difciles de entender
Difciles de reutilizar
Difciles de mantener
Delicadas, constantemente afectadas por los cambios
Con frecuencia las clases con baja cohesin representa un grano grande de
abstraccin, o se les ha asignado responsabilidad que deberan haberse delegado en
otros objetos
Solucin
95
Beneficios
96
Controlador (i)
Se asocian con operaciones del sistema tal como se relacionan los mensajes y
los mtodos
97
Controlador (ii)
Solucin
Debe utilizarse la misma clase controlador para todos los eventos del sistema en
miso escenario de caso de uso
Informalmente, una sesin es una instancia de conversacin con un actor. Las
sesiones pueden tener cualquier duracin, pero se organizan con frecuencia en
funcin de los casos de uso (sesiones de casos de uso)
98
Controlador (iii)
actionPerformed(actionEvent)
Capa de interfaz
Capa del dominio
1 : introducirProducto(productoID, cantidad)
:JFrameVenta
:Venta
99
Controlador (iv)
Beneficios
100
Polimorfismo (i)
Solucin
101
Polimorfismo (ii)
interface
IAdaptadorCalculoImpuestos
+getImpuestos(in Venta) : List of LneaImpuesto
AdaptadorMasterImpuestos
AdaptadorImpuestosPro
102
Polimorfismo (iii)
Contraindicaciones
Beneficios
103
Los diseos orientados a objetos algunas veces se caracterizan por implementar como clases
software las representaciones de los conceptos del dominio del mundo real para reducir el salto
en la representacin
Sin embargo, hay muchas veces en las que la asignacin de responsabilidades slo a las clases
software de la capa de dominio da lugar a problemas en cuanto a cohesin y acoplamiento
pobres, lo cual provoca un potencial de reutilizacin bajo
Solucin
104
Contraindicaciones
Beneficios
105
Indireccin (i)
Solucin
Beneficio
106
Indireccin (ii)
v : Venta
:AdaptadorMasterImpuestos
Comunicacin
va Java RMI
t:=getTotal()
impuestos := getImpuestos(v)
calculaImpuestos()
<<system>> : MasterImpuestos
107
Solucin
108
Contraindicaciones
Beneficios
109
110
Servidor
ServidorAbstracto
<<Abstracta>>
Servidor
Diseo que cumple el principio abierto/cerrado
Universidad de Salamanca Departamento de Informtica y Automtica
111
112
Rectangulo
Cuadrado
113
114
115
Conclusiones al ejemplo
116
Contexto
Aplicabilidad
117
Problema (i)
118
Problema (ii)
Por ejemplo, la API JDBC permite a las aplicaciones J2EE utilizar sentencias
SQL, que son el mtodo estndar para acceder a tablas relacionales
Sin embargo, incluso dentro de un entorno relacional, la sintaxis y formatos
actuales de las sentencias SQL podran variar dependiendo de la propia base
de datos en particular
119
Problema (iii)
Los mecanismos de acceso, las APIs soportadas y sus caractersticas varan entre
los diferentes tipos de almacenamientos persistentes, como bases de datos
relacionales, bases de datos orientadas a objetos, ficheros planos...
Las aplicaciones que necesitan acceder a datos de un sistema legado o un sistema
dispar (como un mainframe o un servicio B2B) se ven obligados a utilizar APIs que
podran ser propietarias
Dichas fuentes de datos dispares ofrecen retos a la aplicacin y potencialmente
pueden crear una dependencia directa entre el cdigo de la aplicacin y el cdigo
de acceso a los datos
Pero introducir el cdigo de conectividad y de acceso a datos dentro de estos
componentes genera un fuerte acoplamiento entre los componentes y la
implementacin de la fuente de datos
Dichas dependencias de cdigo en los componentes hace difcil y tedioso migrar la
aplicacin de un tipo de fuente de datos a otro. Cuando cambia la fuente de datos,
tambin deben cambiar los componentes para manejar el nuevo tipo de fuente de
datos
120
Causas
Otras fuentes de datos podran tener APIS que no son estndares y/o propietarias.
Estas APIs y sus capacidades tambin varan dependiendo del tipo de
almacenamiento - bases de datos relacionales, bases de datos orientadas a objetos,
documentos XML, ficheros planos... Hay una falta de APIs uniformes para corregir
los requisitos de acceso a sistemas tan dispares
121
Solucin
122
Estructura
123
Participantes y
responsabilidades (i)
124
Una fuente de datos podra ser una base de datos como una base de datos
relacional u objetual, un repositorio XML, un fichero plano...
125
Ejemplo bsico
126
FactoriaDAO
FactoriaSgbdDAO
crea
crea
SgbdDAO1
SgbdDAO2
interfaz
DAO1
interfaz
DAO2
127
128
129
FactoriaSgbdDAO
FactoriaXmlDAO
crea
crea
SgbdDAO1
SgbdDAO2
crea
XmlDAO1
FactoriaOdbDAO
crea
crea
XmlDAO2
interfaz
DAO1
OdbDAO1
crea
OdbDAO2
interfaz
DAO2
130
131
132
Consecuencias
Beneficios
Riesgos
Ms complejidad
133
134
Aportaciones principales
Modelo de diseo
Modelo de despliegue
stos no forman parte directamente de los objetos del dominio problema, pero
representan la vista del usuario de los objetos semnticos
Se sigue la mxima de que los subsistemas de una capa slo pueden referenciar
subsistemas de un nivel igual o inferior
Estos principios y estilos cuando se codifican con un formato estructurado, que describe
el problema y la solucin, y se le asigna un nombre, se denominan patrones
135
6. Cuestiones y ejercicios
136
Cuestiones y ejercicios
137
7. Lecturas complementarias
138
Lecturas complementarias
Ambler, S. W. The Design of a Robust Persistence Layer for Relational Databases. White
paper. Ronin International. http://www.ambysoft.com/persistenceLayer.pdf. November 2000
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M. Pattern Oriented
Software Architecture: A System of Patterns. John Wiley & Sons, 1996
Buena gua para introducirse en los principios del diseo orientado a objetos
139
8. Referencias
140
Referencias (i)
[Aklecha, 1999] Aklecha, V. Object-Oriented Frameworks Using C++ and CORBA Gold
Book. Coriolis Technology Press, 1999
[Alexander, 1979] Alexander, C. The Timeless Way of Building. The Oxford University
Press, 1979
[Appleton, 2000] Appleton, B. Patterns and Software: Essential Concepts and
Terminology. http://www.cmcrossroads.com/bradapp/docs/patterns-intro.html [ltima vez
visitado, 14-12-2007]. February 2000
[Booch, 1994] Booch, G. Object Oriented Analysis and Design with Applications. 2nd Edition.
The Benjamin/Cummings Publishing Company, 1994
[Buschmann et al., 1996] Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P.,
Stal, M. Pattern Oriented Software Architecture: A System of Patterns. John Wiley & Sons,
1996
[Coplien, 2007] Coplien, J. O. A Pattern Definition - Software Patterns.
http://hillside.net/patterns/definition.html [ltima vez visitado, 14-12-2007]. 2007
[Fowler, 1996] Fowler, M. Analysis Patterns: Reusable Object Models. Object Technology
Series. Addison-Wesley, 1996
[Gamma et al., 1995] Gamma, E., Helm, R., Johnson, R., Vlissides, J. Design Patterns.
Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995
Universidad de Salamanca Departamento de Informtica y Automtica
141
Referencias (ii)
[Jacobson et al., 1997] Jacobson, I., Griss, M., Jonsson, P. Software Reuse:
Architecture, Process and Organization for Business Success. Addison-Wesley, 1997
[Jacobson et al., 1999] Jacobson, I., Booch, G., Rumbaugh, J. The Unified Software
Development Process. Object Technology Series. Addison-Wesley, 1999
[Larman, 2002] Larman, C. Applying UML and Patterns: An Introduction to Object-Oriented
Analysis and Design and the Unified Process. 2nd Ed. Prentice Hall, 2002
[Liskov, 1987] Liskov, B. Data Abstraction and Hierarchy. In Addedum to Proceedings of
OOPSLA87. Pages 17-35. ACM Press, 1987
[Martin, 1996] Martin, R. C. The Dependency Inversion Principle. The C++ Report, Vol. 8,
May 1996
[Meyer, 1997] Meyer, B. Object Oriented Software Construction. 2nd Edition. Prentice Hall,
1997
[Monarchi y Puhr, 1992] Monarchi, D. E., Puhr, G. I. A Research Typology for ObjectOriented Analysis and Design. Communications of the ACM, 35(9):35-47. September 1992
[OMG, 2003] OMG. OMG Unified Modeling Language Specification. Version 1.5. Object
Management Group Inc. Document formal/03-03-01. March 2003.
http://www.omg.org/docs/formal/03-03-01.pdf [ltima vez visitado, 16-12-2007]
[Reenskaug et al., 1996] Reenskaug, T., Wold, P., Lehne, O. A. Working with Objects.
The OOram Software Engineering Method. Manning Publications Co./Prentice Hall, 1996
142
Referencias (iii)
[Shaw y Garlan, 1996] Shaw, M., Garlan, D. Software Architecture: Perspectives on an
Emerging Discipline. Prentice-Hall, 1996
[Sommerville, 2005] Sommerville, I. Ingeniera del Software. 7 Edicin, Addison-Wesley.
2005
[Sun, 2002] Sun Microsystems. Core J2EE Patterns - Data Access Object. Sun Developer
Network, 2002. http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html.
[ltima vez visitado, 14-12-2007]
143