论文部分内容阅读
[摘 要] 随着计算机技术的发展,[2]社会对软件的需求量日益增大,而软件的开发完全依赖于人工,致使软件开发成本费不断上涨,在美国软件成本约占计算机系统总成本的90%,已成为司空见惯的现象。人们在大型软件项目开发面前显得力不从心,以至于20世纪60年代末至20世纪70年代初,“软件危机”一词在IT界广为流传。许多重要的大型软件开发项目,如IBM OS/360和世界范围的军事命令和控制系统(WWMCCS),在耗费了大量的人力和财力之后,由于离预定目标相差甚远不得不宣布失败。软件危机达到了令人难以忍受的地步。“软件危机”的解决方法有两种:一是软件工程,一是软件重用。本文结合《软件工程》的思想对软件重用技术进行探讨。
[关键词] 软件重用、模块、重用技术
0 引言
通过对软件重用的理论与关键技术的分析,解释了软件重用的基本定义、特点、当前流行的技术和重用关键,指出了几种重要的软件重用技术在进行程序设计时应注意的事项,并在此基础上展望了软件重用的优点和未来。
1 软件重用的定义、分类及特点
1.1 软件重用的定义
[1]软件重用(Software Reuse,又称软件复用或软件再用)的概念早在1968年的NATO软件工程会议上就已经提出可复用库的思想。软件重用的定义也很多,比较权威和通用的一种是:软件重用是利用事先建立好的软件产品创建新软件系统的过程。这个定义蕴含着软件重用所必须包含的两个方面:一是系统地开发可重用的软件产品。二是系统地使用这些软件产品作为构筑模块,来建立新的系统。
1.2 软件重用的分类
为软件重用分类比较困难,因为软件重用技术众多,一种重用技术可以包括多种重用形式。按照软件重用所应用的领域范围,可以把软件重用划分为横向重用和纵向重用。
1.3 软件重用的好处
软件重用会带来以下好处:
(1)提高软件生成率。
(2)缩短开发周期。
(3)降低软件开发和维护费用。
(4)生产更加标准化的软件。
(5)提高软件开发质量。
(6)增强软件系统的互操作性。
(7)减少软件开发人员数量。
(8)使开发人员能比较容易的适应不同性质的项目开发。
2 流行的软件重用技术
最理想的重用技术是它的重用产品能够和用户的需求完全一致,不需要用户做任何自定义,并且能够无需用户学习就能够被使用。自从软件重用思想产生以来,计算机科学家和软件工程师就致力与软件重用的技术的研究和实践。在30多年的时间内,出现多种软件重用技术,如:函数和数据结构,模板,面向对象、设计模式、组件、框架、构架等,下面我主要就函数和数据结构重用进行说明。
2.1函数和数据结构重用
通用的与平台无关的函数,以及对常用的数据结构(如队列、链表等)的操作过程均是可以重用的。[3]为了保证函数与数据结构的重用,需要注意以下事项:
(1) 对于链表等常用数据结构的操作采用宏定义方式进行定义,形成标准数据结构宏库。
(2) 将与平台无关的函数作成函数库,这个函数库可以根据需要不断扩充,也可以根据功能分为几个独立的函数库。
(3) 对要重用的宏或函数要有相应的说明文档,文档内除对函数本身、输入/输出参数和返回值的含义进行说明外,还要特别说明其使用时的注意事项。对于每一种使用情况,最好提供例子加以解释。
(4) 重用函数内要进行严格的入口参数判断及错误处理,重用函数内要增加必要的注释。
3 软件重用的关键
软件重用关键在于可重用模块的定义和划分,模块的划分原则应以软件功能分解为基础,使每个模块实现一个特定的功能;并且,每个模块只包含实现此功能的各项任务的所有成分——即模块要独立。具体设计时要遵循以下原则:
1)模块的独立性设计原则
⑴尽量使用数据耦合——模块间的联系只通过传递数据参数来实现。
⑵尽量少用控制耦合——模块之间避免传递控制信息。
⑶将可能发生变化的因素或经常需要改动的部分限制在某个模块内。
⑷将那些与外部环境有密切联系的部分限制在某几个模块中。
⑸适当限制模块间传递参数的个数。
⑹不要直接访问模块的内部信息。
⑺模块内的变量要局部化,仅通过函数参数与外部进行联系。
2)模块的结构设计原则
扇出—— 一个模块所属的直接下级模块的个数。
扇入—— 直接调用的该下属模块的上一级模块个数。
⑴模块的扇出数最好不超过7个。
⑵块的扇入数最好不超过9个。
⑶高层模块应有较高的扇出,低层模块应有较高的扇入。
3)模块的规模原则
每个模块一般不能超过200条可执行语句。
4)模块间的控制关系原则
⑴任何模块之间通信只限于上级模块和下级模块,不能与其他上下级模块直接通信。
⑵同一级模块之间发生联系,必须通过它们的上级模块进行。
⑶每个模块必须有唯一的入口和出口。
5)模块间的控制结构原则
必须采用以下5种控制结构:
⑴ 顺序控制结构
⑵ 条件控制结构
⑶ 循环控制结构
⑷ 分情况控制结构
⑸ 并行控制结构
4 展望未来
软件可重用性是从设计、开发到调试、归档的一个系统工程,在每一个步骤都要围绕可重用性进行工作,绝不能为了图一时的方便而引起可重用性的破坏。从设计的标准化开始,到开发的标准化,最后是文档的标准化,这一系列过程都必须有统一的管理。有人预测:到2003年至少70%的新应用程序将会由构筑模块(building blocks)构成,这些构筑模块(如软构件和应用程序框架)加快了产品的开发速度和企业的应变能力。以设计模式,框架和商业构件形势出现的软件产品可以通过重用显著的提升开发品质和生产力,重用反过来也可以显著的降低成本和缩短软件开发周期。未来应用程序的开发依存于一个开放的,便利构件选择和装配的综合体系结构。信息系统组织必须为基于构件开发制定一项战略。
参考文献
[1]http://www.ccw.com.cn/htm/produ/corner/02_1_28_3.asp
[2]http://www.cnipr.com/zsyd/xslw/patent/t20040331_27326.htm
[3]郑人杰 殷人昆 软件工程概论[M] 清华大学出版社 1998.4■
[关键词] 软件重用、模块、重用技术
0 引言
通过对软件重用的理论与关键技术的分析,解释了软件重用的基本定义、特点、当前流行的技术和重用关键,指出了几种重要的软件重用技术在进行程序设计时应注意的事项,并在此基础上展望了软件重用的优点和未来。
1 软件重用的定义、分类及特点
1.1 软件重用的定义
[1]软件重用(Software Reuse,又称软件复用或软件再用)的概念早在1968年的NATO软件工程会议上就已经提出可复用库的思想。软件重用的定义也很多,比较权威和通用的一种是:软件重用是利用事先建立好的软件产品创建新软件系统的过程。这个定义蕴含着软件重用所必须包含的两个方面:一是系统地开发可重用的软件产品。二是系统地使用这些软件产品作为构筑模块,来建立新的系统。
1.2 软件重用的分类
为软件重用分类比较困难,因为软件重用技术众多,一种重用技术可以包括多种重用形式。按照软件重用所应用的领域范围,可以把软件重用划分为横向重用和纵向重用。
1.3 软件重用的好处
软件重用会带来以下好处:
(1)提高软件生成率。
(2)缩短开发周期。
(3)降低软件开发和维护费用。
(4)生产更加标准化的软件。
(5)提高软件开发质量。
(6)增强软件系统的互操作性。
(7)减少软件开发人员数量。
(8)使开发人员能比较容易的适应不同性质的项目开发。
2 流行的软件重用技术
最理想的重用技术是它的重用产品能够和用户的需求完全一致,不需要用户做任何自定义,并且能够无需用户学习就能够被使用。自从软件重用思想产生以来,计算机科学家和软件工程师就致力与软件重用的技术的研究和实践。在30多年的时间内,出现多种软件重用技术,如:函数和数据结构,模板,面向对象、设计模式、组件、框架、构架等,下面我主要就函数和数据结构重用进行说明。
2.1函数和数据结构重用
通用的与平台无关的函数,以及对常用的数据结构(如队列、链表等)的操作过程均是可以重用的。[3]为了保证函数与数据结构的重用,需要注意以下事项:
(1) 对于链表等常用数据结构的操作采用宏定义方式进行定义,形成标准数据结构宏库。
(2) 将与平台无关的函数作成函数库,这个函数库可以根据需要不断扩充,也可以根据功能分为几个独立的函数库。
(3) 对要重用的宏或函数要有相应的说明文档,文档内除对函数本身、输入/输出参数和返回值的含义进行说明外,还要特别说明其使用时的注意事项。对于每一种使用情况,最好提供例子加以解释。
(4) 重用函数内要进行严格的入口参数判断及错误处理,重用函数内要增加必要的注释。
3 软件重用的关键
软件重用关键在于可重用模块的定义和划分,模块的划分原则应以软件功能分解为基础,使每个模块实现一个特定的功能;并且,每个模块只包含实现此功能的各项任务的所有成分——即模块要独立。具体设计时要遵循以下原则:
1)模块的独立性设计原则
⑴尽量使用数据耦合——模块间的联系只通过传递数据参数来实现。
⑵尽量少用控制耦合——模块之间避免传递控制信息。
⑶将可能发生变化的因素或经常需要改动的部分限制在某个模块内。
⑷将那些与外部环境有密切联系的部分限制在某几个模块中。
⑸适当限制模块间传递参数的个数。
⑹不要直接访问模块的内部信息。
⑺模块内的变量要局部化,仅通过函数参数与外部进行联系。
2)模块的结构设计原则
扇出—— 一个模块所属的直接下级模块的个数。
扇入—— 直接调用的该下属模块的上一级模块个数。
⑴模块的扇出数最好不超过7个。
⑵块的扇入数最好不超过9个。
⑶高层模块应有较高的扇出,低层模块应有较高的扇入。
3)模块的规模原则
每个模块一般不能超过200条可执行语句。
4)模块间的控制关系原则
⑴任何模块之间通信只限于上级模块和下级模块,不能与其他上下级模块直接通信。
⑵同一级模块之间发生联系,必须通过它们的上级模块进行。
⑶每个模块必须有唯一的入口和出口。
5)模块间的控制结构原则
必须采用以下5种控制结构:
⑴ 顺序控制结构
⑵ 条件控制结构
⑶ 循环控制结构
⑷ 分情况控制结构
⑸ 并行控制结构
4 展望未来
软件可重用性是从设计、开发到调试、归档的一个系统工程,在每一个步骤都要围绕可重用性进行工作,绝不能为了图一时的方便而引起可重用性的破坏。从设计的标准化开始,到开发的标准化,最后是文档的标准化,这一系列过程都必须有统一的管理。有人预测:到2003年至少70%的新应用程序将会由构筑模块(building blocks)构成,这些构筑模块(如软构件和应用程序框架)加快了产品的开发速度和企业的应变能力。以设计模式,框架和商业构件形势出现的软件产品可以通过重用显著的提升开发品质和生产力,重用反过来也可以显著的降低成本和缩短软件开发周期。未来应用程序的开发依存于一个开放的,便利构件选择和装配的综合体系结构。信息系统组织必须为基于构件开发制定一项战略。
参考文献
[1]http://www.ccw.com.cn/htm/produ/corner/02_1_28_3.asp
[2]http://www.cnipr.com/zsyd/xslw/patent/t20040331_27326.htm
[3]郑人杰 殷人昆 软件工程概论[M] 清华大学出版社 1998.4■