Arquitectura del Software Estableciendo la estructura global de un sistema de software Puntos relevantes n n n n n n Complementario al diseño Tiene en cuenta el aspecto dinámico Existencia de estilos División en subsistemas Cada subsistema en módulos Distintas visiones con el diseño Paralelos con la arquitectura n n n n Los arquitectos son la interfaz técnica entre el cliente y el contratista que construye el sistema. Un diseño arquitectural malo no puede ser solucionado con una buena construcción. Ídem en software Hay tipos especializados de arquitectos en construcción y en software. Hay escuelas de estilos de arquitectura de construcción y software. Proceso para el diseño arquitectural n Estructura del Sistema – El sistema es descompuesto en muchos subsistemas principales y se identifican las comunicaciones entre ellos. n Modelo de Control – Se establece un modelo de las relaciones de control entre las distintas partes. n Descomposición Modular – Los sistemas identificados son descompuestos en módulos. Subsistemas y Módulos n n Un subsistema es un sistema cuya operación es independiente de los servicios de otros subsistemas. Un módulo es un componente de sistema que provee servicios a otros componentes pero que normalmente no puede ser considerado otro sistema. Modelos de Arquitectura n n n La estructura, el control y la descomposición modular pueden basarse en un modelo particular o estilo Sin embargo, la mayoría de los sistemas son heterogéneos (partes basadas en distintos modelos o composición) El modelo arquitecural usado afecta la performance, la robustez, la distribución y el mantenimiento del sistema. Packing robot control system Vision system Object identification system Arm controller Gripper controller Packaging selection system Packing system Conveyor controller ADL: Architecture Description Language. Componentes Proceso Componente de datos activo Componente computacional/Objeto Componente de datos pasivo Clase Concreta Clase Abstracta Método Objeto ADL: Architecture Description Language. Conectores Flujo de control Uni & Bi direccional Flujo de datos Uni & Bi direccional Flujo de datos y de control Implementación Agregación Herencia Estructura del sistema n n n Descomponer el sistema en subsistemas que interactúan. El diseño arquitecural es normalmente expresado como un diagrama de bloques (la estructura) Modelos más específicos mostrando como los subsistemas comparten datos, son distribuidos e interfacean pueden ser desarrollados. El modelo a repositorio n Los subsistemas deben intercambiar datos. Pueden hacerlo de dos modos: – Datos compartidos en una BD central o repositorio y pueden ser accedidos por todos los subsitemas. – Cada subsistema mantiene su BD propia y pasan datos explícitamente a subsistemas n Cuando mucha cantidad de datos deben ser compartidos, el modelo a repositorio es el más usado. Estilo Centrado en datos cliente cliente Shared Data cliente cliente CASE toolset architecture Design editor Design translator Code generator Project repository Design analyse Program editor Report generator Características del modelo a repositorio n Ventajas – Un modo eficiente para compartir datos – Los subsistemas no se deben preocupar en como los subsitemas son producidos y mantenidos (backup, seguridad,etc.) n Desventajas – Los subsitemas deben concordar en compartir datos – La evolución de los datos es difícil y costosa. – Difícil de distribuir y de fijar políticas grales Arquitectura Client-server n n n n Modelo distribuido que muestra como datos y procesamiento son distribuidos entre un rango de componentes. Conjunto de servidores stand-alone que proveen servicios específicos como impresión, data management, etc.. Conjunto de clientes que usan esos servicios. Una red que permite a los clientes acceder a los servidores. Estilo Cliente-Servidor cliente cliente Servidor cliente cliente Film and picture library Client 1 Client 2 Client 3 Client 4 Wide-bandwidth network Catalogue server Video server Picture server Hypertext server Catalogue Film clip files Digitized photographs Hypertext web Características de Client-Server n Ventajas – La distribución de los datos es directa – Uso efectivo de los recursos de red. Componentes más económicas – Fácil de agregar o actualizara nuevos servidores n Desventajas – No se comparten datos por lo tanto los subsistemas usa distintas organizaciones de datos. El intercambio puede ser ineficiente. – Managemente redundante en cada servidor – No hay un registro central de nombres, servidores y servicios Modelo Máquina Abstracta n n n n Usado para modelar las interfaces de los subsistemas Organiza el sistema en capas (máquinas abstractas) que brindan servicios Soporta el desarrollo incremental por capas. Sólo la capa se modifica Es muy difícil estructurar sistemas de este modo Versión management system Version management Object management Database system Operating system Estilo a Niveles User Interface User Interface User Interface User Interface Modelos de control n n Basados en el flujo de control entre subsistemas. Distinto del modelo por descomposición. Control Centralizado – Un subsistema tiene el control global: inicia y frena cada subsistema. n Control basado en eventos – Cada subsistema responde a eventos generados por otros subsistemas o por SO Control Centralizado: Call-return model Main program Routine 1 Routine 1.1 Routine 2 Routine 1.2 Routine 3 Routine 3.1 Routine 3.2 Estilo Main-Program-and-subroutine Main Sub 1 Sub 2 Sub 3 Centralizado: Real-time system control Sensor processes Actuator processes System contr oller Computation processes User interface Fault handler Event Driven: Selective broadcasting Sub-system 1 Sub-system 2 Sub-system 3 Event and messa ge handler Sub-system 4 Event Driven: Interrupt-driven control Interrupts Interrupt vector Handler 1 Handler 2 Handler 3 Handler 4 Process 1 Process 2 Process 3 Process 4 Descomposición Modular n n Otro nivel estructural donde los subsistemas son descompuestos en módulos Dos modelos de descomposición: – El modelo a objetos donde el sistema se descompone en módulos que interactúan – Un modelo dataflow donde el sistema es descompuesto en módulos funcionales que transforman inputs en outputs (pipelines). n Las decisiones de concurrencia se postergan a la implementación Modelos a objetos n n n Se estructura el sistema en conjunto de objetos débilmente acoplados con interfaces bien definidas. La descomposición OO es encontrar clases, atributos y métodos Cuando es implementado los objeto son creados de estas clases y se usa algún modelo de control para coordinarlos Invoice processing system Customer customer # name address credit period Payment invoice # date amount customer # Receipt Invoice invoice # date amount customer Issue Send reminder Accept payment Send receipt invoice # date amount customer # Invoice processing system Payment Receipt Issue Payment Invoice Accept Payment Modelos Data-Flow n n n n Transformaciones funcionales procesan los inputs en outputs Pipe and filter model (UNIX shell) Variantes: proceso batch que procesa datos. No es adecuado para sistemas interactivos Invoice processing system Read issued invoices Payments Issue receipts Receipts Find payments due Issue payment reminder Identify payments Invoices Reminders Arquitecturas específicas por dominio n Modelos que son específicos a un dominio de aplicación: – Modelos genéricos que son abstracciones de sistemas reales – Modelos de referencia n Los modelos de referencia son en general top-down, los genéricos bottom-up Genérico: Compiler model Symbol table Lexical analysis Syntactic analysis Semantic analysis Code generation Language processing system Lexical analyser Syntax analyser Semantic analyser Prettyprinter Abstract syntax tree Grammar definition Optimizer Editor Symbol table Output definition Code generator Repository Vista funcional de un compilador Source program Tokens Scan source Syntax tree Tokens Build symbol table Symbols Symbol table Analyse Symbols Object code Generate code Error indicator Output errors Error messages Vista OO de un compilador Scan Source program Add Token stream Symbol table Check Syntax tree Get Gr ammar Build Print Generate Object code Abstract code Generate Err or messages OSI reference model 7 Application Application 6 Presentation Presentation 5 Session Session 4 Transport Transport 3 Network Network Network 2 Data link Data link Data link 1 Physical Physical Physical Communica tions medium WWW client-server pair