Design – Software architecture vs System architecture vs Class diagrams

Architectureclass-diagramdesign

I'm quite confused about the following terms:

Software architecture

Software application architecture is the process of defining a
structured solution that meets all of the technical and operational
requirements, while optimizing common quality attributes such as
performance, security, and manageability. It involves a series of
decisions based on a wide range of factors, and each of these
decisions can have considerable impact on the quality, performance,
maintainability, and overall success of the application. (microsoft)

System architecture

A system architecture is a conceptual model that defines the
structure, behavior, and more views of a system.1 An architecture
description is a formal description and representation of a system,
organized in a way that supports reasoning about the structures and
behaviors of the system (wiki)

Class diagrams

In software engineering, a class diagram in the Unified Modeling
Language (UML) is a type of static structure diagram that describes
the structure of a system by showing the system's classes, their
attributes, operations (or methods), and the relationships among
objects. (wiki)

If I read these descriptions all of these describe the interactions between different modules of the application. However what are the differences between these?

What I think/tried to compare these terms:

  • Class diagrams are not a form of system architecture, because the above description (structure, behavior, and more views of a system)
    implies that no implementation details are present in an architecture
    whereas class diagrams describe implementation and are probably more in the direction of design rather than architecture?
  • I think system architecture is an architecture which also includes extern interactions (like database) whereas software architecture focuses on the application itself?

Best Answer

System architecture describes the components of the system. For example you might have an order entry system that consists of:

Web Front End, Business Layer Service, and Data Store.

So, you should a high level diagram showing this.

Software application architecture describes the architecture of a particular component. For example, one of the components of the order entry system is the web front end. The application architecture will show the various layers and interactions of that component. Responsive UI, Model View Controller, web service call outs, how logging will be accomplished, etc. It gives and idea of the each component will be constructed and the layers in that component which is a part of the larger system.

usually a more detailed diagram(s) showing how that component will be constructed is created.

Finally, Class Diagrams dive deeper into the software application architecture. For example, what's the contract for the logging interface look like? How will View interact with the Controller... and so forth. These will further detail the software application architecture for a particular component of the system.

There should be many of these if the particular component is large and complex.