Cannabis Ruderalis

Content deleted Content added
Pnm (talk | contribs)
new key for Category:Software engineering: " " using HotCat
Clean
(287 intermediate revisions by more than 100 users not shown)
Line 1: Line 1:
{{Short description|None}}
{{hatnote|This article covers the field of [[software engineering]] in the sense of one approach to [[software development]]; the terms are sometimes used as synonyms.}}
{{More citations needed|date=October 2008}}
{{History of computing}}
{{History of computing}}
From its beginnings in the 1940s, 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]].
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]].<ref>{{Cite web|url=https://learn.saylor.org/mod/page/view.php?id=12353|title=CS302: Jared King's "The History of Software"|website=learn.saylor.org|language=en-us|access-date=2018-02-17}}</ref>


== Overview ==
== Overview ==
The evolution of software engineering is notable in a number of areas:
There are a number of areas where the evolution of software engineering is notable:
* Emergence as a profession: By the early 1980s software engineering had already emerged as a ''bona fide'' [[software engineering professionalism|profession]],<ref>"Software engineering … has recently emerged as a discipline in its own right."

{{cite book
* Emergence as a profession: By the early 1980s<ref>
"Software engineering ... has recently emerged as a discipline in its own right."
{{ Cite book
| last=Sommerville
| last=Sommerville
| first=Ian
| first=Ian
Line 13: Line 14:
| publisher=Addison-Wesley
| publisher=Addison-Wesley
| year=1985
| year=1985
| origyear=1982
| orig-year=1982
| isbn = 0 201 14229 5
| isbn = 978-0-201-14229-7
}}</ref> to stand beside computer science and traditional engineering.{{citation needed|date=February 2016}}
| postscript=<!--None-->
* [[Women, girls and information technology|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 (scientist)|Margaret Hamilton]] filled many [[computer programming]] jobs.<ref>{{Cite book|title=Recoding Gender|url=https://archive.org/details/recodinggenderwo00abba|url-access=limited|last=Abbate|first=Janet|publisher=MIT Press|year=2012|isbn=978-0262534536|location=Cambridge, MA|pages=[https://archive.org/details/recodinggenderwo00abba/page/n47 39]}}</ref><ref>{{Cite book|title=The Computer Boys Take Over|last=Ensmenger|first=Nathan|publisher=MIT Press|year=2012|isbn=978-0262517966|location=Cambridge, MA}}</ref><br /> Today, fewer women work in software engineering than in other professions, a situation whose cause is not clearly identified. Many academic and professional organizations {{Who|date=February 2015}} consider this situation unbalanced and are trying hard to solve it.<ref>{{Cite web|url=https://www.npr.org/sections/money/2014/10/17/356944145/episode-576-when-women-stopped-coding|title=Episode 576: When Women Stopped Coding|date=Oct 17, 2014|website=NPR Planet Money|access-date=June 27, 2018}}</ref>
}}
* Processes: [[Software development process|Processes]] 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.{{citation needed|date=February 2016}}
</ref>, software engineering had already emerged as a bona fide profession, to stand beside computer science and traditional engineering. See also [[software engineering professionalism]].
* Cost of hardware: The relative cost of software versus hardware has changed substantially over the last 50 years. When [[Mainframe computer|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 [[Compiler|compilation]]. The programs in question can use techniques such as [[garbage collection (computer science)|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.{{citation needed|date=February 2016}}
* [[Women, girls and information technology|Role of women]]: In the 1940s, 1950s, and 1960s, men often filled the more prestigious and better paying [[hardware]] [[engineering]] roles, but often delegated the writing of software to [[women]].{{Citation needed|date=December 2009}} [[Grace Hopper]], [[Jamie Fenton]] and many other unsung women filled many [[programming]] [[employment|jobs]] during the first several decades of software engineering.{{Citation needed|date=December 2009}} Today, many fewer women work in software engineering than in other professions, a situation whose cause is not clearly identified. It is often attributed to [[sexual discrimination]], [[cyberculture]] or bias in education.{{Who|date=December 2009}} Many academic and professional organizations consider this situation unbalanced are trying hard to solve it.
* Processes: [[Software development process|Processes]] have become a big part of software engineering and are hailed for their potential to improve software and 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 [[Mainframe computer|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 [[Compiler|compilation]]. The programs in question can use techniques such as [[garbage collection (computer science)|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.


== The Pioneering Era ==
== 1945 to 1965: The origins ==
Early usages for the term ''software engineering'' include a 1965 letter from ACM president [[Anthony Oettinger]],<ref name="nato-68-or-acm-662">{{cite web |last=Meyer |first=Bertrand |author-link=Bertrand Meyer |date=April 4, 2013 |title=The origin of "software engineering" |url=https://bertrandmeyer.com/2013/04/04/the-origin-of-software-engineering/ |access-date=2016-11-25}}</ref><ref>{{cite book |last=Tadre |first=Matti |title=The Science of Computing |date=2014-12-03 |publisher=CRC Press |isbn=978-1-4822-1770-4 |page=121}}</ref> lectures by [[Douglas T. Ross]] at MIT in the 1950s.<ref>{{cite journal |last=Mahoney |first=Michael |title=The Roots of Software Engineering |url=http://thecorememory.com/TROSE.pdf |journal=CWI Quarterly |volume=3 |issue=4 |pages=325–334 |archive-url=https://web.archive.org/web/20110220235133/http://thecorememory.com/TROSE.pdf |access-date=Feb 10, 2023|archive-date=2011-02-20 }}</ref> [[Margaret Hamilton (scientist)|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]].<ref>{{cite web |author=2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering |title=ICSE 2018 - Plenary Sessions - Margaret Hamilton |url=https://www.youtube.com/watch?v=ZbVOF0Uk5lU |access-date=9 Jun 2018 |website=[[YouTube]]}}</ref><ref>{{cite web |last=Rayl |first=A.J.S. |date=October 16, 2008 |title=NASA Engineers and Scientists-Transforming Dreams Into Reality |url=http://www.nasa.gov/50th/50th_magazine/scientists.html |access-date=2016-11-25 |work=NASA 50th anniversary website |publisher=[[NASA]]}}</ref>
The most important development was that new computers were coming out almost every year or two, rendering existing ones obsolete. Software people had to rewrite all their programs to run on these new machines. Programmers did not have computers on their desks and had to go to the "machine room". Jobs were run by signing up for machine time or by operational staff. Jobs were run by putting punched cards for input into the machine's card reader and waiting for results to come back on the printer.


{{Blockquote|text=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|author=Margaret Hamilton|title=2014 interview with [[El País]]<ref>{{Cite web |title=First Software Engineer {{!}} IEEE Computer Society |date=5 October 2018 |url=https://www.computer.org/publications/tech-news/events/what-to-know-about-the-scientist-who-invented-the-term-software-engineering/ |access-date=2023-03-05 |language=en-US}}</ref>}}
The field was so new that the idea of management by schedule was non-existent. Making predictions of a project's completion date was almost impossible. Computer hardware was application-specific. Scientific and business tasks needed different machines. Due to the need to frequently translate old software to meet the needs of new machines, high-order languages like FORTRAN, COBOL, and ALGOL were developed. Hardware vendors gave away systems software for free as hardware could not be sold without software. A few companies sold the service of building custom software but no software companies were selling packaged software.


The [[NATO Science for Peace and Security|NATO Science Committee]] sponsored two conferences<ref>{{cite web |author=Brian Randell |author-link=Brian Randell |date=2001 |title=NATO Software Engineering Conferences |url=http://homepages.cs.ncl.ac.uk/brian.randell/NATO/ |access-date=2016-11-25 |publisher=ncl.ac.uk}}</ref> 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''.<ref name="nato-68-or-acm-662" /><ref name="jared2">{{cite web |last=King |first=Jared |date=2016 |title=Jared King's "The History of Software" |url=https://learn.saylor.org/mod/page/view.php?id=12353 |access-date=2016-11-25 |work=CS302: Software Engineering |publisher=[[Saylor Foundation|Saylor.org]]}}</ref>
The notion of reuse flourished. As software was free, user organizations commonly gave it away. Groups like IBM's scientific user group SHARE offered catalogs of reusable components. Academia did not yet teach the principles of computer science. Modular programming and data abstraction were already being used in programming.

== 1945 to 1965: The origins ==
The term ''software engineering'' first appeared in the late 1950s and early 1960s. Programmers have always known about civil, electrical, and computer engineering and debated what engineering might mean for software.

The [[NATO Science Committee]] sponsored two conferences<ref>[http://homepages.cs.ncl.ac.uk/brian.randell/NATO/ The NATO Software Engineering Conferences]</ref> on software engineering in 1968 (Garmisch, Germany&nbsp;&mdash; see ''[[List of publications in computer science#Software engineering: Report of a conference sponsored by the NATO Science Committee|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 ==
== 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 software 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]], but evolved to emphasize [[Software quality assurance|quality]]. Some used the term ''software crisis'' to refer to their inability to hire enough qualified programmers.
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.<ref>[[Therac-25]]</ref> The software crisis was originally defined in terms of [[productivity]], but evolved to emphasize [[Software quality assurance|quality]]. Some used the term ''software crisis'' to refer to their inability to hire enough qualified programmers.{{citation needed|date=February 2016}}
* Cost and [[budget overrun|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.<ref name="jared2"/> OS/360 was one of the first large (1000 programmers{{Citation needed|date=October 2007}}) software projects. [[Fred Brooks]] claims in ''[[The Mythical Man-Month]]'' that he made a multimillion-dollar mistake of not developing a coherent [[Software architecture|architecture]] before starting development.<ref name="jared2"/>
* Property Damage: Software defects can cause property damage. Poor [[software security]] allows hackers to steal identities, costing time, money, and reputations.{{citation needed|date=February 2016}}
* Life and Death: Software defects can kill. [[Embedded systems]] used in [[radiotherapy]] machines prove the ability to fail so catastrophically that they administered [[lethal dose]]s of [[radiation]] to patients. The most famous of these failures are the ''[[Therac-25]]'' incidents.<ref>{{Cite journal|title = An investigation of the Therac-25 accidents|journal = Computer|date = 1993-07-01|issn = 0018-9162|pages = 18–41|volume = 26|issue = 7|doi = 10.1109/MC.1993.274940|first1 = N.G.|last1 = Leveson|first2 = C.S.|last2 = Turner|citeseerx = 10.1.1.372.412|s2cid = 9691171}}</ref>


[[Peter G. Neumann]] has kept a contemporary list of software problems and disasters.<ref>{{cite journal|url=http://catless.ncl.ac.uk/Risks|title=RISKS-LIST: RISKS-FORUM Digest|journal=The Risks Digest|last1=Neumann |first1=Peter G. }}</ref> 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 (computer scientist)|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.<ref>{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}</ref>
* Cost and [[budget overrun|Budget Overruns]]: The [[OS/360]] operating system was a classic example. This decade-long{{Citation needed|date=October 2007}} 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{{Citation needed|date=October 2007}}) software projects. [[Fred Brooks]] claims in ''[[The Mythical Man Month]]'' that he made a multi-million dollar mistake of not developing a coherent [[Software architecture|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. Some [[embedded systems]] used in [[radiotherapy]] machines failed so catastrophically that they administered [[lethal dose]]s of [[radiation]] to patients. The most famous of these failures is the ''[[Therac 25]]'' incident.


== 1985 to 1989: "''No Silver Bullet''" ==
[[Peter G. Neumann]] has kept a contemporary list of software problems and disasters.<ref>[http://catless.ncl.ac.uk/Risks Computer Risks]</ref> The software crisis has been slowly fizzling out, because it is unrealistic to remain in crisis mode for more than 20 years. SEs are accepting that the problems of SE are truly difficult and only hard work{{Citation needed|date=October 2007}} over many decades can solve them.
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.{{citation needed|date=February 2016}}
* 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 ===
== 1985 to 1989: No silver bullet ==
For decades, solving the software crisis was paramount to researchers and companies producing software tools. Seemingly, they trumpeted every new technology and practice from the 1970s to the 1990s as a ''[[silver bullet]]'' to solve the software crisis. Tools, discipline, [[formal methods]], process, and professionalism were touted as silver bullets:
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:{{citation needed|date=February 2016}}


* Tools: Especially emphasized were tools: [[Structured programming]], [[object-oriented programming]], [[Computer-aided software engineering|CASE]] tools, [[Ada programming language|Ada]], [[documentation]], and [[standardization|standards]] were touted as silver bullets.
* Tools: Especially emphasized were tools: [[structured programming]], [[object-oriented programming]], [[Computer-aided software engineering|CASE]] tools such as ICL's [[CADES]] CASE system,<ref>D.J.Pearson "The use and abuse of a software engineering system" National Computer Conference 1979</ref> [[Ada (programming language)|Ada]], [[documentation]], and [[standardization|standards]] were touted as silver bullets.
* Discipline: Some pundits argued that the software crisis was due to the lack of [[discipline]] of programmers.
* 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.
* 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 [[Methodology (software engineering)|methodologies]] like the [[Capability Maturity Model]].
* Process: Many advocated the use of defined processes and [[Methodology (software engineering)|methodologies]] like the [[Capability Maturity Model]].
* Professionalism: This led to work on a code of [[ethic]]s, [[license]]s, and [[professionalism]].
* Professionalism: This led to work on a code of ethics, licenses, and professionalism.


In [[1986]], [[Fred Brooks]] published the ''[[No Silver Bullet]]'' article, arguing that no individual [[technology]] or practice would ever make a 10-fold improvement in productivity within 10 years.
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.{{citation needed|date=February 2016}}


Debate about silver bullets raged over the following decade. Advocates for [[Ada programming language|Ada]], [[software componentry|components]], and [[process (computing)|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.
Debate about silver bullets raged over the following decade. Advocates for [[Ada (programming language)|Ada]], [[software componentry|components]], 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.{{citation needed|date=February 2016}}


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...”.
Some{{who|date=February 2016}} interpret{{why|date=February 2016}} ''[[no silver bullet]]'' to mean that software engineering failed.{{clarify|date=February 2016}} 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 ..."{{citation needed|date=February 2016}}


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.
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.{{citation needed|date=February 2016}}


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 [[web browser|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 websites, at a fraction of the cost of totally customized website 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.
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 [[web browser|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.{{citation needed|date=February 2016}}


== 1990 to 1999: Prominence of the Internet ==
== 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 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).{{citation needed|date=February 2016}}


The growth of browser usage, running on the HTML language, 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]]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]]s, and many software systems had to be re-designed, for international searching, depending on [[Search Engine Optimization]] (SEO) techniques. 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.
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]]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]]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.{{citation needed|date=February 2016}}


== 2000 to Present: Lightweight Methodologies ==
== 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.
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.{{citation needed|date=February 2016}}


===Current trends in software engineering===
=== Current trends in software engineering ===
Software engineering is a young discipline, and is still developing. The directions in which software engineering is developing include:
Software engineering is a young discipline, and is still developing. The directions in which software engineering is developing include:{{citation needed|date=February 2016}}


==== Aspects ====
; Aspects: [[Aspect-oriented programming|Aspects]] help software engineers deal with [[quality attributes]] by providing tools to add or remove [[Boilerplate (text)|boilerplate]] code from many areas in the [[source code]]. Aspects describe how all objects or functions should behave in particular circumstances. For example, [[aspect (computer science)|aspect]]s can add [[debugging]], [[Data logging|logging]], or [[Lock (software engineering)|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 [[Template (programming)|templates]].
[[Aspect-oriented programming|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, [[aspect (computer science)|aspects]] can add [[debugging]], [[data logging|logging]], or [[lock (computer science)|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 [[Template (programming)|templates]].


==== Experimental ====
; Agile: [[Agile software development]] guides [[software development]] projects that evolve rapidly with changing expectations and competitive markets. Proponents of this method believe that heavy, document-driven processes (like [[TickIT]], [[Capability Maturity Model|CMM]] and [[ISO 9000]]) are fading in importance{{Citation needed|date=February 2007}}. Some people believe that companies and agencies export many of the jobs that can be guided by heavy-weight processes{{Citation needed|date=February 2007}}<!--outsoucing?-->. Related concepts include [[Extreme Programming]], [[Scrum (development)|Scrum]], and [[Lean software development]].
[[Experimental software engineering]] is a branch of software engineering interested in devising [[experiment]]s on software, in collecting data from the experiments, and in devising laws and theories from this data.


==== Software product lines ====
; Experimental: [[Experimental software engineering]] is a branch of software engineering interested in devising [[experiment]]s 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{{Citation needed|date=February 2007}}.
[[product family engineering|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 <ref>{{cite web|url=http://www.ul.ie/%7Eicse2000/|title=ICSE2000: Call for Participation|work=ul.ie}}</ref> and the ICSE 2007<ref>{{cite web|url=http://web4.cs.ucl.ac.uk/icse07/|title=ICSE 2007: Home|work=ucl.ac.uk}}</ref> conferences also help identify the state of the art in software engineering.{{citation needed|date=February 2016}}
; Model-driven: [[Model-driven development|Model Driven Design]] develops textual and graphical models as primary design artifacts. Development tools are available that use [[model transformation]] and [[Automatic programming|code generation]] to generate well-organized code fragments that serve as a basis for producing complete applications.


=== Software engineering today ===
; Software Product Lines: [[Product Family Engineering|Software Product Lines]] 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 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).{{citation needed|date=February 2016}}


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.<ref>{{cite web
The Future of Software Engineering <ref>[http://www.softwaresystems.org/future.html Future of Software Engineering]</ref> 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 <ref>[http://www.ul.ie/%7Eicse2000/ ICSE 2000]</ref> and the ICSE 2007<ref>[http://web4.cs.ucl.ac.uk/icse07/ ICSE 2007]</ref> 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.<ref>{{cite web
| last = Kalwarski
| last = Kalwarski
| first = Tara |author2=Daphne Mosher |author3=Janet Paskin |author4=Donna Rosato |author4-link=Donna Rosato | year = 2006
| first = Tara
| url = https://money.cnn.com/magazines/moneymag/bestjobs/2006/
| coauthors = Daphne Mosher, Janet Paskin and [[Donna Rosato]]
| year = 2006
| url = http://money.cnn.com/magazines/moneymag/bestjobs/2006/
| title = Best Jobs in America
| title = Best Jobs in America
| work = MONEY Magazine
| work = MONEY Magazine
| publisher = CNN
| publisher = CNN
| accessdate = 2006-04-20
| access-date = 2006-04-20
}}, "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..."</ref>
}}, "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..."</ref>

== 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.<ref>{{cite web|url=http://hackingroomba.com/|title=Hacking Roomba|work=hackingroomba.com|url-status=live|archive-url=https://web.archive.org/web/20091018023300/http://hackingroomba.com/|archive-date=18 October 2009|df=dmy-all}}</ref> Recent advances in deep [[artificial neural network]]s and distributed computing have led to a proliferation of software libraries, including [[Deeplearning4j]], [[TensorFlow]], [[Theano (software)|Theano]] and [[Torch (machine learning)|Torch]].

A 2011 [[McKinsey & Company|McKinsey Global Institute]] study found a shortage of 1.5 million highly trained data and AI professionals and managers<ref name="McKinsey">{{cite journal |last1=Manyika |first1=James |first2=Michael |last2=Chui |first3=Jaques |last3=Bughin |first4=Brad |last4=Brown |first5=Richard |last5=Dobbs |first6=Charles |last6=Roxburgh |first7=Angela Hung |last7=Byers |title=Big Data: The next frontier for innovation, competition, and productivity |publisher=McKinsey Global Institute |date=May 2011 |url=http://www.mckinsey.com/Insights/MGI/Research/Technology_and_Innovation/Big_data_The_next_frontier_for_innovation |access-date=16 January 2016 |url-status=live |archive-url=https://web.archive.org/web/20130306232114/http://www.mckinsey.com/insights/mgi/research/technology_and_innovation/big_data_the_next_frontier_for_innovation |archive-date=6 March 2013 |df=dmy-all }}</ref> 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]].<ref>{{cite news
|title = NY gets new boot camp for data scientists: It's free but harder to get into than Harvard
|newspaper = Venture Beat
|access-date = 21 February 2016
|url = https://venturebeat.com/2014/04/15/ny-gets-new-bootcamp-for-data-scientists-its-free-but-harder-to-get-into-than-harvard/
|url-status = live
|archive-url = https://web.archive.org/web/20160215235820/http://venturebeat.com/2014/04/15/ny-gets-new-bootcamp-for-data-scientists-its-free-but-harder-to-get-into-than-harvard/
|archive-date = 15 February 2016
|df = dmy-all
}}</ref>

==== Languages ====
{{Main|List of programming languages for artificial intelligence}}
Early symbolic AI inspired [[Lisp (programming language)|Lisp]] and [[Prolog]], which dominated early AI programming. Modern AI development often uses mainstream languages such as [[Python (programming language)|Python]] or [[C++]],<ref name="C++">{{cite web|title=C++ Java|url=https://www.infoworld.com/article/3186599/artificial-intelligence/the-5-best-programming-languages-for-ai-development.html|publisher=infoworld.com|access-date=6 December 2017}}</ref> or niche languages such as [[Wolfram Language]].<ref>{{cite news|last1=Ferris|first1=Robert|title=How Steve Jobs' friend changed the world of math|url=https://www.cnbc.com/2016/04/07/stephen-wolfram-why-this-brilliant-physicist-ditched-his-job.html|access-date=28 February 2018|work=CNBC|date=7 April 2016}}</ref>


== Prominent figures in the history of software engineering ==
== Prominent figures in the history of software engineering ==
* [[Charles Bachman]] (born 1924) is particularly known for his work in the area of [[databases]].
* [[Charles Bachman]] (1924–2017) is particularly known for his work in the area of [[databases]].
* [[Laszlo Belady]] (born 1928) the editor-in-chief of the IEEE Transactions on Software Engineering in the 1980s
* [[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]].
* [[Fred Brooks]] (born 1931) best known for managing the development of [[OS/360]].
* [[Peter Chen]], known for the development of [[entity-relationship model]]ing.
* [[Peter Chen]] (born 1947) known for the development of [[entity–relationship model]]ing.
* [[Edsger Dijkstra]] (1930-2002) developed the framework for proper programming.
* [[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]].
* [[David Parnas]] (born 1941) developed the concept of [[information hiding]] in [[modular programming]].
* [[Michael A. Jackson (computer scientist)|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==
== References ==
{{Reflist}}
{{Reflist}}

{{Refimprove|date=October 2008}}


== External links ==
== External links ==
* [http://www.cbi.umn.edu/oh/display.phtml?id=134 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.
* [http://purl.umn.edu/107103 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.
* [http://www.cbi.umn.edu/oh/display.phtml?id=344 Oral history interview with Laszlo A. Belady], [[Charles Babbage Institute]], University of Minnesota.
* [http://purl.umn.edu/107110 Oral history interview with Laszlo A. Belady], [[Charles Babbage Institute]], University of Minnesota.
* Brian Randell: [http://homepages.cs.ncl.ac.uk/brian.randell/NATO/ The NATO Software Engineering Conferences] (The site includes the original two NATO reports -- from 1968 and 1969 -- as well as photographs of the participants and some of the sessions at Garmisch)


{{Software Engineering}}
{{Software engineering}}


{{DEFAULTSORT:History Of Software Engineering}}
[[Category:Software engineering]]
[[Category:Software engineering| ]]
[[Category:History of software|Software engineering]]
[[Category:History of software|Software engineering]]
[[Category:History of computing]]

[[Category:Software topical history overviews]]
[[bn:সফটওয়্যার প্রকৌশলের ইতিহাস]]

Revision as of 18:52, 7 June 2024

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]

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.[citation needed]
  • 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 clearly identified. Many academic and professional organizations [who?] consider this situation unbalanced and are trying hard to solve it.[5]
  • Processes: Processes 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.[citation needed]
  • 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.[citation needed]

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

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.[14] 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.[citation needed]

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]

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.[citation needed]

  • 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:[citation needed]

  • Tools: Especially emphasized were tools: structured programming, object-oriented programming, CASE tools such as ICL's CADES CASE system,[18] 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.

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.[citation needed]

Debate about silver bullets raged over the following decade. Advocates for Ada, components, 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.[citation needed]

Some[who?] interpret[why?] 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 ..."[citation needed]

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.[citation needed]

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.[citation needed]

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).[citation needed]

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 viruses 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 engines, 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.[citation needed]

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.[citation needed]

Current trends in software engineering

Software engineering is a young discipline, and is still developing. The directions in which software engineering is developing include:[citation needed]

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 [19] and the ICSE 2007[20] conferences also help identify the state of the art in software engineering.[citation needed]

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).[citation needed]

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.[21]

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.[22] 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[23] 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.[24]

Languages

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

Prominent figures in the history of software engineering

See also

References

  1. ^ "CS302: Jared King's "The History of Software"". learn.saylor.org. Retrieved 2018-02-17.
  2. ^ "Software engineering … has recently emerged as a discipline in its own right." Sommerville, Ian (1985) [1982]. 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.
  4. ^ Ensmenger, Nathan (2012). The Computer Boys Take Over. Cambridge, MA: MIT Press. ISBN 978-0262517966.
  5. ^ "Episode 576: When Women Stopped Coding". NPR Planet Money. Oct 17, 2014. Retrieved June 27, 2018.
  6. ^ a b Meyer, Bertrand (April 4, 2013). "The origin of "software engineering"". Retrieved 2016-11-25.
  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" (PDF). CWI Quarterly. 3 (4): 325–334. Archived from the original (PDF) on 2011-02-20. Retrieved Feb 10, 2023.
  9. ^ 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering. "ICSE 2018 - Plenary Sessions - Margaret Hamilton". YouTube. Retrieved 9 Jun 2018.{{cite web}}: CS1 maint: numeric names: authors list (link)
  10. ^ Rayl, A.J.S. (October 16, 2008). "NASA Engineers and Scientists-Transforming Dreams Into Reality". NASA 50th anniversary website. NASA. Retrieved 2016-11-25.
  11. ^ "First Software Engineer | IEEE Computer Society". 5 October 2018. Retrieved 2023-03-05.
  12. ^ Brian Randell (2001). "NATO Software Engineering Conferences". ncl.ac.uk. Retrieved 2016-11-25.
  13. ^ a b c King, Jared (2016). "Jared King's "The History of Software"". CS302: Software Engineering. Saylor.org. Retrieved 2016-11-25.
  14. ^ Therac-25
  15. ^ Leveson, N.G.; Turner, C.S. (1993-07-01). "An investigation of the Therac-25 accidents". Computer. 26 (7): 18–41. CiteSeerX 10.1.1.372.412. doi:10.1109/MC.1993.274940. ISSN 0018-9162. S2CID 9691171.
  16. ^ Neumann, Peter G. "RISKS-LIST: RISKS-FORUM Digest". The Risks Digest.
  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. ^ D.J.Pearson "The use and abuse of a software engineering system" National Computer Conference 1979
  19. ^ "ICSE2000: Call for Participation". ul.ie.
  20. ^ "ICSE 2007: Home". ucl.ac.uk.
  21. ^ Kalwarski, Tara; Daphne Mosher; Janet Paskin; Donna Rosato (2006). "Best Jobs in America". MONEY Magazine. CNN. Retrieved 2006-04-20., "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..."
  22. ^ "Hacking Roomba". hackingroomba.com. Archived from the original on 18 October 2009.
  23. ^ 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. Archived from the original on 6 March 2013. Retrieved 16 January 2016. {{cite journal}}: Cite journal requires |journal= (help)
  24. ^ "NY gets new boot camp for data scientists: It's free but harder to get into than Harvard". Venture Beat. Archived from the original on 15 February 2016. Retrieved 21 February 2016.
  25. ^ "C++ Java". infoworld.com. Retrieved 6 December 2017.
  26. ^ Ferris, Robert (7 April 2016). "How Steve Jobs' friend changed the world of math". CNBC. Retrieved 28 February 2018.

External links

Leave a Reply