Anda di halaman 1dari 8

Arquitectura de software

De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda En los inicios de la informtica, la programacin se consideraba un arte y se desarrollaba como tal, debido a la dificultad que entraaba para la mayora de las personas, pero con el tiempo se han ido descubriendo y desarrollando formas y guas 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 construccin, estas indican la estructura, funcionamiento e interaccin entre las partes del software. En el libro "An introduction to Software Architecture", David Garlan y Mary Shaw definen que la Arquitectura es un nivel de diseo que hace foco en aspectos "ms all de los algoritmos y estructuras de datos de la computacin; el diseo y especificacin de la estructura global del sistema es un nuevo tipo de problema".

Contenido
[ocultar]

1 Arquitectura 2 Breve resea histrica 3 Modelos o vistas 4 Arquitecturas ms comunes 5 Bibliografa 6 Vase tambin 7 Enlaces externos

[editar] Arquitectura

La Arquitectura del Software es el diseo de ms alto nivel de la estructura de un sistema. Una Arquitectura de Software, tambin denominada Arquitectura lgica, consiste en un conjunto de patrones y abstracciones coherentes que proporcionan el marco Una arquitectura de software se selecciona y disea con base en objetivos y restricciones. Los objetivos son aquellos prefijados para el sistema de informacin, pero no solamente los de tipo funcional, tambin otros objetivos como la mantenibilidad, auditabilidad, flexibilidad e interaccin con otros sistemas de informacin. Las restricciones son aquellas limitaciones derivadas de las tecnologas disponibles para implementar sistemas de informacin. Unas arquitecturas son ms recomendables de implementar con ciertas tecnologas mientras que otras tecnologas no son aptas para determinadas arquitecturas. Por ejemplo, no es viable emplear una arquitectura de software de tres capas para implementar sistemas en tiempo real.

La arquitectura de software define, de manera abstracta, los componentes que llevan a cabo alguna tarea de computacin, sus interfaces y la comunicacin entre ellos. Toda arquitectura debe ser implementable en una arquitectura fsica, que consiste simplemente en determinar qu computadora tendr asignada cada tarea.

La arquitectura de software, tiene que ver con el diseo y la implementacin de estructuras de software de alto nivel. Es el resultado de ensamblar un cierto nmero de elementos arquitectnicos de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de desempeo de un sistema, as como requerimientos no funcionales, como la confiabilidad, escalabilidad, portabilidad, y disponibilidad. Kruchten, Philippe

[editar] Breve resea histrica


En los aos 1960 ya se acercaba el concepto de arquitectura de software en los crculos de investigacin (por ejemplo, por Edsger Dijkstra). No obstante, toma popularidad en los aos 1990 tras reconocerse la denominada crisis del software y como tema de inters de la incipiente disciplina de la ingeniera del software.

[editar] Modelos o vistas


Toda arquitectura de software debe describir diversos aspectos del software. Generalmente, cada uno de estos aspectos se describe de una manera ms comprensible si se utilizan distintos modelos o vistas. Es importante destacar que cada uno de ellos constituye una descripcin 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. Cada paradigma de desarrollo exige diferente nmero y tipo de vistas o modelos para describir una arquitectura. No obstante, existen al menos tres vistas absolutamente fundamentales en cualquier arquitectura:

La visin esttica: describe qu componentes tiene la arquitectura. La visin funcional: describe qu hace cada componente. La visin dinmica: describe cmo se comportan los componentes a lo largo del tiempo y como interactan entre s.

Las vistas o modelos de una arquitectura de software pueden expresarse mediante uno o varios lenguajes. El ms 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. Sin embargo, un lenguaje generalista corre el peligro de no ser capaz de describir determinadas restricciones de un sistema de informacin (o expresarlas de manera incomprensible).

[editar] Arquitecturas ms comunes

Generalmente, no es necesario inventar una nueva arquitectura de software para cada sistema de informacin. Lo habitual es adoptar una arquitectura conocida en funcin de sus ventajas e inconvenientes para cada caso en concreto. As, las arquitecturas ms universales son:

