# Software engineering

Software engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the design, development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.

## Quotes

    Quotes are arranged chronologically

### 1960s

* Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.
** Peter Naur and Brian Randell (1968) at the first NATO conference of software engineering; Cited in: Hans van Vliet (2007) Software Engineering: Principles and Practice. p. 5

### 1970s

* Software engineering is the part of computer science which is too difficult for the computer scientist.
** Friedrich Bauer, "Software Engineering." Information Processing: Proceedings of the IFIP Congress 1971, Ljubljana, Yugoslavia, August 23-28, 1971.
* [Software engineering is the] establishment and use of sound engineering principles to obtain economically software that is reliable and works on real machines efficiently.
** Friedrich Bauer (1972) "Software Engineering", In: Information Processing. p. 71
* Adding manpower to a late software project makes it later.
** Fred Brooks (1975) The Mythical Man-Month

### 1980s

* Software Engineering Economics is an invaluable guide to determining software costs, applying the fundamental concepts of microeconomics to software engineering, and utilizing economic analysis in software engineering decision making.
** Barry W. Boehm (1981) Software engineering economics. Abstract.
* Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification to maintaining the system after it has gone into use. In this definition, there are two key phrases:
** Engineering discipline Engineers make things work. They apply theories, methods and tools where these are appropriate... Engineers also recognise that they must work to organisational and financial constraints.
** All aspects of software production Software engineering is not just concerned with the technical processes of software development but also with activities such as software project management and with the development of tools, methods and theories to support software production.
** Ian Sommerville (1982/2007) Software Engineering. 8th edition. p. 7
* Einstein argued that there must be simplified explanations of nature, because God is not capricious or arbitrary. No such faith comforts the software engineer.
** Fred Brooks, essay "No Silver Bullet", 1987
* Applications programming is a race between software engineers, who strive to produce idiot-proof programs, and the universe which strives to produce bigger idiots. So far the Universe is winning.
** Rick Cook, The Wizardry Compiled (1989) Ch. 6

### 1990s

* [Software engineering is] the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.
** IEEE Standard Glossary of Software Engineering Terminology,” IEEE std 610.12-1990, 1990.
* As more and more good ideas come under the protection of patents, it may become increasingly unlikely that any one program can incorporate the state of the art in user-interface design without sinking into a quagmire of unending royalty payments and legal battles.
** Nathaniel Borenstein (1991) Programming as if people mattered : friendly programs, software engineering, and other noble delusions. p. 52
* The business of software building isn't really high-tech at all. It's most of all a business of talking to each other and writing things down. Those who were making major contributions to the field were more likely to be its best communicators than its best technicians.
** Tom DeMarco Why Does Software Cost So Much?: And Other Puzzles of the Information Age, (1995), p. 218

### 2000s

* The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don't master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus.
** Edsger W. Dijkstra (2000) EWD 1305: Answers to questions from students of Software Engineering
* In all engineering disciplines nowadays, software engineering excluded, there exists an established engineering process to develop a system, which is accompanied by a number of suited modeling description techniques. Software engineering, being a rather new field, has not as yet established any clear methodical guidance or a fully standardized modeling notation.
** Bernhard Rumpe (2002). "Executable Modeling with UML. A vision or a Nightmare." Issues & Trends of Information Technology Management in Contemporary Associations. p. 697
* The entire history of software engineering is that of the rise in levels of abstraction. Executable UML is the next logical, and perhaps inevitable, evolutionary step in the ever-rising level of abstraction at which programmers express software solutions. Rather than elaborate an analysis product into a design product and then write code, application developers of the future will use tools to translate abstract application constructs into executable entities. Someday soon, the idea of writing an application in Java or C++ will seem as absurd as writing an application in assembler does today. And the code generated from an Executable UML model will be as uninteresting and typically unexamined as the assembler pass of a third generation language compile is today.
** Grady Booch (2002) "The Limits of Software" Lecture September 2002; Partly cited in: Gerry Boyd (2003) "Executable UML: Diagrams for the Future." published at devx.com, February 5, 2003.
* Computing spread out much, much faster than educating unsophisticated people can happen. In the last 25 years or so, we actually got something like a pop culture, similar to what happened when television came on the scene and some of its inventors thought it would be a way of getting Shakespeare to the masses. But they forgot that you have to be more sophisticated and have more perspective to understand Shakespeare. What television was able to do was to capture people as they were. So I think the lack of a real computer science today, and the lack of real software engineering today, is partly due to this pop culture.
** Alan Kay ACM Queue A Conversation with Alan Kay Vol. 2, No. 9 - Dec/Jan 2004-2005
* Some people have called the book [The Mythical Man-Month, 1975] the "bible of software engineering". I would agree with that in one respect: that is, everybody quotes it, some people read it, and a few people go by it.
** Fred Brooks as quoted in Daniel Roth (2005) "Quoted Often, Followed Rarely" on money.cnn.com, December 12, 2005
* The amateur software engineer is always in search of magic, some sensational method or tool whose application promises to render software development trivial. It is the mark of the professional software engineer to know that no such panacea exist.
** Grady Booch, ‎Robert A. Maksimchuk, ‎Michael W. Engle (2007) Object-Oriented Analysis and Design with Applications Chapter 6.
* You are absolutely deluded, if not stupid, if you think that a worldwide collection of software engineers who can't write operating systems or applications without security holes, can then turn around and suddenly write virtualization layers without security holes.
** Theo de Raadt (2007) on the statement "Virtualization seems to have a lot of security benefits", misc@openbsd.org, October 23, 2007
* Software engineering concerns methods and techniques to develop large software systems. The engineering metaphor is used to emphasize a systematic approach to develop systems that satisfy organizational requirements and constraints.
** Hans van Vliet (2007) Software Engineering: Principles and Practice. p. 2

### 2010s

* Far too often, "software engineering" is neither engineering nor about software.
** Bjarne Stroustrup Bjarne Stroustrup's FAQ: Did you really say that?. Retrieved on 2011-04-11.
* One of the difficulties in thinking about software is its huge variety. A function definition in a spreadsheet cell is software. A smartphone app is software. The flight management system for an Airbus A380 is software. A word processor is software. We shouldn't expect a single discipline of software engineering to cover all of these, any more than we expect a single discipline of manufacturing to cover everything from the Airbus A380 to the production of chocolate bars, or a single discipline of social organization to cover everything from the United Nations to a kindergarten. Improvement in software engineering must come bottom-up, from intense specialized attention to particular products.
** Michael A. Jackson in: K. De Grave (ed.) Formalism & Intuition in Software Development; A conversation with Michael A. Jackson conducted by Edgar G. Daylight and Bas van Vlijmen. 2015
* After forty years of currency the phrase "software engineering" still denotes no more then a vague and largely unfulfilled aspiration.
** Michael A. Jackson, cited in: Matti Tedre. The Science of Computing: Shaping a Discipline, 2014, p. 135.

## See also

* Engineering
* Software
* Software architecture
* Systems engineering

## External links

Software engineering at Wikiquote's sister projects: :
* Article at Wikipedia
* Definitions and translations from Wiktionary
* Media from Commons
* Learning resources from Wikiversity
* News stories from Wikinews
* Source texts from Wikisource
* Textbooks from Wikibooks