Arquitectura de software vs Arquitectura de sistema vs Diagramas de clase?

11

Estoy bastante confundido acerca de los siguientes términos:

Arquitectura de software

La arquitectura de la aplicación de software es el proceso de definir una solución estructurada que cumpla con todos los requisitos técnicos y operativos, al tiempo que optimiza atributos de calidad comunes como el rendimiento, la seguridad y la capacidad de administración. Implica una serie de decisiones basadas en una amplia gama de factores, y cada una de estas decisiones puede tener un impacto considerable en la calidad, el rendimiento, el mantenimiento y el éxito general de la aplicación. ( microsoft )

Arquitectura del sistema

Una arquitectura de sistema es un modelo conceptual que define la estructura, el comportamiento y más vistas de un sistema. 1 Una descripción de arquitectura es una descripción formal y representación de un sistema, organizada de una manera que admite el razonamiento sobre las estructuras y los comportamientos del sistema ( wiki )

Diagramas de clase

En ingeniería de software, un diagrama de clase en el lenguaje de modelado unificado (UML) es un tipo de diagrama de estructura estática que describe la estructura de un sistema al mostrar las clases del sistema, sus atributos, operaciones (o métodos) y las relaciones entre los objetos. ( wiki )

Si leo estas descripciones, todas estas describen las interacciones entre los diferentes módulos de la aplicación. Sin embargo, ¿cuáles son las diferencias entre estos?
Lo que pienso / intenté comparar estos términos :

  • Los diagramas de clases no son una forma de arquitectura del sistema, porque la descripción anterior ( structure, behavior, and more views of a system) implica que no hay detalles de implementación presentes en una arquitectura, mientras que los diagramas de clases describen la implementación y probablemente estén más orientados al diseño que a la arquitectura.
  • Creo que la arquitectura del sistema es una arquitectura que también incluye interacciones externas (como la base de datos), mientras que la arquitectura del software se centra en la aplicación misma.
KingBoomie
fuente
1
Quizás los Diagramas de clase son una salida de la actividad de Arquitectura de software, de manera similar a los planos de un edificio son una salida del arquitecto del edificio ...
FrustratedWithFormsDesigner

Respuestas:

7

La arquitectura del sistema describe los componentes del sistema. Por ejemplo, puede tener un sistema de entrada de pedidos que consta de:

Front-end web, servicio de capa empresarial y almacén de datos.

Por lo tanto, debe un diagrama de alto nivel que muestre esto.

La arquitectura de la aplicación de software describe la arquitectura de un componente en particular. Por ejemplo, uno de los componentes del sistema de entrada de pedidos es el front-end web. La arquitectura de la aplicación mostrará las diversas capas e interacciones de ese componente. Interfaz de usuario receptiva, controlador de vista de modelo, llamadas de servicio web, cómo se realizará el registro, etc. Da una idea de cada componente que se construirá y las capas en ese componente que es parte del sistema más grande.

generalmente se crean diagramas más detallados que muestran cómo se construirá ese componente.

Finalmente, los Diagramas de clase profundizan en la arquitectura de la aplicación de software. Por ejemplo, ¿cómo es el contrato para la interfaz de registro? Cómo interactuará View con el controlador ... y así sucesivamente. Estos detallarán más la arquitectura de la aplicación de software para un componente particular del sistema.

Debería haber muchos de estos si el componente particular es grande y complejo.

Jon Raynor
fuente
2

Algunos puntos adicionales:

  • Sistema es el término más amplio y generalmente el nivel más alto, menos detallado.
  • Parte del sistema puede clasificarse como software.
  • Parte del software puede describirse utilizando diagramas de clase.

Por último, pero no menos importante: la arquitectura se trata de elecciones únicas que son difíciles o imposibles de recuperar más tarde sin reconstruir todo. La mejor definición de arquitectura, que lo distingue del diseño, es "todo lo que es realmente costoso cambiar". Por lo tanto, en arquitectura, generalmente encontrará la opción para un lenguaje de programación, el sistema operativo, la marca de una base de datos relacional, lo que sea que lo encierre en un tipo de solución. Entonces, lo que clasifica como arquitectura también depende del sistema en sí mismo y de cuán (in) flexible sea con respecto al aspecto.

Martin Maat
fuente
0

Los diagramas de clases son bastante diferentes del resto de los dos términos: muestran lo que las clases ofrecen a otras clases y cómo interactúan entre sí. Sin embargo, los términos 'arquitectura del sistema' y 'arquitectura de software' crean confusión y requieren mayor aclaración.

Es importante darse cuenta de que un "sistema" se refiere no solo a los componentes de software sino también a otros componentes como los componentes de hardware. Si un sistema solo contiene un sistema de software, entonces no hay diferencia entre ambos términos. Sin embargo, obviamente, si un sistema contiene otros componentes que no son de software, la arquitectura del software será significativamente diferente de la arquitectura del sistema.

Tushar
fuente
¿La arquitectura del sistema también debería contener algo así como un módulo GUI? @Tushar
KingBoomie
Sí, puede y no necesita ser un componente de software. @RickBeeloo
Tushar
¿Pero necesitaría una clase en el software para aceptar la entrada del usuario y mostrarle algo al usuario? ¿Entonces también debería ser un componente de software?
KingBoomie
Sí y no. No todos los consumidores de un sistema de software son humanos :)
Tushar