Está en la página 1de 8

Diseño y arquitectura de productos de software

Hola que tal amigos, en esta ocasión les voy a exponer un tema muy interesante comenzamos con lo siguiente: Como es bien sabido los sistemas informáticos están compuestos por ordenadores y sus periféricos. Entre ellos podemos distinguir dos tipos de subsistemas: Sistemas Hardware: son los elementos materiales, los que se pueden tocar. Sistemas Software: los programas que gobiernan el funcionamiento del computador El objetivo de los sistemas informáticos es el tratamiento de la información: almacenamiento, elaboración y presentación de datos. De esta forma se automatizan determinadas acciones.

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

Definición
Se refieren a técnicas de ingeniería para crear un portafolio de sistemas de software similares, a partir de un conjunto compartido de activos de software, usando un medio común de producción” (Krueger, 2006) 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 prescrita” Clements and Northrop, 2002 consiste de una familia de sistemas de software que tienen una funcionalidad común y alguna funcionalidad variable” (Gomma, 2004) Beneficios La entrega de productos de software de una manera más rápida, económica y con una mejor calidad las LPS producen mejoras en: Tiempo de entrega del producto (time to market) Costos de ingeniería Tamaño del portafolio de productos Reducción de las tasas de defectos Calidad de los productos Beneficios tácticos y estratégicos (Krueger, 2006):

*Beneficios tácticos de ingeniería: *Reducción en el tiempo promedio de creación y entrega de nuevos productos *Reducción en el número promedio de defectos por producto *Reducción en el esfuerzo promedio requerido para desarrollar y mantener los productos *Reducción en el costo promedio de producción de los productos *Incremento en el número total de productos que pueden ser efectivamente desplegados y mantenidos Aspectos fundamentales *El paradigma de desarrollo de software LPS requiere que las empresas que lo adopten consideren: *Aspectos conceptuales *Conceptos en los que las LPS se fundamentan *Aspectos tecnológicos *Qué tecnologías son fundamentales para desarrollar y mantener activos y productos de software *Aspectos metodológicos *Cómo desarrollar y mantener los activos y productos de software *Aspectos organizativos *Cómo debe la empresa organizarse internamente *Aspectos gerenciales *Cómo gestionar los proyectos de desarrollo de activos y productos .

A su vez este usa los servicios proporcionados por otros módulos. En la aproximación orientada a objetos. Un módulo es normalmente un componente de un sistema que proporciona uno o más servicios a otros módulos. en la que se descompone un sistema en un conjunto de objetos que se comunican. los módulos son transformaciones funcionales.-DESCOMPOSICION MODULAR Después de que se haya elegido la organización del sistema en su totalidad. Descomposición orientada a flujos de funciones. 6. lo cual permite usar estilos alternativos de descomposición.2 Arquitecturas de dominio específico Al igual que los modelos generales. Descomposición orientada a objetos. Un subsistema es un sistema en si mismo. Sin embargo. es necesario decidir la aproximación a usar para descomponer los subsistemas en módulos. Las dependencias temporales entre los procesos son difíciles de formalizar. Es mejor descomponer los sistemas en módulos. 1. 2. verificar y probar que los sistemas en paralelo. La ventaja de evitar el diseño concurrente de un sistema es que los programas secuenciales son mas fáciles de diseñar. Los subsistemas se componen de módulos y tienen interfaces definidas. 2. En el modelo de flujos de funciones. Si bien las instancias de estos sistemas difieren en los detalles. controlar y verificar. las cuales se usan para comunicarse con otros subsistemas. No hay una distinción clara entre subsistemas y módulos. Hay dos estrategias principales que se pueden usar cuando se descomponga un subsistema en módulos. y entonces decidir durante la implementación si estos necesitan ejecutarse secuencialmente o en paralelo. los módulos pueden implementarse como componentes secuenciales o como procesos. .6. Esto no se suele considerar como un sistema independiente. pero resulta útil pensar sobre ellos de la siguiente forma: 1. Debería evitarse tomar decisiones prematuras acerca de la concurrencia en un sistema.1. cuyo funcionamiento no depende de los servicios proporcionados por otros subsistemas. los módulos son objetos con estado privado y operaciones definidas sobre ese estado. en la que se descompone un sistema en módulos funcionales que aceptan datos y los transforman en datos de salida. Los módulos se componen normalmente de varios componentes del sistema más simples. los componentes de los módulos son normalmente más pequeños que en los subsistemas. también pueden usarse los modelos arquitectónicos que son específicos para un dominio particular de aplicación. En ambos casos. la estructura arquitectónica común puede realizarse cuando se desarrollan nuevos sistemas. implementar. No existe una distinción rígida entre la organización del sistema y la descomposición modular.

