Logo Studenta

TE 260

¡Este material tiene más páginas!

Vista previa del material en texto

CENTRO DE INVESTIGACION EN MATEMÁTICAS, A.C. 
 
 
Modelo para el Desarrollo de 
Arquitecturas de Software 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Reporte Técnico de Investigación 
que para obtener el grado de 
 
 
 
Maestro en Ingeniería de Software 
 
presenta 
 
 
José de Jesús Hernández Suárez 
 
Director: 
 
Dr. Carlos Montes de Oca Vázquez 
 
 
 
Guanajuato, Gto. a 22 de julio de 2005. 
 
 
 
 
Resumen 
 
 
 
 
El desarrollar sistemas de software cada vez más grandes y complejos para cubrir las necesidades y 
objetivos de las organizaciones actuales, exige prestar atención y especial cuidado al diseño de la arquitectura 
de dichos sistemas. Se sabe que el proceso para elaborar una arquitectura de software es muy crítico e 
importante para el desarrollo de un sistema de software de gran escala; requiere de conocimientos, 
experiencia y creatividad por parte del arquitecto. Son pocas las propuestas de proceso para elaborar una 
arquitectura de software que existen en la literatura, en su mayoría dejan en un alto nivel los pasos que se 
deben seguir, y en otros casos sólo atacan una parte del proceso. Por otra parte, las organizaciones y 
arquitectos de software requieren un proceso que les muestre a detalle las actividades que tienen que seguir, 
así como los recursos en los que se pueden apoyar para elaborar una arquitectura de software. El presente 
trabajo se encuentra orientado a la atención de estos problemas, proponiendo un modelo de proceso para el 
desarrollo de arquitecturas de software, el cual contempla la definición de pasos a cubrir, el flujo de 
actividades a detalle que se deben seguir, la especificación entradas y salidas para cada una de dichas 
actividades, la descripción de las herramientas susceptibles de utilizar para apoyar las mismas, la descripción 
de los roles que intervienen, y la definición de las métricas que se deben registrar para controlar y mejorar el 
proceso. 
 
 
 
 
 
 
 
 
 
Agradecimientos 
 
 
 
El presente trabajo representa el fruto del apoyo, aliento, confianza, guía, enseñanzas y aportaciones que recibí 
de muchas personas. Deseo expresar mi más reconocida gratitud a todas ellas. 
 
Al Dr. Carlos Montes de Oca, mi director de investigación, por sus excelentes y puntuales observaciones, 
recomendaciones, enseñanzas y guía que orientaron mi camino para llevar a cabo este esfuerzo, así como a lo largo 
de la maestría. 
 
Al Dr. Cuauhtémoc Lemus Olalde, por todos los conocimientos transmitidos a través de sus enseñanzas, 
ejemplos, y observaciones como experto en arquitecturas de software, así como todo su apoyo. 
 
Al Dr. Miguél Ángel Serrano, por sus diversas aportaciones que reforzaron mi enseñanza en diferentes 
temáticas a lo largo de la maestría. 
 
Al Consejo de Ciencia y Tecnología del Estado de Guanajuato (CONCYTEG), por su parcial financiamiento a 
través del proyecto GTO-2002-C01-5333 titulado "Promoviendo calidad en la industria de software: recursos 
humanos, investigación, servicios" como programa de beca, lo cual me permitió estudiar una maestría de alta calidad 
académica. 
 
A mis amigos y compañeros de generación de la maestría, Karen Cortés, Omar Gómez, Gustavo Herrera, Juan 
Antonio López y Nayhely Trujillo, por su valiosísimas experiencias transmitidas, por su incondicional y sincero apoyo 
en todo momento, y por su grandísima paciencia que siempre me tuvieron para avanzar en nuestro camino. 
 
A mi alma mater, la Universidad Nacional Autónoma de México, y especialmente a la Dirección General de 
Servicios de Cómputo Académico (DGSCA), por forjar mi carrera, conocimiento, habilidades y experiencia, que me 
han ayudado a lo largo de mi vida académica y profesional, y que sin duda alguna me ayudaron a concluir mi 
maestría por todo lo que siempre me transmitió. 
 
Al Dr. Juan Voutssás Márquez, a la Mtra. Marcela Peñaloza Báez, al Mtro. Hugo Alonso Reyes Herrera, al Lic. 
José Luis Medina Flores, y a todos mi excelentes amigos y compañeros de la Dirección de Sistemas de la DGSCA que 
me dieron su invaluable apoyo, inspiración y aliento para estudiar esta maestría, así como sus excelentes 
experiencias, enseñanzas y ejemplos transmitidos que han ayudado a mi formación. 
 
Y especialmente a mi gran familia, mis padres José de Jesús y Sofía, mis hermanos, Olivia, Sofía, Verónica, Luis 
Adrián y Alejandra, por su incondicional apoyo, cariño, impulso, aliento y confianza que siempre he recibido de ellos y 
me ha ayudado a ser quien soy. 
 
Atentamente, José de J. 
 
 
 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Estudio de Investigación 
 
 
Tabla de Contenido 
 
1. INTRODUCCIÓN..........................................................................................................................................3 
2. DESCRIPCIÓN DEL PROBLEMA.....................................................................................................................5 
3. TRABAJO PREVIO........................................................................................................................................6 
3.1. CONCEPTOS BÁSICOS ...............................................................................................................................6 
3.2. PROCESOS DE ARQUITECTURA DE SOFTWARE...................................................................................................7 
3.3. DISEÑO DE ARQUITECTURAS.......................................................................................................................9 
3.4. ESTÁNDARES .......................................................................................................................................13 
3.5. HERRAMIENTAS ....................................................................................................................................15 
4. PROPUESTA DE SOLUCIÓN........................................................................................................................17 
5. MODELO PARA EL DESARROLLO DE ARQUITECTURAS DE SOFTWARE .........................................................19 
5.1. IDENTIFICAR REQUERIMIENTOS ARQUITECTÓNICOS .........................................................................................22 
5.2. DISEÑAR LA ARQUITECTURA .....................................................................................................................27 
5.3. VERIFICAR LA ARQUITECTURA ...................................................................................................................32 
5.4. ADECUAR LA ARQUITECTURA ....................................................................................................................34 
5.5. DOCUMENTAR LA ARQUITECTURA...............................................................................................................37 
5.6. EVALUAR LA ARQUITECTURA.....................................................................................................................40 
5.7. VALIDAR LA ARQUITECTURA .....................................................................................................................41 
6. DISCUSIÓN DEL MODELO PARA EL DESARROLLO DE ARQUITECTURAS DE SOFTWARE ................................44 
6.1. DESVENTAJAS QUE PRESENTA EL MODELO.....................................................................................................44 
6.2. LIMITACIONES QUE PRESENTA EL MODELO ....................................................................................................44 
6.3. VENTAJAS QUE PRESENTA EL MODELO .........................................................................................................45 
6.4. RECOMENDACIONES DE UTILIZACIÓN DEL MODELO ..........................................................................................45 
6.5. ALCANCEY MEJORAS..............................................................................................................................46 
7. CONCLUSIONES Y TRABAJO FUTURO.........................................................................................................47 
8. BIBLIOGRAFÍA ..........................................................................................................................................49 
9. GLOSARIO ................................................................................................................................................51 
10. APÉNDICE A. BIBLIOGRAFÍA ADICIONAL ...............................................................................................53 
 
 
 
 
 
 
 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Estudio de Investigación 
 
Lista de Figuras 
 
Figura 3.2.1, Desarrollo basado en arquitecturas…………………………..……………………………………………………………. 8 
Figura 3.2.2, Esquema de un método de diseño de arquitectura…………………………………………………………………… 9
Figura 3.3.1, Descomposición del sistema en elementos de diseño, 
Método de Diseño Basado en Arquitectura………………………………………………………………………………………….......... 10
Figura 3.3.2, Matriz de obtención de escenarios genérica…………………………………………………………………………….. 11
Figura 3.4.1, Tabla de comparación de arquitecturas de acuerdo a atributos de calidad………………………………….. 13
Figura 3.4.2, Framework para la medición arquitectónica…………………………………………………………………….………. 14
Figura 3.5.1, Casa de calidad de QFD………………………………………………………………………………………………………… 15
Figura 4.1, Modelo pare el desarrollo de arquitecturas de software – MODAS – Proceso General…………………….. 17
Figura 5.1, Architecture-Based Development en relación con el 
Modelo para el Desarrollo de Arquitecturas de Software………………………………………………………………………………. 19
Figura 5.2, Vista detallada del Modelo para el Desarrollo de Arquitecturas de Software…………………………………… 21
Figura 5.1.1, Paso: Identificar requerimientos arquitectónicos del 
Modelo para el Desarrollo de Arquitecturas de Software………………………………………………………………………………. 23
Figura 5.1.2, Casa de calidad de SQFD………………………………………………………………………………………………………. 25
Figura 5.1.3, Matriz de relación de escenarios…………………………………………………………………………………………….. 26
Figura 5.2.1, Paso: Diseñar la arquitectura del Modelo para el Desarrollo de Arquitecturas de Software…………… 27
Figura 5.2.2, Descomposición del sistema…………………………………………………………………………………………………… 29
Figura 5.2.3, Selección de estilo arquitectónico…………………………………………………………………………………………… 30
Figura 5.3.1, Paso: Verificar la arquitectura del Modelo para el Desarrollo de Arquitecturas de Software…………… 32
Figura 5.4.1, Paso: Adecuar la arquitectura del Modelo para el Desarrollo de Arquitecturas de Software…………… 34
Figura 5.5.1, Paso: Documentar la arquitectura de software del 
Modelo para el Desarrollo de Arquitecturas de Software………………………………………………………………………………. 37
Figura 5.7.1, Paso: Validar la arquitectura del Modelo para el Desarrollo de Arquitecturas de Software……………. 41
 
 
Lista de Tablas 
 
