domingo, 23 de noviembre de 2008

UNIDAD 6

Arquitectura de software

David Garlan y Mary Shaw definen que la Arquitectura es un nivel de diseño que hace foco en aspectos "más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema.
Arquitectura
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.
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, pero no solamente los de tipo funcional, también otros objetivos como la mantenibilidad, auditabilidad, flexibilidad e interacción con otros sistemas de información.
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 ente ellos. Toda arquitectura debe ser implementable en una arquitectura física, que consiste simplemente en determinar qué computadora tendrá asignada cada tarea.

DESCOMPOSICIÓN MODULAR
Capacidad de descomposición modular. Si un método de diseño proporciona un mecanismo sistemático para descomponer los problemas en subproblemas, reducirá la complejidad de todo el problema, consiguiendo de esta manera una solución efectiva.

La descomposición modular puede realizarse partiendo de un módulo principal, que será dividido en submódulos, que a su vez podrán ser divididos en otros submódulos, etc., hasta llegar al nivel más bajo en la descomposición; hablamos de descomposición Top-Down o de arriba a abajo o, partiendo de módulos simples, formar con ellos un módulo superior, y uniendo estos módulos formar nuevos módulos, etc.; hablamos entonces de diseño Bottom-up o de abajo a arriba.



Diseño de Software de 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.
Se configuran dos computadoras de gran capacidad interconectados electrónicamente entre si. Esta configuración recibe el nombre de multiproceso y se caracteriza porque permite proceso de datos continuo aún en el caso de que surjan problemas de funcionamiento en alguno de las computadoras.
Ventajas
• Es económica.
• El uso de componentes comúnmente disponibles, en grandes cantidades, permite ofrecer mayor rendimiento, a un precio menor que el de máquinas con procesadores especialmente diseñados
• Adicionalmente, las computadoras paralelas son inherentemente escalables, permitiendo actualizarlas para adecuarlas a una necesidad creciente.
• Las arquitecturas “tradicionales” se actualizan haciendo los procesadores existentes obsoletos por la introducción de nueva tecnología a un costo posiblemente elevado. Por otro lado, una arquitectura paralela se puede actualizar en términos de rendimiento simplemente agregando más procesadores.
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, restringen la capacidad máxima de un sistema uniprocesador, dejando la opción obvia de colocar muchos procesadores para realizar cálculos cooperativamente.
Diseño Software Arquitectura Cliente Servidor
Cliente-servidor
La arquitectura cliente-servidor es una forma de dividir las responsabilidades de un Sistema de Información separando la interfaz de usuario (Nivel de presentación) de la gestión de la información (Nivel de gestión de datos).
Esta arquitectura consiste básicamente en que un programa, el Cliente informático realiza peticiones a otro programa, el servidor, que les da respuesta.
Aunque esta idea se puede aplicar a programas que se ejecutan sobre una sola computadora es más ventajosa en un sistema multiusuario distribuido a través de una red de computadoras.

La arquitectura cliente-servidor sustituye a la arquitectura monolítica en la que no hay distribución, tanto a nivel físico como a nivel lógico.
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









Sistemas Distribuidos
Un sistema distribuido es un sistema de información en el cual las funciones se reparten por áreas de trabajo diferentes que trabajan de forma coordinada para asumir los objetivos que la organización asigna a ese sistema de información.

En él se integran.

􀂁 La plataforma de proceso. Una vez diseñado el sistema, es el elemento encargado de proporcionar los recursos físicos y el software de base para ejecutarlo. Esta formado por los Mainframe, PC’s, PDA’s, teléfonos, etc...

􀂁 Los elementos de la conectividad. Son los encargados se proporcionar el transporte para comunicar e integrar los elementos de la plataforma de proceso.

Son básicamente las redes y las comunicaciones.

􀂁 El almacenamiento de datos, formado por los datos en si y los gestores donde se localizan.

􀂁 Los elementos de software donde se incluyen las aplicaciones, los servicios que ayudan a crearlas y las interfaces que ayudan a usarlas.

En este componente se integran las arquitecturas posibles para crearlas: centralizada, Batch, transaccional, cliente / servidor basado en sistema operativo, cliente /servidor basada en Internet y aplicaciones Web Internet.

􀂁 Sistemas de seguridad.

􀂁 Finalmente, debe realizarse la gestión del sistema como un conjunto integrado y coordinado a través de los recursos de dirección y administración. La gestión del sistema debe permitir la coexistencia de varios centros de gestión diferentes.
Parte fundamental del sistema de gestión es el cuadro de mandos. Hay dos cuadros de mandos diferentes:

􀁽 El cuadro de mandos de seguimiento de los objetivos de negocio pensado para proporcionar información automática a los gestores de cómo la realidad se mueve respecto a las previsiones de los objetivos de negocio en “tiempo real”.

􀁽 El cuadro de mandos de explotación desde donde se centraliza y coordina toda la administración, supervisión y explotación del sistema.
Y todos ellos repartidos por varias plataformas físicas, distribuidas por compañías propias, clientes, proveedores y terceros con dispersión geográfica y desconocimiento mutuo de las plataformas respectivas.




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.

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.
Las computadoras nos permiten ver juegos, así como contar el tiempo, optimizar el gasto de gasolina de nuestras últimas 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.