Software engineering is an engineering approach to software development. 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.A software engineer applies a software development process, which involves the definition, implementation, testing, management and maintence of software systems and with development of the software development process itself.