Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Software engineering
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Terminology == === Definition === Notable definitions of software engineering include: * "The systematic application of scientific and technological knowledge, methods, and experience to the design, implementation, testing, and documentation of software."—The Bureau of Labor Statistics—[[IEEE]] ''Systems and software engineering – Vocabulary''<ref name="IEEE24765">''Systems and software engineering – Vocabulary'', [[ISO]]/[[International Electrotechnical Commission|IEC]]/[[IEEE]] std 24765:2010(E), 2010.</ref> * "The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software."—[[IEEE]] ''Standard Glossary of Software Engineering Terminology''<ref name="IEEE610a">''IEEE Standard Glossary of Software Engineering Terminology'', [[IEEE]] std 610.12-1990, 1990.</ref> * "An engineering discipline that is concerned with all aspects of software production."—[[Ian Sommerville (academic)|Ian Sommerville]]<ref name="Sommerville1">{{cite book | last=Sommerville |first=Ian |author-link=Ian Sommerville (academic) | title=Software Engineering |orig-year=1982 | chapter-url=http://www.pearsoned.co.uk/HigherEducation/Booksby/Sommerville/ | edition=8th |year=2007 | publisher=Pearson Education |location=Harlow, England | isbn=978-0-321-31379-9 |pages=7 |chapter=1.1.2 What is software engineering? | quote=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:<br /> 1. ''Engineering discipline'' Engineers make things work. They apply theories, methods and tools where these are appropriate [. . .] Engineers also recognize that they must work to organizational and financial constraints. [. . .]<br /> 2. ''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. }}</ref> * "The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines."—[[Friedrich L. Bauer|Fritz Bauer]]<ref name="Bauer1">{{cite journal| title= Software Engineering | journal = Information Processing | volume = 71 | pages = 530–538}}</ref> * "A branch of computer science that deals with the design, implementation, and maintenance of complex [[computer program]]s."—[[Merriam-Webster]]<ref>{{Cite web|url=https://www.merriam-webster.com/dictionary/software+engineering|title=Definition of SOFTWARE ENGINEERING|website=www.merriam-webster.com|language=en|access-date=2019-11-25}}</ref> * {{"'}}Software engineering' encompasses not just the act of writing code, but all of the tools and processes an organization uses to build and maintain that code over time. [...] Software engineering can be thought of as 'programming integrated over time.{{'"}}—Software Engineering at [[Google]]<ref>{{cite book | last1=Winters | first1 =Titus | last2=Manshrec | first2=Tom | last3=Wright | first3=Hyrum | title=Software Engineering at Google | year=2020 | publisher= O'Reilly Media, Inc. | isbn=978-1-492-08279-8 | pages=xix–xx, 6–7 |chapter= Preface, Programming Over Time | quote=We propose that "software engineering" encompasses not just the act of writing code, but all of the tools and processes an organization uses to build and maintain that code over time. What practices can a software organization introduce that will best keep its code valuable over the long term? How can engineers make a codebase more sustainable and the software engineering discipline itself more rigorous?}}</ref> The term has also been used less formally: * as the informal contemporary term for the broad range of activities that were formerly called [[computer programming]] and [[systems analysis]]<ref>{{cite web |url=http://www.micsymposium.org/mics_2002/SALAH.PDF|publisher=35th Annual Midwest Instruction and Computing Symposium|date=2002-04-05|access-date=2006-09-13|author=Akram I. Salah|title=Engineering an Academic Program in Software Engineering}}: "For some, software engineering is just a glorified name for programming. If you are a programmer, you might put 'software engineer' on your business card—never 'programmer' though."</ref> * as the broad term for all aspects of the ''practice'' of computer programming, as opposed to the ''theory'' of computer programming, which is formally studied as a sub-discipline of [[computer science]]<ref name="p. 26">Mills, Harlan D., J. R. Newman, and C. B. Engle, Jr., "An Undergraduate Curriculum in Software Engineering," in {{cite book|title=Software Engineering Education: SEI Conference 1990, Pittsburgh, Pennsylvania, USA, April 2–3,...|first = Lionel E.|last=Deimel|year=1990|publisher=Springer|isbn=978-0-387-97274-9}},[https://books.google.com/books?id=ZuWbyy2blMEC&pg=PA26 p. 26]: "As a practical matter, we regard software engineering as the necessary preparation for the practicing, software development and maintenance professional. The Computer Scientist is preparing for further theoretical studies..."</ref> * 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 (law)|codification]] of recommended practices<ref>{{cite journal |title=Realising evidence-based software engineering |author1=Barbara Kitchevnham |author2=David Budgen |author3=Pearl Brereton |author4=Stephen Linkman |journal=[[ACM SIGSOFT Software Engineering Notes]] |date=2005 |volume=30 |issue=4 |pages=1–3 |doi=10.1145/1082983.1083175 |quote="We believe that software engineering can only advance as an engineering discipline by moving away from its current dependence upon advocacy and analysis, ..."}}</ref> === Suitability === Individual commentators have disagreed sharply on how to define ''software engineering'' or its legitimacy as an engineering discipline. [[David Parnas]] has said that software engineering is, in fact, a form of engineering.<ref>{{cite journal | last = Parnas| first = David L.| author-link = David Parnas| year = 1998| title = Software Engineering Programmes are not Computer Science Programmes| journal = Annals of Software Engineering| volume = 6| pages = 19–37| doi = 10.1023/A:1018949113292| s2cid = 35786237| url=http://citeseer.ist.psu.edu/parnas98software.html}}, p. 19: "Rather than treat software engineering as a subfield of computer science, I treat it as an element of the set, {Civil Engineering, Mechanical Engineering, Chemical Engineering, Electrical Engineering,....}."</ref><ref>{{cite journal | last = Parnas| first = David L.| year = 1998| title = Software Engineering Programmes are not Computer Science Programmes| journal = Annals of Software Engineering| volume = 6 | pages = 19–37| doi = 10.1023/A:1018949113292| s2cid = 35786237| url=http://citeseer.ist.psu.edu/parnas98software.html}}, p. 20: "This paper argues that the introduction of accredited professional programs in software engineering, programmes that are modelled on programmes in traditional engineering disciplines will help to increase both the quality and quantity of graduates who are well prepared, by their education, to develop trustworthy software products." </ref> [[Steve McConnell]] has said that it is not, but that it should be.<ref>{{cite book| last = McConnell| first = Steve| author-link = Steve McConnell| date = August 2003| title = Professional Software Development: Shorter Schedules, Better Projects, Superior Products, Enhanced Careers| publisher = Addison-Wesley| location = Boston, MA| isbn = 0-321-19367-9| url-access = registration| url = https://archive.org/details/professionalsoft00mcco_0}}, p. 39: "In my opinion, the answer to that question is clear: Professional software development should be engineering. Is it? No. But should it be? Unquestionably, yes. "</ref> [[Donald Knuth]] has said that programming is an art and a science.<ref>{{cite journal|last=Knuth | first=Donald| author-link=Donald Knuth |year = 1974| title= Computer Programming as an Art | journal = Communications of the ACM | volume = 17 | issue = 12 | pages = 667–673 | url=http://disciplinas.lia.ufc.br/matdis061/arquivos/knuth-turingaward.pdf | doi=10.1145/361604.361612| s2cid=207685720| doi-access=free }}Transcript of the 1974 [[Turing Award]] lecture.</ref> [[Edsger W. Dijkstra]] claimed that the terms ''software engineering'' and ''software engineer'' have been misused in the United States.<ref>{{cite web| url = http://www.cs.utexas.edu/users/EWD/transcriptions/EWD11xx/EWD1165.html| title = There is still a war going on (manuscript Austin, 3 December 1993)| access-date = February 17, 2007 | last = Dijkstra | first = Edsger W| author-link = Edsger Dijkstra| author2=transcribed by Mario Béland | orig-year = First published December 3, 1993| date = November 23, 2004| work = E. W. Dijkstra Archive| publisher = The University of Texas at Austin, Department of Computer Sciences| quote = When the term was coined in 1968 by F.L. Bauer of the Technological University of Munich, I welcomed it. [. . .] I interpreted the introduction of the term "software engineering" as an apt reflection of the fact that the design of software systems was an activity par excellence for the mathematical engineer. [. . .]. As soon the term arrived in the USA, it was relieved of all its technical content. It had to be so for in its original meaning it was totally unacceptable [. . .] In the meantime, software engineering has become an almost empty term, as was nicely demonstrated by Data General who overnight promoted all its programmers to the exalted rank of "software engineer"! }}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)