viernes, 14 de mayo de 2010

Unidad 6 -Diseño y arquitectura de productos de software

Definición.

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.

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.

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 implementable en una arquitectura física, que consiste simplemente en determinar qué computadora tendrá asignada cada tarea.

Breve historia
En los años 1960 ya se acariciaba el concepto de arquitectura de software en los círculos de investigación (por ejemplo, por Edsger Dijkstra). No obstante, toma popularidad en los años 1990 tras reconocerse la denominada crisis del software y como tema de interés de la incipiente disciplina de la ingeniería del software.

Arquitecturas más comunes
Descomposición Modular
Arquitecturas de Dominio Especifico
Diseño Software Arquitectura Multiprocesador
Diseño Software Arquitectura Cliente Servidor
Diseño Software Distribuido
Diseño Software Tiempo Real


6.1 Descomposición Modular

Si un método de diseño proporciona un mecanismo sistemático para descomponer el problemas en subproblemas, reducirá la complejidad de todo el problema, consiguiendo de esta manera una solución efectiva. (esto rompe el paradigma monolítico).
Divide el problema en unidades razonables o módulos a cada modulo se le asigna el mismo nivel de importancia y seguimiento, se vale principalmente de diagramas y estructuras para hacer mas sencillo el desarrollo del proyecto.

6.2 Arquitecturas de Dominio Específico
Dos tipos de modelos de dominio específico:
Modelos genéricos los cuales son abstracciones de un número de sistemas reales y que encapsulan las características principales de estos sistemas.

Modelos de referencia los cuales son más abstractos. Modelos idealizados. Proveen un medio de información acerca de cierta clase de sistemas y permiten comparar diversas arquitecturas.

Los modelos genéricos son usualmente modelos bottom-up; los modelos de referencia son modelos top-down


6.2.1 Diseño Software Arquitectura Multiprocesador

Un sistema multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma concurrente, la razón es porque actualmente la mayoría de las CPU’s sólo pueden ejecutar un proceso cada vez. La única forma de que se ejecuten de forma simultánea varios procesos es tener varias CPU’s (ya sea en una máquina o en varias, en un sistema distribuido.

La ventaja de un sistema multiproceso reside en la operación llamada cambio de contexto. Esta operación consiste en quitar a un proceso de la CPU, ejecutar otro proceso y volver a colocar el primero sin que se entere de nada.

Un ejemplo de este tipo de sistema es un sistema de control de tráfico aéreo. Un conjunto de sensores distribuidos recolecta la información del flujo de tráfico y la procesa localmente antes de enviarla al cuarto de control.

Los sistemas de software compuestos de procesos múltiples no necesariamente son sistemas distribuidos. Si más de un procesador está disponible, entonces se puede implementar la distribución, pero los diseñadores del sistema no siempre consideran lo puntos de distribución durante el proceso de diseño. El enfoque de diseño para este tipo de sistemas es esencialmente el mismo que para los de tiempo real.

Ventajas

Es económica.
El uso de componentes comúnmente disponibles, en grandes cantidades, permite ofrecer mayor rendimiento.

Desventajas

En ocasiones se menciona también la limitante física; existen factores que limitan la velocidad máxima de un procesador, independientemente del factor económico.
Barreras físicas infranqueables, tales como la velocidad de la luz, efectos cuánticos al reducir el tamaño de los elementos de los procesadores, y problemas causados por fenómenos eléctricos a pequeñas escalas.


6.2.2 Diseño Software Arquitectura 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. El funcionamiento básico de este modelo consiste en que un programa cliente realiza peticiones a un programa servidor, y espera hasta que el servidor de respuesta.

Características de un cliente En la arquitectura C/S el remitente de una solicitud es conocido como cliente. Sus características son:
• Es quien inicia solicitudes o peticiones, tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).

• Espera y recibe las respuestas del servidor.

• Por lo general, puede conectase a varios servidores a la vez.

• Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario.

Características de un servidor En los sistemas C/S el receptor de la solicitud enviada por cliente se conoce como servidor. Sus características son:

• Al iniciarse esperan a que lleguen las solicitudes de los clientes, desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).

• Tras la recepción de una solicitud, la procesan y luego envían la respuesta al cliente.

• Por lo general, aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado).

• No es frecuente que interactúen directamente con los usuarios finales.

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

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

6.2.3 Diseño Software Distribuido
Para esta arquitectura no hay distinción entre servidores y clientes, y el sistema puede ser visto como un conjunto de objetos que interaccionan cuya localización es irrelevante. No hay distinción entre un proveedor de servicios y el usuario de estos servicios.

Los componentes en un sistema distribuido pueden implementarse en diferentes lenguajes de programación y pueden ejecutarse en tipos de procesadores completamente diferentes. Los modelos de datos, la representación de la información y los protocolos de comunicación pueden ser todos diferentes. Un sistema distribuido, por lo tanto, requiere software que pueda gestionar estas partes distintas, y asegurar que dichas partes se puedan comunicar e intercambiar datos. El término middleware se usa para hacer referencia a ese software; se ubica en medio de los diferentes componentes distribuidos del sistema.

6.2.4 Diseño Software Tiempo Real

El software de tiempo real esta muy acoplado con el mundo externo, esto es, el software de tiempo real debe responder al ámbito del problema en un tiempo dictado por el ámbito del problema. Debido a que el software de tiempo real debe operar bajo restricciones de rendimiento muy rigurosas, el diseño del software esta conducido frecuentemente, tanto por la arquitectura del hardware como por la del software, por las características del sistema operativo, por los requisitos de la aplicación y tanto por los extras del lenguaje de programación como prospectos de diseño.

La computadora digital se ha convertido en una maquina omnipresente en al vida diaria de todos nosotros. Las computadoras nos permiten ver juegos, así como contar el tiempo, optimizar el gasto de gasolina de nuestras ultimas generaciones de coches y programar a nuestros aparatos.

Todas estas interacciones con las computadoras sean útiles o intrusivas son ejemplos de computación de tiempo real. La computadora esta controlando algo que interactua con la realidad sobre una base de tiempo de hecho, el tiempo es la esencia de la interacción.


ELABORADO POR:
JOSE LUIS LAGOS HERNANDEZ
ESTALIN MARTINEZ ALEJANDRO
EDUARDO PEREZ GONZALEZ