Software engineering is the systematic application of engineering principles and techniques to software development and maintenance. It involves designing, implementing, and modifying software to ensure it is of high quality, affordable, maintainable and delivered quickly. Software engineers apply defined processes with activities like communication, planning, modeling, construction and deployment to build computer programs, documents and data that meet user needs.