Tabla 5.3, Notación para describir el Modelo para el Desarrollo de Arquitecturas de Software………………………… 22
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 3 
MODAS 
Modelo para el desarrollo de arquitecturas de software 
 
 
1. Introducción 
 
Las necesidades actuales que tiene toda organización para el logro de sus objetivos, demandan la construcción 
de grandes y complejos sistemas de software, mismos que requieren de la combinación de diferentes tecnologías y 
plataformas de hardware para alcanzar un buen funcionamiento acorde a dichas necesidades. Esto les sugiere a los 
ingenieros en software poner especial atención y cuidado en su proceso de diseño de la arquitectura de software 
bajo la cual está soportado el funcionamiento de dichos sistemas de software. Si una arquitectura de software se 
encuentra deficiente en su concepto o diseño, o en el peor de lo casos, no contamos con la arquitectura del sistema 
que nos encontremos desarrollando, tendremos grandes posibilidades de estar construyendo un sistema incorrecto 
que no alcanzará el total de los objetivos planteados. Esto indudablemente nos podrá llevar a un re-trabajo de mayor 
inversión tiempo que el planeado, o peor aun, nos podrá llevar al fracaso del sistema de software cuando se 
encuentre en operación. 
 
En el diseño de un sistema, existen dos fases generales que se pueden distinguir: 1) diseño arquitectónico y 2) 
diseño detallado. El diseño arquitectónico ocurre inmediatamente después de la especificación de requerimientos de 
software y antes del diseño detallado. Un diseño arquitectónico se encuentra enfocado a los elementos estructurales, 
funcionales y de comportamiento de un sistema, tratando de modelar el problema y la propuesta de solución. Los 
elementos estructurales que influencian las decisiones de diseño incluye: estructura de organización y control; 
comunicación, sincronización, y protocolos de acceso a datos; distribución física de funciones de elementos de 
diseño; desarrollo futuro, etc. Por su parte, el diseño detallado describe el control jerárquico, estructura de datos, 
lógica y empaquetado de elementos establecidos en el diseño estructural (traducido y modificado de) [1]. 
 
Bass, Clements y Kazman definen a la arquitectura de software de un programa o sistema de cómputo, como la 
estructura o estructura del sistema, la cual consta de componentes de software, propiedades visibles externamente 
de esos componentes y la relación a través de ellos (traducido de) [2]. 
 
De acuerdo al concepto de arquitectura de software, podemos decir que el proceso de elaboración de una 
arquitectura de software se refiere al conjunto de pasos que tenemos que seguir para conceptualizar, diseñar, 
definir, verificar, documentar y evaluar los diferentes componentes de software y sus propiedades bajo los cuales 
estará soportado un sistema de cómputo, así como la relación que existirá entre los mismos. 
 
El proceso de elaboración de arquitecturas de software representa uno de las procesos más importantes y a la 
vez más críticos del ciclo de vida del desarrollo de sistemas, debido a que en esta etapa es dónde se define y 
especifica el diseño de alto nivel del sistema, el cual fundamenta los componentes, estructura, organización y 
relaciones entre dichos componentes, mismos que permitirán llevar a cabo las funciones del sistema de acuerdo a los 
requerimientos e intereses de los usuarios. Para los ingenieros de software, un proceso definido para la elaboración 
de arquitecturas de software representa contar con una comunicación mutua con los diferentes stakeholders, realizar 
decisiones tempranas de diseño, evaluación e identificación temprana de restricciones de diseño, identificar atributos 
de calidad en conflicto o tradeoffs y reutilizar componentes de software, además de evitar errores, encontrar fallas y 
reducir costos a consecuencia de re-trabajo. 
 
Actualmente, importantes autores y expertos en la materia de arquitecturas de software, como Bass, Clements, 
Kazman, Nord, Kruchten, Garlan y Bachmann, entre otros, han realizado muy buenas aportaciones y 
recomendaciones en la materia, lo cual ha permitido adoptar y adaptar modelos para llevar a cabo un proceso de 
elaboración de arquitecturas de software, o bien un parte de ella. 
 
El problema radica en que existe la ausencia de la definición concreta de un proceso para la elaboración de una 
arquitectura de software que permita identificar claramente, las actividades a llevar a cabo en cada uno de los pasos 
propuestos, la secuencia concreta de las mismas, las entradas y salidas del proceso, así como de cada una de las 
actividades que presentan los pasos del mismo, y las herramientassusceptibles de utilizar para apoyar dichas 
actividades. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 4 
 
 
Por otra parte, sabemos que existe una empresa mexicana dedicada a la consultoría de software cuyo negocio 
base es el desarrollo de software a la medida, que preocupada por una constante mejora de procesos y control 
estadístico de sus operaciones, busca perfeccionar su proceso de elaboración de arquitecturas de software. 
Actualmente esta empresa cuenta con un proceso definido para esta fase del ciclo de vida de un sistema, sin 
embargo, se puntualiza que dicho proceso sirve como una guía, es decir, es opcional para los ingenieros de software 
al llevar a cabo la labor del diseño de una arquitectura, ya que no restringe el proceso utilizado en el diseño de la 
misma, debido a que es la parte más creativa del proceso de desarrollo. De esta manera, la empresa en ningún 
momento restringe las técnicas o metodologías utilizadas para representar o definir aspectos de diseño de la 
arquitectura, ni restringe las secciones a cubrir en su documentación, sin embargo, para arquitectos novatos o con 
poca experiencia, esta actividad puede ser complicada y muy laboriosa sino se cuenta con un proceso que detalle de 
manera clara las actividades que puede seguir, las entradas y salidas de las mismas, así como la descripción de los 
recursos o herramientas en los que se puede apoyar para llevar a cabo dichas actividades . 
 
Considerando que: 1) el proceso de elaboración de una arquitectura de software es de suma importancia y 
crítico para el desarrollo de un sistema de software de gran escala; 2) no existe en la literatura un modelo que 
permita identificar de manera clara y rápida las actividades a detalle que se deben seguir para la construcción de una 
arquitectura de software con la secuencia de las mismas, y la descripción de recursos o herramientas que apoyen 
cada una de dichas actividades; y que 3) el proceso definido por la empresa que hemos mencionado como ejemplo, 
aun con la correcta definición y control estadístico de otros procesos para el ciclo de vida de un sistema, el que se 
relaciona con el desarrollo de una arquitectura de software no es muy detallado y se encuentra débil en algunos 
aspectos; proponemos como solución diseñar un modelo de proceso para el desarrollo de arquitecturas de software 
que permita: a) identificar claramente las actividades a llevar a cabo en cada uno de los pasos propuestos, b) 
conocer detalladamente las entradas y salidas del proceso, así como de cada una de las actividades que presentan 
los pasos del mismo, c) conocer las herramientas o recursos que son posibles utilizar para apoyar dichas actividades, 
d) identificar los roles que deben de intervenir, y e) registrar métricas dentro de las actividades a llevar a cabo que 
permitan controlar y mejorar el proceso. De esta manera, el presente reporte de investigación presenta una 
propuesta de proceso para elaboración de arquitecturas de software definido, que trata de contemplar todos los 
elementos expuestos hasta el momento. La propuesta se encuentra basada principalmente en varios de los pasos y 
elementos que toman en cuenta el modelo de Desarrollo Basado en Arquitecturas de Len Bass y Rick Kazman [3]. 
 
El presente documento de reporte técnico se encuentra dividido en diez secciones. La primera sección esta 
representada por la presente introducción; la segunda sección describe la problemática a la que nos enfrentamos; la 
tercera sección muestra el trabajo previo realizado en la materia (estado del arte); la cuarta sección describe el 
nuestra propuesta de solución; la quinta sección describe el modelo para el desarrollo de arquitecturas de software 
propuesto; la sexta sección discute las desventajas, limitaciones, ventajas, recomendaciones, alcance y mejoras que 
hemos identificado para el modelo para el desarrollo de arquitecturas de software propuesto; la séptima sección da 
las conclusiones de la propuesta; la octava sección muestra las referencias analizadas para la elaboración del 
presente reporte; la novena sección presenta un glosario de términos utilizados a lo largo del presente documento, y 
finalmente, la décima sección presenta bibliografía adicional que apoyó la investigación. 
 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 5 
 
2. Descripción del problema 
 
Dentro del campo de las arquitecturas de software existen diferentes e importantes aportaciones que han 
realizado diversos expertos en la materia, como son: Bass, Clements, Kazman, Nord, Kruchten, Garlan y Bachmann, 
entre otros. Estos autores han propuesto distintos conceptos, modelos, técnicas y herramientas para llevar a cabo 
una arquitectura de software, o bien una parte de la misma, sin embargo son muy pocos los que consideran el 
proceso de manera completa, y aun un número mucho menor los que especifican el detalle de actividades a seguir 
en el proceso. Las organizaciones preocupadas por esta importante fase del ciclo de vida de desarrollo de sistemas, 
han tomando estas propuestas disponibles para esta fase del ciclo de vida de desarrollo de sistemas, y en el mejor 
de los casos las han adaptado para contar con un proceso mucho más definido para la creación de arquitecturas de 
software de acuerdo a las exigencias de sus clientes, sin embargo, en muchos de los casos continúa siendo 
deficiente. 
 
Actualmente existe una compañía mexicana de consultaría y desarrollo de software a la medida, quién 
preocupada por una constante mejora de procesos, y control y calidad de sus operaciones, cuenta con procesos bien 
definidos para todas las etapas del ciclo de vida de un sistema de software, incluyendo la elaboración de la 
arquitectura de software, sin embargo, este último proceso no cuenta con un nivel de detalle que muestre 
explícitamente a un ingeniero en software las actividades y herramientas que debe hacer uso para llegar al diseño de 
la arquitectura de una manera sencilla. Esta importante fase no restringe a los ingenieros en software el proceso 
utilizado, les proporciona una guía debido a que es la parte más creativa del proceso de desarrollo, y por tal 
situación, se ha detectado que existen debilidades que impiden cubrir varios de los aspectos y recomendaciones que 
hacen los expertos para la creación de una arquitectura de software. 
 
Sabemos que es muy importante y crítico el proceso de desarrollo de una arquitectura de software, debido a 
que el resultado de su ejecución nos conducirá al correcto, o bien, débil diseño de un sistema de software, lo cual 
puede traer como consecuencia re-trabajo en la fase de codificación del sistema, o peor aún en la fase de pruebas. 
Tomando esto en consideración, comprobando que los procesos o modelos actualmente propuestos por los expertos 
en arquitecturas de software se encuentran a un alto nivel, y que la industria de software no cuenta con una 
definición detallada de este proceso, podemos decir que la problemática común a la que se enfrentan los ingenieros 
de software en la fase de diseño de sistemas es que no cuentan con un recurso accesible que les muestre de manera 
clara las actividades a detalle de un proceso para elaboración de arquitecturas de software, el flujo que deben de 
seguir para llevar a cabo dichas actividades, definición clara de entradas y salidas respectivas, los roles quiénes 
desempeñan dichas actividades, y los recursos o herramientas que apoyen las actividades, además de métricas que 
permitan controlar y mejorar dicho proceso. Los modelos y propuestas de proceso actuales que recomiendan los 
expertos, no consideran en conjunto todos estos elementos que son de suma importancia para el diseño que llevan a 
cabolos ingenieros en software. Esto nos representa la posibilidad de proponer un proceso definido para elaboración 
de arquitecturas de software. 
 
El contar con un proceso definido de elaboración de arquitecturas de software trae como consecuencia varios 
beneficios para los ingenieros de software, tales como mejorar la comunicación mutua entre los diferentes 
stakeholders, realizar decisiones tempranas de diseño, evaluar e identificar tempranamente restricciones de diseño, 
identificar atributos de calidad en conflicto o tradeoffs y reutilizar componentes de software, además de evitar 
errores, encontrar fallas y reducir costos a consecuencia de re-trabajo. 
 
Por el contrario, si no atendemos la relevancia que tiene un proceso para elaboración de arquitecturas de 
software, nos encontramos en el riesgo de desarrollar software deficiente en su concepto o diseño, y por ende 
estaremos construyendo un sistema incorrecto que no alcanzara el total de los objetivos planteados. Esto nos llevará 
a un re-trabajo con mayor inversión de tiempo, esfuerzo y dinero del planeado, o peor aun, nos podrá llevar al 
fracaso del sistema de software cuando se encuentre en operación. 
 
Este trabajo se encuentre dirigido a la atención de los problemas descritos anteriormente, para lo cual 
definimos un modelo para la elaboración de arquitectura de software que busca satisfacer la carencia de un proceso 
que contemple el flujo de actividades, entradas, salidas, roles, herramientas y métricas que permitan desarrollarla. 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 6 
 
3. Trabajo previo 
 
Dentro del campo de la arquitectura de software, existen aportaciones importantes para los diferentes aspectos 
que deben ser considerados en su desarrollo. Distintos autores han realizado propuestas muy interesantes en 
relación a métodos o procesos para llevar a cabo una arquitectura de software, o bien alguna parte de ella. En la 
presente sección describimos brevemente algunos conceptos básicos y algunas de estas aportaciones, mismas que 
hemos estudiado y analizado como parte de la investigación del tema y en las cuales se basa nuestra propuesta de 
solución. 
 
La presente sección se encuentra dividida en cinco puntos principales. El primer punto describe algunos 
conceptos básicos de arquitecturas de software; el segundo punto menciona algunas propuestas de proceso para 
arquitecturas de software; el tercer punto describe técnicas para el diseño de arquitecturas de software; el cuarto 
punto menciona algunos estándares relacionados con arquitecturas de software, y finalmente el quinto punto hace 
mención de algunas herramientas adicionales que serán de utilidad para el proceso de desarrollo de arquitectura de 
software. 
 
3.1. Conceptos básicos 
 
Para comprender con mayor facilidad los elementos que son considerados en una arquitectura de software, 
mencionaremos a continuación algunos conceptos importantes, los cuales son: estilo arquitectónico, patrón 
arquitectónico, patrón de diseño, vistas y estructuras arquitectónicas, view point, escenarios y atributos de calidad. 
 
Un estilo arquitectónico se define como un vocabulario de componentes y tipos de componentes, así como un 
conjunto de restricciones sobre cómo estos componentes pueden ser combinados. Algunos de estos estilos 
arquitectónicos son: procesamiento secuencial, tuberías y filtros, sistemas orientados a objetos, sistemas en capas, 
sistemas basados en eventos, bases de datos, entre otros (traducido de) [4]. 
 
Un patrón arquitectónico generalmente impone una regla (Perry and Wolf, 1992) en la arquitectura, la cual 
especifica cómo manejará el sistema un aspecto de su funcionalidad. Un patrón arquitectónico trata con algún 
aspecto del comportamiento del sistema que no está en el dominio de la funcionalidad del mismo, pero el cual 
maneja alguno de sus dominios de soporte, por ejemplo, la manera en cómo el sistema maneja la concurrencia, la 
persistencia, la tolerancia a fallas o la distribución (traducido de) [5]. Un patrón arquitectónico es diferente a un 
estilo arquitectónico en el sentido que no es predominante y puede ser combinado con un estilo arquitectónico sin 
problemas. También es diferente a un patrón de diseño, toda vez que afecta completamente la arquitectura, o al 
menos un parte importante de ella (traducido de) [5]. 
 
Un patrón de diseño describe una estructura comúnmente recurrente de comunicación entre componentes que 
resuelve un problema de diseño general dentro de un contexto en particular (traducido de) [6]. 
 
Un estilo arquitectónico está compuesto de patrones arquitectónicos y un patrón arquitectónico está compuesto 
por patrones de diseño. Un mecanismo arquitectónico es una estructura en la cual los objetos colaboran para 
obtener cierto conocimiento que ayuda a lograr metas de calidad específicas (traducido de) [7]. 
 
Una vista es una representación de un conjunto coherente de elementos arquitectónicos. Las vistas consisten 
de una representación de un conjunto de elementos y relaciones entre ellos; muestran una perspectiva de la 
arquitectura de software. Bass Clements y Kazman proponen tres grupos de vistas, los cuales son: estructuras de 
módulos, estructuras de conectores y componentes, estructuras de asignación [2]. 
 
Un viewpoint es una especificación de las convenciones para construir y utilizar una vista; representa un patrón 
o plantilla a partir del cual se desarrollan las vistas individuales de la arquitectura mediante el establecimiento de los 
intereses de los diferentes stakeholders para dicha vista y las técnicas para su creación y análisis (traducido y 
modificado de) [8]. Identifica el conjunto de intereses a cubrir e identifica las técnicas de modelado, de evaluación o 
de verificación de consistencia empleadas por cualquier vista que corresponda. 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 7 
 
Un escenario es una breve descripción de una interacción simple de un stakeholder con el sistema. Los casos de 
uso se enfocan al comportamiento del sistema en tiempo de ejecución, dónde el stakeholder es el usuario, sin 
embargo, los escenarios abarcan otras interacciones con el sistema, tales como el mantenimiento que se le debe dar 
a un sistema al emerger una modificación. De esta manera, los escenarios tienen otros usos más allá de la obtención 
y validación de requerimientos de software, como ayudar a comprender y aceptar lo que requiere el stakeholder, y 
obtener diferentes vistas arquitectónicas (traducido y modificado de) [9]. 
 
Un atributo de calidad es un requerimiento no funcional de un sistema de software por ejemplo: confiabilidad, 
facilidad de modificación, rendimiento, facilidad de uso, entre otros. De acuerdo al estándar IEEE Standard 1061-
1992 [38], un atributo de calidad representa el grado en el cual un software posee una combinación deseable de 
estos atributos. Jan Bosch [10] define dos categorías para agruparlos, las cuales son: atributos de desarrollo y 
atributos de operación. Los atributos de desarrollo son relevantes desde una perspectiva de ingeniería de software, 
estos atributos pueden ser: facilidad de mantenimiento, reutilizable, flexibilidad, facilidad de modificación. Los 
atributos operacionales son características del sistema en operación por ejemplo: el rendimiento del sistema, la 
confiabilidad, robustez, tolerancia a fallas, seguridad. Cualquier arquitectura de software definida de manera 
apropiada promueve que se satisfagan atributos de calidad. 
 
3.2. Procesos de arquitectura de software 
 
En la presente sección describiremos brevemente algunos procesos de arquitecturas de software que fueron 
analizados para generar nuestrapropuesta de solución. Estos procesos son: Desarrollo Basado en Arquitecturas y 
Diseño de Arquitectura de Software: Evaluación y Transformación. 
 
Desarrollo Basado en Arquitecturas 
 
Partiendo de la idea que el desarrollo de una arquitectura de software es un paso crítico en el desarrollo de 
sistemas de software de gran escala, Len Bass y Rick Kazman en 1999 propusieron un proceso para desarrollar 
arquitecturas de software, conocido como “Desarrollo Basado en Arquitecturas” (Architecture-Based Development) 
[3], el cual facilita la identificación de tareas que son necesarias para generar una arquitectura de software, así como 
el seguimiento de un método para su construcción. El proceso incluye los siguientes pasos: 
 
a) Obtener los requerimientos arquitectónicos, el cual genera un listado de requerimientos funcionales, un 
listado de requerimientos arquitectónicos específicos y un listado de escenarios de calidad. 
 
b) Diseñar la arquitectura, el cual estructura las vistas: funcional, de código, de concurrencia, física y de 
desarrollo; desarrolla subsistemas candidatos y selecciona subsistemas. 
 
c) Documentar la arquitectura, en la cual muestra recomendaciones para realizar la documentación de 
dicha arquitectura. 
 
d) Analizar la arquitectura, en dónde evalúa la arquitectura mediante el método ATAM (Architecture 
Tradeoff Analysis Method) [11]. 
 
e) Generar la arquitectura, en dónde muestra recomendaciones para comenzar a codificar la arquitectura 
de software. 
 
f) Mantener la arquitectura, el cual propone volver a ejecutar el método para incorporar nuevos 
requerimientos a la arquitectura de software. 
 
De manera gráfica, el proceso es representado como se muestra en la figura 3.2.1. Cada uno de estos pasos 
considera los siguientes elementos: 
 
 Entradas, incluyendo la recolección de la información principal 
 Actividades constructivas 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 8 
 
 Actividades de validación 
 Salidas 
 
Figura 3.2.1, Desarrollo basado en arquitecturas. 
 
 
 
Diseño de Arquitectura de Software: Evaluación y Transformación 
 
Bosh y Molin presentan en su artículo “Software Architecture Desing: Evaluation and Transformation” [10] un 
método de diseño de arquitecturas que provee la base para un proceso de diseño balanceado y optimizado, 
especialmente para los requerimientos no funcionales. El método evalúa de manera iterativa el grado en el cual la 
arquitectura soporta cada uno de los requerimientos no funcionales y mejora la arquitectura utilizando la 
transformación hasta que todos los requerimientos no funcionales están cubiertos. 
 
Para este método, la especificación de requerimientos es considerada como entrada y el diseño de la 
arquitectura generada es la salida. El proceso se puede resumir de la siguiente manera y es ilustrado con la figura 
3.2.2: 
 
1. Se realiza un primer diseño arquitectónico basado en la especificación de los requerimientos 
funcionales. 
2. Este diseño es evaluado con respecto a los requerimientos no funcionales. 
3. A cada requerimiento no funcional le es asignada una estimación utilizando una técnica de evaluación 
cualitativa o cuantitativa. 
4. Los valores estimados de los requerimientos no funcionales son comparados con los valores en la 
especificación del requerimiento. 
5. Si todas las estimaciones están cubiertas o mejoradas, el proceso de diseño de la arquitectura es 
finalizado. De otra manera la segunda fase se ejecutada: transformación de la arquitectura. 
6. Durante esta etapa, la arquitectura es mejorada seleccionando el requerimiento no funcional apropiado 
optimizando su transformación. 
7. Cada uno de los conjuntos de resultados de la transformación es una nueva versión del diseño 
arquitectónico. 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 9 
 
 
8. El diseño es nuevamente evaluado y el mismo proceso es repetido de ser necesario, hasta que todos 
los requerimientos no funcionales son completados o hasta que el ingeniero en software decida que no 
es factible la solución existente. 
 
 
 
Figura 3.2.2, Esquema de un método de diseño de arquitectura. 
 
 
3.3. Diseño de arquitecturas 
 
En esta sección describiremos brevemente algunos modelos y técnicas que son utilizadas para diseñar y 
documentar una arquitectura de software. Dichos modelos son: Diseño Basado en Arquitecturas, Arquitectura Basada 
en Escenarios, vistas arquitectónicas, Diseño de arquitectura de software efectivo con UML. 
 
 
Diseño Basado en Arquitecturas 
 
Bachmann, Bass, Chastek, Donohoe y Peruzzi en el año 2000 propusieron un proceso para llevar a cabo el 
diseño de una arquitectura de software, el cual es conocido como “Método de Diseño Basado en Arquitectura” (The 
Architecture Based Design Method) [12]. El método proporciona una serie de pasos para el diseño conceptual de la 
arquitectura de software. Satisface los requerimientos funcionales, de negocio y de calidad al nivel de abstracciones 
que permiten realizar variaciones en la arquitectura cuando se produce una arquitectura en específico. Se basa en la 
determinación de los elementos que guía o conducen a la arquitectura (architectural drivers), lo cual es la 
combinación de dichos requerimientos funcionales, de negocio y de calidad que moldea la arquitectura. 
 
El método tiene tres fundamentos: descomposición de función (acoplamiento y cohesión), compresión de los 
requerimientos de calidad y de negocio, a través de la selección de estilos arquitectónicos y el uso de patrones de 
software. La descomposición es examinada desde la perspectiva de tres vistas: lógica, concurrencia y deployment. Se 
utiliza la vista lógica para registrar las responsabilidades e interfases conceptuales (salida y entrada de datos) para el 
diseño de elementos; la vista de concurrencia para examinar el sistema desde la perspectiva de múltiples usuarios, 
recursos, puesta en marcha y otras actividades paralelas, y la vista de deployment para representar nodos en una 
red de computadoras, esto es, la estructura física del sistema. 
 
La entrada del método de diseño basado en arquitectura consiste de: 
 
 Requerimientos funcionales abstractos 
 Casos de uso 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 10 
 Requerimientos de negocio y de calidad abstractos 
 Escenarios de calidad 
 Opciones de arquitectura 
 Reglas 
 
El proceso se fundamenta en la descomposición del sistema en subsistemas conceptuales, éstos a su vez en 
componentes conceptuales y finalmente éstos últimos en componentes concretos. Este proceso se esquematiza con 
la figura 3.3.1. 
 
 
 
 
Figura 3.3.1, Descomposición del sistema en elementos de diseño, 
Método de Diseño Basado en Arquitectura. 
 
 
Los pasos que considera el método se pueden resumir en los siguientes: 
 
1. Descomposición del sistema en elementos de diseño. 
2. Definición de grupos de funcionalidad. 
3. Selección del estilo arquitectónico. 
4. Refinar plantillas. 
5. Verificación de la funcionalidad. 
6. Generación de vistas arquitectónicas. 
7. Verificación de escenarios y reglas. 
 
 
Arquitectura Basada en Escenarios 
 
Kazman, Carrière y Woods proponen un proceso que permite relacionar escenarios con los atributos de calidad 
que se consideran en una arquitectura de software, así como con los stakeholders interesados en los mismos [9]. El 
proceso propone obtener escenarios, corresponder escenarios a las vistas arquitectónicas, y construir modelos 
analíticos, los cuales ayudan a comprender y documentar las decisiones estructurales que se han hechosobre la 
arquitectura. Los escenarios que se manejan en el proceso pueden ser: 
 
 Directos, los cuales representan los usos del sistema construido de la arquitectura de software 
(estímulo-respuesta), o bien 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 11 
 
 Indirectos, quienes representan cambios a la arquitectura existente, y por ende al sistema; 
incluyen nuevas plataformas de hardware o software, agregar una nueva característica, integrarse 
con una nueva pieza de software, reemplazar alguna funcionalidad existente, escalar el sistema, 
etc. 
 
Los autores determinan que cada uno de los intereses de los stakeholders debe ser reflejado en los escenarios. 
Múltiples stakeholders pueden estar contemplados en múltiples escenarios de acuerdo a su interés. Para manejar 
esto, proponen una matriz de escenarios que ayuda a considerar a cada escenario desde cada una de las 
perspectivas de los stakeholders y desde la perspectiva de cada atributo de calidad o interés. Esta matriz se 
esquematiza por medio de la figura 3.3.2. 
 
 
 
Figura 3.3.2, Matriz de obtención de escenarios genérica. 
 
 
Los escenarios obtenidos deben corresponder a la representación de la arquitectura de software. Para realizar 
dicha correspondencia, se debe obtener: 
 
1. Atributos de calidad 
2. Escenarios abstractos 
3. Escenarios derivados / específicos 
4. Mecanismo genérico para responder al escenario 
5. Mecanismo específico 
6. Modelo analítico, los cuales representan el principio de la ingeniería arquitectónica, pues representan 
de manera formal cómo serán medidos los atributos de calidad. 
 
 
 
Vistas arquitectónicas 
 
Cuando un arquitectura de software se encuentra representada por uno o más estilos arquitectónicos, patrones 
arquitectónico o por patrones de diseño, es necesario conocer la manera en cómo interactúan los componentes 
definidos unos con otros, cómo están interconectados dichos componentes entre sí, el tipo de plataforma de software 
y de hardware dónde se ejecutarán los componentes, entre otros aspectos. En 1995, Kruchten y por su parte Nord, 
[13] [14] dieron a conocer dos propuestas de vistas arquitectónicas para representar diferentes aspectos de una 
arquitectura de software. 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 12 
 
Kruchten [13] propone cinco vistas: 
 
 Vista lógica. Describe el diseño de los objetos que son modelados cuando es utilizado un método de diseño 
orientado a objetos. En esta vista también se puede modelar diagramas de entidad relación. 
 
 Vista de proceso. Describe el diseño de los aspectos de concurrencia y sincronización del sistema. 
 
 Vista física. Describe la relación de los componentes de software que serán ejecutados en el hardware y 
refleja aspectos de distribución. 
 
 Vista de desarrollo. Describe la organización estática de los componentes de software en un ambiente de 
desarrollo. 
 
 Escenarios. Muestran cómo los componentes de las cuatro vistas anteriores trabajan en conjunto de manera 
transparente. 
 
Por su parte, Nord [14] propone cuatro vistas, mismas que definiremos en la siguiente técnica. 
 
En la actualidad no existe un estándar que defina las vistas que debe tener una arquitectura de software, cada 
arquitecto de software puede utilizar y/o crear sus propias vistas, las cuales sin lugar a dudas considerarán estos 
elementos, sin embargo es posible tomar como referencia las vistas antes mencionadas. 
 
 
Diseño de Arquitectura de Software Efectivo con UML 
 
Nord, Paulish, Soni y Hofmeister mencionan en su artículo “Effective Software Architecture Design: From Global 
Analysis to Uml Descriptions” [15] que hoy en día es generalmente aceptado que el separar la arquitectura de 
software en múltiples vistas puede ayudar a reducir la complejidad y la toma de decisiones sobre diseño de trade-
offs. Proponen la realización de vistas arquitectónicas por medio de UML1 para analizar los factores que influencian la 
arquitectura y desarrollar estrategias para adaptar esos factores en el diseño de la arquitectura. En el artículo, los 
autores presentan los diagramas UML que pueden ser elaborados para representar cada una de las vistas 
arquitectónicas. Las vistas que consideran para la representación de la arquitectura son [16]: 
 
 Vista conceptual. Describe la arquitectura en términos de elementos del dominio. El arquitecto diseño las 
características funcionales del sistema. 
 
 Vista de módulo. Describe la descomposición del software y su organización en capas. Una consideración 
importante aquí es limitar el impacto de un cambio en software y hardware. 
 
 Vista de ejecución. Es la vista de tiempo de ejecución del sistema: es el mapeo de los módulos a entidades en 
tiempo de ejecución, definiendo la comunicación entre ellos y asignándoles los recursos físicos. El uso de 
recursos y desempeño son los principales intereses (concerns) en la vista de ejecución. Decisiones como el 
uso de una librería ligada o compartida, o el uso de hilos o procesos, se hacen aquí, aunque esas decisiones 
pueden retroalimentar a la vista de módulos y requerir cambios. 
 
 Vista de código. Captura cómo los módulos e interfases en la vista de módulos son correspondidas hacia los 
archivos fuente, y cómo las entidades en tiempo de ejecución en la vista de ejecución son correspondidas a 
los archivos ejecutables. La partición de esos archivos y cómo están organizados en los directorios afecta la 
construcción del sistema. 
 
 
 
 
1 Unified Modeling Language, lenguaje para especificar, visualizar, modelar, construir y documentar artefactos de sistemas de 
software. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 13 
3.4. Estándares 
 
A continuación describiremos brevemente dos importantes estándares, el modelo ISO 9126-1 y el estándar 
IEEE Std 1471-2000 que son importantes considerar para el diseño y documentación de una arquitectura de 
software. 
 
Modelo ISO 9126-1 
 
Existe un modelo de la ISO (International Organization for Standardization) que permite identificar las atributos 
de calidad que pueden caracterizar a una arquitectura de software [7]. El modelo es conocido como modelo de 
calidad ISO 9126-1. Indica que la calidad está definida por el conjunto de características del producto que reflejan su 
capacidad para satisfacer su objetivo o cubrir necesidades. Clasifica y define los diferentes atributos de calidad que 
pueden ser considerados en un sistema de software. Menciona que diferentes atributos de calidad pueden ser 
considerados por diferentes stakeholders, y propone un flujo de actividades para la selección de una arquitectura de 
software candidata de acuerdo a los atributos de calidad que contempla. Dicho flujo de actividades es el siguiente: 
 
1. Obtener requerimientos funcionales por medio de casos de uso. 
2. Obtener requerimientos no funcionales. 
 Especificación de los requerimientos de calidad de acuerdo al dominio del problema. 
 Especificación de las restricciones tecnológicas. 
 Especificación de las características de calidad para cada caso de uso. 
3. Priorizar casos de uso. 
4. Detallar casos de uso. 
5. Identificar la arquitectura candidata, de acuerdo a: 
 Experiencia (arquitectura previamente utilizada y/o patrones existentes) 
 Información clave obtenida de los casos de uso. 
 Conjunto de patrones o estilos arquitectónicos. 
 Acorde a los atributos de calidad. 
 Puede ser especificada gráficamente por medio de un estándar, diagrama de componentes y 
conectores, o formalmenteutilizando lenguajes de descripción de arquitectura o lenguajes 
formales. 
 Las sub-características y atributos relevantes del dominio del problema, deben ser organizados en 
una tabla como la que se muestra en la figura 3.4.1. 
 
 
Figura 3.4.1, Tabla de comparación de arquitecturas de acuerdo a atributos de calidad. 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 14 
 
La tabla muestra una relación entre los atributos de calidad con las arquitecturas candidatas, así como 
observaciones o comentarios de dicha relación que ayudan a tomar la decisión de la arquitectura de software en la 
que se basará un sistema de información. 
 
 Como se puede observar, las columnas muestran la arquitectura candidata a ser seleccionada. Las 
medidas son calculadas para cada uno de los atributos de acuerdo a las métricas propuestas por el 
framework mostrado en la figura 3.4.2. 
 Cada atributo es priorizado de acuerdo a los requerimientos expresados en el modelo de calidad 
para el dominio del problema. 
 
6. Aplicar el framework de medición arquitectónica basado en el ISO 9126-1 para seleccionar la 
arquitectura candidata, mostrado en la figura 3.4.2. 
 
 
 
Figura 3.4.2, Framework para la medición arquitectónica. 
 
 
7. Analizar la tabla de evaluación. Los valores de los atributos de calidad relevantes son analizados de 
acuerdo a los escenarios (posible trade-offs). 
 
 
IEEE Std 1471-2000 
 
El estándar IEEE 1471-2000 [17] recomienda prácticas enfocadas a las actividades de creación, análisis y 
sustento de una arquitectura de software de un sistema de gran escala, así como la documentación de la misma por 
medio de descripciones arquitectónicas. Además, el estándar establece un marco conceptual para descripciones 
arquitectónicas, así como el contenido del mismo. 
 
 
El estándar considera y describe los siguientes elementos: 
 
 Contexto de las descripciones arquitectónicas. 
 Los stakeholders y sus roles. 
 Las actividades de la arquitectura en el ciclo de vida. 
 Los usos de una descripción arquitectónica. 
 La documentación arquitectónica. 
 La identificación de los stakeholders y sus intereses en la arquitectura. 
 La selección de viewpoint arquitectónicos. 
 Consistencia a través de las vistas arquitectónicas. 
 El razonamiento arquitectónico. 
 
El arquitecto de software puede utilizar este estándar como referencia para la documentación de una 
arquitectura de software. 
 
 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 15 
3.5. Herramientas 
 
Quality Function Deployment 
 
Quality Function Deployment (QFD) es un método estructurado para planear y desarrollar un producto, de tal 
manera que se especifiquen claramente los deseos y necesidades del cliente, para después evaluar la capacidad del 
mismo en términos de su impacto o conocimiento de dichas necesidades (traducido de) [18]. En términos prácticos, 
QFD es una metodología para identificar y traducir necesidades y deseos del cliente a: requerimientos técnicos, 
características que se puedan medir y características de ingeniería para el desarrollo de un producto. 
 
QFD hace uso de una tabla, llamada casa de calidad, en dónde registra las necesidades del cliente y las traduce 
a requerimientos técnicos, lo cual se va refinando a través de diferentes niveles, de tal manera que se cubran todos 
los requerimientos o características del producto. Una tabla QFD consiste de seis secciones (ver figura 3.5.1) 
(traducido de) [19] en donde se especifica textualmente: 
• Necesidades y beneficios del cliente. 
• Matriz de planeación, la cual registra: 
 Importancia para el cliente 
 Representación de la satisfacción del cliente 
 Representación de la satisfacción de la competitividad 
 Metas 
 Razón de mejora 
 Punto de ventas 
 Valor normalizado 
• Respuesta técnica, necesidades del cliente traducidas a un lenguaje técnico. 
• Relaciones entre la respuesta técnica y las necesidades del cliente, lo cual se puede medir con: no ligado 
(0), posiblemente ligado (1), moderadamente ligado (3), fuertemente ligado (9). 
• Matriz técnica. Las respuestas técnicas son priorizadas sumando el valor de cada una de las columnas de la 
respuesta técnica. 
• Correlación técnica. Representa la relación entre las respuestas técnicas (grado de impacto). 
 
Technical 
Correlation
 
 
 
 
 
 
 Technical Response 
Cu
st
om
er
 n
ee
ds
 a
nd
 b
en
ef
its
 
Relationships 
Im
po
rt
an
t 
to
 c
us
to
m
er
 
Cu
st
om
er
 s
at
is
fa
ct
io
n 
pe
rf
or
m
an
ce
 
Co
m
pe
tit
iv
e 
sa
tis
fa
ct
io
n 
pe
rf
or
m
an
ce
s 
G
oa
l 
Im
pr
ov
em
en
t 
ra
di
o 
Sa
le
s 
Po
in
t 
N
or
m
al
iz
ad
 r
aw
 w
ei
gh
t 
Priorities 
Competitive Benchmarks 
Own performance 
Te
ch
ni
ca
l 
m
at
riz
 
Target 
Figura 3.5.1, Casa de calidad de QFD. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 16 
 
 
Los requerimientos arquitectónicos de una arquitectura de software pueden ser identificados y traducidos a 
requerimientos técnicos mediante el uso de QFD, partiendo de la idea de que dicha arquitectura será utilizada para 
obtener un producto de software. De esta manera, existe una adaptación de QFD para el desarrollo de software, la 
cual es denominada Software Quality Function Deployment (SQFD). SQFD es una técnica de solicitud de 
requerimientos, adaptable a cualquier metodología de ingeniería de software, que cuantificablemente, solicita y 
define requerimientos críticos del cliente (traducido y modificado de) [20]. Los factores que toma en cuenta QFD son 
los mismos considerados por SQFD, pero con el enfoque de software. 
 
Con lo anterior, hemos descrito brevemente: 1) algunos conceptos básicos de arquitecturas de software; 2) 
algunas propuestas de proceso para arquitecturas de software, en dónde explicamos el modelo de Desarrollo Basado 
en Arquitecturas, que contempla los pasos fundamentales para construir una arquitectura de software, y el modelo 
Diseño de Arquitectura de Software: Evaluación y Transformación, que propone un método de diseño de 
arquitecturas de software mediante la evaluación y transformación iterativa hasta obtener los resultados esperados 
de dicha arquitectura; 3) técnicas para el diseño de arquitecturas de software, en dónde expusimos el Diseño Basado 
en Arquitecturas, que propone la manera en cómo se puede descomponer el concepto de un sistema de software 
para llegar a elementos de diseño, el método de Arquitectura Basada en Escenarios, el cual propone el uso de un 
matriz de obtención de escenarios para relacionarlos con los diferentes atributos de calidad esperados en el sistema y 
con los diferentes stakeholders interesados en el mismo, las vistas arquitectónicas de Kruchten y Nord, y el método 
de Diseño de Arquitectura de Software Efectivo con UML, dónde se presentan las vistas que recomienda Nord para 
describir una arquitectura de software, así como los diagrama UML que se proponen para describir cada vista; 4) 
algunos estándares relacionados con arquitecturas de software, en dónde mencionamos el modelo ISO 9126-1, que 
especifica los atributos de calidad que pueden tener un sistema de software y un flujo de actividades para 
seleccionar arquitecturas candidatas de acuerdo a dichos atributos de calidad, y el estándar IEEE 1471-2000, que 
recomienda prácticas enfocadas a las actividades de creación, análisis y sustento de una arquitectura de software; y 
finalmente 5) herramientas adicionales, en dónde expusimos la metodología que sigue QFD para identificar 
necesidades de los clientesy convertirlos en requerimientos técnicos de arquitecturas de software. 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 17 
 
4. Propuesta de Solución 
 
La propuesta de solución para nuestro problema se encuentra basada en las diferentes aportaciones de 
importantes autores que fueron descritas en la sección de trabajo previo del presente documento. La esencia de 
nuestra propuesta consiste en abstraer los elementos relevantes de cada uno de los trabajos previos, con el objetivo 
de definir un modelo de proceso para elaboración de arquitecturas de software con la consideración de varias de las 
aportaciones que hacen los expertos en esta materia. 
 
De acuerdo a la problemática expuesta en la sección de la descripción del problema del presente documento, y 
después de analizar los diferentes conceptos, modelos, técnicas y herramientas que se proponen en la literatura en el 
campo de arquitecturas de software, presentamos a continuación el Modelo para el Desarrollo de Arquitecturas de 
Software – MODAS, el cual representa un proceso definido para la elaboración de arquitecturas de software, mismo 
que permite elaborar una arquitectura nueva, reutilizar una arquitectura existente o dar mantenimiento a una 
arquitectura en operación. El modelo parte del documento de especificación de requerimientos de software en el 
caso de una arquitectura nueva, y del documento de arquitecturas de software para la definición de una arquitectura 
reutilizada o en mantenimiento. Nuestro modelo contempla los siguientes pasos, mismos que se representan la figura 
4.1 de acuerdo a sus entradas, salidas y flujos correspondientes: 
 
1. Identificación de los requerimientos arquitectónicos 
2. Diseño de la arquitectura 
3. Verificación de la arquitectura 
4. Adecuación de la arquitectura 
5. Documentación de la arquitectura 
6. Evaluación de la arquitectura 
7. Validación de la arquitectura 
 
 
Figura 4.1, Modelo pare el desarrollo de arquitecturas de software – MODAS – Proceso General. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 18 
 
 
La figura 4.1 representa el panorama general de la solución que muestra nuestro modelo. Como se puede 
observar, el proceso puede recibir como objetivo la definición de una nueva arquitectura de acuerdo a los 
requerimientos de software, la reutilización de una arquitectura existente observando que cumple con los 
requerimientos de software establecidos, o bien, el mantenimiento a una arquitectura de software para incorporación 
de nuevos requerimientos. La salida del proceso puede ser una arquitectura liberada, o una arquitectura no 
aprobada, la cual debe ser adecuada en el caso de que existan cambios menores, o volver a generar el proceso de 
manera completa en el caso de contar con cambios mayores. 
 
El modelo de proceso permite diseñar una arquitectura después de identificar los requerimientos 
arquitectónicos, o bien, verificar directamente que la arquitectura cumpla con los requerimientos arquitectónicos 
establecidos si se trata de una arquitectura reutilizada o en mantenimiento. En cualquiera de los dos casos, este 
último paso verificará la completes y el correcto diseño de la arquitectura, con el objetivo de adecuarla si se observan 
inconsistencias, o bien documentar el diseño realizado. Es importante señalar que tanto en el momento de realizar el 
diseño de la arquitectura, como en su adecuación, pueden documentarse ciertas elementos, mismos que se 
formalizarán en el paso de documentación de la arquitectura. 
 
Para llevar a cabo nuestro paso de evaluación de la arquitectura, haremos uso del proceso para evaluación de 
arquitecturas de software, propuesto por Omar Gómez [21]. Este proceso recibirá como entrada el documento de 
arquitectura de software obtenido, y después de realizar ciertos análisis con herramientas como SNA (Survivability 
Network Analysis), ALMA (Architecture-Level Modifiability Analysis), entre otros, reportará si la arquitectura es 
adecuada con respecto a los atributos de calidad especificados, si existe algún conflicto entre los mismos, y 
recomendaciones para su adecuación. A su vez, este proceso mencionará el impacto y el riesgo que correrá el diseño 
de la arquitectura de software sin la incorporación de ciertos elementos, estilos o patrones. En caso de que la 
arquitectura no apruebe la evaluación, se llevará a cabo el proceso de adecuación, verificación, documentación y 
evaluación nuevamente. Si por el contrario la arquitectura aprueba la evaluación, se ejecutara el paso de validación, 
mismo que se encarga de estudiar el diseño de la arquitectura con los diferentes stakeholders para determinar si 
cubre sus requerimientos establecidos, o bien debe sufrir adecuaciones menores o mayores. Si se descubren cambios 
menores en la validación, entonces se llevará a cabo el proceso de adecuación, verificación, documentación y 
validación nuevamente, pero si por el contrario se determinan cambios mayores, como incorporación de nuevos 
requerimientos, entonces se ejecutará nuevamente todo el proceso. 
 
En la siguiente sección del presente documento definiremos a detalle las actividades a realizar, las entradas y 
salidas internas, las herramientas que apoyarán dicha actividad y las métricas que ayudarán a controlar y mejorar el 
proceso para cada uno de los pasos del modelo. 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 19 
 
5. Modelo para el desarrollo de arquitecturas de software 
 
El modelo de proceso para el desarrollo de arquitecturas de software que proponemos, consta de siete pasos 
básicos: identificar los requerimientos de software, diseñar la arquitectura, verificar la arquitectura, adecuar la 
arquitectura, documentar la arquitectura, evaluar la arquitectura, y validar la arquitectura. Cada uno de estos pasos 
recibe ciertas entradas, proporciona ciertas salidas, maneja entradas y salidas internas, hace uso de herramientas, y 
en ciertos casos define una métrica para el control y mejoramiento del mismo proceso. 
 
Nuestro modelo para el desarrollo de arquitecturas de software, se encuentra fundamentado en el modelo que 
describen Bass y Kazman conocido como: “Desarrollo Basado en Arquitecturas” (Architecture-Based Development) 
[3]. Este modelo consta de seis pasos, los cuales son: obtener los requerimientos arquitectónicos, diseñar la 
arquitectura, documentar la arquitectura, analizar la arquitectura, generar la arquitectura y mantener la arquitectura. 
Los autores describen las actividades que se realizarán en cada paso, proponiendo el uso de ciertas herramientas 
para algunos de ellos, como por ejemplo: una matriz de obtención de escenarios para obtener los requerimientos y el 
método ATAM (Architecture Tradeoff Análisis Method) para realizar el análisis de la arquitectura. Sin embargo, al 
analizar este modelo, podemos observar que no se menciona con mucho detalle las tareas específicas a realizar 
internamente, no son rápidamente identificadas, no se mencionan entradas y salidas internas, ni métricas para 
controlar y mejorar el proceso. En la figura 5.1 podemos observar la relación que guarda nuestro modelo con el 
modelo Architecture-Based Development. 
 
 
 
Architecture-Based Development Modelo para el Desarrollo de Arquitecturas de Software 
 
 
 
Figura 5.1, Architecture-Based Development en relación con el 
Modelo para el Desarrollo de Arquitecturas de Software. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software –Reporte Técnico de Investigación 20 
 
Como se puede observar en la figura 5.1, el modelo Architecture-Based Development considera un paso 
enfocado a generar la arquitectura de software mediante código, el cual no es considerado por el Modelo de 
Desarrollo de Arquitecturas se Software. A su vez, este primer modelo considera el mantener la arquitectura de 
software como un paso dentro del proceso, el cual se conecta nueva mente al inicio del mismo. Por su parte, nuestro 
segundo modelo considera el mantenimiento de la arquitectura como un objetivo de entrada del proceso, el cual, 
después de identificar los requerimientos arquitectónicos, omitirá el paso de diseñar la arquitectura, para 
directamente verificarla y adecuarla. Por su parte, el Modelo de Desarrollo de Arquitecturas se Software, considera 
tres pasos adicionales: verificar la arquitectura, el cual determinará si la arquitectura se encuentra completa y sin 
errores de diseño antes de ser evaluada; adecuar la arquitectura si requiere de cambios después de verificación o 
validación, y finalmente validar la arquitectura con los diferentes stakeholders una vez que se haya generado el 
documento de arquitectura de software y haya pasado la evaluación correspondiente. 
 
De esta manera, podemos decir que el Modelo de Desarrollo de Arquitecturas se Software se fundamenta en el 
modelo Architecture-Based Development, incorporando pasos adicionales que ayudan a su correcto diseño, así como 
la incorporación de elementos que facilitan la identificación de actividades a realizar. Los elementos que 
adicionalmente considera el modelo de proceso son: 
 
 Entradas y salidas del proceso general. 
 Definición de los pasos internos de cada uno de los pasos generales del proceso. 
 Detalle de entradas y salidas de las actividades de los pasos del proceso. 
 Uso de herramientas que apoyan cada pasos del proceso. 
 Incorporación de métricas que ayudan a controlar y mejorar el proceso. 
 
El modelo de proceso permite desarrollar una nueva arquitectura de software, reutilizar una arquitectura de 
software existente para cubrir los requerimientos arquitectónicos de un nuevo sistema, o bien, dar mantenimiento a 
una arquitectura que se encuentre en operación. 
 
Las entradas que presenta el modelo de proceso son: 
 Documento de especificación de requerimientos de software para el caso de la elaboración de una nueva 
arquitectuela. 
 Documento de especificación de requerimientos de software y documento de arquitectura de software para el 
caso de la reutilización de una arquitectura previamente definida. 
 Documento de arquitectura de software y definición de nuevos requerimientos para el caso del mantenimiento 
de una arquitectura de software en funcionamiento. 
 
Las salidas que presenta el modelo de proceso son: 
 Documento de arquitectura de software liberado 
 Documento de arquitectura de software sin liberar, con observaciones y recomendaciones de adecuación. 
 
Los pasos que considera el Modelo para el Desarrollo de Arquitecturas de Software, son: 
 
1. Identificar requerimientos arquitectónicos, el cual, mediante el documento de especificación de 
requerimientos, o definición de nuevos requerimientos de software, permite analizar los requerimientos 
funcionales y requerimientos no funcionales para ser convertidos a requerimientos técnicos que darán 
las directrices del diseño o adecuación de la arquitectura de software, según se el caso de definir una 
nueva arquitectura, reutilizar una arquitectura existente o dar mantenimiento a una arquitectura en 
operación. 
 
2. Diseñar la arquitectura, mediante el cual el sistema se descompone en subsistemas, componentes y 
elementos de diseño, mismos que al conceptualizarse y asignar funcionalidad representarán nuestro 
diseño arquitectónico. 
 
3. Verificar la arquitectura, por medio del cual determinaremos la completes de los requerimientos en el 
diseño, así como el correcto diseño de los componentes de software, dando la posibilidad a que la 
evaluación se enfoque en la detección de problemáticas profundas y con un mayor grado de 
especialización, de los atributos de calidad de la arquitectura. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 21 
 
4. Adecuar la arquitectura, el cual permitirá realizar ajustes o adaptaciones al diseño de la arquitectura de 
software una vez que fue verificada, evaluada o validada y se identificó que no cubre los 
requerimientos establecidos, o bien se encuentran mal diseñados. 
 
5. Documentar la arquitectura de software, por medio del cual representaremos gráfica y textualmente la 
arquitectura de software, además de plasmar los requerimientos que cubre, orientadores 
arquitectónicos que dan la directriz de la arquitectura, el uso de estilos arquitectónicos, patrones 
arquitectónicos y/o patrones de diseño, decisiones de diseño, intereses de los diferentes stakeholders, 
entre otros aspectos. 
 
6. Evaluar la arquitectura de software, mediante el cual determinaremos si la arquitectura de software 
cumple con los requerimientos no funcionales o atributos de calidad, si existe algún conflicto entre 
dichos atributos de calidad, o bien el impacto y riesgo que puede traer como consecuencia la ausencia 
de ciertos estilos, patrones o componentes en la arquitectura de software. 
 
7. Validar la arquitectura de software, por medio del cual, finalmente determinaremos con los diferentes 
stakeholders que la arquitectura de software se encuentre acorde a los requerimientos establecidos y 
cubra todas las necesidades. Si al validarla se identifican cambios menores, podrá ejecutarse el paso 
de adecuación, documentación y validación nuevamente; pero si se identifican cambios mayores, 
podrá ejecutarse todo el proceso nuevamente. 
 
 
 
Figura 5.2, Vista detallada del Modelo para el Desarrollo de Arquitecturas de Software. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 22 
 
 
La figura 5.2 muestra una vista detallada del Modelo para el Desarrollo de Arquitecturas de Software, en dónde 
se especifican las entradas y salidas de cada paso, así como las herramientas que apoyarán la realización de las 
actividades de cada uno de ellos. La definición de cada paso con cada uno de sus elementos la describiremos más 
adelante. Hacemos uso de uno de los profiles de UML (Unified Modeling Language) para modelar procesos de 
negocio, creado por Eriksson y Penker 2. Por medio de este profile de UML describiremos cada paso de nuestro 
modelo de procesos. La notación que utilizaremos se describe en la tabla 5.3: 
 
 
Símbolo Descripción 
 
