You are on page 1of 11

Grupo Editorial Ediciones Futuro

Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)


Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

Artculo original

Propuesta de vistas de la arquitectura de software


Proposal of views of architecture of software
Osvaldo Daz Verdecia1*, Virgen Damaris Quevedo Campins1, Ren Lazo Ochoa y Csar Lage
Codornu2
1

Ceige. Departamento de Desarrollo de Productos. Universidad de las Ciencias Informticas

Ceige. Departamento de Tecnologa

*Autor para la correspondencia: odiaz@uci.cu

Resumen
En la actualidad existen diversos conceptos y definiciones sobre el significado que abarca la arquitectura
de software. La presente investigacin toma la definida por el Institute of Electrical and Electronics
Engineers (por sus siglas en ingls, IEEE) y que adopta Microsoft, que conceptualiza a la arquitectura del
software como la organizacin fundamental de un sistema formada por sus componentes, las relaciones
entre ellos y el contexto en el que se implantarn, y los principios que orientan su diseo y evolucin. La
arquitectura del software es el diseo de ms alto nivel de la estructura de un sistema, programa o
aplicacin y a pesar de que las literaturas especializadas en el tema no se pongan de acuerdo sobre una
definicin, si todas reconocen la importancia de contar con unas vistas de arquitectura de software bien
definidas. Se da a conocer una propuesta de vistas de la arquitectura de software totalmente novedosa y
que rompe con algunas de sus concepciones actuales. Se resalta la importancia de las vistas a la hora de
desarrollar una arquitectura de software, definindolas y propugnando cada una como una parte
indispensable a la hora de desarrollar un proyecto.

Palabras clave: Arquitectura de software, estructura, sistema, vistas de la arquitectura de software.


Abstract
At the present time varied concepts and definitions exist of what means and embraces the Architecture of
Software, however in this article it will take a common definition, the one that the Institute of Electrical and
Electronics Engineers (IEEE) defines that conceptualizes the Architecture of the Software like "the
fundamental organization of a system formed by their components, the relationships between them and the

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

context in which will be implanted, and the principles that guide its design and evolution". The Architecture
of the Software is the design of the higher level of the structure of a system, it programs or application and
although the literatures specialized in the topic don't come to an agreement on a definition, they all
recognize the importance of having some very defined Views of Architecture of Software. In this article it is
given to know a completely new proposal of Views of the Architecture of Software and that it breaks up
with some of their current conceptions. The importance of the Views is stood out when a Software
Architecture is developed, defining them and telling each one like an indispensable part when developing a
project.

Keywords: System, software architecture, structure, views of software architecture.

Introduccin
Las vistas de la arquitectura de software es una temtica desde la que se enfoca un proyecto, ya sea
desde el punto de vista de los datos, integracin, etc. Para separar las vistas se debe tener en cuenta todo
el trabajo que se lleva a cabo a la hora de estructurar una arquitectura, tratando de no dejar ningn
contenido fuera de alguna de ellas. Esto no es una labor nada sencilla, y mientras ms se crece en los
conocimientos arquitectnicos ms complejo y engorroso se vuelve, generando muchas dudas sobre
dnde va un contenido, si es suficiente con integrarlo a alguna vista ya propuesta o si es indispensable
crear una nueva vista solo para l. El trabajo hace una propuesta de las diferentes vistas que deberan
integrar la arquitectura de software y de ellas sus conceptos bsicos, de manera que a la hora de
desarrollar un proyecto de desarrollo de software tengamos en cuenta la propuesta explicada a
continuacin.
Clasificaciones de vistas
Varios autores, reconocidos arquitectos e instituciones a nivel mundial han dado su criterio de las Vistas
que deberan integrar la arquitectura de software, aqu se describen cada una de estas propuestas, se
hace una valoracin y se hace la propuesta final de los autores de este artculo.
David Parnas (Reynoso, 2004) las estructuras en tres grupos:
Estructura de mdulos: es parte de o comparte el mismo secreto que la asignacin de trabajo.
Estructura de uso: depende de la correccin de programas.

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

Estructura de procesos: brinda trabajo computacional a procesos.

