temas de la unidad 4 arquitectura de computadorasDescripción completa
Conceptos de Arquitectura de computador
Descripción completa
kkkDescripción completa
jkDescripción completa
Unidad 6 DISEÑO Y ARQUITECTURA DE PRODUCTOS DE SOFTWARE
6.1 Descomposición Modular
El principal objetivo de la descomposición modular es descomponer los problemas complejos en problemas más sencillos para realizar de manera más eficiente el desarrollo del sistema. La descomposición modular se enfoca en la reutilización de código, código, además debido a esta descomposición cada módulo es desarrollado con un fin específico, esta característica ayuda a que futuros programadores comprendan fácilmente la función de cada módulo. Ejemplo de descomposición modular:
Características de Módulos: O
Tamaño pequeño
O
Independencia modular
O
Abstracción
O
Encapsulamiento
Objetivos de la Descomposición Modular: O
Descomponer los problemas complejos en problemas más sencillos
O
Reutilizar el código
O
Facilitar la lectura de los programas
6.2 Arquitectura de dominio especifico
Existen diversas arquitecturas de dominio especifico para el desarrollo de software. A continuación mencionaremos algunas de ellas: Diseño de software de arquitectura multiprocesador
diseño de software Cliente/Servidor
diseño de software distribuido
diseño de software distribuido de tiempo real
6.2.1 Diseño de software de arquitectura multiprocesador
Un sistema multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma concurrente. La única forma de que se ejecuten de forma simultanea varios procesadores es tener varias CPU’s(ya sea en una maquina en o en varias, en un sistema distribuido) El multiproceso no es algo difícil de entender, mas procesadores significa mas p otencia computacional. Un conjunto de tareas puede ser completado mas rápidamente si hay varias unidades de proceso ejecutándolas en paralelo. Para el desarrollo de estos procesos se ocupan modelos de programación concurrente y paralela: Objetivos de la programación paralela:
Reducir el tiempo de computo Reducir la complejidad del algoritmo Aprovechar al máximo la capacidad de las computadoras multiproceso
Tipos de Programación:
Multihilo Paso de mensaje
Multihilo: este tipo de programación le permite a una aplicación realizar varias tareas
concurrentemente. Los distintos hilos que se ejecutan comparten una serie se recursos
tales como el espacio de emesaje. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente. Pase de mensaje: MPI ("Message Passing Interface") es un estándar que define la sintaxis y
la semántica de las funciones usada en programas que exploten la existencia de múltiples procesadores. Gráficamente se puede ver asi:
Ejecución de los múltiples procesos
Envió de respuesta
Recepción de respuestas
Fin de la comunicación
Estado inicial
Conexión con los correspondientes nodos
Envió del proceso
Envio del proceso en multiples procesos
6.2.2 Diseño de software cliente servidor
La arquitectura cliente-Servidor.- consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta
Componentes del software Cliente-Servidor
Ejemplo Cliente-Servidor
6.2.3 Diseño de software Distribuido
Sistemas cuyos componentes hardware y software, que están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor . Se ha popularizado tanto en la actualidad ya que tiene como ámbito de estudio las redes como por ejemplo: Internet, redes de teléfonos móviles, redes corporativas, redes de empresas, etc. Características:
Concurrencia.- Esta característica de los sistemas distribuidos permite que los
recursos disponibles en la red puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la red. Carencia de reloj global.- Las coordinaciones para la transferencia de mensajes entre los diferentes componentes para la realización de una tarea, no tienen una temporización general, esta más bien distribuida a los componentes. Fallos independientes de los componentes.- Cada componente del sistema puede fallar independientemente, con lo cual los demás pueden continuar ejecutando sus acciones. Esto permite el logro de las tareas con mayor efectividad, pues el sist ema en su conjunto continua trabajando
6.2.4 Diseño de software de tiempo real
Las computadoras se utilizan para controlar una amplia variedad de sistemas desde maquinas domesticas sencillas hasta plantas enteras de fabricación. Estas computadoras interactúan directamente con dispositivos hardware. El software de dichos sistemas es software de tiempo real embebido que debe reaccionar a eventos generados por el hardware y emitir señales de control como respuesta a estos eventos. Está embebido en sistemas hardware maquina y debe responder, en tiempo real, a eventos del entorno del sistema. Los sistemas de tiempo real embebidos son diferentes de otros tipos de sistemas de software. Su correcto funcionamiento depende de que el sistema responda a los eventos dentro de un corto intervalo de tiempo. Se puede definir un sistema de tiempo real como sigue: Un sistema de tiempo real es un sistema software cuyo correcto funcionamiento depende de los resultados producidos por el mismo y del instante del tiempo en el que se producen estos resultados.
Un sistema de tiempo real blando (soft) es un sistema cuyo funcionamiento se degrada si los resultados no se producen de acuerdo con los requerimientos temporales especificados. Un sistema de tiempo real duro (hard) es un sistema cuyo funcionamiento es incorrecto si los resultados no se producen de acuerdo con la especificación temporal.
Una forma de ver un sistema de tiempo real es como un sistema de estimulo/respuesta. Dando un determinado estimulo de entrada, el sistema debe producir la correspondiente salida. Se puede, por lo tanto, definir el comportamiento de un sistema de tiempo real haciendo una lista de los estímulos recibidos por el sistema, las respuestas asociadas y el tiempo en que dichas respuestas deben producirse. Los estímulos pueden pertenecer a dos clases:
Estímulos periódicos. Ocurren a intervalos de tiempo predecibles. Por ejemplo, si el sistema debe examinar un sensor cada 50 milisegundos y realizar una acción (respuesta) dependiendo del valor de ese sensor (estímulo). Estímulos aperiódicos. Ocurren de forma regular
Los estímulos periódicos en un sistema de tiempo real son generados normalmente por sensores asociados al sistema. Estos proporcionan información sobre el estado del entorno del sistema.