The SemanticGap is the gap between what the user/customer can express about the problem he wants to get solved by software and the precision of a specification needed to program this in software.
The gap appears because programmers usually do not have enough domain knowledge to infer the required specification details from context.
There are different means to bridge this gap:
- Train the customer in writing precise documents. Works best in companies that know their domain very well and have precise processes.
- Train the programmer in the domain. Works best when the programmer works in the IT department of the company. Over time he will learn...
- Propagate specification and request for further details back and forth between programmer, consultat, customer and management. Works not or rather slow.
- Agile methods just guess and iteratively let both sides learn and converge.
See also OopBizDomainGap