Professional Documents
Culture Documents
Artculo original
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.
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.
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.
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.
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.
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.
Arquitectura de software
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
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.
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:
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:
-
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.
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
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
-
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.