Arquitectura de software (revisión final)

Arquitectura de software

Introducción a la arquitectura de software

La crisis de software se refiere a una serie de problemas graves encontrados durante el desarrollo y mantenimiento de software informático.

Síntomas de crisis de software :

imagen-20230217101528731

Causas de la crisis del software :

imagen-20230217101630026

Elementos básicos de la ingeniería de software : procesos, métodos y herramientas.

Proceso de ingeniería de software (cinco actividades):imagen-20230217102300716

Métodos de ingeniería de software (cuatro métodos):

imagen-20230217102417928

Composición de la arquitectura de software (modelo central) : componentes + conectores + restricciones

Estilo arquitectónico : patrón convencional utilizado para describir la organización de sistemas en un dominio de aplicación específico, que refleja las propiedades estructurales y semánticas comunes a muchos sistemas en el dominio.

Marco de software : Un marco de software es el esqueleto de un sistema de aplicación personalizado por los desarrolladores. Es un diseño reutilizable de la totalidad o parte del sistema. Consiste en un conjunto de componentes abstractos y la interacción entre instancias de componentes.

Patrón de diseño : describe algunas soluciones a problemas comunes en el proceso de diseño de sistemas de software. Por lo general, es una práctica ampliamente reconocida y un conocimiento resumido de una gran cantidad de prácticas exitosas.

La relación entre marco y arquitectura :

  • La arquitectura se presenta como una especificación de diseño, mientras que el marco es un software "a medio terminar".
  • El propósito de la arquitectura es guiar el desarrollo de sistemas de software, mientras que el propósito del marco es diseñar la reutilización.

La relación entre marcos y patrones de diseño :

  • El framework brinda la arquitectura de toda la aplicación; mientras que el patrón de diseño brinda
    la solución a un solo problema de diseño y puede aplicarse en diferentes aplicaciones o frameworks.
  • Por ejemplo: se puede desarrollar un juego en línea basado en el marco Pomelo de NetEase, que es un marco de servidor de juegos distribuido de alto rendimiento basado en
    Node.js; al implementar una determinada función de animación,
    el modo observador se puede usar para implementar actualizaciones de notificaciones automáticas. .
  • El objetivo del patrón de diseño es mejorar la estructura del código y mejorar la calidad estructural del programa; el marco enfatiza la
    reutilización del diseño y la escalabilidad del sistema para acortar el ciclo de desarrollo y mejorar la calidad del desarrollo.

Componente : Es una unidad estructural de software reutilizable con una función determinada, que representa los principales elementos informáticos y de almacenamiento de datos del sistema.

imagen-20230217103944052

Adquisición de componentes :

imagen-20230217110015581

Tres escuelas de componentes :

  • CORBA: Arquitectura de agente de solicitud de objetos común de OMG del grupo de gestión de objetos CORBA.

    Dios mío: Grupo de gestión de objetos
    CORBA: Arquitectura de agente de solicitud de objetos común

  • EJB: especificación EJB desarrollada por Sun.
    EJB: Bean Java empresarial

  • DCOM: Modelo de objetos componentes distribuidos DCOM desarrollado por Microsoft.
    DCOM: modelo de objetos componentes distribuidos

Gestión de componentes :

  • Descripción de Componente.
  • Clasificación y organización de componentes.
  • Gestión de personal y autoridades.

La descripción del componente es una descripción abstracta de la esencia del componente mediante el modelo, que proporciona principalmente la base para la producción y reutilización de componentes. Desde una perspectiva de gestión, también es necesario describir el componente, como: método de implementación, cuerpo de implementación, comentarios, productor, fecha de producción, tamaño, precio, versión y componentes asociados, que junto con el modelo del componente forman una descripción completa. del componente describir.

Clasificación y organización de componentes :

  • Taxonomía de palabras clave.
  • Clasificación de facetas.
  • Método de organización del hipertexto.

Gestión de componentes: gestión de personal y autoridad : incluye cinco tipos de usuarios, a saber, usuarios registrados, usuarios públicos, remitentes de componentes, administradores generales del sistema y administradores del súper sistema.

Reutilización de componentes :

  • Recuperar y extraer componentes.
  • Comprender y evaluar componentes.
  • Modificar componentes.
  • Montaje de componentes.

Reutilización de componentes: recuperación y extracción de componentes :

  • Búsqueda basada en palabras clave.
  • Método de búsqueda de facetas.
  • Método de búsqueda de hipertexto.
  • Otros métodos de búsqueda.

Reutilización de componentes: comprensión y evaluación de componentes :

  • La función y comportamiento del componente.
  • Conocimientos relevantes del dominio.
  • Restricciones y excepciones de adaptabilidad.
  • Modificaciones predecibles y métodos de modificación.

