Está usted en Indice > Maletin > Artículos > Cómo desarrollar una arquitectura software: los lenguajes de patrones
Construcción
Maletín
Utilidades
Cursos
Promoción
Rentabilidad
Zona Novatos
Foros
Acceso a tu cuenta

Cómo desarrollar una arquitectura software: los lenguajes de patrones (2)

A este tipo de soluciones (patrón de diseño) se llega por la experiencia en el desarrollo de sistemas web y por el conocimiento de las tecnologías existentes en el mercado.

Gracias a esta experiencia, desde el inicio del desarrollo de una aplicación, podemos buscar componentes que implementen estas tecnologías o ciertas funcionalidades, y por lo tanto integrar la búsqueda de componentes y su uso dentro del proceso de desarrollo de software.

Identificar el tipo de sistema a construir nos permite examinar la arquitectura de sistemas ya construidos, comprender los requisitos a los que se enfrentan, y constrastarlos con nuestros clientes. Si tenemos en cuenta que en cualquier tipo de sistema (por ejemplo: portales web) existen necesidades similares, muchos de los componentes que se usan en su desarrollo suelen ser los mismos (por ejemplo: parsers Xml, motores de transformación Xslt, componentes de acceso a datos, buscadores, carritos de la compra, gestores de contenidos, etc).

Las metodogías que gestionen de forma directa las cuestiones arquitectónicas y estructurales, podrán producir no solo productos de mayor calidad, sino a un menor coste y en menos tiempo. Esto se debe a que los riesgos arquitectónicos del proyecto son menores y están mucho mas controlados, y que al poder integrar una visión orientada a componentes, las posibilidades de reutilizar software ya desarrollado son mucho mayores, con las ventajas que ello implica.

Construir una arquitectura es tanto una actividad donde desarrollar ideas nuevas como una oportunidad de usar la experiencia acumulada, siendo casi siempre responsabilidad del desarrollador crear un producto de calidad y por tanto conocer el tipo de sistema a construir. Afortunadamente para esto último, los lenguajes de patrones nos pueden proporcionar una inestimable ayuda.
Lenguajes de patrones

Los 'Lenguajes de Patrones' se pueden definir del siguiente modo: "La especificación de una serie de elementos (patrones) y sus relaciones (patrones) de modo que nos permiten describir buenas soluciones a los diferentes problemas que aparecen en un contexto específico".

El objetivo de los patrones de diseño es el de capturar buenas prácticas que nos permitan mejorar la calidad del diseño de un sistema, determinando elementos que soporten roles útiles en dicho contexto, encapsulando complejidad, y haciéndolo más flexible.

Por otro lado, con frecuencia se dice que la función define a la forma, es decir, que la estructura o la arquitectura de cualquier sistema está muy relacionada con lo que dicho sistema tiene que hacer.

Esta es la razón por la que los sistemas con objetivos similares comparten también una arquitectura común, unos procesos bién definidos, y un conjunto de elementos similares (patrones de diseño). Similar funcionalidad y servicio, similar estructura.

Cuando desarrollamos un sistema que se encuadra dentro de cierto tipo, es muy útil consultar lenguajes de patrones que traten el dominio en el que estamos. Un lenguaje de patrones nos sirve como referencia conceptual del dominio del problema, ya que éstos parten como solucion a un conjunto de casos de uso, e interacciones con actores específicos. Además constituyen también un marco conceptual en el diseño de la arquitectura de nuestros sistemas, ya que como la función define a la forma, sintetizan por lo general soluciones arquitectónicas y estructurales bién probadas y muy útiles dentro del tipo de problemas que modelan.

De alguna forma, los patrones nos permiten identificar y completar los casos de uso basicos expuestos por el cliente, comprender la arquitectura del sistema a construir asi como su problemática, y buscar componentes ya desarrollados que cumplan con los requisitos del tipo de sistema a construir (es decir nos permiten obtener de una fiorma sencilla la arquitectura base que buscamos duran la fase de diseño arquitectónico).

Desafortunadamente los lenguajes de patrones tampoco son la panacea, y presentan muchas lagunas. Sobre todo, hay que recordar que todo este movimiento de documentación de diseño se origina a mediados de los noventa y que aún siendo mucho el trabajo realizado, no existe todavía ninguna estandarización sobre cómo abordar el desarrollo de estos lenguajes, ni ninguna clasificación que los relacione.

Bajo mi punto de vista un lenguaje de patrones que modele un tipo de sistema debe de ser descrito incluyendo la siguiente informacion:

* Caracteristicas basicas que lo definen y diferencian. Por ejemplo: un sistema web se caracteriza por
o clientes ultra ligeros,
o uso de protocolos sin estado,
o centralizacion del software de ejecucion en servidores de tal forma que la aplicación es compartida por todos los usuarios,
o la distribucion de información es ordenes de magnitud a la grabacion de la misma,
o la gran mayoria de las transacciones en este tipo de sistemas son muy simples,
o el sistema es el responsable de construir el interfaz del usuario de una forma mucho mas acuciada que en otros sistemas,
o etc.
* Definicion de los actores principales que participan en dicho sistema asi como sus casos de uso básicos, descritos evidentemente de forma generica.
* Especificacion de los principales componentes funcionales del sistema asi como las relaciones entre ellos.
* Arquitectura logica y flujos de información, que estructuran los diferentes subsistemas, el intercambio de información de los mismos, etc. Por ejemplo: arquitecturas reflexivas, modelo-vista-controlador, etc.
* Arquitectura de componentes. Consiste en mapear los componentes funcionales en la arquitectura lógica de la aplicación.
* Arquitectura física. Especificación del despliegue de los componentes.

Estos lenguajes deberian ademas tener una vision orientada a la construccion de software y a constituirse como elementos integrables en el proceso de desarrollo de las aplicaciones.
Nuevos diseños

Mucho he hablado sobre la reutilizacion de la experiencia ya acumulada y documentada, sin embargo es digno recalcar que en un campo tan cambiante como el del software todo necesita evolucionar, y nada es definitivo.

La necesidad de innovar y reflexionar seguirá siendo un elemento muy importante en el desarrollo de las aplicaciones.

Sin embargo, como dijo Isaac Newton "Si he llegado a ver más lejos que otros, es porque me subí a hombros de gigantes". Aprovechemos tan buen consejo, y construyamos e innovemos usando la experiencia que otros nos han legado.


Autor: Moisés Daniel Díaz
http://www.programacion.net/articulo/lenguajes_patrones/

Usuarios que han visto este tema también han visto...

- La utilización del e-mail bajo permiso
- Google es Internet
- Navegación
- Flash ¿Cuál es el problema?
- Consigue enlaces desde 14 €


Versión imprimible - Versión imprimible de este documento
Enviar e-mail - Enviar por e-mail este documento
Publicidad






Cursos de Community Manager

Información legal | Política de Privacidad | Contacte con nosotros

Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.


Página generada el 26-05-2012 a las 08:26:13