Está en la página 1de 7

ARQUITECTURA DE SOFTWARE

EFINICIONES LAS IMPORTANTES DE ARQUITECTURA DE SOFTWARE

La arquitectura de software es un concepto fácil de entender y que la mayoría de los


ingenieros aprecian intuitivamente, sobre todo los que tienen un poco de experiencia, pero
resulta difícil definirlo con precisión. En concreto, es difícil dibujar una línea precisa entre
el diseño y la arquitectura, la arquitectura es un aspecto de diseño que se concentra en
algunas características específicas. En la actualidad no se ha llegado a un acuerdo en cuanto
a la definición formal de lo que es la arquitectura de software.

Una definición reconocida es la de Clements: Expresa que 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.

Por otra parte de acuerdo al Software Engineering Institute (SEI), la Arquitectura de


Software se refiere a “las estructuras de un sistema, compuestas de elementos con
propiedades visibles de forma externa y las relaciones que existen entre ellos.”

Y por ultimo, la definición “oficial” de AS se ha acordado que sea la que brinda el


documento de IEEE Std 1471-2000, adoptada también por Microsoft, que reza así: La
Arquitectura de Software es la organización fundamental de un sistema encarnada en sus
componentes, las relaciones entre ellos y el ambiente y los principios que orientan su
diseño y evolución.

IMPORTANCIA

La arquitectura de software es de especial importancia ya que la manera en que se


estructura un sistema tiene un impacto directo sobre la capacidad de este para satisfacer lo
que se conoce como los atributos de calidad del sistema. Ejemplos de atributos de calidad
son el desempeño, que tiene que ver con el tiempo de respuesta del sistema a las peticiones
que se le hacen, la usabilidad, que tiene que ver con qué tan sencillo les resulta a los
usuarios realizar operaciones con el sistema, o bien la modificabilidad, que tiene que ver
con qué tan simple resulta introducir cambios en el sistema. Los atributos de calidad son
parte de los requerimientos (no funcionales) del sistema y son características que deben
expresarse de forma cuantitativa. No tiene sentido, por ejemplo, decir que el sistema debe
devolver una petición “de manera rápida”, o presentar una página “ligera”, ya que no es
posible evaluar objetivamente si el sistema cubre o no esos requerimientos.

Además de los atributos de calidad, la arquitectura de software juega un papel


fundamental para guiar el desarrollo. Una de las múltiples estructuras que la componen se
enfoca en partir el sistema en componentes que serán desarrollados por individuos o grupos
de individuos. La identificación de esta estructura de asignación de trabajo es esencial para
apoyar las tareas de planeación del proyecto.

Finalmente, los diseños arquitectónicos que se crean en una organización pueden ser
reutilizados para crear sistemas distintos. Esto permite reducir costos y aumentar la calidad,
sobre todo si dichos diseños han resultado previamente en sistemas exitosos.

ELEMENTOS DE LA ARQUITECTURA DE SOFTWARE

El término “elementos” dentro de la definición del SEI es vago a propósito, pues


puede referirse a distintas entidades relacionadas con el sistema. Los elementos pueden ser
entidades que existen en tiempo de ejecución (objetos, hilos), entidades lógicas que existen
en tiempo de desarrollo (clases, componentes) y entidades físicas (nodos, directorios). Por
otro lado, las relaciones entre elementos dependen de propiedades visibles (o públicas) de
los elementos, quedando ocultos los detalles de implementación. Finalmente, cada conjunto
de elementos relacionados de un tipo particular corresponde a una estructura distinta, de ahí
que la arquitectura está compuesta por distintas estructuras.

Dentro de un proyecto de desarrollo, e independientemente de la metodología que se


utilice, se puede hablar de “desarrollo de la arquitectura de software”. Este desarrollo, que
precede a la construcción del sistema, está dividido en las siguientes etapas: requerimientos,
diseño, documentación y evaluación.

A continuación se describen dichas etapas:

 Requerimientos: La etapa de requerimientos se enfoca en la captura,


documentación y priorización de requerimientos que influencian la arquitectura.
Como se mencionó anteriormente, los atributos de calidad juegan un papel
preponderante dentro de estos requerimientos, así que esta etapa hace énfasis en
ellos. Otros requerimientos, sin embargo, son también relevantes para la
arquitectura, estos son los requerimientos funcionales primarios y las restricciones.
 Diseño: La etapa de diseño es la etapa central en relación con la arquitectura y
