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.
fuente
Respuestas:
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.
fuente
Algunos puntos adicionales:
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.
fuente
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.
fuente