IDENTITYDIAGRAM MAPPING EXTERNAL REFERENCES

IDENTITY - C4 Model Mappings


DescriptionThe C4 model graphical notation technique for modelling the architecture of software systems. created by the software architect Simon Brown.
C4 model provides a way for software development teams to efficiently and effectively communicate their software architecture, at different levels of detail, telling different stories to different types of audience, when doing up front design or retrospectively documenting an existing codebase.
ReferencesC4 Model - WebsiteWikipedia - 4+1 architectural view modelWikipedia - C4 Model

../images/a100db1c62d765fb_a100db2462d7661d_i.png

MAPPED ENTITIES


Framework ConceptFramework DefinitionSysFEAT ConceptSysFEAT Definition
 Component
The word "component" is a hugely overloaded term in the software development industry, but in this context a component is a grouping of related functionality encapsulated behind a well-defined interface. If you're using a language like Java or C#, the simplest way to think of a component is that it's a collection of implementation classes behind an interface. Aspects such as how those components are packaged (e.g. one component vs many components per JAR file, DLL, shared library, etc) is a separate and orthogonal concern.
An important point to note here is that all components inside a container typically execute in the same process space. In the C4 model, components are not separately deployable units.
  Application Component
An  Application Component is a functionnal unit of software (java class, COBOL Program, Batch) that is  a consistent, indivisible unit of processing of an Application producing and consuming its Information Outcome Events though APIs (Application Interface).
a)  Application Components are assembled and orchestrated in Applications.
b)  Application Components cannot be directly deployed to Computing Systems: they need to be organized in Deployable Application Packages.
 Application Component is a Micro enterprise asset that sits at the lowest level of Business Software System decomposition.
Example: the "Salary and Wage Calculation" component is an  Application Component that is part of the "Payroll" Application.

References:
C4 Model - Level 3 - Component Diagram
C4 Model - Metamodel
OpenGroup - ArchiMate - Application Component
 Container Not Docker! In the C4 model, a container represents an application or a data store. A container is something that needs to be running in order for the overall software system to work.   Deployable Package Deployable Package is a split of Application code and data according to deployment and runtime purposes.
References:
C4 Model - Level 2 - Container Diagram
 Container Database A container that represents a data store.   Deployable Data Package
Deployable Data Package  represents a data part of an Application that must be hosted and accessed by application services (code) to run.
Each  Deployable Data Package is associated to Required Software Technologys (for data hosting and access) and can host several data structures.
Architect can also prescribes a kind of hosting artefact (IaaS/PaaS cloud service or IT server model).

References:
C4 Model - Level 2 - Container Diagram
 Container Mobile App, Web Browser A container that represent client front end of an application.   Deployable Application Package
Deployable Application Package  is a split of application code according to deployment criteria at runtime. For example, it may be Front End/Back End or GUI/Business Logic etc..
Each  Deployable Application Package is associated to required Software Technology(ies) (for running) and can host code of several Application Component.
Architects can also prescribe a kind of hosting artefact (IaaS/PaaS cloud service or IT server model).

References:
C4 Model - Level 2 - Container Diagram
 Enterprise   Application Environment An  Application Environment is an operating context in which an Application defines its interactions with its partners (Partner Application) in the form of  API connections (Software Connection).
References:
C4 Model - Level 1 - System Context Diagram
 Level 1- System Context Diagram A System Context diagram provides a starting point, showing how the software system in scope fits into the world around it.
References:
C4 Model - Level 1 - System Context Diagram
  Application Environment An  Application Environment is an operating context in which an Application defines its interactions with its partners (Partner Application) in the form of  API connections (Software Connection).
References:
C4 Model - Level 1 - System Context Diagram
 Level 2- Container Diagram  A Container diagram zooms into the software system in scope, showing the high-level technical building blocks.
References:
C4 Model - Level 2 - Container Diagram
  Application Deployment Environment An  Application Deployment Environment  describes one possible integration context for an Application Deployment Architecture. It contains the subject application deployment architecture and the partner deployment architectures it must be integrated with, meaning it must communicates with via technical connections (with communication protocols, port numbers...).
References:
C4 Model - Level 1 - System Context Diagram
 Level 3 - Component Diagram A Component diagram zooms into an individual container, showing the components inside it.
References:
C4 Model - Level 3 - Component Diagram
  Application Deployment Architecture
An  Application Deployment Architecture describes one possible deployment configuration of an Application.
It contains Deployable Packages to host, prescribed type of hosting and required  Software Physical Channels (with communication protocols, port numbers...) to communicate with each other.
 Person A person represents one of the human users of your software system (e.g. actors, roles, personas, etc   End User An  End User is a Org-Unit who actually uses a particular Business Software System.
 Software System A software system is the highest level of abstraction and describes something that delivers value to its users, whether they are human or not. This includes the software system you are modelling, and the other software systems upon which your software system depends (or vice versa). In many cases, a software system is "owned by" a single software development team.
References:
C4 Model - Software System
  Application
An  Application is a Business Software System that provides a set of  Functionality(ies) that End Users see as a single unit.
Essentially  Applications are architectural constructions resulting from the combinaison of the following four criteria:
1) A group of  Functionality that End Users see as a single unit.
2) A managed asset (Managed Application) associated with a budget line in the context of an Application Portfolio.
3) A body of code that is seen by developers as a single unit.
4) A group of deployable software units (Deployable Application Packages) that must be installed together on one or multiple execution nodes (Computing System).
 Application is a Mezzo enterprise asset  that sits between Application System and Application Component in the decomposition of Business Software Systems.
Example: " Payroll" is an  Application that is part an " HR System" which is an Application System.
The "Payroll"  Application includes, among other things, the "Salary and Wage Calculation" Application Component.