probablemente la más compleja. Durante esta etapa se definen las estructuras que
componen la arquitectura. La creación de estas estructuras se hace en base a
patrones de diseño, tácticas de diseño y elecciones tecnológicas. El diseño que se
realiza debe buscar ante todo satisfacer los requerimientos que influencian a la
arquitectura, y no simplemente incorporar diversas tecnologías por que están “de
moda”.
 Documentación: Una vez creado el diseño de la arquitectura, es necesario poder
comunicarlo a otros involucrados dentro del desarrollo. La comunicación exitosa
del diseño muchas veces depende de que dicho diseño sea documentado de forma
apropiada. La documentación de una arquitectura involucra la representación de
varias de sus estructuras que son representadas a través de distintas vistas. Una vista
generalmente contiene un diagrama, además de información adicional, que apoya en
la comprensión de dicho diagrama.
 Evaluación: Dado que la arquitectura de software juega un papel crítico en el
desarrollo, es conveniente evaluar el diseño una vez que este ha sido documentado
con el fin de identificar posibles problemas y riesgos. La ventaja de evaluar el
diseño es que es una actividad que se puede realizar de manera temprana (aún antes
de codificar), y que el costo de corrección de los defectos identificados a través de
la evaluación es mucho menor al costo que tendría el corregir estos defectos una vez
que el sistema ha sido construido.

ESPECIFICACIONES

La especificación de requisitos de software (ERS) es una descripción completa del


comportamiento del sistema que se va a desarrollar. Incluye un conjunto de casos de uso
que describe todas las interacciones que tendrán los usuarios con el software. Los casos de
uso también son conocidos como requisitos funcionales. Además de los casos de uso, la
ERS también contiene requisitos no funcionales (complementarios). Los requisitos no
funcionales son requisitos que imponen restricciones en el diseño o la implementación,
como, por ejemplo, restricciones en el diseño o estándares de calidad.

Está dirigida tanto al cliente como al equipo de desarrollo. El lenguaje utilizado para
su redacción debe ser informal, de forma que sea fácilmente comprensible para todas las
partes involucradas en el desarrollo.

VISTAS ARQUITECTONICAS

Un modelo para describir la arquitectura de sistemas de software, basándose en el


uso de múltiples vistas concurrentes. Este uso de múltiples vistas permite abordar los
intereses de los distintos “stakeholders (parte interesada)” de la arquitectura por separado:
usuarios finales, desarrolladores, ingenieros de sistemas, administradores de proyecto, etc.,
y manejar los requisitos funcionales y no funcionales separadamente. Se describe cada una
de las cinco vistas. Las vistas se diseñan mediante un proceso centrado en la arquitectura,
motivado por escenarios y desarrollado iterativamente.

El modelo 4+1 describe la arquitectura del software usando cinco vistas


concurrentes, las cuales se describen así:

 La vista lógica describe el modelo de objetos del diseño cuando se usa un método
de diseño orientado a objetos. Para diseñar una aplicación muy orientada a los
datos, se puede usar un enfoque alternativo para desarrollar algún otro tipo de vista
lógica, tal como diagramas de entidad relación.
 La vista de procesos describe los aspectos de concurrencia y sincronización del
diseño.
 La vista física describe el mapeo del software en el hardware y refleja los aspectos
de distribución.
 La vista de desarrollo describe la organización estática del software en su ambiente
de desarrollo.

Los diseñadores de software pueden organizar la descripción de sus decisiones de


arquitectura en estas cuatro vistas, y luego ilustrarlas con un conjunto reducido de casos de
uso o escenarios, los cuales constituyen la quinta vista.

NIVELES DE UN DISEÑOS DE SOFTWARE

El diseño de Software es un proceso que transforma los requisitos del usuario de


una manera conveniente, lo que ayuda al programador a en la codificación e
implementación del software.

El diseño de Software produce 3 niveles de resultados:

Diseño arquitectónico: El Diseño arquitectónico, es la versión más abstracta del


sistema. Identifica el software como un sistema con distintos componentes que interactúan
entre ellos. En este momento es cuando los diseñadores conciben la idea de posibles
soluciones de dominio.

Diseño de alto nivel: El Diseño de alto nivel, rompe con el concepto de diseño
arquitectónico que se refiere a ‘Componente de única entidad múltiple', por lo contrario
tiene un punto de vista menos abstracto de los subsistemas y módulos y representa la
existente interacción entre ellos. El Diseño de alto nivel se centra en cómo el sistema junto
con todos sus componentes se puede implementar en forma de módulos. Reconoce
estructuras modulares de cada subsistema y su relación e interacción entre las mismas.