Reutilización de componentes: ensamblaje de componentes :

  • Tecnología de montaje basada en funciones.
  • Tecnología de ensamblaje basada en datos.
  • Tecnología de ensamblaje orientada a objetos.

Conexión : Es una forma de establecer y mantener asociaciones de comportamiento y transmisión de información entre componentes.

imagen-20230217103807133

Conector : representa la interacción entre componentes y realiza la conexión entre componentes.

imagen-20230217103745949

Los objetivos de la arquitectura de software : eficacia, simplicidad, reutilización y escalabilidad.

Modelado de arquitectura de software

El modelo de vista Kruchten4+1 describe la arquitectura del software desde 5 perspectivas diferentes, incluida la vista lógica, la vista de proceso, la vista física, la vista de desarrollo y la vista de escena . Cada vista solo se preocupa por un aspecto del sistema y solo la combinación de cinco vistas puede reflejar el contenido completo de la arquitectura del software del sistema.

Vista lógica : cuando se utilizan métodos de diseño orientados a objetos, la vista lógica es el modelo de objetos.

Vista de proceso : describe los aspectos de concurrencia y sincronización del diseño del sistema.

Vista física : Describe la relación de mapeo entre software y hardware, reflejando el diseño de distribución del sistema.

Vista de desarrollo : describe la organización estática del software en el entorno de desarrollo.

imagen-20230219123048201

Modelo de vista racional 4+1 :

imagen-20230217111915808

vista de caso de uso

•La vista de casos de uso contiene casos de uso que describen el comportamiento del sistema tal como lo ven los usuarios, analistas e ingenieros de pruebas.

•La arquitectura del sistema se puede determinar basándose en la vista.

•UML:

Aspecto estático: descripción del diagrama de casos de uso.

Aspectos dinámicos: Diagramas de interacción, diagramas de estado y descripciones de diagramas de actividad.

vista de diseño

•La vista de diseño contiene las clases, interfaces y colaboración entre clases que construyen el sistema.

•Soporta principalmente los requisitos funcionales del sistema, es decir, los servicios que el sistema proporciona a los usuarios.

•UML:

Aspecto estático: diagrama de clases, descripción del diagrama de objetos.

Aspectos dinámicos: Diagramas de interacción, diagramas de estado y descripciones de diagramas de actividad.

vista interactiva

•La vista de interacción describe el flujo de control entre diferentes partes del sistema, incluidos posibles mecanismos de concurrencia y sincronización.

•Resolver principalmente problemas como el rendimiento, escalabilidad y rendimiento del sistema.

•UML:

Aspecto estático: diagrama de clases, descripción del diagrama de objetos.

Aspectos dinámicos: Diagramas de interacción, diagramas de estado y descripciones de diagramas de actividad.

Vista de implementación

•La vista de implementación contiene los componentes utilizados para ensamblar y publicar el sistema físico.

•Resolver principalmente los problemas de gestión de configuración del lanzamiento del sistema.

•UML:

Aspecto estático: descripción del gráfico de objetos.

Aspectos dinámicos: Diagramas de interacción, diagramas de estado y descripciones de diagramas de actividad.

Vista de implementación

•La vista de implementación contiene los nodos que forman la topología del hardware del sistema.

•Resolver principalmente los problemas de distribución, liberación e instalación de los componentes que conforman el sistema físico.

•UML:

Aspecto estático: Descripción del diagrama de despliegue.

Aspectos dinámicos: Diagramas de interacción, diagramas de estado y descripciones de diagramas de actividad.

estilo de arquitectura de software

El estilo arquitectónico del software es un patrón convencional que describe la organización de sistemas en un dominio de aplicación específico, enfatizando la estructura organizacional común en los sistemas de software.

El estilo arquitectónico refleja las características estructurales y semánticas comunes a muchos sistemas en el dominio y guía cómo organizar efectivamente varios módulos y subsistemas en un sistema completo.

Un estilo arquitectónico define una familia de sistemas, es decir, una arquitectura define un vocabulario y un conjunto de limitaciones. El vocabulario contiene varios tipos de componentes y conectores, y el conjunto de restricciones indica cómo el sistema combina estos componentes y conectores.

Clasificación de estilos arquitectónicos comunes :

•Estilos de flujo de datos: secuencia por lotes, tubería/filtro.

•Estilo de llamada/retorno: programa/subprograma principal, estilo orientado a objetos, estructura jerárquica.

•Estilo de componente independiente: comunicación de procesos, sistema de eventos.