Por ejemplo. Modelos de referencia. 6. 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.1 Diseño de Software de Arquitectura Multiprocesador Un sistema multiproceso o multitarea es aquel que permite ejecutar varios procesos de forma concurrente. Constituyen un modo de informar a los diseñadores sobre la estructura general de esta clase de sistemas. 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 esencia. pero otra historia es la . Hacemos aquí la distinción entre ellos debido a que los modelos genéricos pueden reutilizase directamente en un diseño. Las funciones exactas de las capas no son importantes aquí. Los modelos genéricos también pueden servir como modelos de referencia. Los modelos de referencia normalmente se obtienen a partir de un estudio del dominio de la aplicación. en sistemas de tiempo real.Estos modelos arquitectónicos se denominan arquitecturas de dominio específico. No hay. Los diseñadores del modelo OSI tuvieron el objetivo práctico de definir una implementación estándar para que los sistemas acordes con ella pudiesen comunicarse unos con otros. 1. su principal función es una forma de tratar arquitecturas específicas del dominio y de comparar sistemas diferentes en un dominio. Modelos genéricos. El modelo OSI es un modelo de siete capas para interconexión de sistemas abiertos. Esa es la teoría. frente a la cual los sistemas pueden ser evaluados. Esta operación consiste en quitar a un proceso de la CPU. Un modelo de referencia proporciona un vocabulario para realizar comparaciones. las capas intermedias con la transferencia de datos y las capas superiores con la transferencia de información de la aplicación semánticamente significativa como documentos estandarizados. las capas inferiores están con la interconexión física. Las arquitecturas de referencia normalmente no se consideran como un camino para la implementación. Representan una arquitectura ideal que incluye todas las características que los sistemas podrían incorporar. la razón es porque actualmente la mayoría de las CPU’s sólo pueden ejecutar un proceso cada vez. podría haber modelos arquitectónicos genéricos de diferentes tipos de sistemas tales como sistemas de recolección de datos o sistemas de monitorización. El modelo se ilustra en la figura 1.La ventaja de un sistema multiproceso reside en la operación llamada cambio de contexto. Dicho modelo actúa como una base. Son abstracciones obtenidas a partir de varios sistemas reales. desde luego una distinción rígida entre estos tipos de modelos. 2.1. Un conjunto de tareas puede ser completado más rápidamente si hay varias unidades de proceso ejecutándolas en paralelo. En su lugar. Los modelos de referencia se usan normalmente para comunicar conceptos del dominio y comparar o evaluar posibles arquitecturas. Encapsulan las características principales de estos sistemas.2. Son más abstractos y describen una clase más amplia de sistemas. en un sistema distribuido.

