Debates within software engineering
Ambiguity and controversyTypical 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"
- "the establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines"
- as the informal contemporary term for the broad range of activities that were formerly called programming and systems analysis;
- as the broad term for all aspects of the practice of computer programming, as opposed to the theory of computer programming, which is called computer science;
- as the term embodying the advocacy of a specific approach to computer programming, one that urges that it be treated as an engineering discipline rather than an art or a craft, and advocates the codification of recommended practices.