2. HISTORIA
En los inicios de la informática, la programación se
consideraba un arte y se desarrollaba como tal,
debido a la dificultad que resultaba para la mayoría
de las personas, pero con el tiempo se han ido
descubriendo y desarrollando formas y guías
generales, con base a las cuales se puedan
resolver los problemas. A estas, se les ha
denominado Arquitectura de Software, porque, a
semejanza de los planos de un edificio o
construcción, estas indican la estructura,
funcionamiento e interacción entre las partes del
software.
3. ARQUITECTURA
La Arquitectura del Software es el diseño de más
alto nivel de la estructura de un sistema.
Una Arquitectura de Software, también
denominada Arquitectura lógica, consiste en un
conjunto de patrones y abstracciones
coherentes que proporcionan el marco de
referencia necesario para guiar la construcción
del software para un sistema de información.
4. La arquitectura de software 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.
Una arquitectura de software se selecciona y diseña con
base en objetivos y restricciones. Los objetivos son
aquellos prefijados para el sistema de información, no
solamente los de tipo funcional, también otros como la
mantenibilidad, auditabilidad, flexibilidad e interacción con
otros sistemas de información. Las restricciones son
aquellas limitaciones derivadas de las tecnologías
disponibles para implementar sistemas de información.
Unas arquitecturas son más recomendables de
implementar con ciertas tecnologías mientras que otras
tecnologías no son aptas para determinadas arquitecturas.
5. La arquitectura de software define, de manera abstracta,
los componentes que llevan a cabo alguna tarea de
computación, sus interfaces y la comunicación entre
ellos. Toda arquitectura debe ser implementada en una
arquitectura física, que consiste simplemente en
determinar qué computadora tendrá asignada cada
tarea.
La arquitectura de software, tiene que ver con el diseño y
la implementación de estructuras de software de alto
nivel. Es el resultado de ensamblar un cierto número de
elementos arquitectónicos de forma adecuada para
satisfacer la mayor funcionalidad y requerimientos de
desempeño de un sistema.
6. CLIENTE/SERVIDOR
Este modelo es un prototipo de sistemas
distribuidos que muestra como los datos y el
procesamiento se distribuyen a lo largo de
varios procesadores. Es una forma de dividir
las responsabilidades de un sistema de
información separando la interfaz del usuario
de la gestión de la información.
7. CLIENTE
El cliente es el proceso que permite al usuario
formular los requerimientos y pasarlos al servidor.
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.
8. Las funciones que lleva a cabo el proceso
cliente se resumen en los siguientes puntos:
Administrar la interfaz de usuario.
Interactuar con el usuario.
Procesar la lógica de la aplicación y hacer
validaciones locales.
Generar requerimientos de bases de datos.
Recibir resultados del servidor.
Formatear resultados.
9. 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 datos.
10. Las funciones que lleva a cabo el proceso
servidor se resumen en los siguientes puntos:
Aceptar los requerimientos de bases de datos
que hacen los clientes.
Procesar requerimientos de bases de datos.
Formatear datos para transmitirlos a los
clientes.
Procesar la lógica de la aplicación y realizar
validaciones a nivel de bases de datos.
11. FUNCIONAMIENTO BÁSICO
El funcionamiento de este modelo consiste en
que un programa cliente realiza peticiones a un
programa servidor, y espera hasta que el
servidor de respuesta.
12. MODELOS O VISTAS
Toda arquitectura de software debe describir
diversos aspectos del software. Generalmente,
cada uno de estos aspectos se describe de una
manera más comprensible si se utilizan distintos
modelos o vistas. Es importante destacar que
cada uno de ellos constituye una descripción
parcial de una misma arquitectura y es deseable
que exista cierto solapamiento entre ellos. Esto
es así porque todas las vistas deben ser
coherentes entre sí, evidente dado que describen
la misma cosa.
13. Existen al menos tres vistas absolutamente
fundamentales en cualquier arquitectura:
La visión estática: describe qué componentes
tiene la arquitectura.
La visión funcional: describe qué hace cada
componente.
La visión dinámica: describe cómo se
comportan los componentes a lo largo del
tiempo y cómo interactúan entre sí.
14. Las vistas o modelos de una arquitectura de
software pueden expresarse mediante uno o
varios lenguajes. El más obvio es el lenguaje
natural, pero existen otros lenguajes tales como
los diagramas de estado, los diagramas de flujo
de datos, etc. Estos lenguajes son apropiados
únicamente para un modelo o vista.
Afortunadamente existe cierto consenso en
adoptar UML (Unified Modeling Language,
lenguaje unificado de modelado) como lenguaje
único para todos los modelos o vistas.
15. CARACTERISTICAS DE LA
ARQUITECTURA
CLIENTE/SERVIDOR
Las características básicas de una arquitectura
cliente/servidor son:
Combinación de un cliente que interactúa con los
recursos compartidos. El proceso del cliente
proporciona la interfaz entre el usuario y el resto
del sistema. El proceso del servidor actúa como
un motor de software que maneja recursos
compartidos tales como bases de datos,
impresoras, módems, etc.
16. Las tareas del cliente y del servidor tienen
diferentes requerimientos en cuanto a recursos
de cómputo, velocidad del procesador, memoria,
velocidad y capacidades del disco así como
entrada y salida de dispositivos.
Se establece una relación entre procesos
distintos, los cuales pueden ser ejecutados en la
misma máquina o en máquinas diferentes
distribuidas a lo largo de la red.
17. Existe una clara distinción de funciones basada
en el concepto de «servicio», que se establece
entre clientes y servidores.
La relación establecida puede ser de muchos a
uno, en la que un servidor puede dar servicio a
muchos clientes, regulando su acceso a recursos
compartidos.
Los clientes corresponden a procesos activos en
cuanto a que son éstos lo que hacen peticiones
de servicios a los servidores. Estos últimos
tienen un carácter pasivo ya que esperan las
peticiones de los clientes.
18. No existe otra relación entre clientes y servidores que
no sea la que se establece a través del intercambio
de mensajes entre ambos. El mensaje es el
mecanismo para la petición y entrega de solicitudes
de servicio.
El ambiente es heterogéneo. La plataforma de
hardware y el sistema operativo del cliente y del
servidor no son siempre la misma. Precisamente una
de las principales ventajas de esta arquitectura es la
posibilidad de conectar clientes y servidores
independientemente de sus plataformas.
19. VENTAJAS
Centralización del control: Los accesos, recursos y la
integridad de los datos son controlados por el
servidor de forma que un programa cliente
defectuoso o no autorizado no pueda dañar el
sistema.
Escalabilidad: Se puede aumentar la capacidad de
clientes y servidores por separado.
Fácil mantenimiento
20. DESVENTAJAS
La congestión del tráfico (a mayor número de
clientes, más problemas para el servidor).
El software y el hardware de un servidor son
generalmente muy determinantes. Un hardware
regular de un ordenador personal puede no poder
servir a cierta cantidad de clientes. Normalmente se
necesita software y hardware específico, sobre todo
en el lado del servidor, para satisfacer el trabajo. Por
supuesto, esto aumentará el costo.