ABSTRACT

There are some difficulties in discussing the term “software engineering.” If we understand under that term the body of knowledge about creating programs, software engineering should cover:

Specification methods

Designing methods

Programming techniques

To round it up, software engineering should also contain:

Organizational topics

The reality differs from those expectations. As observed in several publications, software engineering does not contain knowledge about

engineering software, understood as knowledge about how to write a good code

. Actually, Agile methods would have completely lost their justification

if coding had not contained a design element. Therefore, it is possible to write code without a formal design. Whether it is a practice to be recommended is another issue. Whether it is possible to code without any design work (i.e., to serve as a pure translator converting a design into a code) is also doubtful — if it were possible, coding could be automated and the programmer would be replaced by translation programs. Interestingly, the concentration on management and organizational

topics while neglecting technical aspects has been criticized for several years without visible reaction. For example, we find a very constructive criticism of software engineering done by Baber,

and similar arguments can be found a few years later in Whittaker et al.