A software engineer is a person who applies the engineering design process to design, develop, maintain, test, and evaluate computer software. Engineering techniques are used to inform the software development process, which involves the definition, implementation, assessment, measurement, management, change, and improvement of the software life cycle process itself.