西门子电线电缆中国授权一级总代理
1.1.2 软件危机与软件工程1.软件危机及其原因
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1968年,北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上,次提出了“软件危机”(Software Crisis)这个名词。
1.1.1 软件及其特性
个编写软件的人是ADA(Augusta Ada Lovelace),在19世纪60年代他尝试为Babbage(Charles Babbage)的机械式计算机写软件。尽管他的努力失败了,但他的名字永远载入了计算机发展的史册。
在20世纪50年代,软件伴随着台电子计算机的问世诞生了。以编写软件为职业的人也开始出现,他们是经过训练的数学家和电子工程师。20世纪60年代美国大学里开始出现授予计算机的学位,专门教人们编写软件。
20世纪中叶软件产业从零开始起步,在短短的50多年时间里迅速发展成为推动人类社会发展的产业,并造就了一批百万、亿万富翁。随着信息产业的发展,软件对人类社会的发展越来越重要。
那么,如何给软件定义?软件是什么?
首先要说明的是,软件对于人类而言是一个全新的东西,其发展历史不过四五十年的时间。人们对软件的认识经历了一个由浅到深的过程。
在计算机系统发展的初期,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的。早期当通用硬件成为平常事情的时候,软件的通用性却是很有限的。大多数软件是由使用该软件的个人或机构研制的,软件往往带有强烈的个人色彩。早期的软件开发也没有什么系统的方法可以遵循,软件设计是在某个人的头脑中完成了一个隐藏的过程。而且,除了源代码往往没有软件说明书等文档。
设计师,负责创建设计规格;在过去的30年中,软件工程社群一直用“工程学”这个略显呆板的比喻来看待软件开发过程。现在,软件工程际上,“足够好的软件”只不过是软件工程思想的一个衍生物,它的出现完全合乎逻辑。它体现出了人们在资源、进度、功能和缺陷等各方面作出的工程学权衡。航天飞机的软件重视安全性,因此必须尽可能地减少其中的缺陷,并同时接受项目组为了提高质量而提出的资源、进度方面的要求;另一方面,打包的商用软件(例如文字处理软件、Web浏览器等)则要求开发者快速实现大量的功能,因此开发者就会很自然地作出“节省排除已知缺陷的时间从而压缩进度”的工程学权衡。这种权衡的核心思想是:对于某些类型的已知缺陷,花时间去排除它们并不经济。已经成为了计算机学生的一门必修课。在各个大学的计算机系中,软件工程也是一个活跃的研究领域。人们关注的是软件工程项目中那种确定的、可重复的开发方式。按照IEEE的定义,这种方式就是:
软件工程是指采用一种有组织、有纪律、可计量的方式来开发、使用及维护软件,也即在软件领域中对工程学的采用。
对于强调安全性的软件系统,这种有组织、有纪律、可计量的开发方式已经被证明是非常有效的。例如,为航天飞机编写软件的团队就使用这种开发方式,并成功地获得了缺陷率极低的软件系统:
在这个程序的后3个版本(平均代码长度为420 000行)中,每个版本只有一个错误;在其后11个版本中,总共只有17个错误。同等复杂度的商用程序将会有5 000个错误。
浔之漫智控技术(上海)有限公司(w)
是中国西门子的合作伙伴,公司主要从事工业自动化产品的集成,销售和维修,是全国的自动化设备公司。
公司坐落于中国城市上海市,我们真诚的希望在器件的销售和工程项目承接、系统开发上能和贵司开展多方面合作。
以下是我司主要代理西门子产品,欢迎您来电来函咨询,我们将为您提供优惠的价格及快捷细致的服务!
但是,在这样的过程中,其他的约束条件则不得不被放松:
金钱不是关键的约束条件:项目组每年3 500万美元的预算对于NASA来说不过是九牛一毛。但是,这个预算额就意味着每行代码价值 1 美元。这使得该项目组成为了全美国值钱的软件组织。
从工程学的角度来说,这是一个恰当的利弊权衡。面对性命攸关的软件,人们毫无疑问会慷慨地用一切资源来确保系统不出错。但是,对于那些出错的代价相对较低的软件,又应
程序员,负责编写代码。
在每个阶段,每份文档的作者都必须在文档中加入额外的细节,因为他们无法知道随后将要阅读这份文档的人是谁。由于无法假设阅读者的知识背景,所以唯一安全的办法就是:将作者所知道的所有细节、所有交叉引用都写在文档中。然后,文档的复审者必须仔细浏览整个文档,以确定它是完善并且明白无误的。
完善的文档也带来了另一个难题:当在实现阶段需要对需求和设计作出修改时,团队成员必须修改所有相关的文档,以保证文档与真实系统之间的一致性。软件工程项目解决这个问题的办法是:确保从需求分析到代码实现的整个过程是完全可回溯的。不论在任何时候需要作出修改,这种可回溯性都将保证相关的文档和组件能够被发现并被更新。