<?xml version="1.0" encoding="ISO-8859-1"?><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<front>
<journal-meta>
<journal-id>1317-5815</journal-id>
<journal-title><![CDATA[SAPIENS]]></journal-title>
<abbrev-journal-title><![CDATA[SAPIENS]]></abbrev-journal-title>
<issn>1317-5815</issn>
<publisher>
<publisher-name><![CDATA[Instituto Pedagógico de Miranda José Manuel Siso Martínez de la UPEL]]></publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id>S1317-58152009000200011</article-id>
<title-group>
<article-title xml:lang="es"><![CDATA[MUDA: método unificado de diseño arquitectónico]]></article-title>
<article-title xml:lang="en"><![CDATA[MUDA: unified architectural design method]]></article-title>
<article-title xml:lang="fr"><![CDATA[MUDA: Méthode unifiée de dessin architectonique]]></article-title>
<article-title xml:lang="pt"><![CDATA[Muda: método unificado desenho arquitetônico]]></article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Guillén-Drija]]></surname>
<given-names><![CDATA[Christian]]></given-names>
</name>
<xref ref-type="aff" rid="A01"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname><![CDATA[Losavio]]></surname>
<given-names><![CDATA[Francisca]]></given-names>
</name>
<xref ref-type="aff" rid="A02"/>
</contrib>
</contrib-group>
<aff id="A01">
<institution><![CDATA[,UPEL-Instituto Pedagógico de Miranda José Manuel Siso Martínez  ]]></institution>
<addr-line><![CDATA[Caracas ]]></addr-line>
<country>Venezuela</country>
</aff>
<aff id="A02">
<institution><![CDATA[,UCV Facultad de Ciencias Escuela de Computación]]></institution>
<addr-line><![CDATA[Caracas ]]></addr-line>
<country>Venezuela</country>
</aff>
<pub-date pub-type="pub">
<day>00</day>
<month>12</month>
<year>2009</year>
</pub-date>
<pub-date pub-type="epub">
<day>00</day>
<month>12</month>
<year>2009</year>
</pub-date>
<volume>10</volume>
<numero>2</numero>
<fpage>195</fpage>
<lpage>226</lpage>
<copyright-statement/>
<copyright-year/>
<self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_arttext&amp;pid=S1317-58152009000200011&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_abstract&amp;pid=S1317-58152009000200011&amp;lng=en&amp;nrm=iso"></self-uri><self-uri xlink:href="http://ve.scielo.org/scielo.php?script=sci_pdf&amp;pid=S1317-58152009000200011&amp;lng=en&amp;nrm=iso"></self-uri><abstract abstract-type="short" xml:lang="es"><p><![CDATA[El consenso que existe sobre la importancia del diseño arquitectónico en la construcción de sistemas de software que respondan adecuadamente a los requisitos iniciales, evidencia la necesidad de disponer de métodos que guíen la actividad del arquitecto de software durante la etapa inicial del proceso de desarrollo. Aunque existen diversas propuestas de métodos arquitectónicos, resulta necesario seguir profundizando la investigación en esta área. En tal sentido, proponemos a MUDA (Método Unificado de Diseño Arquitectónico), un método de diseño arquitectónico de carácter integrador como un intento orientado hacia el aprovechamiento de las mejores prácticas en el contexto de la visión arquitectónica del software. MUDA es aplicado a un caso de estudio en el dominio de los STI (Sistemas Tutoriales Inteligentes), evidenciándose la construcción progresiva de la arquitectura del sistema a través de un mecanismo de derivación de elementos arquitectónicos a partir de requisitos funcionales y no funcionales.]]></p></abstract>
<abstract abstract-type="short" xml:lang="en"><p><![CDATA[The general consensus about the importance ofthe architectural design in constructing software systems that suitably meet initial requirements proves the need for methods to guide software architects during the initial phase ofthe development process. There are several proposals ofarchitectural methods, though it is essential to keep researching on the topic. We introduce MUDA (Método Unificado de Diseño Arquitectónico) which is an integrated method designed with the aim of using the optimum practices within the scope ofthe architectural perspective. The application ofMUDA to a case ofstudy in the area ofthe Tutorial Intelligent Systems (TISs) has shown the gradual construction ofthe system architecture through the derivation ofarchitectural elements defined from functional and nonfunctional requirements.]]></p></abstract>
<abstract abstract-type="short" xml:lang="fr"><p><![CDATA[Le consensus existant au sujet de l’importance du dessin architectonique, dans la construction de systèmes de logiciel qui remplissent les requêtes initiales, met en évidence le besoin de créer des méthodes pour guider l’activité de l’architecte de logiciel pendant la période initiale du processus de développement. Bien qu’il y ait de différentes propositions de méthodes architectoniques, on doit continuer la recherche dans ce champ. Avec ce travail, l’on propose MUDA (Méthode Unifiée de Dessin Architectonique) ; c’est une méthode intégrale de dessin architectonique. Grâce à MUDA on pourrait profiter des meilleures pratiques dans le contexte de la vision architectonique du logiciel. La méthode proposée a été appliquée à un cas d’étude dans le domaine des STI (Systèmes Tutélaires Intelligents), et l’on a pu constater la construction progressive de l’architecture du système grâce à un mécanisme de dérivation d’éléments architectoniques à partir de requêtes fonctionnelles et non-fonctionnelles.]]></p></abstract>
<abstract abstract-type="short" xml:lang="pt"><p><![CDATA[O consenso que existe sobre a importância do projeto arquitetônico para a construção de sistemas de software para responder adequadamente às exigências iniciais, destaca a necessidade de métodos para guiar a atividade do arquiteto de software durante a fase inicial de desenvolvimento. Apesar de existirem várias propostas de métodos de arquitectura, é necessário aprofundar a investigação nesta área. Neste sentido, propomos a MUDA (Método Unificado Desenho Arquitetônico), um método de inclusão de projeto arquitetônico como uma tentativa que visa tornar a utilização das melhores práticas no contexto da visão arquitetônica de software. MUDA é aplicado a um estudo de caso no domínio dos STI (Sistemas Tutoriais Inteligentes), mostrando a construção progressiva da arquitetura do sistema através de um mecanismo de referência elementos arquitectónicos dos requisitos funcionais e não funcionais.]]></p></abstract>
<kwd-group>
<kwd lng="es"><![CDATA[Arquitectura de Software]]></kwd>
<kwd lng="es"><![CDATA[métodos de diseño arquitectónico]]></kwd>
<kwd lng="es"><![CDATA[calidad de software]]></kwd>
<kwd lng="en"><![CDATA[Software Architecture]]></kwd>
<kwd lng="en"><![CDATA[architectural design methods]]></kwd>
<kwd lng="en"><![CDATA[software quality]]></kwd>
<kwd lng="fr"><![CDATA[architecture de logiciel]]></kwd>
<kwd lng="fr"><![CDATA[méthodes de dessin architectonique]]></kwd>
<kwd lng="fr"><![CDATA[qualité de logiciel]]></kwd>
<kwd lng="pt"><![CDATA[arquitetura de software]]></kwd>
<kwd lng="pt"><![CDATA[os métodos de concepção arquitectónica]]></kwd>
<kwd lng="pt"><![CDATA[a qualidade do software]]></kwd>
</kwd-group>
</article-meta>
</front><body><![CDATA[ <p ALIGN="center"><b><font face="Verdana">MUDA: método unificado de diseño  arquitectónico*</font></b></p>     <p ALIGN="center"><font SIZE="2" face="Verdana"><b>Christian Guillén-Drija,  Francisca Losavio</b></p>     <p ALIGN="justify">UPEL-Instituto Pedagógico de Miranda José Manuel Siso  Martínez. Caracas, Venezuela. <a href="mailto:cguillen@ipmjmsm.upel.edu.ve"> cguillen@ipmjmsm.upel.edu.ve</a></p>     <p ALIGN="justify">Centro ISYS. Escuela de Computación, Facultad de Ciencias-UCV  Caracas, Venezuela. <a href="mailto:flosav@cantv.net">flosav@cantv.net</a></p>     <p align="justify">* Este trabajo fue parcialmente financiado por el Consejo de  Desarrollo Científico y Humanístico de la Universidad Central de Venezuela,  proyecto MODABAC No. 03-005821-2008.</p> </font>     <p ALIGN="justify"><font SIZE="2" face="Verdana"><b>RESUMEN</p> </b>     <p ALIGN="JUSTIFY">El consenso que existe sobre la importancia del diseño  arquitectónico en la construcción de sistemas de software que respondan  adecuadamente a los requisitos iniciales, evidencia la necesidad de disponer de  métodos que guíen la actividad del arquitecto de software durante la etapa  inicial del proceso de desarrollo. Aunque existen diversas propuestas de métodos  arquitectónicos, resulta necesario seguir profundizando la investigación en esta  área. En tal sentido, proponemos a MUDA (Método Unificado de Diseño  Arquitectónico), un método de diseño arquitectónico de carácter integrador como  un intento orientado hacia el aprovechamiento de las mejores prácticas en el  contexto de la visión arquitectónica del software. MUDA es aplicado a un caso de  estudio en el dominio de los STI (Sistemas Tutoriales Inteligentes),  evidenciándose la construcción progresiva de la arquitectura del sistema a  través de un mecanismo de derivación de elementos arquitectónicos a partir de  requisitos funcionales y no funcionales.</p> <b>     <p align="justify">Palabras Clave: </b>Arquitectura de Software, métodos de  diseño arquitectónico, calidad de software.</p> </font><b><font SIZE="2" face="Verdana">     <p ALIGN="center">MUDA: unified architectural design method</p>     <p ALIGN="justify">ABSTRACT</p> </font></b><font FACE="Verdana" SIZE="2">     ]]></body>
<body><![CDATA[<p ALIGN="JUSTIFY">The general consensus about the importance ofthe  architectural design in constructing software systems that suitably meet initial  requirements proves the need for methods to guide software architects during the  initial phase ofthe development process. There are several proposals  ofarchitectural methods, though it is essential to keep researching on the topic.  We introduce MUDA (Método Unificado de Diseño Arquitectónico) which is an  integrated method designed with the aim of using the optimum practices within  the scope ofthe architectural perspective. The application ofMUDA to a case  ofstudy in the area ofthe Tutorial Intelligent Systems (TISs) has shown the  gradual construction ofthe system architecture through the derivation  ofarchitectural elements defined from functional and nonfunctional requirements.</p> <b>     <p ALIGN="JUSTIFY">Key words: </b>Software Architecture, architectural design  methods, software quality.</p> </font><b><font SIZE="2" face="Verdana">     <p ALIGN="center">MUDA: Méthode unifiée de dessin architectonique</p>     <p ALIGN="justify">RESUME</p> </font></b><font FACE="Verdana" SIZE="2">     <p ALIGN="JUSTIFY">Le consensus existant au sujet de l’importance du dessin  architectonique, dans la construction de systèmes de logiciel qui remplissent  les requêtes initiales, met en évidence le besoin de créer des méthodes pour  guider l’activité de l’architecte de logiciel pendant la période initiale du  processus de développement. Bien qu’il y ait de différentes propositions de  méthodes architectoniques, on doit continuer la recherche dans ce champ. Avec ce  travail, l’on propose <i>MUDA </i>(<i>Méthode Unifiée de Dessin Architectonique</i>)  ; c’est une méthode intégrale de dessin architectonique. Grâce à <i>MUDA </i>on  pourrait profiter des meilleures pratiques dans le contexte de la vision  architectonique du logiciel. La méthode proposée a été appliquée à un cas  d’étude dans le domaine des <i>STI </i>(<i>Systèmes Tutélaires Intelligents</i>),  et l’on a pu constater la construction progressive de l’architecture du système  grâce à un mécanisme de dérivation d’éléments architectoniques à partir de  requêtes fonctionnelles et non-fonctionnelles. </p> <b>     <p align="justify">Mots-clés: </b>architecture de logiciel, méthodes de dessin  architectonique, qualité de logiciel.</p> </font><b><font SIZE="2" face="Verdana">     <p ALIGN="center">Muda: método unificado desenho arquitetônico</p>     <p ALIGN="justify">RESUMO</p> </font></b><font FACE="Verdana" SIZE="2">     <p ALIGN="JUSTIFY">O consenso que existe sobre a importância do projeto  arquitetônico para a construção de sistemas de software para responder  adequadamente às exigências iniciais, destaca a necessidade de métodos para  guiar a atividade do arquiteto de software durante a fase inicial de  desenvolvimento. Apesar de existirem várias propostas de métodos de  arquitectura, é necessário aprofundar a investigação nesta área. Neste sentido,  propomos a MUDA (Método Unificado Desenho Arquitetônico), um método de inclusão  de projeto arquitetônico como uma tentativa que visa tornar a utilização das  melhores práticas no contexto da visão arquitetônica de software. MUDA é  aplicado a um estudo de caso no domínio dos STI (Sistemas Tutoriais  Inteligentes), mostrando a construção progressiva da arquitetura do sistema  através de um mecanismo de referência elementos arquitectónicos dos requisitos  funcionais e não funcionais.</p> <b>     <p align="justify">Palavras-chave</b>: arquitetura de software, os métodos de  concepção arquitectónica, a qualidade do software.</p> </font>     ]]></body>
<body><![CDATA[<p align="justify"><font size="2"><font face="Verdana">Recibido: febrero 2009  Aceptado: mayo 2009</font></p> <b>     <p align="justify"><font face="Verdana">Introducción </font></p> </b></font><font FACE="Verdana" SIZE="2">     <p align="justify">El desarrollo de un proceso de diseño arquitectónico  explícito se ha propuesto como un medio eficaz en el logro de sistemas de  software confiables (Shaw y Garlan, 1996; Bosch 2000). Aunado a lo anterior, la  creciente demanda de sistemas que permitan la realización de transacciones a  través de la Internet, ha evidenciado la necesidad de tomar en cuenta aspectos  de calidad tales como la portabilidad, eficiencia, facilidad de uso, la  reutilización de soluciones, entre otros; que requieren el análisis de posibles  soluciones y consiguiente toma de decisiones arquitectónicas que son registradas  en un diseño arquitectónico. En otras palabras, es el diseño arquitectónico la  herramienta que permite asegurar la apropiada calidad de un sistema, siendo esta  la principal razón que ha impulsado el creciente auge de las investigaciones en  esta área (Losavio, Chirinos, Lévy, Ramdane-Cherif, 2002). </p>     <p align="justify">Si bien la primera meta que debe ser alcanzada al producir un  sistema de software es que ofrezca las funcionalidades para las cuales fue  concebido, es también cierto que debido a la complejidad de tales sistemas, su  funcionamiento depende cada vez más del logro de características de calidad. </p>     <p align="justify">En la actualidad, es comúnmente aceptado el hecho de que la  arquitectura debe implementar un conjunto de mecanismos que permitan el logro de  las características de calidad, lo que significa que las decisiones  arquitectónicas subyacentes serán fuertemente influenciadas por la necesidad de  lograr tales objetivos de calidad. La relación entre arquitectura y calidad  evidencia la problemática centrada en la comprensión y sustentación de la  interacción que surge entre los requisitos iniciales de un sistema y el diseño  arquitectónico resultante, siendo todavía un tema abierto lo relativo a los  procedimientos y técnicas que permitan determinar, a partir de un conjunto de  requisitos iniciales, el diseño arquitectónico más idóneo. Tal tarea sigue  siendo muy compleja y básicamente sustentada en la intuición del arquitecto de  software. </p>     <p align="justify">Este trabajo presenta una primera versión de MUDA (Método  Unifi</font><font SIZE="2"><font face="Verdana">cado de Diseño Arquitectónico)  en el que se integran aspectos adoptados de otros métodos estudiados. MUDA se  caracteriza por:</font></p>     <blockquote> 	    <p align="justify"><font face="Verdana">1. Sustentarse en un cuerpo de  	conceptos universalmente aceptados en el área de la arquitectura de  	software, a saber: componentes, conectores, interfaces, estilos  	arquitectónicos, restricciones arquitectónicas, comportamientos, componentes  	estructurados, entre otros. </font></p> 	</font><font FACE="Verdana" SIZE="2"> 	    <p align="justify">2. Tratar explícitamente los requisitos no funcionales:  	aunque los requisitos funcionales son el punto de partida para la generación  	de una arquitectura inicial, son los requisitos no funcionales los que van a  	dar forma final a dicha arquitectura a través de la adopción de mecanismos  	arquitectónicos que aseguren que el sistema ofrezca sus funcionalidades  	dentro de un entorno de calidad, en un dominio específico.</p> 	</font><font SIZE="2"> 	    <p align="justify"><font face="Verdana">3. Proporcionar mecanismos de  	derivación arquitectónica: a partir de un conjunto de requisitos iniciales,  	el arquitecto de software debe generar elementos de valor arquitectónico  	para la estructuración de una arquitectura preliminar o inicial. Este  	proceso se le conoce como derivación arquitectónica (Lamsweerde, 2003).</font></p> 	    ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana">4. Aplicar UML como mecanismo de  	descripción arquitectónica: puesto que este lenguaje asume muchos de los  	conceptos arquitec</font></font><font FACE="Verdana" SIZE="2">tónicos a los  	cuales los ADLs (Garlan, Monroe y Wile, 1997;Guillén, </font><font SIZE="2"> 	<font face="Verdana">2002) pretenden responder y el mismo es aplicado por  	muchas organizaciones. Sin embargo, este lenguaje no ha sido adoptado por  	muchos de los métodos de diseño arquitectónicos estudiados.</font></p> 	    <p align="justify"><font face="Verdana">5. Proporcionar actividades de  	transformación arquitectónica: tales transformaciones son logradas aplicando  	patrones de diseño arquitectónico o algún estilo arquitectónico que  	favorezca el modelo de calidad asumido. MUDA contempla la posibilidad de  	realizar sucesivas transformaciones hasta el logro de las características de  	calidad necesarias. </font></p> 	    <p align="justify"><font face="Verdana">6. Utilizar escenarios, casos de uso  	y modelos de calidad como mecanismos para el levantamiento de requisitos de  	calidad. Los casos de uso junto con los escenarios, son una excelente manera  	de registrar tanto requisitos funcionales como requisitos no funcionales, y  	al mismo tiempo, facilitan la determinación de las relaciones existentes  	entre los requisitos funcionales y los no funcionales. </font></p> </blockquote>     <p align="justify"><font face="Verdana">El hecho de que MUDA integre las  características antes mencionadas, f</font></font><font FACE="Verdana" SIZE="2">acilita  la identificación y refinamiento de la información arquitectónicamen</font><font SIZE="2"><font face="Verdana">te  relevante contenida en el conjunto de requisitos iniciales. </font></p>     <p align="justify"><font face="Verdana">Este artículo está organizado de la  siguiente manera: en la sección 2 se presentan algunos antecedentes del trabajo.  En la sección 3 se describe el método MUDA. En la sección 4 se expone brevemente  el caso de estudio para luego en la sección 5 explica la aplicación de MUDA a  dicho caso. Por último, la sección 6 contiene las conclusiones obtenidas. </font> </p> </font><font FACE="Verdana" SIZE="2"><b>     <p align="justify">Antecedentes</p> </b>     <p align="justify">Como ya se ha mencionado, la generación de una arquitectura  que satisfaga los requisitos iniciales, es aún una tarea ardua, principalmente  basada en la intuición y experticia del arquitecto de software (Grünbacher,  Egyed y Medvidovic, 2003). Tal dificultad es aún más notoria en el caso de los  requisitos no funcionales, por lo que es un tema de investigación abierto, aún  no resuelto completamente (Jani, Vanderveken y Perry, 2004). A este respecto, se  han realizado esfuerzos dirigidos a la concepción de <i>frameworks </i></font> <font SIZE="2"><font face="Verdana">o marcos de referencia para la generación de  una arquitectura inicial basada en requisitos (Chung, Cooper y Yi, 2003) (Lamsweerde,  2003) (Grünbacher, Egyed y Medvidovic, 2003), (Brito y Moreira, 2004). </font> </p>     <p align="justify"><font face="Verdana">Especial mención merece la propuesta  realizada por Grünbacher y otros (2003), quienes proponen el enfoque CBSP (Component-Bus-System-</font></font><font FACE="Verdana" SIZE="2">Property),  como un método sistemático dirigido a facilitar el refinamiento de un conjunto  de requisitos y expresarlos a través de dimensiones arquitecturales. La idea que  subyace es que cualquier requisito de software puede implícitamente o  explícitamente contener información relevante para la arquitectura del sistema.  Las dimensiones arquitecturales propuestas son 6, las cuales generan artefactos  específicos que envuelven elementos arquitectónicos básicos; estos son: (1)  artefactos que describen o involucran a un componente en una arquitectura, (2)  artefactos que describen o involucran un BUS (conector), (3) artefactos que  describen características generales del sistema o características pertinentes a  un amplio subconjunto de componentes y conectores del sistema, (4) artefactos  que describen o involucran a propiedades de componentes de procesamiento o  componentes de datos, (5) artefactos que describen o involucran a propiedades de  un BUS (conector), y (6) artefactos que describen o involucran propiedades de un  sistema o subsistema. Estas dimensiones son aplicadas al cuerpo de requisitos,  dando como resultado un conjunto de descripciones de relevancia arquitectónica.  En el proceso, se generan dos tipos de entregables: (1) un conjunto artefactos  (componentes) que describen decisiones arquitectónicas y (2) enlaces, que  describen las dependencias entre esos artefactos. Los primeros proporcionan  piezas que potencialmente pueden formar parte de la arquitectura, mientras que  los segundos ayudan a clarificar las dependencias de control y datos existentes  entre tales piezas. En la fase final del método, el conjunto de artefactos y  enlaces son reordenados según un determinado estilo arquitectónico que responda  a requisitos no funcionales.</p>     <p align="justify">El enfoque anterior busca generar artefactos que posiblemente  pueden componer una arquitectura, sin embargo el diseño arquitectónico consiste  también en determinar las estrategias de organización de los componentes que  conformarán el sistema a construir. Dichas estrategias están tipificadas en  estilos y patrones arquitectónicos (Krutchen, 2000), y es tarea del arquitecto  de software identificar los que mejor responden a los requisitos iniciales. De  esta forma obtiene una arquitectura base, sobre la cual necesariamente se deben  realizar sucesivas transformaciones con el fin de calibrar dicha arquitectura  con respecto a los requisitos no funcionales y así obtener una versión  definitiva. Tales transformaciones deben ser guiadas por una evaluación de la  arquitectura. Esta se puede realizar a través de la asignación de prioridades  tanto a los escenarios como a las características de calidad relacionadas con el  estilo o patrón escogido. La justificación del estilo seleccionado es el enfoque  propuesto en el método ATAM (Clements, Bachmann, Bass, Garlan, Ivers, Little,  Nord y Stafford, 2002). En este, se determinan los conflictos que pueden surgir  entre los mecanismos arquitectónicos escogidos para responder a las  características de calidad iniciales, pero en ningún momento se realizan  transformaciones sobre la arquitectura evaluada. Otros trabajos extienden este  método introduciendo modelos de calidad estándar y métricas arquitectónicas para  la justificación de la selección del estilo, (Losavio, Chirinos y Pérez, 2001) (Losavio,  Chirinos, Lévy y Ramdane-Cherif, 2002) lo que permite escoger una arquitectura  inicial </font><font SIZE="2"><font face="Verdana">justificada sobre esas bases. </font></p>     <p align="justify"><font face="Verdana">En la siguiente sección se describe el  método propuesto en este trabajo. Dicho método adopta aspectos de los enfoques  antes descritos y los integra con UML. Basado en aspectos de calidad considera  la derivación de requisitos en elementos arquitecturales, la generación de una  arquitectura base </font></font><font FACE="Verdana" SIZE="2">y su posterior  transformación hasta obtener una arquitectura definitiva. </p> <b>     ]]></body>
<body><![CDATA[<p align="justify">MUDA (Método Unificado de Diseño Arquitectónico)</p> </b>     <p align="justify">Este método está estructurado por tres fases. La primera es  la fase de preparación, cuyo objetivo es extraer los requisitos  arquitectónicamente significativos y expresarlos de manera que se facilite la  posterior identificación de elementos arquitectónicos. En la segunda etapa se  busca generar una arquitectura base sobre la cual realizar las transformaciones  necesarias para la consecución de las características de calidad registradas en  el modelo de calidad del sistema. En la tercera etapa se aplican los mecanismos  arquitectónicos que mejor respondan a los requisitos de calidad iniciales. A  continuación se describen tales etapas, así como las actividades y entregables  generados en cada una de ellas.</p> <b>     <p align="justify">1. Etapa de Preparación</b>: en la que se deben organizar los  requisitos obtenidos del análisis del dominio. Se supone que como etapa previa  al diseño arquitectónico, un proceso de levantamiento de requisitos se ha  llevado a cabo, generando como mínimo una lista de requisitos funcionales y las  principales restricciones sobre el sistema. Esta etapa se divide en dos  actividades: </p> <i>     <p align="justify">a. Generación del Modelo de Casos de Uso</i>: lo que permite  la apropiada descripción de las funcionalidades a través de la notación que para  tal fin propone UML (Unified Modeling Language) (OMT, 2005). Este modelo de  casos de uso estará compuesto por el diagrama de casos de uso y una  especificación detallada de los mismos. A través de las relaciones <i>extend</i>, <i>include </i>o <i>use </i>(OMT, 2005) se debe lograr la división de casos de  uso generales en casos de uso cada vez más específicos, puesto que nuestro  objetivo es la determinación de los casos de uso que arquitectónicamente son  significativos desde el punto de vista funcional. Esta actividad generaráuna  jerarquía de casos de uso, desde los más generales hasta los más específicos a  manera de árbol. Esta actividad permite a los especialistas involucrados en el  desarrollo del sistema, analizar los requisitos iniciales y verificar la </font> <font face="Verdana" SIZE="2">pertinencia de estos o la omisión de  funcionalidades importantes. Por otra parte, este proceso es de naturaleza  iterativa e incremental, por lo que se puede partir de un diagrama sencillo y  muy general, intentando expresar de manera coherente la lista inicial de  requisitos, enriqueciendo en cada iteración el modelo de casos de uso hasta  llegar a la especificación detallada </font><font SIZE="2" face="Verdana">de los  mismos. Cuando lo último ocurre, existe la posibilidad de que algunos requisitos  no funcionales aparezcan. </p> <i>     <p align="justify">b. Generación del Árbol de Utilidad</i>: cuyo objetivo es  capturar las características de calidad (requisitos no funcionales) iniciales  que se esperan del sistema. Para esto, se puede partir de los requisitos que  fueron identificados y asignados a los casos de uso durante su especificación.  También se debe considerar la información referente a las restricciones propias  del dominio de la aplicación. El artefacto final debe ser un <i>Árbol de Calidad </i>(Kazman y otros, 1998), expresado según el modelo de calidad estándar de  ISO/IEC 9126-1. Dicho árbol debe ser refinado hasta lograr que en las hojas se  encuentren escenarios en los que, según el criterio de los especialistas que  intervienen en la ejecución del método, se manifiesten todas las características  identificadas. Una vez generado el árbol de calidad, se deben clasificar los  escenarios ubicados en las hojas según la taxonomía de artefactos propuesta por  Grünbacher, Egyed y Medvidovic (2003). Esta taxonomía está compuesta por las  siguientes categorías de artefactos: </p>     <blockquote> 	    <p align="justify">i. C: artefactos que describen o involucren componentes  	individuales en una arquitectura. </p> 	    <p align="justify">ii. CP: artefactos relacionados con propiedades de  	componentes. </p> 	    <p align="justify">iii. B: artefactos que describen o involucran a un  	conector (Bus). </p> 	    <p align="justify">iv. S: artefactos que describen características que  	involucran a una amplia sección de componentes del sistema </p> 	    ]]></body>
<body><![CDATA[<p align="justify">v. BP: artefactos relacionados con propiedades de un  	conector. </p> 	    <p align="justify">vi. SP: artefactos relacionados con propiedades del  	sistema. </p> </blockquote>     <p align="justify">La taxonomía anterior permite jerarquizar el conjunto inicial  de escenarios generado en el árbol de calidad, convirtiéndose en un producto  intermedio entre la lista de requisitos y la arquitectura.</p> <b>     <p align="justify">2. Etapa de Derivación Arquitectónica</b>: esta etapa  persigue generar una arquitectura base o inicial sobre la cual poder realizar  transformaciones que respondan a los requisitos tanto funcionales como no  funcionales. Se compone de dos actividades:</p> <i>     <p align="justify">a. Generación del Modelo de Componentes</i>: esto se logra  utilizando dos fuentes: el modelo de casos de uso y el modelo de calidad. En  primer lugar, se toman los casos de uso ubicados como hojas del diagrama de  casos de </font><font SIZE="2"><font face="Verdana">uso y se les asigna un  componente, expresado gráficamente a través de la </font></p>     <p align="justify"><font face="Verdana">notación de UML. Inicialmente estos  componentes tienen un nombre y nada </font></font><font FACE="Verdana" SIZE="2"> más; pero tal descripción puede ser refinada a través de iteraciones. Por otra  parte, se hace algo similar a partir del modelo de calidad expresado en el árbol  de calidad; a cada escenario hoja, clasificado como un artefacto C, se le asigna  un componente y a los escenarios de tipo CP, se les intenta ubicar como  propiedades de los componentes. </p> <i>     <p align="justify">b. Generación del Modelo CC </i>(modelo de componentes y  conectores): lo que se logra inicialmente asignando relaciones entre los  componentes del modelo anterior (modelo de componentes). Tales relaciones deben  ser analizadas para discernir cuáles se derivarán en conectores o en relaciones  de composición que generarán componentes estructurados. A partir de las  relaciones de dependencia y de los escenarios de tipo B, se producen conectores.  Asimismo, los escenarios de tipo BP se ubican como propiedades de los  conectores.</p> <b>     <p align="justify">3. Etapa de Refinamiento Arquitectónico</b>: en la que se  refina la estructura hasta el momento obtenida. Se compone de dos actividades:</p> <i>     <p align="justify">a. Identificación de Subsistemas, Estilos y Patrones</i>: a  partir de los escenarios identificados como artefactos S o SP. Como los  artefactos S y SP se refieren al sistema o a subsistemas, permitirán:</p>     <p align="justify">i. Identificar subsistemas y su estructura interna a partir  de los componentes identificados en el modelo CC. </p>     ]]></body>
<body><![CDATA[<p align="justify">ii. Identificar los estilos y/o patrones arquitectónicos que  respondan a los artefactos SP. </p> <i>     <p align="justify">b. Aplicación de Estilos y Patrones Arquitectónicos</i>: una  vez identificados se aplican al modelo CC, lo que transformará la arquitectura  para conseguir responder a los requisitos de calidad. El resultado es la <i> arquitectura base.</p> </i><b>     <p align="justify">4. Estudio de un caso: </b></font><font SIZE="2"> <font face="Verdana">sistema de software educativo en el dominio de la enseñanza  de la física</font></p>     <p align="justify"><font face="Verdana">El software educativo que se analizó  como caso de estudio, presenta el concepto de energía en diferentes contextos  representados a través de nueve opciones didácticas. Cada opción consiste en un  conjunto de planteamientos relacionados con analogías que permiten explorar el  concepto de energía. La disponibilidad de una variedad de opciones brinda al  usuario </font></font><font FACE="Verdana" SIZE="2">(estudiante) la oportunidad  de planificar su sesión de estudio, explorando y seleccionando la estrategia que  más se adapte a sus necesidades de aprendizaje, considerándose la  individualización, la retroalimentación y el manejo de los errores como  elementos básicos a tomar en cuenta en el proceso enseñanza-aprendizaje (Esteves,  2001). Las características anteriores ubican a este software dentro del marco de  la <i>teoría cognitiva</i>, específicamente la presentada por: (a) Bransford  (2000) quien en su teoría de la <i>instrucción contextualizada </i>(anchored  instruction) basa las secuencias de aprendizaje en la presentación de  macro-contextos que le permitan a los estudiantes la posibilidad de explorar  hasta lograr el aprendizaje; y (b) Spiro, Feltovich y Coulson (2000), quienes en  su <i>teoría de la flexibilidad cognitiva </i></font><font SIZE="2"> <font face="Verdana">sostienen que en el proceso enseñanza-aprendizaje, se debe  considerar la representación múltiple del contenido y la dependencia contextual  de los conceptos.</font></p>     <p align="justify"><font face="Verdana">Por otra parte, este software implementa  una adaptación del modelo propuesto por McCalla y Greer (1987) quienes  desarrollaron un sistema CAI (computer assisted instruction: instrucción  asistida por el computa</font></font><font FACE="Verdana" SIZE="2">dor)  utilizando tecnología y técnicas de inteligencia artificial. Este modelo  identifica los siguientes componentes (ver <a href="#fig1">Figura 1</a>):</font></p>     <p align="center"><a name="fig1"> <img border="0" src="/img/fbpe/sp/v10n2/art11fig1.gif" width="441" height="357"></a></p> <font SIZE="2"><u>     
<p align="justify"><font face="Verdana">Base de conocimiento</font></u><font face="Verdana">:  referido al qué enseñar. Lo elabora un ingeniero de conocimiento (investigador).</font></p> <u>     <p align="justify"><font face="Verdana">Modelo del estudiante</font></u><font face="Verdana">:  comprende: (a) un modelo externo: elaborado por el diseñador, y (b) un modelo  interno que se construye a partir de lo que el estudiante ejecuta en cada sesión  de trabajo. Este modelo puede ser obtenido a partir del análisis de los reportes  que generare el sistema. El modelo del estudiante que se presenta está basado en  las rutas de aprendizaje (secuencia en la selección de opciones didácticas) y en  los errores conceptuales y operacionales que cometen los estudiantes (Esteves,  2001).</font></p> <u>     <p align="justify"><font face="Verdana">Educador experto (docente)</font></u><font face="Verdana">:  decide cómo enseñar. Selecciona las opciones didácticas en concordancia con la  actividad del estudiante.</font></p> <u>     <p align="justify"><font face="Verdana">Subsistema de comunicación</font></u><font face="Verdana">:  es la interfaz con todas sus característi</font></font><font FACE="Verdana" SIZE="2">cas:  colores, movimiento, rapidez de presentación; en general, determina la </font> <font SIZE="2"><font face="Verdana">&quot;calidad de la interacción&quot; entre el usuario  y el objeto de conocimiento.</font></p> <u>     ]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana">Subsistema de aprendizaje</font></u><font face="Verdana">:  surge por la presencia del ser humano. Este componente debe incorporar toda la  nueva información que pueda surgir de la interacción sistema-usuario para  ampliar el conocimiento que se tiene de los estudiantes y adaptar el sistema a  sus características. </font></p>     <p align="justify"><font face="Verdana">Los elementos teóricos fundamentales a  los que debe responder este sistema instruccional se muestran en la <a href="#fig2">Figura 2</a> (Esteves, Rodríguez y Guillén, 2003) de la cual se  desprende que el software:</font></p>     <p align="center"><a name="fig2"> <img border="0" src="/img/fbpe/sp/v10n2/art11fig2.gif" width="512" height="760"></a></p>     
<blockquote> 	    <p align="justify"><font face="Verdana">1. Debe permitir la personalización  	de la sesión de trabajo.</font></p> 	</font><font FACE="Verdana" SIZE="2"> 	    <p align="justify">2. Pueda ser utilizado tanto para fines de evaluación  	como para </font><font SIZE="2"><font face="Verdana">actividades de  	reforzamiento y exploración. </font></p> 	    <p align="justify"><font face="Verdana">3. Le permita al usuario culminar la  	sesión de trabajo de manera sencilla.</font></p> 	    <p align="justify"><font face="Verdana">4. Le permita al usuario conocer los  	resultados de las sesiones desarrolladas.</font></p> 	    <p align="justify"><font face="Verdana">5. En el caso de ser utilizado  	dentro de actividades de evaluación, ofrezca un resumen de aciertos y  	desaciertos.</font></p> 	    <p align="justify"><font face="Verdana">6. Registre las rutas seguidas por  	los usuarios durante la escogencia </font></font> 	<font FACE="Verdana" SIZE="2">y revisión de las fichas didácticas. Esta  	información puede ser utilizada por el docente o el investigador para fines  	diversos.</p> 	    ]]></body>
<body><![CDATA[<p align="justify">7. Realice el reconocimiento de planes (sistema experto).</p> </blockquote> <b>     <p align="justify">5. Aplicación de MUDA</p> </b>     <p align="justify">En esta sección se describe el proceso mediante el cual se  obtiene la arquitectura para el sistema descrito en la sección anterior. </p> <i><b>     <p align="justify">5. 1. </b></i>E<i><b>tapa de </b></i>P<b><i>reparación</p> </i>     <p align="justify">Generación del Modelo de Casos de Uso</p> </b>     <p align="justify">Durante la identificación de los requisitos funcionales, se  realizó una especificación de un conjunto de casos de uso. Partiendo de este  entregable se procedió a generar varios diagramas de casos de uso con el fin de  identificar las relaciones existentes entre estos. Al mismo tiempo, el diagrama  de casos de uso permitió el refinamiento de las funcionalidades, identificándose  en consecuencia un conjunto de casos de uso específicos. </p>     <p align="justify">Es importante resaltar que el objetivo de la etapa es  precisamente la presentación de los requisitos capturados desde un punto de  vista arquitectónico, con lo cual se quiere significar que tales requisitos  deben ser expresados de manera que expongan información significativa para la  configuración de la arquitectura. De esta forma, se refinan los requisitos  iniciales y se les describe en un lenguaje centrado en la visión arquitectónica  del software (ver <a href="#fig3">Figura 3</a>).</p>     <p align="center"><a name="fig3"> <img border="0" src="/img/fbpe/sp/v10n2/art11fig3.gif" width="558" height="499"></a></p>     
<p align="justify">Por otra parte, tomando en cuenta la semántica de los casos  de uso, estos se pueden agrupar en dos grandes grupos: los que se refieren a las  ejecuciones de las rutas didácticas por parte del estudiante y los que se  refieren a la administración del conocimiento, donde se incluyen aspectos  relacionados al registro y consulta de los resultados, así como la adición de  nuevas opciones didácticas.</p> <b>     <p align="justify">Generación del Árbol de Utilidad</p> </b>     ]]></body>
<body><![CDATA[<p align="justify">Si bien son los casos de uso los medios para la captura y  descripción de los requisitos funcionales, en el caso de los requisitos no  funcionales también denominados características de calidad, son los escenarios  los medios por los cuales se logra su descripción. En este sentido, se procedió  a elaborar un árbol de utilidad (Kazman y otros, 1998), colocando en las hojas  los escenarios en los que se considera que se manifiestan tales características.  Cada uno de los escenarios identificados debe ser atendido a través de la  adopción de distintos mecanismos que deben ser integrados en la arquitectura  resultante. Al mismo tiempo, se clasificaron cada uno de los escenarios según la  taxonomía propuesta por Grünbacher, Egyed y Medvidovic (2003). Tal clasificación  tiene como objetivo facilitar la derivación de los componentes y conectores que  constituirán la arquitectura del sistema. Cada uno de los escenarios se  consideran entonces como artefactos que afectarán a componentes, conectores o al  sistema en general, por lo que podrían ser llamados proto-elementos  arquitectónicos. En las <a href="#fig4">Figuras 4</a> y <a href="#fig5">5</a> se  muestran algunos escenarios ubicados en las hojas del árbol de utilidad  generado.</p>     <p align="center"><a name="fig4"> <img border="0" src="/img/fbpe/sp/v10n2/art11fig4.gif" width="562" height="831"></a></p> </font><b><font FACE="Verdana" SIZE="2">     
<p align="center"><a name="fig5"> <img border="0" src="/img/fbpe/sp/v10n2/art11fig5.gif" width="552" height="823"></a></p>     
<p align="justify">5.2. Etapa de Derivación Arquitectónica</p>     <p align="justify">Generación del Modelo de Componentes</p> </font></b><font SIZE="2" face="Verdana">     <p align="justify">En primer lugar, se generó un conjunto de componentes  candidatos a los cuales se les asignan responsabilidades según el modelo de  casos de uso de manera que no exista al final de este paso casos de uso que no  tenga </font><font SIZE="2"><font face="Verdana">un posible componente  responsable. En la <a href="#fig6">Figura 6</a> se puede observar una primera  versión del modelo de componentes derivado exclusivamente del modelo de casos de  uso.</font></font></p>     <p align="center"><font SIZE="2"><a name="fig6"> <img border="0" src="/img/fbpe/sp/v10n2/art11fig6.gif" width="557" height="792"></a></p>     
<p align="justify"><font face="Verdana">Un segundo conjunto de componentes fue  generado a partir del árbol de utilidad. Para lograr esto, primero se realizó un  inventario de las posibles estrategias de solución arquitectónica que pueden ser  aplicadas con </font></font><font FACE="Verdana" SIZE="2">el fin de responder a  los escenarios planteados. Tales estrategias plantean </p> </font><font SIZE="2">     <p align="justify"><font face="Verdana">transformaciones en la arquitectura en  lo relativo su topología, número de componentes, asignaciones de  responsabilidades y relaciones entre los componentes. En el <a href="#cua1"> Cuadro 1</a> se muestra la relación que se ha establecido entre los escenarios  de calidad y las estrategias de solución arquitectónica.</font></p>     <p align="center"><a name="cua1"> <img border="0" src="/img/fbpe/sp/v10n2/art11cua1.gif" width="506" height="741"></a></p>     
]]></body>
<body><![CDATA[<p align="justify"><font face="Verdana">La  <a target="_blank" href="../img/fbpe/sp/v10n2/art11fig7.htm">Figura 7</a> muestra el conjunto de  componentes generados a partir </font></font><font FACE="Verdana" SIZE="2">del  Árbol de Utilidad. Tales componentes se consideran necesarios para la aplicación  de las estrategias arquitectónicas adoptadas para responder a los requisitos de  calidad planteados.</font></p> <font FACE="Verdana" SIZE="2"><b>     <p align="justify">Generación del Modelo Componentes-Conectores</p> </b>     <p align="justify">Para la generación de este modelo, es necesario realizar la  unificación de los modelos de componentes obtenidos en el paso anterior, lo cual  puede conducir a la fusión de componentes o a la sustitución de un componente  por otro. En principio, estos componentes lucen monolíticos, sin embargo, un  refinamiento posterior de tales componentes conduciráa la generación de una  estructura interna en muchos de ellos. </p>     <p align="justify">Por otra parte, es necesario identificar las dependencias  entre los componentes con el fin de derivar posibles conectores y de esta manera  obtener un modelo arquitectónico más detallado. Todo lo anteriormente </font> <font SIZE="2"><font face="Verdana">mencionado puede observarse en la  <a target="_blank" href="../img/fbpe/sp/v10n2/art11fig8.htm">Figura 8</a>,  en la que se puede observar el resultado de la fusión de los dos modelos de  componentes previamente obtenidos.</font></font></p><font SIZE="2">     <p align="justify"><font face="Verdana">En el modelo resultante de la fusión de  los dos tipos de componentes (funcionales y no funcionales) se pueden observar  las relaciones de depen</font></font><font FACE="Verdana" SIZE="2">dencia que se  identificaron entre los componentes, las cuales pueden ser consideradas como  indicadores de posibles conectores. Al mismo tiempo, una observación más  detallada de la proto-arquitectura, permite identificar el nivel de acoplamiento  entre algunos componentes, lo que se puede considerar como un signo inequívoco  de la criticidad de estos. </p>     <p align="justify">Este modelo también evidencia la necesidad de simplificar los  canales de comunicación entre los componentes, lo cual se puede lograr a través  de la aplicación de estilos y patrones arquitectónicos. Lo anterior conduce  necesariamente a otro esfuerzo de refinamiento en el que se simplifican las  conexiones entre los componentes. En la  <a target="_blank" href="../img/fbpe/sp/v10n2/art11fig9.htm">Figura 9</a> se muestran los cambios  realizados en la arquitectura con el fin de simplificar la comunicación entre  los componentes. Obsérvese que la aplicación de los patrones Mediador (Gamma, Helm, Johnson y Vlissides, 1998) y Publicador-Subscritor (Clements y otros,  2002) permitió simplificar las conexiones entre los componentes otorgando a la  estructura de la arquitectura mayor claridad. Al unísono, por ser los patrones  antes mencionados mecanismos de indirección de datos, favorecen el  desacoplamiento entre los componentes de una arquitectura lo que se traduce en  un aumento en la facilidad de modificación de la arquitectura en función de los  posibles escenarios de mutabilidad que se pueden suscitar en el futuro.</p>     <p align="justify">Es importante mencionar que los elementos identificados en el  modelo presentado en la  <a target="_blank" href="../img/fbpe/sp/v10n2/art11fig9.htm">Figura 9</a> como Mediador_personalización y Mediador_datos,  han sido definidos como conectores. En el primer caso, el conector permite la  comunicación entre varios componentes relacionados con la funcionalidad de  personalización del subsistema Tutor. De esta forma, se prevee que si se produce  la actualización de alguno de los componentes involucrados, se minimicen los  efectos entre los restantes. En el caso del Mediador_datos, su objetivo es  aislar los aspectos de conectividad propios de la aplicación con respecto al  componente encargado del almacenamiento y administración de los datos. De esta  forma, se favorece tanto la facilidad de modificación como la portabilidad del  sistema.</p> </font><b><font FACE="Verdana" SIZE="2">     <p align="justify">Etapa de Refinamiento Arquitectónico</p> <i>     <p align="justify">Identificación de Subsistemas y Aplicación de Estilos y  Patrones Arquitectónicos</p> </i></font></b><font SIZE="2" face="Verdana">     <p align="justify">En la Figura 9 se muestran los subsistemas identificados y  los componentes incluidos en cada uno. Adicionalmente, se refina la arquitectura  por medio de la aplicación del estilo de capas, lográndose por una parte,  cohesionar los componentes que presenten similitudes entre si en cuanto a las  áreas funcionales en las que actúan; y por otra, disminuir el acoplamiento entre  los componentes dedicados a la presentación del sistema, los componentes  dedicados a la lógica del sistema y los componentes que facilitan la  persistencia.</p>     ]]></body>
<body><![CDATA[<p align="justify">Los subsistemas identificados son el Subsistema Tutor y el  Subsistema de Análisis, ubicados en la capa lógica. Cada uno de los subsistemas  posee su propia interfaz gráfica, localizada en la capa de presentación. Al  mismo tiempo, la capa lógica (Subsistema de Tutor y Subsistema de Análisis)  puede acceder a la capa de persistencia a través de la capa de acceso, la cual  actúa como un conector que encapsula los aspectos relativos al establecimiento  de la comunicación entre el sistema y los mecanismos de almacenamiento (capa de  persistencia). </p>     <p align="justify">Como puede observarse, el resultado obtenido se resume en una  estructura arquitectónica en la que se adopta un conjunto de estrategias  consideradas apropiadas frente a las exigencias planteadas por el conjunto de  requisitos funcionales y no funcionales identificados. Por ejemplo, para el caso  de la característica de facilidad de mantenimiento, se aplicaron varias  estrategias arquitectónicas como la de separación y la indirección de datos. La  primera busca desacoplar la data con respecto a las funciones del sistema. Tal  separación facilita la modificación de los componentes encargados de ejecutar  las funciones sin que ello signifique necesariamente que los componentes de </font><font SIZE="2"><font face="Verdana">datos deban ser ajustados (Bachmann,  Bass y Klein, 2002). En el caso de la arquitectura propuesta, se aplica en  primer lugar el estilo Cliente-Servidor, el cual a su vez se implementa a través  del estilo de capas (Clements y otros, 2002) (<a href="#fig10">Figura 10</a>).</font></font></p>     <p align="center"><font SIZE="2"><a name="fig10"> <img border="0" src="/img/fbpe/sp/v10n2/art11fig10.gif" width="551" height="301"></a></p>     
<p align="justify"><font face="Verdana">La estrategia de indirección de datos  consiste básicamente en desacoplar consumidores y productores de datos. De esta  forma se facilita </font></font><font FACE="Verdana" SIZE="2">la modificación de  los distintos componentes, al mismo tiempo que se minimizan los efectos  colaterales que tales cambios pueden generar sobre el resto del sistema  (Bachmann, Bass y Klein, 2002). En la arquitectura propuesta, la indirección de  datos le logra a través de la aplicación de los patrones <i> Publicador-Subscriptor</i>, <i>Mediador </i>y <i>Modelo-Vista-Control</i>. El  patrón Publicador-Subscriptor permite la sincronización del estado de los  componentes productores y consumidores, donde los productores son denominados  Publicadores y los consumidores son denominados Subscriptores (Clements y otros,  2002). Cuando un Publicador &quot;publica&quot; nueva información, todos los Subscriptores  son notificados y automáticamente reciben la data. Lo anterior evidencia que el  repositorio de información no es pasivo, sino más bien, tiene un rol activo,  pues debe decidir a cuales Subscriptores debe enviar la información, ya que cada  uno de ellos tiene interés sobre un tipo determinado de información. Es  recomendable utilizar este patrón para responder a escenarios en los que pueden  cambiar las estructuras de los datos generados por los Productores. También es  recomendable cuando varios subscriptores comparten interés por un mismo tipo de  datos, permitiendo la comunicación de estos de manera selectiva. Por otra parte,  cambios eventuales realizados en componentes Consumidores de datos, no deberían  reflejarse sobre las estructuras de datos o sobre los Productores de datos. En  el caso de la arquitectura que se propone en este trabajo, el patrón  Publicador-Subscriptor se aplica a través de los componentes <i>Admnistrador de  subscripciones del sistema análisis </i>y <i>Administrador de subscripciones del  sistema tutor</i>. En ambos casos, los componentes son básicamente repositorios  de datos, pero con la responsabilidad de dirigir la información apropiada a los  demás componentes que interactúan. Es importante explicar que los </font> <font SIZE="2"><font face="Verdana">distintos componentes dentro de los  subsistemas pueden asumir en un momento dado el rol de productor de información  y en otro comportarse como consumidores de datos.</font></p>     <p align="justify"><font face="Verdana">El patrón Mediador encapsula el  comportamiento de componentes que interactúan, promoviendo el bajo acoplamiento  en un contexto en el cual es </font></font><font FACE="Verdana" SIZE="2"> necesaria la comunicación (Gamma, Helm, Johnson y Vlissides, 1998). Se  diferencia del patrón anterior en que el Mediador no es un repositorio de  información, sino más bien se comporta como un conector que en muchos casos debe  realizar modificaciones sobre la información antes de transmitirla a otro  componente. En la arquitectura propuesta, los componentes <i>Mediador de  Personalización</i>, <i>Mediador de datos </i>y <i>Conector_repositorio </i> asumen el rol de Mediadores. En el caso de los dos últimos, estos conforman la  capa de acceso, encapsulando los mecanismos de conexión necesarios para  comunicar la capa lógica con la capa de persistencia. De esta manera, se  favorece la portabilidad del sistema debido a que el mismo puede interactuar con  varios sistemas de bases de datos con tan sólo realizar cambios en la capa de  acceso.</p>     <p align="justify">El patrón Modelo-Vista-Control es recomendable cuando la  misma información es presentada de distintas maneras, por ejemplo a través de un  gráfico de barras o a través de un gráfico de torta. Los elementos que </font> <font SIZE="2"><font face="Verdana">conforman este patrón son: </font></p>     <p align="justify"><font face="Verdana">a. Modelo: componente que encapsula los  datos básicos y la funcionalidad. En la arquitectura propuesta, el componente </font></font><font FACE="Verdana" SIZE="2"><i>Administrador_Consultas </i>asume  el rol del Modelo (<a href="#fig11">Figura 11</a>). </font></p>     <p align="center"><a name="fig11"> <img border="0" src="/img/fbpe/sp/v10n2/art11fig11.gif" width="552" height="619"></a></p> <font SIZE="2">     
<p align="justify"><font face="Verdana">b. Vista: componente que despliega la  información al usuario. La vista obtiene la información del modelo, existiendo  múltiples vistas por modelo. A cada vista se le asocia un componente control. En  el caso de la arquitectura propuesta, el componente </font></font> <font FACE="Verdana" SIZE="2"><i>Interfaz Gráfica del Administrador de Consultas </i></font><font SIZE="2"><font face="Verdana">asume el rol del componente  vista. </font></p>     <p align="justify"><font face="Verdana">c. Control: cuya función es recibir las  entradas realizadas por el usuario y posiblemente los eventos relativos al  control del ratón o entradas del teclado. El componente </font></font> <font FACE="Verdana" SIZE="2"><i>Interfaz Gráfica del Administrador de Consultas </i>tiene asociado el componente <i>Control _Interfaz_Administrador_Consultas, </i>encargado de controlar la interacción entre este y los componentes <i>Vistas  Gráficas</i>. Al mismo tiempo, el componente <i> Control_Interfaz_Administrador_Consultas </i>controla la comunicación con el  componente <i>Administrador_Consultas</i></font><b><font SIZE="2" face="Verdana">.</p>     ]]></body>
<body><![CDATA[<p align="justify">Conclusiones</p> </font></b><font SIZE="2" face="Verdana">     <p align="justify">El arquitecto de software tiene como tarea esencial, la  generación de la arquitectura más idónea para un sistema de software. Tal  objetivo es alcanzado tras un esfuerzo sostenido por comprender tanto el espacio  del problema como el espacio de la solución. En el espacio del problema, el  arquitecto de software debe distinguir e identificar aquellos requisitos que  realmente tengan repercusión en la arquitectura del sistema, lo cual implica en  muchos casos un ejercicio de reinterpretación de los mismos, o al menos de  adecuación. Con esto último, se quiere significar que en muchos casos, los  requisitos deben ser expresados de manera tal que faciliten la identificación de  los elementos que conformarán la arquitectura. Por otra parte, en el espacio de  la solución, el arquitecto debe aplicar aquellos mecanismos que mejor respondan  a los requisitos planteados, los cuales en muchos casos generan efectos entre  sí, difíciles de resolver. En este contexto, MUDA es propuesto como un método en  el que se intentan unificar elementos extraídos de otros métodos centrados en la  visión arquitectónica del software con el fin de responder a la dificultad  inherente al proceso de generación de una arquitectura a partir de un conjunto  de requisitos. Su fortaleza, creemos, está en que este permite al arquitecto de  software ir construyendo de manera progresiva una arquitectura a través de un  mecanismo de derivación que facilita la generación de elementos arquitectónicos  a partir de requisitos tanto funcionales como no funcionales. Por otra parte, se  ha puesto especial énfasis en utilizar conceptos arquitectónicos de aceptación  generalizada, proponiéndose además utilizar UML como medio de especificación de  los </font><font SIZE="2"><font face="Verdana">constituyentes arquitectónicos.</font></p>     <p align="justify"><font face="Verdana">Consideramos que MUDA responde a los  siguientes aspectos críticos en el diseño de una arquitectura: la adecuación de  requisitos, la derivación de elementos arquitectónicos potenciales y la  transformación arquitectónica. </font></font><font FACE="Verdana" SIZE="2">La  adecuación arquitectónica se lleva acabo a través de la identificación de los  casos de uso y la construcción del árbol de calidad, junto con los escenarios  correspondientes. La derivación arquitectónica se realiza a través de la  aplicación de la taxonomía CBSP y la posterior generación de los modelos de  componentes y conectores, considerando tanto los requisitos funcionales como los  no funcionales. Por último, la transformación arquitectónica se realiza a través  de la aplicación de mecanismos tales como los estilos y patrones  arquitectónicos. </p> <b>     <p align="justify">Referencias </p> </b>     <!-- ref --><p align="justify">1. Bass, L., Clements, P., Kazman, R. (2003). <i>Software  Architecture in Practice</i></font><font size="2"><font face="Verdana">.  Massachussets, Addison-Wesley. Segunda edición.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301288&pid=S1317-5815200900020001100001&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">2. Brito, I. y Moreira, A. (2004). </font> </font><font FACE="Verdana" SIZE="2"><i>Integrating the NFR framework in a RE  model</i></font><font size="2"><font face="Verdana">. (Documento en línea).  Disponible: <a href="http://trese.cs.utwente.nl/workshops/early-aspects-2004/Papers/BritoMoreira.pdf"> http://trese.cs.utwente.nl/workshops/early-aspects-2004/Papers/BritoMoreira.pdf</a>  (Consulta: 2008, Abril 27). </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301289&pid=S1317-5815200900020001100002&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">3. Bosch, J. (2000). </font></font> <font FACE="Verdana" SIZE="2"><i>Design &amp; Use of Software Architecture. </i> </font><font size="2"><font face="Verdana">Addison-Wesley.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301290&pid=S1317-5815200900020001100003&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">4. Bransford, J. (2000). </font></font> <font FACE="Verdana" SIZE="2"><i>Anchored Instruction</i></font><font face="Verdana" size="2">.  (Documento en línea).</font><font face="Verdana" size="2"> Disponible: <a href="http://www.gwu.edu">http://www.gwu.edu</a> (</font><font size="2"><font face="Verdana">Consulta:  2008, Marzo 22).</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301291&pid=S1317-5815200900020001100004&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">5. Chung, L., Cooper, K., y Yi, A. (2002). </font></font><font FACE="Verdana" SIZE="2"><i>Developing Adaptable Software  Architectures Using Design Patterns: a NFR Approach</i>. Departament of Computer  Science, University of Texas at Dallas. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301292&pid=S1317-5815200900020001100005&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify">6. Chung, L., Cooper, K. y Yi, A. (2003). <i>Developing  adaptable software architecture using design pattern: an NFR approach</i></font><font size="2"><font face="Verdana">.  Computer Standards &amp; Interfaces, v.25 n.3, p.253.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301293&pid=S1317-5815200900020001100006&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">7. Clements, P., Bachmann, F., Bass, L.,  Garlan, D., Ivers, J., Little, R., Nord, R. y Stafford, J. (2002). </font></font> <font FACE="Verdana" SIZE="2"><i>Documenting Software Architectures</i>: <i> Views and Beyond</i></font><font size="2"><font face="Verdana">. Addison Wesley.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301294&pid=S1317-5815200900020001100007&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">8. Esteves, Y. (2001). </font></font> <font FACE="Verdana" SIZE="2"><i>Diseño instruccional en energía para primer año  de ciencias de Educación Media Diversificada y Profesional. </i>Trabajo de grado  de Maestría. Caracas, </font><font size="2"><font face="Verdana">Universidad  Pedagógica Experimental Libertador, Instituto Pedagógico de Caracas.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301295&pid=S1317-5815200900020001100008&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">9. Esteves, Y., Guillén-Drija, C. (2007). </font></font><font FACE="Verdana" SIZE="2"><i>Arquitectura para un Software  Educativo en el Dominio de la Enseñanza de la Física. Caso de Estudio: Software  Educativo en Petróleo y Energía. </i>Trabajo de ascenso no publicado.  Universidad Pedagógica </font><font size="2"><font face="Verdana">Experimental  Libertador, Instituto Pedagógico de Miranda J.M. Siso Martínez, Caracas. </font> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301296&pid=S1317-5815200900020001100009&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">10. Esteves, Y., Rodríguez, J., y Guillén,  C. (2003). Línea de Investigación en Enseñanza de la Física. </font></font> <font FACE="Verdana" SIZE="2"><i>Ponencia presentada en la Jornada anual de  Investigación Educativa</i>. Maracay: UPEL.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301297&pid=S1317-5815200900020001100010&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify">11. Gamma, E., Helm, R., Johnson, R. y Vlissides, J. (1998) [DC]. <i>Design Patterns</i></font><font size="2"><font face="Verdana">. Addison  Wesley.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301298&pid=S1317-5815200900020001100011&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">12. Garlan, D., Monroe, R., Wile, D. (1997).  Acme: </font></font><font FACE="Verdana" SIZE="2"><i>An Architectural  Description Interchange language</i></font><font size="2"><font face="Verdana">.  Proceedings of CASCON’97. </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301299&pid=S1317-5815200900020001100012&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">13. Grünbacher, P., Egyed, A., Medvidovic, N.  (2003). </font></font><font FACE="Verdana" SIZE="2"><i>Reconciling Software  Requirements and Architectures: the CBSP Approach</i></font><font size="2"><font face="Verdana">.  Journal of Software and Systems Modeling (SOSYM).</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301300&pid=S1317-5815200900020001100013&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">14. Guillén, C. (2002). </font></font> <font FACE="Verdana" SIZE="2"><i>Especificación de Patrones Arquitectónicos para  Sistemas Distribuidos. </i>Trabajo de Grado de Maestría no publicado.  Universidad Central de Vene</font><font size="2"><font face="Verdana">zuela,  Caracas.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301301&pid=S1317-5815200900020001100014&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">15. Jani, D., Vanderveken, D. y Perry, D.  (2004). </font></font><font FACE="Verdana" SIZE="2"><i>Deriving Architecture  Specifications from KAOS Specifications: a Reseach Case Study. </i>Empirical  Software Engineering Lab. Austin, University of Texas. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301302&pid=S1317-5815200900020001100015&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify">16. Kazman, R., Klein, M., Barbacci, T., Longstaff, H., Lipson,  H. y Carriere, J. (1998). <i>The Architecture Tradeoff Analyisis Method</i></font><font size="2"><font face="Verdana">.  IEEE, ICECCS.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301303&pid=S1317-5815200900020001100016&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">17. Klein, M. y Kazman, R. (1999). </font> </font><font FACE="Verdana" SIZE="2"><i>Attribute-Based Architectural Styles</i>.  Carnigie Mellon University. Software Engineering Institute. CMU/SEI-99-TR-022. </font><font face="Verdana" size="2">(Docu</font><font face="Verdana" size="2">mento  en línea]. Disponible: <a href="http://www.sei.cmu.edu/publications/documents/99.reports/99tr022/99tr022abstract.html"> http://www.sei.cmu.edu/publications/documents/99.reports/99tr022/99tr022abstract.html</a>  (</font><font size="2"><font face="Verdana">Consulta: 2008, Abril 12]</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301304&pid=S1317-5815200900020001100017&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">18. Krutchen, P. (2000). </font></font> <font FACE="Verdana" SIZE="2"><i>The Rational Unified Process. An Introduction</i></font><font face="Verdana" size="2">.  Second Edition. Addison-Wesley. Massachusetts, </font><font size="2"> <font face="Verdana">Readings. </font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301305&pid=S1317-5815200900020001100018&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">19. Lamsweerde, A. (2003). </font></font> <font FACE="Verdana" SIZE="2"><i>From System Goals to Software Architecture. </i> </font><font size="2"><font face="Verdana">Bélgica, Université Catholique de  Louvain.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301306&pid=S1317-5815200900020001100019&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">20. Losavio, F., Chirinos, L., Lévy, N.,  Ramdane-Cherif, A. (2002). </font></font><i><font FACE="Verdana" size="2">Quality  Characteristics For Software Architectur INCO SQUADProject EP 962019 y CDCH-ARCAS  Project 03.13.4584.00.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301307&pid=S1317-5815200900020001100020&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify">21. Losavio, F., Chirinos, L., Pérez, M. (2001). Feature Analysis  for quality-based architectural design methods.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301308&pid=S1317-5815200900020001100021&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify">22. McCalla, G. y Greer, J. (1987). The practical use  ofartificial intelligence in auto</font><font face="Verdana"><font size="2">mated</font><font size="2">  tutoring: current status and impediments to progress. </font></font> <font FACE="Verdana" SIZE="2"><i>Laboratory for advanced research in intelligent  educational system. </i>Canadá: Department of computational science. University  of Saskatchewan.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301309&pid=S1317-5815200900020001100022&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify">23. OMT (Object Management Group). (2005). <i>Unified Modeling  Language: Superstructure</i></font><font size="2"><font face="Verdana">. Version  2.0.formal/05-07-04.</font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301310&pid=S1317-5815200900020001100023&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify"><font face="Verdana">24. Shaw, M., Garlan, D. (1996). </font> </font><font FACE="Verdana" SIZE="2"><i>Software Architecture: Perspectives on  an Emerging Discipline</i>. Printice – Hall. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301311&pid=S1317-5815200900020001100024&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --><!-- ref --><p align="justify">25. Spiro, R., Feltovitch, P. y Coulson, R. (2000). <i>Cognitive  flexibility theory</i>. (Documento en línea). Disponible: <a href="http://www.gwu.edu">http://www.gwu.edu</a> (Consulta: 2007, Enero 22).&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&#160;<a href="javascript:void(0);" onclick="javascript: window.open('/scielo.php?script=sci_nlinks&ref=3301312&pid=S1317-5815200900020001100025&lng=','','width=640,height=500,resizable=yes,scrollbars=1,menubar=yes,');">Links</a>&#160;]<!-- end-ref --> ]]></body>
<back>
<ref-list>
<ref id="B1">
<label>1</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bass]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Clements]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Kazman]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[Software Architecture in Practice]]></source>
<year>2003</year>
<edition>Segunda</edition>
<publisher-loc><![CDATA[Massachussets ]]></publisher-loc>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B2">
<label>2</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Brito]]></surname>
<given-names><![CDATA[I]]></given-names>
</name>
<name>
<surname><![CDATA[Moreira]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Integrating the NFR framework in a RE model]]></source>
<year>2004</year>
</nlm-citation>
</ref>
<ref id="B3">
<label>3</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bosch]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Design & Use of Software Architecture]]></source>
<year>2000</year>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B4">
<label>4</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Bransford]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Anchored Instruction]]></source>
<year>2000</year>
</nlm-citation>
</ref>
<ref id="B5">
<label>5</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chung]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Cooper]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[y Yi]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Developing Adaptable Software Architectures Using Design Patterns: a NFR Approach]]></source>
<year>2002</year>
<publisher-name><![CDATA[Departament of Computer Science, University of Texas at Dallas]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B6">
<label>6</label><nlm-citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Chung]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Cooper]]></surname>
<given-names><![CDATA[K]]></given-names>
</name>
<name>
<surname><![CDATA[Yi]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<article-title xml:lang="en"><![CDATA[Developing adaptable software architecture using design pattern: an NFR approach]]></article-title>
<source><![CDATA[Computer Standards & Interfaces]]></source>
<year>2003</year>
<volume>25</volume>
<numero>3</numero>
<issue>3</issue>
<page-range>253</page-range></nlm-citation>
</ref>
<ref id="B7">
<label>7</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Clements]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Bachmann]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Bass]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Garlan]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Ivers]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Little]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Nord]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Stafford]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[Documenting Software Architectures: Views and Beyond]]></source>
<year>2002</year>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B8">
<label>8</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Esteves]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
</person-group>
<source><![CDATA[Diseño instruccional en energía para primer año de ciencias de Educación Media Diversificada y Profesional]]></source>
<year>2001</year>
</nlm-citation>
</ref>
<ref id="B9">
<label>9</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Esteves]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
<name>
<surname><![CDATA[Guillén-Drija]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Arquitectura para un Software Educativo en el Dominio de la Enseñanza de la Física: Caso de Estudio: Software Educativo en Petróleo y Energía]]></source>
<year>2007</year>
</nlm-citation>
</ref>
<ref id="B10">
<label>10</label><nlm-citation citation-type="confpro">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Esteves]]></surname>
<given-names><![CDATA[Y]]></given-names>
</name>
</person-group>
<person-group person-group-type="editor">
<name>
</name>
<name>
<surname><![CDATA[Rodríguez]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
<name>
<surname><![CDATA[Guillén]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Línea de Investigación en Enseñanza de la Física]]></source>
<year>2003</year>
<conf-name><![CDATA[ Jornada anual de Investigación Educativa]]></conf-name>
<conf-loc>Maracay </conf-loc>
</nlm-citation>
</ref>
<ref id="B11">
<label>11</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Gamma]]></surname>
<given-names><![CDATA[E]]></given-names>
</name>
<name>
<surname><![CDATA[Helm]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Johnson]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Vlissides]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[[DC]. Design Patterns]]></source>
<year>1998</year>
<publisher-name><![CDATA[Addison Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B12">
<label>12</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Garlan]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Monroe]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Wile]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[Acme: An Architectural Description Interchange language]]></source>
<year>1997</year>
<publisher-name><![CDATA[Proceedings of CASCON’97]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B13">
<label>13</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Grünbacher]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Egyed]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
<name>
<surname><![CDATA[Medvidovic]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
</person-group>
<source><![CDATA[Reconciling Software Requirements and Architectures: the CBSP Approach]]></source>
<year>2003</year>
</nlm-citation>
</ref>
<ref id="B14">
<label>14</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Guillén]]></surname>
<given-names><![CDATA[C]]></given-names>
</name>
</person-group>
<source><![CDATA[Especificación de Patrones Arquitectónicos para Sistemas Distribuidos]]></source>
<year>2002</year>
</nlm-citation>
</ref>
<ref id="B15">
<label>15</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Jani]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Vanderveken]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
<name>
<surname><![CDATA[Perry]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[Deriving Architecture Specifications from KAOS Specifications: a Reseach Case Study]]></source>
<year>2004</year>
<publisher-name><![CDATA[Empirical Software Engineering Lab. Austin, University of Texas]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B16">
<label>16</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Kazman]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Klein]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Barbacci]]></surname>
<given-names><![CDATA[T]]></given-names>
</name>
<name>
<surname><![CDATA[Longstaff]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
<name>
<surname><![CDATA[Lipson]]></surname>
<given-names><![CDATA[H]]></given-names>
</name>
<name>
<surname><![CDATA[Carriere]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[The Architecture Tradeoff Analyisis Method]]></source>
<year>1998</year>
<publisher-name><![CDATA[IEEE, ICECCS]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B17">
<label>17</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Klein]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Kazman]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[Attribute-Based Architectural Styles]]></source>
<year>1999</year>
<publisher-name><![CDATA[Carnigie Mellon University. Software Engineering Institute]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B18">
<label>18</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Krutchen]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
</person-group>
<source><![CDATA[The Rational Unified Process: An Introduction]]></source>
<year>2000</year>
<edition>Second</edition>
<publisher-loc><![CDATA[Massachusetts ]]></publisher-loc>
<publisher-name><![CDATA[Addison-Wesley]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B19">
<label>19</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Lamsweerde]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[From System Goals to Software Architecture]]></source>
<year>2003</year>
<publisher-loc><![CDATA[Bélgica ]]></publisher-loc>
<publisher-name><![CDATA[Université Catholique de Louvain]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B20">
<label>20</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Losavio]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Chirinos]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Lévy]]></surname>
<given-names><![CDATA[N]]></given-names>
</name>
<name>
<surname><![CDATA[Ramdane-Cherif]]></surname>
<given-names><![CDATA[A]]></given-names>
</name>
</person-group>
<source><![CDATA[Quality Characteristics For Software Architectur INCO SQUADProject EP 962019 y CDCH-ARCAS Project 03.13.4584.00]]></source>
<year>2002</year>
</nlm-citation>
</ref>
<ref id="B21">
<label>21</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Losavio]]></surname>
<given-names><![CDATA[F]]></given-names>
</name>
<name>
<surname><![CDATA[Chirinos]]></surname>
<given-names><![CDATA[L]]></given-names>
</name>
<name>
<surname><![CDATA[Pérez]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
</person-group>
<source><![CDATA[Feature Analysis for quality-based architectural design methods]]></source>
<year>2001</year>
</nlm-citation>
</ref>
<ref id="B22">
<label>22</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[McCalla]]></surname>
<given-names><![CDATA[G]]></given-names>
</name>
<name>
<surname><![CDATA[Greer]]></surname>
<given-names><![CDATA[J]]></given-names>
</name>
</person-group>
<source><![CDATA[The practical use ofartificial intelligence in automated tutoring: current status and impediments to progress. Laboratory for advanced research in intelligent educational system]]></source>
<year>1987</year>
<publisher-name><![CDATA[Department of computational science University of Saskatchewan]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B23">
<label>23</label><nlm-citation citation-type="">
<collab>OMT (Object Management Group)</collab>
<source><![CDATA[Unified Modeling Language: Superstructure]]></source>
<year>2005</year>
</nlm-citation>
</ref>
<ref id="B24">
<label>24</label><nlm-citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Shaw]]></surname>
<given-names><![CDATA[M]]></given-names>
</name>
<name>
<surname><![CDATA[Garlan]]></surname>
<given-names><![CDATA[D]]></given-names>
</name>
</person-group>
<source><![CDATA[Software Architecture: Perspectives on an Emerging Discipline]]></source>
<year>1996</year>
<publisher-name><![CDATA[Printice - Hall]]></publisher-name>
</nlm-citation>
</ref>
<ref id="B25">
<label>25</label><nlm-citation citation-type="">
<person-group person-group-type="author">
<name>
<surname><![CDATA[Spiro]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
<name>
<surname><![CDATA[Feltovitch]]></surname>
<given-names><![CDATA[P]]></given-names>
</name>
<name>
<surname><![CDATA[Coulson]]></surname>
<given-names><![CDATA[R]]></given-names>
</name>
</person-group>
<source><![CDATA[Cognitive flexibility theory]]></source>
<year>2000</year>
</nlm-citation>
</ref>
</ref-list>
</back>
</article>
