History of software engineering

Short description: None

This article covers the field of software engineering in the sense of one approach to software development; the terms are sometimes used as synonyms.

History of computing

Hardware

* Hardware before 1960
* Hardware 1960s to present

Software

* Software
* Unix
* Free software and open-source software

Computer science

* Artificial intelligence
* Compiler construction
* Computer science
* Operating systems
* Programming languages
* Prominent pioneers
* Software engineering

Modern concepts

* General-purpose CPUs
* Graphical user interface
* Internet
* Laptops
* Personal computers
* Video games
* World Wide Web

By country

* Bulgaria
* Poland
* Romania
* Soviet Bloc
* Soviet Union
* Yugoslavia

Timeline of computing

* before 1950
* 1950–1979
* 1980–1989
* 1990–1999
* 2000–2009
* 2010–2019
* more timelines ...

Glossary of computer science

* Category

* v
* t
* e

The history of software engineering begins around the 1960s. Writing software has evolved into a profession concerned with how best to maximize the quality of software and of how to create it. Quality can refer to how maintainable software is, to its stability, speed, usability, testability, readability, size, cost, security, and number of flaws or "bugs", as well as to less measurable qualities like elegance, conciseness, and customer satisfaction, among many other attributes. How best to create high quality software is a separate and controversial problem covering software design principles, so-called "best practices" for writing code, as well as broader management issues such as optimal team size, process, how best to deliver software on time and as quickly as possible, work-place "culture", hiring practices, and so forth. All this falls under the broad rubric of software engineering.[1]

## Contents

* 1 Overview
* 2 1945 to 1965: The origins
* 3 1965 to 1985: The software crisis and operating systems
* 4 1985 to 1989: "No Silver Bullet"
* 4.1 Software projects
* 5 1990 to 1999: Prominence of the Internet
* 6 2000 to 2015: Lightweight methodologies
* 6.1 Current trends in software engineering
* 6.1.1 Aspects
* 6.1.2 Experimental
* 6.1.3 Software product lines
* 6.2 Software engineering today
* 7 Sub-disciplines
* 7.1 Artificial intelligence
* 7.1.1 Languages
* 8 Prominent figures in the history of software engineering
* 9 See also
* 10 References
* 11 External links

## Overview

The evolution of software engineering is notable in a number of areas:

* Emergence as a profession: By the early 1980s software engineering had already emerged as a bona fide profession,[2] to stand beside computer science and traditional engineering. * Role of women: Before 1970 men filling the more prestigious and better paying hardware engineering roles often delegated the writing of software to women, and legends such as Grace Hopper or Margaret Hamilton filled many computer programming jobs.[3][4]
Today, fewer women work in software engineering than in other professions, a situation whose cause is not identified. Many academic and professional organizations [who?] consider this situation unbalanced and are trying hard to solve it.[5]

## 1945 to 1965: The origins

Early usages for the term software engineering include a 1965 letter from ACM president Anthony Oettinger,[6][7] lectures by Douglas T. Ross at MIT in the 1950s.[8] Margaret H. Hamilton is the person who came up with the idea of naming the discipline, software engineering, as a way of giving it legitimacy during the development of the Apollo Guidance Computer.[9][10]

> I fought to bring the software legitimacy so that it—and those building it—would be given its due respect and thus I began to use the term 'software engineering' to distinguish it from hardware and other kinds of engineering, yet treat each type of engineering as part of the overall systems engineering process. When I first started using this phrase, it was considered to be quite amusing. It was an ongoing joke for a long time. They liked to kid me about my radical ideas. Software eventually and necessarily gained the same respect as any other discipline

— Margaret Hamilton, 2014 interview with El País[11]

The NATO Science Committee sponsored two conferences[12] on software engineering in 1968 (Garmisch, Germany) and 1969, which gave the field its initial boost. Many believe these conferences marked the official start of the profession of software engineering.[6][13]

## 1965 to 1985: The software crisis and operating systems

