Software engineering is an engineering approach to software development.[1][2][3] A practitioner, a software engineer, applies the engineering design process to develop software.
The terms programmer and coder overlap software engineer, but they imply only the construction aspect of typical software engineer workload.[4]
A software engineer applies a software development process,[1][5] which involves the definition, implementation, testing, management and maintenance of software systems and with development of the software development process itself.