1. Patrón arquitectónico de la
plataforma de apoyo para la
mejora de procesos software
en PyMEs
Roque Manuel Rueda Anastacio
Este documento presenta una descripción de la arquitectura propuesta por la
plataforma de apoyo para la mejora de procesos software en las PyMEs la cual se
desprende de la tesis del alumno Roque Manuel Rueda Anastacio para obtener el
grado de Maestro en Sistemas Computacionales
10/24/2012
Page 0 of 9
2. Patrón arquitectónico de la plataforma
de apoyo para la mejora de procesos
software
Índice
Índice ....................................................................................................................................................... 1
Definición de arquitectura de software ....................................................................................... 1
Patrones arquitectónicos .................................................................................................................. 2
Influencias en el desarrollo de la arquitectura ..................................................................... 3
Experiencia del arquitecto ........................................................................................................... 3
Modelo/Vista/Controlador .......................................................................................................... 4
Model-View-ViewModel .............................................................................................................. 5
Arquitectura Propuesta ..................................................................................................................... 7
Referencias ............................................................................................................................................ 9
Definición de arquitectura de software
La arquitectura de un sistema computacional es una representación que permite
comprender como se comportará el sistema [1].
Es un plano para el desarrollo del sistema y el equipo de desarrollo, define los
elementos que se deben realizar tanto por el equipo de diseño así como el de
Page 1 of 9
3. implementación. La arquitectura contiene las características del sistema como lo
son el desempeño, fácil aceptación de cambios y seguridad, los cuales no se
pueden lograr sin tener una visión unificada de la arquitectura. La arquitectura es
un producto de trabajo para el inicio del análisis para asegurar que la aproximación
de diseño proporcionara un sistema aceptable.
“Es el pegamento que mantiene todos las fases del proyecto juntos para sus diversos
implicados” [2].
La arquitectura de software es una pieza central en el desarrollo de un sistema ya
que dicta el camino a seguir en el desarrollo de la aplicación. Una arquitectura
debe describir los elementos del sistema y sus relaciones así como también con el
ambiente en el que se encuentran. Se puede decir entonces que una arquitectura
es una abstracción del sistema que solo incluye la descripción de los detalles más
importantes y permite que conforme se desarrolle el sistema se agrega detalles
que crean un sistema funcional. Una arquitectura se puede entender también
como: la estructura o estructuras del sistema, que componen los elementos de
software, sus propiedades que son visibles externamente y las relaciones
entre ellos [3].
Patrones arquitectónicos
Patrones arquitectónicos o estilos arquitectónicos son analogías de los estilos
arquitectónicos de los edificios, como Gótico, Revival Griego o Queen Anne.
Consisten en conjuntos de características claves y reglas para combinarlos con
el fin de poder preservar la integridad arquitectónica. Presentan estilos a
problemas arquitectónicos recurrentes [4]. Existen diversas influencias en el diseño
y las influencias cambian de acuerdo al ambiente en el que se desenvuelve.
Page 2 of 9
4. Influencias en el desarrollo de la arquitectura
La arquitectura de software se define dependiendo de las necesidades específicas
del sistema a desarrollar ya que no existe una arquitectura que cubra todas las
necesidades. Un mismo arquitecto puede generar una arquitectura diferente para
un sistema similar dependiendo de las necesidades de los involucrados. En la
ilustración 1 apreciamos una serie de implicados en un sistema dando una serie de
sugerencias a un arquitecto.
Administrador Marketing Usuario final Mantenimiento Clientes del negocio
Comportamiento,
Bajo costo, Características, poco
desempeño, Agregar nuevas Bajo costo, tiempo de
mantener el tiempo, a la par de
seguridad, confianza, características entrega, sin cambios
trabajo otros productos
usabilidad continuamente
¡AAAHH!
(Este puedes ser tú)
Arquitecto
Ilustración 1 Influencia de los implicados en la arquitectura
Experiencia del arquitecto
Si el arquitecto de un sistema tiene buenos resultados con una aproximación
arquitectónica, es muy probable que se utilice esa misma aproximación en
esfuerzos de desarrollo siguientes. También las decisiones pueden provenir de la
educación y entrenamiento, exposición a patrones arquitectónicos exitosos o
sistemas que se desempeñaban pobremente o particularmente bien.
Page 3 of 9
5. Modelo/Vista/Controlador
El patrón Modelo Vista Controlador o MVC es una manera práctica de arquitectura
interactiva en sistemas de software. El concepto principal es la separación de las
interfaces de los datos representados por la interfaz de usuario. El modelo es la
porción que representa el problema que se busca solucionar en datos, el modelo
solo cambiara cuando cambie la problemática la cual se supone se mantenga por
periodos de tiempo extensos, contienen la información como la lógica para
cambiar esa información. El control es responsable entre la comunicación de la
Vista y los modelos. Y la vista únicamente presenta la información al usuario y pasa
las interacciones del usuario a su control [5].
Características que se obtienen de este patrón arquitectónico:
La apariencia del sistema puede cambiar de manera drástica sin afectar las
estructuras de datos o la lógica del negocio.
La aplicación puede mantener distintas interfaces, así como múltiples
lenguajes, o diferentes niveles de permisos.
Page 4 of 9
6. Model-View-ViewModel
El patrón Modelo-Vista-Vista de Modelo consiste de tres componentes principales:
La vista es la representación de la interfaz de usuario. Contiene usualmente solo
componentes de interfaz de usuario sin código o solo el código de lógica
necesario, otro elemento es la vista de modelo es un objeto que encapsula los
datos desde su forma de registros hacia a una presentación, Maneja los eventos
que se generan desde la vista. Finalmente el modelo se refiere al dominio del
problema y representan la problemática y encapsula el comportamiento del
sistema.
Características que se obtienen de este patrón arquitectónico:
La vista puede ser cambiada sin ninguna complicación.
Page 5 of 9
7. Se pueden realizar pruebas unitarias simulando la interacción del usuario
con las vistas.
Permite la interacción de diferentes vistas con un mismo modelo de datos.
Se puede modificar las vistas o el modelo sin que se afecte al otro
Se puede dar formato a los datos antes de ser presentados en una vista de
manera fácil
Page 6 of 9
8. Arquitectura Propuesta
Navegador Cliente Web
Dispositivo Android
Aplicación Android
Interne
Presentación de
Widget API KSOAP2 Vaadin JAXB
resultados
Servicios Web Módulo de
consultas
Constructor de Base
Consulta a base
cuestionarios
de datos
Búsqueda por
Extracción y Ontologí
Servidor de sinónimos
estructuración del
aplicaciones
JBOSS
Generación Modulo de matriz Unificación de
de reportes de cumplimiento términos
Page 7 of 9
9. La arquitectura propuesta sigue el patrón arquitectónico MVVM cuenta con 3
grandes elementos que integran los elementos del sistema, la Plataforma SPI
(gris) contiene los elementos que corresponden al modelo y representan el
problema a abordar, así como también encapsulan el comportamiento del sistema,
se agrega una capa de servicios web la cual expondrá interfaces (Patron de diseño
facade -> Fachada) para acceder a la funcionalidad del sistema.
Al exponer la funcionalidad del sistema mediante servicios web se obtiene, una
vista y una vista de modelo que pueden ser modificadas sin alterar ningún
elemento del otro; siempre y cuando se respete la interfaz expuesta por el servicio
web. Además de dar soporte a otros lenguajes y otros dispositivos y plataformas
de comunicarse con la plataforma propuesta.
Los otros dos elementos importantes Aplicación Android y Cliente Web
representan la vista de modelo ya que son quienes cuentan con la vista hacia el
usuario y además cuentan con clases para obtener la información de la plataforma,
dar formato si es necesario o realizar operaciones con ella antes de ser mostrada al
usuario además de que pueden realizar operaciones antes de enviarla a la
plataforma.
La ventaja que se descubre es entonces que la plataforma podrá interactuar con
cualquier lenguaje/dispositivo/plataforma capaz de consumir un servicio web
(SOAP). Además se denomina plataforma ya que permitirá la derivación de nuevas
tecnologías o procesos a partir de las funcionalidades contenidas y expuestas
mediante los servicios web. [Ref mi tesis]
Page 8 of 9
10. Referencias
[1]. (2012) Software Architecture. [Online]. Available: http://www.sei.cmu.edu/architecture/
[2]. (2012) Software Architecture Start [Online] Available:
http://www.sei.cmu.edu/architecture/start/?wt.ac=swaGettingStarted
nd
[3]. Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice, 2 ed., Addison
Wesley, 2003, ISBN: 0-321-15495-9, p. 560.
[4]. Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann, Pattern-Oriented Software
Architecture—Patterns for Concurrent and Networked Objects, Volume 2, Wiley, 2000.
[5]. Avraham Leff, James T. Rayfield, “Web-Application Development Using the
Model/View/Controller Desing Pattern”, IBM T.J. Watson Research Center.
[6]. P. Tanuska, T. Skripcak “Data-Driven Scenario Test Generation for Information Systems”
International Journal of Computer Theory and Engineering, Vol. 3, No. 4, August 2011
Page 9 of 9