Sistemas II INF-353 Prof. Leonel Savery ls3612@unphu.edu.do Diseño Arquitectónico Diseño Arquitectónico
Se ocupa de comprender cómo debe organizarse un sistema de
software y de diseñar la estructura general de ese sistema. En el modelo del proceso de desarrollo de software, el diseño arquitectónico es la primera etapa en el proceso de diseño de software. Es el enlace crítico entre el diseño y la ingeniería de requisitos, ya que identifica los principales componentes estructurales de un sistema y las relaciones entre ellos. El resultado del proceso de diseño arquitectónico es un modelo arquitectónico que describe cómo se organiza el sistema como un conjunto de componentes de comunicación. Diseño Arquitectónico
En los procesos ágiles, generalmente se acepta que una
etapa temprana de un proceso de desarrollo ágil debe centrarse en el diseño de una arquitectura general del sistema. El desarrollo incremental de arquitecturas no suele tener éxito. Los componentes de refactorización en respuesta a los cambios suelen ser relativamente fáciles. Sin embargo, la refactorización de la arquitectura del sistema es costosa porque es posible que deba modificar la mayoría de los componentes del sistema para adaptarlos a los cambios arquitectónicos. Diseño Arquitectónico
El diseño arquitectónico se ocupa de comprender cómo
debe organizarse un sistema de software y de diseñar la estructura general de ese sistema. El diseño arquitectónico es el enlace crítico entre el diseño y la ingeniería de requisitos, ya que identifica los principales componentes estructurales de un sistema y las relaciones entre ellos. El resultado del proceso de diseño arquitectónico es un modelo arquitectónico que describe cómo se organiza el sistema como un conjunto de componentes de comunicación. Agilidad y Arquitectura
En general, se acepta que una etapa temprana de los
procesos ágiles es diseñar una arquitectura global de sistemas. Refactorizar la arquitectura del sistema suele ser costoso porque afecta a muchos componentes en el sistema Ejemplo de Arquitectura La arquitectura de un sistema de control de robot de embalaje. Abstracción arquitectónica
La arquitectura en lo pequeño se ocupa de la arquitectura
de programas individuales. En este nivel, nos preocupa la forma en que un programa individual se descompone en componentes. La arquitectura en general se ocupa de la arquitectura de sistemas empresariales complejos que incluyen otros sistemas, programas y componentes de programas. Estos sistemas empresariales se distribuyen en diferentes equipos, que pueden ser propiedad y administrados por diferentes compañías. Ventajas de la Arquitectura Explícita
Comunicación con las partes interesadas
La arquitectura puede ser utilizada como un foco de discusión por parte de los interesados del sistema. Análisis del sistema Significa que es posible el análisis de si el sistema puede cumplir con sus requisitos no funcionales. Reutilización a gran escala La arquitectura puede ser reutilizable en una variedad de sistemas. Se pueden desarrollar arquitecturas de línea de producto. Representaciones Arquitectónicas
Los diagramas de bloques simples e informales que
muestran entidades y relaciones son el método más utilizado para documentar arquitecturas de software. Pero estos han sido criticados porque carecen de semántica, no muestran los tipos de relaciones entre entidades ni las propiedades visibles de las entidades en la arquitectura. Depende del uso de modelos arquitectónicos. Los requisitos para la semántica de los modelos dependen de cómo se utilicen los modelos. Diagramas de Caja y Líneas
Muy abstractos: no muestran la naturaleza de las
relaciones de los componentes ni las propiedades visibles externamente de los subsistemas. Sin embargo, es útil para la comunicación con las partes interesadas y para la planificación de proyectos. Uso de Modelos Arquitectónicos
Como una forma de facilitar la discusión sobre el diseño del sistema.
Una vista arquitectónica de alto nivel de un sistema es útil para la comunicación con las partes interesadas del sistema y la planificación del proyecto porque no está saturado de detalles. Las partes interesadas pueden relacionarse con él y comprender una vista abstracta del sistema. Luego pueden discutir el sistema como un todo sin ser confundidos por los detalles. Como una forma de documentar una arquitectura que ha sido diseñada. El objetivo aquí es producir un modelo de sistema completo que muestre los diferentes componentes de un sistema, sus interfaces y sus conexiones. Decisiones del Diseño Arquitectónico Decisiones del Diseño Arquitectónico
El diseño arquitectónico es un proceso creativo, por lo
que el proceso varía según el tipo de sistema que se esté desarrollando. Sin embargo, una serie de decisiones comunes abarcan todos los procesos de diseño y estas decisiones afectan las características no funcionales del sistema. Decisiones de diseño arquitectónico Arquitectura de Reúso
Los sistemas en el mismo dominio a menudo tienen
arquitecturas similares que reflejan conceptos de dominio. Las líneas de productos de aplicaciones se construyen alrededor de una arquitectura central con variantes que satisfacen los requisitos particulares del cliente. La arquitectura de un sistema puede diseñarse en torno a uno o más patrones arquitectónicos o "estilos". Estos captan la esencia de una arquitectura y pueden ser instanciados de diferentes maneras. Arquitectura y Características del Sistema Rendimiento Localizar operaciones críticas y minimizar comunicaciones. Utilice componentes de grano grande en lugar de grano fino. seguridad Usar una arquitectura en capas con activos críticos en las capas internas. Seguridad Localice las características críticas de seguridad en un pequeño número de subsistemas. Disponibilidad Incluir componentes y mecanismos redundantes para la tolerancia a fallos. Mantenibilidad Use componentes de grano fino, reemplazables. Vistas Arquitectónicas Vistas Arquitectónicas
¿Qué vistas o perspectivas son útiles al diseñar y
documentar la arquitectura de un sistema? ¿Qué notaciones deben usarse para describir los modelos arquitectónicos? Cada modelo arquitectónico solo muestra una vista o perspectiva del sistema. Puede mostrar cómo se descompone un sistema en módulos, cómo interactúan los procesos en tiempo de ejecución o las diferentes formas en que los componentes del sistema se distribuyen en una red. Tanto para el diseño como para la documentación, normalmente debe presentar varias vistas de la arquitectura del software. Vistas Arquitectónicas Modelo de Vista de Arquitectura de Software 4 + 1 Una vista lógica, que muestra las abstracciones clave en el sistema como objetos o clases de objetos. Una vista de proceso, que muestra cómo, en tiempo de ejecución, el sistema se compone de procesos interactivos. Una vista de desarrollo, que muestra cómo el software se descompone para el desarrollo. Una vista física, que muestra el hardware del sistema y cómo los componentes de software se distribuyen entre los procesadores del sistema. Relacionados con casos de uso o escenarios (+1) Representando Vistas Arquitectónicas
Algunas personas argumentan que el Lenguaje de
modelado unificado (UML) es una notación apropiada para describir y documentar arquitecturas de sistemas No estoy de acuerdo con esto, ya que no creo que el UML incluya abstracciones apropiadas para la descripción del sistema de alto nivel. Los lenguajes de descripción arquitectónica (ADL) se han desarrollado pero no se utilizan ampliamente. Patrones Arquitectónicos Patrones Arquitectónicos
Los patrones son un medio para representar, compartir y
reutilizar el conocimiento. Un patrón arquitectónico es una descripción estilizada de buenas prácticas de diseño, que se ha probado y probado en diferentes entornos. Los patrones deben incluir información sobre cuándo están y cuándo no son útiles. Los patrones pueden representarse usando descripciones tabulares y gráficas. El patrón Model-View-Controller (MVC) Nombre MVC Descripción Separa la presentación y la interacción de los datos del sistema. El sistema está estructurado en tres componentes lógicos que interactúan entre sí. El modelo del componente gestiona los datos del sistema y las operaciones asociadas a esos datos. El componente Vista define y administra cómo se presentan los datos al usuario. El componente Controlador gestiona la interacción del usuario (por ejemplo, pulsaciones de teclas, clics del mouse, etc.) y pasa estas interacciones a la Vista y al Modelo. Cuando se utiliza Se utiliza cuando hay varias formas de ver e interactuar con los datos. También se utiliza cuando se desconocen los requisitos futuros para la interacción y la presentación de datos. Ventajas Permite que los datos cambien independientemente de su representación y viceversa. Admite la presentación de los mismos datos de diferentes maneras con los cambios realizados en una representación que se muestra en todos ellos. Desventajas Puede involucrar código adicional y complejidad de código cuando el modelo de datos y las interacciones son simples. La Organización del Model-View- Controller (MVC) Arquitectura de una Aplicación Basada en la WEB con patrón MVC Arquitectura En Capas
Se utiliza para modelar la interconexión de subsistemas.
Organiza el sistema en un conjunto de capas (o máquinas abstractas), cada una de las cuales proporciona un conjunto de servicios. Apoya el desarrollo incremental de subsistemas en diferentes capas. Cuando una interfaz de capa cambia, solo se afecta la capa adyacente. Sin embargo, a menudo es artificial estructurar los sistemas de esta manera. El Patrón Arquitectónico en Capas Nombre Arquitectura en Capas Descripción Organiza el sistema en capas con funcionalidad relacionada asociada con cada capa. Una capa proporciona servicios a la capa superior, por lo que las capas de nivel más bajo representan servicios centrales que probablemente se usarán en todo el sistema. Ejemplo Un modelo en capas de un sistema para compartir documentos de derechos de autor en diferentes bibliotecas. Cuando se Se usa cuando se construyen nuevas instalaciones sobre sistemas existentes; cuando utiliza el desarrollo se distribuye en varios equipos con la responsabilidad de cada equipo de una capa de funcionalidad; cuando exista un requisito de seguridad multinivel. Ventajas Permite la sustitución de capas completas siempre que se mantenga la interfaz. Se pueden proporcionar instalaciones redundantes (por ejemplo, autenticación) en cada capa para aumentar la confiabilidad del sistema. Desventajas En la práctica, proporcionar una separación limpia entre capas suele ser difícil y una capa de alto nivel puede tener que interactuar directamente con las capas de nivel inferior en lugar de hacerlo a través de la capa inmediatamente debajo de ella. El rendimiento puede ser un problema debido a los múltiples niveles de interpretación de una solicitud de servicio a medida que se procesa en cada capa. Una Arquitectura en Capas Genérica La Arquitectura del Sistema iLearn Arquitectura de Repositorio
Los subsistemas deben intercambiar datos. Esto se puede
hacer de dos maneras: Los datos compartidos se guardan en una base de datos central o repositorio y todos los subsistemas pueden acceder a ellos; Cada subsistema mantiene su propia base de datos y pasa los datos explícitamente a otros subsistemas. Cuando se deben compartir grandes cantidades de datos, el modelo de reparto de compartir es el más comúnmente utilizado: este es un mecanismo eficiente para compartir datos. El Patrón de Repositorio Nombre Repositorio Descripción Todos los datos de un sistema se gestionan en un repositorio central al que pueden acceder todos los componentes del sistema. Los componentes no interactúan directamente, solo a través del repositorio. Ejemplo La siguiente imagen es un ejemplo de un IDE donde los componentes utilizan un repositorio de información de diseño del sistema. Cada herramienta de software genera información que luego está disponible para ser utilizada por otras herramientas. Cuando se Debe usar este patrón cuando tenga un sistema en el que se generen grandes volúmenes utiliza de información que deba almacenarse durante mucho tiempo. También puede usarlo en sistemas controlados por datos donde la inclusión de datos en el repositorio desencadena una acción o herramienta. Ventajas Los componentes pueden ser independientes, no necesitan saber de la existencia de otros componentes. Los cambios realizados por un componente pueden propagarse a todos los componentes. Todos los datos se pueden administrar de forma coherente (por ejemplo, las copias de seguridad se realizan al mismo tiempo) ya que se encuentran en un solo lugar. Desventajas El repositorio es un punto único de falla, por lo que los problemas en el repositorio afectan a todo el sistema. Puede haber ineficiencias en la organización de todas las comunicaciones a través del repositorio. Distribuir el repositorio entre varias computadoras puede ser difícil. Una Arquitectura de Repositorio para un IDE Arquitectura Cliente-Servidor
Modelo de sistema distribuido que muestra cómo se
distribuyen los datos y el procesamiento en una variedad de componentes. Puede ser implementado en una sola computadora. Conjunto de servidores independientes que proporcionan servicios específicos como impresión, gestión de datos, etc. Conjunto de clientes que solicitan estos servicios. Red que permite a los clientes acceder a los servidores. El Patrón Cliente-Servidor Nombre Cliente-Servidor Descripción En una arquitectura cliente-servidor, la funcionalidad del sistema se organiza en servicios, con cada servicio entregado desde un servidor separado. Los clientes son usuarios de estos servicios y acceden a los servidores para hacer uso de ellos. Ejemplo La siguiente imagen es un ejemplo de una biblioteca de películas y videos / DVD organizada como un sistema cliente-servidor. Cuando se Se utiliza cuando hay que acceder a los datos de una base de datos compartida utiliza desde una variedad de ubicaciones. Debido a que los servidores se pueden replicar, también se pueden usar cuando la carga en un sistema es variable. Ventajas La principal ventaja de este modelo es que los servidores se pueden distribuir a través de una red. La funcionalidad general (por ejemplo, un servicio de impresión) puede estar disponible para todos los clientes y no es necesario que sea implementada por todos los servicios. Desventajas Cada servicio es un punto único de falla tan susceptible a ataques de denegación de servicio o falla del servidor. El rendimiento puede ser impredecible porque depende de la red y del sistema. Pueden ser problemas de gestión si los servidores son propiedad de diferentes organizaciones. Una Arquitectura Cliente-Servidor para una Biblioteca de Videos Arquitectura de Tuberías y Filtros
Las transformaciones funcionales procesan sus entradas
para producir salidas. Puede ser referido como un modelo de tubería y filtro (como en el shell de UNIX). Las variantes de este enfoque son muy comunes. Cuando las transformaciones son secuenciales, este es un modelo secuencial por lotes que se usa ampliamente en los sistemas de procesamiento de datos. No es realmente adecuado para sistemas interactivos. Patrón de Tuberías y Filtros Nombre Tuberías y Filtros Descripción El procesamiento de los datos en un sistema está organizado de modo que cada componente de procesamiento (filtro) es discreto y lleva a cabo un tipo de transformación de datos. Los datos fluyen (como en una tubería) de un componente a otro para su procesamiento. Ejemplo La siguiente imagen es un ejemplo de un sistema de tubería y filtro utilizado para procesar facturas. Cuando se Comúnmente se usa en aplicaciones de procesamiento de datos (tanto por lotes como utiliza por transacciones) donde las entradas se procesan en etapas separadas para generar salidas relacionadas. Ventajas Fácil de entender y apoya la reutilización de la transformación. El estilo de flujo de trabajo coincide con la estructura de muchos procesos de negocios. La evolución mediante la adición de transformaciones es sencilla. Se puede implementar como un sistema secuencial o concurrente. Desventajas El formato para la transferencia de datos debe acordarse entre las transformaciones comunicantes. Cada transformación debe analizar su entrada y separar su salida a la forma acordada. Esto aumenta la sobrecarga del sistema y puede significar que es imposible reutilizar las transformaciones funcionales que utilizan estructuras de datos incompatibles. Un Ejemplo de Arquitectura Tubería y Filtro Usado en un Sistema de Facturación Aplicación de Arquitecturas Aplicación de Arquitecturas
Los sistemas de aplicación están diseñados para satisfacer
una necesidad organizativa. Como las empresas tienen mucho en común, sus sistemas de aplicación también tienden a tener una arquitectura común que refleja los requisitos de la aplicación. Una arquitectura de aplicación genérica es una arquitectura para un tipo de sistema de software que puede configurarse y adaptarse para crear un sistema que cumpla con los requisitos específicos. Uso de Arquitecturas de Aplicación
Como punto de partida para el diseño arquitectónico.
Como lista de verificación de diseño. Como forma de organizar el trabajo del equipo de desarrollo. Como medio de valoración de componentes para su reutilización. Como vocabulario para hablar de tipos de aplicaciones. Ejemplos de Tipos de Aplicaciones
Aplicaciones de procesamiento de datos
Aplicaciones controladas por datos que procesan datos en lotes sin la intervención explícita del usuario durante el procesamiento. Aplicaciones de procesamiento de transacciones. Aplicaciones centradas en los datos que procesan las solicitudes de los usuarios y actualizan la información en una base de datos del sistema. Sistemas de procesamiento de eventos Aplicaciones donde las acciones del sistema dependen de la interpretación de eventos del entorno del sistema. Sistemas de procesamiento de lenguaje Aplicaciones en las que las intenciones de los usuarios se especifican en un lenguaje formal procesado e interpretado por el sistema. Ejemplos de Tipo de Aplicación
Dos arquitecturas genéricas de aplicaciones muy utilizadas
son los sistemas de procesamiento de transacciones y los sistemas de procesamiento de idiomas. Sistemas de procesamiento de transacciones Sistemas de comercio electrónico; Sistemas de reserva. Sistemas de procesamiento de lenguaje Compiladores; Intérpretes de mando. * Sistemas de Procesamiento de Transacciones Procesar las solicitudes de los usuarios para obtener información de una base de datos o solicitudes para actualizar la base de datos. Desde la perspectiva del usuario, una transacción es: Cualquier secuencia coherente de operaciones que satisfaga un objetivo; Por ejemplo, encuentra los horarios de los vuelos de Londres a París. Los usuarios realizan solicitudes de servicio asíncronas que luego son procesadas por un administrador de transacciones. La Estructura de las Aplicaciones de Procesamiento de Transacciones La Arquitectura de Software de un Sistema ATM Arquitectura de Sistemas de Información
Los sistemas de información tienen una arquitectura
genérica que puede organizarse como una arquitectura en capas. Estos son sistemas basados en transacciones, ya que la interacción con estos sistemas generalmente involucra transacciones de base de datos. Las capas incluyen: La interfaz de usuario Comunicaciones de usuario Recuperación de información Base de datos del sistema Arquitectura de Sistemas de Información por Capas La Arquitectura del Sistema Mentcare Sistemas de Información Basados en la Web Los sistemas de gestión de la información y los recursos ahora suelen ser sistemas basados en la web en los que las interfaces de usuario se implementan mediante un navegador web. Por ejemplo, los sistemas de comercio electrónico son sistemas de administración de recursos basados en Internet que aceptan pedidos electrónicos de bienes o servicios y luego organizan la entrega de estos bienes o servicios al cliente. En un sistema de comercio electrónico, la capa específica de la aplicación incluye una funcionalidad adicional que admite un "carrito de compras" en el que los usuarios pueden colocar una cantidad de artículos en transacciones separadas y luego pagarlos todos juntos en una sola transacción. Implementación del Servidor
Estos sistemas a menudo se implementan como
arquitecturas / servidores cliente de múltiples niveles. El servidor web es responsable de todas las comunicaciones del usuario, con la interfaz de usuario implementada mediante un navegador web; El servidor de aplicaciones es responsable de implementar la lógica específica de la aplicación, así como las solicitudes de recuperación y almacenamiento de información; El servidor de la base de datos mueve la información hacia y desde la base de datos y maneja la administración de transacciones. Sistemas de Procesamiento de Lenguaje
Acepta un lenguaje natural o artificial como entrada y
genere alguna otra representación de ese idioma. Puede incluir un intérprete para actuar sobre las instrucciones en el idioma que se está procesando. Se utiliza en situaciones en las que la forma más fácil de resolver un problema es describir un algoritmo o describir los datos del sistema. Las herramientas Meta-Case procesan descripciones de herramientas, reglas de métodos, etc. y generan herramientas. Arquitectura de Sistema de Procesamiento de Lenguaje Componentes del Compilador
Un analizador léxico, que toma tokens de lenguaje de
entrada y los convierte en una forma interna. Una tabla de símbolos, que contiene información sobre los nombres de las entidades (variables, nombres de clases, nombres de objetos, etc.) utilizados en el texto que se está traduciendo. Un analizador de sintaxis, que comprueba la sintaxis del idioma que se traduce. Un árbol de sintaxis, que es una estructura interna que representa el programa que se está compilando. Componentes del Compilador
Un analizador semántico que utiliza información del árbol
de sintaxis y la tabla de símbolos para verificar la corrección semántica del texto del idioma de entrada. Un generador de código que "recorre" el árbol de sintaxis y genera un código de máquina abstracto. Una Arquitectura de Repositorio para un Sistema de Procesamiento de Lenguaje Un Compilador para la Arquitectura Tubería y Filtro En Resumen Una arquitectura de software es una descripción de cómo se organiza un sistema de software. Las decisiones de diseño arquitectónico incluyen decisiones sobre el tipo de aplicación, la distribución del sistema, los estilos arquitectónicos que se utilizarán. Las arquitecturas se pueden documentar desde varias perspectivas o vistas diferentes, como una vista conceptual, una vista lógica, una vista de proceso y una vista de desarrollo. Los patrones arquitectónicos son un medio para reutilizar el conocimiento sobre arquitecturas de sistemas genéricos. Describen la arquitectura, explican cuándo puede usarse y describen sus ventajas y desventajas. En Resumen Los modelos de arquitecturas de sistemas de aplicaciones nos ayudan a comprender y comparar aplicaciones, validar los diseños de sistemas de aplicaciones y evaluar componentes a gran escala para su reutilización. Los sistemas de procesamiento de transacciones son sistemas interactivos que permiten que la información en una base de datos sea accesible y modificada de forma remota por varios usuarios. Los sistemas de procesamiento de idiomas se utilizan para traducir textos de un idioma a otro y para llevar a cabo las instrucciones especificadas en el idioma de entrada. Incluyen un traductor y una máquina abstracta que ejecuta el lenguaje generado.