There is, however, a substantial difference in nature between the numerical and non-numerical kinds of software. The answer is negative. In fact, non-numerical software can be formalized by disciplines such as abstract algebra , discrete mathematics and formal logic . However, these are rarely found in traditional engineering curricula, which are too much concerned with the mathematics of continuity to leave room for the mathematics of discreteness.
Conventional engineers are thus bad software designers.
However, many curricula on software engineering have been updated with the missing background. The main target of the formal methods trend is to drive software production into good engineering standards. As a rule, these methods split software production into a specification phase , in which a mathematical model is built of the contractor requirements, followed by an implementation phase in which such model is somehow converted into a runnable software artifact. Relatively recent advances in formal method research show that implementations can be effectively calculated from specifications.