Es un conjunto de sistemas de software que comparten un conjunto común y gestionado de aspectos que satisfacen las necesidades específicas de un segmento de mercado o misión y que son desarrollados a partir de un conjunto común de activos fundamentales [de software] de una manera preescrita”
La idea básica:
*Ensamblaje de partes de software previamente elaboradas
*Inspirada en los procesos de producción de sistemas físicos
*Producción de aviones, vehículos, computadores, aparatos electrónicos, etc.
*Fundamentada en la Reutilización de Software
*Asume la existencia de una industria de partes
DESCOMPOSICIÓN MODULAR
El diseño modular propone dividir el sistema en partes diferenciadas y definir sus interfaces. sus
ventajas: claridad, reducción de costos y reutilizacion
Los pasos a seguir son:
1. Identificar los módulos
2. Describir cada módulo
3. Describir las relaciones entre módulos
2. Describir cada módulo
3. Describir las relaciones entre módulos
Una descomposicion modular debe poseer ciertas cualidades mínimas para que se pueda considerar suficiente válidad.
1. Independencia funcional
2. Acoplamiento
3. Cohesión
4. Comprensibilidad
5. Adaptabilidad
2. Acoplamiento
3. Cohesión
4. Comprensibilidad
5. Adaptabilidad
Para medir la independencia funcional hay dos criterios:acoplamiento y cohesión
ARQUITECTURAS DE DOMINIO ESPECÍFICO
Es necesario comprender las ventajas y desventajas delas diferentes arquitecturas de sistemas distribuidos. Aquí se tratan dos tipos genéricos de arquitecturas de sistemas distribuidos: Arquitectura cliente-servidor.
En este caso el sistema puede ser visto como un conjunto de servicios que se proporcionan a los clientes que hacen uso de dichos servicios. Los servidores y los clientes se tratan de forma diferente en estos sistemas.
Arquitecturas de objetos distribuidos. 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.
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.
El multiproceso no es algo difícil de entender: más procesadores significa más potencia computacional.
Un conjunto de tareas puede ser completado más rápidamente si hay varias unidades de proceso ejecutándolas en paralelo. Esa es la teoría, pero otra historia es la práctica, como hacer funcionar el multiproceso, lo que requiere unos profundos conocimientos tanto del hardware como del software.
Es necesario conocer ampliamente como están interconectados dichos procesadores, y la forma en que el código que se ejecuta en los mismos ha sido escrito para escribir aplicaciones y software que aproveche al máximo sus prestaciones.
Para lograrlo, es necesario modificar varias facetas del sistema operativo, la organización del código de las propias aplicaciones, así como los lenguajes de programación.
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 (como por ejemplo las máquinas de procesadores vectoriales y de propósito específico).
• 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.