Software engineering was spurred by the so-called software crisis of the 1960s, 1970s, and 1980s, which identified many of the problems of software development. Many projects ran over budget and schedule. Some projects caused property damage. Through negligence in publishing software with critical bugs, some lost their lives due to software failures. One of the most striking examples of harm through software bugs was the Therac-25 race condition bug. The bug caused a radiation therapy machine to administer overdoses of radiation in cases where low doses should have been used. The software crisis was originally defined in terms of productivity, but evolved to emphasize quality. Some used the term software crisis to refer to their inability to hire enough qualified programmers. During this time, Silicon Valley cemented itself as the best location for software engineers to work.[14] * Cost and Budget Overruns: The OS/360 operating system was a classic example. This decade-long project from the 1960s eventually produced one of the most complex software systems at the time.[13] OS/360 was one of the first large (1000 programmers ) software projects. Fred Brooks claims in The Mythical Man-Month that he made a multimillion-dollar mistake of not developing a coherent architecture before starting development.[13]

* Life and Death: Software defects can kill. Embedded systems used in radiotherapy machines prove the ability to fail so catastrophically that they administered lethal doses of radiation to patients. The most famous of these failures are the Therac-25 incidents.[15]

Peter G. Neumann has kept a contemporary list of software problems and disasters.[16] The software crisis has been fading from view, because it is psychologically extremely difficult to remain in crisis mode for a protracted period (more than 20 years). Nevertheless, software – especially real-time embedded software – remains risky and is pervasive, and it is crucial not to give in to complacency. Over the last 10–15 years Michael A. Jackson has written extensively about the nature of software engineering, has identified the main source of its difficulties as lack of specialization, and has suggested that his problem frames provide the basis for a "normal practice" of software engineering, a prerequisite if software engineering is to become an engineering science.[17]

One of the largest projects undertaken by software engineers during this time period was the development of modern operating systems. Starting in Bell Labs and then moving to UC Berkeley, Ken Thompson and Dennis Ritchie, among other software engineers, worked to create Unix V6 in 1975. Unix V6 was a landmark operating system that set standards for future operating systems and is used today to educate students about proper operating system principles.[18] Moreover, future operating systems built on Unix V6's methods, and its descendants can be grouped into five types of operating system paradigms: Grassroots Systems, Large-Scale Systems, Hybrid Systems, Experimental Systems, and Minor Systems.[19] In contrast with Unix, software engineers at MIT in 1983 built GNU (literally "GNU's Not Unix") as an open source alternative to Unix. As an early open source software, GNU was beloved by a small group of developers and its work grew the open source software development community in the 80s.[20]

## 1985 to 1989: "No Silver Bullet"

For decades, solving the software crisis was paramount to researchers and companies producing software tools.

* During the 1990s, the cost of ownership and maintenance increased by 30% over the 1980s.
* In 1995, statistics showed that half of surveyed development projects were operational, but were not considered successful.
* The average software project overshoots its schedule by half.
* Three-quarters of all large software products delivered to the customer are failures that are either not used at all, or do not meet the customer's requirements.

### Software projects

* Tools: Especially emphasized were tools: structured programming, object-oriented programming, CASE tools such as ICL's CADES CASE system,[21] Ada, documentation, and standards were touted as silver bullets.
* Discipline: Some pundits argued that the software crisis was due to the lack of discipline of programmers.
* Formal methods: Some believed that if formal engineering methodologies would be applied to software development, then production of software would become as predictable an industry as other branches of engineering. They advocated proving all programs correct.
* Process: Many advocated the use of defined processes and methodologies like the Capability Maturity Model.
* Professionalism: This led to work on a code of ethics, licenses, and professionalism.

Some[who?] interpret no silver bullet to mean that software engineering failed.[clarification needed] However, with further reading, Brooks goes on to say: "We will surely make substantial progress over the next 40 years; an order of magnitude over 40 years is hardly magical ..."

## 1990 to 1999: Prominence of the Internet