Siemens Corporate Research (95) (Departamento de Computacin - Facultad de Ciencias Exactas y


Naturales - Universidad de Buenos Aires, 2007).
Vista conceptual: principales elementos de diseo y su interrelacin.
Vista de mdulos: estructura funcional y de capas.
Vista de ejecucin: estructura dinmica.
Vista de cdigo: organizacin de cdigo fuente, binarios y bibliotecas en el ambiente de desarrollo.
Libro: Software Systems Architecture por Nick Rozanski y Ein Woods (Woods, 2005).
Funcional: describe los elementos funcionales del sistema, sus responsabilidades, interfaces e
interacciones primarias.
Informacin: describe la manera en la que la arquitectura almacena, manipula, administra y distribuye
informacin.
Concurrencia: describe la concurrencia de un sistema e identifica los elementos que se pueden ejecutar
concurrentemente y la manera en que son coordinados y ejecutados.
Desarrollo: describe la arquitectura que soporta el proceso de desarrollo de software.
Despliegue: describe el ambiente dentro del cual el sistema ser instalado.
Operacional: describe la manera en la que el sistema ser operado, administrado y soportado cuando
est en el ambiente de produccin.
SEI 1(02): Racionalizacin de vistas 8Departamento de Computacin - Facultad de Ciencias Exactas y
Naturales - Universidad de Buenos Aires, 2007).
Categorizan las vistas en ViewTypes.
Viewtypes: definen los tipos de elementos y los tipos de relaciones usados para una descripcin desde
una perspectiva particular.
ViewType Modular: Cmo est el sistema estructurado como conjunto de unidades de implementacin.

El SEI es el Software Engineering Institute un instituto federal estadounidense de investigacin y desarrollo, fundado por el Congreso de los
Estados Unidos, en Pittsburgh, en 1984.

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

ViewType Componente y Conector: Como un conjunto de elementos que tienen comportamiento e


interaccin en tiempo de ejecucin.
ViewType Asignacin: Cmo se relaciona el software con elementos que no son software.

Propuestas de vistas Microsoft (Platt, 20029).


Vista conceptual: es usada para definir los requerimientos funcionales y la visin que los usuarios del
negocio tienen de la aplicacin y describir el modelo de negocio que la arquitectura debe cubrir
Vista lgica: muestra los componentes principales de diseo y sus relaciones de forma independiente de
los detalles tcnicos y de cmo la funcionalidad ser implementada en la plataforma de ejecucin.
Vista fsica: ilustra la distribucin del procesamiento entre los distintos equipos que conforman la
solucin, incluyendo los servicios y procesos de base.
Vista implementacin: describe cmo se implementan los componentes fsicos mostrados en vista de
distribucin agrupndolos en subsistemas organizados en capas y jerarquas, ilustra, adems las
dependencias entre stos.

Propuestas de vistas de la arquitectura segn RUP (Kruchten, 2000).


Vista lgica: requerimientos de comportamiento, mecanismos comunes de diseo (basada en diagramas
de objetos y clases).
Vista de procesos: distribucin, integridad, tolerancia a fallas (basada en describir una red lgica de
programas que se comunican).
Vista de desarrollo o implementacin: rehso, portabilidad, asignacin de requerimientos y trabajo de
equipos. Organizacin del software en el ambiente de desarrollo.
Vista fsica o de despliegue: disponibilidad, confiabilidad, performance, escalabilidad. Mapea elementos
de las otras vistas a nodos de procesamiento.
Vista de casos de uso o escenarios: definicin de procesos, agrupamiento en paquetes.

Hasta aqu se han mostrado las propuestas de diferentes autores para clasificar las vistas que deben
conformar la disciplina de la arquitectura de software. A continuacin se darn las propias definiciones de
los autores del trabajo, resultantes de una larga investigacin y basadas en la experiencia de varios
proyectos.

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

Las clasificaciones que se proponen en este trabajo estn dadas por la necesidad de agrupar los
elementos que se quedan fuera de las vistas propuestas en una nica y global clasificacin.
RUP en sus 4+1 vistas, descuida los temas referidos a las vistas de datos, seguridad, presentacin y
sistema.
David Parnas, trata elementos a los que Siemens Research hace adiciones, pero a ambos les falta los
temas que aborda el SEI referidos a componentes y conectores.
Al SEI sin embargo le faltan los aspectos relacionados con las vistas de presentacin, datos y seguridad.

Tabla 1. Analoga entre arquitecturas.


Arquitectura tradicional

Arquitectura de software

Elementos de carga, base del edificio.


Parte ms importante en la construccin.

Vista tecnolgica: es la base del software,


propicia los elementos de software necesarios para
crear el producto.

Las divisiones que tendr el edificio, las


habitaciones, los espacios, en fin las
partes en las que estar dividido.

Vista de sistema: identifica y disea los


elementos de software y sus configuraciones

Los elementos de integracin del


edificio, como ladrillos, cabillas, todo lo
que permita que sus partes queden
unidas.

Vista de integracin: identifica todos los aspectos


de integracin del software.

La seguridad de las puertas, ventanas,


el acceso al edificio, seguridad de la
estructura, etc.