Monoltica. Donde el software se estructura en grupos funcionales muy acoplados. Cliente-servidor. Donde el software reparte su carga de cmputo en dos partes independientes pero sin reparto claro de funciones. Arquitectura de tres niveles. Especializacin de la arquitectura cliente-servidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentacin (interfaz de usuario), otra para el clculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relacin con la siguiente.

Otras arquitecturas afines menos conocidas son:


En pipeline. Entre pares. En pizarra. Orientada a servicios. Dirigida por eventos. Mquinas virtuales

[editar] Bibliografa

Booch, Grady. Object-Oriented Analysis and Design. Second Edition. Benjamin/Cummings, Redwood: 1994. Jacobson, Ivar, Grady Booch, and James Rumbaugh. El Proceso Unificado de Desarrollo de Software. Mxico: Addison-Wesley, 1999. Kruchten, Philippe. "Architectural Blueprints--The 4+1 View Model of Software Architecture". IEEE Software, Institute of Electrical and Electronics Engineers. November 1995, pp. 42-50. Larman, Craig. UML y Patrones, Introduccin al anlisis y diseo orientado a objetos. Mxico: Prentice Hall, 1999. Martin, Robert C. "Design Principles and Design Patterns". Objectmentor Muller, Pierre-Alain. Modlisation Object avec UML. Paris: Eyrolles, 1997. Wilson, Scott F. Analyzing Requirements and Defining Solution Architectures. Redmond: Microsoft Press, 1999. Fernndez Aramayo, David Ricardo. Arquitectura de Software. Universidad Tecmilenio, ITESM Zapata Sanchez, Andres felipe. Arquitectura de Software www.fi.uba.ar Meylin Siguas Villavicencio www.unpmsn.org

Cliente-servidor
De Wikipedia, la enciclopedia libre Saltar a: navegacin, bsqueda

La arquitectura cliente-servidor es un modelo de aplicacin distribuida en el que las tareas se reparten entre los proveedores de recursos o servicios, llamados servidores, y los demandantes, llamados clientes. Un cliente realiza peticiones a otro programa, el servidor, que le da respuesta. Esta idea tambin se puede aplicar a programas que se ejecutan sobre una sola computadora, aunque es ms ventajosa en un sistema operativo multiusuario distribuido a travs de una red de computadoras. En esta arquitectura la capacidad de proceso est repartida entre los clientes y los servidores, aunque son ms importantes las ventajas de tipo organizativo debidas a la centralizacin de la gestin de la informacin y la separacin de responsabilidades, lo que facilita y clarifica el diseo del sistema. La separacin entre cliente y servidor es una separacin de tipo lgico, donde el servidor no se ejecuta necesariamente sobre una sola mquina ni es necesariamente un slo programa. Los tipos especficos de servidores incluyen los servidores web, los servidores de archivo, los servidores del correo, etc. Mientras que sus propsitos varan de unos servicios a otros, la arquitectura bsica seguir siendo la misma. Una disposicin muy comn son los sistemas multicapa en los que el servidor se descompone en diferentes programas que pueden ser ejecutados por diferentes computadoras aumentando as el grado de distribucin del sistema. La arquitectura cliente-servidor sustituye a la arquitectura monoltica en la que no hay distribucin, tanto a nivel fsico como a nivel lgico. La red cliente-servidor es aquella red de comunicaciones en la que todos los clientes estn conectados a un servidor, en el que se centralizan los diversos recursos y aplicaciones con que se cuenta; y que los pone a disposicin de los clientes cada vez que estos son solicitados. Esto significa que todas las gestiones que se realizan se concentran en el servidor, de manera que en l se disponen los requerimientos provenientes de los clientes que tienen prioridad, los archivos que son de uso pblico y los que son de uso restringido, los archivos que son de slo lectura y los que, por el contrario, pueden ser modificados, etc. Este tipo de red puede utilizarse conjuntamente en caso de que se este utilizando en una red mixta.

Contenido
[ocultar]

1 Caractersticas 2 Comparacin de la arquitectura C/S con otras arquitecturas de red o 2.1 Comparacin con las redes de pares o 2.2 Comparacin con la arquitectura Cliente-Cola-Cliente 3 Arquitecturas multi-capas 4 Ventajas 5 Desventajas 6 Direccin

