Here are the precise meanings of some terms which are used liberally on this web site.
Term |
Definition |
Examples |
Application domain |
The domain of application of the program or piece of code being considered. |
Arithmetic, Car simulation |
Concept |
A concept of the application domain which is relevant to program code. |
Addition, Display |
Concept programming |
A methodology focusing on the relationship between application concepts and their representation in the code. Its fundamental principle is: program code should represent application concepts |
Concept metric |
A measure of how well the code represents the concept. Unlike more traditional software metrics, concept metrics are somewhat subjective: they relate two very different domains, the application space and the program code space. |
signal-to-noise ratio, bandwidth |
Concept cast |
Using in the code a concept which is not the original application concept, but an approximation. A main reason to do so is because the approximation is easier to represent using a particular tool. A concept cast introduces noise |
Adding integers modulo a power of 2, because computers use a limited number of bits. |
Noise |
Elements of the program code which don't represent something from the application domain. Like in engineering, minimizing it is a worthy goal, but eliminating it completely is a dream. Like in music, what is noise to one person might be music to another. |
Comments paraphrasing the code |
Syntactic noise |
Noise in the code, directly visible to the programmer, and introduced by limits of the tools. |
Taking the address of "output arguments" in C |
Semantic noise |
Noise in the behavior of the program, not directly visible in the code, and introduced by the way the tools normally operate (the tools semantics). |
Integer truncation or errors for "large integers" |
Signal/noise ratio |
Concept metric evaluating how much of the code is useful "signal" from the application domain, as opposed to noise. |
The name "Draw" has a higher ratio than "_lpFnVr0"
|
Bandwidth |
Concept metric evaluating how much of the application domain is covered by a particular implementation of the concept. |
The addition operator in C has a higher bandwidth than the assembly ADD instruction, because it applies to several types. |
Abstraction |
A concept representation hiding some irrelevant details. |
Encapsulating code into a function |
Domain complexity |
Complexity in the code introduced by the application domain itself. |
Model of the tax law |
Artificial complexity |
Complexity in the code introduced by the tools or methodologies. |
Programming languages syntax |
Scale complexity |
Complexity in the code introduced by the scale of the problem. |
Memory usage or speed considerations. |
Business complexity |
Complexity introduced by the business environment. |
Team size and budget constraints |