•Estilo de máquina virtual: intérprete, sistema basado en reglas.

•Estilo de almacén: sistema de base de datos, sistema de hipertexto, sistema de pizarra.

El estilo principal de programa-subprograma es un estilo típico de programación estructurada: el sistema está diseñado desde un punto de vista funcional y la arquitectura de todo el sistema se forma mediante descomposición y refinamiento gradual. (aplicado al lenguaje C)

Abstracción de datos y estilo de sistema orientado a objetos (aplicado a Java):

  • Un sistema es visto como una colección de objetos, cada uno con su propio conjunto de capacidades.
  • Los datos y las operaciones sobre datos se encapsulan en tipos de datos abstractos.
  • Solo interactúa con el mundo exterior a través de interfaces y las decisiones de diseño interno están encapsuladas.

El estilo de tubería y filtro divide la tarea del sistema en varios pasos de procesamiento consecutivos. Estos pasos están conectados por el flujo de datos a través del sistema, y ​​la salida de un paso es la entrada del siguiente paso (aplicado al video jugador).

El sistema de eventos trata la aplicación como una colección de componentes, y cada componente no actúa hasta que ocurre un evento que lo afecta (aplicado a los depuradores de programas).

Jerarquía :

  • Los sistemas jerárquicos están organizados en una jerarquía, en la que cada capa sirve a la capa superior y actúa como cliente de la capa inferior. Los conectores se definen mediante protocolos que determinan cómo interactúan las capas, y las restricciones topológicas incluyen restricciones sobre las interacciones entre capas adyacentes.
  • Este estilo admite diseños basados ​​en la adición de capas de abstracción. Implementación que permite descomponer un problema complejo en una secuencia de pasos incrementales. Dado que cada capa solo afecta a dos capas como máximo, y siempre que se proporcione la misma interfaz a las capas adyacentes, cada capa puede implementarse con diferentes métodos, lo que también proporciona un potente soporte para la reutilización del software.

La arquitectura de almacén es una arquitectura centrada en datos que es adecuada para situaciones en las que un módulo genera datos y otros módulos los utilizan.

La arquitectura cliente/servidor es un modelo de sistema distribuido en el que un subsistema de servidor proporciona servicios a otros subsistemas de cliente y un subsistema de cliente es responsable de interactuar con los usuarios.

Estructura C/S de tres capas :

imagen-20230217144128813

estructura B/S

imagen-20230219124056705

  • La primera capa de la capa de presentación: completa principalmente la interacción entre el usuario y el fondo y la función de salida de los resultados finales de la consulta.
  • La segunda capa lógica: utiliza principalmente el servidor para completar las funciones lógicas de la aplicación del cliente.
  • La tercera capa de datos: realiza principalmente varias operaciones de forma independiente después de aceptar las solicitudes de los clientes.

Especificaciones técnicas CORBA

  • Lenguaje de definición de interfaz (IDL)
  • Grupo de interfaces (IR)
  • Interfaz de invocación dinámica (DII)
  • Adaptador de objetos (OA)

modelo de arquitectura CORBA

imagen-20230219124308868

¿Qué es la separación de front-end y back-end ? Consiste en separar la operación y la visualización de datos . La interfaz se centra en la visualización de datos, mostrándolos de forma intuitiva a través de texto, imágenes o iconos. El backend se centra en las operaciones de datos. El front-end envía datos al back-end y el back-end modifica los datos.

Lenguaje de modelado unificado

Qué es un modelo : un modelo es una simplificación de la realidad y el modelado se utiliza para comprender mejor el sistema.

Introducción a UML :

  • Acrónimo en inglés de Unified Modeling Language.
  • Chino: lenguaje de modelado unificado.
  • Unificado:
  • Un estándar reconocido y seguido por todos los campos de la ingeniería de software, similar al "inglés" en lenguaje natural.
  • Es simple, intuitivo y estandarizado, y relativamente fácil de aprender y dominar. El modelo de software descrito puede entenderse y leerse intuitivamente y, debido a que es normativo, puede garantizar la precisión y coherencia del modelo.
  • Modelado:
  • Una vista simplificada utilizada para representar la realidad para facilitar el diseño y la implementación de sistemas de software orientados a objetos.
  • Idioma:
  • UML es principalmente un lenguaje gráfico que sigue una sintaxis precisa (también incluye reglas, restricciones y mecanismos de extensión).

Sintaxis y semántica de UML :

imagen-20230219125734995

La composición de UML.

imagen-20230219125836689

Cosas UML

imagen-20230219125942264

