We introduce the notion of domain descriptions (D) in order to ensure
that software (S) is right ^1) and is the right ^2) software, that is, that it is correct with respect to written requirements (R) and that it meets customer expectations.
That is, before software can be designed (S) we must make sure we
understand the requirements (R), and before we can express the
requirements we must make sure that we understand the application domain (D): the area of activity of the users of the required software, before and after installment of such software.
We shall outline what we mean by informal, narrative and formal domain
description, and how one can systematically, albeit not (in fact: never)
automatically go from domain descriptions to requirements prescriptions.
As it seems that domain engineering is a relatively new discipline
within software engineering we shall mostly focus on domain engineering and discuss its necessity.
The talk will show some formulas but they are really not meant to be
read by the speaker, let alone understood, during the talk, by the
listeners. They are merely there to bring home the point:
that professional software engineering, like other professional
engineering branches rely on and use mathematics. And it is all very
simple to learn and practise anyway !
1) Software is right when it fulfills its requirements.
2) It is the right software when that software meets customers expectations.