Vista de seguridad: chequea e implementa todos


los aspectos relacionados con el acceso a la
aplicacin, la modificacin, lectura o eliminacin de
la informacin, etc.

A la hora de construir un edificio hay que


tener en cuenta el acabado, la pintura, la
arquitectura, la presentacin, en fin la
imagen del edificio.

Vista de presentacin: como luce el software,


cules son los colores que lleva la aplicacin, como
son los botones, los links

Todo el personal que vive en el edificio,


los productos que hay en el (mesas,
camas, sillas), todo se debe tener
contabilizado.

Vista de datos: es donde se modela todo lo


persistente y relacionado a la BD.

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

En el libro Software Systems Architecture: Working With Stakeholders Using Viewpoints and
Perspectives de Nick Rozanski y Ein Woods, abordan 5 vistas que abarcan un amplio contenido,
pero no tratan las vistas de seguridad e integracin. De ah que se propongan estas vistas que vern a
continuacin, y en las que el contenido que se encierra se trat fuera el ms abarcador posible y estuviera
bien desglosado y explicado en las vistas respectivas.
Para que se entiendan mejor las vistas de la arquitectura de software y el enfoque que se le dar a cada
una en este trabajo, se har una analoga con la arquitectura tradicional y sus diferentes vistas.
Vista tecnolgica
La vista tecnolgica tiene como objetivo especificar y describir las tareas y competencias de los roles as
como las actividades y artefactos del rea de tecnologa, y por tanto, definir las habilidades y los
conocimientos que deben desarrollar las personas que trabajan en esta rea de la arquitectura de
software para lograr un buen desempeo. La vista de tecnologa es la responsable de garantizar un
soporte tecnolgico para el desarrollo de las configuraciones que propone el resultado de una Arquitectura
de sistema, as como las bases tecnolgicas para los frameworks especializados de la arquitectura de
sistema o de otras reas como la de integracin. Esta es la vista responsable de identificar las tecnologas
y herramientas a usar en la realizacin de la aplicacin, adems de definir la factibilidad tcnica del
producto. En esta vista se define la mejor arquitectura posible utilizando una tecnologa en particular,
igualmente es aqu donde se dan las soluciones tcnicas para la optimizacin de la aplicacin, es decir
para garantizar la portabilidad, flexibilidad y rendimiento de la aplicacin. Los integrantes de la vista de
tecnologa son los responsables de generar una tecnologa tipo para la aplicacin que se desea
desarrollar, de transmitir el conocimiento al resto del proyecto y por ltimo de implantar y controlar el uso
correcto de la tecnologa, ganando autoridad y prestigio dentro del proyecto. Las responsabilidades que
encierra la vista de tecnologa son las actividades que realiza el arquitecto tecnolgico y los artefactos que
genera.
Vista de sistema
La arquitectura de sistema es una de las disciplinas ms complejas dentro de la arquitectura de software,
responsable de definir correctamente cohesionados, acoplados e interrelacionados los elementos
computacionales del producto, las principales interacciones, los conectores y las configuraciones a asumir

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

por los elementos computacionales en funcin de los elementos del negocio que los mismos abstraen. La
vista de sistema de la arquitectura de software, representa una proyeccin simtrica de alto nivel, de los
procesos de negocio o arquitectura de negocio que se trabaja, expresada en elementos, conectores,
configuraciones y restricciones.
Entre sus principales aspectos se encuentran los principios de empaquetamiento del diseo arquitectnico
de un sistema de software, estos tienen un alto impacto en el diseo de la solucin, esta actividad est
asociada con los niveles de colaboracin de los elementos computacionales, los principios de reutilizacin
y los niveles de abstraccin y encapsulamiento en funcin del problema que se modela. Una adecuada
seleccin de los mismos suele implicar mejor organizacin del equipo de desarrollo y paralelizacin de las
tareas de implementacin, ms facilidad en los procesos de gestin de configuracin de software y una
granulacin adecuada de las partes del software con implicacin positiva en la gestin de la integracin
continua y el propio mantenimiento del sistema.
Otro elemento a tener en cuenta en el diseo arquitectnico del sistema es la asignacin de
responsabilidades y la identificacin de la colaboracin entre los elementos arquitectnicos. La
arquitectura de sistema adems de tener que identificar y disear los elementos de software y sus
configuraciones producto de la proyeccin simtrica de la arquitectura de negocio, tiene la responsabilidad
de disear la integracin de los mismos con otros elementos arquitectnicos relacionados con el rea de
la arquitectura tecnolgica, arquitectura de integracin, arquitectura de seguridad y la arquitectura de
presentacin fundamentalmente. Como prctica general un diseo de software de un sistema de gestin
presenta cinco grupos de componentes en su generalidad.
Como disciplina la arquitectura de sistema hace uso de varios elementos importantes de la Arquitectura de
software como los estilos arquitectnicos, patrones de arquitectura, patrones de diseo, patrones GRAPS
(del ingls,

General Responsibility Assignment Software Patterns), el modelado arquitectnico bien ADL (del

ingls, Architecture Description Language) o UML 2.0 (del ingls, Unified Modeling Language) entre otros.
La construccin de la arquitectura de sistema por su interdisciplinariedad, la cantidad de elementos
cognitivos que exige y su implicacin en la calidad del producto de software, hacen esta actividad una
tarea altamente compleja.

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

