Académique Documents
Professionnel Documents
Culture Documents
INGENIERIA
CORPORACIN
UNIVERSITARIA REMINGTON
DIRECCIN PEDAGGICA
Ingeniera
de Sistemas
CRDITOS
AUTOR
Edilberto Restrepo Restrepo
Magister en Educacin Superior de la Pontificia Universidad Javeriana, Especialista en Gerencia de Proyectos de la
Universidad del Tolima, Administrador de Empresas y Tecnlogo en Administracin de Redes de Datos. Con 18 Aos de
experiencia como docente y Diseador de asignaturas en las reas de Lgica y Programacin, Mantenimiento de
computadores, Administracin de Redes de Datos,
asesora de proyectos informticos y productivos de
emprendimiento. En instituciones como CESDE, Universidad San Martin, Universidad Cooperativa de Colombia,
Comfenalco, Comfama y Microempresas de Antioquia. Actualmente coordinador de la Unidad de formacin en la
corporacin Universitaria Remington. Con ponencias sobre procesos evaluativos, Cesde 2005, Aprendizajes
colaborativos, Remington, 2011. Actualmente miembro del grupo de investigacin AVICUR.
mgedirre@gmail.com
formaciondocente.coordinador01@remington.edu.co
Nota: el autor certific (de manera verbal o escrita) No haber incurrido en fraude cientfico, plagio o vicios de autora; en
caso contrario eximi de toda responsabilidad a la Corporacin Universitaria Remington, y se declar como el nico
responsable.
RESPONSABLES
Dr.Jorge Mauricio Seplveda Castao
jsepulveda@remington.edu.co
Director de la Facultad de Ciencias Bsicas e Ingeniera
Toms Vsquez Uribe
Director Educacin a Distancia y Virtual
tvasquez @remington.edu.co
Anglica Ricaurte Avendao
Coordinadora de Remington Virtual (CUR-Virtual)
rricaurte@remington.edu.co
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
GRUPO DE APOYO
Personal de la Unidad de Remington Virtual (CUR-Virtual)
EDICIN Y MONTAJE
Primera versin. Febrero de 2011.Segunda versin Marzo 2012
Derechos Reservados
Esta obra es publicada bajo la licencia CreativeCommons. Reconocimiento-No Comercial-Compartir Igual 2.5 Colombia.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
TABLA DE CONTENIDO
1. MAPA DE LA ASIGNATURA ................................................................................................. 9
2. EL MODELAMIENTO UNIFICADO ....................................................................................... 10
2.1. Relacin de conceptos ............................................................................................................ 11
2.2. Prueba Inicial ........................................................................................................................... 11
2.3. Tcnicas comunes y Avanzadas de modelado con UML. ........................................................ 12
2.4. Reglas del Negocio .................................................................................................................. 25
2.5. Principios de desarrollo de aplicaciones Web......................................................................... 26
2.6. La Arquitectura en el Proceso Unificado de Desarrollo .......................................................... 29
3. LA ARQUITECTURA DE SOFTWARE. ................................................................................... 37
3.1. Relacin de conceptos ............................................................................................................ 37
3.2. Prueba Inicial ........................................................................................................................... 38
3.3. Modelos de arquitectura de software. ................................................................................... 38
3.4. Enfoques arquitectnicos de software ................................................................................... 47
3.5. Modelado Arquitectnico en UML 2.0 .................................................................................... 51
4. DEFINICIONES Y PATRONES DE SOFTWARE. ...................................................................... 63
4.1. Prueba Inicial ........................................................................................................................... 64
4.2. Definiciones Bsicas ................................................................................................................ 64
4.3. Catlogos de Patrones ........................................................................................................... 68
5. FRAMEWORKS Y EL MDELO MDA (MODEL DRIVEN ARCHITECTURE) ............................. 101
5.1. Relacin de conceptos .......................................................................................................... 101
5.2. Prueba Inicial ......................................................................................................................... 102
5.3. Definicin y Estructura del Frameworks .............................................................................. 102
5.4. MDA (Model Driven Architecture) ........................................................................................ 106
6. ASPECTOS ...................................................................................................................... 121
6.1. Relacin de conceptos .......................................................................................................... 121
6.2. Prueba Inicial ......................................................................................................................... 121
6.3. Definiciones Bsicas .............................................................................................................. 122
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
1. MAPA DE LA ASIGNATURA
ARQUITECTURA DEL SOFTWARE
OBJETIVO GENERAL
Apropiar en el estudiante conceptos y prcticas de Arquitectura y Diseo de Software aplicables a
escenarios de la vida real.
OBJETIVOS ESPECFICOS
Dar a conocer las generalidades y conceptos bsicos de UML y el desarrollo de aplicaciones para la
infraestructura de un proyecto web.
Presentar de manera prctica las diferentes metodologas y buenas prcticas para documentacin y
evaluacin de arquitecturas de software
Apropiar el uso de catlogos de elementos reusables en el diseo de sistemas software
Identificar las caractersticas de un framework para Web y apropiarse del modelado bajo el enfoque
MDA.
Aprender a definir los conceptos entre Aspectos y un lenguaje orientado por objetos.
UNIDAD 1
Mediante
la
conceptualizacin
y aplicacin en
situaciones
problema,
el
estudiante podr
apropiarse de los
procesos
de
modelamientos
UML.
UNIDAD 2
El
estudiante
podr plantear
propuestas
metodolgicas
para
la
documentacin
de las prcticas
productivas de
desarrollo
de
software.
UNIDAD 3
Mediante
el
abordaje
y
aplicacin de los
diferentes
patrones
de
elementos
reusables
el
estudiante
obtendr criterios
de aplicacin en
contextos
diversos
UNIDAD 4
Identificando las
caractersticas de
los frameworks, y
modelado MDA, el
estudiante
plantear solucin
a
necesidades
reales
de
desarrollo
de
software
UNIDAD 5
Conociendo
los
conceptos sobre la
programacin
orientada a aspectos, el
estudiante
podr
determinar
las
situaciones
en
las
cuales
sea
ms
pertinente
su
aplicacin
en el
desarrollo de software
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
2. EL MODELAMIENTO UNIFICADO
OBJETIVO GENERAL
Dar a conocer las generalidades y conceptos de UML y el desarrollo de aplicaciones Web para la
infraestructura de un proyecto de software.
OBJETIVOS ESPECFICOS
Evidenciar las tcnicas comunes y avanzadas del Modelamiento UML
grficamente la arquitectura de un proyecto web.
mostrando
Determinar de forma adecuada las polticas o reglas del negocio que rigen a una empresa
para hacerlo escalable en el tiempo.
Argumentar de forma clara y precisa cada una de las etapas empleadas en el Proceso
Unificado de Desarrollo.
Proponer modelamiento de negocios adecuado y apropiado a cualquier escenario de la
vida real.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Valor etiquetado:Un valor etiquetado ampla las propiedades de un elemento UML, permitiendo
crear nueva informacin en lo que respecta a la especificacin del elemento. Grficamente, un
valor etiquetado se representa como una cadena encerrada entre llaves y colocada bajo el nombre
de otro elemento.
Restriccin: Una restriccin ampla la semntica de un elemento UML, permitiendo aadir nuevas
reglas, o modificar las existentes. Grficamente, una restriccin se representa como una cadena
encerrada entre llaves y colocada junto al elemento asociado o, conectada a el(los) elemento(s)
con relacin de dependencia. Como una alternativa, puedes incluir una restriccin en una nota.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
cualitativa radica en que la primera logra sus conclusiones a travs de la correlacin entre
variables cuantificadas, y as poder realizar generalizaciones y producir datos objetivos, mientras
que la segunda estudia la relacin entre las variables obtenidas a partir de la observacin en
contextos estructurales y situacionales.
Ahora miremos qu es un modelo: Un modelo es una estructura conceptual que sugiere un marco
de ideas para un conjunto de descripciones que de otra manera no podran ser sistematizadas. De
esta manera, su estructura es diferente de la que se supone existe en el conjunto de fenmenos
de la naturaleza. Para el caso de arquitectura de software usamos el Modelo de UML.
A continuacin veamos la Historia del UML
La notacin UML se deriva y unifica las tres metodologas de anlisis y diseo Orientada a Objeto
ms extendidas:
Metodologa de Grady Booch para la descripcin de conjuntos de objetos y sus relaciones.
Tcnica de modelado orientada a objetos de James Rumbaugh (OMT: Object-Modeling
Technique).
Aproximacin de Ivar Jacobson (OOSE: Object- Oriented Software Engineering) mediante
la metodologa de casos de uso (use case).
El desarrollo de UML comenz a finales de 1994 cuando Grady Booch y Jim Rumbaugh de Rational
Software Corporation empezaron a unificar sus mtodos. A finales de 1995, Ivar Jacobson y su
compaa Objectory se incorporaron a Rational en su unificacin, aportando el mtodo OOSE.
De las tres metodologas de partida, las de Booch y Rumbaugh pueden ser descritas como
centradas en objetos, ya que sus aproximaciones se enfocan hacia el modelado de los objetos que
componen el sistema, su relacin y colaboracin. Por otro lado, la metodologa de Jacobson es
ms centrada a usuario, ya que todo en su mtodo se deriva de los escenarios de uso. UML se ha
ido fomentando y aceptando como estndar desde el OMG que es tambin el origen de CORBA, el
estndar lder en la industria para la programacin de objetos distribuidos. En 1997 UML 1.1 fue
aprobada por la OMG convirtindose en la notacin estndar de facto para el anlisis y el diseo
orientado a objetos.
Qu es UML?
UML es el primer mtodo en publicar una meta-modelo en su propia notacin, incluyendo la
notacin para la mayora de la informacin de requisitos, anlisis y diseo. Se trata pues de una
meta-modelo auto-referencial, cualquier lenguaje de modelado de propsito general debera ser
capaz de modelarse a s mismo.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
UML es un lenguaje estndar que sirve para escribir los planos del software, puede utilizarse para
visualizar, especificar, construir y documentar todos los artefactos que componen un sistema con
gran cantidad de software. UML puede usarse para modelar desde sistemas de informacin hasta
aplicaciones distribuidas basadas en Web, pasando por sistemas empotrados de tiempo real.
UML es solamente un lenguaje por lo que es slo una parte de un mtodo de desarrollo software,
es independiente del proceso aunque para que sea optimo debe usarse en un proceso dirigido por
casos de uso, centrado en la arquitectura, iterativo e incremental.
UML es un lenguaje por que proporciona un vocabulario y las reglas para utilizarlo, adems es un
lenguaje de modelado lo que significa que el vocabulario y las reglas se utilizan para la
representacin conceptual y fsica del sistema.
UML es un lenguaje que nos ayuda a interpretar grandes sistemas mediante grficos o mediante
texto obteniendo modelos explcitos que ayudan a la comunicacin durante el desarrollo ya que al
ser estndar, los modelos podrn ser interpretados por personas que no participaron en su diseo
(e incluso por herramientas) sin ninguna ambigedad. En este contexto, UML sirve para
especificar, modelos concretos, no ambiguos y completos.
Debido a su estandarizacin y su definicin completa no ambigua, y aunque no sea un lenguaje de
programacin, UML se puede conectar de manera directa a lenguajes de programacin como Java,
C++ o Visual Basic, esta correspondencia permite lo que se denomina como ingeniera directa
(obtener el cdigo fuente partiendo de los modelos) pero adems es posible reconstruir un
modelo en UML partiendo de la implementacin, o sea, la ingeniera inversa.
UML proporciona la capacidad de modelar actividades de planificacin de proyectos y de sus
versiones, expresar requisitos y las pruebas sobre el sistema, representar todos sus detalles as
como la propia arquitectura. Mediante estas capacidades se obtiene una documentacin que es
vlida durante todo el ciclo de vida de un proyecto.
El lenguaje UML se compone de tres elementos bsicos, los bloques de construccin, las reglas y
algunos mecanismos comunes. Estos elementos interaccionan entre s para dar a UML el carcter
de completitud y no-ambigedad que antes comentbamos.
Los bloques de construccin se dividen en tres partes:
Elementos, que son las abstracciones de primer nivel.
Relaciones, que unen a los elementos entre s.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Por ltimo, los mecanismos de extensibilidad que UML proporciona sirven para evitar posibles
problemas que puedan surgir debido a la necesidad de poder representar ciertos matices, por esta
razn UML incluye los estereotipos, para poder extender el vocabulario con nuevos bloques de
construccin, los valores etiquetados, para extender las propiedades un bloque, y las restricciones,
para extender la semntica. De esta manera UML es un lenguaje estndar abierto-cerrado
siendo posible extender el lenguaje de manera controlada.
Elementos Estructurales
Los elementos estructurales en UML, es su mayora, son las partes estticas del modelo y
representan cosas que son conceptuales o materiales.
Clases
Una clase es una descripcin de un conjunto de objetos que comparten los mismos atributos,
operaciones, relaciones y semntica. Una clase implementa una o ms interfaces. Grficamente se
representa como un rectngulo que incluye su nombre, sus atributos y sus operaciones.
Clase
Interfaz: Una interfaz es una coleccin de operaciones que especifican un servicio de una
determinada clase o componente. Una interfaz describe el comportamiento visible externamente
de ese elemento, puede mostrar el comportamiento completo o slo una parte del mismo. Una
interfaz describe un conjunto de especificaciones de operaciones (o sea su signatura) pero nunca
su implementacin. Se representa con un crculo, y rara vez se encuentra aislada sino que ms
bien conectada a la clase o componente que realiza.
Interfaz
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Colaboracin: Define una interaccin y es una sociedad de roles y otros elementos que colaboran
para proporcionar un comportamiento cooperativo mayor que la suma de los comportamientos
de sus elementos. Las colaboraciones tienen una dimensin tanto estructural como de
comportamiento. Una misma clase puede participar en diferentes colaboraciones. Las
colaboraciones representan la implementacin de patrones que forman un sistema. Se representa
mediante una elipse con borde discontinuo.
Colaboracin
Casos de Uso: Un caso de uso es la descripcin de un conjunto de acciones que un sistema ejecuta
y que produce un determinado resultado que es de inters para un actor particular. Un caso de
uso se utiliza para organizar los aspectos del comportamiento en un modelo. Un caso de uso es
realizado por una colaboracin.
Caso de uso
Clase Activa: Es una clase cuyos objetos tienen uno o ms procesos o hilos de ejecucin por lo y
tanto pueden dar lugar a actividades de control. Una clase activa es igual que una clase, excepto
que sus objetos representan elementos cuyo comportamiento es concurrente con otros
elementos. Se representa igual que una clase, pero con lneas ms gruesas
Clase activa
Nodos: Un nodo es un elemento fsico que existe en tiempo de ejecucin y representa un recurso
Computacional que, por lo general, dispone de algo de memoria y, con frecuencia, de capacidad
de procesamiento. Un conjunto de componentes puede residir en un nodo.
Nodo
Diagramas de Casos de Usos: Muestran un conjunto de casos de uso y actores (tipo especial de
clases) y sus relaciones. Cubren la vista esttica de los casos de uso y son especialmente
importantes para el modelado y organizacin del comportamiento.
Casos de Uso
Diagramas de Secuencia y de Colaboracin: Tanto los diagramas de secuencia como los diagramas
de colaboracin son un tipo de diagramas de interaccin. Constan de un conjunto de objetos y sus
relaciones, incluyendo los mensajes que se pueden enviar unos objetos a otros. Cubren la vista
dinmica del sistema. Los diagramas de secuencia enfatizan el ordenamiento temporal de los
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
mensajes mientras que los diagramas de colaboracin muestran la organizacin estructural de los
objetos que envan y reciben mensajes. Los diagramas de secuencia se pueden convertir en
diagramas de colaboracin sin prdida de informacin, lo mismo ocurren en sentido opuesto.
Secuencia
Colaboracin
Diagramas de Estados: Muestran una mquina de estados compuesta por estados, transiciones,
eventos y actividades. Estos diagramas cubren la vista dinmica de un sistema y son muy
importantes a la hora de modelar el comportamiento de una interfaz, clase o colaboracin.
Estados
Diagramas de Actividades: Son un tipo especial de diagramas de estados que se centra en mostrar
el flujo de actividades dentro de un sistema. Los diagramas de actividades cubren la parte
dinmica de un sistema y se utilizan para modelar el funcionamiento de un sistema resaltando el
flujo de control entre objetos.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Actividades
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Diagrama de Despliegue
Veamos un ejemplo de UML con casos de uso
Primero que todo debemos describir el problema sobre el cual vamos a aplicar el Modelo UML
Para mover una caja, el jugador debe colocarse al lado y empujarla. Si la casilla hacia la
que est empujando la caja est libre la caja se mover.
Si el jugador se queda bloqueado, es decir, no puede terminar el nivel, puede reiniciar el
nivel perdiendo una vida.
Cuando el jugador pierde todas sus vidas la partida termina.
Tambin debemos mirar que solicitudes le hacen al sistema para que podamos dar comienzo a
la representacin del Modelo UML.
El sistema debe permitir comenzar una nueva partida y terminarla.
El sistema debe permitir mover al jugador y a las cajas y reiniciar el nivel cuando el usuario
lo solicite.
El sistema deber almacenar varios niveles y cambiar de nivel cuando el usuario complete
el nivel actual
A continuacin miremos los casos de uso resultantes de acuerdo a la descripcin del problema y
los requerimientos que nos hace el usuario dueo del sistema:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
2.4.
Esta capa es la encargada de procesar y validar las reglas del negocio, acta como un servidor para
la capa de presentacin y traslada las solicitudes de esta a la capa de datos actuando como cliente
de la misma. As mismo tambin funciona de la misma manera de la forma inversa.
Los servicios de negocios son el puente entre un usuario y los servicios de datos. Responden a
peticiones del usuario (u otros servicios de negocios) para ejecutar una tarea de este tipo.
Cumplen con esto aplicando procedimientos formales y reglas de negocio a los datos relevantes.
Cuando los datos necesarios residen en un servidor de bases de datos, garantizan los servicios de
datos indispensables para cumplir con la tarea de negocios o aplicar su regla. Esto asla al usuario
de la interaccin directa con la base de datos.
Una tarea de negocios es una operacin definida por los requerimientos de la aplicacin, como
introducir una orden de compra o imprimir una lista de clientes. Las reglas de negocio (business
rules) son polticas que controlan el flujo de las tareas.
Como las reglas de negocio tienden a cambiar ms frecuentemente que las tareas especficas de
negocios a las que dan soporte, son candidatos ideales para encapsularlas en componentes que
estn lgicamente separados de la lgica de la aplicacin en s.
Para ayudar a los desarrolladores a construir la lgica de negocio basado en componentes
Windows DNA incluye un conjunto muy poderoso de servicios que se encargan de la comunicacin
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
en una aplicacin de tres capas. Estos servicios estn altamente integrados unos con otros, bajo un
sistema operativo, y expuestos de forma nica a travs de COM.
El nivel de servicios de negocios es responsable de:
Recibir la entrada del nivel de presentacin
Interactuar con los servicios de datos para ejecutar las operaciones de negocios para los
que la aplicacin fue diseada a automatizar (por ejemplo, la preparacin de impuestos
por ingresos, el procesamiento de rdenes y as sucesivamente).
Enviar el resultado procesado al nivel de presentacin. Algunos de los servicios DNA para
la capa de negocios son los siguientes:
Servicios Web a travs de Microsoft Internet Information Server (IIS)
Transacciones y Servicios de Componentes, Microsoft Transaction Server (MTS)
Servicios Asncronos, Microsoft Message Queue Server (MSMQ).
Server-side Scripting, via Active Server Pages (ASP).
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
accesible, como por ejemplo mapas, buscadores internos, formas de redactar simples y al grano,
etc. Simplicidad es la palabra clave.
El proyecto debe ser esttico y atractivo visualmente.
Antes he dicho que la usabilidad, orientada al usuario, es uno de los aspectos ms importantes al
momento de desarrollar un proyecto para Internet. Pues bien, podra decir que la esttica tambin
juega un papel importante, dicha esttica, que personalmente prefiero minimalista, creo es la
clave en la credibilidad de lo que escribimos, tambin logra que nuestros usuarios/as se sientan
cmodos utilizando lo que ponemos a su disposicin. Concretamente hablando de desarrollo de
sitios web, por ejemplo, he visto cmo contenidos interesantes -algunos publicados por
catedrticos o expertos en alguna materia- quedan sepultados bajo un diseo muy pobre, que ni
siquiera haba razn para ser tan deficiente respecto a esttica. Tambin por el contrario, he visto
unos superdiseos grficos, tantos, que sepultan el verdadero contenido. Por tanto te recomiendo
atencin a la esttica, simplicidad y equilibrio en este aspecto.
El proyecto debe transmitir emociones, segn su naturaleza.
No podemos evitarlo, somos humanos que tenemos emociones y, sea mediante la palabra al
redactar o mediante la ayuda de grficos, transmitir un mensaje que contenga alguna emocin,
acorde a la naturaleza del mensaje, ser muy efectivo, por muchsimo. La industria de la publicidad
es experta en ello, pero tambin escritores que, mediante la palabra, nos transportan a otros
mundos.
El proyecto debe tener herramientas y contenido actuales disponibles y estos deben mantenerse
constantemente actualizadas.
As es. Cuando comenc a desarrollar proyectos para Internet, a disear mis propias pginas,
Internet ya llevaba varios aos de andadura, y en esa poca las pginas se hacan una por una,
eran estticas y sus contenidos lentamente actualizados. Hoy, hasta se puede ver televisin,
vdeos, escuchar radio, msica y mil cosas ms. En estos tiempos se empieza a poner de moda la
llamada Web 2.0 (como las redes sociales), donde los usuarios -y no el desarrollador- son quienes
tienen la ltima palabra en lo que hacen por Internet, etc. Con tanto cambio, dnde quedarn
tus contenidos o tu proyectos si nunca actualizas?
El proyecto debe permitir, en la medida de lo posible, interactividad entre el receptor, el
mensaje y la fuente, completando el ciclo de la comunicacin.
La comunicacin, para que sea completa, debe ser un ciclo entre la fuente, el mensaje y el
receptor que interactan simultneamente. Cmo te sentiras hablando con alguien que no te
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
contesta, ni siquiera con un gesto? En Internet es prcticamente igual. Por tanto, es importante
que t, como desarrollador, permitas que tus usuarios puedan interactuar contigo de alguna
manera, enviar feedback, sea mediante formularios, mensajes electrnicos, foros, etc, etc. As
tambin t podrs ir adquiriendo nuevas ideas que te podran servir para implementar
comprendes?
El proyecto debe tener enfoque global, es decir, que no debe ser un fin en s mismo, sino un
medio para completar otros objetivos mayores, a la vez que mantiene consistencia con estos.
Siempre que desarrolles un proyecto para Internet, ten mucho cuidado de que el proyecto no sea
el fin, sino solo una herramienta ms para alcanzar algn objetivo. De otra manera, puede que
termines gastando tiempo y recursos en otra cosa que no sea tu verdadero objetivo. Recuerda, el
proyecto es solo una herramienta o medio ms. Mantn la visin equilibrada y no descuides otras
herramientas o medios que tambin podran serte tiles.
El proceso unificado de desarrollo de software usa UML como podemos visualizar en la siguiente
figura
El proceso unificado de desarrollo de software est organizado de la siguiente manera:
a) Guiado por casos de uso.
b) Centrado en la arquitectura.
c) Ciclo de vida iterativo e incremental.
a) Guiado por casos de uso:
Los sistemas se crean para dar servicio a los usuarios
Qu REQUISITOS se necesitan
Un CASO de USO es una pieza de FUNCIONALIDAD de un sistema que le proporciona a algn
USUARIO un RESULTADO o VALOR.
Todos juntos constituyen el modelo de casos de uso
Funcionabilidad completa
Para todos los usuarios
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
a) Centrado en la arquitectura:
La arquitectura de un sistema software es un extracto de los
modelos del sistema es decir una vista de cada mdulo.
Que da una idea de la forma que tiene el sistema completo
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
3. LA ARQUITECTURA DE SOFTWARE.
OBJETIVO GENERAL
Presentar de manera prctica las diferentes metodologas y buenas prcticas para documentacin
y evaluacin de arquitecturas de software
OBJETIVOS ESPECFICOS
Identificar y comprender los diversos aspectos del software utilizando distintos modelos o
vistas.
Describir y disear una arquitectura basados en la estructura sintctica y semntica del
ADL.
Estructurar todo el anlisis del proyecto por medio de estructuras que nos provee UML
2.0.
Crear Arquitecturas de servicios web por medio SOA para garantizar una comunicacin
rpida y transparente entre aplicaciones.
Desarrollar implementaciones sobre computacin mvil aplicando arquitecturas de alta
escalabilidad.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Arquitectura centrada en los datos: Como parte central de esta arquitectura aparece un almacn
de datos, el cual es accedido de manera frecuente por otros componentes que actualizan, aaden,
borran o modifican dichos almacenes.
Repositorio pasivo: El cliente software accede a los datos independientemente de cualquier
cambio en los datos o a las acciones de otros clientes software.
Repositorio activo (pizarra): El repositorio enva informacin a los clientes cuando los datos de su
inters cambian, siendo por tanto un ente activo.
Arquitectura centradas en datos proporcionan integridad, es decir, los componentes existentes
pueden cambiar y pueden aadirse nuevos componentes a la arquitectura sin que afecte a otros
clientes. A su vez los datos pueden ser pasados entre cliente a travs de mecanismos que
coordinen dicha transferencia de informacin. Miremos a continuacin una figura que nos
visualiza de manera ms general lo que acabamos de expresar.
Componentes cliente ejecutan procesos independientemente
Arquitectura centrada en los flujos de datos: Se basa en el patrn pipe and filter (tuberas y
filtros). Este consta de un conjunto de componentes denominados filtros conectados entre s
por tuberas que transmiten datos desde un componente al siguiente.
Cada filtro trabaja de manera independiente de los componentes que se encuentran situados
antes o despus de ella. Se disean de tal modo que esperan un conjunto de datos en un
determinado formato y obtiene como resultado otros datos de salida en un formato especfico.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Arquitectura llamada y respuesta (call and return): Permite a los diseadores software conseguir
estructuras de programas relativamente fciles de modificar y escalar.
Podemos encontrar diferentes estilos de este tipo:
Programa principal/subprograma: Descompone las funciones en una jerarqua de control donde el
programa principal invoca a los otros programas subordinados, los cuales pueden a su vez invocar
otros.
Llamada de procedimiento remoto: Los componentes de la arquitectura son distribuidos entre
diferentes ordenadores de la red.
Veamos a continuacin una figura de esta arquitectura:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Arquitectura orientada a objetos: Los componentes del sistema encapsulan datos y operaciones
que deben utilizarse para manipular dichos datos. La comunicacin y coordinacin entre
componentes se realiza mediante envo de mensajes.
En esencia es un sistema parecido al anterior, donde se enfatiza el empaquetamiento entre datos
y operaciones que permiten manipular y acceder a dichos datos.
Arquitectura en capas: Se definen un conjunto de niveles o capas, cada nivel interno que se
atraviesa se aproxima ms al nivel del conjunto de instrucciones mquina.
Sistemas en capas puros: Cada capa slo puede comunicarse con las vecinas. Esta solucin aunque
puede ser menos eficiente en algunos casos, facilita la portabilidad de los diseos. A continuacin
visualizamos una figura:
Una vez que el arquitecto de software, tras conocer el requerimiento, se decide a delinear su
estrategia y a articular los patrones que se le ofrecen hoy en profusin, se supone que debera
expresar las caractersticas de su sistema, o en otras palabras, modelarlo, aplicando una
convencin grfica o algn lenguaje avanzado de alto nivel de abstraccin.
A esta altura del desarrollo de la arquitectura de software, podra pensarse que hay abundancia de
herramientas de modelado que facilitan la especificacin de desarrollos basados en principios
arquitectnicos, que dichas herramientas han sido consensuadas y estandarizadas hace tiempo y
que son de propsito general, adaptables a soluciones de cualquier mercado vertical y a cualquier
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Semntica
Restricciones (constraints)
Evolucin
Propiedades no funcionales
Conectores
Interfaz
Tipos
Semntica
Restricciones
Evolucin
Propiedades no funcionales
Configuraciones arquitectnicas
Comprensibilidad
Composicionalidad
Heterogeneidad
Restricciones
Refinamiento y trazabilidad
Escalabilidad
Evolucin
Dinamismo
Propiedades no funcionales
Soporte de herramientas
Especificacin activa
Mltiples vistas
Anlisis
Refinamiento
Generacin de cdigo
Dinamismo
Ntese, en todo caso, que no se trata tanto de aspectos definitorios del concepto de ADL, sino de
criterios para la evaluacin de los ADLs existentes, o sea de un marco de referencia para la
clasificacin y comparacin de los ADLs.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Evolucin. Los ADLs deberan soportar procesos de evolucin permitiendo derivar subtipos a partir
de los componentes e implementando refinamiento de sus rasgos.
Slo unos pocos lo hacen efectivamente, dependiendo para ello de lenguajes que ya no son los de
diseo arquitectnico sino los de programacin.
Propiedades no funcionales. La especificacin de estas propiedades es necesaria para simular la
conducta de runtime, analizar la conducta de los componentes, imponer restricciones, mapear
implementaciones sobre procesadores determinados, etctera.
3.4.
Antes de enfrentarnos a tomar la decisin de una arquitectura creo que debemos tener en cuenta
cualidades como: Performance, Availability, Security, Modifiability
Tambin se debe analizar muy bien atributos como:
El sistema debe ser robusto
El sistema debe ser modificable
El sistema debe ser seguro
El sistema debe tener un desempeo aceptable
A continuacin vamos a centrarnos en 2 enfoques arquitectnicos SAAM y ATAM
SAAM - Software Architecture Analysis Method
Propsito, Contexto y escenarios, Roles, Mtodo de anlisis, Fortalezas, Debilidades
Propsito: Basado en escenarios, Foco modificabilidad, Evaluar una arquitectura o evaluar y
comparar varias
Contexto y escenarios: Atributos de calidad complejos y amorfos para evaluarse simplemente
Dependientes del contexto: Escenario. Interaccin entre un interesado y el sistema
Un escenario directo es el que puede satisfacerse sin la necesidad de modificaciones en la
arquitectura.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Los escenarios indirectos son de especial inters para SAAM, pues son los que permiten medir el
grado en el que una arquitectura puede ajustarse a los cambios de evolucin que son importantes
para los involucrados en el desarrollo.
4. Evaluacin individual de los escenarios indirectos
Para cada escenario indirecto, se listan los cambios necesarios sobre la arquitectura, y se calcula
su costo.
Una modificacin sobre la arquitectura significa que debe introducirse un nuevo componente o
conector, o que alguno de los existentes requiere cambios en su especificacin.
5. Evaluacin de la interaccin entre escenarios
Cuando dos o ms escenarios indirectos proponen cambios sobre un mismo componente, se dice
que interactan sobre ese componente.
Es necesario evaluar este hecho, puesto que la interaccin de componentes semnticamente no
relacionados revela que los componentes de la arquitectura efectan funciones semnticamente
distintas.
De forma similar, puede verificarse si la arquitectura se encuentra documentada a un nivel
correcto de descomposicin estructural.
6. Creacin de la evaluacin global
Debe asignrsele un peso a cada escenario, en trminos de su importancia relativa al xito del
sistema.
Esta asignacin de peso suele hacerse con base en las metas del negocio que cada escenario
soporta. En el caso de la evaluacin de mltiples arquitecturas, la asignacin de pesos puede ser
utilizada para la determinacin de una escala general.
Fortalezas:
Los interesados comprenden con facilidad las arquitecturas evaluadas.
La documentacin es mejorada.
El esfuerzo y el costo de los cambios pueden ser estimados con anticipacin.
Analoga con el concepto de bajo acoplamiento y alta cohesin.
Debilidades:
La generacin de escenarios est basada en la visin de los interesados.
No provee una mtrica clara sobre la calidad de la arquitectura Evaluada.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Presentacin.
Investigacin y Anlisis.
Pruebas
Informes
Grupo 1 Presentacin:
1. Presentacin del ATAM: El lder de evaluacin describe el mtodo a los participantes, trata de
establecer las expectativas y responde las preguntas propuestas.
2. Presentacin de las metas del negocio: Se realiza la descripcin de las metas del negocio que
motivan el esfuerzo, y aclara que se persiguen objetivos de tipo arquitectnico.
3. Presentacin de la arquitectura: El arquitecto describe la arquitectura, enfocndose en cmo
sta cumple con los objetivos del negocio.
Grupo 2 Investigacin y Anlisis:
4. Identificacin de los enfoques arquitectnicos: Estos elementos son detectados, pero no
analizados.
5. Generacin del UtilityTree: Se priorizan los atributos de calidad que engloban la utilidad
del sistema (desempeo, disponibilidad, seguridad, modificabilidad, usabilidad, etc.),
especificados en forma de escenarios.
Se anotan los estmulos y respuestas, as como se establece la prioridad entre ellos.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
6. Anlisis de los enfoques arquitectnicos: Con base en los resultados del establecimiento de
prioridades del paso anterior, se analizan los elementos del paso 4. En este paso se identifican
riesgos arquitectnicos, puntos de sensibilidad y puntos de balance.
Grupo 3 Pruebas:
7. Lluvia de ideas y establecimiento de prioridad de escenarios: Con la colaboracin de todos los
involucrados, se complementa el conjunto de escenarios.
8. Anlisis de los enfoques arquitectnicos: Este paso repite las actividades del paso 6, haciendo
uso de los resultados del paso 7. Los escenarios son considerados como casos de prueba para
confirmar el anlisis realizado hasta el momento.
Grupo 4 Reporte:
9. Presentacin de los resultados: Basado en la informacin recolectada a lo largo de la evaluacin
del ATAM, se presentan los hallazgos a los participantes.
El comportamiento de una clase es delegada a sus partes y la clase misma debe contener su
comportamiento. (Mquina de estado, d. actividad, d. interaccin )
El contenedor describe el comportamiento de cmo crear las partes.
ACTUANDO SOBRE LAS ACCIONES
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
montar nuestra infraestructura tecnolgica. Para poder continuar explicando la definicin, urge
definir previamente qu es un servicio. Primeramente, antes de continuar con la exposicin, os
planteo la siguiente pregunta: Cul es la duracin media de los componentes que forman parte
de la infraestructura tecnolgica de una empresa?
Una respuesta aproximada podra ser:
Las innovaciones tecnolgicas y productos nuevos aparecen aproximadamente cada 5
aos.
Nuestras aplicaciones empresariales tienen una duracin de unos 8 a 10 aos
La lgica de negocio o los procesos de negocio permanecen en vigor unos 17 o 18 aos.
Los datos (o la estructura de los datos) perduran aproximadamente 25 aos.
En base a esas respuestas, podemos intuir que a la hora de elegir como organizar nuestra
infraestructura tecnolgica, si nuestro objetivo es obtener la mxima reusabilidad y permanencia
en el tiempo, debemos adoptar decisiones que vayan orientadas hacia la independencia
tecnolgica y al acercamiento al proceso de negocio y los datos.
Entonces, Qu es un servicio?
Un servicio lo podramos definir como la resolucin de una necesidad de negocio, que debe ser
autocontenida (es decir que no contenga la resolucin de otra necesidad en el mismo) y que est
constituido por tres partes bien diferenciadas:
1. Un contrato: que define la especificacin del propsito del servicio, as como restricciones
en su uso, calidad que debe ofrecer etc..., pero sin especificar nada acerca de la tecnologa
subyacente.
2. Un interfaz fsico donde los clientes que quieren usar el servicio pueden invocarlo (podra
ser una URL)
3. Una implementacin: un servicio se apoya en alguna tecnologa para realizar lo que se
expone en su contrato. La implementacin de un servicio podr consistir en la interaccin
de distintos artefactos (EJBs, CORBA, Bases de datos ... ), y estar compuesta de:
1. Una lgica de negocio
2. Una serie de datos.
La idea que presenta SOA es construir nuestra arquitectura en base a un gran conjunto de
servicios independientes, localizables e invocables de manera transparente y agnsticos de la
tecnologa. Estos servicios que podramos denominar bsicos, permitirn construir servicios de
mayor valor aadido mediante la composicin o el engranaje de estos servicios bsicos.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
ACTORES DE SOA?
Una vez que hemos visto lo que es un servicio, os voy a presentar los dems actores que deberan
participar en una arquitectura SOA:
1. Frontales de aplicacin. Estos sern no tanto partes funcionales de una arquitectura SOA sino
aquellos que se van a beneficiar de ella, es decir sern aquellos que quieran hacer uso de los
servicios ofrecidos dentro de la arquitectura. Frontales de aplicacin podrn ser tanto
aplicaciones WEB, CRMs, ERPs..., as como procesos Batch que se ejecutan de manera
nocturna, etc...
2. Servicios.
3. Repositorio de servicios. Un repositorio de servicios ser algn componente de mi
arquitectura que permitir tanto a los frontales de aplicacin como a otros servicios, descubrir
que servicios existen, cul es su interfaz y donde se encuentran fsicamente. Los objetivos de
este componente sern:
4. Bus de servicios (ESB). Este ser un componente que permitir a todos los participantes o
actores de la arquitectura SOA comunicarse entre ellos. Este componente fundamental en la
arquitectura SOA debe ofrecer:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Por mi parte nada ms, espero que os haya servido para entender un poco de que va esto del SOA.
Arquitecturas para computacin mvil
A principios del nuevo milenio las tecnologas mviles, obviamente, no estaban tan evolucionadas
como en la actualidad. Entre otros, se tenan los celulares por un lado, los busca personas por
otro, y las PDA (Asistentes Personales Digitales), a las que tena acceso el autor eran las de familia
PALM, el color que predominaba en la pantalla de estos dispositivos era el verde. Para la
comunicacin se dispona de un accesorio denominado modem; este accesorio se utilizaba para
enviar y recibir datos por medio de la lnea telefnica.
Emulador Palm OS, principios de los 2000
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Toma del Pedido, almacenado en el Dispositivo mvil y Envi posterior por medio de la lnea
telefnica.
Arquitectura de una aplicacin mvil
Existen varios escenarios en los cuales se puede establecer la arquitectura de aplicaciones mviles;
aqu se abordaran dos de ellos.
En el primero participan tres elementos:
La aplicacin central
El proceso de sincronizacin
La aplicacin en el dispositivo mvil
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Escenario nmero1.
En el segundo escenario participan dos elementos:
El dispositivo mvil
La aplicacin central
Ejercicio de autoevaluacin
De acuerdo a las siguientes figuras desarrolle una aplicacin con los elementos descritos en esta
unidad teniendo en cuenta una muy buena arquitectura de software, como lenguaje de
programacin puede utilizar Java y su herramienta NetBeans u otra.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
tienen esquemas y estructuras de solucin que usan numerosas veces en funcin del contexto del
problema. Este es el sentido cabal de la expresin "tener un mente bien amueblada", y no el
significado de tener una notable inteligencia. Estos esquemas y estructuras son conceptos
reusables y nos permiten no reinventar la rueda. Un buen ingeniero reutiliza un esquema de
solucin ante problemas similares.
El concepto de "patrn de diseo" que tenemos en Ingeniera del Software se ha tomado prestado
de la arquitectura. En 1977 se publica el libro "A Pattern Language: Towns/Building/Construction",
de Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksdahl-King y
Shlomo Angel, Oxford University Press. Contiene numerosos patrones con una notacin especfica
de Alexander.
Alexander comenta que Cada patrn describe un problema que ocurre una y otra vez en nuestro
entorno, para describir despus el ncleo de la solucin a ese problema, de tal manera que esa
solucin pueda ser usada ms de un milln de veces sin hacerlo siquiera dos veces de la misma
forma. El patrn es un esquema de solucin que se aplica a un tipo de problema, esta aplicacin
del patrn no es mecnica, sino que requiere de adaptacin y matices. Por ello, dice Alexander
que los numerosos usos de un patrn no se repiten dos veces de la misma forma.
La idea de patrones de diseo estaba "en el aire", la prueba es que numerosos diseadores se
dirigieron a aplicar las ideas de Alexander a su contexto. El catlogo ms famoso de patrones se
encuentra en Design Patterns: Elements of Reusable Object-Oriented Software, de Erich
Gamma, Richard Helm, Ralph Johnson y John Vlissides, 1995, Addison-Wesley, tambin conocido
como el libro GOF (Gang-Of-Four).
Siguiendo el libro de GOF los patrones se clasifican segn el proposito para el que han sido
definidos:
Creacionales: solucionan problemas de creacin de instancias. Nos ayudan a encapsular y
abstraer dicha creacin.
Estructurales: solucionan problemas de composicin (agregacin) de clases y objetos.
De Comportamiento: soluciones respecto a la interaccin y responsabilidades entre clases
y objetos, as como los algoritmos que encapsulan.
Segn el mbito se clasifican en patrones de clase y de objeto:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Creacin
Estructural
De Conducta
Interprete
Plantilla
Clase
Objeto
Cadena
de
Responsabilidad,
Adaptador (objetos),
Comando
(orden),
Iterador,
Fbrica,
Constructor, Puente, Composicin,
Intermediario, Observador, Estado,
Prototipo, Singleton
Decorador, Fachada,
Estrategia,
Visitante,
Flyweight
Memoria
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Un ejemplo: supongamos que un objeto debe ordenar una estructura de datos. Puede delegar en
otro objeto el mtodo de comparacin. En Java tenemos un caso: la clase Collections tiene el
mtodo esttico sort(); desde este mtodo se delega en un comparador para establecer el orden:
Collections tiene el mtodo sort() con un algoritmo de ordenacin.
Comparador tiene el mtodo compare() que implementa el orden de comparacin.
import java.util.Comparator;
public class comparador implements Comparator {
public int compare( Object o1, Object o2 ) {
if ( ((ente)o1).obt_id() < ((ente)o2).obt_id() )
return 1;
if ( ((ente)o1).obt_id() > ((ente)o2).obt_id() )
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
return 1;
return 0;
}
}
Patrn "compuesto"
Crear jerarquas parte/todo de tal forma que los clientes manejan a los objetos primitivos y
compuestos de forma uniforme. Por ejemplo, crear figuras que son una composicin de otras
figuras simples. Otro ejemplo puede ser un activo financiero (un fondo de inversin) que es un
compuesto de otros activos financieros simples (valores o acciones).
Los clientes pueden tratar objetos primitivos y compuestos de modo uniforme y es fcil aadir
nuevos tipos de componentes.
Implementacin
Vamos a ver un ejemplo con un applet AWT en donde existen diferentes subclases de Component:
Componentes simples como TextField, List, Button, etc.
Componentes compuestos como Container, del que hereda Panel.
Veamos los atributos de la clase:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Patrn "intermediario"
Supongamos una ventana con numerosos componentes grficos (widgets) que tienen fuertes
dependencias entre si. Por ejemplo, reglas del tipo "si el campo de edicin E2 est relleno,
entonces inhabilito el botn B1 y el campo de edicin E3".
El mediador o intermediario encapsula la forma en que interaccionan un conjunto de objetos
("colegas"). Es el especialista que define las interdependencias entre ellos. Favorece un bajo
acoplamiento, ya que evita que los objetos se referencien unos a otros de forma explcita. Permite
variar la interaccin sin tocar los colegas, por tanto favorece la reutilizacin.
Ventajas:
Evita crear subclases
Desacopla a los colegas
Simplifica los protocolos entre las clases
Abstrae el cmo cooperan los objetos
Centraliza el control en el mediador: clase difcil de mantener
Para la implementacin:
No hay necesidad de definir una clase abstracta Mediator si los colegas trabajan con un
nico mediador
Los colegas deben comunicarse con el mediador cuando un evento de inters ocurre, esta
comunicacin puede hacerse con un Observer o un interfaz de notificacin (ViewManager
de Smalltalk-V).
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Cada colega tiene una referencia al mediador y de esta manera le pueden informar de los
cambios realizados. Por ejemplo, una lista informa al mediador del cambio de item
seleccionado; el mediador puede responder solicitando el texto seleccionado en la lista y
mandndolo a un campo de texto. Ver el siguiente diagrama:
Patrn "iterador"
Supongamos que tenemos un contenedor (por ejemplo, un vector) y queremos tener una forma
de acceder a los elementos sin mostrar los detalles. Un objeto contenedor debe permitir una
forma de recorrer sus elementos sin exponer su estructura interna, es decir, separar el
contenedor de la forma de recorrer sus elementos. Con este patrn tenemos la ventaja de
simplificar la interfaz de un contenedor, ya que no contiene los mtodos de recorrerlo.
Un ejemplo tpico lo tenemos en Java. El cliente solicita al contenedor un iterador. A continuacin
el iterador dirige la forma de recorrer el contenedor:
Vector vec = new Vector();
vec.add( new String( "hola ) );
vec.add( new String( "adios ) );
Iterator it = vec.iterator();
while ( it.hasNext() )
System.out.println( (String) it.next() );
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Patrn "observador"
Definir una dependencia de 1:n de forma que cuando el objeto 1 cambie su estado, los n objetos
sean avisados y se actualicen automticamente.
Supongamos que tenemos un o unos objetos dependientes de otro. Por ejemplo, supongamos que
una ventana o applet depende de los componentes grficos que reciben eventos (clic en botn,
etc.). Otro caso, tpico del patrn, es tener diversas vistas de una fuente de datos, de tal forma que
si cambia la fuente, entonces las vistas se actualicen automticamente.
El observador no es un mediador entre los sujetos (objetos que cambian de estado) y los objetos
dependientes, ya que el mismo es un objeto dependiente. El observador recibe la orden de
actualizarse por parte del sujeto "dominante"
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Una extensin natural de este patrn es hacer mezcla del patrn mediador y del patrn
observador, de tal forma que los avisos de cambios que mandamos al observador sean notificados
a otros objetos dependientes. El observador recibe un mensaje de cambio de estado y notifica a
los objetos dependientes que se actualicen. Dicho de otra forma, cuando las relaciones de
dependencia entre Subject y Observer son complicadas conviene encapsular la semntica de
actualizacin en una clase ManejadorCambio(Mediador).
Implementacin
Es posible que un observer est ligado a ms de un subject: la operacin update tendr como
argumento el subject.Quin dispara la notificacin?
Mtodos set en la clase Subject
Clientes de la clase Subject
Asegurarse de notificar siendo el estado de Subject consistente. Al registrar un observar es posible
asociarle el evento sobre el que quiere ser notificado:
attach(Observer obs, Evento interes);
Ejemplo de implementacin en Java
Java 1.1 introdujo un nuevo modelo de eventos para GUI basado en el patrn Observer.
Componentes GUI que pueden generar eventos son llamados fuentes de eventos (event
sources).
Objetos que desean ser notificados de eventos GUI son llamados oyentes de eventos
(event listeners). Estos oyentes en Java trabajan como observers de nuestro patrn.
Los listeners deben registrarse en las fuentes (componentes GUI).
El orden sera "componente_GUI --->Listener ---> Objeto_dependiente (un applet, por ejemplo)
Un ejemplo en Java, extraido de una clase applet, donde al botn le aadimos un listener:
boton_crear.addActionListener(new ap_robot_boton_actionAdapter(this));
Lo primero es que el listener (ap_robot_boton_actionAdapter) se registra en el componente GUI
(en este caso boton_crear de la clase Button) por medio de una llamada a addItemListener(). En
segundo lugar, cuando se produce un evento el componente lo notifica al listener y este manda
un mensaje al applet (en nuestro caso a boton_crear_actionPerformed(ActionEvent e), para que
realice las acciones oportunas:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
void boton_crear_actionPerformed(ActionEvent e) {
...
}
Obsrvese que el evento queda encapsulado por la clase ItemEvent.
Patrn "Modelo-Vista-Controlador"
Para el diseo de aplicaciones con sofisticados interfaces se utiliza el patrn de diseo ModeloVista-Controlador. La lgica de un interfaz de usuario cambia con ms frecuencia que los
almacenes de datos y la lgica de negocio. Si realizamos un diseo ofuscado, es decir, un pastiche
que mezcle los componentes de interfaz y de negocio, entonces la consecuencia ser que, cuando
necesitemos cambiar el interfaz, tendremos que modificar trabajosamente los componentes de
negocio. Mayor trabajo y ms riesgo de error.
Se trata de realizar un diseo que desacople la vista del modelo, con la finalidad de mejorar la
reusabilidad. De esta forma las modificaciones en las vistas impactan en menor medida en la lgica
de negocio o de datos.
Elementos del patrn:
Modelo: datos y reglas de negocio
Vista: muestra la informacin del modelo al usuario
Controlador: gestiona las entradas del usuario
Un modelo puede tener diversas vistas, cada una con su correspondiente controlador. Un ejemplo
clsico es el de la informacin de una base de datos, que se puede presentar de diversas formas:
diagrama de tarta, de barras, tabular, etc. Veamos cada componente:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Pueden dar el servicio de "Actualizacin ()", para que sea invocado por el controlador o por el
modelo (cuando es un modelo activo que informa de los cambios en los datos producidos por
otros agentes).
Un ejemplo de MVC con un modelo pasivo (aquel que no notifica cambios en los datos) es la
navegacin web, que responde a las entradas del usuario, pero no detecta los cambios en datos
del servidor.
El diagrama de secuencia:
Pasos:
1. El usuario introduce el evento.
2. El Controlador recibe el evento y lo traduce en una peticin al Modelo (aunque tambin
puede llamar directamente a la vista).
3. El modelo (si es necesario) llama a la vista para su actualizacin.
4. Para cumplir con la actualizacin la Vista puede solicitar datos al Modelo.
5. El Controlador recibe el control.
Bien, pero esto cmo se implementa? Existe una pequea dificultad: la mayor parte de las
herramientas de desarrollo incorporan en las clases de la vista gran parte o todo el procesamiento
de eventos. Con lo que el controlador queda semioculto dentro de la vista. A pesar de ello,
podemos acercarnos bastante al patrn. En el siguiente ejemplo en Java, el objeto vista es un
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Applet AWT. El controlador (controlador.java) puede gestionar el clic en un botn, de tal forma
que recoge datos por medio del Modelo (model.cargar_texto(..)) y los manda a la Vista (el applet)
para su actualizacin (vista.mostrar_texto( )):
/****************************************************************
Responde al click en botn "abrir"
La respuesta al evento es hacer que se abra en la vista
el archivo correspondiente a la referencia seleccionada en el combo box
****************************************************************/
void b_abrir_actionPerformed(ActionEvent e) {
String texto_archivo = model.cargar_texto( indice_ref ); // Obtener texto de archivo
/*** Si la carga de archivo es ok, lo muestro. Si no, aviso de error ****/
if (texto_archivo != null) {
vista.mostrar_texto(texto_archivo);
// Mostrar texto
vista.mostrar_aviso("Carga de " + path + " completada.");
}
else
vista.mostrar_aviso("Error en la carga de " + path);
}
Patrn "Factoria"
En realidad son una familia de patrones:
Factoria simple: una clase que crea objetos de otras clases. No delega en otras subclases y
sus mtodos pueden ser estticos.
Factory Method: Se define una interface para crear objetos, como en el Abstract Factory,
pero se delega a las subclases implementar la creacin en concreto
Abstract Factory: Nos da una interface para crear objetos de alguna familia, sin especificar
la clase en concreto
Los dos ltimos estn incluidos en el catlogo del GoF
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Estos patrones entran en la categora de patrones de creacin [GoF95], la cual comparten con
otros patrones tales como el Singleton, Builder y Prototype [GoF95]. Tienen la responsabilidad de
crear instancias de objetos de otras clases. Tienen adems la responsabilidad y el conocimiento
necesario para encapsular la forma en que se crean determinados tipos de objetos en una
aplicacin. Existen diferentes patrones de tipo Factory.
Factorial simple
Como en todas las factorias, tenemos las clases instanciadas (JuegoDelDado y JuegoDeMoneda)
que se relacionan con una clase madre (extends) o con un interfaz lgico (implements). En nuestro
caso usamos interfaz.
A continuacin puede ver un sencillo ejemplo en el que cada juego implementa el mtodo lanzar
(): el juego del dado muestra un nmero aleatorio del 1 al 6 y el de la moneda 'Cara' o 'Cruz':
public interface Juego {
void lanzar();
}
import java.util.Random;
public class JuegoDelDado implements Juego {
public void lanzar() {
Random ran = new Random();
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
// Aleatorio de 1 a
6
System.out.println( resul );
}
}
import java.util.Random;
public class JuegoDeMoneda implements Juego {
public void lanzar() {
Random ran = new Random();
if ( ran.nextBoolean() )
System.out.println( "Cara" );
else
System.out.println( "Cruz" );
}
}
if ( nombreJuego.equals("JuegoDelDado") )
return new JuegoDelDado();
else {
if ( nombreJuego.equals("JuegoDeMoneda") )
return new JuegoDeMoneda();
else
return null;
}
}
}
Lo esencial de la clase Factoria es que oculta a la clase cliente (Inicio.java) la complejidad de crear
un objeto. Encapsula la creacion de la instancia.
La clase cliente (Inicio.java) llama al mtodo esttico getJuego() de la factora, para que le
devuelva el juego sealado en el argumento. Introduce todos los juegos en un vector y a
continuacin le dice a cada juego que juegue. El mtodo jugar() es un ejemplo de patrn
'estrategia': el mtodo contiene un comportamiento genrico (en nuestro ejemplo realiza dos
lanzamientos para cada juego). El comportamiento especfico se define en funcin del objeto que
se pasa como argumento. La parte que vara es el argumento, esta es la estrategia.
public class Inicio {
public static void main(String[] args) {
//// Crea un vector de juegos
Vector vec = new Vector();
vec.add(FactoriaJuegos.getJuego( "JuegoDelDado") );
vec.add(FactoriaJuegos.getJuego( "JuegoDeMoneda") );
vec.add(FactoriaJuegos.getJuego( "JuegoDelDado") );
//// A cada juego del vector le dice que juegue
for ( int i = 0; i < vec.size(); i++ ) {
Juego j = (Juego) vec.get(i);
if ( j != null )
jugar( j );
else
System.out.println("Juego no encontrado");
}
}
/*****************************************************************
* Lanza dos veces
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
****************************************************************/
public static void jugar( Juego juego ) {
juego.lanzar();
juego.lanzar();
}
}
Al recorrer el vector de juegos vemos un ejemplo tpico de polimorfismo: a cada referencia del
tipo Juego (usamos el mismo interfaz) le decimos que juegue, pero cada juego implementa su
forma especfica de jugar (ms en concreto de lanzar). Es la idea de polimorfismo: un interfaz y
mltiples implementaciones.
Aunque la forma ms abstracta y profesional es usar en la factoria newInstance() en funcin de
los valores de un archivo .properties:
import java.io.*;
public class FactoriaJuegos {
// true=Carga de Properties desde archivo
private static boolean propiedadesCargadas = false;
// Propiedades
private static java.util.Properties prop = new java.util.Properties();
**********************************************************
Crea y devuelve el juego
*****************************************************************
public static Juego getJuego( String nombreJuego ) {
try {
//// La clase se consigue leyendo del archivo properties
Class clase = Class.forName( getClase( nombreJuego ) );
//// Creo una instancia
return (Juego) clase.newInstance();
}
catch (ClassNotFoundException e) { // No existe la clase
e.printStackTrace();
return null;
}
catch (Exception e) {// No puedo instanciar la clase
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
e.printStackTrace();
return null;
}
}
**********************************************************
* Lee un archivo properties donde se indica la clase que debe ser instanciada
***********************************************************
private static String getClase( String nombrePropiedad ) {
try {
// Carga de propiedades desde archivo
if ( !propiedadesCargadas ) {
FileInputStream
archivo
=
new
FileInputStream(
"src/factoriaJuegosNewInstanceProperties/propiedades.properties" );
prop.load( archivo
); // Cargo propiedades
propiedadesCargadas = true;
}
// Lectura de propiedad String nombreClase = prop.getProperty( nombrePropiedad, "");
if ( nombreClase.length() > 0)
return nombreClase;
return null;
}
catch ( FileNotFoundException e) { // No se puede encontrar archivo
e.printStackTrace();
return null;
}
catch ( IOException e) { // Falla load()
e.printStackTrace();
return null;
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
En el archivo properties tenemos:
dado=factoriaJuegosNewInstanceProperties.JuegoDelDado
moneda=factoriaJuegosNewInstanceProperties.JuegoDeMoneda
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Algunas caractersticas:
No es imprescindible, pero en proyectos de cierta complejidad resulta util que el DAO
implemente un interfaz. De esta forma los objetos cliente tienen una forma unificada de
acceder a los DAO.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
El DAO accede a la fuente de datos y la encapsula para los objetos clientes. Entendiendo
que oculta tanto la fuente como el modo (JDBC) de acceder a ella.
El TransferObject encapsula una unidad de informacin de la fuente de datos. El ejemplo
sencillo es entenderlo como un "bean de tabla", es decir, como una representacin de una
tabla de la base de datos, por lo que representamos las columnas de la tabla como
atributos del TransferObject. El DAO crea un TransferObject (o una coleccin de ellos)
como consecuencia de una transaccin contra la fuente de datos. Por ejemplo, una
consulta sobre ventas debe crear tantos objetos (TransferObject) de la clase Venta como
registros de la consulta; el DAO devolver la coleccin de TrasnferObject de la clase Venta
al objeto Cliente. Tambin puede ocurrir que el objeto Cliente mande un TransferObject
para parametrizar una consulta o actualizacin de datos por parte del DAO.
En el siguiente grfico se muestran las interacciones entre los elementos del patrn. En este
grfico el TransferObject se denomina ValueObject. Puede observarse las llamadas que recibe y
genera el DAO para una consulta y actualizacin de datos:
1.
2.
3.
4.
5.
6.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
//// Me indica si los objetos corresponden al mismo registro de base de datos (identidad de clave
primaria)
public boolean esIgual( Bean bean );
}
A continuacin escribimos los bean de tabla que implementan el interface anterior, empezamos
por la calse Cliente.java:
***************************************************************** * Bean de tabla
"cliente"
*****************************************************************
public class Cliente implements Bean {
private String codigo = null;
private String nombre = null;
private String ape1 = null;
private String ape2 = null;
private Integer edad = null;
private Vector ventas = null;
public Cliente( String codigo, String nombre, String ape1, String ape2, Integer edad ) {
setCodigo( codigo );
setNombre( nombre );
setApe1( ape1 );
setApe2( ape2 );
setEdad( edad );
}
public Cliente(){}
public String getApe1() {
return ape1; }
public void setApe1(String ape1) { this.ape1 = ape1; }
... Otros mtodos set/get ...
// Me indica si los objetos corresponden al mismo registro (identidad de clave primaria)
public boolean esIgual( Bean bean ) {
Cliente cli = (Cliente) bean;
if ( cli.getCodigo().equals( this.getCodigo()) )
return true;
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
return false;
}
public String toString() {
return (codigo + ", " + nombre + ", " + ape1 + ", " + ape2 + ", " + edad);
}
}
En Cliente.java se puede observar que uno de los atributos es un vector de ventas. La utilidad de
este Vector es representar en modo "objetos" una relacin 1:N de tablas (cliente y ventas) de la
base de datos. Seguimos con la clase Venta.java:
*****************************************************************
* Bean de tabla "venta"
*****************************************************************
public class Venta implements Bean {
Integer idVenta = null;
String codigo = null;
Float precio = null;
Float coste = null;
Cliente cliente = null;
public Venta(Integer idVenta, String codigo, Float precio, Float coste ) {
setIdVenta( idVenta );
setCodigo( codigo );
setPrecio( precio );
setCoste( coste );
}
public Venta() {}
public Float getCoste() {
return coste; }
public void setCoste(Float coste) {this.coste = coste; }
... Otros mtodos set/get ...
//// Me indica si los objetos corresponden al mismo registro (identidad de clave primaria)
public boolean esIgual( Bean bean ) {
Venta ven = (Venta) bean;
if ( ven.getIdVenta().intValue() == this.getIdVenta().intValue() )
return true;
return false;
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
}
public String toString() {
return (idVenta + ", " + codigo + ", " + precio + ", " + coste );
}
}
Ejemplo de cdigo: los DAOs
Hemos empezado por lo ms sencillo, representar las tablas de nuestra base de datos. Dicho de
otra forma proyectar el modelo relacional sobre un modelo de objetos. Ahora tenemos que
implementar los DAOs, los componentes que encapsulan el acceso a la fuente de datos (la base de
datos). Empezamos creando un interface (InterfaceDAO.java) que representa el comportamiento
genrico de cualquier DAO:
package dao.accesoDatos;
import java.sql.SQLException;
import java.util.Vector;
import dao.bean.Bean;
public interface InterfaceDAO {
public int insert( Bean bean ) throws SQLException;
public int update( Bean bean, String condicion ) throws SQLException;
public Bean find( String codigo ) throws SQLException;
public Vector select( String condicion ) throws SQLException;
public int delete(String condicion) throws SQLException;
}
A continuacin y a modo de resumen, una parte de DAOCliente.java. Se puede ver que
implementa el interface anterior y que adems hereda de DAOGeneral, una clase que contiene
servicios comunes, como por ejemplo getConexion(), cerrarConexion(Connection), etc:
public class DAOCliente extends DAOGeneral implements InterfaceDAO {
/*****************************************************************
* Inserta cliente (argumento bean)
*****************************************************************/
public int insert( Bean bean ) throws SQLException {
int numFilas = 0;
Cliente cli = (Cliente) bean;
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
return vecClientes;
}
En la siguiente figura se muestra la relacin de las clases anteriores:
/accesoDatos
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
e.printStackTrace();
}
return nombreClase;
}
}
Esta clase lee un archivo properties donde asociamos una clave con una clase DAO. Su contenido
es sencillo:
cliente=dao.accesoDatos.DAOCliente
venta=dao.accesoDatos.DAOVenta
El mtodo getClase() recibe un String (la vlave: cliente o venta). Si no se ha cargado el archivo
properties en el atributo 'Properties prop', entonces lee archivo y carga las propiedades en prop.
getClase() devuelve el valor de la clave, por ejemplo, si recibe 'cliente' devuelve
'dao.accesoDatos.DAOCliente'. El mtodo getDAO() llama a getClase() para saber la clase DAO que
debe instanciar.
Un aspecto importante es lo que devuelve getDAO(): el tipo InterfaceDAO. Al devolver el interface,
estamos actuando con bstante generalidad: instanciamos objetos concretos, un DAOCliente.java
o un DAOVenta.java, pero lo esencial es que usamos como tipo de referencia el interface que
ambas clases implementan. La factoria hace su trabajo de modo genrico o abstracto, ya que
aunque tenga 15 clases de DAOs diferentes que instanciar, devuelve un tipo genrico, es decir,
devuelve el interface que implementan todos los DAOs.
Ejemplo de cdigo: usando lo anterior
Vamos a ver un sencillo ejemplo de capa cliente, es decir, la capa (sea presentacin o de negocio)
que debe usar lo anterior (factoria, beans y DAOs). Este sencillo ejemplo destaca una de las
ventajas de trabajar con los interface: obtenemos abstraccin (y resuabilidad). Veamos el ejemplo:
condicion = Teclado.getCadena("Condicin:"); // Obtengo condicin por teclado
InterfaceDAO dao = FactoriaDAO.getDAO( nombreTabla )
// Obtengo el DAO de la
factoria
Vector vec = dao.select( condicion );
//
La
Select
devuelve Vector
Iterator it = vec.iterator();
while (it.hasNext()) {
bean = (Bean) it.next();
System.out.println( bean.toString());
}
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
La variable nombreTabla es un sencillo String que contiene la clave del archivo properties. De esta
forma la factoria sabe la clase DAO que debe instanciar. Lo primero que interesa destacar es que el
DAO instanciado y devuelto por la factoria lo manejamos por medio del tipo interface
(InterfaceDAO): sea la que sea la clase instanciada usamos un tipo genrico (el interface que
implemnetan los DAO). Esto nos permite actuar con un alto grado de generalidad: para cualquier
tipo de DAO le mandamos el mismo mensaje: dao.select( condicion ). No nos vemos obligados a
realizar un cdigo para DAOCliente, otro para DAOVenta, etc; sino que con el mismo cdigo
manejamos diversos DAOs. Este es un ejemplo de patrn estrategia: el cdigo es el mismo
(unificado) y la estrategia (el comportamiento especfico) depende de los objetos (DAOs)
utilizados.
Un ejemplo final de abstraccin es que los elementos del vector los manejamos con el tipo
interface Bean (que implementan las clases 'bean'). Esto permite que les mande a todos el mismo
mensaje, bean.toString(), y que cada bean (sea de la clase que sea) implemente su
comportamiento especfico.
Otro ejemplo de aplicacin del patrn DAO con servlets. En este ejemplo las clases DAO han
cambiado ligeramente para soportar un login y password diferentes en cada conexin.
Nota final
Evidentemente los DAOs deben implementar los mtodos del interface (InterfaceDAO) que
declaran. Pero adems pueden implementar otros mtodos que no estn en el interfaz (lo cual
resta generalidad). En nuestro ejemplo hemos introducido un mtodo que nos permite hacer un
select de clientes con sus ventas correspondientes. Antes hemos visto que uno de los atributos del
'bean' Cliente.java es un vector de ventas:
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
*****************************************************************/
public Vector selectConVentas( String condicion ) throws SQLException {
Vector vecClientes = new Vector();
Venta ven;
Cliente cliAnterior = null, cliActual = null;
Connection con = getConexion();
//// Si la condicin es null o vacia, no hay parte WHERE
String orden = "SELECT c.codigo, c.nombre, c.ape1, c.ape2, c.edad, v.id_venta, v.precio,
v.coste FROM cliente c, venta v " +
" WHERE c.codigo = v.codigo " + (condicion==null ||
condicion.length()==0 ? "":"AND " + condicion) + " ORDER BY c.ape1, c.ape2, c.nombre";
Statement sentencia = con.createStatement();
ResultSet rs = sentencia.executeQuery( orden );
//// Recorremos el ResultSet y guardamos los clientes en un vector. Cada cliente tiene su vector de
ventas
while (rs.next()) {
//// Obtengo cliente y venta
cliActual = new Cliente(rs.getString("c.codigo"), rs.getString("c.nombre"),
rs.getString( "c.ape1" ), rs.getString( "c.ape2" ), (rs.getString( "c.edad" )==null ? null : new
Integer(rs.getInt( "c.edad" ))));
ven = new Venta( rs.getInt("v.id_venta"), rs.getString("c.codigo"),
rs.getFloat("v.precio"), rs.getFloat("v.coste"));
//// SI ES NUEVO: Si es el primer cliente (cliAnterior==null) o es distinto que el anterior ...
if ( cliAnterior == null || !cliActual.esIgual( cliAnterior ) ) {
//// El anterior es el actual
cliAnterior = cliActual;
//// Inicializo vector de ventas del cliente actual y aado venta
cliActual.setVentas( new Vector());
cliActual.addVenta( ven );
//// Aado cliente actual al vector
vecClientes.add( cliActual );
}
//// SI NO ES NUEVO CLIENTE: simplemente aado venta al cliente
else { //// Aado venta al cliente actual
cliAnterior.addVenta( ven );
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
}
}
sentencia.close();
cerrarConexion( con );
return vecClientes;
}
Patrn "Proxy"
El proxy es til si queremos aadir o modificar comportamiento de una clase (la llamaremos
"objeto real") sin tener que modificarla. El proxy es un intermediario que implica un
recubrimiento del objeto real.
Un ejemplo
Tenemos un interface para escribir y leer de un soporte:
public interface Soporte {
public void escribir( String mensaje );
public String leer( int numLinea );
public Vector leer();
}
Adems tenemos una clase, denominada Pizarra, que implementa el interface Soporte y que en su
mtodo escribir(String mensaje) simplemente aade el argumento a un Vector. El mtodo leer(int
numLinea) devuelve la cadena cuyo orden dentro del vector es el argumento. El cliente (main)
pueda insertar (escribir) y obtener (leer) cadenas.
import java.util.*;
public class Pizarra implements Soporte {
private Vector mensajes = new Vector();
public void escribir(String mensaje) {
mensajes.add(mensaje);
}
public String leer(int numLinea) {
return mensajes.get(numLinea);
}
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
1 En un lugar de La Mancha
2 de cuyo nombre no quiero acordarme
Otras caractersticas
El proxy y el objeto real comparten interface. El proxy debe tener una referencia al objeto real.
Ya hemos dicho que el proxy es un intermediario que implica un recubrimiento del objeto real
para aadir o modificar comportamiento. Especialmente apropiado cuando estamos en
situaciones en las que tenemos que elegir entre las operaciones del objeto real y las del proxy.
Aunque en el ejemplo anterior no hacemos instancia del objeto real ni permitimos ningn acceso
directo a l, podramos tener dos tipos de acceso: uno directo al objeto real y otro al proxy.
soporte piz = Factoria.getPizarra("Pizarra");
Soporte proxy = new ProxyDePizarra(piz);
piz.escribir("XYZ"); // NO aade n de lnea
proxy.escribir("QQQ"); // SI aade n de lnea
Ejercicio de autoevaluacin
Disee el anlisis del ejercicio de la Unidad1 utilizando Patrones de Software de tal manera que el
objetivo final sea la base fundamental para una posterior implementacin en cualquier lenguaje de
programacin orientado por aspectos.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
5. Un ejemplo: Struts
El framwrok open-source Struts ha sido desarrollado en Java mediante servlets y est basado en el
Modelo 2, el cual es una variante del patrn MVC.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Struts ofrece su propio componente controlador y proporciona integracin con otras tecnologas
para implementar el modelo, mediante tecnologas de acceso a datos como JDBC o Hibernate, y la
vista, mediante JSP, Velocity o XSLT.
Struts ofrece un sistema de tuberas que permite la comunicacin entre el modelo que contiene
los datos y las vistas que ofrecen estos datos a los usuarios y reciben sus rdenes.
6. URLs.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Aproximacin MDA
La arquitectura dirigida por modelos (MDA) [Mellor 2004] es una aproximacin para el desarrollo
de software definido por el OMG. La clave de MDA es la importancia que le da a los modelos en el
los procesos de desarrollo.
Como se puede observar en la Figura 2-2 ([Kleppe 2005]), que el ciclo de vida de los desarrollos
MDA, no es muy diferente del visto en la seccin anterior. En realidad, el enfoque de Kleppe se
centra en las fases de desarrollo, pero en segn el proceso unificado de desarrollo [Jacobson
2001], el ciclo de vida del desarrollo de software se basa en una combinacin de incrementos de
estas fases. Como ya se ha comentado, se pueden cometer errores en cada una de estas, por lo
que es conveniente detectarlos de forma temprana para evitar costes y desviaciones posteriores.
Para facilitar esta tarea, lo ideal es abordar los diferentes componentes de un sistema de
informacin (o artefactos) de forma incremental, de manera que en cada incremento se van a
realizar todas las fases del ciclo de vida en mayor o menor medida. Cada incremento, ser como
un pequeo proyecto en el que se ejecutarn las fases de requisitos, anlisis, diseo
implementacin y pruebas.
Dentro de cada una de ellas, existirn las iteraciones necesarias para revisar cada artefacto hasta
que se complete el incremento y se pueda continuar con el siguiente.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Bsicamente los modelos tres tipos de modelos explicados a continuacin, son la base de MDA
[OMG 2003a]:
Modelos independientes del cmputo (CIM): asimilable a los modelos del dominio y/o del
negocio del proceso unificado de desarrollo [Jacobson 2001]. As, por ejemplo, un CIM de
una biblioteca hablara de las entidades persistentes Usuario, Ejemplar, Prstamo, etc.
Modelos independientes de la plataforma (PIM): son modelos con un alto nivel de abstraccin que
son independientes de la tecnologa en la que se van a implantar. Describen el sistema desde el
punto de vista de los procesos de negocio que van a soportar. As, un PIM de una biblioteca
hablara de servicios de la aplicacin de la biblioteca, de los objetos del negocio Usuario, Ejemplar,
Prstamo, etc.
Modelos especficos de plataforma (PSM): especifican el sistema en trminos de las
construcciones que se van a implementar a la hora de desarrollar. Un modelo PIM puede
generar distintos modelos PSM, en funcin de las tecnologas utilizadas. As, un PSM de
una biblioteca hablara de JSP [SUN JSP], conexiones JDBC [SUN JDBC], etc.
Cdigo: la fase final del desarrollo es transformar cada PSM en cdigo. Como cada PSM es
relativo a una tecnologa determinada esta transformacin es, tericamente,
relativamente sencilla.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
La InfrastructureLibrary es un paquete que est compuesto a su vez por los paquetes Core y
Profiles.
El paquete Core es un metamodelo completo diseado para una alta reusabilidad, de manera que
permita extender metamodelos descritos en MOF en el mismo metanivel, mediante la utilizacin o
especializacin de sus metaclases. Tal es el caso de UML, CWM y MOF que todas dependen de un
ncleo comn, tal y como se muestra en la Figura 3-1 ([OMG 2007a]). El paquete Core, por lo
tanto, es el corazn que sustenta toda la arquitectura de la aproximacin MDA.
Papel del ncleo comn
El paquete Profiles depende del paquete Core y define los mecanismos que se usan para
personalizar metamodelos existentes centrndose en plataformas especficas o dominios
particulares. Si se desea extender un metamodelo, como es el caso de UML, se puede especificar
un perfil partiendo de este paquete y generar un nuevo lenguaje de modelado especfico y
personalizado. Se puede considerar como un mecanismo de extensin ligero de los metamodelos
definidos con MOF alternativo al metamodelado, ya que es mucho ms cmodo ampliar el
metamodelo que crear uno completamente nuevo. Adems la ventaja es que, como se indica en la
Figura 3-2 ([OMG 2007a]), con Profiles se puede extender un metamodelo definido en MOF sin
variar su definicin original.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Dotarse de una sintaxis para construcciones que no cuentan con una notacin propia
(como es el caso de las acciones).
Obtener nuevas notaciones para smbolos ya existentes para adaptarlas al dominio de
aplicacin.
Aadir semntica no especificada en el metamodelo
Aadir restricciones al metamodelo de manera que acoten el uso del metamodelo y sus
constructores.
Aadir informacin til para la realizacin de transformaciones entre modelos.
Un perfil se define en un paquete UML estereotipado profile que extiende a un metamodelo o a
otro perfil. Los mecanismos para definir los perfiles son tres: estereotipos (stereotypes),
restricciones (constraints) y valores etiquetados (tagged values) [Fuentes 2004].
Un estereotipo viene definido por un nombre y por una serie de metamodelos sobre los que
puede asociarse. Grficamente, los estereotipos se definen dentro de cajas estereotipas
stereotypes que se asocian con las metaclases que va a extender, segn la Figura 3-4 ([Fuentes
2004]), el perfil UML WeighthsAndColors define dos estereotipos: Colored y Weighed que se
asocian a las metaclases Class y Association el primero y slo a Association el segundo.
Las restricciones son condiciones que se aplican a los estereotipos. En concreto a los elementos
del metamodelo que han sido estereotipados. En el ejemplo de la Figura 3-4, se puede imponer la
restriccin de que si dos o ms clases estn unidas por una asociacin coloreada, el color de las
clases debe coincidir con el de la asociacin. Estas restricciones suelen escribirse con el lenguaje
OCL.
Un valor etiquetado es una meta-atributo adicional que se asocia a una metaclase del
metamodelo extendido por un perfil. Todo valor etiquetado deber tener un nombre y un tipo y
deber estar asociado a un determinado estereotipo. En el ejemplo de la Figura 3-4 el estereotipo
Weighed tiene un valor etiquetado Weight de tipo integer que indicar el peso de cada asociacin
que haya sido estereotipada como Weighed. Los valores etiquetados se representan como
atributos de la clase que define el estereotipo.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Ejercicios de autoevaluacin
Explique claramente por medio de un cuadro paralelo las ventajas, desventajas, diferencias y
caractersticas sobre los diferentes FrameWorks.
Aplique el modelo MDA completamente al ejercicio planteado para la Unidad 1
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
6. ASPECTOS
OBJETIVO GENERAL
Aprender a definir los conceptos entre Aspectos y un lenguaje orientado por objetos.
OBJETIVOS ESPECFICOS
Identificar e implementar los parmetros sobre diferenciadores entre los lenguajes por
objetos y lenguajes por aspectos
Crear ambientes de desarrollo aplicando las metodologas por aspectos
Apropiar las principales caractersticas de las Bases de Datos orientadas a aspectos.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Al momento de implementar una propiedad, tenemos que la misma tomar una de las dos
siguientes formas:
1. Un componente: si puede encapsularse claramente dentro de un procedimiento generalizado.
Un elemento es claramente encapsulado si est bien localizado, es fcilmente accesible y resulta
sencillo componerlo.
2. Un aspecto: si no puede encapsularse claramente en un procedimiento generalizado. Los
aspectos tienden a ser propiedades que afectan la performance o la semntica de los
componentes en forma sistemtica (Ejemplo: sincronizacin, manejo de memoria, distribucin,
etc.)
A la luz de estos trminos, podemos enunciar la meta principal de la POA: brindar un contexto al
programador que permita separar claramente componentes y aspectos, separando componentes
entre s, aspectos entre s, y aspectos de componentes, a travs de mecanismos que hagan posible
abstraerlos y componerlos para producir el sistema completo. Tenemos entonces una importante
y clara diferencia respecto de los LPG, donde todos los esfuerzos se concentran nicamente en los
componentes, dejando de lado los aspectos.
Una vez diferenciados los aspectos de los componentes, estamos en condiciones de definir a un
aspecto como un concepto que no es posible encapsularlo claramente, y que resulta diseminado
por todo el cdigo. Los aspectos son la unidad bsica de la programacin orientada a aspectos.
Una definicin ms formal, y con la que se trabaja actualmente es: Un aspecto es una unidad
modular que se disemina por la estructura de otras unidades funcionales. Los aspectos existen
tanto en la etapa de diseo como en la de implementacin. Un aspecto de diseo es una unidad
modular del diseo que se entremezcla en la estructura de otras partes del diseo. Un aspecto de
implementacin es una unidad modular del programa que aparece en otras unidades modulares
del programa. Dicha definicin pertenece al creador de la POA, Gregor Kickzales.
Ahora que ya hemos introducido los principales rasgos de la POA, podemos comparar la forma de
una implementacin basada en los LPG versus implementacin basada en POA.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Estructura de POA
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
mantienen su condicin original de cajas negras, aun cuando puede modificarse el interior de las
cajas.
Los aspectos no tienen control sobre los objetos: Esto significa que el ocultamiento de informacin
puede ser violado en cierta forma por los aspectos porque stos conocen detalles de un objeto
que estn ocultos al resto de los objetos.
Sin embargo, no deben manipular la representacin interna del objeto ms all de lo que sean
capaz de manipular el resto de los objetos. A los aspectos se les permite tener esta visin especial,
pero debera limitarse a manipular objetos de la misma forma que los dems objetos lo hacen, a
travs de la interface.
Arquitectura JPAL
Resumiendo, JPAL, un descendiente de AspectJ, tiene la particularidad de separar los puntos de
enlace, que son independientes del lenguaje base, de sus acciones asociadas que dependen de
decisiones de implementacin. Esta separacin permite generar un Esquema de Tejedor para
cualquier lenguaje de aspectos. Este esquema ofrece un puente entre el control de la ejecucin y
la ejecucin de la accin.
Tomando ventaja de esta redireccin se obtiene un modelo de arquitectura para el manejo
dinmico de aspectos.
Su principal aplicacin es para la implementacin de sistemas distribuidos.
D
D es un ambiente de lenguajes de aspectos para la programacin distribuida. Se llama ambiente
de lenguajes, en vez de solamente lenguaje, porque consiste en realidad de dos lenguajes: COOL,
para controlar la sincronizacin de hilos(threads), y RIDL, para programar la interaccin entre
componentes remotos.
Estos dos lenguajes se disearon de manera independiente de un lenguaje componente. Sin
embargo establecen un nmero de condiciones sobre el lenguaje componente.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
Ejercicio de autoevaluacin
De acuerdo a todos los temas vistos y analizados en esta unidad, se pide realizar el siguiente trabajo
que abarca los siguientes numerales de manera ptima y clara:
1. Interaccin entre aspectos en aplicaciones AOP (EA, IMP)
2. Qu es un aspecto a nivel arquitectnico? (EA, ARQ)
3. Los aspectos identificados en la especificacin de requisitos son luego aspectos a nivel
arquitectnico?
4. Significado de las relaciones de weaving en el modelo de objetivos. Qu tcnicas pueden ser
utilizadas para especificar el weaving en early aspects.
5. Identificacin de aspectos en la especificacin de requisitos/objetivos.
6. Conceptos reales de DSOA Estn demasiado influenciados por AspectJ?
7. Derivacin de arquitecturas (AO?) de una especificacin orientada a aspectos.
8. Qu es un aspecto a nivel arquitectnico? (EA, ARQ)
9. Los aspectos identificados en la especificacin de requisitos son luego aspectos a nivel
arquitectnico?
10. Varias opciones de diseo vivas a lo largo del ciclo de vida. Ventajas?
11 Aspectos asociados a conectores Vs aspectos asociados a componentes
12. Son diferentes los aspectos arquitectnicos?
13. Derivacin de arquitecturas (AO?) de una especificacin orientada a aspectos.
14. Hasta qu nivel MDA se mantiene la separacin?
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
7. PISTAS DE APRENDIZAJE
Tenga presente: Dentro de un procesos unificado de desarrollo, deben tenerse muy pendientes y
bien estructuradas las diferentes fases y etapas propuestas por el modelo UML.
Tener en cuenta: Al disear y desarrollar software para la web, los Principios planteados para ello
en ste mdulo, son determinantes de su eficiencia, eficacia y funcionalidad
Traer a la memoria: Que las reglas del negocio estn determinadas por las necesidades y
parmetros sobre los cuales debe levantarse el diseo del software a desarrollar.
Tenga presente: Los diferentes diagramas mostrados son solo guas de solucin a posibles
necesidades presentadas en la cotidianidad del desarrollo de software.
Tener en cuenta: Los patrones son modelos a seguir que han sido probados y aprobados en
escenario especficos, pero no constituyen como tal una solucin estandarizada a una situacin de
desarrollo.
Traer a la memoria: Que los diferentes procesos y patrones de modelamiento sern efectivos en
la medida que se usen en los escenarios ms adecuados para ello.
Tenga presente: UML es un lenguaje para interpretar sistemas mediante grficos o texto
obteniendo modelos explcitos para a la comunicacin durante el desarrollo al ser estndar, los
modelos podrn ser interpretados por personas que no participaron en su diseo
Tener en cuenta: Que una restriccin se representa como una cadena encerrada entre llaves y
colocada junto al elemento asociado o conectada a los elementos con relacin de dependencia.
Tenga presente: Que los valores etiquetados se representa como una cadena encerrada entre
llaves y colocada bajo el nombre de otro elemento.
Traer a la memoria: usar las notas para suministrar restricciones o comentarios vinculados a un
elemento o a una coleccin de elementos.
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
8. GLOSARIO
FRAMEWORK: Estructura software compuesta de componentes personalizables e intercambiables
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia
9. BIBLIOGRAFA
SNCHEZ PREZ Javier, Metodologas de Desarrollo Software Facultad de Informtica, 1998,
GARCA MOLINA Jess Ignacio, Departamento de Informtica y Sistemas, 2004, Univ. De Murcia.
REYNOSO Billy, Arquitectura para distribucin y agregacin: Services Oriented Architecture (SOA)
2006, U. Buenos Aires
CARMONA VANEGAS Juan de Dios, Web Services en paralelo con SOA , implementaciones, 2010
CESDE,
CARMONA VANEGAS Juan de Dios, Diagramas de casos de uso de los ejercicios que realizados
para proyectos de produccin, 2011, CESDE.
WEBGRAFA
www.monografas.com, Arquitectura de Desarrollo de Software, tomado el 4 de Noviembre 2011
www.wikipedia.com
www.Lawebdelprogramador.com
Corporacin Universitaria Remington - Calle 51 51-27 Conmutador 5111000 Ext. 2701 Fax: 5137892. Edificio Remington
Pgina Web: www.remington.edu.co - Medelln - Colombia