软件工程史

2020-08-01 18:37:04

跳转到导航跳转到搜索从20世纪60年代开始,编写软件已经发展成为一种关注如何最大限度地提高软件质量和如何创建软件的职业。质量可以指软件的可维护性如何,它的稳定性、速度、可用性、可测试性、可读性、大小、成本、安全性和缺陷或缺陷的数量,以及诸如优雅、简洁性和客户满意度等难以衡量的质量,以及许多其他属性。如何最好地创建高质量的软件是一个独立且有争议的问题,它涵盖了软件设计原则,即编写代码的所谓最佳实践,以及更广泛的管理问题,如最佳团队规模、流程、如何以最快的速度按时交付软件、工作场所文化、招聘实践等等。所有这些都属于软件工程的宽泛范畴。[1]。

作为一种职业的出现:到20世纪80年代初,[2]软件工程职业化,与计算机科学和传统工程并驾齐驱。[需要引用]。

女性的角色:1970年之前,男性担任更有声望、薪酬更高的硬件工程师职位时,往往会将编写软件的工作委托给女性,而格蕾丝·霍珀(Grace Hopper)或玛格丽特·汉密尔顿(Margaret Hamilton)等传奇人物则填补了许多计算机编程工作的空缺。[3][4]今天,从事软件工程的女性比从事其他职业的女性要少,这种情况的原因还不清楚。许多学术和专业组织[谁?]。认为这种情况不平衡,正在努力解决。[5]。

过程:过程已经成为软件工程的重要组成部分。它们因其改进软件的潜力而受到称赞,但因其限制程序员的潜力而受到尖锐批评。[需要引用]。

硬件成本:在过去50年中,软件与硬件的相对成本发生了很大变化。当大型机价格昂贵且需要大量支持人员时,购买大型机的少数组织也有资源为昂贵的大型定制软件工程项目提供资金。计算机现在数量更多,功能更强大,这对软件有几个影响。更大的市场可以支持大型项目来创建商业现成软件,就像微软这样的公司所做的那样。便宜的机器允许每个程序员拥有一个能够相当快速地编译的终端。所讨论的程序可以使用诸如垃圾收集之类的技术,这使得程序员可以更容易、更快地编写它们。另一方面,对为大型定制软件项目雇佣程序员感兴趣的组织要少得多,而是尽可能多地使用商用现成软件。[需要引用]。

