A software engineer applies mathematical analysis and the principles of computer science in order to design and develop computer software.