西门子CPU224XPCN中央处理器模组
硬件区别明显,其中*明显的是硬件有老化耗损现象,硬件失效是物理故障,是器件物理变化的必然结果,有浴盆曲线现象;软件不发生变化,没有磨损现象,有陈旧落后的问题,没有浴盆曲线现象。
1.1.2 软件危机与软件工程1.软件危机及其原因
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
1968年,北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上,第一次提出了“软件危机”(SoftwareCrisis)这个名词。
1.1.1 软件及其特性
第一个编写软件的人是ADA(Augusta Ada Lovelace),在19世纪60年代他尝试为Babbage(CharlesBabbage)的机械式计算机写软件。他的努力失败了,但他的名字永远载入了计算机发展的史册。
在20世纪50年代,软件伴随着第一台电子计算机的问世诞生了。以编写软件为职业的人也开始出现,他们是经过训练的数学家和电子工程师。20世纪60年代美国大学里开始出现授予计算机专业的学位,专门教人们编写软件。
20世纪中叶软件产业从零开始起步,在短短的50多年时间里迅速发展成为推动人类社会发展的龙头产业,并造就了一批百万、亿万富翁。随着信息产业的发展,软件对人类社
软件定义?软件是什么?
要说明的是,软件对于人类而言是一个全新的东西,其发展历史四五十年的时间。人们对软件的认识经历了一个由浅到深的过程。
在计算机系统发展的初期,硬件通常用来执行一个单一的程序,而这个程序又是为一个特定的目的而编制的。早期当通用硬件成为平常事情的时候,软件的通用性却是很有限的。大多数软件是由使用该软件的个人或机构研制的,软件往往带有强烈的个人色彩。早期的软件开发也没有什么系统的方法可以遵循,软件设计是在某个人的头脑中完成了一个隐藏的过程。除了源代码往往没有软件说明书等文档。
从20世纪60年代中期到70年代中期是计算机系统发展的第二个时期,在这一时期软件开始作为一种产品被广泛使用,出现了“软件作坊”专职应别人的需求编写软件。这一软件开发的方法基础上仍然沿用早期的个体化软件开发方式,但软件的数量急剧膨胀,软件需求日益复杂,维护的难度越来越大,开发成本令人吃惊,而失败的软件开发项目却屡见不鲜。“软件危机”就这样开始了!
“软件危机”使得人们开始对软件及其特性进行更深一步的研究,人们改变了早期对软档;式”进行的。起码,如果听说这个软件是“由出价*低的软件公司开发的”,我的心里一定不会太好受。
另一方面,如果你的企业需要开发大型的、打包销售的消费类软件,并且又善于作出恰当的工程学权衡,那么你很可能会使用“足够好的软件”这种方法。这类软件工程成功的秘诀就是以量取胜:消费类软件的市场充满了竞争,消费者决定是否购买某个软件的依据不是细致的比较,而是别人的评
软件厂商的市场宣传,软件厂商只有以较低的价格卖出极其大量的产品才可能占据市场。
设计师,负责创建设计规格;在过去的30年中,软件工程社群一直用“工程学”这个略显呆板的比喻来看待软件开发过程。现在,软件工程际上,“足够好的软件”只是软件工程思想的一个衍生物,它的出现完全合乎逻辑。它体现出了人们在资源、进度、功能和缺陷等各方面作出的工程学权衡。航天飞机的软件*重视安全性,必须尽可能地减少其中的缺陷,并接受项目组为了提高质量而提出的资源、进度方面的要求;另一方面,打包的商用软件(例如文字处理软件、Web浏览器等)则要求开发者快速实现大量的功能,开发者就会很自然地作出“节省排除已知缺陷的时间从而压缩进度”的工程学权衡。这种权衡的核心思想是:对于某些类型的已知缺陷,花时间去排除它们并不经济。已经成为了计算机专业学生的一门必修课。在各个大学的计算机系中,软件工程也是一个活跃的研究领域。人们*关注的是软件工程项目中那种确定的、可重复的开发方式。按照IEEE的定义,这种方式就是:
软件工程是指采用一种有组织、有纪律、可计量的方式来开发、使用及维护软件,也即在软件领域中对工程学的采用。
对于强调安全性的软件系统,这种有组织、有纪律、可计量的开发方式已经被证明是非常有效的。例如,为航天飞机编写软件的团队就使用这种开发方式,并成功地获得了缺陷率极低的软件系统:
在这个程序的*后3个版本(平均代码长度为420000行)中,每个版本只有一个错误;在其*后11个版本中,总共只有17个错误。同等复杂度的商用程序将会有5 000个错误。