Sei sulla pagina 1di 5

ARQUITECTURA DE SOFTWARE.

Arquitectura del software es el campo de estudio donde se aplican técnicas o


métodos que te permite a diseñar,proyectar y construir un software con el fin
de guiar mediante su desarrollo.

IMPORTANCIA

¿Por qué es importante la arquitectura de software?


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.
La manera en que se estructura un sistema permitirá o impedirá que se
satisfagan los atributos de calidad. Por ejemplo, un sistema estructurado de tal
manera que una petición deba transitar por muchos componentes antes de que
se devuelva una respuesta podría tener un desempeño pobre. Por otro lado, un
sistema estructurado de tal manera que los componentes estén altamente
acoplados entre ellos limitará severamente la modificabilidad. Curiosamente, la
estructuración tiene un impacto mucho menor respecto a los requerimientos
funcionales del sistema.
El ciclo de desarrollo de la arquitectura
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, esta dividido en las
siguientes etapas: requerimientos, diseño, documentación y evaluación. Cabe
señalar que las actividades relacionadas con el desarrollo de la arquitectura de
software generalmente forman parte de las actividades definidas dentro de las
metodologías de desarrollo.
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.

El rol de arquitecto
Las actividades descritas anteriormente requieren de habilidades particulares
que son la responsabilidad del arquitecto de software. El arquitecto es un líder
técnico que debe conocer los principios relacionados con la arquitectura de
software, tener un amplio conocimiento respecto a la tecnología, y tener
excelentes habilidades de comunicación escrita y oral.
Desafortunadamente, en la actualidad pocos arquitectos de software que
laboran en la industria han recibido una formación teórica respecto al tema.
Esto se debe a que no es sino hasta épocas recientes que se han establecido de
manera más formal los conceptos relacionados con la arquitectura de software,
y que actualmente pocas instituciones ofrecen cursos enfocados en el tema. El
desconocimiento de los principios relativos a la arquitectura de software
frecuentemente impacta de manera negativa a los proyectos de desarrollo.

NIVELES DE DISEÑO

El producto del proceso de diseño es siempre una solución de diseño. A


pesar de ser la descripción que permite la construcción del sistema, nada fue
dicho sobre el nivel de detalle contenido en esa solución. Sucede que, en
realidad, el diseño puede ocurrir en diversos niveles de detalle. De acuerdo con
la Guía para el Cuerpo de Conocimiento en Ingeniería de Software, el proceso
de diseño de software consiste en dos actividades: diseño de alto nivel y diseño
detallado.

El diseño de alto nivel, también conocido como diseño arquitectural, trata de


describir la organización fundamental del sistema, identificando sus diver- sos
módulos (y sus relaciones entre sí y con el entorno) para que se alcancen los
objetivos propuestos por el cliente.

Diseño arquitectural. Describe la arquitectura del software o, en pocas pala-


bras, como el software es decompuesto y organizado en módulos y sus rela-
ciones. Al contrario del diseño de alto nivel, el diseño detallado se preocupa de
la descripción detallada de cada módulo posibilitando la construcción y se ade-
cua al diseño de alto nivel.

Diseño detallado. Describe el comportamiento específico y en detalle de los m


ódulos que componen el diseño arquitectural. A pesar de esa división
conceptual de diseño en dos actividades, esa divi- sión puede no ocurrir
durante el proceso de desarrollo del software. Algunas veces, el diseñador – o
quien asume su papel – realiza ambas actividades en paralelo, concibiendo así
un producto de diseño que permitirá tanto el alcance de los requisitos de
calidad (que normalmente es tarea de la arquitectura), como la construcción
precisa del sistema por medio de sus detalles. Sin em- bargo, adoptaremos la
separación conceptual de las dos actividades de forma

ELEMENTOS

Elementos arquitecturales La arquitectura de un sistema debe definir los


elementos que formarán el so- ftware. Tales elementos definen como el
software será fragmentado en peda- zos más pequeños y se define como el
software será interpretado. Los ele- mentos arquitecturales son divididos en dos
tipos: elementos estáticos y ele- mentos dinámicos. Los elementos estáticos de
un sistema de software definen las partes del sistema y cual será su
organización. Ese tipo de elemento refleja el sistema du- rante el diseño y está
constituido de elementos de software (Ej., módulos, cla- ses, paquetes,
procedimientos o servicios auto-contenidos), elementos de datos (Ej., entidades
y tablas de bases de datos, archivos de datos o clases de datos) y elementos de
hardware (Ej., los ordenadores que se van a ejecutar en el sistema u otros tipos
de hardware que usará el sistema: routers, switch o impresoras). Los elementos
estáticos no consisten sólo en las partes estáticas del sis- tema, sino también de
como estos se relacionan entre sí. Las asociaciones, composiciones y otros tipos
de relaciones entre elementos de software, de datos y de hardware forman el
aspecto estático que compone la arquitectura del sistema. El ejemplo que sigue
a continuación ilustra elementos estáticos
de un sistema de
software. EJEMPLO: Volviendo al Videoclub, observemos su arquitectura bajo u
na óptica estática exponiendo sus elementos estáticos. En tiempo de
diseño, algunos elementos estáticos son cada paquete, módulo o conjunto de
clases responsables de cada función del sistema. Algunos de esos elementos
son los responsables de: la creación, la edición, la eliminación y la recuperación
de usuarios y de películas, del alquiler de películas, de la autenticación y de la
au- torización de los usuarios, entre otros. Por otro lado, los elementos
dinámicos definen el comportamiento del sis- tema. Ese tipo de elemento se
refleja en el sistema durante la ejecución y en éste están incluidos los procesos,
los módulos, los protocolos o las clases que realizan el comportamiento. Los
elementos dinámicos también describen como el sistema reacciona a los
estímulos internos y externos, como se mues- tra en el ejemplo de a
continuación. EJEMPLO: Volviendo a la arquitectura del Videoclub, podemos ob
servar el sistema bajo una óptica dinámica. Esta muestra sus elementos
dinámicos, como por ejemplo los diversos procesos que se ejecutan en las
diversas máquinas que componen el sistema. Esos procesos pertenecen a los
servi- dores de aplicación, a los servicios de almacenamiento o a los
navegadores de los usuarios.

Potrebbero piacerti anche