19 Nov

¿Qué es una arquitectura de software?


«Toda la arquitectura es diseño, pero no todo el diseño es arquitectura. La arquitectura representa las decisiones de diseño significativas que le dan
forma a un sistema, donde lo significativo puede ser medido por el costo del cambio».

(Grady Booch)

La arquitectura de un sistema de software define al sistema en términos de componentes computacionales e interacciones entre esos componentes.

IEEE 1471:

El nivel conceptual más alto de un sistema en su ambiente.

Software Architecture in Practice – Kazman:

“La estructura de estructuras de un sistema, la cual abarca componentes de software, propiedades externas visibles de estos componentes y sus relaciones”.

Arquitectura es la organización fundamental de un sistema descrita en:

Sus componentes, Relación entre ellos y con el ambiente y Principios que guían su diseño y evolución.

¿Por qué es critico definir la arquitectura?

Quizás una buena arquitectura sea aquella en la que las decisiones de diseño significativas se lograron minimizar, evitando riesgos de cambio futuros. De esta forma estaríamos libres de cambiar varios aspectos del sistema sin el miedo a que tales cambios produzcan cascada de errores y cambios en el diseño que nos llevarían a altos costos de mantenimiento. Una buena arquitectura debe ser sustentable. -En una arquitectura con bajo acoplamiento, donde los puntos de variación futuras estén bien encapsulados, los efectos del cambio estarán bien aislados y el costo será relativamente bajo.

Arquitectura Monolítica:



Esta arquitectura se desarrolla cuando el software se estructura en grupos funcionales muy acoplados. No hay distribución, tanto a nivel físico como a nivel lógico. Está formado por la presentación, los datos y el procesamiento. Es una arquitectura rígida de programación en un solo computador.

Ventajas:

Muy eficiente ya que se producen pocos cambios de contexto. -Fácil de desarrollar.

Desventajas: –

Difícil de depurar, un error en una función se puede manifestar en otra distinta. -Difícil de ampliar. -No permiten el acceso en línea desde fuera de la Red Local ó requieren de implementaciones de soluciones de conectividad muy costosas. -Alto acoplamiento entre niveles.


Arquitectura Cliente-Servidor:


Desde el punto de vista funcional, se puede definir la computación Cliente/Servidor como una arquitectura distribuida que permite a los usuarios finales obtener acceso a la información en forma transparente aún en entornos multiplataforma. -En el modelo cliente servidor, el cliente envía un mensaje solicitando un determinado servicio a un servidor (hace una petición), y este envía uno o varios mensajes con la respuesta (provee el servicio). En un sistema distribuido cada máquina puede cumplir el rol de servidor para algunas tareas y el rol de cliente para otras.

Arquitectura Cliente-Servidor: Cliente –


El Cliente normalmente maneja todas las funciones relacionadas con la manipulación y despliegue de datos, por lo que están desarrollados sobre plataformas que permiten construir interfaces gráficas de usuario (GUI), además de acceder a los servicios distribuidos en cualquier parte de una red.

Arquitectura Cliente-Servidor: Servidor

Es el proceso encargado de atender a múltiples clientes que hacen peticiones de algún recurso administrado por él. El servidor normalmente maneja todas las funciones relacionadas con la mayoría de las reglas del negocio y los recursos de dato.

Ventajas:


Uno de los aspectos que más ha promovido el uso de sistemas Cliente/Servidor, es la existencia de plataformas de hardware cada vez más baratas. -En el uso de interfaces gráficas para el usuario, el esquema Cliente/Servidor presenta la ventaja, con respecto a uno centralizado, de que no es siempre necesario transmitir información gráfica por la red pues esta puede residir en el cliente, lo cual permite aprovechar mejor el ancho de banda de la red. -Una ventaja adicional del uso del esquema Cliente/Servidor es que es más rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear las herramientas existentes (por ejemplo los servidores de SQL).-El esquema Cliente/Servidor contribuye además, a proporcionar, a los diferentes departamentos de una organización, soluciones locales, pero permitiendo la integración de la información relevante a nivel global.

Desventaja:

Además, hay que tener estrategias para el manejo de errores y para mantener la consistencia de los datos. -La seguridad de un esquema Cliente/Servidor es otra preocupación importante. Por ejemplo, se deben hacer verificaciones en el cliente y en el servidor. -El desempeño es otro de los aspectos que se deben tener en cuenta en el esquema Cliente/Servidor. Problemas de este estilo pueden presentarse por congestión en la red, dificultad de tráfico de datos, etc.

Arquitectura de 3 capas
En dichas arquitecturas a cada nivel se le confía una misión simple, lo que permite el diseño de arquitecturas escalables (que pueden ampliarse con facilidad en caso de que las necesidades aumenten). -La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algún cambio, sólo se ataca al nivel requerido sin tener que revisar entre código mezclado. -El diseño más utilizado actualmente es el diseño en tres niveles (o en tres capas).