References:
C4 Model - Software System
Martin Fowler - Application Boundary
Microsoft - Architecture Design - Architecture Styles
OMG - UAF - Software
OpenGroup - ArchiMate - Application Component
OpenGroup - TOGAF - Definition - Application Component
OpenGroup - TOGAF - Enterprise Metamodel - Physical Application Component

EXTERNAL REFERENCES


Framework referenceSysFEAT Description
 C4 Model - Level 1 - System Context Diagram   Application Deployment Environment
An  Application Deployment Environment  describes one possible integration context for an Application Deployment Architecture. It contains the subject application deployment architecture and the partner deployment architectures it must be integrated with, meaning it must communicates with via technical connections (with communication protocols, port numbers...).

  Application Environment
An  Application Environment is an operating context in which an Application defines its interactions with its partners (Partner Application) in the form of  API connections (Software Connection).


The  Application Functional Architecture domain is used to describe the functional structure and behavior of Business Software Systems.
 SysFEAT provides three level of granularity to represent software systems:
2) Mezzo Business Software Systems are represented by Applications, which compose Application Systems.
3) Micro Business Software Systems are represented by Application Components and MicroServices which compose Applications.
All Business Software Systems provide  Functionalitys, expose APIs by means of Application Interfaces, have a data scope defined by Physical Data Domains, perform System Processes and have their interactions described by Software System Scenarios.


  Application System Deployment Architecture
An  Application System Deployment Architecture describes one possible deployment configuration of an Application System.
It contains chosen deployment architectures for component applications and identifies communication protocols (and port numbers) they use to communicate with each other.



A System Context diagram provides a starting point, showing how the software system in scope fits into the world around it.

  Software Deployment Architecture
 C4 Model - Level 2 - Container Diagram
The  Application Deployment Architecture domain defines concepts used to organize Applications in Deployable Packages.
It comprises:
1) software code packages (Deployable Application Packages)
2) Data packages (Deployable Data Packages).
3) Prescribed type of hosting
4) required technical connections (with communication protocols, port numbers...)  to communicate with each other.


  Deployable Application Package
Deployable Application Package  is a split of application code according to deployment criteria at runtime. For example, it may be Front End/Back End or GUI/Business Logic etc..
Each  Deployable Application Package is associated to required Software Technology(ies) (for running) and can host code of several Application Component.
Architects can also prescribe a kind of hosting artefact (IaaS/PaaS cloud service or IT server model).


  Deployable Data Package
Deployable Data Package  represents a data part of an Application that must be hosted and accessed by application services (code) to run.
Each  Deployable Data Package is associated to Required Software Technologys (for data hosting and access) and can host several data structures.
Architect can also prescribes a kind of hosting artefact (IaaS/PaaS cloud service or IT server model).


  Deployable Package
Deployable Package is a split of Application code and data according to deployment and runtime purposes.


 A Container diagram zooms into the software system in scope, showing the high-level technical building blocks.

  MicroService
MicroService is a small autonomous unit of software, emphasizing self-management and lightweightness as the means to improve software agility, scalability, and autonomy.
1)  MicroServices are automous or assembled and orchestrated as components of Applications.
2)  MicroServices can be directly deployed to Computing Systems.  MicroServices are both a logical unit of software and a Deployable Package.
3)  MicroServices owns their own data store and dot not have any shared stores with other components.
 MicroService is a Micro enterprise asset that sits at the lower level of Business Software System decomposition.
 C4 Model - Level 3 - Component Diagram   Application Component
An  Application Component is a functionnal unit of software (java class, COBOL Program, Batch) that is  a consistent, indivisible unit of processing of an Application producing and consuming its Information Outcome Events though APIs (Application Interface).
a)  Application Components are assembled and orchestrated in Applications.
b)  Application Components cannot be directly deployed to Computing Systems: they need to be organized in Deployable Application Packages.
 Application Component is a Micro enterprise asset that sits at the lowest level of Business Software System decomposition.
Example: the "Salary and Wage Calculation" component is an  Application Component that is part of the "Payroll" Application.



A Component diagram zooms into an individual container, showing the components inside it.

  MicroService
MicroService is a small autonomous unit of software, emphasizing self-management and lightweightness as the means to improve software agility, scalability, and autonomy.
1)  MicroServices are automous or assembled and orchestrated as components of Applications.
2)  MicroServices can be directly deployed to Computing Systems.  MicroServices are both a logical unit of software and a Deployable Package.
3)  MicroServices owns their own data store and dot not have any shared stores with other components.
 MicroService is a Micro enterprise asset that sits at the lower level of Business Software System decomposition.
 C4 Model - Software System   Application
An  Application is a Business Software System that provides a set of  Functionality(ies) that End Users see as a single unit.
Essentially  Applications are architectural constructions resulting from the combinaison of the following four criteria:
1) A group of  Functionality that End Users see as a single unit.
2) A managed asset (Managed Application) associated with a budget line in the context of an Application Portfolio.
3) A body of code that is seen by developers as a single unit.
4) A group of deployable software units (Deployable Application Packages) that must be installed together on one or multiple execution nodes (Computing System).
 Application is a Mezzo enterprise asset  that sits between Application System and Application Component in the decomposition of Business Software Systems.
Example: " Payroll" is an  Application that is part an " HR System" which is an Application System.
The "Payroll"  Application includes, among other things, the "Salary and Wage Calculation" Application Component.



A software system is the highest level of abstraction and describes something that delivers value to its users, whether they are human or not. This includes the software system you are modelling, and the other software systems upon which your software system depends (or vice versa). In many cases, a software system is "owned by" a single software development team.