Diseño detallado: El Diseño detallado diseña acuerdos con la parte de


implementación de lo que se ve como sistema y sus subsistemas con los dos tipos de diseño
mencionados con anterioridad. Es más detallado en cuanto a los módulos y a su
implementación. Define estructuras lógicas de cada módulo y de sus interfaces para
comunicarse con los otros módulos.

ESTADO ACTUAL DE LA TECNOLOGÍA

Como es sabido, el desarrollo de software es un campo que cambia rápidamente.


Casi todos los años aparecen nuevos lenguajes, arquitecturas de software, contenedores,
metodologías, etc. Pero lo que está más que claro es que en los entornos de ingeniería de
software actuales se han integrado el manejo de requerimientos, análisis, diseño,
generación, pruebas y manejo de cambios para dar soporte a todas las etapas del proceso de
desarrollo de software.

Los sistemas operativos actuales soportan desde computación en casa hasta redes
corporativas de computadoras con procesamiento paralelo. Las bases de datos se pueden
escalar desde un usuario hasta miles de usuarios y manejar datos hasta el orden de los
terabytes. Las aplicaciones de oficina han evolucionado hasta quedar completamente
integradas. Mientras que ha habido una evolución larga en los métodos de desarrollo.
Primero los métodos se centraron sólo en el análisis y luego sólo en el diseño, para
posteriormente integrarse. Actualmente se contemplan también la construcción, pruebas e
implementación.

Cabe mencionar también En un principio los compiladores, depuradores y editores


no estaban integrados, haciendo la tarea de programación muy morosa. Poco a poco, el
editor, compilador y depurador fueron integrados en el mismo entorno. Actualmente estos
entornos integrados cuentan con ayuda interactiva y en línea, editores inteligentes sensibles
al contexto y control multiusuario de versiones.

REQUERIMIENTOS NO FUNCIONALES

CARACTERÍSTICAS DE CALIDAD DE UN SOFTWARE

El concepto de calidad encuentra muchas definiciones posibles. La más tradicional


se refiere al conjunto de cualidades de una persona o cosa. Sin embargo, las definiciones
vinculadas a las actividades industriales hablan de la medida en que un producto o servicio
satisface los requerimientos de una función dada. De todas formas, el concepto es subjetivo.
Por ejemplo, un producto que cumple con las expectativas de un usuario puede haber sido
elaborado sin conformidad con ciertas normas de fabricación. Por eso, la calidad siempre
depende del punto de vista, pero, en general, involucra el cumplimiento de un conjunto de
exigencias. Otros aspectos a tener cuenta pueden ser la adecuación al uso y la ausencia de
deficiencias.

Entonces, ¿qué es la calidad de un producto software? Existen dos enfoques


posibles:

 Calidad funcional. Refleja en qué medida el software cumple con o se ajusta a un


determinado diseño, basado en requerimientos funcionales. Éstos abarcan las
actividades del software que involucran procesamiento de datos de entrada.
 Calidad estructural. Refleja en qué medida el software cumple con los
requerimientos no funcionales, como rendimiento, capacidad de mantenimiento o
escalabilidad.
CARACTERÍSTICAS PROPICIADAS POR LA ARQUITECTURA ESTÀNDAR ISO
9126

El estándar ISO/IEC 9126 presenta la calidad del software como un conjunto de seis
características globales:

 Funcionalidad. Las funciones del software son aquellas que buscan satisfacer las
necesidades del usuario.

 Confiabilidad. La capacidad del software de mantener su rendimiento bajo ciertas


condiciones durante cierto período de tiempo.

 Usabilidad. Basada en el esfuerzo necesario para utilizar el software por parte de un


grupo de usuarios.

 Eficiencia. Basada en la relación entre el nivel de rendimiento del software y el


volumen de recursos utilizado, bajo ciertas condiciones.

 Capacidad de mantenimiento. Basada en el esfuerzo necesario para realizar


modificaciones específicas.

 Portabilidad. Basada en la capacidad del software para ser transferido de un entorno


a otro.

El cuidado de estos aspectos durante todo el ciclo de vida del software redundará en
productos que no sólo satisfarán las exigencias del usuario, sino que además serán más
fáciles de mantener y modificar una vez realizada la entrega al cliente.