软件工程这个术语的假定起源包括ACM主席Anthony Oettinger在1965年的一封信,[6][7]20世纪50年代Douglas T.Ross在麻省理工学院的演讲。[8]玛格丽特·H·汉密尔顿(Margaret H.Hamilton";)是提出将该学科命名为软件工程(Software Engineering)的人,以此作为赋予其合法性的一种方式。";[9][10]。

北约科学委员会在1968年和1969年赞助了两次关于软件工程的会议[11](德国加米施-参见会议报告),这给该领域带来了最初的推动。许多人认为这些会议标志着软件工程专业的正式开始。[6][12]。

20世纪60年代、70年代和80年代的所谓软件危机刺激了软件工程,这场危机发现了软件开发的许多问题。许多项目超出了预算和进度。一些项目造成了财产损失。有几个项目造成了生命损失。[13]软件危机最初是根据生产力来定义的,但后来演变成强调质量。有些人用“软件危机”这个词来指代他们没有能力雇佣足够的合格程序员。[需要引用]

成本和预算超支:OS/360操作系统就是一个典型的例子。这个从20世纪60年代开始的长达十年的项目最终产生了当时最复杂的软件系统之一。[12]OS/360是第一批大型(1000名程序员[需要引用])软件项目之一。弗雷德·布鲁克斯(Fred Brooks)在神话中的“人月”(Man-Month)中声称,他犯了一个数百万美元的错误,在开始开发之前没有开发出一个连贯的架构。[12]。

财产损失:软件缺陷可能导致财产损失。糟糕的软件安全性允许黑客窃取身份,耗费时间、金钱和声誉。[需要引用]。

生死:软件缺陷会致命。一些用于放射治疗机的嵌入式系统出现了灾难性的故障,以至于它们给患者提供了致命剂量的辐射。这些故障中最著名的是Therac-25事件。[14]。

彼得·G·诺伊曼(Peter G.Neumann)保存了一份软件问题和灾难的当代清单。[15]软件危机已经淡出人们的视线,因为在很长一段时间(超过20年)内保持危机模式在心理上是极其困难的。尽管如此,软件--尤其是实时嵌入式软件--仍然存在风险,而且无处不在,因此不能自满是至关重要的。在过去的10-15年里,迈克尔·A·杰克逊(Michael A.Jackson)撰写了大量关于软件工程本质的文章,找出了软件工程困难的主要来源是缺乏专业化,并建议他的问题框架为软件工程的正常实践提供基础,这是软件工程要成为一门工程科学的先决条件。[16]。

几十年来,解决软件危机对研究人员和生产软件工具的公司至关重要,在20世纪80年代,拥有和维护软件的成本是开发软件的两倍。[需要引用]。

在20世纪90年代,拥有和维护成本比80年代增加了30%。

1995年的统计数据显示,调查的发展项目中有一半是正在运作的,但被认为是不成功的。

交付给客户的所有大型软件产品中有四分之三是故障,这些故障要么根本没有使用,要么不符合客户的要求。

似乎,从20世纪70年代到90年代的每一项新技术和新实践都被吹捧为解决软件危机的银弹。工具、纪律、正式方法、流程和专业精神被吹捧为灵丹妙药:[需要引用]。

工具:特别强调的是工具:结构化编程、面向对象编程、CASE工具,如ICL&39;的CADES CASE系统、[17]Ada、文档和标准被吹捧为银弹。

纪律:一些权威人士认为,软件危机是由于程序员缺乏纪律造成的。

正式方法:有些人认为,如果将正式的工程方法应用到软件开发中,那么软件生产就会像其他工程分支一样成为一个可预测的行业。他们主张证明所有程序都是正确的。

过程:许多人主张使用已定义的过程和方法,如能力成熟度模型。

1986年,弗雷德·布鲁克斯(Fred Brooks)发表了他的“没有银弹”(No Silver Bullet)一文,认为任何一项技术或实践都不会在10年内将生产率提高10倍。[需要引用]。

关于银弹的争论在接下来的十年里如火如荼。Ada、组件和流程的倡导者多年来一直争辩说,他们最喜欢的技术将是一颗银弹。怀疑者不同意这种说法。最终,几乎每个人都接受了这样一个事实,那就是永远找不到灵丹妙药。然而,即使是在今天,关于银弹的说法也时不时地冒出来。[需要引用]。

一些[谁?]。解读[为什么?]。没有什么灵丹妙药可以说明软件工程失败了。(需要澄清)然而,随着进一步的阅读,布鲁克斯继续说:我们肯定会在未来40年取得实质性进展;40年的数量级很难有魔力……[需要引用]

寻找成功的单一关键从未奏效。所有已知的技术和实践都只是对生产力和质量进行了渐进式的改进。然而,对于任何其他职业来说,也没有什么灵丹妙药。其他人将没有灵丹妙药解释为软件工程最终成熟的证据,并认识到项目的成功是由于努力工作。[需要引用]。

然而,也可以说,事实上,今天有一系列的灵丹妙药,包括轻量级方法(参见#34;项目管理)、电子表格计算器、定制浏览器、站内搜索引擎、数据库报告生成器、具有内存/差异/撤消功能的集成设计-测试编码编辑器,以及生成利基软件(如信息网站)的专业商店,其成本仅为完全定制网站开发的一小部分。尽管如此,软件工程领域似乎太复杂和多样化,不是单一的灵丹妙药就能改善大多数问题,而且每个问题只占所有软件问题的一小部分。[需要引用]。

因特网的兴起导致对万维网上的国际信息显示/电子邮件系统的需求增长非常迅速。程序员被要求以前所未有的速度处理插图、地图、照片和其他图像以及简单的动画,几乎没有众所周知的方法来优化图像显示/存储(例如使用缩略图)。[需要引用]。

运行在超文本标记语言(HTML)上的浏览器使用的增长改变了信息显示和检索的组织方式。广泛的网络连接导致MS Windows计算机上的国际计算机病毒的增长和预防,垃圾电子邮件的大量扩散成为电子邮件系统中的一个主要设计问题,导致通信通道泛滥,需要半自动的预筛选。关键字搜索系统演变成基于网络的搜索引擎,许多软件系统不得不重新设计,以进行国际搜索,这取决于搜索引擎优化(SEO)技术。需要人类自然语言翻译系统来尝试翻译多种外语的信息流,许多软件系统都是基于人工翻译人员的设计概念而设计用于多语言使用的。典型的计算机用户群从成百上千的用户发展到通常数百万的国际用户。[需要引用]。

随着许多较小组织对软件的需求不断扩大,对廉价软件解决方案的需求导致了开发运行软件的更简单、更快的方法的发展,从要求到部署,更快、更容易。快速原型的使用演变成了整个轻量级方法,例如极限编程(XP),它试图简化软件工程的许多领域,包括不断增长的大量小型软件系统的需求收集和可靠性测试。超大型软件系统仍然使用大量记录在案的方法,文档集中有许多卷;但是,较小的系统有一种更简单、更快速的替代方法来管理软件计算和算法、信息存储/检索和显示的开发和维护。[需要引用]。

软件工程是一门年轻的学科,而且还在发展中。软件工程的发展方向包括:[需要引用]。

Aspects通过提供工具来添加或删除源代码中许多区域的样板代码,从而帮助软件工程师处理质量属性。方面描述了所有对象或函数在特定情况下应该如何行为。例如,方面可以将调试、日志记录或锁定控制添加到特定类型的所有对象中。研究人员目前正在努力了解如何使用方面来设计通用代码。相关概念包括生成性编程和模板。

实验软件工程是软件工程的一个分支,它致力于在软件上设计实验,从实验中收集数据,并从这些数据中设计出规律和理论。这种方法的支持者主张,软件的本质是这样的,我们只需通过实验(需要引用)就可以提高对软件的认识。

软件产品线,也称为产品族工程,是一种系统化的方法来生产系列软件系统,而不是创建一系列完全独立的产品。这种方法强调广泛的、系统的、形式化的代码重用,试图实现软件开发过程的产业化。

在ICSE2000上举行的未来软件工程会议(FOSE)记录了2000年软件工程的最新发展状况,并列出了未来十年需要解决的许多问题。在ICSE2000[18]和ICSE2007[19]会议上的FOSE跟踪也有助于识别软件工程中的最新技术。[需要引用]。

这个行业正在努力定义它的边界和内容。软件工程知识体系SWEBOK已在2006年作为国际标准化组织标准提交(国际标准化组织/国际电工委员会TR 19759)。[需要引用]。

2006年,Money Magazine和Salary.com在增长、薪酬、压力水平、工作时间和工作环境的灵活性、创造力以及进入和晋升该领域的难易程度等方面将软件工程评为美国最好的工作。[20]。

各种各样的平台让人工智能的不同方面得以发展,从Cyc等专家系统到深度学习框架,再到具有开放接口的Roomba等机器人平台。[21]深度人工神经网络和分布式计算的最新进展导致了软件库的激增,包括Deeplearning4j、TensorFlow、Theano和Torch。

2011年麦肯锡全球研究所(McKinsey Global Institute)的一项研究发现,训练有素的数据和人工智能专业人员和经理[22]短缺150万人,许多私人训练营已经开发了满足这一需求的计划,包括像数据孵化器这样的免费计划,或者像General Assembly这样的付费计划。[23]。

早期的符号人工智能启发了Lisp和Prolog,它们主导了早期的人工智能编程。现代人工智能开发通常使用主流语言,如Python或C++,[24]或小众语言,如Wolfram语言。[25]。

Laszlo Belady(生于1928年),20世纪80年代IEEE软件工程学报的主编。

Michael A.Jackson(生于1936年),负责程序设计的JSP方法的软件工程方法学家;系统开发的JSD方法(与John Cameron一起);以及分析和组织软件开发问题的问题框架方法。

David Pearson(计算机科学家)(生于1946年)设计并开发了ICL CADES系统1968-1977,后来成为计算机图形学的先驱。

^";软件工程…。最近以其自身的权利成为一门学科。萨默维尔,伊恩(1985)[1982]。软件工程学。艾迪森-韦斯利。ISBN978-0-201-14229-7。

^Ensmenger,Nathan(2012)。电脑男孩们接手了。麻省理工学院出版社。ISBN978-0262517966。

^a b Meyer,伯特兰(2013年4月4日)。软件工程的起源。

^马奥尼,迈克尔。软件工程之根(PDF)。CWI季刊。3(4):325-334。

^2018国际软件工程大会庆祝成立40周年,软件工程50周年。ICSE 2018-全体会议-玛格丽特·汉密尔顿(Margaret Hamilton)。

^Rayl,A.J.S.。(2008年10月16日)。美国国家航空航天局的工程师和科学家--把梦想变成现实。美国宇航局50周年纪念网站。美国宇航局。

^a bc King,贾里德(2016)。贾里德·金“软件史”(The History of Software&34;";";Jared King';s&34;the History of Software&34;";)。CS302:软件工程。Saylor.org.。

^Leveson,N.G.;Turner,C.S.(1993-07-01)。对Therac-25事故的调查。电脑。26(7):18-41。CiteSeerX:10.1.1.372.412.。DOI:10.1109/MC.1993.274940.。ISSN电话:0018-9162。

^{迈克尔·杰克逊,工程和软件工程,在S Nanzed,软件工程的未来,Springer Verlag 2010;迈克尔·杰克逊,问题框架:分析和构建软件开发问题;Addison-Wesley,2001}。

1979年全国计算机会议:软件工程系统的使用和滥用。

^Kalwarski,Tara;Daphne Mosher;Janet Paskin;Donna Rosato(2006)。美国最好的工作。货币杂志。CNN新闻。Money Magazine和Salary.com对数百种工作进行了研究,考虑了它们的增长、薪酬、压力水平和其他因素。这些职业排名最高。1.软件工程师...";

^Manyika,James;Chui,Michael;Bughin,Jaques;Brown,Brad;Dobbs,Richard;Roxburgh,Charles;Byers,Angela Hung(2011年5月)。大数据:创新、竞争和生产力的下一个前沿。麦肯锡全球研究所。2013年3月6日从原件存档。引用日记账需要|日记账=(帮助)。

纽约有了新的数据科学家新兵训练营:它是免费的,但比哈佛更难进入。风险节拍。于2016年2月15日从原件存档。

罗伯特·费里斯(2016年4月7日)。史蒂夫·乔布斯的朋友如何改变了数学界。CNBC。

口述历史采访布鲁斯·H·巴恩斯,查尔斯·巴贝奇研究所,明尼苏达大学。巴恩斯介绍了国家科学基金会(NSF)及其对理论计算机科学、计算机体系结构、数值方法和软件工程研究的支持,以及网络的发展。