## 2000 to 2015: Lightweight methodologies

### Current trends in software engineering

#### Aspects

Aspects help software engineers deal with quality attributes by providing tools to add or remove boilerplate code from many areas in the source code. Aspects describe how all objects or functions should behave in particular circumstances. For example, aspects can add debugging, logging, or locking control into all objects of particular types. Researchers are currently working to understand how to use aspects to design general-purpose code. Related concepts include generative programming and templates.

#### Experimental

Experimental software engineering is a branch of software engineering interested in devising experiments on software, in collecting data from the experiments, and in devising laws and theories from this data.

#### Software product lines

Software product lines, aka product family engineering, is a systematic way to produce families of software systems, instead of creating a succession of completely individual products. This method emphasizes extensive, systematic, formal code reuse, to try to industrialize the software development process.

The Future of Software Engineering conference (FOSE), held at ICSE 2000, documented the state of the art of SE in 2000 and listed many problems to be solved over the next decade. The FOSE tracks at the ICSE 2000 [22] and the ICSE 2007[23] conferences also help identify the state of the art in software engineering.

### Software engineering today

In 2006, Money Magazine and Salary.com rated software engineering as the best job in America in terms of growth, pay, stress levels, flexibility in hours and working environment, creativity, and how easy it is to enter and advance in the field.[24]

## Sub-disciplines

### Artificial intelligence

A wide variety of platforms has allowed different aspects of AI to develop, ranging from expert systems such as Cyc to deep learning to robot platforms such as the Roomba with open interface.[25] Recent advances in deep artificial neural networks and distributed computing have led to a proliferation of software libraries, including Deeplearning4j, TensorFlow, Theano and Torch.

A 2011 McKinsey Global Institute study found a shortage of 1.5 million highly trained data and AI professionals and managers[26] and a number of private bootcamps have developed programs to meet that demand, including free programs like The Data Incubator or paid programs like General Assembly.[27]

#### Languages

Main article: List of programming languages for artificial intelligence

Early symbolic AI inspired Lisp and Prolog, which dominated early AI programming. Modern AI development often uses mainstream languages such as Python or C++,[28] or niche languages such as Wolfram Language.[29]

## Prominent figures in the history of software engineering

* Charles Bachman (1924–2017) is particularly known for his work in the area of databases.
* László Bélády (1928–2021) the editor-in-chief of the IEEE Transactions on Software Engineering in the 1980s.
* Fred Brooks (1931-2022), best known for managing the development of OS/360 and for The Mythical Man-Month.
* Peter Chen (born 1947) known for the development of entity–relationship modeling.
* Edsger W. Dijkstra (1930–2002) developed the framework for a form of structured programming.
* David Parnas (born 1941) developed the concept of information hiding in modular programming.
* Michael A. Jackson (born 1936) software engineering methodologist responsible for JSP method of program design; JSD method of system development (with John Cameron); and Problem Frames approach for analysing and structuring software development problems.
* Richard Stallman, created the GNU system utilities and championed free software.

## See also

* History of software
* History of computer science
* History of programming languages

## References

