丁 /J软 午 ·捌午
加
软件重用与提高软件生产率
合肥工业大学 熊云凤
软件生产率是指开发软件的赦率,它是衡量
软件开发水平的一个重要因素。影响软件生产率
的因素是多方面的 ,主要地来说 ,是 否使用 良好
的软件工程设计方法和方便的软件设计工具环
境会对软件生产率产生很大的影响。近几十年
来,软件工程已研究发展了各种各样的软件工程
设计方法及软件设计工具。具体地来说,软件重
用技术对于提高软件生产率 ,提高软件质量和缩
短软件开发周期具有持殊重要的意义 据分析 ,
开发~个 新的应用 系统,4o 至 6O 的代码是
重复以前的成分 ,有的甚至高达 85 。因此,软
件重用将给软件生产带来巨大的经济效益,这种
有效的手段使得生产软件产品与生产硬件产品
一 样,构造一个新的系统时,首先订赡相应的软
件模块 ,然后对其进行适当的组合,而不是每次
都重写每个模块 。8O年代以软件复用为主要 目
的的面向对象技术的出现与成熟 ,软件重用的思
想与技术开始引起人们的重视 。
软件重用包括对以下各种信息的重用:软件
需求说 明、系统 设计、源代码的模块.操作系统
文档、分析数据、测试信息、维护信息数据库以及
软件开发计划和方法学 软件重用实际就是在新
的场合下使用以前得到的概念或对象 ,它贯穿于
需求说 明、设计、编程及测试这一软件开发的整
个生命周期 ,可重用的软件信息可以划分为三个
级别 :(1)思想的重用包括说明、设计、开发方法
技术等;(2)领域知识重用 ,包括文档、技术手册,
计划参加人员分析数据、测试和维护信息数据库
等;(3)个别部件的重用,包括源代码、子例程、模
块 、操作系统、软件包、编程语言和工具等。
软件重用的方式大体可分为两种。最简单易
行的一种方式是直接组合可再应用的软件单位,
用的最多的是各种程序库和软件库 。另一种方式
是按模式再应用,有如下几种情形:(1,面向问题
编程,用面向问题的语言,或者非常高级程序语
1 }1
言编写程序 ,这样的程序实质上是问题的一种高
级描述 ;(2)程序更换,设计能把一种语言的源程
序变换成另一种语言的程序的源代码变换系统;
(3)程序 系统生成,设计一个根据特定的具体说
明和要求能产生出特定的软件的系统,即程序自
动生成系统,例如,现在的一些程序设计语言提
供的界面生成工具就包含了类似的概念。
在上述提到的软件重用方式 中,使用程序库
或软件库就涉及到一个如何建立以及使用、检索
这些软件库的方法问题。建立一个可重用的软件
库有两种基本方法 :一是专门建立可重用的软件
库;一是将以前开发的软件分类整理,收集成一
个可重用的软件库 。当重新开发一个应用软件
时,可根据对软件的规格说明和总体设计充分利
用软件库 中的软件模块,以较快的速度,鞍小的
代价开发出新的软件产品。同时,叉可以将新开
发出的可重用的软件模块加入软件库中。
要实现软件部件的重用,最关键的技术就是
如何在软件库中查找所需的软件部件。若要实现
个别部件的重用 ,可按如下的一般算法进行;给
出一套所需部件的功能说明——搜索部件库找
出符合说明的候选部件——如果某个部件符合
全部说明,它就是所求,其中若有多个候选者均
只部分满足说明,则按与需求的匹配程度进行排
序,找出最佳候选 部件进行修改,以使其符合全
部说明,最后将合适的部件有机地组合在一起。
另外,采用软件工厂的方法来实现软件重用。首
先,建立大量的软件部件并培养大批使用和开发
部件的程序员 }其次,把软件开发过程划分为各
个阶段,并将不同防段分配给软件工厂内的不同
机构;最后开发一整套软件工具和标准来支持软
件开发生命周期中的重用。这种方法是将软件的
开发当成工厂生产产品一样 ,采用先进的流水作
业和装配技术,快速高效地生产出软件产品。(下
转第 45页)
维普资讯 立马乙 .~t等和 /J 软件j .轩肉干
软件重用与提高软件生产率
合ß~工业大学 集云凤 7月/f 15
软件生产率是指开发软件豹效率,它是衡量
软件开发水平的一个重要因素。影响软件生产率
的因素是多方面约,主要地来说,是否使用灵童季
的软件工程设计方法和方便给软件设计工具环
境会对软件生产率产生很大约影响 2 近几十年
来,软件工程已研究发展了各种各样的软件工程
设诗方法及软得设计工具。具体地来说,软件重
用技术对于提高软件生产率,提毫软件质量和缩
短软件开发周期具有待殊重要的意义a 据分析,
开发扫一个新的应用系统.40%至 60%的代码是
重复以前的成分.有的甚至高达 85%0 因此.软
件重m将给软件生产带来巨大的经济效益,这种
有效的手段使得生产软件产品与生产硬件产品
一样,构造一个新约系统时,首先订购柜应能软
件模块,然后对其进行适当的经舍,而不是每次
都重写每个模块。 80 年代以软件复细为主要目
的的面向对象技术的出现与成熟‘软件重用约思
想与技术开始引起人们的重视.
软件重用包活对以下各种信患的重用软件
需求说明电系统设计、源代码的模块油主辜作系统、
文铛、分析数据、测试信息、维护信息数据库以及
软伶开发计划和方法学 b软件重用实际就是在新
的场合下使用以前得到的概念或对象.它贯穿于
需求说明、设计、编程及源试这一软件开发的整
个生命周期,可重用的软件信息可以划分为三个
级别,(1)思想的重用包括说明、设计、开发方法
技术等, (2)领域知识重用.包括文挡、技术手溃,
计划参加人员分析数据、测试和维护信患数据库
等; (3)个jJlJ部件的重题,包括源代码、子倒程、模
块、操作系统、软件包、主章程语言和工具等e
软件重店的方式大体可分为两种思最简单易
行的一种方式是直接结合可再应用的软件单位,
后的最多的是各矜程序库和软件库 e另一种方式
是按模式再应用,有如下几矜情形=也〕雷同I问题
编程,黑面向问题也语言,或者非常高级程序语
言编写程序理这样豹程序实质上是向题约一种高
级描述丘2)程序更换,设计能把一种语言的源程
序变换成另一种语言的程序的盟军代码变换系统 s
(3)程序系统生成,设计一个根据特定的具体说
明和要求能产生出待定约软件的系统.I!P程序自
动生成系统,例如,现在的一些程序设计语言提
供的界面生成工具草草包含了类似的概念.
在上述提到的软件重用方式中,使用程序库
或软件库就涉及到一个如何建立以及使理、检索
这些软件库的方法院题。建立一个可重用的软件
库有两种基本方法 z一是专门建立丐重用的软件
库吉一是将以前开发约软件分类整理,收集成一
个可重用的软件库 a 当重新开发一个应用软件
对,可根据对软件的规格说明和总体设计充分科
用软件库中的软件模块,以较快约速度,较小的
代价开发出新的软件产品。同时,又可以将新齐
发出的可重用的软件模块加入软件库中 a
要实现软件部件的重用,最关键的技术就是
如何在软件库中查我所霜的软件吉事件,若要实现
于别部怜的重瘤,可按留下的一毅算法进行.绘
出一套所雳部件的功能说明一一搜索部件库找
出符合说明的候选部件一一如果某个曹事件符合
全部说明,它就是所求.其中若有多个候选者均
只部分满足说碗,则按与需求的匹配程度进行排
序.拔出最佳候选部件进行修改,以使其符合全
部说明,最后将合适的部件有机地组合在一起。
另外,采用软件工厂的方法来实现软得重眉目首
先,建立大量的软件部件并培养大批使用和开发
部件的程序员 z其次,把软件开发过程划分为各
个阶段,并将不同防段分配给软件工厂内的不同
机构善最后开发一整套软件工具租标准来支持软
件开发生命周锁中的重用 a这种方法是将软件的
开发当成工厂生产产品一样.采用先进的流水作
业和装配技术.快速离效地生产出软件产品 OC下
特草 45 页}
《安徽电力》1995年增刊
户做出不愿或不能做出的设计决定
· 有优 良的数学形式
软件规格说 明的表示方式有多种:各种表示
方式均有自已的特点和特定的适用范屈 。形式化
软件规格说明和可视软件规格说明是学_术界的
两个十分活跃的领域。
(1)形式化软件规格说 明
形式化软件规格说明有精确定义的语法和
语义.可进行一致性、完整性检查,有利于程序 自
动化生成.很受学术界推崇。目前,已研制出了许
多形式化规格说 明语言。这些形式化规格说 明语
言按语义学方法可分为:
a.面向模型的语言。这类形式化规格说明语
言可根据数学结构描述系统的行为模型。在串行
系统 中有 VDM 语言、z语言 ,在并行和分布式
系统中有 Petri Nets、CCS、CSP
b.面向特性的语言 这类形式化规格说明
语言允许描述系统行为的最小约束,又可分两小
类。
· 公理类语言。用一阶逻辑描述关于抽象数
据类型操作的前后断言,包括 Larch,Anna。
· 代数类语言。基于多分类代数,用代表实
体的等量关系描述系统的行为特征,在串行系统
中包括 Clear,Act 0ne。
在并行和分布式系统中,面向特性的语言有
Temporal Logic,LOTOS 形式化软件规格说明
不能完全代替非形式化的软件规格说明。形式化
软件规格说明与非形式化软件规格说明要互相
补充
45
(2)软件规格说明中的图形 的应用。
在计算机语言中采用图形并非近期的新想
法。可认为图形的文本有着更多的视觉效果,已
用的图形如附表所示。
附衰 软件觏格说明图形
软件定义 总体设计 详细设计
数据流圈(DFD)
结陶化分析便计图[SADT
R—NET图
R—NET圈
HIPO 圈
错樗化分析设计巨(sA ) ~~kson圈
R—NET 图
结构化圈(sth~uTe山 n) Warn[er--orr圈
E— R 圉
Jackson图 Green Print圈
warn ∞r目
4 知识工程对软件规格说明的作用
最高层次的软件规格说明应包括现实世界
实体与活动的信息。可以利用知识获取技术获得
软件规格说明所需篓的知识 ,有人提出领域分析
(domain analysis)的概念以标识,获取和组织应
用领域中对软件规格说明有用的信息.以便在该
领域内开发新系统时重用这些信息。
知识表示 中的许 多模型(如框架,语义网络
等)与软件规格说明(如 SADT图,Jackson图,E
— R图等)有较多的相似之处 ,该技术有助加深
软件规格说明表示方式的理懈。
(收稽 FI期 I995—1O--27)
(上接 第 62页)
检索软件库的方法也是采用软件重用技术
提高软件生产率的重要环节,其效率的高低直接
影响着软件生产率,手工方法是用手工的方法到
软件库 中检索所需的软件模块,然后将所有检索
到的模块组合后 ,进行修改或补充,最后形成新
的软件产品,其效率是很低的;基于数据库的半
自动方法 ,是将软件库中各部件以数据库形式存
于磁盘上,利用数据库系统中方便地快速度的自
动查询功能.以较高速度将所需的软件检索出
来;人工智能方法特别是采用 专家系统技术 ,将
有经验的程序员重用软件的知识整理成一个知
识库 ,在 知识的指导下利用数据库中的软 件部
件,这样可以提高软件重用的自动化程度,加速
软件的生产。
(收稿 日期 1995—10—29)
维普资讯
《安哥童电力辛1995 年增刊
户做出不愿或不能做出部设ìt决定
·有优良的数学形式
软件规格说明的表示方式有多种 ε各种表示
方式均有自己的特点和特定的适用范围 s形式化
软件规格说碗初可视软件魏恪说确是学术界的
两?十分活跃的领域e
(l)形式化软件规格说明
形式化软件规格说明有精确定义的语法和
语义,可进行一致性、完整性检查,有利于程序臼
动化生成,很受学术界推崇。目前,已研豁出了诗
多形式化规格说明语言。这些形式化规格说明语
言按语义学方法可分为 z
a. 面向模型的语言,这类形式也规格说明语
言可根续数学结构撞述系统的行为模型。在串行
系统中有 VDM 语言之语言‘在并行手百分布式
系统中有 Petri Nets 、CCS、CSP.
b. 露向特性的语言,这类形式化魏格说现
语言允许描述系绞行为的最小约束,叉E百分两小
类。
,公理类语言。用一阶逻穗描述关于拮象数
据类型操作的前后断言,包括 Larch • Anna "
·代数类语言。基于多分类代数,用代表实
体的等量关系描述系统的行为待征,在串行系统
中包括 One.
在并行手百分布式系统中,面向辛辛煌的语言有
Temporal Logic , LOTOS.形式化软件规格说明
不能完全代替非形式化的软件规格说明。形式化
软件规格说哥哥与非形式化软件规格说确要互招
补充,
45
(2)软件规格说明中的图形的应用。
在ìt算机语言中采用图形并非近烧的新想
法。可认为图形的文本有着更多的视觉效果,已
用的图形如附表所示 a
附费 软件规格说明图形
软件定义 单悻资it i幸摆设诗
R-NET III
鼓主居流留<DFOl HlPO 国
结费生告斩琵计盟 (SA盯3 Jack50n 国
HIPO 图 R-NET 图
结再 it固(,应t1ur~由n) Warnier-orr æ
结纯的眼诗匡rSADT) E-R 图
Jackson 图 Green Print 国
R-NET 困 W arnLer- orr m
)J-S charr
4 知识工程对软件魏格说明创作用
最高层次的软件统格说明应包括现实世界
实体与活动的信息。可以利用知识获取技术获得
软件规格说明所需要的知识,有人提出领域分析
Cdomain analysls)的概念以标识.获取和组织应
用领域中对软件规楼说明有用自号信息.以便在该
领域内开发新系统时重用这些信息a
知识表示中的许多模型〈如框架,语义网络
等}与软件规格说明 E 主~SADτ 圈,Jackson 图‘E
R (E等)有较多的相似之处,该技术有勤部深
软件规梅说明表示方式的理解。
(!在穰目期 -10-~7、
一…一一一…{上接第 62 页〕
检索软伶库的方法也是采用软件重用技术
提高软件生产率的重要环节.其效率的离低直接
影响着软件生产率.手工方法是用于工的方法~J
软件库中检索所需的软件模块,然后将所有检索
到的模块组合后,遂行修改或补充,最后形成新
的软件产品,其效率是很低的辛基于数据库前半
自动方法,是将软件库中各部件以数据库形式存
于磁盘上,利用数据库系统中方便地快速度的§
动查有功能,以较离速度将所需的软件检索出
来e人工智能方法特别是采用专家系统技术,将
有经验的程序员重用软件的知识整理成一个知
识库,在知识的指导下利用数据库中约软件部
件司这样可以提离软件重用的自动化程度,主Oi主
软件的生产。
t草草稿日期 1四5-ju-29)