lo que requiere unos profundos conocimientos tanto del hardware como del software. esto aumentará el costo 6. la procesan y luego envían la respuesta al cliente. más problemas para el servidor). • Por lo general. • Fácil mantenimiento Desventajas • La congestión del tráfico (a mayor número de clientes. • 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. 6.2. tienen por tanto un papel activo en la comunicación (dispositivo maestro o amo).2. como hacer funcionar el multiproceso. aceptan conexiones desde un gran número de clientes (en ciertos casos el número máximo de peticiones puede estar limitado). | View Show | Create Your Own Características de un servidor En los sistemas C/S el receptor de la solicitud enviada por cliente se conoce como servidor. • No es frecuente que interactúen directamente con los usuarios finales. puede conectase a varios servidores a la vez. Es necesario conocer ampliamente como están interconectados dichos procesadores. Ventajas • Centralización del control: Los accesos.3 Diseño Software Distribuido .2 Diseño Software Arquitectura Cliente Servidor Modelo 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. • Por lo general.práctica. 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. • Espera y recibe las respuestas del servidor. Sus características son: • Es quien inicia solicitudes o peticiones. sobre todo en el lado del servidor. Por supuesto. • Escalabilidad: Se puede aumentar la capacidad de clientes y servidores por separado. desempeñan entonces un papel pasivo en la comunicación (dispositivo esclavo).Características de un cliente En la arquitectura C/S el remitente de una solicitud es conocido como cliente. • Normalmente interactúa directamente con los usuarios finales mediante una interfaz gráfica de usuario. Normalmente se necesita software y hardware específico. • Tras la recepción de una solicitud. para satisfacer el trabajo. El funcionamiento básico de este modelo consiste en que un programa cliente realiza peticiones a un programa servidor. Sus características son: • Al iniciarse esperan a que lleguen las solicitudes de los clientes. 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. y espera hasta que el servidor de respuesta. 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.

Parte fundamental del sistema de gestión es el cuadro de mandos. El cuadro de mandos de explotación desde donde se centraliza y coordina toda la administración. los servicios que ayudan a crearlas y las interfícies que ayudan a usarlas. En este componente se integran las arquitecturas posibles para crearlas: centralizada. Una vez diseñado el sistema. cliente / servidor basada en Internet y aplicaciones Web Internet. etc… Los elementos de la conectividad. supervisión y explotación del sistema. Finalmente. Esta formado por los Mainframe. El almacenamiento de datos. 6. PC’s.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. 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. PDA’s. Estas computadoras . formado por los datos en si y los gestores donde se localizan. cliente / servidor basado en sistema operativo. Son básicamente las redes y las comunicaciones. A lo largo de la exposición pondremos especial cuidado en presentar las características y posibilidades las tres últimas. 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 como la realidad se mueve respecto a las previsiones de los objetivos de negocio en “tiempo real”. transaccional. Elementos de un sistema Distribuido En él se integran. teléfonos.2. es el elemento encargado de proporcionar los recursos físicos y el software de base para ejecutarlo. Los elementos de software donde se incluyen las aplicaciones.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. Son los encargados se proporcionar el transporte para comunicar e integrar los elementos de la plataforma de proceso. Sistemas de seguridad. Batch. La gestión del sistema debe permitir la coexistencia de varios centros de gestión diferentes. La plataforma de proceso.

si el sistema debe examinar un sensor cada 50 milisegundos y realizar una acción (respuesta) dependiendo del valor de ese sensor (estímulo). Los estímulos periódicos en un sistema de tiempo real son generados normalmente por sensores asociados al sistema. 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. Las respuestas son dirigidas a un conjunto de actuadores que controlan algún equipo como una bomba. el sistema debe producir la correspondiente salida. Los estímulos pueden pertenecer a dos clases: Estímulos periódicos. Sin embargo. Los estímulos aperiódicos pueden generarse por actuadores o por sensores. A menudo indican alguna condición excepcional como un fallo en el hardware. que debe ser manejado por el sistema. el sistema de bombeo de insulina es un sistema embebido. Este . Una respuesta a tiempo es un factor importante en todos los sistemas embebidos. por lo tanto. Está embebido en sistemas hardware maquina y debe responder. en tiempo real. Su correcto funcionamiento depende de que el sistema responda a los eventos dentro de un corto intervalo de tiempo. las respuestas asociadas y el tiempo en que dichas respuestas deben producirse. a eventos del entorno del sistema. Por ejemplo. Ocurren de forma regular. definir el comportamiento de un sistema de tiempo real haciendo una lista de los estímulos recibidos por el sistema. Normalmente son provocados utilizando el mecanismo de interrupciones de la computadora. Estímulos aperiódicos. 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. Por ejemplo. no necesita una respuesta rápida. Una forma de ver un sistema de tiempo real es como un sistema de estimulo/respuesta. 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.interactúan directamente con dispositivos hardware. 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. Se puede. Dando un determinado estimulo de entrada. Un ejemplo de dicho estímulo podría ser una interrupción para indicar que una transferencia de E/S se ha completado y que los datos están disponibles en el búfer. Los sistemas de tiempo real embebidos son diferentes de otros tipos de sistemas de software. que influye en el entorno del sistema. Ocurren a intervalos de tiempo predecibles. pero en algunos casos. aunque se necesita comprobar el nivel de glucosa a intervalos periódicos no es necesario responder muy rápidamente a los eventos externos. Estos proporcionan información sobre el estado del entorno del sistema.

Los lenguajes de programación desarrollados para sistemas de tiempo real tienen que incluir facilidades para acceder al hardware del sistema. los procesos computacionales calculan la respuesta requerida para el estimulo recibido por el sistema.los sistemas de tiempo real duros todavía se programan algunas veces en ensamblador para que puedan cumplirse los estrechos plazos de tiempo (deadline). Sin embargo. Los lenguajes a nivel de sistemas como C. Las facilidades que proporciona este sistema operativo son accedidas a través del sistema de soporten tiempo de ejecución (run-time system) para el lenguaje de programación de tiempo real utilizado. La ventaja de utilizar un lenguaje de programación de sistemas de bajo nivel como C es que permite el desarrollo de programas muy eficientes. los procesos de control de actuadores controlan el funcionamiento del actuador. Para cada tipo de sensor. La generalidad de este modelo estímulo-respuesta de un sistema de tiempo real conduce a un modelo arquitectónico genérico abstracto en el que hay tres tipos de procesos. Por lo tanto.2. Por consiguiente. y debería ser posible predecir la duración de operaciones particulares realizadas en estos leguajes. Estas se implementan atreves de llamadas al sistema operativo de tiempo real que no pueden ser comprobados por el compilador.modelo sensor-sistema actuador de un sistema de tiempo real embebido se ilustra en la figura 2. Las arquitecturas de aplicaciones de tiempo real son instancias de la arquitectura conducida por eventos en la cual el estimulo. Este modelo permite recoger rápidamente los datos desde el sensor (antes de que la siguiente entrada esté disponible) y permite que su procesamiento y la respuesta asociada al actuador se realicen más tarde. que permiten generar código eficiente también se utilizan en general. el control sea transferido al manejador adecuado. de forma que los errores de programación son más probables. Provoca la generación de eventos. estos lenguajes no incluyen construcciones para soportar la concurrencia o la gestión de recursos compartidos. Un sistema de tiempo real tiene que responder a estímulos que ocurren en diferentes instantes de tiempo. Con el objetivo de soportar la gestión de estos procesos. hay un proceso de gestión del sensor. tan pronto como se reciba un estímulo. La arquitectura genérica puede instanciarse a varias arquitecturas de aplicaciones diferentes que amplían el conjunto de arquitecturas. Esto no es práctico en programas secuenciales. la plataforma de ejecución para la mayoría de los sistemas de tiempo real incluye un sistema operativo de tiempo real. se tiene que organizar su arquitectura para que. los sistemas de tiempo real se diseñan como un conjunto de procesos concurrentes que cooperan entre sí. Los programas son también más a menudo más difícil de comprender debido a que las características de tiempo real no están explicitas en el programa . directa o indirectamente.