1. ↑ "CS302: Jared King's "The History of Software"" (in en-us). https://learn.saylor.org/mod/page/view.php?id=12353.
2. ↑ "Software engineering … has recently emerged as a discipline in its own right." Sommerville, Ian (1985). Software Engineering. Addison-Wesley. ISBN 978-0-201-14229-7.
3. ↑ Abbate, Janet (2012). Recoding Gender. Cambridge, MA: MIT Press. pp. 39. ISBN 978-0262534536. https://archive.org/details/recodinggenderwo00abba.
4. ↑ Ensmenger, Nathan (2012). The Computer Boys Take Over. Cambridge, MA: MIT Press. ISBN 978-0262517966.
5. ↑ "Episode 576: When Women Stopped Coding". Oct 17, 2014. https://www.npr.org/sections/money/2014/10/17/356944145/episode-576-when-women-stopped-coding.
6. ↑ 6.0 6.1 Meyer, Bertrand (April 4, 2013). "The origin of "software engineering"". https://bertrandmeyer.com/2013/04/04/the-origin-of-software-engineering/.
7. ↑ Tadre, Matti (2014-12-03). The Science of Computing. CRC Press. p. 121. ISBN 978-1-4822-1770-4.
8. ↑ Mahoney, Michael. "The Roots of Software Engineering". CWI Quarterly 3 (4): 325–334. http://thecorememory.com/TROSE.pdf. Retrieved Feb 10, 2023.
9. ↑ 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering (31 May 2018). "ICSE 2018 - Plenary Sessions - Margaret Hamilton". https://www.youtube.com/watch?v=ZbVOF0Uk5lU.
10. ↑ Rayl, A.J.S. (October 16, 2008). "NASA Engineers and Scientists-Transforming Dreams Into Reality". NASA 50th anniversary website. NASA. http://www.nasa.gov/50th/50th_magazine/scientists.html.
11. ↑ "First Software Engineer | IEEE Computer Society" (in en-US). 5 October 2018. https://www.computer.org/publications/tech-news/events/what-to-know-about-the-scientist-who-invented-the-term-software-engineering/.
12. ↑ Brian Randell (2001). "NATO Software Engineering Conferences". ncl.ac.uk. http://homepages.cs.ncl.ac.uk/brian.randell/NATO/.
13. ↑ 13.0 13.1 13.2 King, Jared (2016). "Jared King's "The History of Software"". CS302: Software Engineering. Saylor.org. https://learn.saylor.org/mod/page/view.php?id=12353.
14. ↑ Saxenian, Annalee (1983). "The Genesis of Silicon Valley". Built Environment 9 (1): 7–17. ISSN 0263-7960. https://www.jstor.org/stable/23286110.
15. ↑ Leveson, N.G.; Turner, C.S. (1993-07-01). "An investigation of the Therac-25 accidents". Computer 26 (7): 18–41. doi:10.1109/MC.1993.274940. ISSN 0018-9162.
16. ↑ Neumann, Peter G.. "RISKS-LIST: RISKS-FORUM Digest". The Risks Digest. http://catless.ncl.ac.uk/Risks.
17. ↑ Michael Jackson, "Engineering and Software Engineering" in S Nanz ed, The Future of Software Engineering, Springer Verlag 2010; Michael Jackson, Problem Frames: Analyzing and Structuring Software Development Problems; Addison-Wesley, 2001
18. ↑ Kominácká, Jitka; Kominácký, Ladislav (2016). "Význam hodnoty lokality jako nedílný indikátor kvality života specifického regionu". XIX. mezinárodní kolokvium o regionálních vědách. Sborník příspěvků. (Brno: Masaryk university): 621–627. doi:10.5817/cz.muni.p210-8273-2016-79. ISBN 978-80-210-8272-4. https://doi.org/10.5817/cz.muni.p210-8273-2016-79.
19. ↑ Lauer, Hugh C. (1981-12-01). "Observations on the development of an operating system". SIGOPS Oper. Syst. Rev. 15 (5): 30–36. doi:10.1145/1067627.806588. ISSN 0163-5980. https://dl.acm.org/doi/abs/10.1145/1067627.806588.
20. ↑ Bretthauer, David (2001-12-26). "Open Source Software: A History". Published Works. https://digitalcommons.lib.uconn.edu/libr_pubs/7/.
21. ↑ D.J.Pearson "The use and abuse of a software engineering system" National Computer Conference 1979
22. ↑ "ICSE2000: Call for Participation". ul.ie. http://www.ul.ie/~icse2000/.
23. ↑ "ICSE 2007: Home". ucl.ac.uk. http://web4.cs.ucl.ac.uk/icse07/.
24. ↑ Kalwarski. "Best Jobs in America". MONEY Magazine. CNN. https://money.cnn.com/magazines/moneymag/bestjobs/2006/. , "MONEY Magazine and Salary.com researched hundreds of jobs, considering their growth, pay, stress-levels and other factors. These careers ranked highest. 1. Software Engineer..."
25. ↑ "Hacking Roomba". hackingroomba.com. http://hackingroomba.com/.
26. ↑ Manyika, James; Chui, Michael; Bughin, Jaques; Brown, Brad; Dobbs, Richard; Roxburgh, Charles; Byers, Angela Hung (May 2011). Big Data: The next frontier for innovation, competition, and productivity. McKinsey Global Institute. http://www.mckinsey.com/Insights/MGI/Research/Technology_and_Innovation/Big_data_The_next_frontier_for_innovation. Retrieved 16 January 2016.
27. ↑ "NY gets new boot camp for data scientists: It's free but harder to get into than Harvard". Venture Beat. https://venturebeat.com/2014/04/15/ny-gets-new-bootcamp-for-data-scientists-its-free-but-harder-to-get-into-than-harvard/.
28. ↑ Pointer, Ian. "C++ Java". InfoWorld. infoworld.com. https://www.infoworld.com/article/3186599/artificial-intelligence/the-5-best-programming-languages-for-ai-development.html.
29. ↑ Ferris, Robert (7 April 2016). "How Steve Jobs' friend changed the world of math". CNBC. https://www.cnbc.com/2016/04/07/stephen-wolfram-why-this-brilliant-physicist-ditched-his-job.html.

