Sie sind auf Seite 1von 21

ARQUITECTURAS

REFLEXIVAS
Jaime Jos Herrera Petro
Bernardo Martnez Prez
Juan Jos Morad Fernndez
Luis Miguel Ruiz

Qu es?
Una arquitectura reflexiva se caracteriza por tener una
serie de elementos que contienen informacin estructural
de parte del sistema, es decir que lo describe.
El sistema usa esta meta informacin como elemento
bsico que le permite interaccionar con esos elementos
descritos (generalmente llamados base).

Una caracterstica
fundamental
por lo general todos los elementos base que son
descritos comparten una serie de caractersticas de tal
forma
que
pueden
ser
sometidos
a
ciertas
transformaciones (operaciones) de forma uniforme, y que
sin
embargo
tambin
contienen
elementos
diferenciadores que hace que estas operaciones sean
bastantes dependientes de cada elemento base.

Una caracterstica
fundamental
Estas caractersticas diferenciadas hacen que por lo
general se desarrolle cdio especfico por cada uno de
estos elementos base, sin embargo existen ocasiones en
las que nos es mucho ms rentable desarrollar una
arquitectura reflexiva que trate a todos estos elementos
de forma uniforme.

Toda esta arquitectura puede verse tambin como una tpica


estrategia de centralizacin o aplicacin del metapatrn
encapsulador-centralizador.

VENTAJAS
Cambiar un sistema software (aadir elementos,
campos, etc) es fcil.
Soporta numerosos tipos de cambios.

DESVENTAJAS
Menor eficiencia.
Se incrementa el nmero de componentes.

RECOMENDACIN
Las arquitecturas reflexivas no siempre son la mejor
opcin, sobre todo si no hay muchos elementos base de
los que generar cdigo.
Respecto al rendimiento, ciertamente son arquitecturas
que aaden una capa adicional de indireccin y que por
lo tanto dependiendo de la aplicacin especfica pueden
ser lentas (aunque no tienen por qu serlo por norma
general). Existen adems medios para aumentar
espectacularmente el rendimiento de esta arquitectura,
como por ejemplo el uso de cachs.

CUANDO SE REALIZAN?
Desarrollar una arquitectura tiene costes y no es
apropiada en todas las circunstancias, sino que
dependen de numerosos factores.

CUANDO SE REALIZAN?
Por lo general implementar una arquitectura reflexiva
requiere desarrollar elementos de cdigo bastante
complejo, necesita de ciertas clases adicionales, de ese
nivel adicional de indireccin que es precisamente el que
nos proporciona la potencia y flexibilidad necesario.

CUANDO SE REALIZAN?
Por esto si la aplicacin es pequea no es aconsejable
implementar una arquitectura reflexiva, ya que sta
elevara la complejidad de la aplicacin, su coste y los
conocimientos necesarios para su mantenimiento sin
aportar mucho a cambio.

Dicho esto Cundo


implementarla?
Precisamente
cuando
necesitamos
un
sistema
altamente flexible en ciertos aspectos (ya sea por su
dinmica en explotacin o en su desarrollo,
desconocimiento de requisitos o que sean muy difusos).

Dicho esto Cundo


implementarla?
Cuando tengamos una gran cantidad de elementos
base (como por ejemplo tablas) en los que la otra
opcin sera la generacin de enormes cantidades de
bloques de cdigo similar pero ltamente dependiente
del objeto al que sirven de interfaz funcional (por
ejemplo tablas de bases de datos).

Dicho esto Cundo


implementarla?
Cuando nuestra actividad tcnica consista en realizar
aplicaciones en las que por lo general se utilizen
tcnicas de copiar-pegar-modificar o generacin parcial
de cdigo. En este caso el desarrollo de una
arquitectura reflexiva que reutilicemos en todos
nuestros desarrollos queda plenamente justificada y
amortizada

EJEMPLO
1. Imaginemos que recibimos el encargo de construir un
portal comercial orientado a la venta por internet de
artculos de consumo como libros, pelculas, DVDs,
CDs, impresoras, ratones, cmaras fotogrficas,
reproductores mp3, televisores, y toda clase de
consumibles electrnicos.

SOLUCIN
Tenemos bsicamente dos posibilidades tcnicas para llevar a buen
puerto esta tarea:
Construir o generar componentes web para cada una de estas
categoras. De esta forma tendramos un componente (conjunto
de pginas JSPs o ASPs) distinto para cada tipo de objetos. De
esta forma encapsularamos en cada componente el conocimiento
sobre las caractersticas de cada tipologa. Tendramos por
ejemplo un Jsp/Asp para listar DVDs (ListDvd.jsp), y otro para
visualizar la informacin asociada a un DVD (ShowDvd.jsp?
id=83838). Esto implica tener mucho cdigo que deberemos
construir (costoso) o generar,y mantener (muy costoso).

SOLUCIN

SOLUCIN
Tener un nico componente web genrico de tal forma
que leyendo las propiedades de cada tipo de objeto
(datos que guardamos en la tabla MetaInformacin),
sea capaz de mostrar cualquier objeto sea cual sea su
tipo. Podramos verlo como tener un nico Jsp/Asp para
listados (List.jsp?type=DVD), y otro para visualizar
registros (ShowElement.jsp?type=DVD&id=83838). A la
informacin que describe la estructura de cada tipo de
objeto se le llama metainformacin. El coste de creacin
puede ser alto o no serlo, pero el de mantenimiento es
muy bajo.

SOLUCIN

GRACIAS!

Das könnte Ihnen auch gefallen