The history of software engineering begins in 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.
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., 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 Margaret Hamilton may refer to:
* Margaret Hamilton (nurse) (1840–1922), American nurse in the Civil War
* Maggie Hamilton (1867–1952), Scottish artist
* Margaret Hamilton (educator) (1871–1969), American educator
* Margaret Hamilton (actre ...
filled many
computer programming jobs.
Today, fewer women work in software engineering than in other professions, a situation whose cause is not clearly identified. Many academic and professional organizations consider this situation unbalanced and are trying hard to solve it.
* Processes:
Processes
A process is a series or set of activities that interact to produce a result; it may occur once-only or be recurrent or periodic.
Things called a process include:
Business and management
*Business process, activities that produce a specific se ...
have become a big part of software engineering. They are hailed for their potential to improve software but sharply criticized for their potential to constrict programmers.
* Cost of hardware: The relative cost of software versus hardware has changed substantially over the last 50 years. When
mainframes were expensive and required large support staffs, the few organizations buying them also had the resources to fund large, expensive custom software engineering projects. Computers are now much more numerous and much more powerful, which has several effects on software. The larger market can support large projects to create
commercial off the shelf software, as done by companies such as
Microsoft. The cheap machines allow each programmer to have a terminal capable of fairly rapid
compilation. The programs in question can use techniques such as
garbage collection, which make them easier and faster for the programmer to write. On the other hand, many fewer organizations are interested in employing programmers for large custom software projects, instead using
commercial off the shelf software as much as possible.
1945 to 1965: The origins
Putative origins for the term ''software engineering'' include a 1965 letter from ACM president
Anthony Oettinger,
lectures by
Douglas T. Ross
Douglas Taylor "Doug" Ross (21 December 1929 – 31 January 2007) was an American computer scientist pioneer, and chairman of SofTech, Inc. He is most famous for originating the term CAD for computer-aided design, and is considered to be the fath ...
at MIT in the 1950s.
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
The Apollo Guidance Computer (AGC) was a digital computer produced for the Apollo program that was installed on board each Apollo command module (CM) and Apollo Lunar Module (LM). The AGC provided computation and electronic interfaces for guidan ...
.
The
NATO Science Committee The NATO Science for Peace and Security (SPS) Programme is a NATO programme supporting civil science cooperation and innovation. Created in 2006 as the merger of the NATO Science Committee (SCOM) and the Committee on the Challenges of Modern Societ ...
sponsored two conferences on software engineering in 1968 (
Garmisch, Germany — see ''
conference report'') and 1969, which gave the field its initial boost. Many believe these conferences marked the official start of the profession of ''software engineering''.
1965 to 1985: The software crisis
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. A few projects caused loss of life. The software crisis was originally defined in terms of
productivity
Productivity is the efficiency of production of goods or services expressed by some measure. Measurements of productivity are often expressed as a ratio of an aggregate output to a single input or an aggregate input used in a production proces ...
, but evolved to emphasize
quality. Some used the term ''software crisis'' to refer to their inability to hire enough qualified programmers.
* 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.
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.
* Property Damage: Software defects can cause property damage. Poor
software security allows hackers to steal identities, costing time, money, and reputations.
* Life and Death: Software defects can kill.
Embedded systems used in
radiotherapy
Radiation therapy or radiotherapy, often abbreviated RT, RTx, or XRT, is a therapy using ionizing radiation, generally provided as part of cancer treatment to control or kill malignant cells and normally delivered by a linear accelerator. Radia ...
machines prove the ability to fail so catastrophically that they administered
lethal doses of
radiation
In physics, radiation is the emission or transmission of energy in the form of waves or particles through space or through a material medium. This includes:
* ''electromagnetic radiation'', such as radio waves, microwaves, infrared, visi ...
to patients. The most famous of these failures are the ''
Therac-25'' incidents.
Peter G. Neumann
Peter Gabriel Neumann (born 1932) is a computer-science researcher who worked on the Multics operating system in the 1960s. He edits the RISKS Digest columns for ACM ''Software Engineering Notes'' and ''Communications of the ACM''. He founded ...
has kept a contemporary list of software problems and disasters. 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.
1985 to 1989: "''No Silver Bullet''"
For decades, solving the software crisis was paramount to researchers and companies producing software tools.
The cost of owning and maintaining software in the 1980s was twice as expensive as developing the software.
* 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
Seemingly, every new technology and practice from the 1970s through the 1990s was trumpeted as a ''
silver bullet'' to solve the software crisis. Tools, discipline,
formal methods, process, and professionalism were touted as silver bullets:
* Tools: Especially emphasized were tools:
structured programming
Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection ( if/then/else) and repetition ( ...
,
object-oriented programming,
CASE
Case or CASE may refer to:
Containers
* Case (goods), a package of related merchandise
* Cartridge case or casing, a firearm cartridge component
* Bookcase, a piece of furniture used to store books
* Briefcase or attaché case, a narrow box to c ...
tools such as ICL's
CADES CASE system,
Ada,
documentation
Documentation is any communicable material that is used to describe, explain or instruct regarding some attributes of an object, system or procedure, such as its parts, assembly, installation, maintenance and use. As a form of knowledge manageme ...
, and
standards Standard may refer to:
Symbols
* Colours, standards and guidons, kinds of military signs
* Standard (emblem), a type of a large symbol or emblem used for identification
Norms, conventions or requirements
* Standard (metrology), an object th ...
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 The Capability Maturity Model (CMM) is a development model created in 1986 after a study of data collected from organizations that contracted with the U.S. Department of Defense, who funded the research. The term "maturity" relates to the degree of ...
.
* Professionalism: This led to work on a code of ethics, licenses, and professionalism.
In 1986,
Fred Brooks published his ''
No Silver Bullet'' article, arguing that no individual technology or practice would ever make a 10-fold improvement in productivity within 10 years.
Debate about silver bullets raged over the following decade. Advocates for
Ada,
components
Circuit Component may refer to:
•Are devices that perform functions when they are connected in a circuit.
In engineering, science, and technology Generic systems
* System components, an entity with discrete structure, such as an assem ...
, and processes continued arguing for years that their favorite technology would be a silver bullet. Skeptics disagreed. Eventually, almost everyone accepted that no silver bullet would ever be found. Yet, claims about ''silver bullets'' pop up now and again, even today.
Some interpret ''
no silver bullet'' to mean that software engineering failed. 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 ..."
The search for a single key to success never worked. All known technologies and practices have only made incremental improvements to productivity and quality. Yet, there are no silver bullets for any other profession, either. Others interpret ''no silver bullet'' as proof that software engineering has finally matured and recognized that projects succeed due to hard work.
However, it could also be said that there are, in fact, a range of ''silver bullets'' today, including lightweight methodologies (see "
Project management"), spreadsheet calculators, customized
browsers, in-site search engines, database report generators, integrated design-test coding-editors with memory/differences/undo, and specialty shops that generate niche software, such as information web sites, at a fraction of the cost of totally customized web site development. Nevertheless, the field of software engineering appears too complex and diverse for a single "silver bullet" to improve most issues, and each issue accounts for only a small portion of all software problems.
1990 to 1999: Prominence of the Internet
The rise of the
Internet led to very rapid growth in the demand for international information display/e-mail systems on the World Wide Web. Programmers were required to handle illustrations, maps, photographs, and other images, plus simple animation, at a rate never before seen, with few well-known methods to optimize image display/storage (such as the use of thumbnail images).
The growth of browser usage, running on the
HyperText Markup Language (HTML), changed the way in which information-display and retrieval was organized. The widespread network connections led to the growth and prevention of international
computer virus
A computer virus is a type of computer program that, when executed, replicates itself by modifying other computer programs and inserting its own code. If this replication succeeds, the affected areas are then said to be "infected" with a compu ...
es on MS Windows computers, and the vast proliferation of spam e-mail became a major design issue in e-mail systems, flooding communication channels and requiring semi-automated pre-screening. Keyword-search systems evolved into web-based
search engine
A search engine is a software system designed to carry out web searches. They search the World Wide Web in a systematic way for particular information specified in a textual web search query. The search results are generally presented in a ...
s, and many software systems had to be re-designed, for international searching, depending on
search engine optimization (SEO) . Human natural-language translation systems were needed to attempt to translate the information flow in multiple foreign languages, with many software systems being designed for multi-language usage, based on design concepts from human translators. Typical computer-user bases went from hundreds, or thousands of users, to, often, many-millions of international users.
2000 to 2015: Lightweight methodologies
With the expanding demand for software in many smaller organizations, the need for inexpensive software solutions led to the growth of simpler, faster methodologies that developed running software, from requirements to deployment, quicker & easier. The use of rapid-prototyping evolved to entire ''lightweight methodologies'', such as
Extreme Programming (XP), which attempted to simplify many areas of software engineering, including requirements gathering and reliability testing for the growing, vast number of small software systems. Very large software systems still used heavily documented methodologies, with many volumes in the documentation set; however, smaller systems had a simpler, faster alternative approach to managing the development and maintenance of software calculations and algorithms, information storage/retrieval and display.
Current trends in software engineering
Software engineering is a young discipline, and is still developing. The directions in which software engineering is developing include:
Aspects
Aspects help software engineers deal with
quality attributes by providing tools to add or remove
boilerplate code
In computer programming, boilerplate code, or simply boilerplate, are sections of code that are repeated in multiple places with little to no variation. When using languages that are considered ''verbose'', the programmer must write a lot of boile ...
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
In computer programming and software development, debugging is the process of finding and resolving '' bugs'' (defects or problems that prevent correct operation) within computer programs, software, or systems.
Debugging tactics can involve in ...
,
logging
Logging is the process of cutting, processing, and moving trees to a location for transport. It may include skidding, on-site processing, and loading of trees or logs onto trucks or skeleton cars.
Logging is the beginning of a supply chain ...
, 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. Proponents of this method advocate that the nature of software is such that we can advance the knowledge on software through experiments only.
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 and the ICSE 2007 conferences also help identify the state of the art in software engineering.
Software engineering today
The profession is trying to define its boundary and content. The Software Engineering Body of Knowledge
SWEBOK has been tabled as an ISO standard during 2006 (ISO/IEC TR 19759).
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.
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
Deep learning (also known as deep structured learning) is part of a broader family of machine learning methods based on artificial neural networks with representation learning. Learning can be supervised, semi-supervised or unsupervised.
De ...
to robot platforms such as the
Roomba
Roomba is a series of autonomous robotic vacuum cleaners made by the company iRobot. Introduced in September 2002, they have a set of sensors that enable them to navigate the floor area of a home. These sensors can detect the presence of obstac ...
with open interface. 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
and a number of private bootcamps have developed programs to meet that demand, including free programs like
The Data Incubator
The Data Incubator is a data science education company. It offers corporate data science training and placement services. It is best known for an 8-week educational fellowship preparing students with Master's degrees and PhDs for careers in ...
or paid programs like
General Assembly.
Languages
Early symbolic AI inspired
Lisp
A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech.
Types
* A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lisping ...
and
Prolog, which dominated early AI programming. Modern AI development often uses mainstream languages such as
Python or
C++,
or niche languages such as
Wolfram Language.
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 (born 1931) best known for managing the development of
OS/360.
*
Peter Chen (born 1947) known for the development of
entity–relationship modeling.
*
Edsger W. Dijkstra
Edsger Wybe Dijkstra ( ; ; 11 May 1930 – 6 August 2002) was a Dutch computer scientist, programmer, software engineer, systems scientist, and science essayist. He received the 1972 Turing Award for fundamental contributions to developing progra ...
(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
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.
{{Software engineering
Software engineering
Software engineering
History of computing