Arquitectura de Software
¿Qué es la Arquitectura?
Arquitectura significa «constructor o carpintero». Para los antiguos griegos, el arquitecto era el jefe o capataz de la construcción, y la arquitectura era la técnica o el arte de quien realizaba el proyecto y dirigía la construcción del edificio y las estructuras.
Definición de Arquitectura según William Morris
La arquitectura abarca la consideración de todo el ambiente físico que rodea la vida humana. No podemos sustraernos a ella mientras formemos parte de la civilización, porque la arquitectura es el conjunto de modificaciones y alteraciones introducidas en la superficie terrestre con objeto de satisfacer las necesidades humanas, exceptuando sólo el puro desierto.
Orígenes de la Arquitectura del Software
En los inicios de la informática, la programación se consideraba un arte. Debido a su dificultad, se desarrollaba como tal. Con el tiempo, se han ido descubriendo y desarrollando formas y guías generales para resolver los problemas. A estas formas de desarrollo se les ha denominado Arquitectura de Software. A semejanza de los planos de un edificio, estas indican la estructura, funcionamiento e interacción entre las partes del software.
Definición de Arquitectura del Software
La Arquitectura del Software es el diseño de más alto nivel de la estructura de un sistema. Establece los fundamentos para que analistas, diseñadores, programadores, etc., trabajen en una línea común que permita alcanzar los objetivos del sistema de información, cubriendo todas las necesidades. Los objetivos son aquellos prefijados para el sistema de información, incluyendo los de tipo funcional, mantenimiento, adaptabilidad, flexibilidad e interacción con otros sistemas. Las restricciones son las limitaciones derivadas de las tecnologías disponibles para implementar sistemas de información.
Modelos o Vistas de la Arquitectura del Software
- Vista Estática: Describe los componentes de la arquitectura.
- Vista Funcional: Describe la función de cada componente.
- Vista Dinámica: Describe el comportamiento de los componentes a lo largo del tiempo y su interacción.
Arquitecturas de Software más Utilizadas
- Monolítica: El software se estructura en grupos funcionales muy acoplados.
- Cliente-Servidor: El software reparte su carga de cómputo en dos partes independientes, sin un reparto claro de funciones.
- Arquitectura de 3 Capas: Especialización de la arquitectura cliente-servidor. La carga se divide en tres capas con un reparto claro de funciones: presentación (interfaz de usuario), cálculo (reglas de negocio) y almacenamiento (persistencia). Cada capa se relaciona sólo con la siguiente.
Servidores
Definición de Servidor
Un servidor es un software que realiza tareas en nombre de los usuarios. El término también se refiere al ordenador físico que ejecuta ese software. Su propósito es proveer datos para que otras máquinas los utilicen. Un servidor sirve información a los ordenadores que se conectan a él. Los usuarios pueden acceder a programas, archivos y otra información del servidor.
Características de un Servidor de Base de Datos
- Manejar grandes y complejos volúmenes de datos, permitiendo compartir la información con varios clientes.
- Ofrecer soluciones fiables, rentables y de alto rendimiento.
- Proporcionar servicios de forma global e independiente de la plataforma.
Funciones de un Servidor de Base de Datos
- Proporcionar herramientas de administración y programación.
- Gestionar y almacenar la información para su tratamiento y proporcionar mecanismos de comunicación con otras plataformas.
- Replicar la información en múltiples servidores, haciéndola accesible desde cualquier punto.
Servidores de Base de Datos Relacionales
Un servidor de bases de datos relacionales es un sistema cliente/servidor que gestiona, administra y protege la información a través de conexiones de red. Los usuarios acceden concurrentemente mediante aplicaciones clientes. Resuelven los problemas de manejo de grandes volúmenes de información de forma estable, fiable, coherente y segura en entornos heterogéneos.
Protección de la Información en los SGBD
Para proteger la información, el sistema usa mecanismos de control de transacciones (disparadores), reglas de definición de entrada de datos y reglas de validación. Sistemas de indexación complejos ordenan y aceleran las consultas.
Niveles de Seguridad en Servidores de Bases de Datos
- Seguridad de acceso al sistema.
- Seguridad a nivel de objetos de datos.
- Seguridad a nivel de datos.
- Seguridad en la protección del almacenamiento físico.
Bases de Datos Distribuidas
Una base de datos distribuida es un conjunto de múltiples bases de datos lógicamente relacionadas, distribuidas entre diferentes sitios interconectados por una red. Cada sitio tiene procesamiento autónomo, realizando operaciones locales o distribuidas. Un usuario en cualquier sitio puede acceder a los datos en cualquier parte de la red como si fueran locales.
Control de Transacciones en el SGBD
Los servidores de bases de datos deben tener un control de transacciones óptimo para la velocidad de acceso a los datos. Suelen tener varias configuraciones de red y soportar múltiples protocolos (TCP/IP, IPX/SPX, etc.). El control de transacciones depende del sistema operativo y se configura en el servidor y el cliente.
Función del Servidor Web
Un servidor web implementa el protocolo HTTP (hypertext transfer protocol) para transferir hipertextos, páginas web o HTML. Permite montar una página web sin hosting, probar desarrollos localmente y acceder a archivos remotamente. El inconveniente es que el ordenador debe estar encendido permanentemente.
Beneficios de un Servidor de Aplicaciones
Los servidores de aplicaciones centralizan y simplifican el desarrollo de aplicaciones, mejorando la seguridad y la integridad de datos y códigos.
¿Qué es Middleware?
El Middleware es software de conectividad que permite el funcionamiento de aplicaciones distribuidas en plataformas heterogéneas. Abstrae la complejidad de las redes, sistemas operativos y lenguajes de programación, proporcionando una API para programar aplicaciones distribuidas.
Implementación del Middleware del Lado del Cliente
El middleware del lado cliente suele estar implementado en el sistema operativo, que posee las librerías para la comunicación en red. Los servicios de middleware útiles dependen del problema y las funciones necesarias.
Servicios Básicos del Middleware
- Conectividad Cliente/Servidor: Permite la comunicación entre aplicaciones de red.
- Transparencia de Plataforma: Oculta las diferencias entre plataformas (endianness, codificaciones).
- API: Ofrece una API para que las aplicaciones cliente lo utilicen.
Servicios Avanzados del Middleware
- Usuario del Sistema Único: Algunos middleware ofrecen servicios de autenticación.
- Seguridad: Algunos ofrecen seguridad más allá de nombres de usuario y contraseñas.
- Servicios de Base de Datos: Algunos soportan uniones heterogéneas y replicación.
Tipos de Middleware
- Remote Procedure Call (RPC): Llamadas a procedimientos en máquinas remotas (síncronas o asíncronas).
- Message Oriented Middleware (MOM): Almacena mensajes hasta que el cliente los solicita.
- Object Request Broker (ORB): Permite enviar objetos y solicitar servicios en sistemas orientados a objetos.
Redes Peer-to-Peer (P2P)
En las redes P2P, cada nodo actúa como cliente y servidor, teniendo las responsabilidades de ambos.
Ventajas de la Arquitectura Cliente-Servidor
- Centralización del control: El servidor controla accesos, recursos e integridad de los datos.
- Escalabilidad: Se puede aumentar la capacidad de clientes y servidores por separado.
- Fácil mantenimiento: Se pueden reemplazar o actualizar servidores sin afectar a los clientes.
Funciones del Cliente y del Servidor
Cliente
- Inicia solicitudes (papel activo).
- Recibe respuestas del servidor.
- Puede conectarse a varios servidores.
Servidor
- Espera solicitudes de los clientes (papel pasivo).
- Procesa solicitudes y envía respuestas.
- Acepta conexiones de múltiples clientes.