词条 | History of software engineering |
释义 |
From its beginnings 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.[1] OverviewThe evolution of software engineering is notable in a number of areas:
1945 to 1965: The originsPutative origins 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."[9][10] The NATO Science Committee sponsored two conferences[11] 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.[6][12] 1965 to 1985: The software crisisSoftware 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.[13] 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|date=February 2016}}
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|date=February 2016}}
Software projectsSeemingly, 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}}
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, 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{{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.{{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 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 InternetThe 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 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) 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.{{citation needed|date=February 2016}} 2000 to 2015: Lightweight methodologiesWith 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 engineeringSoftware engineering is a young discipline, and is still developing. The directions in which software engineering is developing include:{{citation needed|date=February 2016}} AspectsAspects 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. AgileAgile 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, 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}}. Related concepts include extreme programming, scrum, and lean software development. ExperimentalExperimental 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{{Citation needed|date=February 2007}}. Software product linesSoftware 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 [18] and the ICSE 2007[19] conferences also help identify the state of the art in software engineering.{{citation needed|date=February 2016}} Software engineering todayThe 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.[20] Sub-disciplinesArtificial intelligenceA wide variety of platforms has allowed different aspects of AI to develop, ranging from expert systems such as Cyc to deep-learning frameworks to robot platforms such as the Roomba with open interface.[21] 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[22] 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.[23] Languages{{Main|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++,[24] or niche languages such as Wolfram Language.[25] Prominent figures in the history of software engineering
See also
References1. ^{{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}} 2. ^"Software engineering … has recently emerged as a discipline in its own right."{{cite book | last=Sommerville | first=Ian | title=Software Engineering | publisher=Addison-Wesley | year=1985 | origyear=1982 | isbn = 978-0-201-14229-7 | postscript= }} 3. ^{{Cite book|title=Recoding Gender|last=Abbate|first=Janet|publisher=MIT Press|year=2012|isbn=978-0262534536|location=Cambridge, MA|pages=39}} 4. ^{{Cite book|title=The Computer Boys Take Over|last=Ensmenger|first=Nathan|publisher=MIT Press|year=2012|isbn=978-0262517966|location=Cambridge, MA|pages=}} 5. ^{{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|last=|first=|date=Oct 17, 2014|website=NPR Planet Money|archive-url=|archive-date=|dead-url=|access-date=June 27, 2018}} 6. ^1 {{cite web|url=https://bertrandmeyer.com/2013/04/04/the-origin-of-software-engineering/|title=The origin of "software engineering"|last=Meyer|authorlink=Bertrand Meyer |first=Bertrand|date=April 4, 2013|accessdate=2016-11-25}} 7. ^{{cite book|last=Tadre|first=Matti|title=The Science of Computing|page=121|publisher=CRC Press|isbn=978-1-4822-1770-4|date=2014-12-03}} 8. ^{{cite journal|last=Mahoney|first=Michael|title=The Roots of Software Engineering|journal=CWI Quarterly|volume=3|issue=4|pages=325–334|url=http://thecorememory.com/TROSE.pdf|accessdate=Jun 4, 2015}} 9. ^{{cite web| url = https://www.youtube.com/watch?v=ZbVOF0Uk5lU | title = ICSE 2018 - Plenary Sessions - Margaret Hamilton | author = 2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering | accessdate = 9 Jun 2018}} 10. ^{{cite web| url=http://www.nasa.gov/50th/50th_magazine/scientists.html | title =NASA Engineers and Scientists-Transforming Dreams Into Reality | last =Rayl | first =A.J.S. | date =October 16, 2008 | work=NASA 50th anniversary website |publisher =NASA | accessdate =2016-11-25}} 11. ^{{cite web|url=http://homepages.cs.ncl.ac.uk/brian.randell/NATO/|title=NATO Software Engineering Conferences|author=Brian Randell|authorlink=Brian Randell|date=2001|publisher=ncl.ac.uk|accessdate =2016-11-25}} 12. ^1 2 {{cite web |last=King |first=Jared |title= Jared King's "The History of Software" |url= https://learn.saylor.org/mod/page/view.php?id=12353 |date=2016 |publisher=Saylor.org |work=CS302: Software Engineering |accessdate=2016-11-25 }} 13. ^Therac-25 14. ^{{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|first = N.G.|last = Leveson|first2 = C.S.|last2 = Turner|citeseerx = 10.1.1.372.412}} 15. ^{{cite web|url=http://catless.ncl.ac.uk/Risks|title=RISKS-LIST: RISKS-FORUM Digest|work=The Risks Digest}} 16. ^{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} 17. ^D.J.Pearson "The use and abuse of a software engineering system" National Computer Conference 1979 18. ^{{cite web|url=http://www.ul.ie/%7Eicse2000/|title=ICSE2000: Call for Participation|work=ul.ie}} 19. ^{{cite web|url=http://web4.cs.ucl.ac.uk/icse07/|title=ICSE 2007: Home|work=ucl.ac.uk}} 20. ^{{cite web | last = Kalwarski | first = Tara |author2=Daphne Mosher |author3=Janet Paskin |author4=Donna Rosato | year = 2006 | url = http://money.cnn.com/magazines/moneymag/bestjobs/2006/ | title = Best Jobs in America | work = MONEY Magazine | publisher = CNN | accessdate = 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..." 21. ^{{cite web|url=http://hackingroomba.com/|title=Hacking Roomba|work=hackingroomba.com|deadurl=no|archiveurl=https://web.archive.org/web/20091018023300/http://hackingroomba.com/|archivedate=18 October 2009|df=dmy-all}} 22. ^{{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 |accessdate=16 January 2016 |deadurl=no |archiveurl=https://web.archive.org/web/20130306232114/http://www.mckinsey.com/insights/mgi/research/technology_and_innovation/big_data_the_next_frontier_for_innovation |archivedate=6 March 2013 |df=dmy-all }} 23. ^{{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/ |deadurl = no |archiveurl = 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/ |archivedate = 15 February 2016 |df = dmy-all}} 24. ^{{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|accessdate=6 December 2017}} 25. ^{{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|accessdate=28 February 2018|work=CNBC|date=7 April 2016}} External links
2 : Software engineering|History of software |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。