One way to think about it is that a software system is something a single software development team is building, owns, has responsibility for, and can see the internal implementation details of. Unfortunately the term 'software system' is the hardest of the C4 model abstractions to define,Īnd this isn't helped by the fact that each organisation will also have their own terminology for describing the same thing, typically using terms such as 'application', 'product', 'service', etc. This includes the software system you are modelling, and the other software systems upon which your software system depends (or vice versa). actors, roles, personas, etc).Ī software system is the highest level of abstraction and describes something that delivers value to its users, whether they are human or not. Which in turn are implemented by one or more code elements (classes, interfaces, objects, functions, etc).Īnd people may use the software systems that we build.Ī person represents one of the human users of your software system (e.g. In order to create these maps of your code, we first need a common set of abstractions to create a ubiquitous language that we can use to describe the static structure of a software system.Ī software system is made up of one or more containers (applications and data stores),Įach of which contains one or more components,