Software engineering is the study and an application of engineering to the design, development, and maintenance of software. Typical formal definitions of software engineering are: “the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software”; “an engineering discipline that is concerned with all aspects of software production”; and “the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines.”