ARQUITECTURAS REFLEXIVAS

Click here to load reader

  • date post

    22-Dec-2015
  • Category

    Documents

  • view

    13
  • download

    2

Embed Size (px)

description

Arquitecturas reflexivas

Transcript of ARQUITECTURAS REFLEXIVAS

ARQUITECTURAS REFLEXIVAS

ARQUITECTURAS REFLEXIVASJaime Jos Herrera PetroBernardo Martnez PrezJuan Jos Morad FernndezLuis Miguel RuizQu 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 fundamentalpor 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 fundamentalEstas 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.

VENTAJASCambiar un sistema software (aadir elementos, campos, etc) es fcil.Soporta numerosos tipos de cambios.DESVENTAJASMenor eficiencia.Se incrementa el nmero de componentes.

RECOMENDACINLas 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 amortizadaEJEMPLOImaginemos 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.

SOLUCINTenemos 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

SOLUCINTener 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!