Monografias.com > Ingeniería
Descargar Imprimir Comentar Ver trabajos relacionados

Evolución y Orientaciones de Patrones




Enviado por omarh



    1. Definiciones
    2. Características
    3. Descripción de un
      Patrón
    4. Tipos de
      patrones
    5. Catálogo de
      patrones
    6. Antipatrones
    7. Evolución
    8. Orientaciones de
      aplicación
    9. Investigaciones actuales
      (estado del arte)
    10. Conclusiones
    11. Referencias
    1. En un proceso de
      desarrollo
      de sistemas de
      información, los profesionales del software se
      enfrentan cada día a multitud de problemas
      de distinta magnitud. Los profesionales con experiencia
      resuelven, de forma mayormente intuitiva, muchos de los
      problemas de modelado de sistemas
      reales. El mejor profesional es el que reutiliza la misma
      solución retocada para resolver problemas similares en
      situaciones distintas. Estas experiencias, que engloban
      técnicas y criterios experimentales
      efectivos y probados, pueden ser difícilmente
      transmitidas formalmente a ingenieros noveles.

      En la actualidad la idea de reutilización
      cobra gran relevancia, especialmente en la orientación
      a objetos. Esto se vuelve insuficiente, si sólo lo
      aplicamos a nivel de componentes de software en el proceso
      global de desarrollo. Se necesita una forma de transmitir el
      conocimiento de estás experiencias
      efectivas de solución.

      Christopher Alexander, desde el ámbito
      de la arquitectura,
      propone la idea de los Patrones, la cual luego es trasladada
      a la ingeniería
      de software. Los Patrones pretenden ser la
      solución al problema de la
      comunicación de experiencias que se plantea. Cada
      patrón describe un problema concurrente en nuestro
      entorno, para describir después el camino a la
      solución a ese problema, de tal forma que pueda ser
      reutilizado en proyectos
      distintos.

      Esta idea de patrones, por su misma naturaleza
      genérica de
      Problema-Solución-Reutilización, se ha
      popularizado a nivel mundial. En la actualidad existen muchas
      investigaciones al respecto, las cuales se
      orientan a muy distintos ámbitos de la actividad
      humana. Asimismo dentro de la ingeniería de software se ha extendido,
      tal así que se han creado y siguen creando
      catálogos de patrones para problemas en distintos
      niveles de abstracción. Por ejemplo, estamos hablando
      ya, no solo de patrones de diseño, sino también tenemos
      patrones de programación, de arquitectura, de
      análisis, de requisitos,
      etc.

      El presente trabajo
      tiene el objetivo
      de describir la evolución y las diferentes
      orientaciones que ha tomado la idea de los
      patrones.

      Para el logro del presente objetivo planteamos
      primero la idea general de los patrones: Definición,
      características, tipos. Asimismo se muestra una
      reseña histórica de la evolución de los
      patrones. Por último describiremos alguna de las
      investigaciones que se realizan en la actualidad en los
      diferentes ámbitos del desarrollo de
      software.

    2. Introducción
    3. Definiciones

    En la práctica del desarrollo de software, los
    ingenieros, analistas, diseñadores, etc. con un grado de
    experiencia medio o alto, aplican normalmente técnicas
    intuitivas para dar solución a problemas determinados.
    Estas técnicas efectivamente aplicadas a problemas
    específicos, son fruto de situaciones problemáticas
    similares que estos profesionales atravesaron anteriormente
    saliendo triunfantes.

    Esta experiencia se plasma de cierta manera en métodos,
    estructuras,
    etc. y que se convierte, a su vez, en el núcleo de la
    solución a un problema determinado. Estas prácticas
    propias de profesionales experimentados no las
    encontrábamos en los libros de
    texto de
    ingeniería de software y a su vez son difíciles de
    transmitir a los profesionales con poca experiencia.

    A continuación presentamos algunas definiciones
    que describen la idea de patrones. Esta idea, surgida en el
    ámbito de la arquitectura y posteriormente trasladada a la
    ingeniería de software, intenta resolver el problema de la
    reutilización efectiva de las experiencias de
    solución a problemas específicos de profesionales
    experimentados.

    "Cada patrón describe un
    problema que ocurre una y otra vez en nuestro entorno, para
    describir después el núcleo de la solución
    a ese problema, de tal manera que esa solución pueda ser
    usada más de un millón de veces sin hacerlo
    siquiera dos veces de la misma forma"

    Christopher Alexander

    Definición obtenida de: A Pattern Language:
    Towns/Building/Construction, de Christopher Alexander, Sara
    Ishikawa, Murray Silverstein, Max Jacobson, Ingrid
    Fiksdahl-King y Shlomo Angel
    , 1977, Oxford University
    Press. 253 patrones, con el formato específico
    pro-puesto por Alexander, se dan cita en este texto, en el que
    además se propugna una integración del mejor-vivir con el medio
    físico circundante:
    gente-gente-patrones-gente.

    Esta definición propuesta por Alexander, intenta
    identificar y resolver, en un marco descriptivo formal aunque
    no-exacto, problemas esenciales que se presentan en el dominio de la
    arquitectura.

    Los profesionales del software han utilizado esta
    definición como catalizador de tendencias de desarrollo en
    el diseño orientado a objetos de sistemas de información. La definición expuesta
    por Alexander, se refiere a patrones de ciudades y edificios,
    pero son ciertamente válidas en el ámbito del
    diseño orientado a objetos, por ejemplo nuestras soluciones se
    expresan en términos de objetos e interfaces en vez de
    paredes y puertas, pero en esencia ambas se orientan a la
    solución de un problema dentro de un contexto
    específico.

    Las definiciones descritas a continuación
    están basadas en la definición de Alexander y
    están referidas ya al ámbito del
    software.

    Un Patrón de diseño nomina, abstrae e
    identifica los aspectos claves de una estructura
    de diseño común, lo que los hace útiles
    para crear un diseño orientado a objetos reutilizable.
    El patrón de diseño identifica las clases e
    instancias participantes, sus roles y colaboraciones, y la
    distribución de responsabilidades. Cada
    patrón de diseño se centra en un problema
    concreto,
    describiendo cuando aplicarlo y si tiene sentido hacerlo
    teniendo otras restricciones de diseño, así como
    las consecuencias y las ventajas e inconvenientes de su uso.
    Por otro lado, como normalmente tendremos que implementar
    nuestros diseños, un patrón también
    proporciona código de ejemplo en C++, y a veces en
    Smalltalk, para ilustrar una
    implementación.

    Erich Gamma, Richard Helm, Ralph Jonson
    y John Vlissides. [GA95]

    "Un patrón describe un problema
    de diseño recurrente, que surge en contextos
    específicos de diseño, y presenta un esquema
    genérico probado para la solución de este. El
    esquema de la solución describe un conjunto de
    componentes, responsabilidades y relaciones entre de
    éstos, y formas en que dichos componentes colaboran
    entre sí."

    Frank Buschmann, Regine Meunier, Hans
    Rohnert, Peter Sommerlad, Michael Stal. [BU96]

    Los patrones de diseño son la
    representación escrita de las técnicas que
    proporcionan la visión de alto nivel de un sistema de
    software. Un patrón es un conjunto de información
    que aporta la solución a un problema que se presenta en
    un contexto determinado. Para elaborarlo se aíslan sus
    aspectos esenciales y se añaden cuantos comentarios y
    ejemplos sean necesarios.

    Alejandro Ramirez.
    [RA04]

    Estas últimas definiciones están referidas
    principalmente al dominio del software. De éstas podemos
    rescatar muchos puntos esenciales que a continuación
    especificamos de la siguiente manera:

    • Un Patrón de Diseño, es un
      conjunto de información que describe una
      solución recurrente a un problema de diseño no
      trivial.
    • La efectividad de esta solución ha debido
      ser probada muchas veces por profesionales expertos dentro de
      un contexto determinado en situaciones
      anteriores.
    • Esta solución debe ser reutilizable, para
      problemas de diseño similares en distintas
      circunstancias.
    • Esta descripción de un patrón debe
      ser lo suficientemente explícita para que pueda ser
      transmitida a profesionales no expertos".

    Describimos algunos puntos importantes expuestos en las
    especificaciones anteriores y que se piensa que se deben
    resaltar:

    • Contexto.- Conformado por el entorno,
      situación, o condiciones interrelacionadas dentro de las
      cuales existe el patrón.
    • Problema.- Esta dado por un asunto insatisfecho, algo
      que se necesita investigar y resolver. Normalmente un problema
      se puede especificar mediante un conjunto de causas y
      efectos.
    • Solución.- Esta referida a la respuesta al
      problema dentro de un contexto y muestra el camino para
      resolver las dificultades.
    • Reutilizable.- La descripción bebe ser clara,
      expresada de manera formal, aunque se encuentre en un
      ámbito general, para que pueda ser transmitida y
      reutilizada por profesionales no expertos.

    Características

    El concepto de
    patrón, aunque tiene un carácter general, se piensa que debe contar
    con las siguientes propiedades para que sea eficientemente
    reutilizado.

    • Ser una solución de sentido común que
      forma parte del conocimiento de un diseñador
      experto.
    • Debe facilitar la comunicación entre diseñadores,
      promulgan un vocabulario común.
    • Debe facilitar el aprendizaje
      de diseñadores no expertos.
    • La solución que describe ha debido ser probada
      más de una vez en distintos casos.
    • Debe proveer una plantilla conceptual que muestra el
      núcleo de una solución a un problema de
      diseño específico.
    • Debe describir participantes y relaciones entre
      ellos: describen módulos, estructuras del sistema y
      mecanismos complejos.

    Descripción de
    un Patrón

    Para describir un patrón las notaciones gráficas no son suficientes. Para que el
    patrón pueda ser reutilizado se necesita representar las
    decisiones, alternativas, ventajas e inconvenientes que son su
    razón de ser. Normalmente, un patrón está
    documentado en forma de una plantilla. Es una práctica
    común documentar los patrones en un formato de plantilla,
    pero no significa que sea la única forma de hacerlo.
    Además, existen muchos formatos de plantillas propuestos
    por muchos autores, lo cual permite la creatividad en
    la documentación de patrones. A
    continuación presentamos como referencia los elementos de
    descripción de patrones propuesto por Gamma
    [GA95].

    • Nombre del patrón. Debe ser un nombre corto y
      significativo, generalmente una o dos palabras. El nombre
      pasará a formar parte de nuestro vocabulario de
      diseño.
    • Clasificación. Para el tipo del patrón
      no hay una clasificación formal pero suelen agruparse en
      patrones de creación, estructura, comportamiento, concurrencia, etc.
    • Propósito. Representado por una frese breve
      que describe el problema concreto de diseño y que hace
      el patrón para resolverlo.
    • También conocido como. Especificación
      de otros nombres con los cuales se le conoce al
      patrón.
    • Motivación. Describe el escenario que ilustra
      el problema de diseño y como las estructuras de clases y
      objetos del patrón resuelven el problema.
    • Aplicabilidad. Describe en que situaciones se puede
      aplicar el patrón, ejemplos y formas de reconocer tales
      situaciones.
    • Estructura. Se hace mediante una
      representación gráfica del patrón que
      muestren sus elementos y relaciones constitutivas.
    • Participantes. Especificación de las clases y
      objetos que consta el patrón incluyendo las respectivas
      responsabilidades.
    • Colaboraciones. Representación de cómo
      colaboran los participantes para cumplir con sus
      responsabilidades.
    • Consecuencias. Se especifican las ventajas e
      inconvenientes a los que conlleva usar el
      patrón.
    • Implementación. Descripción de las
      dificultades, trucos o técnicas que deberíamos
      tener presentes al momento de aplicar el
      patrón.
    • Código de ejemplo. Especificación de
      código que ejemplifique la forma como debemos
      implementar el patrón.
    • Usos conocidos. Descripción de ejemplos donde
      haya sido utilizado el patrón.
    • Patrones relacionados. Especificaciones de otros
      patrones con los cuales este relacionado, las principales
      diferencias y los patrones con los que se debería
      usar.

    Tipos de
    patrones

    La clasificación de los patrones no está
    estandarizada, pero la mayoría de autores suele referirse
    a los siguientes tipos:

    • Fundamentales: Los patrones de esta
      categoría son los más fundamentales e importantes
      patrones de diseño conocidos. Estos patrones son
      utilizados extensivamente en otros patrones de
      diseño.
    • De Creación (Creational): Los patrones
      de creación muestran la guía de cómo crear
      objetos cuando sus creaciones requieren tomar decisiones. Estas
      decisiones normalmente serán resueltas
      dinámicamente decidiendo que clases instanciar o sobre
      que objetos un objeto delegará
      responsabilidades.
    • De partición: En la etapa de
      análisis, se examina el problema para identificar los
      actores, casos de uso, requerimientos y las relaciones que
      constituyen el problema. Los patrones de esta categoría
      proveen la guía sobre como dividir actores complejos y
      casos de uso en múltiples clases.
    • Estructura (Structural): Describen la forma
      como se pueden relacionar, diferentes tipos de objetos, para
      trabajar unos con otros y formar estructuras de mayor
      tamaño.
    • Conducta (Behavioral): Describen la forma como
      organizar, administrar, y combinar, conductas y
      responsabilidades de objetos.
    • Concurrencia (Concurrency patterns): Describen
      como coordinar operaciones
      concurrentes para compartir recursos o
      secuenciar dichas operaciones.

    Catálogo de
    patrones

    Teniendo en cuanta que los patrones son creados para ser
    reutilizados y pueden resultar útiles en el desarrollo de
    software, es lógico pensar en la forma de hacerlos
    accesibles para el momento en que se requieran. En consecuencia
    debemos reunirlos en catálogos que permitan acceder a
    ellos mediante distintos criterios, de tal forma que no solo nos
    muestren una completa descripción de cada uno de los
    patrones sino, esencialmente, la correspondencia entre un
    problema real y un patrón (o conjunto de patrones)
    determinado. El catálogo de patrones más famoso es
    el contenido en el libro
    "Design Patterns: Elements of Reusable Object-Oriented
    Software
    "[GA95], también
    conocido como el LIBRO GoF (Gang-Of-Four Book). La
    descripción general de este catálogo y otros, la
    mostramos a continuación en el Anexo I.

    Antipatrones

    En la mayor parte de las disciplinas también
    existen malos usos que están más o menos
    extendidos, y que por lo tanto no aportan soluciones efectivas a
    la resolución de problemas. Si un patrón es una
    buena práctica, entonces un antipatrón es una mala
    práctica. El estudio de los antipatrones propugna la
    prevención de errores que pudieran incurrir profesionales
    inexpertos. Hay dos nociones de antipatrones:

    • Aquellos que describen una mala solución a un
      problema que da como resultado una mala
      situación.
    • Aquellos que describen como salir de una mala
      situación y convertirla en una buena
      solución.

    Los antipatrones deben ser valorados porque a menudo es
    tan importante ver y entender malas soluciones como ver y
    entender las buenas. Brown, Malveau, MacCormick y Mowbray [BR98]
    han escrito un libro sobre los antipatrones que intenta
    identificar y diagnosticar varias anti-soluciones para
    corregirlas y prevenirlas. Los antipatrones más
    útiles serán aquellos que permiten rehacer un buen
    diseño a partir de uno malo.

    Se puede definir entonces un antipatrón de la
    siguiente forma:

    "Forma literaria que describe una
    solución comúnmente dada a un problema que genera
    consecuencias negativas decididamente".

    Estos antipatrones se pueden encontrar en muchas
    disciplinas. Ateniéndonos a la ingeniería del
    software se pueden clasificar los diferentes tipos de
    antipatrones de la siguiente forma:

    Antipatrones de desarrollo de
    software:

    1. The Blob ("clases gigantes").

    2. Lava Flow ("código muerto").

    3. Funcional Decomposition ("diseño no orientado
    a objetos").

    4. Poltergeists ("no se sabe bien lo que hacen algunas
    clases").

    5. Golden hammer ("para un martillo todo son
    clavos").

    6. Spaghetti code ("muchos if o switch").

    7. Cut-and-paste programming ("cortar y pegar
    código").

    Antipatrones de arquitectura de
    software:

    1. Stovepipe enterprise ("aislamiento en la
    empresa").

    2. Stovepipe system ("aislamiento entre
    sistemas").

    3. Vendor Lock-In ("arquitectura dependiente de producto").

    4. Arquitecture by implication.

    5. Design by committee ("navaja suiza").

    6. Reinvent the Wheel ("reinventar la
    rueda").

    Antipatrones de gestión
    de proyectos software:

    1. Analysis paralysis.

    2. Death by planning.

    3. Corncob ("personas problemáticas").

    4. Irrational management.

    5. Project mismanegement.

    De todos estos antipatrones los más relacionados
    con los patrones de diseño son los de desarrollo de
    software por lo que habrá que evitarlos en la medida de lo
    posible. Todos los antipatrones tienen al lado una
    aclaración que permite intuir a lo que se
    refieren.

    1. Evolución

    La idea de patrones de diseño de software, como
    ya lo mencionamos anteriormente, hizo su aparición en el
    dominio de la arquitectura con Alexander a mediados de los
    70´s, y luego fue asimilada por los profesionales de
    software.

    La orientación a objetos propugna la
    reutilización de componentes de código de software,
    es aquí donde la idea de patrones es utilizada, pero no
    para la reutilización de código, si no para abarcar
    el ámbito del análisis y diseño orientado a
    objetos.

    A continuación mostraremos una reseña
    histórica de esta idea y como ha ido evolucionando. En la
    actualidad existen muchos estudios y proyectos al respecto y ya
    no solo en el ámbito del diseño sino se ha
    extendido a otras fases del ciclo de vida
    del desarrollo de sistemas de información.

    • Desde 1964 hasta 1979, Christopher Alexander escribe
      varios libros acerca del planeamiento
      urbano y la construcción de edificios. Entre ellos
      destaca "A pattern Language: Towns/Building/Construction". Este
      libro contiene 253 patrones, con un formato específico
      propuesto por Alexander, en los que se describe la planificación de ciudades y la
      construcción de edificios. Su método
      de capturar el
      conocimiento fue innovador, y reflejaba un conocimiento
      práctico hasta entonces solo adquirible mediante
      años de experiencia. Alexander propone que existe un
      invariante común, que define los principios
      generales del diseño y construcción. El
      descubrimiento de las invariantes aplicables al diseño
      de software es hoy el objetivo de los desarrolladores de
      software, pues proporcionan un marco común de
      conocimiento y soluciones.
    • A principios de los 80 se hizo evidente la escasez de
      arquitectos de diseño orientado a objetos. La comunidad
      académica no proporcionaba el conocimiento necesario
      para lidiar con los requerimientos cambiantes de los proyectos.
      Este conocimiento requería años de experiencia,
      pero las demandas de la industria no
      favorecían la demora necesaria para que los arquitectos
      instruyesen a sus colegas. Era necesario un modo de difundir
      este conocimiento.
    • En 1987, Ward Cunningham y Kent Beck diseñaban
      interfaces de usuario con Smaltalk. Decidieron, para ello,
      utilizar alguna de las ideas de Alexander para desarrollar un
      lenguaje de
      patrones que sirviese de guía a los programadores de
      Smaltalk. El resultado fue el libro "Using Pattern Languages
      for Object-Oriented Programs".
    • Poco después en 1991, Jim Coplien
      comenzó a realizar un catálogo de patrones de
      bajo niveñ (idioms) en C++ y publicó su libro
      "Advanced C++ Programming Styles and Idioms".
    • Desde 1990 a 1994, Erich Gamma, Richard Helm, Ralph
      Johnson y John Vlissides (Gang of Four (GoF), el llamado
      grupo de los
      cuatro) realizaron un primer catálogo de patrones de
      diseño.
    • En 1994 se realizo la primera conferencia
      sobre patrones de diseño: Pattern Languages
      of Program Design (PLoP)
      , centrada en patrones
      para desarrollar aplicaciones de software. En la
      PLoP
      94
      también se presento el ensayo "A
      Development Process Generative Pattern Language" que fue el
      primer ejemplo de patrones aplicados a otro campo distinto del
      software.
    • Poco después de Abril de 1994 es publicado el
      libro "Design Patterns: Elements of Reusable Object-Oriented
      Software". A este libro se le suele llamar GoF, por el
      sobrenombre de sus autores. La reacción a este libro fue
      universalmente positiva y se convirtió en una obra
      fundamental en la materia.
      Muchos arquitectos reconocieron en las soluciones propuestas
      descripciones a las que ellos mismos habían llegado
      independientemente. Se organizaron grupos de
      estudio sobre patrones y aparecieron consultoras que
      proporcionaban aprendizaje
      sobre el tema.
    • En 1996 Michael Akroyd formaliza el concepto de
      anti-patrón en su presentación "Antipatterns:
      Vaccinations against Object Misuse". Dicha presentación
      se centro en identificar errores comunes cometidos en proyectos
      de software.
    • En 1997 Brad Appleton publica "Patterns and Software:
      Essential Concepts and Terminology".
    • Mark Grand publica en 1998 la primera edición de "Patterns in Java (volume
      1)" que es un catálogo de patrones de diseño
      ilustrados con UML. En 2001 el
      mismo autor publica "Java Enterprise Design Patterns" en donde
      se añaden 41 patrones de diseño relativos a Java
      Enterprise.
    • En 1998, Brown, Malveau, MacCormick y Mowbray
      públican un libro sobre antipatrones que intenta
      identificar y diagnosticar varias anti-soluciones para
      corregirlas y prevenirlas.
    • El 2002, van Duyne, D. Landay, J. Hong, J., en su
      libro The Design of Sites: Patterns, Principles, and
      Processes for Crafting a Customer-Centered Web
      Experience
      [DU02], ofrecen principios, procesos, y
      patrones para desarrollar sitios web centrados en el cliente. Con el
      enfoque centrado en el cliente, el Web site puede ser
      relevante, se explica por sí mismo, y fácil de
      utilizar.
    1. Orientaciones de
      aplicación

    Por la naturaleza de la idea de los patrones,
    éstos solucionan problemas que existen en muchos niveles
    de abstracción. Los Patrones inicialmente fueron aplicados
    en la fase de diseño de los sistemas de
    información, por la necesidad respectiva que se
    tenía en este ámbito. Sin embargo existen otros
    ámbitos de la ingeniería del software donde se
    puede aplicar el concepto genérico de
    patrón.

    Hay patrones que describen soluciones para todo, desde
    el análisis hasta el diseño y desde la arquitectura
    hasta la implementación. Además, los patrones
    existen en diversas áreas de interés y
    tecnologías. Por ejemplo mostramos algunos:

    • Patrones organizativos: Describen la
      estructura y prácticas de las organizaciones
      humanas, especialmente las productoras de software.
    • Patrones de análisis: Describen un
      conjunto de prácticas destinadas a elaborar modelos de
      los conceptos principales de la aplicación que se va a
      construir. La intención principal de estos patrones es
      ayudar a las personas que realizan el trabajo
      de modelado, pues no siempre tienen experiencia al respecto y,
      en la mayoría de los casos, construyen sus modelos sin
      referencia alguna.
    • Patrones de arquitectura: Expresan un paradigma
      fundamental para estructurar u organizar un sistema
      software. Proporcionan un conjunto de subsistemas
      o módulos predefinidos, con reglas y guías para
      organizar las relaciones entre ellos. Ejemplo:
      • Capas (Layers)
      • Aplicaciones: JVM, API, Windows
        NI
      • Pipes and Filters
      • Aplicaciones: UNIX
      • Pizarrón (Blackboard)
      • Aplicaciones: Hearsay, Inteligencia Artificial
    • Patrones de diseño: Proporciona un
      esquema para refinar los subsistemas o componentes de un
      sistema software y las relaciones entre ellos. Describe
      estructuras recurrentes de comunicar componentes que resuelven
      un problema de diseño en un contexto particular. Son
      patrones de un nivel de abstracción menor que los
      patrones de arquitectura. Están por lo tanto más
      próximos a lo que sería el código fuente
      final. Su uso no se refleja en la estructura global del
      sistema.
    • Patrones de programación (Idioms
      patterns):
      Un idiom es un patrón de bajo nivel,
      específico a un lenguaje de
      programación determinado. Describe como implementar
      aspectos particulares de los componentes de un patrón de
      diseño usando las características y
      potencialidades de un lenguaje de programación
      concreto.
    1. Investigaciones actuales (estado del
      arte)

    Los patrones han adquirido una gran popularidad que ha
    hecho que la comunidad de software los utilice comúnmente.
    A continuación mostraremos algunas investigaciones que se
    están haciendo al respecto.

    1. Investigadores de la Universidad Autónoma de Tlaxcala
      (UAT), el Instituto Nacional de Astrofísica
      Óptica y Electrónica (INAOE) y la
      Benemérita Universidad Autónoma de Puebla
      (BUAP) de México, presentan en su
      artículo los estudios que se exponen a
      continuación.

      La civilización se apoya en la
      utilización masiva, para el conjunto de las
      actividades económicas, sociales y culturales, de
      una ciencia,
      la informática, de una tecnología, la de redes de
      comunicación, y de un instrumento específico,
      la
      computadora. Gracias a las posibilidades que ofrecen
      las redes, se puede generar un medio alternativo de
      difusión. Para el sector cultural, los por-tales son
      una vía importante para publicitar local, regional y
      mundialmente, la
      organización, servicios o procesos culturales de una
      región. Esta investigación propone la
      construcción de un portal cultural basado en
      patrones de diseño para el Web. El objetivo es
      detectar la problemática que existe actualmente en
      el diseño de sitios web utilizando de manera
      adecuada los patrones de diseño, con el fin de
      satisfacer las necesidades de los usuarios.

      Los portales son sitios de gran movilidad de
      información en donde se aprovecha al máximo
      las bondades del Internet.
      La mecánica de los portales es diferente
      según sea el tipo de información que se
      ofrece, pero la meta
      final siempre es la publicidad o servicios.

      Otro de los aspectos importantes de los portales
      es referente a la gran cantidad de contenidos y
      aplicaciones que le dan funcionalidad a los usuarios y los
      invitan a regresar con frecuencia. Podemos decir que para
      el sector cultura,
      los portales son una vía importante para publicitar
      local, regional y mundialmente la organización, servicios o procesos
      culturales, además no solamente mejoran la calidad
      y eficiencia en la difusión de la
      oferta
      cultural, sino que se reducen costos
      de impresión, reproducción y distribución de
      una gran cantidad de información, se permite
      mantener actualizada e integrada la información para
      la toma de
      decisiones y finalmente tienen un gran poder de
      gestión.

      Actualmente en el web nos encontramos con algunos
      sistemas carentes de un esquema y una estructura de
      organización, lo que provoca: una navegación
      inconsistente, uso indebido de la rotulación,
      vínculos inválidos, uso indebido del
      hipertexto, etc.

      Con base en lo anterior actualmente existe una
      serie de patrones de diseño para el web, con los
      cuales si se aplican de manera adecuada, se logrará
      satisfacer las necesidades cada vez más exigentes
      del usuario. Tomando en cuenta que un patrón es una
      forma de describir una solución a un problema
      recurrente bajo un determinado contexto, en el presente
      trabajo se propone hacer una categorización de
      patrones principalmente en los aspectos referentes a
      navegación, elementos de página, mecanismos
      de búsqueda y rotulación.

    2. Uso de patrones para el diseño de sitios
      web [GL03]

      Investigadores del Departamento de Lenguajes y
      Sistemas Informáticos, Facultad de
      Informática y Estadística, de la Universidad de
      Sevilla, lleva a cabo esta investigación, que se
      expone a continuación.

      El número de propuestas de
      reutilización en ingeniería de requisitos es
      aún escaso, sobre todo a nivel de requisitos de
      cliente o requisitos–C, normalmente expresados en
      lenguaje natural. En este caso, la utilización en
      más de 80 prácticas académicas y en
      tres proyectos reales, de las plantillas y patrones
      lingüísticos para requisitos–C, ha puesto
      de manifiesto la posibilidad de aplicar técnicas de
      reutilización durante la fase de ingeniería
      de requisitos. Como resultado de esta experiencia se han
      identificado requisitos que, con pequeñas
      variaciones, aparecen en un elevado número de
      desarrollos. A dichos requisitos, una vez generalizados al
      eliminar los detalles específicos, los hemos
      denominado patrones de reutilización de requisitos,
      o abreviadamente, patrones–R.

      Entre otros, los resultados más
      interesantes de la normalización del formato de los
      requisitos desarrollada, ha sido la posibilidad de
      compararlos e identificar patrones de reutilización,
      tanto a nivel de requisitos de cliente (requisitos–C,
      normalmente expresados en lenguaje natural) como a nivel de
      requisitos de desarrollador (requisitos–D,
      habitualmente modelos conceptuales), que facilitan el
      desarrollo y mejoran la calidad de las especificaciones de
      requisitos.

      Las relaciones de rastreabilidad realizadas entre
      requisitos–C, requisitos–D, e incluso elementos
      de menor nivel de abstracción como componentes
      software, ha permitido también plantear la
      posibilidad de reutilizar estructuras complejas, desde
      requisitos–C hasta código, obteniendo
      así una reutilización vertical que abarque
      distintos niveles de abstracción del desarrollo de
      software.

      En un futuro esperamos identificar nuevos
      patrones–R, sobre todo a partir de la disponibilidad
      del prototipo de herramienta CASE para ingeniería de
      requisitos (figuras 9, 10) que se ha desarrollado como
      parte del proyecto
      CICYT MENHIR, lo que permitirá el tratamiento
      automatizado de las especificaciones de requisitos
      así como el desarrollo de asistentes automatizados
      que ayuden a aplicar las ideas presentadas en este
      artículo o la aplicación automática de
      métricas.

    3. Identificación de Patrones de
      Reutilización de Requisitos de Sistemas de
      Información [DU00]

      Hohpe y Woolf, en su libro: Enterprise
      Integration Patterns
      [HW03], proponen el uso de los
      patrones para una tarea intrínsecamente compleja,
      como es la integración de la empresa. Se centra el
      estudio, principalmente, en las estructuras de
      mensajería usadas para construir soluciones de
      integración.

      El libro aborda los distintos aspectos de la
      integración de una organización, desde
      la perspectiva de un arquitecto, mostrando los patrones de
      arquitectura y de diseño involucrados en el proceso,
      como también desde la perspectiva del desarrollador,
      con implementaciones de los mismos conceptos que se
      explican durante el estudio.

      Plantean la justificación de la existencia
      de la mensajería en cualquier proyecto y como
      obtener el mejor provecho de ésta. Explica
      detalladamente como debe funcionar un sistema de
      mensajería y describen también como utilizar
      los patrones involucrados en los componentes de este
      sistema.

    4. Patrones de Integración de la Empresa

      Investigadores de las universidades de
      Cádiz y de Granada [IG03] proponen la
      elaboración de un modelo
      sencillo e intuitivo para la especificación
      estructural de patrones de diseño y su
      integración en UML, con la finalidad de conseguir
      verdaderas plantillas reutilizables.

      En su estudio plantean que los lenguajes de
      modelado deben contemplar los patrones de diseño
      como elementos de modelado de primer orden, estableciendo
      para éstos una notación, semántica y tratamiento adecuado.
      Asimismo también proponen que las herramientas de diseño de software
      basadas en estos lenguajes deberían facilitar su
      definición, aplicación y validación en
      contextos específicos.

      En su artículo exponen los inconvenientes
      que presenta UML para representar adecuadamente la esencia
      de un patrón, resumen la filosofía de su
      modelo (conceptos principales que intervienen y como se
      relacionan) y por último especifican el
      Patrón Abstract Factory aplicando la nueva
      aproximación que proponen en su estudio.

    5. Modelado Estructural de Patrones de
      Diseño
    6. Patrones de Interacción: Una Solución para
      el Diseño de la Retroalimentación Visual de Sistemas
      Interactivos

    Investigadores del Instituto Nacional de
    Astrofísica Óptica y Electrónica (INAOE) de
    México [MR02], proponen en su
    investigación a patrones de interacción como
    mecanismo de integración entre la Ingeniería de
    Software y la Interacción Hombre
    Máquina (IHM) con el objeto de diseñar
    la retroalimentación visual en función
    del contexto de la tarea del usuario, y permitir a la vez la
    comunicación entre los especialista involucrados en su
    desarrollo.

    El presente trabajo propone como solución una
    categorización de patrones de interacción que
    permitan capturar la experiencia en el diseño de la
    retroalimentación visual de un sistema de
    información en término de los requerimientos
    del usuario.

    La retroalimentación visual es forma de
    comunicación visual que va del sistema en dirección al usuario. La
    retroalimentación visual es un factor que corresponde
    tanto a la ingeniería de software como a la IHC pues
    contribuye respectivamente en la utilidad y la
    usabilidad de un sistema interactivo. La utilidad concierne a la
    funcionalidad del software del sistema caracterizándolo
    para lo que fue hecho. La usabilidad concierne a guiar
    pertinentemente al usuario en su tarea y hacer que el sistema se
    fácil de usar.

    De lado de la IHC, se han propuesto un gran
    número de recomendaciones ergonómicas para la
    retroalimentación visual, pero sin especificar "el como"
    diseñar y concretizar la retroalimentación visual
    en un SI. Ahora bien, del lado de la Ingeniera de Software
    numerosas técnicas de programación visual y
    herramientas
    CASE se han propuesto para desarrollar componente de software
    para la retroalimentación visual.

    La investigación desarrollada preconiza el uso de
    patrones de interacción (o de interfaz) como un mecanismo
    integrador entre los factores de Ingeniera de Software y la IHC,
    para así diseñar la retroalimentación visual
    con un alto nivel de usabilidad y permitir a la vez la
    comunicación entre los especialista involucrados en su
    desarrollo. Bajo este objetivo, primero definen la necesidad de
    los patrones de interacción en el diseño de la
    retroalimentación visual. Luego proponen una
    categorización de patrones de interacción en
    función de la naturaleza lingüística de la
    retroalimentación visual. Al final, la
    investigación presenta a detalle el diseño de
    diversos patrones de interacción derivados de la
    categorización propuesta.

    1. La idea de los patrones ha adquirido gran
      popularidad. En el ámbito de la ingeniería de
      software se están desarrollando muchos proyectos de
      investigación al respecto. Como hemos visto en el
      presente trabajo, no sólo se esta aplicando en los
      llamados patrones de diseño, sino que la idea esta
      transportándose a otras actividades del desarrollo de
      software.

      El concepto de patrón tiene carácter
      general y por consiguiente es aplicable a un sin
      número de situación de diferente tipo, estilo,
      entorno, etc. En lo referente al software, la
      aplicación de los patrones esta siendo utilizada con
      éxito en muchos ámbitos de la
      ingeniería de software. En definitiva esta mejorando
      las prácticas en el desarrollo de sistemas de
      información.

      Donde exista la posibilidad aplicación del
      criterio profesional experimentado, a un problema recurrente,
      la idea de patrones de Alexander podrá usarse para
      reutilizar y transmitir dichas experiencias a profesionales
      menos experimentados.

    2. Conclusiones
    3. Referencias

    [GA95] Gamma, E. Helm, R. Jonson, R. & Vlissides,
    J.. Design Patterns: Elements of Reusable Object-Oriented
    Software
    . Addison Wesley, (1995).

    [BU96] Buschmann, F. Meunier, R. Rohnert, H. Sommerlad,
    P. Stal, M. Pattern-Oriented Software Architecture. A System
    of Patterns
    . Wiley, (1996).

    [BR98] Brown, W. Malveau, R. "Skip" McCormick III, H.
    Mowbray, T. Anti Patterns. Refactoring software, Architectures
    and Proyects in Crisis.

    Wiley, (1998).

    [DU02] van Duyne, D. Landay, J. Hong, J. The Design
    of Sites: Patterns, Principles, and Processes for Crafting a
    Customer-Centered Web Experience.
    Addison-Wesley,
    (2002).

    [HW03] Hohpe, G. Woolf, B. Enterprise Integration
    Patterns.
    Addison-Wesley. (2003)

    [ARR] Patrones, Ricardo Davis, 1996. http://www.arrakis.es/~devis/patrones.ppt
    [última visita 03-02-2005]

    [CPD] Catálogo de Patrones de Diseño J2EE.
    I, Juan Antonio
    Palos,
    1999 – 2005. http://www.programacion.com/java/tutorial/patrones/
    [última visita 03-02-2005]

    [ERP] El
    Rincón del Programador, 2002. http://www.elrincondelprogramador.com/
    [última visita 04-02-2005]

    [OKT] Hanna Oktaba, 2005.
    http://www.mcc.unam.mx/~cursos/Algoritmos/javaDC99-2/patrones.htm

    [última visita 04-02-2005]

    [RA04] Ramirez, A. "Introducción a los Patrones de
    Diseño." Creative Commons. Agosto 2004.

    [DU00] Durán Toro, A. Ruiz Cortés, A.
    Corchuelo Gil, R. Toro Bonilla, M. "Identificación de
    Patrones de Reutilización de Requisitos de Sistemas de
    Información".
    WER
    . 2000.

    [GL03] Galavíz, P. Muñoz, J. Santiago, C.
    "Diseño de un Portal Cultural Basado en Patrones de
    Diseño para el Web". CORE. 2003.

    [IG03] Isla, J. y Gutierrez, F. "Modelado Estructural de
    Patrones de Diseño: Diagramas REP".
    SugarLoafPLoP. 2003.

    [MR02] Muñoz, J. y Rodríguez, G. "Patrones
    de Interacción: Una Solución para el Diseño
    de la Retroalimentación Visual de Sistemas Interactivos".
    CIC. 2002.

    Omar Hurtado Jara

    Doctorado en Ingeniería
    Informática

    Universidad Carlos III

    Madrid, España

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter