Carlos Alberto Ocampo Sepúlveda Ingeniero de Sistemas
Carlos Alberto Ocampo Sepúlveda Ingeniero de Sistemas
Carlos Alberto Ocampo Sepúlveda Ingeniero de Sistemas
Director:
PhD JULIO CESAR CHAVARRO PORRAS
1
Tabla de contenido
Tabla de contenido .................................................................................................................................. 2
GLOSARIO ................................................................................................................................................ 7
RESUMEN .............................................................................................................................................. 13
CAPITULO 1. GENERALIDADES ................................................................................................................ 14
PROBLEMA OBJETO DE ESTUDIO ............................................................................................................ 14
JUSTIFICACIÓN ....................................................................................................................................... 16
OBJETIVO GENERAL............................................................................................................................ 16
OBJETIVOS ESPECÍFICOS ..................................................................................................................... 17
DELIMITACIÓN DEL ALCANCE ................................................................................................................. 17
CAPITULO 2. MARCO TEÓRICO: LAS ARQUITECTURAS DE SOFTWARE Y SOA ........................................... 18
2.1 DEFINICIÓN DE ARQUITECTURA Y ALGUNOS CONCEPTOS RELACIONADOS ................................... 18
2.2 ATRIBUTOS DE CALIDAD ............................................................................................................... 19
2.2.1 ARQUITECTURA Y ATRIBUTOS DE CALIDAD ............................................................................ 20
2.3 ESTILOS ARQUITECTURALES.................................................................................................... 24
2.3.1 ARQUITECTURAS CENTRADAS EN DATOS ............................................................................... 25
2.3.2 ARQUITECTURAS DE FLUJOS DE DATOS ................................................................................. 25
2.3.3 ARQUITECTURAS DE MÁQUINAS VIRTUALES.......................................................................... 26
2.3.4 ARQUITECTURAS DE LLAMADA Y RETORNO ........................................................................... 26
2.3.5 ARQUITECTURAS DE COMPONENTES INDEPENDIENTES ......................................................... 27
2.3.6 ESTILOS HETEROGÉNEOS ....................................................................................................... 27
2.4 ORGANIZACIÓN DE ESTILOS ARQUITECTURALES ........................................................................... 28
2.5 LENGUAJES DE DESCRIPCIÓN ARQUITECTURAL ....................................................................... 32
2.5.1 Principales Características de los LDA .............................................................................. 33
2.5.2. Elementos Arquitectónicos que modelan los ADL ............................................................ 33
2.5.3 Relación Lenguajes de Descripción Arquitectural ............................................................ 35
2.5.4 UML como LDA ............................................................................................................... 40
CAPITULO 3. ONTOLOGÍAS Y FRAMEWORKS ONTOLOGICOS .................................................................. 43
3.2 FRAMEWORK ONTOLÓGICO ......................................................................................................... 45
3.2.1. ONTOCONCEPT........................................................................................................................ 45
2
3.2.2 Protegé ................................................................................................................................. 47
3.2.3 NeOn Toolkit ......................................................................................................................... 47
CAPITULO 4. CARACTERÍSTICAS DE SOA Y ROA PARA WEB ..................................................................... 49
4.1 ARQUITECTURAS ORIENTADAS A SERVICIOS (SOA) ....................................................................... 49
4.2 PRINCIPIOS FUNDAMENTALES DE SOA ......................................................................................... 52
4.3 CARACTERÍSTICAS DE SOA ............................................................................................................ 55
4.4 COMPONENTES DE SOA ............................................................................................................... 55
¿Por qué SOA?. .............................................................................................................................. 56
4.5 ARQUITECTURAS ORIENTADAS A RECURSOS (ROA) ...................................................................... 57
4.5.1 PROPIEDADES DE ROA ........................................................................................................... 58
4.5.2 REST ...................................................................................................................................... 59
CAPITULO 5. RECOMENDACIÓN ARQUITECTURAL PARA FRAMEWORK ONTOLOGICO ............................ 61
5.1 Principales Módulos de Ontoconcept .................................................................................. 62
5.2 Módulos relacionados con la edición Ontológica .................................................................... 63
5.3 Propuesta Arquitectural ......................................................................................................... 64
5.3.1 UML 2.0 .......................................................................................................................... 64
5.3.2 Arquitectura Recomendada usando UML como ADL ....................................................... 65
5.3.3 Especificación de Componentes y Conectores ................................................................. 67
5.4 Aspectos No funcionales .............................................................................................................. 70
5.4.1. ¿Por qué los atributos de calidad son usados para el análisis? .............................................. 70
5.4.2. ¿Entonces cómo especificar los atributos de calidad? ........................................................... 72
5.5 ESCENARIOS POR ATRIBUTOS DE CALIDAD ................................................................................... 73
Objetivos de Calidad .......................................................................................................................... 78
Esenciales ...................................................................................................................................... 78
Esperados ...................................................................................................................................... 79
Deseados ....................................................................................................................................... 79
5.6 ¿Cuáles son las salidas de una evaluación arquitectónica? ...................................................... 79
5.6.1 Lista priorizada de los atributos de calidad requeridos ........................................................ 79
5.6.2 Riesgos y no riesgos ............................................................................................................ 79
5.7. ¿Cuáles son los costos y beneficios de realizar una evaluación arquitectónica? ........................... 80
5.7.1 Reúne a los stakeholders ................................................................................................ 80
5.7.2 Fuerza una articulación en las metas específicas de calidad ............................................ 80
3
5.7.3 Fuerza una explicación clara de la arquitectura ............................................................... 80
5.7.4 Mejora la calidad de la documentación de la arquitectura .............................................. 80
5.7.5 Descubre oportunidades de reuso .................................................................................. 80
5.7.6 Resultan mejoras en las arquitecturas ............................................................................. 81
5.8 Propuesta de aplicación No funcional para Ontoconcept. ............................................................. 81
Plantilla de Lista de Escenarios (QAW)................................................................................................ 86
Anexo III: Plantilla para especificación de escenarios (QAW) .............................................................. 88
El cuarto Método, análisis de intercambio de arquitectura .................................................................... 97
Desafíos ............................................................................................................................................. 97
CAPITULO 6. COMPARATIVA DE FRAMEWORKS ................................................................................... 110
6.1 Algunos framework lógicos que existen en la actualidad son: ..................................................... 110
CAPITULO 7. CONCLUSIONES, RECOMENDACIONES Y TRABAJO FUTURO ............................................. 112
7.1 CONCLUSIONES .......................................................................................................................... 112
7.2 RECOMENDACIONES .................................................................................................................. 112
7.3 TRABAJOS FUTUROS ................................................................................................................... 112
8. BIBLIOGRAFÍA .............................................................................................................................. 114
4
LISTA DE TABLAS
5
LISTA DE ILUSTRACIONES
LISTA DE ANEXOS
Anexo 1. CASO DE ESTUDIO ESCENARIOS ARQ
Anexo 2. METODO ATAM PASOS
Anexo 3. Descripción UML de la arquitectura propuesta
6
GLOSARIO
Se presenta las definiciones de algunos conceptos utilizados, algunos han sido
extractados y traducidos de https://www.w3.org/2003/glossary/, también en
https://www.sei.cmu.edu/architecture/start/glossary/index.cfm en caso contrario se indica
la fuente bibliográfica.
En algunos casos, estos elementos son los componentes físicos del sistema y sus
relaciones. En otros casos, estos elementos no son físicos, sino componentes lógicos.
En otros casos, estos elementos son principios o patrones perdurables que crean
estructuras organizacionales duraderas. La definición pretende abarcar estos usos
distintos, pero relacionados, al tiempo que fomenta una definición más rigurosa de lo que
constituye la organización fundamental de un sistema dentro de dominios particulares.
Tomado de: https://www.sei.cmu.edu/architecture/start/glossary/moderndefs.cfm
7
Arquitectura orientada a servicios (SOA): Una forma de diseñar, desarrollar,
implementar y administrar sistemas, en la que
Bus de servicios empresariales (EBS): Bus al que se conectan servicios. Esto puede
hacerse a través de tecnología de servicios web, mediante tecnología clásica EAI
(Entreprise Architecture Integration) o a través de conectores estándares Java. El ESB
provee las herramientas para facilitar el funcionamiento de las arquitecturas tipo SOA,
además provee mecanismos de integración como mensajería, adaptadores hacia
repositorios, listener y medios de administración de servicios. (Verificar referencia y
definición)
8
Diseño detallado: Un término que las personas a veces usan para referirse a un diseño
arquitectónico detallado, es decir, un diseño arquitectónico de elementos de grano fino o
decisiones de diseño arquitectónico de grano fino, como la interfaz precisa de un
elemento, y que en ocasiones significa diseño no arquitectónico.
Método de análisis de costo beneficio (CBAM): Un método para analizar los costos,
beneficios e implicaciones del cronograma de las decisiones sobre la arquitectura del
software; asocia explícitamente los costos, los beneficios y la incertidumbre con las
decisiones arquitectónicas como un medio para optimizar la elección de tales decisiones.
Marco de referencia: Una abstracción en la cual un código común que proporciona una
funcionalidad genérica puede ser anulado o especializado selectivamente por un código
de usuario que proporciona una funcionalidad específica.
Relación: Una definición de cómo los elementos cooperan para lograr el trabajo de un
sistema.
Restricción: Un requisito para el cual las decisiones de diseño están pre especificadas.
Subsistema: Una parte de un sistema que (1) lleva a cabo un subconjunto funcionalmente
cohesivo de la misión general del sistema, (2) se puede ejecutar de forma independiente
y (3) se puede desarrollar y desplegar de forma incremental.
10
La parte clave, de todas formas, es que pueden ser descubiertos, y una vez que son
descubiertos pueden representarse a sí mismos. No hay un requerimiento de
conocimiento previo del recurso para establecer una conversación, al contario que las
habilidades cognitivas de un servicio en la SOA.
Servicios de Soporte: Son servicios que no hacen parte del núcleo del negocio pero que
proveen funcionalidad requerida para que todo el ambiente funcione correctamente.
SOAP: (Simple Object Access Protocol). El conjunto formal de convenciones que rigen
las reglas de formato y procesamiento de un mensaje SOAP. Estas convenciones
incluyen las interacciones entre nodos SOAP que generan y aceptan mensajes SOAP
con el fin de intercambiar información a lo largo de una ruta de mensaje SOAP.
Taller de atributos de calidad (QAW): Un método para identificar los atributos críticos
de la arquitectura de un sistema, como la disponibilidad, el rendimiento, la seguridad, la
interoperabilidad y la capacidad de modificación, que se derivan de objetivos de misión o
comerciales. El QAW no supone la existencia de una arquitectura de software; destinado
a obtener, recopilar y organizar requisitos de atributos de calidad de software en forma
de escenarios y utilizarse antes de que se haya creado la arquitectura del
software. Aprenda más sobre QAWs .
11
Vistas y más allá (Views and Beyond): Un enfoque para la documentación que sostiene
que documentar una arquitectura de software es una cuestión de documentar las vistas
relevantes y luego agregar información que se aplica a más de una vista.
WSDL: (Web Services Description Language). WSDL 2.0 describe un servicio web en dos
etapas fundamentales: una abstracta y otra concreta. Dentro de cada etapa, la
descripción utiliza una serie de construcciones para promover la reutilización de la
descripción y para separar las preocupaciones de diseño independientes.
En un nivel abstracto, WSDL 2.0 describe un servicio web en términos de los mensajes
que envía y recibe; los mensajes se describen independientemente de un formato de
cable específico que utiliza un sistema de tipo, típicamente el Esquema XML.
Una operación asocia un patrón de intercambio de mensajes con uno o más mensajes.
Un patrón de intercambio de mensajes identifica la secuencia y la cardinalidad de los
mensajes enviados y / o recibidos, así como a quién se los envía y / o se los envía
lógicamente. Una interfaz agrupa las operaciones sin ningún compromiso con el
transporte o el formato de cable.
12
RESUMEN
Este trabajo presenta la línea base arquitectural del framework Ontoconcept. Para
lograrlo, presenta una revisión de la literatura en el campo de las arquitecturas de
software. se apoya en las características de las arquitecturas orientadas a servicios para
dar describir el comportamiento modular del framework, y describe el uso de los métodos
para instanciar los atributos no funcionales en la arquitectura de Ontoconcept. Es decir,
presenta la guía para el uso de QAW, ADD, VaB y ATAM, en la instanciación arquitectural
del framework.
Abstract
The software architecture defines the abstract view of the components and their interrelationships,
as well as their externally visible properties. This work focuses on the application of criteria to the
construction of the Ontoconcept technological tool, which manages the life cycle of an ontology
or one of the phases that comprise it.
Ontoconcept is an ontological framework built from the perspective of conceptual modeling, which
facilitates the abstraction of the language in which ontology is implemented. As a technological
tool, it facilitates the work of construction and change of the ontology in the different stages:
conception, edition, change, reasoning, etc. Additionally, it provides support for collaborative
work, developed by the ontological engineer and the experts who model a particular domain,
making use of open and distributed environments such as the Internet.
This work presents the architectural baseline of the Ontoconcept framework. To achieve this, it
presents a review of the literature in the field of software architectures. it relies on the
characteristics of service-oriented architectures to describe the modular behavior of the framework,
and describes the use of methods to instantiate non-functional attributes in the Ontoconcept
architecture. That is, it presents the guide for the use of QAW, ADD, VaB and ATAM, in the
architectural instantiation of the framework.
13
CAPITULO 1. GENERALIDADES
Según [1], bajo el título “MARCO DE REFERENCIA PARA LA GESTIÓN DEL CAMBIO
EN ONTOLOGÍAS, BASADOS EN MODELOS CONCEPTUALES”, fue desarrollado el
framework Ontoconcept utilizando una arquitectura cliente-servidor dos capas soportada
en plugins.
El uso creciente de Internet por parte de todos los individuos en forma transversal en
todas las actividades de su accionar cotidiano, ha ayudado a crear una tendencia para
que las diferentes tecnologías de la información permitan dar soporte a productos en
internet y estos a su vez, utilizan la red para prestar servicios de desarrollo a nuevas
herramientas que también la usan. Quizá sea esta una razón por la cual las aplicaciones
empresariales se interesan en consumir y explotar las características y los beneficios
entregados por Internet, donde se pueden integrar aplicaciones web, aplicaciones
móviles y aplicaciones de escritorio. Esta tendencia ha generado una gama amplia de
tecnologías y propuestas arquitecturales que se encuentran maduras y que facilitan el
desarrollo de aplicaciones que explotan las capacidades abiertas y distribuidas de
Internet.
De lo anterior se puede inferir fácilmente, que el trabajo desarrollado a lo largo del ciclo
de vida de una ontología, y en las diferentes etapas que ésta tiene, es de naturaleza
participativa, colaborativa y cuando mínimo simplemente de uso abierto. De aquí la
necesidad de su uso en ambientes abiertos y distribuidos como Internet.
¿Es posible definir las características que debe cumplir Ontoconcept con base en los
lineamientos de una Arquitectura Orientada a Servicios?
La solución de este interrogante implica abordar las siguientes preguntas inherentes:
¿Cuáles son los elementos que se deben tener en cuenta dentro de una
arquitectura?
15
JUSTIFICACIÓN
Ontoconcept es una herramienta para hacer gestión del ciclo de vida ontológico y por
tanto permite gestionar el cambio de Ontologías; se encuentra desarrollado en una
aplicación de escritorio y requiere ser actualizado, para satisfacer necesidades de una
herramienta de trabajo de ingeniería ontológica. Esto quiere decir, que debe ofrecer
funcionalidades para garantizar la gestión de repositorios de ontologías, construcción de
nuevas ontologías y dar soporte a sus procesos de cambio.
OBJETIVOS
OBJETIVO GENERAL
Proponer la arquitectura de línea base para el Framework Ontoconcept, soportado
en los criterios definidos en las arquitecturas web orientadas a servicios.
1
https://www.juvo.be/blog/oracle-leader-all-3-gartner-magic-quadrants-soa-and-soa-governance
16
OBJETIVOS ESPECÍFICOS
Esta lista es bastante aproximada a la vista de alto nivel de los módulos que interactúan
directamente durante un proceso de edición ontológica. Puede pensarse, por esta razón,
que se equipara la edición ontológica y el proceso de gestión del cambio.
17
CAPITULO 2. MARCO TEÓRICO: LAS ARQUITECTURAS DE SOFTWARE Y SOA
Este capítulo presenta una revisión de los principales conceptos inherentes al tema de
las arquitecturas de software, profundizando en las arquitecturas utilizadas para el
desarrollo de aplicaciones orientadas a internet, en particular SOA, ROA y REST
(Representational State Transfer - Transferencia de Estado Representacional).
1. La Arquitectura de Software es a grandes rasgos, una vista del sistema que incluye
los componentes principales del mismo, la conducta de esos componentes según
se la percibe desde el resto del sistema y las formas en que los componentes
interactúan y se coordinan para alcanzar la misión del sistema. [2]
Otras definiciones igualmente importantes en el contexto de este trabajo tienen que ver
con la definición de lo que son las arquitecturas de referencia, la línea base arquitectural
y las arquitecturas soportadas en modelos. Las definiciones presentadas a continuación,
2
Carl Zipperle https://www.sei.cmu.edu/architecture/start/glossary/community.cfm
18
son aportadas por el profesor de la Universidad de Antioquia Juan Bernardo Quintero, en
el curso de Arquitecturas de Software [3].
Estas definiciones permiten precisar lo que se pretende en este trabajo al definir la línea
base arquitectural del framework Ontoconcept.
Como punto de partida cabe mencionar que los atributos de calidad tratan sobre la
funcionalidad de los sistemas, los cuales son la “línea básica” de las capacidades,
servicios y comportamiento del sistema. Además, las funcionalidades y otras cualidades
están estrechamente relacionadas. Los sistemas son constantemente rediseñados
debido a la dificultad de mantenerlos, portarlos, porque son lentos o han sido hackeados.
19
Es el mapeo de una funcionalidad del sistema sobre la estructura del software lo que
determina el soporte de la arquitectura para las cualidades. La arquitectura es el primer
escenario en la creación de un sistema en el cual los requerimientos de calidad podrían
ser direccionados.
Existen múltiples propuestas de catalogación para los atributos de calidad, en este trabajo
se determinó utilizar la propuesta por el SEI (Instituto de Ingeniería del Software de la
Universidad de Carnegie & Mellon), sin desconocer los propuestos por otras empresas e
institutos tales Microsoft, Oracle, IEEE entre otros. La decisión se fundamentó en que
esta clasificación es consistente con la perspectiva de arquitectura de software que ha
sido utilizada para guiar este proyecto.
En [4] los autores plantean dos categorías de atributos de calidad contra los cuales un
sistema se puede medir y particularmente a nivel arquitectural:
La calidad tiene que ser considerada en todas las fases de diseño, implementación
y despliegue, pero las distintas cualidades se manifiestan de manera diferente
durante estas fases; Por ejemplo, muchos aspectos de calidad de usabilidad no son
20
arquitecturales, debido a que casi siempre están encapsulados dentro de un solo
componente. Su localización afecta la modificabilidad y no la usabilidad.
La principal técnica para lograr un software portable es aislar las dependencias del
sistema (sistemas dependientes). Este aislamiento introduce sobrecarga en la
ejecución del sistema, típicamente en forma de procesos o procedimientos límites,
las cuales perjudican el rendimiento.
A3. Finalmente, hay cualidades sobre la propia arquitectura que son importantes
21
El rendimiento es a menudo una función de la cantidad de comunicación
y la interacción que hay entre los componentes del sistema.
El rendimiento ha sido el factor determinante en la arquitectura del
sistema, y frecuentemente ha comprometido el logro de todas las demás
cualidades
Seguridad Medida de la capacidad del sistema para resistir intentos no autorizados
y denegación de servicio mientras sigue suministrando sus serviciso a
usuarios autorizados
Disponibilidad Mide la proporción de tiempo en la que el sistema está en
funcionamiento. Se mide por la longitud de tiempo entre los fallos, así
como por la rapidez con la que el sistema es capaz de reanudar el
funcionamiento en caso de fallo. La disponibilidad de estado constante
de un sistema es la proporción de tiempo que el sistema está
funcionando correctamente.
Confiabilidad (estrechamente relacionado con la disponibilidad) Capacidad del sistema
de mantenerse operando en el tiempo. La fiabilidad se mide
generalmente por el tiempo medio hasta el fallo.
Funcionalidad Capacidad del sistema para hacer el trabajo para el cual fue diseñado.
Realizar una tarea requiere que muchos o la mayoría de los
componentes del sistema trabajen coordinadamente para completar el
trabajo. Si a los componentes no se les ha asignado la responsabilidad
correcta o no han sido dotados con las capacidades correctas para
coordinarse con otros componentes, el sistema será incapaz de
responder a la funcionalidad requerida.
La funcionalidad es ortogonal a la arquitectura, lo que significa que en
gran parte no es arquitectural. Si el logro de la funcionalidad fuese el
único requisito, el sistema podría existir como un solo componente
monolítico con ninguna estructura interna.
Usabilidad La usabilidad puede estar divido en las siguientes áreas:
Facilidad de Aprendizaje: ¿Qué tan rápido y fácil es para el usuario
aprender a usar la interfaz del sistema?
Eficiencia: ¿El sistema responde con la velocidad adecuada a las
solicitudes de un usuario?
Capacidad de Recordar (Memorability - Memorizable): ¿El usuario
puede recordar cómo hacer las operaciones del sistema entre los usos
del sistema?
Evitación de Errores: ¿El sistema anticipa y previene errores comunes
de los usuarios?
Manejador de Errores: ¿El sistema ayuda al usuario a recuperarse de los
errores?
Satisfacción: ¿El sistema hace fácil el trabajo para los usuarios?
A1.2 ATRIBUTOS DE CALIDAD DEL SISTEMA NO DISCERNIBLES EN TIEMPO DE
EJECUCIÓN
Modificabilidad En todas sus formas, puede ser el atributo de calidad más estrechamente
alineado con la arquitectura del sistema. La capacidad de hacer cambios
rápidamente y el costo provienen directamente de la arquitectura. La
modificabilidad es en gran medida una función de la localización de
cualquier cambio. Hacer un cambio generalizado al sistema es más
costoso que hacer un cambio a un solo componente.
22
Ya que la arquitectura define los componentes y las responsabilidades
de cada uno, sino que también define las circunstancias en las que cada
componente tendrá que cambiar. Una arquitectura clasifica eficazmente
todos los posibles cambios dentro de tres categorías de acuerdo a si el
cambio va a provocar una modificación de un solo componente, de más
de un componente, o de algo más drástico, tal como un cambio en el
estilo arquitectural.
Extendiendo o cambiando capacidades (Extensibilidad): Adición de
nuevas funcionalidades, mejorando la funcionalidad existente, o la
reparación de errores.
Eliminación de las capacidades indeseadas: racionalizar o simplificar la
funcionalidad de una aplicación existente.
Adaptación a nuevos ambientes operativos (portabilidad): La portabilidad
hace un producto más flexible en la forma en que puede alinearse,
apelando a una amplia base de clientes
Reestructuración: racionalización de los servicios del sistema,
modularización, optimización, o la creación de componentes reutilizables
que pueden servir para dar a la organización una ventaja sobre sistemas
futuros
La modificabilidad algunas veces es llamada mantenibilidad
Portabilidad Es la capacidad del sistema de ejecutarse en diferentes ambientes
informáticos. Estos ambientes pueden ser hardware, software o una
combinación de los dos.
Reusabilidad La reutilización es usualmente usada para referirse al diseño de un
sistema, para que la estructura del sistema o algunos de sus
componentes puedan ser reutilizados de nuevo en futuras aplicaciones.
El diseño para la reutilización significa que el sistema ha sido
estructurado de manera que sus componentes pueden ser elegidos de
productos construidos previamente, en este caso es un sinónimo de
integrabilidad, en otros casos la reusabilidad puede ser concebida como
un caso especial de modificabilidad.
La reusabilidad está relacionada a la arquitectura de software en que los
componentes arquitecturales son las unidades de reutilización, y como
un componente reusable depende de que tan fuertemente acoplado este
con otros componentes.
Integrabilidad Es la capacidad de hacer que los componentes desarrollados
separadamente de un sistema trabajen juntos directamente. Esto a su
vez depende de la complejidad externa de los componentes, sus
mecanismos de interacción y protocolos, y el grado en que las
responsabilidades han sido fraccionadas limpiamente.
La integrabilidad también depende de que tan bien y que tan
completamente se han especificado las interfaces de los componentes.
Integrar un componente depende no solo de los mecanismos de
interacción usados, sino también de la funcionalidad asignada al
componente para ser integrado y como esta funcionalidad está
relacionada a la funcionalidad del entorno del nuevo componente.
Un tipo especial de la integrabilidad es la interoperabilidad. La
integrabilidad mide la capacidad de las partes de un sistema para trabajar
juntos. La interoperabilidad mide la capacidad de un grupo de partes para
trabajr con otro sistema.
23
Capacidad de La capacidad de prueba de software se refiere a la facilidad con la que
Prueba el software puede hacer para demostrar sus defectos a través de
pruebas. Para que un sistema sea properly testable tiene que ser posible
controlar cada estado interno y las entradas de los componentes y luego
observar sus salidas.
La capacidad de prueba de un sistema se refiere a varias cuestiones
estructurales o arquitectónicas: su nivel de documentación
arquitectónica, su separación de intereses, y el grado en que el sistema
utiliza la información escondida. El desarrollo incremental también
beneficia la capacidad de prueba en la misma manera que mejora la
integrabilidad
Tabla 1. Atributos de Calidad del Sistema
24
Un conjunto de tipos de componentes (repositorio de datos, procesos,
procedimientos) que realizan alguna función en tiempo de ejecución.
Un Diseño topológico de estos componentes indicando sus interrelaciones en
tiempo de ejecución
Un conjunto de restricciones semánticas (ejemplo un repositorio de datos no se le
permite cambiar sus valores guardados en el)
Un conjunto de conectores (por ejemplo, llamadas a subrutinas, llamada a
procedimientos remotos, flujos de datos y sockets) que median la comunicación, la
coordinación, o cooperación entre los componentes.
Un estilo define una clase de arquitectura; equivalentemente es una abstracción
para un conjunto de arquitecturas que lo reúnan. Los estilos usualmente son
ambiguos acerca del número de componentes implicados. Los estilos pueden ser
ambiguos sobre los mecanismos sobre los cuales interactúan los componentes,
aunque algunos componentes se unen de forma explícita. Los estilos siempre son
ambiguos acerca de la función del sistema.
Los estilos centrados en datos se están volviendo cada vez más importantes debido
a que ofrecen una solución estructural para la integrabilidad. Muchos sistemas
especialmente los construidos a partir de componentes existentes están logrando la
integración de datos a través del uso de mecanismos de Pizarra. Tienen la ventaja
de que los clientes son relativamente independientes entre sí, y el almacén de datos
es independiente de los clientes. Así, este estilo es escalable: nuevos clientes
pueden ser fácilmente añadidos.
25
Sus ventajas principalmente provienen desde su simplicidad y las formas limitadas
en las que pueden interactuar con su ambiente. No hay interacciones de
componentes complejos de manejar. Simplifica el mantenimiento y mejora la
reutilización por la misma razón de los filtros, además se puede tratarlos como cajas
negras. Debido a que un filtro puede procesar su entrada en aislamiento del sistema,
un sistema de tuberías y filtros se hace fácilmente paralelo o distribuido,
proporcionando oportunidades para mejorar un rendimiento de los sistemas sin
modificarlo.
26
características que diferencian el paradigma orientado a objetos del paradigma de
tipos de datos abstractos son la herencia y el polimorfismo
Sistemas de Capas: son aquellos en los que los componentes están asignados a
capas para controlar la interacción entre componentes. Cada nivel se comunica solo
son su vecino inmediato. El objetivo es alcanzar las cualidades de modificabilidad y
portabilidad usualmente.
Los sistemas de eventos son un subestilo en el cual el control es parte del modelo. Los
componentes individuales anuncian los datos que quieren compartir con su ambiente con
un conjunto de componentes sin nombre. Los sistemas de eventos hacen uso de un
administrador de mensajes que gestionan la comunicación entre componentes,
invocando un componente un componente cuando llega un mensaje para él.
Los sistemas raramente son construidos a partir de un solo estilo, y se dice que
estos tipos de sistemas son heterogéneos. Hay tres tipos de heterogeneidad:
Localmente Heterogéneos: significa que un esquema (dibujo) de sus estructuras en
tiempo de ejecución revelará patrones de diferentes estilos en diferentes áreas.
Jerárquicamente Heterogéneos, significa que un componente de un estilo, cuando
se descompone, está estructurado de acuerdo a las reglas de los diferentes estilos.
27
Simultáneamente heterogéneos, significa que cualesquiera de varios estilos pueden
bien ser apto para la descripción del sistema.
Esta última forma de heterogeneidad reconoce que los estilos no dividen las arquitecturas
de software dentro. El estilo centrado en datos se compone de clientes de hilo
independiente, al igual que una arquitectura de componentes independientes. Las capas
en un sistema de capas en comprender objetos o componentes independientes o incluso
subrutinas en un programa o subrutina principal de un sistema. Los componentes de un
sistema de tubería y filtro son usualmente implementados como procesos que operan
independientemente, esperando hasta una entrada en su puerto; de nuevo, esto es
similar a los sistemas de componentes independientes cuya orden de ejecución esta
predeterminada.
Debido a que una arquitectura casi nunca está construida completamente de un solo
estilo, una arquitectura necesita entender las interrelaciones entre estilos.
Categorías de Características
Los principales ejes de clasificación son el control y la interacción de los datos entre los
componentes. Se puede hacer discriminaciones más sutiles dentro de estas
dimensiones:
Cómo el control es compartido, asignado y trasferido entre componentes
Cómo los datos se comunican a través del sistema
Cómo los datos y el control interactúan
El tipo de razonamiento que los estilos permiten
Los tipos de componentes y conectores que se utilizan en el estilo
28
Problemas de Control:
Los problemas de control describen como el control pasa entre los componentes y como
los componentes trabajan juntos temporalmente.
Topología, ¿Qué forma geométrica toma el sistema para el control de flujo?
o Estilo tubería: topología lineal o de control acíclico
o Estilo de programa principal y subrutinas cuenta con una topología jerárquica
(forma de árbol)
o Algunos sistemas de servidor tienen una topología de estrella
o Un estilo que consiste en la comunicación de procesos secuenciales puede tener
una tecnología arbitraria.
La topología puede ser estática o dinámica, esto está determinado por el tiempo
de unión de los componentes.
Sincronicidad, ¿Qué tan dependientes son las acciones de los componentes sobre
los estados de control de los demás? En un sistema unísono, el estado de cualquier
componente implica el estado de los otros. En sistemas síncronos, los componentes
se sincronizan regularmente, pero los estados de las relaciones son impredecibles.
Los componentes asíncronos son en gran medida impredecibles en sus
interacciones o se sincronizan de vez en cuando; los componentes oportunistas
como los agentes autónomos trabajan en paralelo completamente independientes
el uno del otro
Tiempo de unión ¿Cuándo es establecida la identidad de un socio en una operación
de transferencia de control? Algunas trasferencias de control están
predeterminadas en el programa. Otras son vinculadas dinámicamente mientras el
sistema está ejecutándose.
Problemas de Datos
29
Problemas de Interacción de Control/Datos
Los datos de interacción describen la relación de ciertos problemas de control y
datos.
¿Direccionalidad, ¿Si las formas son sustancialmente las mismas, el control de flujo
en la misma dirección que los datos o la dirección opuesta? En un sistema de flujo
de datos como la tubería y los filtros, el control y los datos pasan juntos de
componente a componente. Sin embargo, en un estilo cliente servidor, el control
tiende a fluir en el servidor y el flujo de datos en los clientes.
REFINAMIENTO DE ESTILOS
Una definición más general para estilo arquitectónico es la que se ofrece en Taylor,
Medvidovic y Oreizy (2009), tomada originalmente de Taylor, Medvidovic y Dashofy
(2009) : “(…) colecciones de decisiones de diseño que 1) son aplicables en un
contexto de desarrollo dado, 2) restringen las decisiones de diseño arquitectónicas
específicas para un sistema dentro de dicho contexto, y 3) persigue cualidades que
benefician los sistemas resultantes”.
30
2007). Estas DS son las que afectan horizontalmente al sistema, por lo tanto
implican a la mayoría de los elementos que conforman el mismo (Dashofy 2007)3.
Abowd, Allen, y Garlan (1993) analizaron lo que ellos llaman el estilo tubería y filtro
por la manera de formalización de la semántica de estilos arquitecturales.
Identificaron tres variaciones del estilo tubería y filtro:
1. Sistemas sin bucles de retroalimentación o ciclos (acíclicos)
2. Tuberías (lineal)
3. Sistemas con solo componentes de ventilador de salida
Los estilos por lo general proveen cuatro argumentos (Monroe, Kompanek, Melton,
Garlan 1997):4
1. Un vocabulario de elementos de diseño: tipos de componentes y conectores,
como pueden ser filtros, tuberías, clientes, servidores, etc.
2. Reglas de diseño o restricciones que determinan las composiciones
permitidas de esos elementos.
3. Interpretación semántica, por lo que las composiciones de elementos de
diseño, debidamente limitados por las reglas de diseño, tienen significados bien
definidos.
4. Análisis que pueden ser realizados en los sistemas construidos con el estilo.
Una Vía de flujo de datos a través de redes y filtros, esto es una versión del subestilo
red de flujo de datos implementado con procesos de comunicación. En esta versión
la implementación con mensajes introduce en el flujo de datos la abstracción. Una
pieza de datos entra al sistema y realiza su recorrido a través de series de
transformaciones, cada transformación acompañada por un proceso separado. La
serie no necesita ser lineal.
3
GECONTEC: Revista Internacional de Gestión del Conocimiento y la Tecnología. ISSN 2255-5684 Matos-Arias, Y. y
Silega-Martínez, N. Vol. 1(1). 2013 pag. 27
4
Matos Arias, Y., & Silega Martínez, N. (2013). Estilo arquitectónico para el sistema integrado de gestión
Cedrux.
31
comunicación, en el cual las topologías, la sincronicidad y el modo son restringidos
de la forma general. Esta es la forma ingenua, que ignora el requisito usual para
mantener el estado de una secuencia continua de las interacciones entre el cliente
y el servidor.
¿Cuál estilo se debe elegir para diseñar un sistema, entonces, si hay más de uno cual
elegir? La respuesta es que depende de las cualidades que más nos interesen.
Deducción: Los estilos pueden ser descritos por un conjunto de características tales como
la naturaleza de los componentes y conectores, sus topologías estáticas y el control
dinámico y los datos que pasan los patrones, y el tipo de razonamiento que admiten.
32
Los ADLs permiten modelar una arquitectura mucho antes que se lleve a cabo la
programación de las aplicaciones que la componen, analizar su adecuación,
determinar sus puntos críticos y eventualmente simular su comportamiento.
[Reinoso]
Según [8] los elementos arquitectónicos que modelan los ADL se clasifican en:
Estructurales
33
Tipo de Componentes: Modulo, Computación (cálculo - computation), Dato-
compartido, Archivo-de-secuencia, filtros, procesos, schedProcess, general
Puerto: No debe confundirse con el conector. Los puertos son los puntos por los que
un componente puede realizar cualquier tipo de interacción; dicho de otro modo,
es cada uno de los fragmentos en los que se segmenta el interfaz de un
componente.
34
Estilos: Representan familias de sistemas, un vocabulario de tipos de elementos de
diseño y de reglas para componerlos. Ejemplos clásicos serían las arquitecturas
de flujo de datos basados en grafos de tuberías (pipes) y filtros, las arquitecturas
de pizarras basadas en un espacio de datos compartido, o los sistemas en capas.
Algunos estilos prescriben un framework, un estándar de integración de
componentes, patrones arquitectónicos o como se lo quiera llamar
35
ADL FECHA ORGANISMO OBSERVACIONES
INVESTIGADOR
SADL 1995 Moriconi, ADL con énfasis en mapeo de
Riemenschneider (SRI) refinamiento
UML 1995 Rumbaugh, Jacobson, Lenguaje genérico de
Booch (Rational) modelado – No es ADL
UniCon 1995 Shaw (CMU) ADL de propósito general,
énfasis en conectores y estilos
Wright 1994 Garlan (CMU) ADL de propósito general,
énfasis en comunicación
xADL 2000 Medvidovic, Taylor (UCI, ADL basado en XML
UCLA)
Tabla 2. Fuente GARLAN, David y SHAW, Mary. An introduction to software
architecture. CMU Software
Acme – Armi
Acme se define como una herramienta capaz de soportar el mapeo de
especificaciones arquitectónicas entre diferentes ADLs, o en otras palabras, como
un lenguaje de intercambio de arquitectura. No es entonces un ADL en sentido
estricto, aunque la literatura de referencia acostumbra tratarlo como tal. De hecho,
posee numerosas prestaciones que también son propias de los ADLs. Su objetivo
principal es la motivación fundamental de Acme es el intercambio entre
arquitecturas e integración de ADLs.
Aesop
El nombre oficial es Aesop Software Architecture Design Environment Generator.
Se ha desarrollado como parte del proyecto ABLE de la Universidad Carnegie
Mellon, cuyo objetivo es la exploración de las bases formales de la arquitectura de
software, el desarrollo del concepto de estilo arquitectónico y la producción de
herramientas útiles a la arquitectura, de las cuales Aesop es precisamente la más
relevante.
ArTek
36
de dominio y siempre fue presentado como un caso testigo de generación de un
modelo a partir de una instancia particular de uso.
C2 SADL
CHAM
Darwin
Jacal
LILEANNA
LILEANNA es, visto como ADL, estructural y sintácticamente distinto a todos los
demás. De hecho, es oficialmente un lenguaje de interconexión de módulos (MIL),
basado en expresiones de módulo propias de la programación parametrizada. Un
MIL se puede utilizar descriptivamente, para especificar y analizar un diseño
determinado, o constructivamente, para generar un nuevo sistema con base en
módulos preexistentes, ejecutando el diseño.
MetaH
Así como LILEANNA es un ADL ligado a desarrollos que guardan relación específica
con helicópteros, MetaH modela arquitecturas en los dominios de guía, navegación
y control (GN&C) y en el diseño aeronáutico. Aunque en su origen estuvo ligado
estrechamente a un dominio, los requerimientos imperantes obligaron a
implementar recursos susceptibles de extrapolarse productivamente a la tecnología
de ADLs de propósito general.
Rapide
38
el lenguaje de especificación describe restricciones abstractas para la conducta de
los componentes;
el lenguaje ejecutable describe módulos ejecutables; y
el lenguaje de patrones describe patrones de los eventos.
UML
UniCon
39
Wright
xADL
UML simple, nunca ha sido identificado suficientemente como para ser considerado un
ADL. La posición simple de UML es justo la posición de un lenguaje de
documentación.
41
La forma de uso más frecuente es la definición de restricciones en el modelado de un
sistema. Incorporando OCL proporciona limitaciones sintácticas y semánticas
adicionales, haciendo el modelo más claro, pero más complicado. De todos modos
el uso del lenguaje es obviamente ventajoso para aclarar el modelo.
Perfiles de UML
[9] Sugirió perfiles basados en estereotipos definidos en OCL para mapear ADLs
particulares a UML. Este enfoque parece ser muy prometedor. El “Perfil” de UML es
un conjunto de elementos, usualmente centrados en particular en dominios de
negocio.
Esta es la pregunta principal. Aunque UML integrado con OCL proporciona todas las
características esperadas de un ADL. La respuesta a esta pregunta tiende a No.
Los conceptos de UML son claros, pueden ser completamente refinados para
ajustarse a la mayoría de ADL. Sin embargo, considerar UML como ADL reduce las
capacidades del lenguaje. En consecuencia UML tiende a ser utilizado
inapropiadamente como ADL. La mejor practica debe ser adquirida mediante el uso
especializado del perfil UML, posiblemente mapeando el perfil particular de ADL a
UML (possibly profile mapping particular ADL to UML ). Por otro lado, UML debe ser
considerado como una alternativa a los ADL, cuando se modela y se razona en
arquitecturas de software. UML es justo la descripción industrial del lenguaje Nº 1
para las arquitecturas de software.
42
CAPITULO 3. ONTOLOGÍAS Y FRAMEWORKS ONTOLOGICOS
Smith y Welti [14] señalan que, en las ciencias de la información, John McCarthy en
1980, introdujo el término Ontología tomándolo en préstamo de la filosofía, al
proponer que los constructores de sistemas inteligentes, basados en lógica, debían
primero, listar todas las cosas que existen, construyendo una ontología del mundo.
Igualmente, reporta la propuesta de Sowa en 1984 [Sow84], en el sentido de utilizar
una ontología para catalogar todas las cosas que hay en el mundo, la forma cómo
están ubicadas y como ellas trabajan.
Operaciones de Ontologías
43
Atómicos
Compuestos, y
Complejos
Operaciones atómicas:
Las operaciones atómicas representan las operaciones de grano más fino que se
pueden ejecutar en un modelo ontológico específico. Corresponden a las
operaciones de edición básica: Agregar, modificar y borrar, aplicables a conceptos
simples o compuestos, relaciones, jerarquías de conceptos y relaciones, y axiomas.
Operaciones complejas
Mezcla (Merge): Creación de una nueva ontología desde dos ontologías fuentes,
posiblemente no disjuntas. Las ontologías fuentes permanecen inalteradas,
mientras que la nueva ontología contiene el conocimiento de las ontologías iniciales.
44
Integración (Integration): Es la inclusión en una ontología de otra ontología,
expresando la afirmación con transparencia entre estas ontologías. La ontología
integrada retiene el conocimiento de las dos ontologías integradas. Contrario a la
mezcla, la primera ontología permanece inalterada, mientras que la segunda es
modificada.
3.2.1. ONTOCONCEPT
Como resultado de la Tesis doctoral del ingeniero Julio César Chavarro Porras [1], se
desarrolló la herramienta OntoConcept como parte del marco de referencia para el
modelado conceptual del cambio ontológico, la cual implementa una arquitectura
cliente-servidor dos capas soportado en plugins, y utiliza el modelo conceptual
basado en el Grafárbol para procesar las sentencias del lenguaje declarativo.
45
Menú principal, que da acceso a las opciones para seleccionar el espacio de trabajo,
las ontologías disponibles en un espacio de trabajo, o los objetos que componen
una ontología.
Consola, y Navegador de ontología que son las opciones del menú de segundo nivel
que aparece debajo del menú principal.
Menú de tercer nivel, asociado a la ventana activa. Permite ejecutar uno o varios
comandos. Crear o limpiar el área de comandos asociado a una ontología. Cargar
un archivo de comandos, o salvar los comandos de la sesión activa.
Un área para escribir los comandos que se desean ejecutar.
Una ventana de visualización, la cual permite visualizar el área de trabajo de
memoria que se encuentra activo.
Un área para visualizar mensajes, que se han generado durante la ejecución de los
comandos.
46
Después de creada la ontología, en un espacio de trabajo determinado, se está habilitado
para trabajar con las entidades que la componen: conceptos, relaciones, tipos de datos,
individuos, o axiomas.
3.2.2 Protegé
NeOn Toolkit [20] es una plataforma de ingeniería ontológica desarrollada por el EC-
Funded Neon Project. Está basada en la framework Eclipse y soporta modelado de frame
como ontologías extendidas por normas y modelado de DL-ontologías. Como plataforma
es un entorno extensible, para el cual los socios de Neon están contribuyendo
funcionalidad en forma de plug-ins.
NeOn Toolkit es un entorno de ingeniería ontológica de estado del arte, código abierto y
multiplataforma, el cual proporciona apoyo completo para el ciclo de vida de ingeniería
ontológica. La herramienta está basada en la plataforma de eclipse, un ambiente de
desarrollo que conduce y proporciona un amplio conjunto de plug-ins, que cubre una
variedad de actividades de ingeniería de ontologías.
47
Panel de Propiedades de Entidades, el panel de propiedades de entidades es
área de trabajo principal para la definición y modificación de recursos de la
ontología seleccionada.
48
CAPITULO 4. CARACTERÍSTICAS DE SOA Y ROA PARA WEB
Este capítulo está centrado en presentar el estado del arte de las arquitecturas que
pueden ser utilizadas en el desarrollo de aplicaciones orientadas a internet. En este
sentido, las arquitecturas distribuidas consisten de componentes que los clientes, así
como otros componentes pueden acceder a través de la red mediante una interfaz y
mecanismos de interacción que define la arquitectura.
49
coreografías de servicios. Un business process management system (BPMS) es el aliado
ideal para definir esta orquestación desde dónde invocar los servicios necesarios para
realizar el proceso establecido. El término business process management (BPM) se
refiere al conjunto de actividades que se realizan para optimizar o adaptar sus procesos
de negocio a las nuevas necesidades organizacionales. Como en general están
soportadas por herramientas de software, el término BPM es utilizado indistintamente
para referirse a las herramientas y a las actividades en acuerdo a los expresado por [42].
En el diseño de una arquitectura SOA la granularidad y los diversos tipos de servicios
deben ser definidos. La forma en la que se desarrolla SOA depende concretamente de la
plataforma específica y en particular en lo que se refiere a la infraestructura (usualmente
basada en TCP/IP) y en la forma en la que la interfaz esta implementada y descrita.
Propiedades de SOA: Adaptabilidad, flexibilidad, agilidad de desarrollo y reutilización de
desarrollos existentes.
SOA es un estilo de arquitectura que plantea una serie de guías para la integración de
diferentes sistemas informáticos [LN05]. Un objetivo fundamental de SOA es crear
sistemas a partir de servicios desarrollados en distintos lenguajes de programación y
soportados por plataformas diferentes, con el fin de dar solución completa a los procesos
empresariales de una compañía. [Microsoft05] [Utilización de patrones para la
construcción de SOA]
Para [25], la arquitectura orientada a servicios, es la más difundida en el mundo de los
servicios web, es un estilo de arquitectura de software cuyo propósito es lograr un débil
acoplamiento entre los componentes de software que interactúan entre sí.
SOA es el producto de una evolución de las siguientes tecnologías:
XML (Extensible Markup Language): Es uno de los lenguajes más utilizados para
el intercambio de datos sobre la Web, El lenguaje XML está concebido para describir
objetos de datos llamados Documentos XML y describir de cierta forma los programas
que los procesan. Está restringido bajo la norma ISO 8879 el Estándar Generalizated
Markup Language. XML es un leguaje etiquetado, característica que le permite definir
objetos de datos estructurados en partes bien definidas llamadas elementos.
RPC (Remote Procedure Call): Es un protocolo que permite ejecutar una rutina en
un equipo o segmento de red de manera remota.
50
emplea para describir los servicios disponibles y UDDI se ocupa para conocer cuáles
son los servicios disponibles.
SOA proporciona una metodología y un marco de trabajo basado en servicios, el objetivo
es proveer la reutilización de un determinado servicio evitando el desarrollo de interfaces,
lo cual permite proveer ventaja en la construcción de sistemas distribuidos.
Una Arquitectura Orientada a Servicio está compuesta por elementos funcionales y
elementos relacionados con la calidad de servicio [26].
Elementos funcionales:
51
4.2 PRINCIPIOS FUNDAMENTALES DE SOA
o Conocer los límites, Los servicios proporcionan un contrato para definir las
interfaces públicas que ofrece. Toda la interactuación con el servicio tiene
lugar a través de la interfaz pública. La interfaz consta de procesos públicos
y representaciones de datos públicos.
o El consumo de los servicios debe resultar fácil, La interfaz (contrato) del
servicio se debe diseñar de modo que su evolución no implique la ruptura
de contratos con los usuarios existentes.
o Evitar interfaces RPC, Pasar mensajes de forma explícita constituye una
técnica más adecuada que el uso de modelos RPC. Este enfoque aísla al
usuario del mecanismo interno de la implementación del servicio.
o El área de la superficie del servicio se debe mantener pequeña,
Proporcionar pocas interfaces públicas bien definidas al servicio. Estas
interfaces deben ser relativamente simples, y estar diseñadas para aceptar
un mensaje de entrada bien definido y responder con un mensaje de salida
igualmente bien definido.
o Los detalles de la implementación interna (privada) no deben salir de los
límites de un servicio, La entrada de los detalles de implementación en los
límites del servicio dará lugar probablemente a un acoplamiento menos
flexible entre el servicio y los usuarios del mismo
52
servicios se han diseñado e implementado de forma independiente entre sí y sólo se
pueden comunicar a través de mensajes y políticas controlados por contratos.
La línea que separa los datos internos de los externos es de vital importancia para la
implementación y el uso de un servicio determinado. Los datos externos o públicos
deben estar definidos por estándares, mientras que los internos o privados deben
encapsularse en el interior de la implementación del servicio.
53
Principio 4: La compatibilidad de los servicios se basa en una directiva
Bajo Acoplamiento: los servicios mantienen una relación que minimiza las
dependencias y solo requiere que conserven una conciencia del uno al otro. Es decir,
los servicios tienen que ser independientes, cada vez que se vaya a ejecutar un
servicio, se debe acceder a él a través del contrato, logrando así la independencia
entre el servicio que se va a ejecutar y el que lo llama. Si se consigue este bajo
acoplamiento, los servicios podrán ser totalmente reutilizables.
Contrato de Servicios: Los servicios se adhieren a un acuerdo de comunicaciones,
tal como se definen colectivamente por uno o más descripciones de servicios y
documentos relacionados. Todo servicio desarrollado, debe proporcionar un contrato
en el cual figure: el nombre del servicio, su forma de acceso, las funcionalidades que
ofrece, los datos de entrada de las funcionalidades y los datos de salida.
Autonomía: Los servicios tienen el control sobre la lógica que encapsulan. Todo
servicio debe tener su entorno de ejecución. De esta manera el servicio es totalmente
independiente.
Abstracción: Más allá de lo que se describe en el contrato de servicio, los servicios
ocultan la lógica del mundo exterior.
Reutilización: la lógica está dividida en servicios con la intención de promover la
reutilización. Todo servicio debe ser diseñado y construido pensando en su
reutilización dentro de la misma aplicación, dentro del dominio de aplicaciones o
incluso dentro del dominio público para su uso masivo.
Componibilidad (Composability): las colecciones de servicios pueden ser
coordinadas y ensambladas para formar servicios compuestos. Todo servicio debe
ser construido de tal manera que pueda ser utilizado para construir servicios genéricos
de más alto nivel, el cual estará compuesto de servicios de más bajo nivel.
Apátrida (Sin estado): Los servicios minimizan retener información específica para
una actividad. Un servicio no debe almacenar ningún tipo de información. Esto se
debe a que una aplicación está conformada por un conjunto de servicios, lo que
implica que si un servicio almacena algún tipo de información se puede producir
problemas de inconsistencia de datos.
Descubribilidad (Discoverability): Los servicios están diseñados para ser
descriptivos externamente, para que puedan ser encontrados y evaluados a través de
mecanismos de detección disponibles. Todo servicio debe poder ser descubierto de
54
alguna manera, para que pueda ser utilizado, con el fin de evitar la creación accidental
de servicios que proporcionen las mismas funcionalidades.
La interoperabilidad intrínseca
Descubribilidad (discoverability)
Federación
Reutilización inherente
Extensibilidad
Capas de abstracción
Débil acoplamiento
Modelado de negocios orientado a servicios
Agilidad organizacional
Evolución de SOA
El concepto SOA comenzó con mucho impulso como una tendencia en el área de la
integración tecnológica, sin embargo, con el paso del tiempo el modelo tuvo su curva de
decepción lo cual se produjo principalmente por la falta de conocimiento de cómo aplicar
el concepto, así como comparar SOA y aplicarlo como otros modelos de integración
tradicionales.
55
Ha traído como consecuencia que sea necesaria la aplicación de un importante modelo
consultivo antes, durante y posterior al proceso de implantación/evolución de una
estrategia SOA, ver figura 4, para ello puede crearse servicios para afrontar una
implementación SOA y que estaría cubierta con los siguientes bloques de servicios:
56
para resolver otra, entre otros. Lo que tendremos será una plataforma
transversal formada por un inventario de servicios (o varios) de forma que no
solventaremos las necesidades cambiantes del negocio creando nuevas aplicaciones
sino combinando diferentes servicios (y creando nuevos servicios cuando
corresponda). De esta forma conseguimos que los departamentos de IT y negocio estén
alineados de forma que el primero pueda responder de manera ágil a las exigencias del
segundo.
Dicho esto, alguien puede pensar: “Entonces para tener una SOA lo que tengo que hacer
es crear web services, a lo bestia”. Pues no, ojalá fuese tan fácil.
Es cierto que para poder tener una arquitectura SOA necesitamos tener una buena base
de servicios. Pero no vale con crearlos de cualquier manera. Estas son algunas
consideraciones que debemos tener en cuenta:
Debemos contar con una buena base de servicios reutilizables o muli-propósito.
Servicios no diseñados para resolver una necesidad de negocio específica.
Los servicios de utilidad y entidad son perfectos en este sentido. De esta forma
podremos crear múltiples composiciones basadas en ellos conforme las
necesidades de negocio van cambiando.
Nuestros servicios deben contar con un contrato estandarizado (ya sea WSDL, un
documento o ambos) con un modelo de datos normalizado dentro de todo nuestro
inventario. De esta manera facilitamos la interacción entre servicios. Sustituimos el
concepto de integración por interoperabilidad intrínseca.
Debemos categorizar y registrar todos nuestros servicios (recursos de plataforma)
de forma que, en cualquier momento, podamos consultar con qué recursos
contamos, qué funcionalidades encapsulan y cómo interacturar con ellos.
Debemos evitar el solapamiento de funcionalidades entre servicios como parte de
la labor de gobierno SOA que debemos ejercer sobre nuestra plataforma.
Debemos evitar “casarnos” con una tecnología en concreto (Java, .Net, y otros…) a
la hora de crear nuestros servicios. Los servicios deben poder implementarse con la
tecnología que consideremos necesaria en cada momento sin que esto afecte al
resto de la plataforma.
Como se ve, no resulta tan fácil diseñar una arquitectura orientada a servicios. Sin
embargo, los servicios web basados tanto en SOAP como REST son excelentes
opciones a la hora de crear los servicios que conformarán la plataforma ya que, sin lugar
a dudas, reúnen las condiciones ideales para poder diseñar servicios que cumplan con
los principios de diseño alineados con SOA.
57
Es un estilo arquitectural basado en REST, su principal función es exponer recursos, esta
arquitectura pretende ser un método sistemático para desarrollar servicios en la Web que
se adhieran a los principios de REST.
Los principales conceptos de ROA son los siguientes: [RESTful Web services]
La conectividad exige que los recursos no vivan de manera aislada, sino que
establezcan enlaces entre ellos, entregando al cliente los estados vecinos al actual y
posibilitando así la navegación
58
Una Interfaz uniforme: Todos los recursos en ROA son accedidos a través de la misma
interfaz común la cual es HTTP sencillo, cabe señalar que el uso de una interfaz
común no necesariamente significa que tola la información necesaria que permita la
interoperabilidad y la colaboración entre recursos estén disponibles.
ROA y REST
El punto no es que GET es el mejor nombre para una operación de lectura, pero GET
significa “leer” a través de la web, no importa que recurso lo esté usando. Dado una
URI de un recurso, no hay duda de cómo se obtiene una representación: se envía una
solicitud HTTP GET a la URI. Sin la interfaz uniforme se tendría que aprender cómo
cada servicio espera para recibir y enviar información. Las reglas podrían incluso ser
diferentes para diferentes recursos dentro de un solo servicio.
Sin la interfaz uniforme, se obtiene una multiplicidad de métodos que toman el lugar
de GET. Cada servicio habla un lenguaje diferente.
El manejo de los recursos se realiza utilizando las operaciones propias del protocolo
HTTP
4.5.2 REST
REST es un estilo arquitectural para sistemas hipermedia distribuidos tales como la web.
REST queda definido por tres restricciones de interfaz: identificación de recursos,
manipulación de recursos mediante representaciones de estos mensajes auto-
descriptivos, e hipermedia como motor del estado de la aplicación. Cabe destacar que
REST no es una especificación ni un estándar, ya que es tan solo un estilo de arquitectura
[25]. Aunque REST no es un estándar, está basado en estándares:
HTTP
URL
59
Representación de los recursos: XML/HTML/GIF/JPEG/, entre otros.
Tipos MIME: text/xml, text/html, entre otros.
60
CAPITULO 5. RECOMENDACIÓN ARQUITECTURAL PARA FRAMEWORK
ONTOLOGICO
61
Ilustración 3. Arquitectura de marco de referencia para la gestión conceptual del
cambio ontológico
62
5. Razonador
6. Gestor de Ontología de vocabulario de metadatos
7. Gestor de Ontología de cambio genérico
8. Editor Ontológico
9. Buscador de ontologías
10. Publicador de ontologías
11. Mediador de lenguajes de consulta
12. Traductores para lenguajes de consulta de ontologías: Sparql, OQL, RQL
13. API del gestor declarativo
14. Aplicación Cliente
La siguiente ilustración presenta una vista externa del sistema, en la cual se puede
observar la interacción de los módulos seleccionados.
63
Ilustración 4. Módulos relacionados al proceso de edición ontológica
Con el fin cumplir el objetivo de este trabajo, el cual es proponer la línea base arquitectural
del framework Ontoconcept, se utilizará el Lenguaje de Modelado Unificado (UML) como
Lenguaje de Descripción Arquitectural (ADL), para modelar la arquitectura recomendada,
usando mecanismos de extensión, comúnmente llamados estereotipos, los cuales se
utilizan para explicitar la especialización de los elementos de los diagramas dando un
significado adicional a dichos elementos, enriqueciendo la descripción de la arquitectura.
La selección de UML como ADL debido a que como se expresó anteriormente (referencia
capitulo LDA), un ADL especifica formalmente una arquitectura de software, modelando
componentes, conectores y configuraciones, utilizando una sintaxis simple, entendible y
gráfica. Con base en lo anterior UML 2.0 extendido cumple las características y por ende
funciones de un ADL.
64
sino también procesos de negocio y estructura de datos. UML está conformado por
Modelos y el Lenguaje de Restricción de Objetos (OCL). Tiene la característica de ser
extendido por Metamodelos y Perfiles. Adicionalmente los modelos se componen de
diagramas y a su vez los diagramas se componen de estereotipos y conjunto de reglas.
UML ofrece varios diagramas para modelar los sistemas, entre los diagramas ofrecidos
se encuentra el Diagrama de Componentes, el cual define el comportamiento del sistema,
permitiendo modelar la especificación, construcción y visualización de la arquitectura del
sistema. Los elementos proporcionados por el diagrama de componentes son:
Componentes
Conectores
Puertos
Interfaces
Clasificadores estructurados
Al comparar los elementos ofrecidos por un ADL y los elementos proporcionados por el
diagrama de componentes de UML. Se puede inferir que efectivamente UML funciona
como un ADL. Para este trabajo se usará UML para especificar la arquitectura propuesta
para el framework, haciendo uso de su modelado visual (Diagrama de Componentes), el
cual permite construir, especificar y visualizar la arquitectura.
5.3.2.1 Componentes
65
5.3.2.2 Conectores
Los conectores son los enlaces para comunicar dos o más instancias, son enlaces entre
puertos o interfaces. Los conectores no se pueden asociar a descripciones de
comportamiento o atributos.
5.3.2.3 Puertos
5.3.2.4 Interfaces
66
Ilustración 5. Diagrama de Componentes - Vista Externa de la Arquitectura
67
Ilustración 6. Vista Interna del Componente Cargador
Una plantilla o dispositivo de interfaz, suele proporcionar una separación entre la forma o
estructura y el contenido. Es un medio o sistema, que permite guiar, portar, o construir,
un diseño o esquema predefinido; agiliza el trabajo de reproducción o de muchas copias
idénticas o casi idénticas. Si se quiere un trabajo más refinado, más creativo, la plantilla
no es sino un punto de partida, un ejemplo, una idea aproximada de lo que se quiere
hacer.
Las plantillas, como norma general, pueden ser utilizadas por personas o por sistemas
automatizados.
Tipo: las componentes pueden manejar distintos tipos. Se pueden instanciar elementos
de los distintos tipos para especificar una arquitectura.
69
5.4 Aspectos No funcionales
De igual manera, serán de particular importancia las propiedades no funcionales del sistema de
software, pues influyen notoriamente en la calidad del mismo. Estas propiedades tienen un gran
impacto en el desarrollo y mantenimiento del sistema, su operabilidad y el uso que éste haga de
los recursos (Buschman et al., 1996).
Son los aspectos del sistema, que en general, no afectan directamente a la funcionalidad
necesitada, sino que definen la calidad y las características que el sistema debe soportar.
Esto tiene una relación directa con la Arquitectura.
Cada una de las frases anteriores está sujeta a diferentes interpretaciones y malos
entendidos. Lo que uno puede considerar robusto, otro puede considerarlo apenas
aceptable.
70
No parece razonable, considerar que un sistema pueda alguna vez, por ejemplo, ser
completamente confiable bajo toda circunstancia (pensar en problemas de energía, de
natura, meteorológicos, entre otros). Dado esto, es importante que el arquitecto entienda
perfectamente bajo qué circunstancias un sistema debe ser confiable para ser
considerado aceptable. Por lo tanto, el primer trabajo que debe realizar una evaluación
de arquitectura es obtener las metas específicas de calidad ante las cuales la arquitectura
será juzgada.
Los atributos de calidad son características que permiten definir de forma objetiva, lo
que es un sistema de calidad.
– Ausencia de defectos
– Cualidades del sistema (desempeño, seguridad, etc.)
Los atributos de calidad se derivan de los objetivos de negocio.
– Ejemplo:
• Objetivo de negocio
– Ingresar al mercado norteamericano en un periodo de 6 meses
• Atributos de calidad que pueden asociarse:
– Modificabilidad: para cambiar el idioma.
71
5.4.2. ¿Entonces cómo especificar los atributos de calidad?
Si algunas de estas metas no son específicas o son ambiguas, se debe pedir a los
stakeholders que ayuden al equipo de evaluación a reescribirlas. El mecanismo a utilizar
para representar estas metas es el de escenario. Un escenario es una pequeña
descripción de la interacción de un stakeholder con el sistema. Los escenarios son
parecidos a los casos de uso.
72
5.5 ESCENARIOS POR ATRIBUTOS DE CALIDAD
73
5.5.2 La Modificabilidad: se enfoca en el costo de realizar cambios. Al respecto
existen dos
Preocupaciones:
– ¿Qué cosa(s) cambia(n) (artefacto)?
• Funcionalidad
• Plataforma
• Entorno de operación (sistemas con quien interactúa)
• Protocolos de comunicación
• Atributos de calidad del sistema
• Capacidad (usuarios y operaciones soportadas)
– En el código fuente
– Durante la compilación
– Durante la construcción (selección de librerías)
– Durante la construcción
– Durante la ejecución
– Puede ser hecho por un desarrollador, administrador o usuario
74
Se deben considerar
– Número de fuentes de eventos
75
La seguridad puede ser caracterizada como un sistema que provee no-repudiación,
confidencialidad, integridad, aseguramiento, disponibilidad y auditoría.
No-repudiación: Propiedad de una transacción (acceso o modificación de datos
o servicios) que hace que la participación en ella no pueda ser negada por ninguna
por sus participantes.
Confidencialidad: Propiedad de que los datos o servicios sean protegidos de
accesos no autorizados. Esto significa que un hacker no puede acceder a su saldo
de cuenta bancaria.
Integridad: Propiedad de que los datos o servicios sean entregados como se
supone que debían serlo. La calificación en sus cursos no puede ser modificada
después que el profesor la registró.
Aseguramiento: Propiedad de que los participantes en una transacción sean
quienes dicen ser.
Disponibilidad: Propiedad de que el sistema siga disponible en caso de ataque
para uso legítimo.
Auditoría: Propiedad de que el sistema de seguimiento a actividades a nivel
suficiente como para reconstruirlas.
Escenario de Seguridad: Un usuario malicioso intenta acceder funciones para las
cuales no tiene autorización durante la operación normal del sistema. El usuario no logra
acceder a las funciones y el 100% de las acciones del usuario son registradas.
5.5.5 La facilidad de pruebas: se refiere a la facilidad con la cual se puede hacer que
el sistema demuestre sus defectos a través de pruebas. Para que un sistema sea fácil
de probar, debe ser posible controlar el estado interno de los componentes y sus entradas
para poder observar sus salidas.
Las medidas de respuesta tienen que ver con qué tan efectivas son las pruebas para
descubrir defectos y cuánto tiempo toma realizar pruebas con cierto grado de cobertura.
76
Escenario de Facilidad de Pruebas: Un desarrollador realiza pruebas de sistema
cuando aún no se dispone de los dispositivos externos con los cuales se conectará la
aplicación. Es posible ejecutar el 100% de los casos de prueba.
La usabilidad: se enfoca en qué tan fácil es para el usuario lograr una tarea deseada y
el tipo de soporte que provee el sistema.
Áreas:
– Características de aprendizaje provistas por sistema
– Uso eficiente del sistema
– Minimizar impacto de errores
– Adaptación del sistema a necesidades de usuario
– Aumento de confianza y satisfacción
77
Los atributos de calidad no son los únicos requerimientos que se consideran para el
desarrollo de la arquitectura. Es necesario considerar, además:
El método QAW (Quality Atributtes Workshop)5 cubre todas estas etapas, para lo
expresado en este aparte de requisitos no funcionales.
Objetivos de Calidad
Se pueden añadir a los objetivos del negocio para ajustarlos al proyecto, y pueden ser
agrupados por prioridades de acuerdo a los lineamientos del mismo. Se plantea unas
categorías que pueden estar ayuda en el momento de elegir.
Esenciales
Funcionalidad > Corrección
Funcionalidad > Robustez
5
Disponible en https://resources.sei.cmu.edu/library/asset-view.cfm?assetid=6927
78
Esperados
Funcionalidad > Exactitud
Funcionalidad > Compatibilidad
Funcionalidad > Corrección medible
Usabilidad > Comprensibilidad y Legibilidad
Usabilidad > Apoyo para tareas
Usabilidad > Eficiencia
Usabilidad > Seguridad
Usabilidad > Consistencia y Familiaridad
Usabilidad > Satisfacción Subjetiva
Deseados
Confiabilidad > Consistencia en carga
Confiabilidad > Consistencia bajo concurrencia
Confiabilidad > Disponibilidad bajo carga
Confiabilidad > Longevidad
Eficiencia
Escalabilidad
Escalabilidad > Desempeño bajo carga
Escalabilidad > Grandes volúmenes de datos
Operabilidad
Capacidad de mantenimiento > Comprensibilidad
Capacidad de mantenimiento > Capacidad de evolución
Capacidad de mantenimiento > Capacidad de prueba
Para que un no riesgo se mantenga como tal, las asunciones no deben cambiar, o al
menos si cambian, la designación como no riesgo debe ser re-justificada.
5.7. ¿Cuáles son los costos y beneficios de realizar una evaluación arquitectónica?
El mayor beneficio que brinda la evaluación de una arquitectura, es que descubre los
problemas que, si se hubiesen dejado sin descubrir, habría sido mucho más costoso
corregirlos luego. En breve, una evaluación produce una mejor arquitectura.
El rol del stakeholder es articular las metas de calidad que la arquitectura debería
alcanzar para ser considerada exitosa. Estas metas no siempre son capturadas en algún
documento de requerimientos.
80
están en una buena posición para detectar componentes que pueden ser reusados en
otros proyectos, o conocer componentes que ya existen que pueden ser utilizados en el
proyecto actual.
ATAM se propone su uso en práctica con Ontoconcept, para evaluar el producto obtenido
y realizar un segundo ciclo de desarrollo sobre el mismo, mejorando aspectos de riesgo
identificados principalmente para el atributo de calidad performance.
Diseñar una arquitectura se refiere a tomar decisiones de diseño para producir las
estructuras asociadas al sistema.
Estas decisiones tienen, sin embargo, un impacto profundo en el sistema, por lo que
– Se debe cuidar que estas decisiones sean pertinentes, es decir, están enfocadas a los
aspectos realmente importantes del sistema.
81
El no considerar la arquitectura en el desarrollo de forma temprana puede acarrear
problemas importantes. Tales como:
Con esta situación que es común entre algunos desarrolladores de aplicaciones tipo
ensayo error, pero un acertado diseño parte de un buen despliegue de diseño de
arquitectura, con esta premisa se tiene entonces que es mejor realizar un planeamiento
arquitectural con la idea de establecer una buena toma de decisiones en lo que respecta
a los frameworks y otros elementos del diseño.
– Tener claridad sobre ciertos requerimientos que influyen con alta prioridad en la
estructuración del sistema; los “drivers de la arquitectura”.
82
Para el caso de Ontoconcept la teoría asociada a los atributos de calidad y drivers
arquitectónicos se debe revisar lo planteado en los puntos 5.4 y 5.5 del presente trabajo,
y los roles planteados en el capítulo 1. Se recomienda tener en cuenta los siguientes
puntos:
Fase de requerimientos
La meta de esta fase es tener una lista de drivers arquitectónicos priorizados asociados
al FO, caso de estudio con el fin de proceder al diseño de la arquitectura junto con
escenarios de los atributos de calidad propuestos y que son considerados más
importantes par FO. Inicialmente Disponibilidad.
83
El paso 1 se realizó al inicio con la presentación del Taller de Atributos de Calidad.
El paso 7 lo debe realizar el equipo, en donde debe asignar prioridades a los escenarios
de atributos de calidad.
El paso 8 lo debe realizar el equipo, en donde debe detallar los escenarios que tuvieron
las mayores votaciones del paso 7.
Idealmente: usar diagrama de casos de uso e iluminar los casos de uso elegidos.
Las restricciones identificadas.
Los escenarios de atributos de calidad priorizados.
Los 5 escenarios de atributos de calidad de mayor prioridad detallados.
Observaciones generales
84
Reporte que incluya: Documento de visión con características del sistema priorizadas y
objetivos de Framework Ontoconcept relacionados, Entregas del sistema con las
características que incluirán, lista de drivers priorizados, lista de escenarios fusionados y
priorizados y escenarios más prioritarios detallados.
Drivers Arquitectónicos
AC Disponibilidad:
- 24 horas
- Si falla menos de 5 minutos recuperarse
AC Desempeño: 100 usuarios al tiempo
AC Modificabilidad:
- Ampliar a móviles
- Integrar con terceros
- Redes sociales
Rest Fecha de entrega: 31 de diciembre
85
Plantilla de Lista de Escenarios (QAW)
Id Escenario Drivers Relacionados Fusionad Prioridad
o
86
corrección de fallo, y debe estar
operativa en 5 minutos.
87
Anexo III: Plantilla para especificación de escenarios (QAW)
a) Todo componente del sistema debe ser testeable por cualquier integrante del
equipo de pruebas, al complementarse el desarrollo del mismo.
88
b) El componente debe poseer una interfaz para controlar su comportamiento y su
salida debe poder ser observable.
c) Es necesario que se alcance una cobertura del 85% del código del componente
dentro de las 3 horas.
d) Los usuarios deben poder minimizar el impacto de los errores cancelando la
operación en curso, siendo el tiempo de cancelación menor a 1 segundo.
e) Bajo circunstancias normales de operación, el sistema debe mantener
información de auditoría sobre los datos que modifique cualquier individuo
correctamente identificado.
f) En caso de provocarse un ataque, la imagen correcta de los datos modificados por
el usuario debe restaurarse en menos de 1 día.
Bajo condiciones normales de operación, el sistema debe procesar las transacciones de
los usuarios con una latencia promedio de 2 segundos.
En este paso y para la propuesta en curso se recomienda ver el Anexo add.doc, que se
encuentra en la carpeta correspondiente.
89
El SEI tiene un enfoque comprobado para documentar la arquitectura de
software llamada Views and Beyond.
DESAFÍOS
90
¿Cómo se decide qué vistas arquitectónicas documentar?
¿Qué información registra acerca de una vista arquitectónica más allá del diagrama de
cuadro y línea gráfica o "caricatura"?
¿Qué información más allá de las vistas debe ser grabada? ¿Qué información se aplica
a más de una vista? ¿Cómo se registra la relación entre las vistas?
¿Qué notaciones están disponibles para documentar una arquitectura, para documentar
una vista, para documentar una interfaz, para documentar el comportamiento?
DESCRIPCIÓN
La documentación que se aplica a todas las vistas sigue un enfoque simple de cómo y
por qué: cómo se organiza la documentación para servir a las partes interesadas, qué es
la arquitectura y por qué la arquitectura es como es (es decir, racionalidad del diseño).
BENEFICIOS
91
La documentación puede ayudar a una organización de desarrollo de software a evitar
las trampas de la documentación inadecuada o incompleta o vaga. Muchos han
experimentado la frustración de realizar un gasto masivo de documentación, solo para
que los artefactos resultantes acumulen polvo en los estantes. Este es el resultado de la
documentación que no se ha planificado adecuadamente y está más orientada a
satisfacer estándares que a satisfacer las necesidades de las partes interesadas. El
coaching puede evitar esta situación aumentando la documentación y la planificación de
la documentación a un nivel acorde con su importancia.
QUIÉN SE BENEFICIARÍA
Estructuras
92
– De la definición: “La arquitectura de software es la estructura o estructuras del sistema
que comprende elementos de software, las propiedades visibles de forma externa de
estos elementos, y las relaciones entre los elementos”.
Estructuras lógicas
– Clases, paquetes.
Estructuras dinámicas
Estructuras físicas
Notaciones
• Sin embargo es, fundamental acompañar los diagramas de una descripción de los
elementos gráficos que permita interpretar la representación.
• Estándar de facto.
El concepto de vista
93
Un diagrama no es suficiente para representar una estructura.
Tipos de Vista
Esta componente contiene las vistas de la arquitectura del software. Una vista es una
representación de un sistema completo desde la perspectiva de un conjunto relacionado
94
de preocupaciones [IEEE 1471]. Concretamente, una vista muestra un tipo particular de
elementos arquitectónicos de software que ocurren en un sistema, sus propiedades y las
relaciones entre ellos. Una vista se ajusta a un punto de vista definitorio.
• Vistas del módulo. Aquí, los elementos son módulos, que son unidades de
implementación. Los módulos representan una forma de considerar el sistema basada
en código. Los módulos se asignan áreas de responsabilidad funcional y se asignan a los
equipos para su implementación. Hay menos énfasis en cómo el software resultante se
manifiesta en tiempo de ejecución. Las estructuras de los módulos nos permiten
responder preguntas tales como: ¿Cuál es la responsabilidad funcional principal asignada
a cada módulo? ¿Qué otros elementos de software pueden usar un módulo? ¿Qué otro
software realmente usa? ¿Qué módulos están relacionados con otros módulos por
relaciones de generalización o especialización (es decir, herencia)?
• Vistas de asignación. Estas vistas muestran la relación entre los elementos y elementos
de software en uno o más entornos externos en los que se crea y se ejecuta el software.
Las estructuras de asignación responden preguntas tales como: ¿En qué procesador se
ejecuta cada elemento de software? ¿En qué archivos se almacena cada elemento
95
durante el desarrollo, las pruebas y la creación del sistema? ¿Cuál es la asignación del
elemento de software para los equipos de desarrollo?
Estos tres tipos de estructuras corresponden a los tres tipos generales de decisiones que
implica el diseño arquitectónico:
A menudo, una vista muestra información de más de una de estas categorías. Sin
embargo, a menos que se elija cuidadosamente, la información en una vista híbrida de
este tipo puede ser confusa y poco comprensible.
Selección de vistas
Desafíos
97
¿Se puede analizar un sistema para determinar estas cualidades deseadas?
¿Qué tan pronto puede ocurrir tal análisis?
¿Cómo se puede saber si una arquitectura de software para un sistema es adecuada
sin tener que construir primero el sistema?
– Drivers y QAW.
Compensación
Decisión de diseño que tiene una influencia positiva en uno o más atributos de calidad,
son respuestas que pueden tener una influencia negativa en otro atributo de calidad.
Ejemplo: Se toma una decisión de diseño para aumentar el nivel de cifrado de bits para
promocionar seguridad (confidencialidad) que a su vez tiene un impacto negativo en el
rendimiento (estado latente).
98
Decisión de diseño que tiene una influencia positiva en una o más cualidades atribuir
respuestas y tiene una influencia negativa en otra calidad respuestas de atributos
Ejemplo • Se toma una decisión de diseño para aumentar el nivel de cifrado de bits para
promocionar seguridad (confidencialidad) que a su vez tiene un impacto negativo en el
rendimiento (estado latente)
El modelo de coordinación:
¿Cuáles son los mecanismos de comunicación entre el sistema y entidades
externas?
¿Cuáles son los mecanismos de comunicación entre elementos y cuáles son sus
propiedades (por ejemplo, acoplamiento síncrono, asíncrono, híbrido)?
¿Cuáles son los mecanismos de comunicación dentro de los elementos?
El modelo de datos:
¿Cuál es la estructura -entidades y relaciones, atributos de entidad- en el
¿modelo de datos?
Qué partes del modelo de datos se utilizan por qué elementos de software ¿en qué
orden?
¿Cuáles son las reglas de acceso para los elementos de datos?
¿Dónde se crean, modifican y destruyen los elementos de datos?
Asignación de Funcionalidad:
¿Cuáles son los principales pasos de procesamiento necesarios para llevar a cabo el
trabajo del sistema?
¿Cuál es la división y asignación de funcionalidad a los elementos del software?
¿Cuáles son las abstracciones clave que se pueden utilizar para proporcionar los
servicios del sistema? ¿Son los elementos con estado o sin estado?
¿Cuáles son las dependencias de activación y desactivación entre los elementos del
software?
Tiempo de enlace de las decisiones en las otras categorías: las decisiones tomadas
para resolver las preguntas en las categorias anteriores pueden estar obligando a que se
repitan una variedad de veces, tales como:
• tiempo de diseño (incorporado)
• tiempo de compilación (por ejemplo, modificadores del compilador)
• tiempo de compilación (por ejemplo, reemplazar módulos, seleccionar de la
biblioteca)
99
• tiempo de carga (por ejemplo, bibliotecas de vínculos dinámicos [DLL])
• tiempo de inicialización (por ejemplo, Archivos de recursos)
• tiempo de ejecución (por ejemplo, equilibrio de carga)
100
Fuente: Lewis, G. (2010). Basics about cloud computing. Software Engineering Institute Carnegie Mellon
University, Pittsburgh. Disponible en https://www.sei.cmu.edu/architecture/tools/evaluate/atam.cfm
El ATAM es
• un método para evaluar una arquitectura con respecto a la calidad con múltiples
atributos
• una estrategia efectiva para descubrir las consecuencias de la arquitectura
decisiones
• un método para identificar tendencias, no para realizar análisis precisos
101
De los atributos antes mencionados se ha escogido el de DISPONIBILIDAD, para
plantear la forma o el modelo de aplicar los demás atributos o No funcionales, planteado
como línea base para medir los diferentes escenarios de Ontoconcept.
Input: Un mensaje se recibe durante operación normal del sistema, pero el mensaje esta
formateado incorrectamente.
Output: El sistema registra el mensaje y continúa operando normalmente sin ningún
tiempo de inactividad.
102
Los acuerdos de nivel de servicio (en inglés Service Level Agreement o SLA), son un
acuerdo escrito entre un proveedor de servicio y su cliente con objeto de fijar el nivel
acordado para la calidad de dicho servicio. SLA para servicios típicamente definen los
requisitos de disponibilidad como un Porcentaje Anual de tiempo de actividad, como se
plantea en el punto 5.5.1.
103
Plantilla para el análisis de enfoques arquitectónicos
104
Fuente de Módulo de Edicion
estímulo:
105
Las evaluaciones ATAM son conducidas en cuatro fases.
Equipo de Evaluación
– ATAM Lead Evaluator. El moderador del taller, lider de las discusiones.
– ATAM Evaluator. Apoyo y facilitación del Taller.
Pasos de ATAM
1. Presentar el ATAM
2. Presentar los drivers del negocio
3. Presentar la arquitectura
4. Identificar los enfoques arquitectónicos
5. Generar el árbol de utilidad de los atributos de calidad
6. Analizar los enfoques arquitectónicos
7. Lluvia de ideas y priorización de escenarios
106
8. Analizar los enfoques arquitectónicos
9. Presentar los resultados
Fuente: Lewis, G. (2010). Basics about cloud computing. Software engineering institute carniege mellon
university, Pittsburgh. Disponible en https://www.sei.cmu.edu/architecture/tools/evaluate/atam.cfm
107
Entorno Supuestos relevantes sobre el entorno dentro del cual reside el
sistema, y las condiciones relevantes ante las cuales se lleva a
cabo el escenario
… … … … …
108
En resumen, el proceso de la aplicación de ATAM se puede establecer según la figura
siguiente:
109
CAPITULO 6. COMPARATIVA DE FRAMEWORKS
En capítulo 2 se hace referencias con más detalle a los tópicos usados en este, se
establece con los conceptos descritos recordar el mismo, no se hace con el ánimo de
repetirlos.
Framework lógicos
Un framework lógico debe ser tan simple y uniforme como sea posible, pero proporcionar
medios intrínsecos para representar conceptos y operaciones comunes en su ámbito de
aplicación.
Ontoconcept:
Protegé:
NeOn Toolkit
110
En el marco del proyecto NeOn, se ha desarrollado la herramienta NeOn Toolkit,
caracterizada por tener soporte colaborativo y de gestión de cambios. NeOnToolkit es un
entorno de ingeniería ontológica de estado del arte, código abierto y multiplataforma, el
cual proporciona apoyo completo para el ciclo de vida de ingeniería ontológica.
La herramienta está basada en la plataforma de eclipse, un ambiente de desarrollo que
conduce y proporciona un amplio conjunto de plugins, que cubre una variedad de
actividades de ingeniería de ontologías.
Comparativos entre FW y FL
Adicional, se plantean unas características propuestas por [39] que muestran algunas
situaciones ideales en el uso de los framework lógicos, se aclara que no son todas las
deseables, y son sólo para evidenciar puntos de atención sobre los mismos.
111
CAPITULO 7. CONCLUSIONES, RECOMENDACIONES Y TRABAJO FUTURO
7.1 CONCLUSIONES
7.2 RECOMENDACIONES
1. Realizar una extensión de la línea base arquitectural planteada, para que cubra
los aspectos de despliegue sobre una plataforma tecnológica compatible con las
tecnologías CLOUD que se han popularizado.
2. Popularizar el uso del framework entre los estudiantes y universidades, para que
se utilice y familiarice el estudiante de pregrado con el uso de ontologías en los
proyectos tecnológicos que se emprendan.
112
2. Realizar una comparación de las funcionalidades ofrecidas por los principales
frameworks ontológicos y confrontarlos a las funcionalidades presentadas por
Ontoconcept.
3. Aceptar que hay otros factores a considerar al elegir características como las
planteadas, y determinar que siempre hay aspectos que son relevantes en cada
caso.
Para establecer una estrategia de seguridad se debe evaluar el grado de importancia de cada
uno de ellos y basándose en el establecer normas y procedimientos necesarios para contenerlos:
1. La encriptación de Datos
2. Firma Digital
3. Creación de un Sitio Seguro
4. Firewall s, Wrappers y Proxies
113
8. BIBLIOGRAFÍA
[1] Chavarro, Julio Cesar. (2010). En Marco de Referencia Para la Gestión del Cambio en
Ontologías Basados en Modelos Conceptuales (Doctoral dissertation, Tesis Doctoral. Cali–
Colombia. Universidad del Valle).
[1b] Chavarro, Julio Cesar. (2010). Implementación Tecnológica En Marco de Referencia Para la
Gestión del Cambio en Ontologías Basados en Modelos Conceptuales (Doctoral dissertation,
Tesis Doctoral. Cali–Colombia. Universidad del Valle).
[2] Clements, P. C. (1996). "A survey of architecture description languages". Proceedings of the
8th International Workshop on Software Specification and Design. pp. 16–00. ISBN 0-8186-7361-
3. doi:10.1109/IWSSD.1996.501143, Alemania.
[4] Kazman, R., Abowd, G., Bass, L., & Clements, P. (2003). Scenario-based analysis of software
architecture. IEEE software, 13(6), 47-55. “Software Architecture in Practice. Second Edition.
[5] Clements, P., Garlan, D., Bass, L., Stafford, J., Nord, R., Ivers, J., & Little, R.
(2002). Documenting software architectures: views and beyond. Pearson Education.
[6] Medvidovic, N., & Taylor, R. N. (2010, May). Software architecture: foundations, theory, and
practice. In Proceedings of the 32nd ACM/IEEE International Conference on Software
Engineering-Volume 2 (pp. 471-472). ACM.
[7] Valencia, A. M., & Ferro González, M. (2011). Documentación y análisis crítico de algunas
arquitecturas de software en aplicaciones empresariales (Doctoral dissertation, Universidad
Tecnológica de Pereira).
[8] Reynoso, C., & Kicillof, N. (2004). Estilos y Patrones en la Estrategia de Arquitectura de
Microsoft. Buenos Aires: Universidad de Buenos Aires.
[9] Navarčik, M. Using UML with OCL as ADL. In IIT. SRC 2005: Student Research Conference (p.
175). Faculty of Informatics and Information Technologies. M. Bieliková (Ed.), IIT.SRC.
[10] Fielding, R. T., & Taylor, R. N. (2000). Architectural styles and the design of network-based
software architectures (p. 151). Doctoral dissertation: University of California, Irvine..
[11] Medvidovic, N., & Taylor, R. N. (2010, May). Software architecture: foundations, theory, and
practice. In Proceedings of the 32nd ACM/IEEE International Conference on Software
Engineering-Volume 2 (pp. 471-472). ACM.
[12] Garlan, D., Monroe, R. T., & Wile, D. (2000). Acme: Architectural description of component-
based systems. Foundations of component-based systems, 68, 47-68.
[13] Briand, L. C., Labiche, Y., & Cui, J. (2005). Automated support for deriving test requirements
from UML statecharts. Software & Systems Modeling, 4(4), 399-423.
114
[14] Smith, B., & Welty, C. (2001, October). Ontology: Towards a new synthesis. In Formal
Ontology in Information Systems (Vol. 10, No. 3, pp. 3-9). ACM Press, USA, pp. iii-x.
[16] Gruber, T. R. (1995). Toward principles for the design of ontologies used for knowledge
sharing? International journal of human-computer studies, 43(5-6), 907-928.
[17] Zúñiga, G. L. (2001, October). Ontology: its transformation from philosophy to information
systems. In Proceedings of the international conference on Formal Ontology in Information
Systems-Volume 2001 (pp. 187-197). ACM.
[18] Studer, R., Benjamins, V. R., & Fensel, D. (1998). Knowledge engineering: principles and
methods. Data & knowledge engineering, 25(1-2), 161-197.
[19] Studer, R., Benjamins, V. R., & Fensel, D. (1998). Knowledge engineering: principles and
methods. Data & knowledge engineering, 25(1-2), 161-197.
[21] OWL Editor. Homepage of NeOn Toolkit. Media:Doku_2.3.pdf - Documentation of NTK 2.3
(pre) release citado 2017/10/23] Disponible en: http://neon-
toolkit.org/wiki/Documentation_and_Support.html
[22] Lucchi, R., Millot, M., & Elfers, C. (2008). Resource oriented architecture and
REST. Assessment of impact and advantages on INSPIRE, Ispra: European Communities.
[23] Montejano, G. A., Testa, O., Garcia, P., Bast, S. G., & Dieste, O. (2013, June). Definición
formal de una metodología para la generación de sistemas de software orientados a servicios.
In XV Workshop de Investigadores en Ciencias de la Computación.
[27] Thomas Erl, Service-Oriented Architecture. Concepts, Technology, and Design. First Printing.
Pearson Education, Inc. Rights and Contracts Department One Lake Street. 2005.
115
[29] Fielding, R.T., Architectural Styles and the Design of Network-based Software Architectures,
Ph.D. dissertation, in University of California, Irvine. 2000.
[30] Leonard Richardson, Sam Ruby. RESTful Web Services. Published by O’Reilly Media, Inc.,
1005 Gravenstein Highway North, Sebastopol, CA 95472
[31] Popkin Software and Systems. Modelado de Sistemas con UML. Disponible en
http://es.tldp.org/Tutoriales/doc-modelado-sistemas-UML/doc-modelado-sistemas-uml.pdf.
[32] Cristian Wilckens, Poder Expresivo de UML 2.0 para especificar arquitecturas de Software
[Diapositivas].
[33] Oton, Salvador., Ortiz, A., Hilera, J., SROA: Sistema de reutilización de objetos de
aprendizaje. ISSN: 1699-4574. Revista Iberoamericana de Informática Educativa. Vol. 5: 7-22.
(2007).
[36] – Fowler, M., Rice, D., Foemmel, M., Hieatt, E., Mee, R., & Stafford, R. (2003). Catalog of
patterns of enterprise application architecture. URL: http://martinfowler. com/eaaCatalog/index.
html.
[37] Cruz, D., Fontana, J., Rivadeneira Molina, S., & Vilanova, G. (2013, June). Un acercamiento
en la integración entre BPMN y SOA. In XV Workshop de Investigadores en Ciencias de la
Computación.
[38] – Puertas, E., & Vasquez, G. Método de Integración empresarial Orientada a Servicios:
Pequeñas y Medianas Empresas. Disponible en:
https://www.researchgate.net/profile/Edwin_Puertas2/publication/274963369_Metodo_de_integr
acion_empresarial_orientada_a_servicios_pequenas_y_medianas_empresas/links/552de0fd0cf
21acb092190b6/Metodo-de-integracion-empresarial-orientada-a-servicios-pequenas-y-
medianas-empresas.pdf.
[40] Diao, L., & Ma, Y. (2008). A Versatile SOA-based E-Business Platform. 2008
International Symposium on Electronic Commerce and Security, 638-641. IEEE. DOI:
0.1109/ISECS.2008.49.
[41] Beydeda, S., & Book, M. (2005). Model-driven software development (Vol. 15). V.
Gruhn (Ed.). Heidelberg: Springer. Página 19.
[42] Mahmoud, Q. (2005). Service-Oriented Architecture (SOA) and Web Services: The
Road to Enterprise Application Integration (EAI), Sun Java site.
116
[43] Salazar Parra, D. (2015). Línea base arquitectural del Framework Ontoconcept
(Doctoral dissertation, Universidad Tecnológica de Pereira).
[45] Pérez, J., & Quintero, J. B. (2009). Estrategias para la Definición de una Técnica de
Modelado para Arquitecturas de Referencia. In CIbSE (pp. 127-132).
117