## External links

* Oral history interview with Bruce H. Barnes, Charles Babbage Institute, University of Minnesota. Barnes describes the National Science Foundation (NSF) and its support of research in theoretical computer science, computer architecture, numerical methods, and software engineering, and the development of networking.
* Oral history interview with Laszlo A. Belady, Charles Babbage Institute, University of Minnesota.

* v
* t
* e

Software engineering

Fields|

* Computer programming
* Requirements engineering
* Software deployment
* Software design
* Software maintenance
* Software testing
* Systems analysis
* Formal methods

Concepts|

* Data modeling
* Enterprise architecture
* Functional specification
* Modeling language
* Orthogonality
* Programming paradigm
* Software
* Software archaeology
* Software architecture
* Software configuration management
* Software development methodology
* Software development process
* Software quality
* Software quality assurance
* Software verification and validation
* Structured analysis

Orientations|

* Agile
* Aspect-oriented
* Object orientation
* Ontology
* Service orientation
* SDLC

Models|

| Developmental|

* Agile
* EUP
* Executable UML
* Incremental model
* Iterative model
* Prototype model
* RAD
* UP
* Scrum
* Spiral model
* V-Model
* Waterfall model
* XP

|

Other|

* SPICE
* CMMI
* Data model
* ER model
* Function model
* Information model
* Metamodeling
* Object model
* Systems model
* View model

Languages|

* IDEF
* UML
* USL
* SysML

Software
engineers

* Victor Basili
* Kent Beck
* Grady Booch
* Fred Brooks
* Barry Boehm
* Peter Chen
* Danese Cooper
* Ward Cunningham
* Tom DeMarco
* Edsger W. Dijkstra
* Delores M. Etter
* Martin Fowler
* Adele Goldstine
* Margaret Hamilton
* C. A. R. Hoare
* Lois Haibt
* Mary Jean Harrold
* Grace Hopper
* Watts Humphrey
* Michael A. Jackson
* Ivar Jacobson
* Alan Kay
* Nancy Leveson
* Stephen J. Mellor
* Bertrand Meyer
* David Parnas
* Trygve Reenskaug
* Winston W. Royce
* James Rumbaugh
* Mary Shaw
* Peri Tarr
* Elaine Weyuker
* Niklaus Wirth
* Edward Yourdon

Related fields|

* Computer science
* Computer engineering
* Project management
* Risk management
* Systems engineering

* Category
* Commons

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/History of software engineering. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=History_of_software_engineering&oldid=4228971"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template