Representa una entrada o salida del proceso 
general, es decir de manera externa. 
 
Representa un paso del proceso, ya sea en el 
proceso general, así como los sub-pasos internos. 
 
Indica una entrada o salida interna del proceso, es 
decir, en los sub-pasos. 
 
Se refieren a las herramientas que se utilizarán 
como recursos dentro de cada uno de los pasos del 
modelo 
 
Indica las métricas que se registrarán en ciertos 
pasos del proceso para controlarlo y mejorarlo. 
 
Se refiere a la indicación del seguimiento de un 
flujo, la entrada la un recurso, o bien el registro de 
una métrica. 
 
Se refiere a la indicación de un flujo opcional. 
 
Representa la decisión sobre un camino que puede 
seguir el proceso de acuerdo a las salidas 
obtenidas en el paso previo. 
 
Tabla 5.3, Notación para describir el Modelo para el Desarrollo de Arquitecturas de Software. 
 
 
A continuación detallaremos el flujo interno que contiene cada uno de los pasos de nuestro modelo 
representado en la figura 5.2, así como la descripción de los elementos que los conforman. 
 
5.1. Identificar requerimientos arquitectónicosEste paso permite identificar los requerimientos arquitectónicos del sistema que será desarrollado. El análisis de 
los mismos se realizará a través del documento de especificación de requerimientos de software y de una matriz de 
seguimiento a requerimientos, para el caso de una arquitectura nueva o reutilizada, o bien, la definición de los 
nuevos requerimientos, para el caso del mantenimiento de una arquitectura existente. El objetivo de este paso es 
analizar los requerimientos funcionales y requerimientos no funcionales del sistema para ser convertidos en 
requerimientos técnicos, los cuales darán las directrices del diseño o adecuación de la arquitectura de software, 
según sea el caso del objetivo inicial de entrada del proceso. 
 
 
2 Eriksson, Hans-Erik and Penker, Magnus, Business Modeling with UML, Business Patterns at Work, Wiley Computer Publishing, 
2000. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 23 
 
La figura 5.1.1 muestra las actividades que sigue este paso, especificando sus entradas, salidas, herramientas a 
utilizar y registro de métricas. 
 
 
 
Figura 5.1.1, Paso: Identificar requerimientos arquitectónicos del 
Modelo para el Desarrollo de Arquitecturas de Software. 
 
 
Los elementos a considerar para este paso del proceso son: 
 
Elemento Descripción 
Entradas 
Documento de especificación de requerimientos de software y matriz de seguimiento a 
requerimientos, para el caso de una arquitectura nueva o reutilizada, o la definición de los nuevos 
requerimientos, para el caso del mantenimiento de una arquitectura existente. 
Salidas 
Escenarios directos e indirectos que afectan la arquitectura, matriz de relación de escenarios, 
orientadores arquitectónicos y la selección del posible método analítico que podrá medir los 
requerimientos no funcionales en el diseño arquitectónico. 
Recursos 
SQFD, el ISO 9126-1, modelo de escenarios directos e indirectos, la matriz de relación de escenarios 
de Kazman, Carrière y Woods [9], y métodos analíticos para medir atributos de calidad. 
Métricas 
Número de requerimientos funcionales y no funcionales entre número de requerimientos técnicos 
definidos, así como número de escenarios definidos entre el número de stakeholders y entre número 
de atributos de calidad establecidos. 
Roles Analista y arquitecto. 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 24 
 
 
Como mencionamos anteriormente, este paso parte con el documento de especificación de requerimientos de 
software, matriz de seguimiento a requerimientos, o bien un listado de requerimientos funcionales y requerimientos 
no funcionales del sistema, cuya arquitectura está siendo elaborada. Los requerimientos funcionales pueden estar 
especificados mediante casos de uso de UML. 
 
Por medio de los requerimientos funcionales y no funcionales del sistema, el arquitecto deberá analizar e 
identificar los requerimientos que afectan la arquitectura, así como los atributos de calidad que se espera cumpla la 
misma. Los diferentes stakeholders, a través de la especificación de sus diferentes intereses sobre la arquitectura de 
software, pueden ayudar a determinar los atributos de calidad considerados para dicha arquitectura. El arquitecto 
puede apoyarse de la ayuda del analista o analistas quiénes especificaron los requerimientos del sistema cuya 
arquitectura está siendo construida para la identificación de los requerimientos arquitectónicos. 
 
Una vez que contamos con la identificación de requerimientos funcionales y requerimientos no funcionales que 
afectan la arquitectura, debemos convertirlos a requerimientos técnicos, mismos que reflejan los requerimientos 
arquitectónicos para nuestro diseño. Para la obtención de estos requerimientos arquitectónicos, se propone el uso de 
la técnica SQFD, con el objetivo de traducir requerimientos funcionales, no funcionales e intereses del cliente a 
requerimientos técnicos que consideren atributos de calidad para la arquitectura de software. 
 
La secuencia de pasos que se debe seguir de acuerdo a (traducido y modificado de) [19] [20] para la 
preparación de una casa de calidad SQFD es la siguiente, misma que se ilustra con la figura 5.1.2: 
 
1. Registrar los requerimientos funcionales del sistema en la sección de “requerimientos y beneficios del 
cliente” de la casa de calidad representados por casos de uso. Los casos de uso que se encuentren 
relacionados deben ser agrupados. Las sentencias de los requerimientos son comúnmente sentencias 
cortas registradas específicamente en la terminología del cliente (nombre del caso de uso) y son 
acompañadas de una definición detallada (caso de uso). 
 
2. En conjunto con los clientes, los requerimientos son convertidos a un enunciado técnico y medible del 
producto de software. Estos enunciados corresponden a los componentes de la arquitectura de software 
(elementos), mismos que son colocados en la sección de “respuesta técnica” de la casa de calidad. 
 
3. Los clientes participan completando la correlación técnica de la matriz identificando la solidez de las 
relaciones entre los diferentes requerimientos de usuario y la especificación técnica del producto. Es 
importante obtener consenso concerniente a las relaciones fuertes. 
 
4. La importancia o prioridad de cada uno de los casos de uso deben ser especificada y registrada en la 
sección de “importancia para el cliente”. Esta importancia puede ser identificada con 1, 3 y 9, dónde 1 es el 
de menos importante y el 9 es el más importante. 
 
5. Determinar la relación entre componentes de la arquitectura y los casos de uso. Para cada uno de los casos 
de uso, la arquitectura de software determina cual responsabilidad de un componente son utilizados por el 
caso de uso. Posteriormente, buscar el resultado de las relaciones, el cual es utilizado para el indicador de 
prioridad de los componentes, sumando los resultados de la multiplicación de las prioridades de los 
requerimientos del cliente por los valores de la correlación entre los requerimientos del cliente y la 
especificación técnica del producto. Este valor es convertido a porcentaje. El resultado es registrado en la 
sección de relaciones. El resultado final del proceso de SQFD contendrá una especificación técnica del 
producto y su prioridad. 
 
 
 
 
 
 
 
 
 
Grupo de Ingeniería de Software 
CIMAT 
 
Modelo para el Desarrollo de
Arquitecturas de Software 
 
José Hdez. S. – Maestría en Ingeniería de Software – Reporte Técnico de Investigación 25 
 
 
 
3
Technical 
Correlation
 
 
 
 
 
 
 Technical Response 
Cu
st
om
er
 n
ee
ds
 a
nd
 b
en
ef
its
 
 
 
 
 
 
 
 
Relationships 
Im
po
rt
an
t 
to
 c
us
to
m
er
 
Cu
st
om
er
 s
at
is
fa
ct
io
n 
pe
rf
or
m
an
ce
 
Co
m
pe
tit
iv
e 
sa
tis
fa
ct
io
n 
pe
rf
or
m
an
ce
s 
G
oa
l 
Im
pr
ov
em
en
t 
ra
di
o 
Sa
le
s 
Po
in
t 
N
or
m
al
iz
ad
 r
aw
 w
ei
gh
t 
Priorities 
Competitive Benchmarks 
Own performance 
Te
ch
ni
ca
l 
m
at
riz
 
Target 
4
2 
1 5
Figura 5.1.2, Casa de calidad de SQFD. 
 
 
Con lo anterior, hemos descrito la manera en cómo obtener los requerimientos arquitectónicos por medio de 
una especificación técnica del producto de software. Para obtener información más detallada acerca de esta técnica, 
se recomienda consultar las referencias: [19] [20]. 
 
Para efectos del control de nuestro proceso, en este paso debemos registrar la métrica de número de 
requerimientos funcionales y no funcionales entre el número de requerimientos técnicos establecidos, con el objetivo 
de conocer cuántos requerimientos cubrirá la arquitectura de

Otros materiales