Software Engineering - CSC 323 Introduction
The state of the practice...: At a recent computer software engineering course in the US, the participants were given an awkward question to answer: "If you had just boarded an airliner and discovered that your team of programmers had been responsible for the flight control software, how many of you would disembark immediately?" Among the ensuing forest of raised hands only one man sat motionless. When asked what he would do, he replied that he would be quite content to stay on board. With his team's software, he reasoned, the plane was unlikely to even taxi as far as the runway, let alone take off.
Software development... Art? ...Craft? …or Science?
Problems BEFORE Software Engineering: Late projects Cost overruns High maintenance costs Unreliable, inaccurate systems Poor project control Poor traceability of requirements Unpredictable development process
Origins of Software Engineering 1967 - NATO study group coins term 1968 - NATO conference Garmisch, Germany 1969 - Conference in Rome, Italy
Problems AFTER Software Engineering: Late projects Cost overruns High maintenance costs Unreliable, inaccurate systems Poor project control Poor traceability of requirements Unpredictable development process
Definitions of Software Engineering “The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently an real machines." Naur, P., and S. Randall, eds. Software Engineering: -A Report an a Conference Sponsored by the NATO Science Committee. NATO, 1969; quoted in Roger S. Pressman, Software Engineering: A Practitioner's Approach. New York: McGraw-Hill Book Company. 1987.
Definitions of Software Engineering “… the technological and managerial discipline concerned with systematic production and maintenance of software products that are developed on time and within cost estimates.” - Fairley, Richard E. Software Engineering Concepts. New York: McGraw-Hill, 1985
Definitions of Software Engineering “The disciplined application of engineering, scientific, and mathematical principles, methods, and tools to the economical production of quality software.” -Pressman, Roger S. Software Engineering: A Practitioner's Approach. New York: McGraw-Hill Book Company. 1987.
Definitions of Software Engineering “. . .software engineering is a discipline whose aim is the production of fault-free software, delivered on time and within budget, that satisfies the user’s needs.” Schach, Stephen R. Object-Oriented and Classical Software Engineering . 6th ed., New York: McGraw-Hill. 2005.
Definitions of Software Engineering “(1) The application of a systematic, disciplined, quantifiable approach to the development , operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).” - IEEE Standards Collection: Software Engineering, IEEE Standard 610.12-1990, IEEE, 1993.
Definitions of Software Engineering “Software Engineering: The process by which all fun is removed from computer programming.” -Anonymous