7 Ejemplos 8 Cooperacin cliente-servidor o 8.1 Multiple Server 8.1.1 Cooperacin de procesos paralelos 8.1.2 Cooperacin de base de datos 9 Vase tambin

[editar] Caractersticas
En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus caractersticas son:

Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicacin (dispositivo maestro o amo). Espera y recibe las respuestas del servidor. Por lo general, puede conectarse a varios servidores a la vez. Normalmente interacta directamente con los usuarios finales mediante una interfaz grfica de usuario. Al contratar un servicio de redes, se debe tener en cuenta la velocidad de conexin que le otorga al cliente y el tipo de cable que utiliza , por ejemplo : cable de cobre ronda entre 1 ms y 50 ms.

Al receptor de la solicitud enviada por el cliente se conoce como servidor. Sus caractersticas son:

Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempean entonces un papel pasivo en la comunicacin (dispositivo esclavo). Tras la recepcin de una solicitud, la procesan y luego envan la respuesta al cliente. Por lo general, aceptan conexiones desde un gran nmero de clientes (en ciertos casos el nmero mximo de peticiones puede estar limitado). No es frecuente que interacten directamente con los usuarios finales.

[editar] Comparacin de la arquitectura C/S con otras arquitecturas de red


[editar] Comparacin con las redes de pares

Las redes de pares, tambin conocidas como redes par-a-par o peer-to-peer (abreviado con las siglas P2PM) son otro tipo de arquitectura de red.
[editar] Comparacin con la arquitectura Cliente-Cola-Cliente

Si bien la clsica arquitectura C/S requiere uno de los puntos terminales de comunicacin para actuar como un servidor, que puede ser algo ms difcil de aplicar, la arquitectura Cliente-Cola-Cliente habilita a todos los nodos para actuar como clientes simples, mientras que el servidor acta como una cola que va capturando las peticiones de los clientes (un proceso que debe pasar sus peticiones a otro, lo hace a travs de una cola, por ejemplo, una consulta a una base de datos, entonces, el segundo proceso

conecta con la base de datos, elabora la peticin, la pasa a la base de datos, etc.). Esta arquitectura permite simplificar en gran medida la implementacin de software. La arquitectura P2P originalmente se bas en el concepto "Cliente-Cola-Cliente".

[editar] Arquitecturas multi-capas


La arquitectura cliente/servidor genrica tiene dos tipos de nodos en la red: clientes y servidores. Consecuentemente, estas arquitecturas genricas se refieren a veces como arquitecturas de dos niveles o dos capas. Algunas redes disponen de tres tipos de nodos:

Clientes que interactan con los usuarios finales. Servidores de aplicacin que procesan los datos para los clientes. Servidores de la base de datos que almacenan los datos para los servidores de aplicacin.

Esta configuracin se llama una arquitectura de tres-capas.

Ventajas de las arquitecturas n-capas: La ventaja fundamental de una arquitectura n-capas comparado con una arquitectura de dos niveles (o una tres-capas con una de dos niveles) es que separa hacia fuera el proceso, eso ocurre para mejorar el balance la carga en los diversos servidores; es ms escalable.

Desventajas de las arquitecturas de la n-capas:


Pone ms carga en la red, debido a una mayor cantidad de trfico de la red. Es mucho ms difcil programar y probar el software que en arquitectura de dos niveles porque tienen que comunicarse ms dispositivos para terminar la transaccin de un usuario.

[editar] Ventajas

Centralizacin 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 daar el sistema. Esta centralizacin tambin facilita la tarea de poner al da datos u otros recursos (mejor que en las redes P2P).. Escalabilidad: se puede aumentar la capacidad de clientes y servidores por separado. Cualquier elemento puede ser aumentado (o mejorado) en cualquier momento, o se pueden aadir nuevos nodos a la red (clientes y/o servidores). Fcil mantenimiento: al estar distribuidas las funciones y responsabilidades entre varios ordenadores independientes, es posible reemplazar, reparar, actualizar, o incluso trasladar un servidor, mientras que sus clientes no se vern afectados por ese cambio (o se afectarn mnimamente). Esta independencia de los cambios tambin se conoce como encapsulacin.