Arquitectura de 3 capas: Presentación Capa de presentación: –

Se encarga de la interfaz gráfica que es presentado al usuario, es decir todas las formas, páginas Web o menús de diálogo, con los cuales interactúa el usuario. -Los servicios de presentación proporcionan la interfaz necesaria para presentar información y reunir datos.
También aseguran los servicios de negocios necesarios para ofrecer las capacidades de transacciones requeridas e integrar al usuario con la aplicación para ejecutar un proceso de negocios. -Los servicios de presentación generalmente son identificados con la interfaz de usuario, y normalmente residen en un programa ejecutable localizado en la estación de trabajo del usuario final.

Arquitectura de 3 capas: Negocio Capa de negocios:

Esta capa es la encargada de procesar y validar las reglas del negocio, actúa como un servidor para la capa de presentación y traslada las solicitudes de ésta a la capa de datos, actuando como cliente de la misma. -Los servicios de negocios son el “puente” entre un usuario y los servicios de datos. Responden a las peticiones del usuario (u otros servicios de negocios) para ejecutar una tarea de este tipo. Cumplen con esto aplicando procedimientos formales y reglas de necio a los datos relevantes. Cuando los datos necesarios residen en un servidor de bases de datos, garantizan los servicios de datos indispensables para cumplir con la tarea de negocio o aplicar su regla. Esto aísla al usuario de la interacción directa con la base de datos. -Como las reglas de negocio tienden a cambiar más frecuentemente que las tareas especificadas de negocios a las que dan soporte, son candidatos ideales para encapsularlas en componentes que están lógicamente separados de la lógica de la aplicación en si.

Arquitectura de 3 capas: Datos

Capa de datos:
Esta capa incluye bases de datos y programas que maneja la lectura y escritura sobre las mismas. En esta capa es donde se deben definir los métodos de acceso y políticas de seguridad utilizadas sobre los datos. -Recibe solicitudes de almacenamiento o recuperación de información desde la capa de negocio.



Ventajas:
Reutilización de lógica de negocio para diferentes clientes o sistemas. -Mejora la escalabilidad. -Mejora la flexibilidad. -Independencia de la base de datos. -Componentes modulares. -Cualquier componente puede ser reemplazado independientemente.
Desventajas:
La arquitectura puede ser compleja de desarrollar. -Los ambientes de tres capas pueden incrementar el tráfico en la red y requiere más balance de carga u tolerancia a las fallas. -Los exploradores actuales no son todos iguales. La estandarización entre diferentes proveedores ha sido lenta en desarrollarse. Muchas organizaciones son forzadas a escoger uno en lugar de otro, mientras que cada uno ofrece sus propias y distintas ventajas.

Arquitectura de n capas:


La arquitectura de n capas proporciona un modelo para los desarrolladores para crear una aplicación flexible y reutilizable. Mediante la ruptura de una aplicación en niveles, los desarrolladores sólo tienen que modificar o añadir una capa específica, en lugar de tener que reescribir toda la aplicación más. Debe haber un nivel de presentación, un acceso de las empresas o de nivel de datos, y un nivel de datos.
-Bajo costo de administración de clientes. -Alta accesibilidad. -Alta flexibilidad. -Alta disponibilidad y tolerancia a fallos. -Alta escalabilidad. -Independencia de DB .

Arquitectura V/S Diseño

La arquitectura y el diseño difieren en tres áreas:

Arquitectura: -NIVEL DE Abstracción:


Alto nivel, ENTREGABLES:
Planear subsistemas, interfaces con sistemas externos, servicios horizontales,frameworks,componentes reutilizables, prototipo arquitectónico.

Áreas DE ENFOQUE:

Selección de tecnologías, Requerimientos no funcionales (QoS), Manejo de riesgos Diseño: -NIVEL DE Abstracción:
Bajo nivel. Enfoque especifico en detalles.

ENTREGABLES:

Diseño detallado componentes. Especificaciones de codificación.

Áreas DE ENFOQUE:

Requerimientos funcionales.

La arquitectura envuelve un conjunto de decisiones estratégicas de diseño, lineamientos, reglas y patrones que restringen el diseño y la implementación de un software.

¿Por qué es importante la Arquitectura de Software?

Forma la columna vertebral para construir un sistema de software. -Es en gran medida responsable de permitir o no ciertos atributos de calidad del sistema (confiabilidad y rendimiento). -Es un modelo abstracto reutilizable:

-Puede transferirse de un sistema a otro. -Representa una inversión

-Representa un medio de comunicación y discusión entre participantes del proyecto.

Deja un comentario