Arquitectura de software

10

Click here to load reader

Transcript of Arquitectura de software

Page 1: Arquitectura de software

Page 0 of 9

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 2: Arquitectura de software

Page 1 of 9

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 3: Arquitectura de software

Page 2 of 9

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 4: Arquitectura de software

Page 3 of 9

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.

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.

Administrador

Bajo costo,

mantener el

trabajo

Marketing

Características, poco

tiempo, a la par de

otros productos

Usuario final

Comportamiento,

desempeño,

seguridad, confianza,

usabilidad

Mantenimiento

Agregar nuevas

características

Clientes del negocio

Bajo costo, tiempo de

entrega, sin cambios

continuamente

Arquitecto

¡AAAHH!

(Este puedes ser tú)

Ilustración 1 Influencia de los implicados en la arquitectura

Page 5: Arquitectura de software

Page 4 of 9

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 6: Arquitectura de software

Page 5 of 9

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 7: Arquitectura de software

Page 6 of 9

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 8: Arquitectura de software

Page 7 of 9

Dispositivo Android

KSOAP2 Widget API

Aplicación Android

Navegador

Interne

Vaadin

Cliente Web

JAXB Presentación de

resultados

Servicios Web

Unificación de

términos

Generación

de reportes

Modulo de matriz

de cumplimiento

Constructor de

cuestionarios

Servidor de

aplicaciones

JBOSS

Extracción y

estructuración del

Módulo de

consultas

Búsqueda por

sinónimos

Consulta a base

de datos

Base

Ontologí

Arquitectura Propuesta

Page 9: Arquitectura de software

Page 8 of 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 10: Arquitectura de software

Page 9 of 9

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

[3]. Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice, 2nd

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