Existen tecnologas, suficientemente desarrolladas, diseadas para el paradigma de C/S que aseguran la seguridad en las transacciones, la amigabilidad de la interfaz, y la facilidad de empleo.

[editar] Desventajas

La congestin del trfico ha sido siempre un problema en el paradigma de C/S. Cuando una gran cantidad de clientes envan peticiones simultaneas al mismo servidor, puede ser que cause muchos problemas para ste (a mayor nmero de clientes, ms problemas para el servidor). Al contrario, en las redes P2P como cada nodo en la red hace tambin de servidor, cuanto ms nodos hay, mejor es el ancho de banda que se tiene. El paradigma de C/S clsico no tiene la robustez de una red P2P. Cuando un servidor est cado, las peticiones de los clientes no pueden ser satisfechas. En la mayor parte de redes P2P, los recursos estn generalmente distribuidos en varios nodos de la red. Aunque algunos salgan o abandonen la descarga; otros pueden todava acabar de descargar consiguiendo datos del resto de los nodos en la red. 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 especfico, sobre todo en el lado del servidor, para satisfacer el trabajo. Por supuesto, esto aumentar el coste. El cliente no dispone de los recursos que puedan existir en el servidor. Por ejemplo, si la aplicacin es una Web, no podemos escribir en el disco duro del cliente o imprimir directamente sobre las impresoras sin sacar antes la ventana previa de impresin de los navegadores.

[editar] Direccin
Los mtodos de direccin en ambientes del servidor de cliente se pueden describir como sigue:

Direccin del proceso de la mquina: la direccin se divide como proceso@mquina. Por lo tanto 56@453 indicara el proceso 56 en la computadora 453. Servidor de nombres: los servidores de nombres tienen un ndice de todos los nombres y direcciones de servidores en el dominio relevante. Localizacin de Paquetes: Los mensajes de difusin se envan a todas las computadoras en el sistema distribuido para determinar la direccin de la computadora de la destinacin. Comerciante: Un comerciante es un sistema que pone en un ndice todos los servicios disponibles en un sistema distribuido. Una computadora que requiere un servicio particular comprobar con el servicio que negocia para saber si existe la direccin de una computadora que proporciona tal servicio.

[editar] Ejemplos
La mayora de los servicios de Internet son tipo de cliente-servidor. La accin de visitar un sitio web requiere una arquitectura cliente-servidor, ya que el servidor web sirve las pginas web al navegador (al cliente). Al leer este artculo en Wikipedia , la computadora y el navegador web del usuario seran considerados un cliente; y las computadoras, las bases de datos, y los usos que componen Wikipedia seran

considerados el servidor. Cuando el navegador web del usuario solicita un artculo particular de Wikipedia, el servidor de Wikipedia recopila toda la informacin a mostrar en la base de datos de Wikipedia, la articula en una pgina web, y la enva de nuevo al navegador web del cliente. Otro ejemplo podra ser el funcionamiento de un juego online. Si existen dos servidores de juego, cuando un usuario lo descarga y lo instala en su computadora pasa a ser un cliente. Si tres personas juegan en un solo computador existiran dos servidores, un cliente y tres usuarios. Si cada usuario instala el juego en su propio ordenador existiran dos servidores, tres clientes y tres usuarios.

[editar] Cooperacin cliente-servidor


[editar] Multiple Server

Para que un proceso se realice de la mejor manera, es preferible utilizar terminales distintos realizando la misma tarea, a centralizar los recursos y que con ms hardware/software se realice la misma tarea. Con la ejecucin de mltiples servidores el procesamiento es ms rpido, el tiempo de respuesta es descentralizado y se incrementa la confiabilidad.
[editar] Cooperacin de procesos paralelos

El mismo proceso se ejecuta simultneamente (sistemas redundantes).


[editar] Cooperacin de base de datos

Si se requiere de cierta informacin ya existente, por qu crearla de nuevo, simplemente interacta y aprovecha la informacin ya creada.

Anda mungkin juga menyukai