1 / 159
文档名称:

软件工程初步(计算机应用与软件技术专业) 高等院校学习丛书.pdf

格式:pdf   大小:3,740KB   页数:159
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

软件工程初步(计算机应用与软件技术专业) 高等院校学习丛书.pdf

上传人:Q+1243595614 2017/8/24 文件大小:3.65 MB

下载得到文件列表

软件工程初步(计算机应用与软件技术专业) 高等院校学习丛书.pdf

文档介绍

文档介绍:软件工程初步
(计算机应用与软件技术专业)
! ! "
!"#$%&
随着计算机应用日益普及和深化,计算机软件的数量以惊人的速度急剧膨胀,而且现代软件
的规模往往十分庞大,包含数百万行代码、耗资几十亿美元、花费几千人年的劳动才开发出来的
软件产品,现在已经屡见不鲜了。例如,!"#$%&’() * 约有+,- 万行代码,而现在被广泛使用的
!"#$%&’./ 的开发历时( 年,代码约有 0 --- 万行,耗资,- 亿美元,仅产品促销就花费了+) , 亿
美元。为了降低软件开发的成本,提高软件的开发效率,+- 世纪 1- 年代末诞生了一门新的工程
学科———软件工程学。
*) * 软件及软件工程
*) *) * 软件
现在绝大部分人都知道计算机系统由软件和硬件两大部分构成,但对软件的含义很多人可
能还不是很清楚。
软件的定义是随着计算机技术的发展而逐步完善的。在+- 世纪,- 年代,人们认为软件就
是程序;1- 年代人们认识到软件的开发文档在软件中的重要作用,提出软件等于程序加文档,但
这里的文档仅指软件开发过程中所涉及的分析、设计、实现、测试、维护等,不包括管理文档;到了
2- 年代人们又给软件的定义中加入了数据。因此,软件是计算机系统中与硬件相互依存的一部
分,它包括以下( 部分。
! 在运行中能提供所希望的功能与性能的程序。
! 使程序能够正确运行的数据及其结构。
! 描述软件研制过程和方法的所有文档。
*) 软件的特点
从广义来说,软件与硬件一样也是产品,但两者之间是有差别的,了解这种差别对理解软件
工程是非常重要的。
!"

(!)软件角色的双重特性
软件作为一种产品具有双重特性,一方面它是一个产品,利用它来表现计算机硬件的计算潜
能。无论是在主机中,还是驻留在设备(如手机)中,软件就是一个信息转换器,可以产生、管理、
获取、修改、显示或传送信息。而另一方面它又是产品交付使用的载体,它可以控制计算机( 如
操作系统),可以实现计算机之间的通信,又可以创建其他程序。
(")软件的开发过程不同于硬件的制造过程
一般意义上的产品包括计算机硬件产品总要经过分析、设计、制造、测试等过程,也就是说要
经过一个从无形的设想到一个有形的产品的过程。但软件仅仅是一个逻辑上的产品而不是有形
的元件,软件是通过人的智力劳动设计开发出来的,而不是制造出来的。而且软件一旦被开发出
来,就可以方便地进行大量的复制,因此其研制成本要远远大于生产成本。这也意味着软件的开
发不能像制造产品那样进行管理。
(#)软件不会“磨损”,但会退化
一般情况下,有形的硬件产品在使用过程中总会要磨损。在使用初期,往往磨损比较严重
(这实际上是磨合),而经过短暂的磨合后,产品将进入相对的稳定期。由于任何硬件产品总有
一定的生存周期,随着时间的流逝,硬件的各组成部分将出现各种各样、不同程度的磨损,这时硬
件的故障率必然大大提高,这也意味着
硬件的寿命快要到了。硬件故障率与时
间的关系可以用图! ! 所示的“浴缸曲
线”来表示。
但对于软件来说,由于软件并不是
一种有形的产品,因此也就不存在所谓
的“磨损”问题。理想情况下,软件的故
障曲线应该是图! " 中所示的理想曲
线。在软件的运行初期,由于未知的错
误会引起程序在其生命初期有较高的故
障率,然而当修正了这些错误而且也没
图! !$ 硬件故障率曲线
有引入新的错误后,软件将进入一种比
较理想的平稳运行期。这说明软件是不
会“磨损”的。但在实际情况中,软件尽
管不会“磨损”,却会退化,如图! " 中
的实际曲线。这是因为软件在其生存周
期中会经历多次修改,每次修改都会引
入新的错误,而对这些错误又要进行新
的修改,使得软件的故障曲线呈现锯齿
形,导致故障率慢慢升高,即软件产生了
退化,而这种退化缘于修改。
(%)绝大多数软件都是定制的且是
图! "$ 软件故障率曲线手工完成的
!"
在硬件制造业,构件的复用是非常普遍的。但由于软件本身的特殊性,构件复用才刚刚起
步。理想情况下软件构件应该被设计成能够被复用于不同的程序,尽管今天的面向对象技术、构
件技术已经使软件的复用逐渐流行,但这种复用还不能做到像硬件产品那样拿来即用,还需要进
行必要的定制(构件之间的组合、接口的设计、功能的修改与扩充等),而且软件开发中构件的使
用比例也是有限的。整个软件产品的设计基本上还是依赖于人们的智力与手工劳动。
(!)开发过程复杂且费用昂贵
现代软件的体系结构越来越复杂,规模越来越庞大,所涉及的学