Vista de integracin
Integrar es hacer que alguien o algo pase a formar parte de un todo. La vista de integracin recoge todos
los elementos o aspectos de algo y lo incorpora al ente o a un conjunto de organismos. La integracin en
la arquitectura de software busca una completa relacin del espacio interior con el espacio exterior. Una
dualidad que se complementa mutuamente con las caractersticas propias de cada ambiente o de cada
plataforma operacional en el desarrollo de software. La arquitectura de Integracin persigue la obtencin
de una forma ms eficiente y flexible de combinar recursos, con el objetivo de optimizar operaciones a
travs y ms all del medio ambiente organizacional. Provee una vista nica consolidada a partir de
conectores que definen y especifican el comportamiento e interaccin entre elementos del negocio
(sistemas, subsistemas y componentes). El objetivo que persigue es plasmar detalladamente qu es lo
que se hace en ella y cmo se hace, se analizan los procesos de integracin del negocio; se identifican los
principales flujos de colaboracin o unificacin en la arquitectura; se establecen los conceptos ms crticos
en la integracin de sus procesos, de acuerdo al nivel de incidencia en los mismos, partiendo del anlisis
de su arquitectura, lo que permitir conocer las reas ms crticas de integracin y por ltimo se analizan
entradas y salidas de cada componente identificado por la arquitectura de sistema. Esta actividad permite
estar al tanto de los lazos de colaboracin entre componentes y clasificarlos segn la estrategia de
integracin identificada por el grupo de arquitectura, construyndose de esta manera la matriz de
integracin del negocio.
Vista de seguridad
Actualmente en muchos de los proyectos de desarrollo de software no existe un rea especializada en
garantizar la seguridad del entorno de desarrollo, de despliegue y de las aplicaciones propiamente. Por
esta causa implementar la seguridad resulta trabajoso ya que cada proyecto o institucin la controla de
forma diferente, invirtiendo tiempo y cuantiosos recursos humanos y materiales.
En este sentido se estable un rea de seguridad denominada Arquitectura de Seguridad, que es la
encargada de establecer toda la poltica de seguridad a seguir en las diferentes fases o entornos de un
sistema. Para esto deben identificar claramente todas las debilidades que puedan ser aprovechadas para
un ataque. Estas debilidades deben ser agrupadas para crear soluciones que impidan violaciones de
seguridad. Para ello se proponen soluciones como:

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

Desarrollar un sistema de seguridad centralizado que brinde estos servicios a todos los proyectos o
instituciones que desarrollen software. De esta forma se ahorra tiempo y esfuerzo y adems se
garantiza la estandarizacin de los procesos de gestin de seguridad en todos los sistemas que se
desarrollen.

Crear listas de chequeo por cada fase del software donde se controle el cumplimiento de todas las
normas de seguridad establecidas.

Definir la Vista de arquitectura de seguridad que sirva de gua para el desarrollo y norme todos los
aspectos a tener en cuenta en cada fase.

Vista de presentacin
La vista de presentacin en la arquitectura de software, tiene la responsabilidad como disciplina de definir
y desarrollar las tecnologas para la representacin de la informacin y usabilidad de esta. Entre las
responsabilidades que cubre se encuentran los aspectos tecnolgicos asociados a garantizar atributos de
calidad en el producto como son los aspectos de rendimiento, usabilidad, reutilizacin y portabilidad de la
capa de presentacin en la arquitectura. Entre sus aspectos ms importantes se encuentran el uso de
CSS, uso y gestin de imgenes y web hosting 2entre otros.
Vista de datos
La arquitectura de datos, identifica y precisa las mejores clases de datos que apoyan las funciones del
negocio definidas en el modelo de negocios. Es la primera de las arquitecturas a ser concretadas porque
la calidad de los datos es el producto bsico de la funcin de la ingeniera de software. La arquitectura de
datos tiene como objetivo puntualizar los principales tipos y fuentes de datos necesarios para dar soporte
a las actividades de la empresa, de manera que sean:
-

