11

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?
  • 1
    Perhaps Class Diagrams are an output of Software Architecture activity, in a similar way that a building's blueprints are an output of the building's architect... – FrustratedWithFormsDesigner Mar 7 '17 at 15:32
7

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.

2

Some additional points:

  • System is the broadest term and typically highest level, least detailed.
  • Part of the system may be classified as software.
  • Part of the software may be described using class diagrams.

Last but not least: architecture is about one-time choices that are hard or impossible to get back on later without rebuilding everything. The best definition of architecture, which sets it apart from design, is "everything that is really expensive to change". So in architecture you will typically find the choice for a programming language, the operating system, the brand of a relational database, whatever locks you in to a type of solution. So what classifies as architecture also depends on the system itself and how (in)flexible it is in regard to the aspect.

0

Class diagrams are quite different from rest of the two terms - they show what classes offer to other classes and how they interact with each other. However, terms 'system architecture' and 'software architecture' create confusion and require further clarification.

It is important to realize that a 'system' refers not only to software components but also other components such as hardware components. If a system only contains a software system, then there is no difference between both the terms. However, obviously, if a system contains other non-software components then software architecture will be significantly different than the system architecture of the system.

  • Should the system architecture also contain something like a GUI module? @Tushar – KingBoomie Mar 7 '17 at 18:41
  • Yes, it may and it need not be a software component. @RickBeeloo – Tushar Mar 7 '17 at 19:06
  • But you would need an class in the software to accept user input and display something to the user? So it should be a sofware component as well? – KingBoomie Mar 7 '17 at 19:19
  • Yes and No. Not all consumers of a software system are humans :) – Tushar Mar 8 '17 at 6:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.