Software systems are linguistic artefacts. Designing, implementing and using them requires languages. For a software system to be executable, the concepts of language for describing software need to be mapped to the instruction set of processors. Furthermore, the description should be sound in order to foster the software’s reliability. That recommends the use of formal languages. However, formal languages are not sufficient. To make sense of a software system, a linguistic representation is required that corresponds to the language common in the targeted domain.
Conceptual modelling is the approach of choice to establish a correspondence between implementation languages and technical languages used in certain domains. It is based on the idea to use a common ontological foundation both for programming languages and for the reconstruction of domain-specific natural languages. Furthermore, the correspondence depends on common domain-specific designators used for naming concepts in conceptual models. As far as the common ontological foundation is concerned, basic concepts such as entity type, thing, property, event etc. are a good choice. They are used both in philosophical ontologies such as in Bunge’s “furniture of the world” (ref) and in conceptual modelling languages like the ERM or state machines. This common foundation of two separate language worlds enables to create a bridge between them – through conceptual models.