entendibles por los participantes.

completas y consistentes.

estables.

Esta Vista especifica arquitectnicamente los elementos constantes en el Modelo de Datos (MD). Describe
una apreciacin global del MD y su organizacin por lo que se refiere a las tablas, vistas y
2

El alojamiento web (en ingls web hosting) es el servicio que provee a los usuarios de Internet un sistema para poder almacenar informacin,
imgenes, vdeo, o cualquier contenido accesible va Web.

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

almacenamiento de los procedimientos que proporcionan la persistencia al sistema. Tambin describe la


cartografa de clases constantes de la vista lgica a la estructura de los datos de la base de datos. Esta
vista es opcional, ya que slo se realiza si la persistencia es un aspecto significante del sistema y el
traslado del modelo de diseo al modelo de datos no se hace automticamente por el mecanismo de
persistencia.
La vista de datos abarca 12 temas fundamentales, estos son: polticas de trabajo, seguridad de datos,
normas de comentariado, estndares de nomenclatura, herramientas, tipos de datos, concurrencia,
normalizacin de rboles, polticas de indexado, rendimiento, mantenimiento de la base de datos y
distribucin a nivel de datos.
Validacin de la propuesta y resultados alcanzados
La propuesta de vistas detallada anteriormente ha tenido una amplia validacin llevndose a cabo en el
proyecto ERP-Cuba, uno de los proyectos de software ms grandes realizados en la UCI y el primero con
un tipo de arquitectura como esta, teniendo muy buenos resultados, que se pueden apreciar al ser
premiado en eventos como la Jornada Cientfico Estudiantil, el haber obtenido el equipo de arquitectura el
premio del Rector, por el trabajo que se realiz al disear e implementar esta arquitectura y ha sido
presentado en diversos eventos ms as como est siendo usada actualmente en varios proyectos
productivos de la UCI.
Esta arquitectura ha sido instalada junto con el producto Cedrux en ms de 5 empresas como son el
Hospital Naval, ICID, Centro de Gestin, Empresa Rafael Trejo, UCI entre otras, teniendo buenos
resultados y siendo una potencia tecnolgica ya que fue desarrollado completamente con software libre y
guiado por el proceso de vistas referido en este articulo.

Conclusiones
Para construir una arquitectura de software debe precisarse una serie de vistas que agrupen las
definiciones necesarias para adquirir el conocimiento y las actividades requeridas para llevarla a cabo. Al
hacer una investigacin del tema se pudo apreciar que las vistas estudiadas estaban incompletas o no
agrupaban los diferentes temas en los que se desenvuelve un proyecto de software y que son los ms
tratados actualmente por lo que surgi este artculo con la intencin de lograr implementar una
arquitectura de software que no deje fuera ningn tema deben implementarse las vistas aqu delimitadas,
identificndose 6 vistas principales, sistema, seguridad, presentacin, integracin, datos y tecnolgica, con

Grupo Editorial Ediciones Futuro


Serie Cientfica de la Universidad de las Ciencias Informticas (SC-UCI)
Vol.: 3, No. 10, Ao 2010
http://publicaciones.uci.cu/index.php/SC

las responsabilidades asociadas a estas. Al implementar una arquitectura como la presentada en este
trabajo, estamos tratando todas las reas en las que se desenvuelve una arquitectura con un mayor nivel
de especializacin, tratando cada tema como una vista aparte, logrando con esto un mayor enfoque y una
mayor definicin de tareas por rea.

Referencias
-

Departamento de Computacin - Facultad de Ciencias Exactas y Naturales - Universidad de


Buenos Aires. 2007. Departamento de Computacin. Departamento de Computacin. Disponible
en: [http://www.dc.uba.ar/].

KRUCHTEN. The Rational Unified Process: An Introduction. The Rational Unified Process: An
Introduction. s.l.: Addison Wesley, 2000.

PLATT, MICHAEL. MSDN Architecture Center. MSDN Architecture Center. [en lnea] julio de 2002.
Disponible en: [http://msdn.microsoft.com/en-us/library/ms978007.aspx].

REYNOSO,

CARLOS

BILLY.

willydev.ne.

[en

lnea]

marzo

de

2004.

Disponible

en:

[http://www.willydev.net/descargas/prev/IntroArq.pdf].
-

WOODS, NICK ROZANSKI AND EOIN. 2005. Software Systems Architecture: Working with
Stakeholders Using Viewpoints and Perspectives. Addison-Wesley Professional: s.n., 2005.

You might also like