Cosas estructurales

  • Cosa estructural: parte estática de un modelo UML que describe conceptos o elementos físicos.

  • Las cosas estructurales también se llaman: cosas constituyentes.

  • Las cosas estructurales comunes incluyen:

    ​ Clase

    ​Interfaz

    ​Colaboración

    caso de uso

    ​ Clase activa (clase activa)

    Componente

    Nodo

Cosas de comportamiento

  • Cosa de comportamiento: la parte dinámica del diagrama del modelo UML que describe el comportamiento en el espacio y el tiempo.

  • Las cosas de comportamiento comunes incluyen:

    Interacción: una colección de mensajes entre un conjunto de componentes que implementan una determinada función, que involucra mensajes, secuencias de acciones y enlaces.

    Máquina de estados: describe la secuencia de estados por la que pasa una cosa o interacción en respuesta a eventos durante su ciclo de vida.

cosas de grupo

  • Cosa de grupo: la parte organizativa del diagrama del modelo UML, que describe la estructura organizativa de las cosas.

  • Las cosas de agrupación comunes incluyen:

    paquete.

anotar cosas

  • Cosa anotativa: la parte explicativa del modelo UML, utilizada para ilustrar y explicar los elementos del modelo.

  • Las anotaciones comunes incluyen:

    Nota.

Relaciones UML

imagen-20230219130410019

gráficos UML

imagen-20230219130533867

Diagrama de clases (énfasis)

Diagrama de interacción (puntos clave)

Diagrama de secuencia (énfasis)

Desarrollo de software basado en arquitectura.

Patrón de diseño MVC (puntos clave)

Estructura MVC :

imagen-20230219132912599

Marco MVC :

imagen-20230219133018493

Mecanismo de comunicación MVC

MVP : MVP reemplaza el Controlador en MVC con el Presentador (presentación), el propósito es cortar completamente la conexión entre la Vista y el Modelo, con el Presentador actuando como un puente para aislar completamente la comunicación entre Vista y Modelo.

imagen-20230219133218680

MVVM : MVVM toma la idea de "vinculación bidireccional de datos del modelo de datos" como núcleo, por lo que no hay conexión entre Vista y Modelo. La interacción es a través de ViewModel, y la interacción entre Modelo y ViewModel es bidireccional. , por lo que los datos de la vista son Los cambios modificarán la fuente de datos al mismo tiempo, y los cambios en los datos de la fuente de datos se reflejarán inmediatamente en la Vista.

imagen-20230219133246953

Clasificación de patrones de diseño :

imagen-20230219132703066

La composición de los patrones de diseño :

  • Nombre del esquema
  • pregunta
  • solución
  • como resultado de

Clasificación de middleware

  • Middleware subyacente: JVM (Java Virtual Machine, máquina virtual Java), CLR (Common Language Runtime, Common Language Runtime), ACE (Adaptive Communication Environment, entorno de comunicación adaptativo), etc.
  • Middleware de propósito general: también llamado plataforma, sus tecnologías principales incluyen principalmente RPC, ORB, MOM (middleware orientado a mensajes, middleware orientado a mensajes), etc.
  • Middleware integrado: WorkFlow, EAI, etc.

Principales tecnologías de middleware :

  • llamada a procedimiento remoto
  • llamada a método remoto
  • proxy de solicitud de objeto
  • Middleware orientado a mensajes
  • Monitor de transacciones

Principales categorías de modelos de procesos de software :

  • modelo de cascada
  • modelo de prototipo
  • desarrollo iterativo
  • modelo descapotable

6806166733)]

La composición de los patrones de diseño :

  • Nombre del esquema
  • pregunta
  • solución
  • como resultado de

Clasificación de middleware

  • Middleware subyacente: JVM (Java Virtual Machine, máquina virtual Java), CLR (Common Language Runtime, Common Language Runtime), ACE (Adaptive Communication Environment, entorno de comunicación adaptativo), etc.
  • Middleware de propósito general: también llamado plataforma, sus tecnologías principales incluyen principalmente RPC, ORB, MOM (middleware orientado a mensajes, middleware orientado a mensajes), etc.
  • Middleware integrado: WorkFlow, EAI, etc.

Principales tecnologías de middleware :

  • llamada a procedimiento remoto
  • llamada a método remoto
  • proxy de solicitud de objeto
  • Middleware orientado a mensajes
  • Monitor de transacciones

Principales categorías de modelos de procesos de software :

  • modelo de cascada
  • modelo de prototipo
  • desarrollo iterativo
  • modelo descapotable

Las preguntas de diseño implican el análisis del modelo de proceso de software.

Acho que você gosta

Origin blog.csdn.net/qq_57109165/article/details/129113631
Recomendado
Clasificación