(系统工程专业论文)软件复用的研究.pdf_第1页
(系统工程专业论文)软件复用的研究.pdf_第2页
(系统工程专业论文)软件复用的研究.pdf_第3页
(系统工程专业论文)软件复用的研究.pdf_第4页
(系统工程专业论文)软件复用的研究.pdf_第5页
已阅读5页,还剩72页未读 继续免费阅读

(系统工程专业论文)软件复用的研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北方交通大学硕士学位论文 摘要 本文讨论了软件复厦的各种技术方法。包括软件复用的概念、过 程、作刚、软构件库的构造方法、软部件的复用方法、面向对象的合 成技术等。提出了一种能较好支持软件复用的组合模型开发技术,并 讨论与设计了软件复用的关键部件:库管理工具。对于一些困扰软件 复用的问题,提出了基于模糊的解决方法。本文中,对软件复用的项 目管理也进行了探讨。在本文最后,提出了解决一些软件复用过程中 较重要的具体问题的方法。 a b s t r a c t t h is p a p e rf u l lv inl r o d u c e sa l lt h em e t h o d s0 fs or t w a r e r e u s e bilit y ( it i clu d e sc o n c e p t s ,p r o c e d u r e ,t h ec o f i st r u c tm e t h o d s ,t h er e u s em e t h o d so fc o m p o n e n t s ,o b j e c t o r i e n t e dc o n s t r u e t t e c h n i q u e ) t h ea u t h o rp r o p o s eo n ek i n do fd e v e l o p i n gt e c h n i q u e w h i c hc a ns u p p o r ts o f t w a r er e u s e b i l i t yw e l l t h ek e yp a r t0 f s o f t w a r er e u s e t h ei i bm a n a g e m e n tt 0 0 1 sa l s oi sd i s s c u s e da n d d e f i n e d ,t h ea u t h o ra ls op r o p o s e s f u z z y b a s e dm e t h o d st 。s o 】v e s o m ed i f f i c u l tp r o h l e m so fs o f t w a r er e u s e b i l i t v a tl a s tw e d is c u s st h es o f t w a r er e u s ep r o j e c tm a n a g e m e n ta n dp r o p o s es o m e g o o dw a y st od e a lw it hp r a c t i c a lp r o b l e m s 第1 页 北方交通大学硕士学位论文 - j 刖吾 2 0 世纪6 0 年代末至2 0 世纪7 0 年代初,“软件危机”一词在计算 机界广为流传。事实上,“软件危机”几乎从计算机诞生那一天起就 出现了。“软件危机”主要表现在软件需求过大,而有经验的软件开 发人员不足上。这样开发出来的软件错误百出,周期很长,常常不能 按期交货,以至于软件开发费用严重超支,甚至半途而废的例子屡见 不鲜。软件成了阻碍计算机事业继续向前发展的“瓶颈”。 危机的原因主要有:l 、用户对软件需求的描述不够精确、有遗漏、 二义性或错误,甚至在软件开发过程中,用户还提出修改软件功能界 面,支持环境等方面的要求;2 、软件开发人员对用户的理解与用户 的本来愿望有差异,导致开发出来的软件产品与用户要求不一至:3 、 软件开发人员不能有效独立自主地处理大型软件的全部关系和各个分 支,因此容易产生疏忽和错误;4 、缺乏有力的方法学和工具方面的 支持,过分依赖程序开发人员在软件开发过程中的技巧和创造性,加 剧软件产品的个性化;5 、软件产品的特殊性和人类智力的局限性, 导致人们无力处理“复杂问题”。一旦人们采用先进的组织形式,开 发方法和工具提高了软件的开发效率和能力,新的、更大更复杂的问 题又摆在人们面前。 为了克服“软件危机”,为了减少开发活动中的大量的重复性工 作,人们采用软件工程来开发软件。这样一来就能提高软件生产率, 降低开发成本,缩短开发周期。同时,由于软部件大都经过严格的质 量认证,并在实际运行环境中得到检验,因此复用软部件有助于改善 第i 页 j ! 查銮望查堂堡主兰焦堡奎 软件质量。此外,大量使用软部件,软件的灵活性和标准化程度也可 望得到提高。但是,在软件复用的过程中,存在着许多难以用语言精 确表达的问题。例如,我们要求软部件是内聚性强的软部件,是藕合 度低的软部件,软件开发模型是比较适用于开发复用软件的模型,组装 入软部件库的软部件是复用度高的软部件。那么,到底怎样才算软件 内聚性强,软件藕合度底? 有什么指标来说明软件开发模型确实比较 适用于软件复用的开发? 又用什么来衡量哪一个软部件复用度确实是 高,组装入软部件库后效果较好。这些问题在目前的软件复用研究中 都没有得到很好的解决。综观以上所述,这些问题的关键在于问题的 提出具有模糊性,超出了传统的精确数学方法的研究范畴。因此,本 文提出了用模糊数学的方法来进行软件复用的研究,可以很好的解决 以上问题。本文还讨论了软件复用的理论与前景,并提出了在数据库 管理信息系统中实现软件复用的一些问题。最后,以n i c r o s o f tf o x p r o 为例,讨论了一些在软件复用开发过程中的具体问题。 第2 页 北方交通大学硕士学位论文 第一章软件复用总述 1 1 软件复用的概念 软件复用是指在两次或多次不同的软件开发过程中重复使用相同 或相似元素的过程。软件元素包括程序代码、测试用例、设汁文档、 设计过程、需求分析文档甚至领域知识。对于新的软件开发项目而言, 它们或者是构成整个目标软件系统的部件,或者在软件开发过程中发 挥某种作用,通常将这些软件元素称为软部件。 为了能够在软件开发过程中复用现有的软部件,必须f 此之前不 断地进行软部件的积累,并将它们组织成软部件库。软件复用要求软 件开发项目既要考虑复用已有的软部件的机制,又要系统地考虑生产 可复用已有的可复用软部件的机制,这类项目通常称为软件复用项f 1 。 1 2 软件复用的过程 软件复用过程如图 第3 页 北方交通大学硕士学位论文 目标软件 图卜1面向软件复用的软件开发过程 软件复用的关键点为域分析。根据不同应用领域的特征及相似性预测 软部件的可复用性,一旦根据域分析确认了软部件的复用价值,即可进行 软部件的开发,并对具有重要价值的软部件进行一般化,以使它们能够适 应新的类似的应用领域。然后,软部件及其文档即可进入软部件摩,成为 可供继续开发的项目使用的可复用资源。显然这是一个不断积累,不断完 善的渐进过程。随着软部件的不断丰富,软部件库的规模不断扩灭,因此 要求有合适的检索方法。 由图可知,在面向软件复用的开发过程中,可复用软部件库是软 件复用技术的关键。 1 3 软件复用方法 根据抽象、选择、实例化和集成,可将软件复用方法分为8 类:高 级语言形式、设计和代码整理形式、原代码构件形式、软件模式形式、 第4 页 北方交通大学硕士学位论文 应用生成器形式、甚高级语言形式、转换系统形式以及软件体系结构 形式。 高级语言中可复用的对象是汇编语言模式:高级语言是抽象规范, 其对应的汇编语言部分是抽象实现。 设计和代码整理形式:可复用对象是源代码片断,代码整理是从 已存在的软件代码系统中整块地进行拷贝,设计整理是拷贝大块代码 后,仅保留设计的全局样本,而删除许多内部细节。 源代码构件形式通过构造可复用库来实现该形式的复用,可复用 库要提供描述复用构件的行为的抽象规范说明,还要提供分类和检索 可复用构件的模式。可复用构件方法在专有领域,如数学分析中的d i s l 数据库,卓有成效,但在通用领域收效甚微。原因在于数学库能采用 一字检索,即一字抽象规范形式,如s i n 来描述正弦函数。 软件模式是可复用软件构件的形式化扩充。软件模式复用对象是 算法数据结构,软件模式的抽象规范是算法和数据结构的形式化描述, 而抽象实现对应于模式初始化时产生的源代码。 应用程序生成器复用完整的系统设计如专家系统生成器,编译器 的编译器,面向结构的编辑器的生成器。 甚高级语言即为可执行的规范语言。它适用于通用软件开发,而 应用程序生成器适合于特定领域。 转换系统复用方法的关键在于软件开发者只需维护和提供系统的 规范说明,而不用维护和实现;对规范进行修改时,常可复用以前的大 部分历史开发信息。 可复用的软件系统结构是指大粒度的软件框架,以及软件系统全 局的结构设计。如在不同的领域实例化并且复用数据库子系统;将不 同的词法分析器,语法分析器和代码生成插入到一个编译器框架中; 第5 页 j ! 查奎望盔兰堡主兰些堡塞 专家系统中的基于规则和黑板的结构;示波器的设计框架等都是可复 用的软件体系结构的实例。 1 4 软件复用的作用 由于软件产品的生产已经趋亍二工业化,软件复用的作用也越来越 重要。软件复用的作用主要有: ( 1 ) 由于在软件开发中使用了已有的可复用部件,从而可以降 低软件开发的成本,而且由于使用了经过严格测试的可复用部件,还 可以降低软件维护的成本,随着软件开发的规模越来越大,软件维护 的成本越来越高,软件维护成本的节约也就具有了越来越重要的意义。 开发成本和维护成本的节约降低了整个软件系统的成本,会带来明显 的经济效益; ( 2 ) 使用严格测试的可复用部件,可以提高开发的软件的质 量,提高用户的满意度,增强产品的竞争力,从而赢得潜在的经济效 益; ( 3 ) 使用可复用部件还可阱提高软件开发的效率,缩短软件 开发的周期,从而使软件产品能够及早供应市场,赢得稳定的市场份 额,这是比成本的节约具有更为重要的意义。因为,只要占领了市场, 就可以逐步完善己提出的的产品。可以不断的更新换代,从长远的角 度看,意义更为深远。而若不能占领市场,产品开发的投资无法收回, 产品的改善和更新换代也就成了一句空话。对于开发单位内部使用的 软件来说,由于使用了可复用部件,开发的软件可以提前交付使用。 第6 页 北方交通大学硕士学位论文 1 5 模糊数学方法与软件复用 人类的思维活动具有两方面特征。其一是直觉和严密性的有机结 合,决定了它具有模糊性的一面;其二是推理过程,其形式化的特点 使得计算机处理这类问题成为可能。但人类智慧与计算机功能之间有 着本质区别,人们借助于数字计算机用以往的经典数学来评价某一事 物就显得力不从心。与思维特征相对应,人的评价条件往往具有模糊 性。在软件复用过程中,较多地体现了这种方式。例如,软件内聚性 强,软件耦合度低。选出几个符合条件的软部件时如何选取最为合适 的对于支持软件复用的模型的开发原型的评价等等。在我们提出的软 件复用方法中,采用模糊数学的方法进行评价。因此,其更具有科学陛、 合理性。 1 6 软件复用的现状 为了提高软件开发和生产的竞争力,国外的一些公司开发和研制 了许多支持软件复用的软件系统。目前,软件工厂主要以非面向对象 技术实现软件复用,面向对象技术还处于研究阶段。系统复用的效果 可由生产率和产品质量来衡量。以下是几个支持复用的理论研究和实 践活动情况。 1 、d r a c o 系统 d r a c o 系统提供了利用复用技术构造软件系统的途径,除代码复 用外,重点考虑了分析和设计信息的利用。这样,构造相似的系统时, 可以提高软件专家的生产率。具体地说,根据问题领域来组织复用软 件构件;这些特定领域的程序语句被源代码到源代码的转换器优化, 第7 页 i ! 查茎望查堂堡主堂篁丝奎 再细化到其它领域。 2 、g e n e s i s 系统 g e n e s i s 系统是一个支持大型软件项目的基于软件工程的程序发 计环境。g e n e s i s 系统采用组装技术来实现复用。它具有可检索性, 可组装性和可理解性等特点。g e n e s i s 系统采用实体关系模型,系统 使用了一个数据库来存储所有的信息。 g e n e s i s 系统提供了c 摘要器和i n f o v i e w 工具来加强模块的理解 性。c 摘要器从c 程序中抽取有关对象的位置、对象之间的关系的信 息存储入程序数据库中,而i n f o v i e w 工具可用查询命令从数据库中查 询这些信息。 g e n e s i s 系统驱动复用的算法如下:分析给定部件;是否在数据 库中? 若在,复用该部件,否则,再分解,直至不能再分时,解决一 个更一般的问题。 3 、c 源代码清理系统提供了从己存在的软件系统中清理出可复 用构件的机制。系统从己存在的软件系统中探测出具有较高可复用性 的构件,而不是给出所有可复用构件。系统由一组工具集组成,采用 专家系统技术。工具集使用的知识库主要来源于原始系统软件开发人 员采用的知识,该知识局限于与复用有关的具有复用特性的所有抽象 级( 高级、低级和实现) 的设计知识。该知识有助于查询增强复用工 具的查询能力( 从原始软件中查询) ;其次来源于应用领域的知识, 该知识有助于增强系统的选择能力( 选择进生成复用的模块库) 。 工具集软件包括c 分析器,p r o l o o 解释器和交互式前端。c 分析 器输入源代码,在主存中生成整个程序的抽象语法树;查找此树进行 模式匹配,将匹配的模式信息转化为p r o l 0 6 事实,并输出到一个 p r o l o g 文件中。p r o l o g 解释器对c 分析器产生的供侯选的可复用构件 第8 页 北方交通大学硕士学位论文 进行推理,推理是由用户的需求动态启动的,它将满足规则的源代码 部分报告给用户。前端运行选择要分析的程序,启动p r o l o g 分析器, 给用户显示分析的结果。 4 、t o s h i b a 软件工厂 日本t o s h i b a 软件工厂中,最为关心的问题是质量控8r j 并n 提高软 件生产率,重点在于已复用的软件模块。对每个软件模块,定义了需求 分析级、设计级和程序级等三级抽象,并对各抽象级进行规格说明。 另外,给出无块的“表示”( p r e s e n t ) 。“表示”概念的引入,清晰 的介绍了程序的行为,大大地提高了生产率。而且,还建立了软件模 块的抽象级别间的映射,使得表示和可复用模块间具有可跟踪性。为 提高软件工厂中每个模块的复用频率,采用下列规范和策略:( 1 ) 针对复用而重写己获存在的模块:( 2 ) 对已存在的模块写“表示”; ( 3 ) 将“表示”存入c a s d ( 计算机辅助软件支持系统) ;( 4 ) 发 计新软件时,要求设计者遵循以下过程:浏览已有的可复用模块;找 到匹配,则做相应文档工作,并复用之。 1 7 本章小结 本章综合讨论了关于软件复用的基本概念、过程、作用及软件复 用的8 种方法。介绍了软件复用的现状,并提出了模糊数学方法与软 件复用的关系。 第9 页 北方交通大学硕士学位论文 第二章软部件库的构造方法 2 1 域分析 域就是向目标软件系统提出应用需求的问题及其背景知识。其主 要任务是针对单个或一族相似的域,以软件复用为目标,探寻并挖掘 域族中能够为多个目标系统共用的软部件,并对它们避行结构化组织 以备复用。如图: 域分析方法 图2 一l 域分析图 模型( 域中概念和实体的分类方法) ; 软件开发标准( 包括需求分析与此同时软件设计的方法框架。软件开 第1 0 页 北方交通大学硕士学位论文 发过程标准、编码标准、界面标准) 以及用于刻划域的特征、域中对 象、操作及其关系的语言。 域分析过程大致归纳为以下步骤: 1 发现并描述可复用实体; 2 对这些实体及它们之间的关系进行抽象化、一股化及参数化: 3 对可复用实体进行分类( 这里采用模糊聚类方法) 、归并以各日 后复用 2 2 用模糊聚类的方法确定软件复用度 在2 1 节的域分析过程中,我们用模糊聚类的方法对可复用实体 进行分类,确定“内聚性强”,“藕合度底”的软部件做为复用库组件。 即所谓的“强内聚,松耦合”。显然,这是一个模糊概念。 分类步骤如下: 第一步选择合理的统计指标; 笫二步将各代表部件的统计指标的数据标准化,主要是为了方 便分析比较: 标准化或正规化,可用下式处理: 了i x = 式中:x = 原始数据:x = 原始数据的平均值 c = 原始数据的标准差,即 第1 1 页 北方交通大学硕士学位论文 r _ 糖e 吲。 若把标准化数据压缩在 0 ,1 闭区间,可用极值标准化公式。 x 7 一x 二。 t = x 一x m m 显然,当x k x :。、时, x = 1 当了= t 二。时, 工= 0 第二步标定 即算出评价被分类对象间相似程度的统计量r :。( i ,j = l , 2 ,n ,n 为被分类对象的个数) ,从而得到论域u 上的相似关系 r r = 】o i 2 r 2 11 - 2 2 : r n lr n 2 这里计算r m 我们采用指数分析法 r i n r 2 。 : r n n 3 ( x * 一x # 丫, i 一j 第1 2 页 p 觚 。 一m = r 北方交通大学硕士学位论文 式中,s 。为适当选择的整数。 第四步聚类 要进行聚类,r 必须是一个模糊等价关系,即r 必须满足自反 性、对称性和传递性。而当r 不满足以上这些条件,则利用传递闭包 方法构造模糊等价关系。 举例: 例:设l = u 。,u 2 ,u 。,u “u s ) 表示五个软部件,其指标如下: u 1 - ( 8 3 ,6 4 ,5 0 ,3 0 ,8 9 ,5 4 ) l 1 2 = ( 4 2 ,3 0 ,8 0 ,7 5 ,3 6 ,2 8 ) u 3 _ ( 7 8 ,7 0 ,5 6 ,2 8 ,8 5 ,5 0 ) 1 3 4 = ( 4 5 ,2 8 ,8 5 ,7 0 ,3 7 ,2 9 ) u 5 = ( 8 6 ,6 8 ,5 4 ,3 2 ,9l ,5 6 ) 试对五个软部件分类。 首先,采用指数相似系数 其中 用上述公式计算得 。:;缸;掣) u = 1 ( i ,j = l ,2 ,5 ) 酾 瓦:;壹姒:- ,z ji 。【 第1 3 页 北方交通大学硕士学位论文 r = l 00 4 4 09 3 9 00 4 8 09 7 7 00 4 4 l 0 0 6 9 09 7 3 00 4 2 用传递闭包方法求模糊等价关系 r 4 尺2 = l 00 6 9 09 5 2 0 0 6 9 09 7 7 0 0 6 9 1 00 6 9 09 7 3 00 6 9 09 5 2 00 6 9 1 00 6 9 09 5 2 09 3 900 4 8 00 6 909 7 3 所以模糊等价关为r 2 ,现在可以聚类了。 当0 0 0 6 9 时 u 分为l 类:( u l ,u :,u 3 ,u 4 ,u 5 ) ; 当0 0 6 9 0 9 5 2 时 u 分为2 类: u 1 ,u 3 ,u 5 ) , u 2 ,u 4 ) ; 当0 9 5 2 0 9 7 3 时 u 分为3 类:( u l ,u 5j ,( u 2 ,u 4 ) , u 3 ) ; 0 0 6 9 09 7 3 00 6 9 00 6 9 09 7 7 00 4 2 09 5 2 00 4 1 l 09 7 7 00 6 9 09 5 2 00 6 9 第1 4 页 叫n ,o 9 2 6 5 0 9 o o 7 9 9 7 6 6 9 o 0 1 0 o o 9 3 9 卯 o o 1 o铊曲s j 9 o o 9 0 o o o 堇| 哪o ,c = c = 9 9 7 6 6 7 o o 9 1 0 o o 北方交通大学硕士学位论文 当0 9 7 3 0 9 7 7 时 0 分为4 类:( u 。,u 5 ) , u 2 ) ,( u 。) ,f u ; ; 当0 9 7 7 1 时 0 分为5 类:f u , , u : , u 。) ,( u ; , u ; 聚类图如下: 0 9 7 7 o 9 7 3 0 9 5 2 0 0 6 9 图2 2 模糊聚类结果图 这样通过设定不同的 值及不同的软构件标准,可以确定不同的 软构件是否符合人们要求。 例如: 若选l 为样本,当0 0 0 6 9 时,u 。,u :,u 。,u 。,u ;都可以 并入软构件库; 若选0 0 9 5 0 9 7 3 时,显然,u 。,u ;可符合要求,而u ,u 。, 不符合要求; 2 3 软部件的开发 域分析的结果为软部件的选取提供了指导原则,对于软件复用技 术来说,代码级复用是最简单,也是最流行的。 第1 5 页 北方交通大学颐士学位论文 2 3 1 代码级复用 代码级复用是迄今为止研究最深入,应用最广泛的复用技术。代 码级软部件除包含通常的代码段外,还必须辅以相应的解释和上下文 说明。代码级软部件的主体是子程序( 函数和过程) 。 开发面向软件复用的代码级部件与通常的程序设计活动的主要区 别在于:开发人员必须使用各种抽象化手段以发掘公共性、分离软部 件的应用上下文、功能及行为、从而提高可复用性。可以有三种抽象 方法开发软部件: 1 ) 功能抽象:软部件的功能由接口说明中的输入,输出关系确 定,实现细节对软部件使用者透明; 2 ) 数据抽象:在功能抽象的基础上进一步隐藏除界面参数之外 的所有数据,软部件的功能或行为由输入参数和软部件自身记忆的内 部状态决定,内部状态可由软部件的内部操作更新。面向对象的语言 的类是一种典型的基于数据抽象的软部件: 3 ) 过程抽象:在数据抽象的基础上进步实现在相同软部件同 时执行的多重线程的无关性。 2 3 2 需求及设计级软部件 除了代码级软部件复用技术外,需求及设计级软部件也是一种复 用技术。与代码级软部件复用相结合,有助于代码级软部件的提取与 理解。 需求级软部件包括问题( 及子问题) 描述,有关的域知识以及相 应的需求规格说明。设计级软部件包括设计规格说明( 片段) ,设计 决策描述以及相应的设计文档。( 例如总体设计方案,抽象算法) 第1 6 页 北方交通大学硕士学位论文 2 4 软部件库的组织 用可复用技术开发软件,形成软部件库以后,必须对收集和开发的 软部件进行分类。这种软部件分类方法及相应的软部件结构对软部件 的检索和理解有非常深刻的影响。软部件库组织应方便软部件的存储 和检索。 软部件库应具有如下基本功能: 1 ) 可以对软部件库维护:即增加、删除和更新软部件时不影响 软部件库的结构: 2 ) 可以精确匹配,也可模糊匹配; 3 ) 能查找功能方面相似或等价的软部件; 4 ) 库管理员及用户易于使用。 l 、关键宇分类法 这是一种最简单,最常用的组织方法。它以关键字为索引,提供 不同的分类方法来索引存在不精确的问题。但对小型复用库,这种方 法很有用。因为,在复用库中可复用构件不多的情况下,用户更喜欢 将分类目录打印出来,而不是求助于查询工具。因为,前者更快,分 类目录打印要求分类目录必须有许多索引,它能帮助软件工程师从不 同的方面来检索数据库。 2 、超文本组织法 超文本组织方法是基于全文检索技术。其主要思想为:所有软部 件必须辅以详尽的功能和行为说明文档。说明中出现的重要概念或软 部件以网状链接方式相互链接:检索者在阅读文档的过程中可按照人 类的联想思维方式任意跳转到包含相关概念或软部件的文档。全文检 索系统将用户给出的关键字与说明文档中的文字进行匹配,实现软部 第1 7 页 北方交通大学硕士学位论文 件的浏览式检索。 超文本( h y p e r t e x t ) 是一种非线性的网状组织信息方法,它以 结点为基本单位。链作为结点之间的联想或关联。见图。 图2 - 3 超文本结构图 一般地,结点是一个信息块。对可复用软件库而言,结点可以是 域概念、功能或行为名称、软部件名称等。在图形用户界面上,结点 可以是字符串,也可以是图象、声音、动画等。超文本组织方式为构 造软部件和复用软部件提供了友好,直观的多媒体方式。由于网状结 构比较自由,松散,因此,超文本组织方式更适于修改软部件库的结 构。 此外,还有其它的分类方法,如多面分类法。 2 5 本章小结 本章讨论了软部件库的基本构造方法。包括域分析、软部件开发 技术及软部件库的组织方法,并提出了用模糊聚类的方法确定软件复 用度,较好解决了软部件库构造方法中的关键问题。 第1 8 页 北方交通大学硕士学位论文 第三章软部件的复用 为了让软部件库在新的项目中发挥作用,即很好地实现软部件的 复用,必须完成以下工作:检索与提取软部件、理解与评价软部件、 修改软部件、最后将软部件组装到新的软件产品中。 3 1 检索与提取软部件 软部件库的检索方法与组织方式密切相关。 l 、基于关键字的检索 这种简单检索方法的基本思想是:系统( c a s e ) 工具在图形用户 界面上将软部件库的关键字树型结构直观地展示用户;用户通过对树 型结构的逐级浏览寻找需要的关键字并提取相应的软部件。当然,用 户也可直接给出关键字( 可含通配符) ,由系统自动给出合适的候选 软部件清单。 这种方法的优点是简单、易于实现,但在某些场合没有应用价值, 因为用户往往无法用软部件库中已有的关键字描述期望的软部件功能 行为,对库的浏览也容易使用户迷失方向。 2 、超文本检索法 这种方法的基本步骤是:用户首先给出一个或数个关键字,系统 在软部件的说明文档中进行精确或模糊的语法匹配,匹配成功后,向 用户列出相应的软部件说明。软部件说明是含有许多超文本节点的正 文,用户阅读这些正文时可实现多个软部件说明文档之间的自由跳转, 最终选择合适的软部件。为了避免用户在跳转过程中迷失方向,系统 第1 9 页 j ! 互銮堕查兰堡主兰竺堡苎 可以通过图形用户界面提供浏览历史信息图,允许将特定画面定义为 命名“书签”,并随时跳转至“书签”,并帮助用户逆跳转路径而逐 步返回。 这种方法的优点是用户界面友好,但在某些情况下用户难以在超 文本浏览过程中正确选取软部件。 3 、其它检索方法 除了上述两种方法之外,还有多面检索法等。 3 2 理解与评价软部件 要使库中的软部件在当前的开发项目中发挥作用,准确地理解软 部件至关重要。考虑到设计信息对于理解软部件的必要性以及软部件 的用户逆向发掘设计信息的困难性,必须要求开发软部件的过程遵循 公共的软件工程规范,并且在软部件库的文档中,全面准确地说明以 下内容; ( t ) 软部件的功能与行为; ( 2 ) 相关的领域知识: ( 3 ) 可适应性约束条件与例外情形; ( 4 ) 可以预见的修改部分及修改方法。 逆向工程是理解软部件的另一种重要手段。它试图通过对软部件 的分析,结合领域知识,半自动地生成相应的设计信息,然后借助设 计信息完成对软部件的理解和修改。 对软部件可复用性的评价,是通过收集并分析软部件的用户在实 际复用该软部件的历史过程中的各种反馈信息来完成的。这些信息包 括:复用成功的次数、对软部件的修改量、软部件的强壮性度量( 例 如出错数量) ,性能度量( 例如执行效率与资源消耗量) 等等。可以 第2 0 页 苎查至塑奎兰塑圭兰竺堡三 考虑建造相应的c a s e 工具来自动收集这些信息,按照某种域模型给出 可复用性评价。在本文中采用模糊数学的方法来进行评价。具体如下: 设评价指标u = 复用成功次数,修改量,强壮性,性能 ( u 可根 据实际情况扩展) ,评语集v = 很好,好,一般,差) ,利用模糊矩阵 尺 r 13f l4 3 4 来表示用户对每一个软部件可复用性指标度量的百分比。然后利用模 糊合成运算: 求出 作为用户评价结果。 例如设: 若确定 r = a r o30 2n 50 0 o 。jo 。30 i 60 ,0 d 0d ,2d 1 30 5 o io 5o 4o 0 第2 l 页 北方交通大学硕士学位论文 则 这表明有1 4 的用户认为可复用性很好,3 1 的用户认为好,4 5 的认 为一般,1 0 的用户认为差。 3 3 修改软部件 理想的情形是对库中的软部件不作修改直接用于新的软件项目。 但是,在大多数情况下,必须对软部件进行或多或少的修改,以适应 新的需求。为了减少软部件修改的工作量,要求尽量使软部件的功能、 行为和接口设计更为抽象化、通用化、参数化。这样,软部件的用户即 可通过对实参的选取来调整软部件的功能和行为。如果这种调整仍不 能使软部件适用于新的软件项目,用户就必须借助于设计信息和文档 来理解、修改软部件。所以,与软部件有关的文档和抽象层次更高的设 计信息对于软部件的修改至关重要。在软件复用领域,己有不少使软部 件的修改更为自动化的研究工作。 3 4 软部件的合成 软部件的合成是指,将库中的软部件( 经适当修改后) 相互连接, 或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标 第2 2 页 ! ! 互銮望查兰堕圭兰堡堡茎 软件。软部件的合成技术大致可分为基于功能、基于数据的合成技术 以及面向对象的台成技术。 ( 1 ) 基于功能的合成技术 基于功能的合成技术采用子程序调用和参数传递的方式将软部件 结合起来。它要求库中的软部件以子程序( 过程或函数) 形式出现, 并且接口说明必须清晰。当使用这种合成技术进行软件开发时,开发 人员首先应对目标软件系统进行功能分解,将系统分解为强内聚、松 藕合的功能模块。然后根据各模块的功能需求提取软部件,对它进行 适应性修改后再挂接在上述功能分解框架中。 ( 2 ) 基于数据的合成技术 基于数据的合成技术首先根据当前软件问题的核心数据设计结 构设计出一个框架,然后根据框架中各节点的需求提取软部件并进行 适应性修改,再将软部件逐个分配至框架中的适当位置。此后,软部 件的合成方式仍然是传统的子程序调用与参数传递。这种合成技术也 要求库中软部件以子程序形式出现,但它所依赖的软件设计方法不再 是功能分解,而是面向数据的设计方法,例如j a c k s o n 方法。 3 5 本章小结 本章讨论了软部件复用的基本技术。包括如何检索与提取软部件、 理解与评价软部件、修改软部件、软部件的合成。对于重点问题,即 如何较好地评价软部件,提出了模糊数学的解决方法。 第2 3 页 北方交通大学硕士学位论文 第四章支持软件复用的开发过程 4 1 瀑布模型 瀑布( w a t e r f a lm o d e l ) 模型也称软件生存周期模型,由w r o y c e 于1 9 7 0 年首先提出。根据软件生存周期各个阶段的任务,瀑布模型从 可行性研究( 或称系统分析) 开始,逐步进行阶段性变换,直至通过 确认测试并得到用户确认的软件产品为止。瀑布模型上一阶段的交换 结果为下一阶段变换的输入,相邻两个阶段具有因果关系并紧密相联。 一个阶段工作的失误将蔓延至以后的各个阶段。为了确保软件开发的 正确性,每个阶段任务完成后,都必须对它的阶段性产品进行评审, 确认之后再转入下一个阶段的工作。评审过程发现错误和疏漏后,应 该反馈到前面的有关阶段修正错误,弥补疏漏,然后再重复前面的工 作,直至某一阶段通过评审后再进入下一阶段,这种形式的瀑布模型 是带有反馈的瀑布模型。如图: 第2 4 页 北方交通大学硕士学位论文 图4 - 1带反馈的瀑布模型 行与维护 叩 遄 瀑布模型在软件开发过程中占有重要地位,它提供了软件开发的 基本框架。 瀑布模型的主要缺点是:1 ) 在软件开发的初始阶段就指明软件 系统的全部需求是非常困难的,有时甚至是不现实的。而瀑布模型在 需求分析阶段要求客户和系统分析员必须做到这一点后才能开展后续 工作。2 ) 需求确定后,用户和软件项目负责人要等相当长的时间( 经 过设计、实现、测试、运行) 才能得到一份软件的最初版本。如果用 户对这个软件提出比较大的修改意见,那么整个软件项目将会蒙受巨 大的人力、财力和时间方面的损失。总之,瀑布模型的应用有定的 局限性。 第2 5 页 北方交通大学硕士学位论文 4 2 陕速原型模型 原型( p r o t o t y p e ) 不是一个新概念。建筑师接到一个建筑项目后, 它根据用户提出的基本需求和自己对用户需求的理解,按一定比例设 计并建造一个原型。用户和建筑师以原型为基础,进一步研究并确定 建筑物的“需求”。当用户和建筑师对建筑物的“需求”取得一致理 解后,建筑师再组织对建筑物的设计和施工。针对软件开发初期在确 定软件系统需求方面存在的困难,人们开始借鉴建筑师在设计和建造 原型方面的经验。软件开发人员根据客户提出的软件定义,快速地开 发一个原型,它向客户展示了待开发软件系统的全部或部分功能,在 征求客户对原型意见的过程中,进一步修改完善,确认软件系统的需 求并达到一致的理解。 快速开发原型的途径有三种: 1 ) 利用个人计算机模拟软件系统的人机界面和人机交互方式; 2 ) 开发一个工作原型,实现软件系统的部分功能,而这部分功 能是重要的,也可能是容易产生误解的; 3 ) 找来一个或几个正在运行的类似软件,利用这些软件向客户 展示软件需求中的部分或全部功能。为了快速开发原型,要采用软件 复用技术,在算法的时空方面也可让步,以便争取时间,尽快向客户 提供原型。原型应充分展示软件的可见部分,如数据的输入方式,人 机界面,数据的输出格式等。由于原形是软件开发人员和客户共同设 计和评审的,因此利用原型能统一客户和软件开发人员对软件项目需 求的理解,有助于需求的定义和确认。原型开发模型如图。利用原型 定义和确定软件需求之后,就可以对软件系统进行设计、编码、测试 第2 6 页 北方交通大学硕士学位论文 和维护。 图4 - 2 建造原型 4 3 快速原型的构造过程 顾名思义,快速原型方法的关键在于如何快速地实现可运行的模 型,以便尽快提交用户确认后,然后再进行改进。 快速原型的构造过程可以归纳为分析与规划、实现、检查、改进 四个步骤: 第2 7 页 北方交通大学硕士学位论文 如图 分析与规划 提取重要的,! 善迫的用户需求 设计原型魄釜体结构 规划后续j 基讹 实现 懂甩软件重用技术设计原型 编码及调试 测试 检查 豫产译毽 收茕整鲴孝避意见翩彗步的用户需求 改进 改莲开发人员对用户需求的理解 进 下谈厦型进化的分析与规划阶鼹 图4 - 3快速原型构造及进化的基本步骤 第2 8 页 北方交通大学硕士学位论文 1 、分析与规划 当初次建立原型时,必须对用户需求进行分析;当针对已有原型 构造新的更为丰富和完善的原型时,必须将用户对已有原型的评价意 见、改进建议以及对新原型的需求进行分析。开发人员可以借助快速 原型方法提高用户参与程度、理解应用领域、剔除用户需求中的片面 性、模糊性和不一致性; 2 、实现 这一阶段的主要任务是针对前面得到的用户需求进行软件设汁、 编码、调试和测试。快速原型的实现过程特别强调软件复用技术的应 用,以便尽快的实现原型。 在原型实现过程中,对代码效率不宜有苛刻要求,除非当前原型 将作为最终软件产品; 3 、检查 这一阶段的主要任务是检查原型是否实现了分析和规划阶段提出 的目标,邀请用户实际操作该原型,要求用户进行评估,提出改进意 见和进一步的需求: 4 、改进 快速原型方法不仅要求软件原型不断改进和完善,也要求开发人 员在原型进化的过程中不断积累有关应用领域的知识,提高对用户需 求的理解程度,改进专业技能。同时,还要求用户利用原型逐步理解 目标软件系统的运作方式。在每一个开发阶段的末尾,开发人员应认 真反思所有重要的决策过程,评价自己采用的技术和方法,根据前面 检查阶段得出的结论,总结经验教训,这样来不仅有利于后续的原 型进化,而且也有利于开发人员将来可能参与的其他软件开发项目。 第2 9 页 北方交通大学硕士学位论文 4 4 基于四代技术的模型 基于四代技术的模型 图4 - 4 基于四代技术的模型 四代语言( 4 6 l ) 是r r o s s 于1 9 8 1 年提出的。它是在大型数据 库管理程序基础上发展起来的设计语言。4 g l 是面向结果的非过程语 言,它独立于具体的处理机,有丰富的软件工具的支持,能统一管理 和利用各种数据资源,因此能适应不同水平用户的需要,以4 g l 为核 心的软件开发技术称为四代技术( 4 g t ) 。 软件开发者在定义软件需求,给出软件规格说明之后,4 0 3 工具 能够将开发者编写的软件规格说明自动转化成程序代码。这大大减少 了分析、设计、编码与测试的时间。当前,支持4 g t 的软件开发工具 有:数据库查询语言、报表生成器、图表生成器、人机交互的屏幕设 计与代码生成系统等等。支持4 g t 的环境基本上是专用的,开发一个 通用的4 g t 环境还有不少困难。实践表明,大多数需求明确的小型应 第3 d 页 北方交通大学硕士学位论文 用系统,特别是信息领域、工程和实时嵌入式小型应用系统,采用4 g t 在软件开发的时间、成本、质量等方面都会取得比较好的效果。对于 大型的软件开发项目,由于在系统分析、设计、测试、文档生成等方 面要做大量的工作,采用4 g t 虽然可以节省部分代码生成的时问,但 它在整个大型软件系统开发中所占的比例是有限的。 4 5 支持软件复用的组合模型 对于前面所讨论的软件开发模型来说,它们都有各自的优点和缺 点。因此,我们在软件开发实践中,经常把几种模型组合起来,配套 使用,形成组合模型。对于支持软件复用的组合模型如图: 图4 - 5 支持软件复用的组合模型 第3 l 页 北方交通大学硕士学位论文 4 6 用综合评判方法评价复用模型: 支持软件复用的模型是否具有实用性,众说纷纭。在这里我们采 用基于模糊数学的综合评判方法。 在这种方法中,首先确定评价指标0 = ( u l ,u 2 ,u d _ ,评语 集v = v l ,v 2 ,v m ,然后用模糊矩阵 r = - 】 r 2 1 : r n i l 。 。 r 1 。 来表示用户对评价指标的每一评语的百分比。利用模糊合成运算a r 求出 够= 口,o ( j = l ,2 ,m ) 作为用户评价结果。例如: u = ( 质量,规模,运行效率) v = ( 很好,较好,一般,差 对质量评价时,有5 0 的人认为很好,4 0 的人认为较好,i o 的 人认为一般,没有人认为差,则对质量的评价为( 0 5 ,0 4 ,0 1 ,0 0 ) , 类似的得到对规模的评价为( 0 4 ,0 3 ,0 2 ,0 1 ) ,对运行效率的评价 为( 0 0 ,0 1 ,0 3 ,0 6 ) ,这样就得到一个评价的模糊矩阵 第3 2 页 北方交通大学硕士学位论文 r 0 5o 4ol0 r=04030201l 1 0 o10 3 0 6 j 在指定了评价中三个评价指标的权向量a = ( 0 j ,0 2 ,0 3 ) 之后就可以 求出向量b ,归一化后得( 0 3 3 ,0 2 9 ,0 1 8 ,0 2 0 ) ,这表明有3 0 的用户 认为软件很好,2 9 的用户认为较好,1 0 的用户认为差。 4 7 本章小结 本章详细讨论了用什么样的模型来支持软件复用的开发过程。提 出了一种支持软件复用开发的组合模型,并采用综合评判的方法对其 进行了评价。 第3 3 页 北方交通大学硕士学位论文 第五章软件复用与面向对象技术 5 1 面向对象设计的概念 5 1 1 对象、操作和消息 软件功能是通过作用于( 各种复杂程度不) 数据结构上的一系列 加工处理实现的,这些加工处理的过程是由静态的算法和动态的操作 命令确定的因此,任何一种软件设计方法必须提供下列机制: ( 1 ) 数据结构的表示; ( 2 ) 处理过程说明; ( 3 ) 处理过程调用; 在o o d 中,它们分别用对象、操作和消息实现,一个私有数据结构 和作用于其上的一组处理过程被封装为一个对象:一个处理过程即为 一个操作:操作通过消息引用,向某个对象发送一条消息,即请求该对 象执行某个操作。 这种用封装结构定义对象,通过发送消息引用操作的机制,是实 现信息隐藏的好办法。因为有关对象实现的所有细节在该对象之外都 不可知。此外,数据和操作封装在一起并配以定义良好的界面,体现 了模块化的思想。 第3 4 页 北方交通大学硕士学位论文 5 1 。2 类、实例和继承 现实世界中许多对象具有相似的性质,执行相似的操作,称之为 一类对象。在面向对象的软件系统中,具有相同数据结构和操作的一 组对象用类定义。相同类的所有对象性质相同,每个具体对象称为该 类的一个实例,某个类的所有实例都使用该类定义中确定的私有数据 结构和操作。 类、子类和继承是现代软件工程的重要概念,因为在类上定义子 类,由类和子类创建对象,完美地体现了软件复用的思想。 类、子类祁对象与其它独立于程序设计的语言概念不同,它们的 实现方法依赖于具体的程序设计语言。 5 1 3 对象描述 在o o d 中,对象可用协议或实现两种方式描述。协议描述给出对 象可接收的消息种类以及接收到消息后应执行的操作,即定义出对象 与外界的界面;实现描述给出对象实现的细节,包括对象的私有数据 及每个操作的过程控制信息。一般协议描述由一组消息和注释组成。 而对象的实现描述中包括下列信息: ( 1 ) 对象名及所属对象类: ( 2 ) 私有数据结构的每一数据项及其类型; ( 3 ) 每个操作的过程性描述或指向这样一个过程性描述的指 针。 对象协议描述对象能“做什么”,而对象实现描述指明当对象接 到请求后“怎么做”。 第3 5 页 北方交通大学硕士学位论文 5 2 基于对象的设计方法 5 2 1 设计步骤 由b o o c h 倡导的面向a d a 一类语言的o o d 方法,因不能直接支持 继承和消息传递等概念,被认为是基于对象的,它由下述步骤组成: ( 1 ) 定义问题; ( 2 ) 开发一个非形式的策略: ( 3 ) 策略形式化: l 、标识对象及其属性; 2 、标识对象上的操作; 3 、建立对象间的界面; 4 、实现每个操作。 4 反复使用2 至4 步; 第四步实际是o o a 的工作,o o d 尚须加入: 5 、精化o o a 所做工作,寻找子类、消息特征,确立其他细节; 6 、为每个对象属性确定数据结构; 7 、为每个操作确定过程细节。 软件设计的一条重要质量标准是模块化。在o o d 方法中,每个对 象即为一个独立的程序分量( 模块) ,分量除定义私

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论