资源预览内容
第1页 / 共76页
第2页 / 共76页
第3页 / 共76页
第4页 / 共76页
第5页 / 共76页
第6页 / 共76页
第7页 / 共76页
第8页 / 共76页
第9页 / 共76页
第10页 / 共76页
亲,该文档总共76页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
软件工程软件工程 Software Engineering国防科技大学计算机学院国防科技大学计算机学院 2004.07齐治昌齐治昌齐治昌齐治昌 教授,教授,教授,教授, 谭庆平谭庆平谭庆平谭庆平 教授,教授,教授,教授, 宁洪宁洪宁洪宁洪 教授,教授,教授,教授, 董威董威董威董威 博士博士博士博士2024/8/161国防科技大学计算机学院第十七章第十七章 软件重用技术软件重用技术o在软件开发过程中,尽可能重用已有的软件元素在软件开发过程中,尽可能重用已有的软件元素(包括源程序模块,设计文档,需求文档,测试方包括源程序模块,设计文档,需求文档,测试方案与用例等案与用例等),这样将有助于加快开发进度,提高,这样将有助于加快开发进度,提高软件生产率,同时也有利于提高软件质量。软件生产率,同时也有利于提高软件质量。o事实上,众所周知的标准函数库即为这种思想的朴事实上,众所周知的标准函数库即为这种思想的朴素体现。素体现。o软件重用希望在此基础上跨越一步:软部件库中所软件重用希望在此基础上跨越一步:软部件库中所有部件的功能或行为将更为丰富、灵活,但库的组有部件的功能或行为将更为丰富、灵活,但库的组织和检索方法也随之复杂化,因而需要建立相配套织和检索方法也随之复杂化,因而需要建立相配套的软部件生产和组装机制。的软部件生产和组装机制。2024/8/162国防科技大学计算机学院软件重用技术软件重用技术o为了实现软件重用的基本目标,软部件库必须提供为了实现软件重用的基本目标,软部件库必须提供许多有重用价值的软部件,并且这些软部件的功能许多有重用价值的软部件,并且这些软部件的功能或行为不能象函数库的标准函数那样刻板、单调,或行为不能象函数库的标准函数那样刻板、单调,而应表现出可适应不同软件开发项目的灵活性。而应表现出可适应不同软件开发项目的灵活性。o但是,当有许多灵活、可变的软部件可用时,寻找、但是,当有许多灵活、可变的软部件可用时,寻找、选择并理解适用的软部件就非常困难。选择并理解适用的软部件就非常困难。第十七章第十七章 软件重用技术软件重用技术2024/8/163国防科技大学计算机学院17.1 软件重用软件重用17.1.1软件重用的软件重用的概念概念o软件重用是指在两次或多次不同的软件开发过程中软件重用是指在两次或多次不同的软件开发过程中重复使用相同或相似软件元素的过程。重复使用相同或相似软件元素的过程。o软件元素包括程序代码、测试用例、设计文档、设软件元素包括程序代码、测试用例、设计文档、设计过程、需求分析文档甚至领域知识。计过程、需求分析文档甚至领域知识。o对于新的软件开发项目而言,它们或者是构成整个对于新的软件开发项目而言,它们或者是构成整个目标软件系统的部件,或者在软件开发过程中发挥目标软件系统的部件,或者在软件开发过程中发挥某种作用。通常将这些软件元素称为软部件。某种作用。通常将这些软件元素称为软部件。o为了能够在软件开发过程中重用现有的软部件,必为了能够在软件开发过程中重用现有的软部件,必须在此之前不断地进行软部件的积累,并将它们组须在此之前不断地进行软部件的积累,并将它们组织成软部件库。织成软部件库。第十七章第十七章 软件重用技术软件重用技术2024/8/164国防科技大学计算机学院17.1.2软件重用的过程与意义软件重用的过程与意义o按照重用活动是否跨越相似性较少的多个应用领域,软件重按照重用活动是否跨越相似性较少的多个应用领域,软件重用可区别为横向和纵向重用。用可区别为横向和纵向重用。o横向重用是指重用不同应用领域中的软件元素,例如数据结横向重用是指重用不同应用领域中的软件元素,例如数据结构、分类算法、人机界面构件等。构、分类算法、人机界面构件等。o纵向重用是指在一类具有较多公共性的应用领域之间进行软纵向重用是指在一类具有较多公共性的应用领域之间进行软部件重用。部件重用。o因为在两个截然不同的应用领域之间实施软件重用的潜力不因为在两个截然不同的应用领域之间实施软件重用的潜力不大,所以纵向重用才广受瞩目,并成为软件重用技术的真大,所以纵向重用才广受瞩目,并成为软件重用技术的真正希望所在。正希望所在。o不难理解,纵向重用活动的主要关键点即是域分析:根据应不难理解,纵向重用活动的主要关键点即是域分析:根据应用领域的特征及相似性预测软部件的可重用性。用领域的特征及相似性预测软部件的可重用性。17.1软件重用软件重用2024/8/165国防科技大学计算机学院软件重用的过程软件重用的过程o一旦根据域分析确认了软部件的重用价值,即可进一旦根据域分析确认了软部件的重用价值,即可进行软部件的开发,并对具有重用价值的软部件进行行软部件的开发,并对具有重用价值的软部件进行一般化以便它们能够适应新的类似的应用领域。一般化以便它们能够适应新的类似的应用领域。o然后,软部件及其文档即可进入软部件库,成为可然后,软部件及其文档即可进入软部件库,成为可供后续开发项目使用的可重用资源。供后续开发项目使用的可重用资源。o这些步骤构成软部件的构造活动。显然,它是一个这些步骤构成软部件的构造活动。显然,它是一个软部件不断积累、不断完善的渐进过程。软部件不断积累、不断完善的渐进过程。17.1软件重用软件重用2024/8/166国防科技大学计算机学院软件重用的过程软件重用的过程o随着软部件的不断丰富,软部件库的规模会不断扩随着软部件的不断丰富,软部件库的规模会不断扩大,因此,库的组织结构将直接影响软部件的检索大,因此,库的组织结构将直接影响软部件的检索效率,特别是当检索手段并不局限于标准函数库所效率,特别是当检索手段并不局限于标准函数库所采用的简单名字匹配方法时。采用的简单名字匹配方法时。o可供候选的软部件从库中被检索出来以后,用户还可供候选的软部件从库中被检索出来以后,用户还必须理解其功能或行为以判别它是否真正适应于当必须理解其功能或行为以判别它是否真正适应于当前项目。前项目。o必要时可考虑对某个与期望的功能必要时可考虑对某个与期望的功能/行为匹配程度行为匹配程度最佳的软部件进行稍许修改,甚至可以将修改后的最佳的软部件进行稍许修改,甚至可以将修改后的软部件加进软部件库以替代原有软部件。软部件加进软部件库以替代原有软部件。17.1软件重用软件重用2024/8/167国防科技大学计算机学院面向重用的软件开发面向重用的软件开发17.1软件重用软件重用2024/8/168国防科技大学计算机学院软件重用软件重用CASE工具工具o显然,软件重用过程可借助计算机的帮助。显然,软件重用过程可借助计算机的帮助。o支持软件重用的支持软件重用的CASE工具的主要任务是,用某种工具的主要任务是,用某种组织结构实现软部件库的存储,提供友好的人机界组织结构实现软部件库的存储,提供友好的人机界面帮助用户浏览、检索和修改软部件库,并且对用面帮助用户浏览、检索和修改软部件库,并且对用户感兴趣的软部件进行解释。户感兴趣的软部件进行解释。o事实上,现在几乎所有的软件重用活动都是在事实上,现在几乎所有的软件重用活动都是在CASE工具的帮助下进行的。工具的帮助下进行的。17.1软件重用软件重用2024/8/169国防科技大学计算机学院软件重用的意义软件重用的意义o使用重用技术可以减少软件开发活动中大量的重复使用重用技术可以减少软件开发活动中大量的重复性工作,这样就能够提高软件生产率,降低开发成性工作,这样就能够提高软件生产率,降低开发成本,缩短开发周期。本,缩短开发周期。o同时,由于软部件大都经过严格的质量认证,并在同时,由于软部件大都经过严格的质量认证,并在实际运行环境中得到检验,因此,重用软部件有助实际运行环境中得到检验,因此,重用软部件有助于改善软件质量。于改善软件质量。o此外,大量使用软部件,软件的灵活性和标准化程此外,大量使用软部件,软件的灵活性和标准化程度也可望得到提高。度也可望得到提高。17.1软件重用软件重用2024/8/1610国防科技大学计算机学院17.1.3重用项目的管理重用项目的管理o在软部件的积累过程中,软件开发人员必须在不能立即获得在软部件的积累过程中,软件开发人员必须在不能立即获得经济效益的情况下进行软部件的筛选、开发,不断地进行经济效益的情况下进行软部件的筛选、开发,不断地进行软部件库的维护。软部件库的维护。o由于希望软部件具有跨越多个软件项目甚至跨越多个应用领由于希望软部件具有跨越多个软件项目甚至跨越多个应用领域的适应能力,同时要求它们达到较其他软件元素更为苛域的适应能力,同时要求它们达到较其他软件元素更为苛刻的质量标准,因此,开发软部件需要花费一定的经济代刻的质量标准,因此,开发软部件需要花费一定的经济代价与人力耗费。价与人力耗费。o这可能还会引发软件开发人员在心理上自觉或不自觉的抵触这可能还会引发软件开发人员在心理上自觉或不自觉的抵触情绪,进而对软件重用的目标造成危害。情绪,进而对软件重用的目标造成危害。o这些问题是软件重用对传统的软件项目管理模式提出的挑战,这些问题是软件重用对传统的软件项目管理模式提出的挑战,其解决方案涉及项目管理机构、管理手段,经济和心理因其解决方案涉及项目管理机构、管理手段,经济和心理因素等方面。素等方面。17.1软件重用软件重用2024/8/1611国防科技大学计算机学院17.2 软部件库的构造软部件库的构造o本节讨论软部件库的构造技术,内容包括:本节讨论软部件库的构造技术,内容包括:n基于域分析的软部件选取,基于域分析的软部件选取,n软部件的开发与质量控制,软部件的开发与质量控制,n软部件库的组织方法。软部件库的组织方法。第十七章第十七章 软件重用技术软件重用技术2024/8/1612国防科技大学计算机学院17.2.1域分析域分析o从软件工程的观点看,域就是向目标软件系统提出从软件工程的观点看,域就是向目标软件系统提出应用需求的问题及其背景知识。应用需求的问题及其背景知识。o域分析的主要任务是针对单个或一族相似的域,以域分析的主要任务是针对单个或一族相似的域,以软件重用为目标,探寻并挖掘域或域族中能够为多软件重用为目标,探寻并挖掘域或域族中能够为多o个目标软件系统共用的软部件,并对它们进行结构个目标软件系统共用的软部件,并对它们进行结构化组织以备重用。化组织以备重用。o域分析与需求分析活动有相似之处,但是,域分析域分析与需求分析活动有相似之处,但是,域分析必须具有比需求分析更为广阔的视角:不仅要服务必须具有比需求分析更为广阔的视角:不仅要服务于当前软件项目,而且要从域的历史项目中发现软于当前软件项目,而且要从域的历史项目中发现软件项目之间的共同性和差异点,并放眼于同类或相件项目之间的共同性和差异点,并放眼于同类或相似应用领域的未来软件项目。似应用领域的未来软件项目。17.2软部件库的构造软部件库的构造2024/8/1613国防科技大学计算机学院域分析域分析17.2软部件库的构造软部件库的构造2024/8/1614国防科技大学计算机学院域分析步骤域分析步骤o在省略有关建模的技术细节之后,域分析过程可大在省略有关建模的技术细节之后,域分析过程可大致归纳为以下步骤:致归纳为以下步骤:(1)发现并描述可重用的实体;发现并描述可重用的实体;(2)对这些实体及它们之间的关系进行抽象化、一般化和参对这些实体及它们之间的关系进行抽象化、一般化和参数化;数化;(3)对可重用的实体进行分类、归并,以备日后重用。对可重用的实体进行分类、归并,以备日后重用。o域分析还可产生一种重用超结构以管理在后续软件域分析还可产生一种重用超结构以管理在后续软件项目的各个开发阶段的软件重用活动:提供可重用项目的各个开发阶段的软件重用活动:提供可重用软部件,指导新的软部件的生产,根据新的软件需软部件,指导新的软部件的生产,根据新的软件需求提示重用的可能性,以及收集有关重用活动的各求提示重用的可能性,以及收集有关重用活动的各类统计数据。类统计数据。17.2软部件库的构造软部件库的构造2024/8/1615国防科技大学计算机学院重用超结构重用超结构17.2软部件库的构造软部件库的构造2024/8/1616国防科技大学计算机学院17.2.2软部件的开发软部件的开发o域分析的结果为软部件的选取提供了指导原则。一旦确定某域分析的结果为软部件的选取提供了指导原则。一旦确定某些软件元素应该作为重用部件加入软部件库之后,开发人些软件元素应该作为重用部件加入软部件库之后,开发人员就必须实际构造它们。员就必须实际构造它们。o由于软部件的生命周期将跨越开发项目甚至应用领域,因此,由于软部件的生命周期将跨越开发项目甚至应用领域,因此,软部件的开发具有相当的特殊性:如何使软部件更为通用,软部件的开发具有相当的特殊性:如何使软部件更为通用,更易于组装为新的软件系统,以及在新的运行环境下表现更易于组装为新的软件系统,以及在新的运行环境下表现出更好的强壮性出更好的强壮性?o本书的软部件不仅包括代码级部件,也涵盖域知识、需求分本书的软部件不仅包括代码级部件,也涵盖域知识、需求分析文档、设计文档、测试方案、测试用例等软件元素,因析文档、设计文档、测试方案、测试用例等软件元素,因为这些级别上的软部件可望更好地发挥重用技术的潜力,为这些级别上的软部件可望更好地发挥重用技术的潜力,同时也是代码级重用的必要补充。同时也是代码级重用的必要补充。17.2软部件库的构造软部件库的构造2024/8/1617国防科技大学计算机学院1.需求及设计级软部件需求及设计级软部件o需求级软部件通常包括问题需求级软部件通常包括问题(及子问题及子问题)描述、有关描述、有关的域知识以及相应的需求规格说明。问题描述及域的域知识以及相应的需求规格说明。问题描述及域知识说明均用域语言表示,必要时可辅以结构化的知识说明均用域语言表示,必要时可辅以结构化的自然语言。自然语言。o类似地,设计级软部件包括设计规格说明类似地,设计级软部件包括设计规格说明(片段片段)、设计决策描述以及相应的设计文档。设计决策描述以及相应的设计文档。o于是,设计级软部件与需求级软部件相结合,使需于是,设计级软部件与需求级软部件相结合,使需求级软部件和设计级软部件的重用同时发生,简化求级软部件和设计级软部件的重用同时发生,简化了对这些软部件的理解和组装过程。了对这些软部件的理解和组装过程。17.2软部件库的构造软部件库的构造2024/8/1618国防科技大学计算机学院需求及设计级软部件需求及设计级软部件o需求级与设计级软部件的开发必须遵循下列两项原需求级与设计级软部件的开发必须遵循下列两项原则:则:(1)将软部件应用的上下文与软部件严格分离;将软部件应用的上下文与软部件严格分离;(2)利用抽象化、参数化等手段提取公共性,以增强软部件利用抽象化、参数化等手段提取公共性,以增强软部件对未来不同应用项目的适应能力。对未来不同应用项目的适应能力。o需求级、设计级与代码级软部件相结合,有助于代需求级、设计级与代码级软部件相结合,有助于代码级软部件的提取和理解。码级软部件的提取和理解。o借助较高抽象级别的软部件可望提高重用效能,因借助较高抽象级别的软部件可望提高重用效能,因为,这样不仅可以重用代码,而且可以重用需求模为,这样不仅可以重用代码,而且可以重用需求模型和设计方案。型和设计方案。17.2软部件库的构造软部件库的构造2024/8/1619国防科技大学计算机学院2.代码级软部件代码级软部件o代码级重用是迄今为止研究最深入、应用最广泛的代码级重用是迄今为止研究最深入、应用最广泛的重用技术。重用技术。o代码级软部件除包含通常的代码段外,还必须辅以代码级软部件除包含通常的代码段外,还必须辅以相应的解释和上下文说明。这些辅助说明可以用结相应的解释和上下文说明。这些辅助说明可以用结构化自然语言或其他表示机制描述,但最好以相应构化自然语言或其他表示机制描述,但最好以相应的需求或设计级软部件的形式出现。的需求或设计级软部件的形式出现。o传统上,代码级软部件的主体是子程序传统上,代码级软部件的主体是子程序(函数或过函数或过程程)。现在,由于基于对象和面向对象的程序设计。现在,由于基于对象和面向对象的程序设计语言及相应开发环境的发展,软部件还可以用语言及相应开发环境的发展,软部件还可以用Ada程序包及程序包及C+类实现。类实现。17.2软部件库的构造软部件库的构造2024/8/1620国防科技大学计算机学院代码级软部件代码级软部件o可以用下列三种抽象方法开发软部件:可以用下列三种抽象方法开发软部件:(1)功能抽象:软部件的功能由接口说明中的输入功能抽象:软部件的功能由接口说明中的输入输出关输出关系确定,实现细节对软部件使用者透明。系确定,实现细节对软部件使用者透明。(2)数据抽象:在功能抽象的基础上进一步隐藏除界面参数数据抽象:在功能抽象的基础上进一步隐藏除界面参数之外的所有数据。之外的所有数据。(3)过程抽象:在数据抽象的基础上进一步实现在相同软部过程抽象:在数据抽象的基础上进一步实现在相同软部件上同时执行的多重线程的无关性。件上同时执行的多重线程的无关性。17.2软部件库的构造软部件库的构造2024/8/1621国防科技大学计算机学院主要原则主要原则o可重用性、正确性、可理解性和易组装性是衡量软部件质量可重用性、正确性、可理解性和易组装性是衡量软部件质量的重要标准。这些标准都与软部件开发过程中使用的程序的重要标准。这些标准都与软部件开发过程中使用的程序设计风格密切相关。设计风格密切相关。o为此,下面简要列出程序设计的主要原则,以供代码级软部为此,下面简要列出程序设计的主要原则,以供代码级软部件开发者参考。件开发者参考。o1.关于可重用性和易组装性关于可重用性和易组装性(1)抽象化、参数化、模板化;抽象化、参数化、模板化;(2)显式建立软部件的外部接口,保证接口在语法和语义上的清显式建立软部件的外部接口,保证接口在语法和语义上的清晰性;晰性;(3)除参数外,接口中的成份不应与运行环境相关;除参数外,接口中的成份不应与运行环境相关;(4)软部件的使用信息应与软部件的实现细节相分离;软部件的使用信息应与软部件的实现细节相分离;(5)软部件接口的使用方式、功能及行为模式应遵循域分析所确软部件接口的使用方式、功能及行为模式应遵循域分析所确立的公共标准。立的公共标准。17.2软部件库的构造软部件库的构造2024/8/1622国防科技大学计算机学院主要原则(续)主要原则(续)o2.关于正确性关于正确性(1)使用显式的、标准的、完全的错误处理机制;使用显式的、标准的、完全的错误处理机制;(2)使用强类型程序设计;使用强类型程序设计;(3)在软部件上附加重要的测试数据和测试报告。在软部件上附加重要的测试数据和测试报告。o3.关于易理解性关于易理解性(1)提供完全的、精确的文档及程序注解;提供完全的、精确的文档及程序注解;(2)软部件内部的结构、数据及控制流程必须标准化;软部件内部的结构、数据及控制流程必须标准化;(3)使用统一的命名规则和语法约定。使用统一的命名规则和语法约定。17.2软部件库的构造软部件库的构造2024/8/1623国防科技大学计算机学院3.软部件的质量控制软部件的质量控制o由于软部件将在多种硬件和软件环境下运行,因此,由于软部件将在多种硬件和软件环境下运行,因此,除采用软件工程的一般质量控制措施外,还要针对除采用软件工程的一般质量控制措施外,还要针对可重用软部件的特征进行特别的质量控制。可重用软部件的特征进行特别的质量控制。(1)软部件的开发者应利用现有的硬件、软件在尽可能多的软部件的开发者应利用现有的硬件、软件在尽可能多的环境中进行各种标准测试。环境中进行各种标准测试。(2)在软部件的设计过程中必须预先考虑软部件对于各类可在软部件的设计过程中必须预先考虑软部件对于各类可能的硬件环境的可移植性以及对于不同软件环境的适应能的硬件环境的可移植性以及对于不同软件环境的适应能力,并为此制订相应的编码原则。能力,并为此制订相应的编码原则。(3)应该尽可能地将软部件与环境有关的因素抽象成为软部应该尽可能地将软部件与环境有关的因素抽象成为软部件的参数;或者,可将这些因素作为软部件使用的约束件的参数;或者,可将这些因素作为软部件使用的约束条件在接口说明中详细阐述,有时甚至可以将这些约束条件在接口说明中详细阐述,有时甚至可以将这些约束条件表示成精确的逻辑断言插进软部件的源程序之中。条件表示成精确的逻辑断言插进软部件的源程序之中。17.2软部件库的构造软部件库的构造2024/8/1624国防科技大学计算机学院软部件的质量控制(续)软部件的质量控制(续)(4)对可能引发移植性错误和适应性错误的错误源进行分类,对可能引发移植性错误和适应性错误的错误源进行分类,针对每类错误源制订相应的防范和测试措施。针对每类错误源制订相应的防范和测试措施。(5)制订并执行统一的、良好的程序设计风格。制订并执行统一的、良好的程序设计风格。(6)成立软部件质量控制小组。成立软部件质量控制小组。17.2软部件库的构造软部件库的构造2024/8/1625国防科技大学计算机学院17.2.3软部件库的组织软部件库的组织o必须对收集和开发的软部件进行分类并置于软部件必须对收集和开发的软部件进行分类并置于软部件库的适当位置。库的适当位置。o软部件的分类方法及相应的库结构对软部件的检索软部件的分类方法及相应的库结构对软部件的检索和理解有极为深刻的影响。和理解有极为深刻的影响。o因此,软部件库的组织应方便软部件的存储和检索。因此,软部件库的组织应方便软部件的存储和检索。17.2软部件库的构造软部件库的构造2024/8/1626国防科技大学计算机学院软部件库的组织软部件库的组织o可重用技术对软部件库组织方法的要求是:可重用技术对软部件库组织方法的要求是:(1)支持软部件库的各种维护动作:增加、删除及更新软部支持软部件库的各种维护动作:增加、删除及更新软部件尽量不要影响软部件库的结构;件尽量不要影响软部件库的结构;(2)不仅要支持精确匹配,还要支持相似软部件的查找;不仅要支持精确匹配,还要支持相似软部件的查找;(3)不仅能进行简单的语法匹配,而且能够查找在功能或行不仅能进行简单的语法匹配,而且能够查找在功能或行为方面等价或相似的软部件;为方面等价或相似的软部件;(4)对应用领域对应用领域(族族)具有较强的描述能力和较好的描述精度;具有较强的描述能力和较好的描述精度;(5)库管理员和用户容易使用;库管理员和用户容易使用;(6)具备可自动化潜力。具备可自动化潜力。17.2软部件库的构造软部件库的构造2024/8/1627国防科技大学计算机学院1.关键字分类法关键字分类法o这是一种最简单的软部件库组织方法,其基本思想这是一种最简单的软部件库组织方法,其基本思想是:根据域分析的结果将应用领域是:根据域分析的结果将应用领域(族族)的概念按照的概念按照从抽象到具体的顺序逐次分解为树形或有向无回路从抽象到具体的顺序逐次分解为树形或有向无回路图结构。图结构。o每个概念使用一个描述性的关键字表示。每个概念使用一个描述性的关键字表示。o不可分解的原子级关键字包含隶属于它的某些软部不可分解的原子级关键字包含隶属于它的某些软部件。件。o当加入软部件时,库管理员必须对软部件的功能或当加入软部件时,库管理员必须对软部件的功能或行为进行分析,在浏览上述关键字分类结构的同时行为进行分析,在浏览上述关键字分类结构的同时将软部件置于最合适的原子级关键字之下。将软部件置于最合适的原子级关键字之下。17.2软部件库的构造软部件库的构造2024/8/1628国防科技大学计算机学院关键字分类结构示例关键字分类结构示例17.2软部件库的构造软部件库的构造2024/8/1629国防科技大学计算机学院2.多面分类法多面分类法o这种软部件库组织方法是这种软部件库组织方法是Prieto-Diaz和和Freeman在在1987年提出的。其主要思想植根于年提出的。其主要思想植根于图书馆学。图书馆学。o多面分类法由三部分构成:多面分类机制,同义词多面分类法由三部分构成:多面分类机制,同义词库和概念距离图。库和概念距离图。(1)在多面分类机制中定义若干用于刻画软部件特征的在多面分类机制中定义若干用于刻画软部件特征的“面面”(facet),每个每个“面面”包含若干包含若干“概念概念”,这些,这些“概概念念”表述软部件在表述软部件在“面面”上的特征。上的特征。(2)意义相同或相近的若干词汇构成同义词库。意义相同或相近的若干词汇构成同义词库。(3)概念距离图用于度量每个概念距离图用于度量每个“面面”中中“概念概念”的相似性程的相似性程度。度。17.2软部件库的构造软部件库的构造2024/8/1630国防科技大学计算机学院多面分类法的组成多面分类法的组成17.2软部件库的构造软部件库的构造2024/8/1631国防科技大学计算机学院3.超文本组织方法超文本组织方法o超文本方法与基于数据库系统的软部件库组织方法超文本方法与基于数据库系统的软部件库组织方法不同,它基于全文检索技术,其主要思想是:不同,它基于全文检索技术,其主要思想是:n所有软部件必须辅以详尽的功能或行为说明文档;所有软部件必须辅以详尽的功能或行为说明文档;n说明中出现的重要概念或软部件以网状链接方式说明中出现的重要概念或软部件以网状链接方式相互连接;相互连接;n检索者在阅读文档的过程中可按照人类的联想思检索者在阅读文档的过程中可按照人类的联想思维方式任意跳转到包含相关概念或软部件的文档;维方式任意跳转到包含相关概念或软部件的文档;n全文检索系统将用户给出的关键字与说明文档中全文检索系统将用户给出的关键字与说明文档中的文字进行匹配实现软部件的浏览式检索。的文字进行匹配实现软部件的浏览式检索。17.2软部件库的构造软部件库的构造2024/8/1632国防科技大学计算机学院超文本组织方法超文本组织方法o超文本超文本(Hypertext)是一种非线性的网状信息组是一种非线性的网状信息组织方法,它以结点为基本单位,链则作为结点之间织方法,它以结点为基本单位,链则作为结点之间的联想式关联。的联想式关联。17.2软部件库的构造软部件库的构造2024/8/1633国防科技大学计算机学院17.3 软部件的重用软部件的重用o为了让软部件库在新的软件项目中发挥作用,库的为了让软部件库在新的软件项目中发挥作用,库的使用者必须完成以下工作:使用者必须完成以下工作:o检索与提取软部件,检索与提取软部件,o理解与评价软部件,理解与评价软部件,o修改软部件,修改软部件,o最后将软部件组装到新的软件产品中。最后将软部件组装到新的软件产品中。o本节依次介绍完成这些任务的主要方法。本节依次介绍完成这些任务的主要方法。第十七章第十七章 软件重用技术软件重用技术2024/8/1634国防科技大学计算机学院17.3.1检索与提取软部件检索与提取软部件o软部件库的检索方法与组织方式密切相关,因此,软部件库的检索方法与组织方式密切相关,因此,本小节针对前面介绍的关键字分类法、多面分类法本小节针对前面介绍的关键字分类法、多面分类法及超文本组织方法分别讨论相应的检索方法。及超文本组织方法分别讨论相应的检索方法。17.3软部件的重用软部件的重用2024/8/1635国防科技大学计算机学院1.基于关键字的检索基于关键字的检索o这种简单检索方法的基本思想是:这种简单检索方法的基本思想是:o系统系统(CASE工具工具)在图形用户界面上将软部件库的关键字在图形用户界面上将软部件库的关键字树形结构直观地展示给用户;树形结构直观地展示给用户;o用户通过对树形结构的逐级浏览寻找需要的关键字并提用户通过对树形结构的逐级浏览寻找需要的关键字并提取相应的软部件。取相应的软部件。o当然,用户也可直接给出关键字当然,用户也可直接给出关键字(其中可含通配符其中可含通配符),由系统自动给出合适的候选软部件清单。,由系统自动给出合适的候选软部件清单。o这种方法的优点是简单、易于实现,但在某些场合这种方法的优点是简单、易于实现,但在某些场合没有应用价值,因为用户往往无法用软部件库中已没有应用价值,因为用户往往无法用软部件库中已有的关键字描述期望的软部件功能或行为,对库结有的关键字描述期望的软部件功能或行为,对库结构的浏览也容易使用户迷失方向。构的浏览也容易使用户迷失方向。17.3软部件的重用软部件的重用2024/8/1636国防科技大学计算机学院2.多面检索法多面检索法o该方法基于多面分类法,由三步构成:该方法基于多面分类法,由三步构成:(1)构造查询。构造查询。(2)检索软部件。检索软部件。(3)对软部件进行排序。对软部件进行排序。o这种方法的优点是它易于实现相似软部件的查找,这种方法的优点是它易于实现相似软部件的查找,但用户在构造查询时比较麻烦。但用户在构造查询时比较麻烦。17.3软部件的重用软部件的重用2024/8/1637国防科技大学计算机学院3.超文本检索法超文本检索法o这种方法的基本步骤是:用户首先给出一个或数个这种方法的基本步骤是:用户首先给出一个或数个关键字,系统在软部件的说明文档中进行精确或模关键字,系统在软部件的说明文档中进行精确或模糊的语法匹配,匹配成功后向用户列出相应的软部糊的语法匹配,匹配成功后向用户列出相应的软部件说明。件说明。o为了避免用户在跳转过程中迷失方向,系统可以通为了避免用户在跳转过程中迷失方向,系统可以通过图形用户界面提供浏览历史信息图,允许将特定过图形用户界面提供浏览历史信息图,允许将特定画面定义为命名画面定义为命名“书签书签”并随时跳转至并随时跳转至“书签书签”,并,并帮助用户逆跳转路经而逐步返回。帮助用户逆跳转路经而逐步返回。o这种方法的优点是用户界面友好,但在某些情况下这种方法的优点是用户界面友好,但在某些情况下用户难以在超文本浏览过程中正确选取软部件。用户难以在超文本浏览过程中正确选取软部件。17.3软部件的重用软部件的重用2024/8/1638国防科技大学计算机学院4.其他检索方法其他检索方法o上述检索方法基于语法匹配,要求使用者对软部件上述检索方法基于语法匹配,要求使用者对软部件库中出现的众多词汇有较全面的把握、较精确的理库中出现的众多词汇有较全面的把握、较精确的理解。解。o理论上,理想的检索方法是语义匹配:软部件库的理论上,理想的检索方法是语义匹配:软部件库的用户以形式化手段描述所需要的软部件的功能或行用户以形式化手段描述所需要的软部件的功能或行为语义,系统通过定理证明及基于知识的推理过程为语义,系统通过定理证明及基于知识的推理过程寻找语义上等价或相近的软部件。寻找语义上等价或相近的软部件。o遗憾的是,这种基于语义的检索方法涉及许多人工遗憾的是,这种基于语义的检索方法涉及许多人工智能难题,目前尚难于支持大型软部件库的工程实智能难题,目前尚难于支持大型软部件库的工程实现。现。17.3软部件的重用软部件的重用2024/8/1639国防科技大学计算机学院17.3.2 理解与评价软部件理解与评价软部件o考虑到设计信息对于理解软部件的必要性以及软部考虑到设计信息对于理解软部件的必要性以及软部件库的用户逆向发掘设计信息的困难性,必须要求件库的用户逆向发掘设计信息的困难性,必须要求软部件的开发过程遵循公共的软件工程规范,并且软部件的开发过程遵循公共的软件工程规范,并且在软部件库的文档中全面、准确地说明以下内容:在软部件库的文档中全面、准确地说明以下内容:软部件的功能与行为;软部件的功能与行为;相关的领域知识;相关的领域知识;可适应性约束条件与例外情形;可适应性约束条件与例外情形;可以预见的修改部分及修改方法。可以预见的修改部分及修改方法。o借助于借助于CASE工具对侯选软部件进行分析。工具对侯选软部件进行分析。o逆向工程是理解软部件的另一种重要手段。逆向工程是理解软部件的另一种重要手段。17.3软部件的重用软部件的重用2024/8/1640国防科技大学计算机学院理解与评价软部件理解与评价软部件o对软部件可重用性的评价是通过收集并分析软部件对软部件可重用性的评价是通过收集并分析软部件的用户在实际重用该软部件的历史过程中的各种反的用户在实际重用该软部件的历史过程中的各种反馈信息来完成的。馈信息来完成的。o这些信息包括:重用成功的次数,对软部件的修改这些信息包括:重用成功的次数,对软部件的修改量,软部件的强壮性度量量,软部件的强壮性度量(例如出错数量例如出错数量),性能度,性能度量量(例如执行效率与资源消耗量例如执行效率与资源消耗量),等等。,等等。o可以考虑建造相应的可以考虑建造相应的CASE工具来自动收集这些信工具来自动收集这些信息,按照某种域模型给出可重用性评价。息,按照某种域模型给出可重用性评价。17.3软部件的重用软部件的重用2024/8/1641国防科技大学计算机学院17.3.3修改软部件修改软部件o在大多数情况下,必须对软部件进行或多或少的修在大多数情况下,必须对软部件进行或多或少的修改以适应新的需求。改以适应新的需求。o为了减少软部件修改的工作量,要求软部件的开发为了减少软部件修改的工作量,要求软部件的开发者尽量使软部件的功能、行为和接口设计更为抽象者尽量使软部件的功能、行为和接口设计更为抽象化、通用化、参数化。这样,软部件的用户即可通化、通用化、参数化。这样,软部件的用户即可通过对实参的选取来调整软部件的功能或行为。过对实参的选取来调整软部件的功能或行为。o如果这种调整仍不足以使软部件适用于新的软件项如果这种调整仍不足以使软部件适用于新的软件项目,用户就必须借助设计信息和文档来理解、修改目,用户就必须借助设计信息和文档来理解、修改软部件。软部件。17.3软部件的重用软部件的重用2024/8/1642国防科技大学计算机学院17.3.4软部件的合成软部件的合成o软部件合成是指,将库中的软部件软部件合成是指,将库中的软部件(经适当修改后经适当修改后)相互连接,或者将它们与当前开发项目中的软件元相互连接,或者将它们与当前开发项目中的软件元素相连接,最终构成新的目标软件。素相连接,最终构成新的目标软件。o软部件合成技术大致可分为基于功能、基于数据的软部件合成技术大致可分为基于功能、基于数据的合成技术以及面向对象的合成技术。它们都有各自合成技术以及面向对象的合成技术。它们都有各自的适用范围。的适用范围。17.3软部件的重用软部件的重用2024/8/1643国防科技大学计算机学院1.基于功能的合成技术基于功能的合成技术o基于功能的合成技术采用子程序调用和参数传递的基于功能的合成技术采用子程序调用和参数传递的方式将软部件结合起来。方式将软部件结合起来。o它要求库中的软部件以子程序它要求库中的软部件以子程序(过程或函数过程或函数)形式出形式出现,并且接口说明必须清晰。现,并且接口说明必须清晰。o当使用这种合成技术进行软件开发时,开发人员首当使用这种合成技术进行软件开发时,开发人员首先应对目标软件系统进行功能分解,将系统分解为先应对目标软件系统进行功能分解,将系统分解为强内聚、松藕合的功能模块。强内聚、松藕合的功能模块。o然后根据各模块的功能需求提取软部件,对它进行然后根据各模块的功能需求提取软部件,对它进行适应性修改后再挂接在上述功能分解框架中。适应性修改后再挂接在上述功能分解框架中。17.3软部件的重用软部件的重用2024/8/1644国防科技大学计算机学院2.基于数据的合成技术基于数据的合成技术o基于数据的合成技术首先根据当前软件问题的核心基于数据的合成技术首先根据当前软件问题的核心数据结构设计出一个框架,然后根据框架中各结点数据结构设计出一个框架,然后根据框架中各结点的需求提取软部件并进行适应性修改,再将软部件的需求提取软部件并进行适应性修改,再将软部件逐个分配至框架中的适当位置。逐个分配至框架中的适当位置。o此后,软部件的合成方式仍然是传统的子程序调用此后,软部件的合成方式仍然是传统的子程序调用与参数传递。与参数传递。o这种合成技术也要求库中软部件以子程序形式出现,这种合成技术也要求库中软部件以子程序形式出现,但它所依赖的软件设计方法不再是功能分解,而是但它所依赖的软件设计方法不再是功能分解,而是面向数据的设计方法,例如面向数据的设计方法,例如Jackson系统开发方系统开发方法。法。17.3软部件的重用软部件的重用2024/8/1645国防科技大学计算机学院17.4 面向对象的软件重用技术面向对象的软件重用技术o由于封装和继承特征,面向对象方法比其他软件开由于封装和继承特征,面向对象方法比其他软件开发方法更适合支持软件重用。发方法更适合支持软件重用。o封装意味着可以将软部件的类看作黑箱。要使用它封装意味着可以将软部件的类看作黑箱。要使用它们,只需了解其外部接口,即它能够响应哪些消息,们,只需了解其外部接口,即它能够响应哪些消息,相应的对象行为是什么。相应的对象行为是什么。o继承是指在定义新的子类时可利用库中已有父类的继承是指在定义新的子类时可利用库中已有父类的属性和方法。当然,子类也可以修改父类的属性及属性和方法。当然,子类也可以修改父类的属性及方法,或者引进新的属性与方法。理论上,使用继方法,或者引进新的属性与方法。理论上,使用继承也不需要软部件用户了解软部件的实现细节。承也不需要软部件用户了解软部件的实现细节。第十七章第十七章 软件重用技术软件重用技术2024/8/1646国防科技大学计算机学院17.4.1类库的构造类库的构造o在面向对象的软部件库中,所有软部件均以类的形在面向对象的软部件库中,所有软部件均以类的形式呈现。所以,通常将面向对象的软部件库称为可式呈现。所以,通常将面向对象的软部件库称为可重用类库重用类库(简称类库简称类库)。o可重用基类的设置取决于域分析阶段对当前应用问可重用基类的设置取决于域分析阶段对当前应用问题题(族族)中具有一般适用性的对象及类的标识。中具有一般适用性的对象及类的标识。o类库的组织方式采用继承层次结构,这种结构与现类库的组织方式采用继承层次结构,这种结构与现实问题空间的类继承关系存在某种自然、直接的对实问题空间的类继承关系存在某种自然、直接的对应。应。o同时,类库的文档以超文本方式组织,每个类的说同时,类库的文档以超文本方式组织,每个类的说明都可以包括指向其他文档说明的关键字结点明都可以包括指向其他文档说明的关键字结点17.4面向对象的软件重用技术面向对象的软件重用技术2024/8/1647国防科技大学计算机学院类库结构示例类库结构示例17.4面向对象的软件重用技术面向对象的软件重用技术2024/8/1648国防科技大学计算机学院17.4.2类库的检索类库的检索o一般而言,类库的组织方式直接决定检索方式。一般而言,类库的组织方式直接决定检索方式。o因此,常用的类库检索方法主要是对类库中类的继因此,常用的类库检索方法主要是对类库中类的继承层次结构的树形浏览,以及基于类库文档的超文承层次结构的树形浏览,以及基于类库文档的超文本检索。本检索。o借助于树形浏览工具,类库的用户可以从树的根部借助于树形浏览工具,类库的用户可以从树的根部出发,根据对可重用基类的需求逐级决定它所属的出发,根据对可重用基类的需求逐级决定它所属的语法和语义范畴,然后确定最合适的父类。语法和语义范畴,然后确定最合适的父类。o借助于类库的超文本文档,用户一方面可以在类库借助于类库的超文本文档,用户一方面可以在类库的继承层次结构中查阅各基类的属性、方法及其他的继承层次结构中查阅各基类的属性、方法及其他特征,另一方面可按照基类之间的语义关联实现自特征,另一方面可按照基类之间的语义关联实现自由跳转。由跳转。17.4面向对象的软件重用技术面向对象的软件重用技术2024/8/1649国防科技大学计算机学院17.4.3面向对象的合成面向对象的合成o如果从类库中检索出来的基类能够完全满足新软件如果从类库中检索出来的基类能够完全满足新软件项目的需求,则可以直接应用。否则,必须以类库项目的需求,则可以直接应用。否则,必须以类库中的基类为父类采用构造法或子类法生成子类。中的基类为父类采用构造法或子类法生成子类。o注意,面向对象的重用通常不允许用户直接修改库注意,面向对象的重用通常不允许用户直接修改库中基类,对类库进行扩充或修改的办法只是将新的中基类,对类库进行扩充或修改的办法只是将新的子类加入到类库的继承层次结构中。子类加入到类库的继承层次结构中。17.4面向对象的软件重用技术面向对象的软件重用技术2024/8/1650国防科技大学计算机学院1.构造法构造法o为了在子类中使用库中基类的属性和方法,可以考为了在子类中使用库中基类的属性和方法,可以考虑在子类中引进基类的对象作为子类的实例变元虑在子类中引进基类的对象作为子类的实例变元(或称成员变量或称成员变量),然后在子类中通过实例变元重用,然后在子类中通过实例变元重用基类的属性与方法。基类的属性与方法。o构造法只用到面向对象的封装特征。构造法只用到面向对象的封装特征。o例例17.117.4面向对象的软件重用技术面向对象的软件重用技术2024/8/1651国防科技大学计算机学院2.子类法子类法o与构造法完全不同,子类法将新子类直接说明为库与构造法完全不同,子类法将新子类直接说明为库中基类的子类,通过继承和修改基类的属性与行为中基类的子类,通过继承和修改基类的属性与行为完成新子类的定义。完成新子类的定义。o显然,子类法利用了面向对象的封装和继承特征。显然,子类法利用了面向对象的封装和继承特征。o例例17.217.4面向对象的软件重用技术面向对象的软件重用技术2024/8/1652国防科技大学计算机学院17.5 软件重用项目的管理软件重用项目的管理o技术因素并非软件重用的唯一成功要素。如何鼓励技术因素并非软件重用的唯一成功要素。如何鼓励开发人员积极生产软部件,如何管理软部件库,如开发人员积极生产软部件,如何管理软部件库,如何提高软部件的重用率,等等,这些管理问题对于何提高软部件的重用率,等等,这些管理问题对于成功地实现软件重用同样十分重要。成功地实现软件重用同样十分重要。o如果在软件开发项目的规划和整个开发过程中系统如果在软件开发项目的规划和整个开发过程中系统地考虑重用地考虑重用(包括生产可重用的软部件以及重用已包括生产可重用的软部件以及重用已有软部件有软部件)并建立了一整套重用管理机制,则称此并建立了一整套重用管理机制,则称此类项目为软件重用项目。类项目为软件重用项目。第十七章第十七章 软件重用技术软件重用技术2024/8/1653国防科技大学计算机学院软件重用项目的管理软件重用项目的管理o重用管理问题涉及到项目机构、管理手段、经济和重用管理问题涉及到项目机构、管理手段、经济和心理因素等诸多方面:心理因素等诸多方面:(1)如何组织项目机构以便对重用活动进行有效的支持、控如何组织项目机构以便对重用活动进行有效的支持、控制和管理。制和管理。(2)如何控制软部件的质量如何控制软部件的质量(包括文档质量包括文档质量)。(3)软件重用对软部件的可适应性、正确性及文档完整性、软件重用对软部件的可适应性、正确性及文档完整性、准确性均有很高要求,因而开发投资相对较多,但效准确性均有很高要求,因而开发投资相对较多,但效益却要延迟到其他软件项目才能体现。益却要延迟到其他软件项目才能体现。(4)开发人员由于时间苍促或缺乏利益驱动,没有重用意识开发人员由于时间苍促或缺乏利益驱动,没有重用意识甚至在心理上有抵触情绪。甚至在心理上有抵触情绪。o只有妥善解决上述问题才能推广重用技术。只有妥善解决上述问题才能推广重用技术。17.5软件重用项目的管理软件重用项目的管理2024/8/1654国防科技大学计算机学院17.5.1组织机构组织机构o由于软件重由于软件重用项目必须用项目必须对一系列重对一系列重用活动和可用活动和可重用资源进重用资源进行支持、控行支持、控制和管理,制和管理,必须对传统必须对传统的项目组织的项目组织形式加以改形式加以改进。进。17.5软件重用项目的管理软件重用项目的管理2024/8/1655国防科技大学计算机学院组织机构组织机构o一个典型的重用组织机构应该由重用管理组、重用一个典型的重用组织机构应该由重用管理组、重用支持组、系统开发组和软部件开发组构成:支持组、系统开发组和软部件开发组构成:(1)系统开发组负责传统的软件开发任务:需求分析、软件系统开发组负责传统的软件开发任务:需求分析、软件设计、编码、调试与测试等。设计、编码、调试与测试等。(2)软部件开发组是从传统的项目开发组中去掉系统开发组软部件开发组是从传统的项目开发组中去掉系统开发组分割而成的,它负责从系统开发组接收软部件设计规分割而成的,它负责从系统开发组接收软部件设计规格说明,进行软部件的设计、实现和质量控制。格说明,进行软部件的设计、实现和质量控制。(3)重用管理组由各开发组的部分人员混合组成,它负责管重用管理组由各开发组的部分人员混合组成,它负责管理、组织、协调各类重用活动并处理所有与重用有关理、组织、协调各类重用活动并处理所有与重用有关的事务性工作。的事务性工作。(4)重用支持组负责软部件的资格确认、质量控制、分类与重用支持组负责软部件的资格确认、质量控制、分类与存储。存储。17.5软件重用项目的管理软件重用项目的管理2024/8/1656国防科技大学计算机学院17.5.2软件重用的考核指标软件重用的考核指标o为了有效地控制和管理重用活动,重用管理组需要为了有效地控制和管理重用活动,重用管理组需要利用一些可操作的定量指标对组织机构中的工作成利用一些可操作的定量指标对组织机构中的工作成效进行考核,以便作为制定或调整重用计划及实施效进行考核,以便作为制定或调整重用计划及实施奖惩的依据。奖惩的依据。o同时,重用支持组也需要利用这些指标监测软部件同时,重用支持组也需要利用这些指标监测软部件库中各部件的重用情况,给出分析报告反馈至重用库中各部件的重用情况,给出分析报告反馈至重用管理组、软部件开发组和系统开发组。管理组、软部件开发组和系统开发组。17.5软件重用项目的管理软件重用项目的管理2024/8/1657国防科技大学计算机学院软件重用的考核指标软件重用的考核指标o下面所列指标反映了重用活动的主要侧面:下面所列指标反映了重用活动的主要侧面:(1)软部件累计重用次数。它是软部件可重用性的度量。软部件累计重用次数。它是软部件可重用性的度量。(2)软部件累计重用规模。它等于累计重用次数与软部件规模度软部件累计重用规模。它等于累计重用次数与软部件规模度量的乘积。它反映软部件创造的实际效益。量的乘积。它反映软部件创造的实际效益。(3)项目重用率项目重用率 = 软部件累计重用规模软部件累计重用规模/目标软件的规模度量。目标软件的规模度量。(4)软部件库重用率软部件库重用率 = 库中所有软部件的累计重用次数之和库中所有软部件的累计重用次数之和/库库中软部件总数。中软部件总数。(5)软部件库重用规模比率软部件库重用规模比率 = 库中所有软部件的累计重用规模库中所有软部件的累计重用规模之和之和/库中所有软部件的规模度量之和。库中所有软部件的规模度量之和。o在软部件的开发过程中,应该遵循以下原则:在满足可重用在软部件的开发过程中,应该遵循以下原则:在满足可重用性的前提下,尽可能扩大软部件规模。性的前提下,尽可能扩大软部件规模。17.5软件重用项目的管理软件重用项目的管理2024/8/1658国防科技大学计算机学院17.5.3创造重用氛围创造重用氛围o由于对软件重用投资的回报往往要延迟到后续软件由于对软件重用投资的回报往往要延迟到后续软件开发项目才能得到体现,因此,部分开发人员对重开发项目才能得到体现,因此,部分开发人员对重用难免存在自觉或不自觉的抵触情绪。用难免存在自觉或不自觉的抵触情绪。o重用管理组的任务是使所有开发人员充分认识到重重用管理组的任务是使所有开发人员充分认识到重用的良好效益,组织软件重用技术培训并定期进行用的良好效益,组织软件重用技术培训并定期进行重用经验交流;按照上述定量指标在开发机构内设重用经验交流;按照上述定量指标在开发机构内设立重用奖励机制等等。立重用奖励机制等等。17.5软件重用项目的管理软件重用项目的管理2024/8/1659国防科技大学计算机学院17.6 支持软件重用的支持软件重用的CASE工具工具o能否在软件开发过程中成功地使用重用技术直接取能否在软件开发过程中成功地使用重用技术直接取决于决于CASE工具对软件重用的支持程度。工具对软件重用的支持程度。第十七章第十七章 软件重用技术软件重用技术2024/8/1660国防科技大学计算机学院17.6.1软件重用对软件重用对CASE工具的需求工具的需求o软件重用的各个阶段都需要软件重用的各个阶段都需要CASE工具的帮助,例工具的帮助,例如域分析、软部件的开发与分类、软部件库的检索、如域分析、软部件的开发与分类、软部件库的检索、软部件的评估与修改、软部件的合成。软部件的评估与修改、软部件的合成。o当然,这些当然,这些CASE工具并非软件重用的必要条件,工具并非软件重用的必要条件,但具备上述的部分或全部工具会提高重用效能,并但具备上述的部分或全部工具会提高重用效能,并使重用活动变得轻松自如。使重用活动变得轻松自如。17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1661国防科技大学计算机学院(1)域分析域分析 关键子任务关键子任务 支持工具支持工具知识获取知识获取 专家系统建造工具专家系统建造工具对象及其操作的标识对象及其操作的标识 实体一关系图工具实体一关系图工具抽象与关联抽象与关联 面向对象的开发工具面向对象的开发工具对象分类对象分类 基于语义的自动分类工具基于语义的自动分类工具域语言处理域语言处理 语法分析工具语法分析工具17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1662国防科技大学计算机学院(2)软部件开发软部件开发 关键子任务关键子任务 支持工具或机制支持工具或机制提高软部件独立性提高软部件独立性依赖性分析工具依赖性分析工具( (例如交叉引用生成器例如交叉引用生成器) ),软件结构分析器软件结构分析器( (例如调用关系生成器、继例如调用关系生成器、继承关系生成器承关系生成器) )参数化参数化程序设计语言中的宏替换,编译器的预处程序设计语言中的宏替换,编译器的预处理器,类属机制理器,类属机制( (例如例如AdaAda的的Generic)Generic)抽象与特殊化抽象与特殊化 面向对象语言的继承机制面向对象语言的继承机制17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1663国防科技大学计算机学院软部件开发(续)软部件开发(续) 关键子任务关键子任务 支持工具或机制支持工具或机制 软部件拓广软部件拓广 ( (增加功能、扩大适用范围增加功能、扩大适用范围) ) 面向对象的语言机制,支持同一软件面向对象的语言机制,支持同一软件元素以多个版本不断进化的配置管理工元素以多个版本不断进化的配置管理工具具 测试与认证测试与认证 测试覆盖面分析工具测试覆盖面分析工具 形式验证形式验证 定理证明工具定理证明工具 软部件质量评估软部件质量评估 软件质量的度量与分析工具软件质量的度量与分析工具 软部件的分类软部件的分类 语义近似性分析工具,基于规则的专语义近似性分析工具,基于规则的专家系统家系统17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1664国防科技大学计算机学院(3)软部件库的组织与检索软部件库的组织与检索 关键子任务关键子任务 支持工具支持工具 软部件库的组织与存储软部件库的组织与存储 关系数据库或面向对象的数据库系关系数据库或面向对象的数据库系统,类库统,类库 浏览浏览 超文本浏览工具超文本浏览工具 检索检索 自然语言的语法分析与语义理解工自然语言的语法分析与语义理解工具具 结构化查询结构化查询 关系数据库系统关系数据库系统 基于语义的检索基于语义的检索 定理证明工具定理证明工具( (用于语义匹配用于语义匹配) )17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1665国防科技大学计算机学院(4)软部件的合成软部件的合成 关键子任务关键子任务 支持工具支持工具软部件的修改软部件的修改 源代码比较工具源代码比较工具软部件实例化软部件实例化 宏扩展工具、模板程序的实例数据生成宏扩展工具、模板程序的实例数据生成工具工具修改后软部件的正确性修改后软部件的正确性验证验证 用于支持在软件维护阶段修改软件元素用于支持在软件维护阶段修改软件元素的的CASECASE工具工具将软部件合成至目标软将软部件合成至目标软件系统件系统 编译器、连接器以及集成化编译器、连接器以及集成化CASECASE环境中环境中的其他合成机制的其他合成机制17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1666国防科技大学计算机学院17.6.2类库的组织与检索工具类库的组织与检索工具o基于基于17.4节介绍的面向对象重用技术,本节给出节介绍的面向对象重用技术,本节给出一个具体的类库组织和检索一个具体的类库组织和检索CASE工具工具OORTool,主要内容包括:类库的组织与重构工具、主要内容包括:类库的组织与重构工具、类库的浏览与检索工具、软部件的合成工具。类库的浏览与检索工具、软部件的合成工具。17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1667国防科技大学计算机学院1.类库的组织与重构工具类库的组织与重构工具17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1668国防科技大学计算机学院2.类库的浏览与检索工具类库的浏览与检索工具oOORTool提供以下两种类库的浏览与检索手段:提供以下两种类库的浏览与检索手段:(1)用户在程序设计环境的语法制导编辑器中键入一个字符用户在程序设计环境的语法制导编辑器中键入一个字符串,按下指定的功能键串,按下指定的功能键(例如例如F1)之后,之后,CASE工具自工具自动在类库文档中搜索所有与之相同或相近的关键字动在类库文档中搜索所有与之相同或相近的关键字(超超文本中的结点文本中的结点),然后报告并解释所有的侯选超文本片,然后报告并解释所有的侯选超文本片段,由用户最终选取并进入所希望的文档画面。段,由用户最终选取并进入所希望的文档画面。(2)用户通过浏览用户通过浏览(Browse)菜单下的类层次图菜单下的类层次图(Class Hierarchy Chart)自顶向下浏览类库中每个类的说自顶向下浏览类库中每个类的说明性文档。明性文档。17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1669国防科技大学计算机学院例:例:17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1670国防科技大学计算机学院3.类的合成类的合成oOORTool类库中类的合成机制与类库中类的合成机制与17.4.3节所节所介绍的方法一样,用户必须在自己的程序中采用构介绍的方法一样,用户必须在自己的程序中采用构造法或子类法引用类库中的类,然后造法或子类法引用类库中的类,然后OORTool与程序设计环境中的编译器和连接器一道自动将被与程序设计环境中的编译器和连接器一道自动将被重用类的说明与实现组装至目标软件产品之中。后重用类的说明与实现组装至目标软件产品之中。后面这一动作完全是用户透明的。面这一动作完全是用户透明的。17.6支持软件重用的支持软件重用的CASE工具工具2024/8/1671国防科技大学计算机学院小结小结o软件重用是提高软件生产率、改进软件质量的有效软件重用是提高软件生产率、改进软件质量的有效途径。途径。o可供重用的软件元素包括源程序模块、设计文档、可供重用的软件元素包括源程序模块、设计文档、需求分析文档、测试方案与用例,等等。需求分析文档、测试方案与用例,等等。o典型的软件重用过程一般包括域分析、开发软部件、典型的软件重用过程一般包括域分析、开发软部件、组织与扩充软部件库、检索与提取软部件、理解与组织与扩充软部件库、检索与提取软部件、理解与修改软部件、合成软部件等阶段。修改软部件、合成软部件等阶段。o为提高可重用性,软部件的开发者必须利用抽象化、为提高可重用性,软部件的开发者必须利用抽象化、参数化、模板化等手段将软部件的应用环境与其内参数化、模板化等手段将软部件的应用环境与其内容和实现机制严格分离。容和实现机制严格分离。第十七章第十七章 软件重用技术软件重用技术2024/8/1672国防科技大学计算机学院小结(续)小结(续)o为便于用户理解和修改软部件,软部件必须附有充为便于用户理解和修改软部件,软部件必须附有充分的设计信息和说明文档。分的设计信息和说明文档。o为保证软部件在不可预知的环境中具备良好的正确为保证软部件在不可预知的环境中具备良好的正确性和强壮性,必须执行严格的质量控制措施。性和强壮性,必须执行严格的质量控制措施。o软部件库的组织方法主要有关键字分类法、多面分软部件库的组织方法主要有关键字分类法、多面分类法和超文本组织方法,相应的软部件检索方法依类法和超文本组织方法,相应的软部件检索方法依次为关键字检索法、多面检索法和超文本检索方法。次为关键字检索法、多面检索法和超文本检索方法。o为了将软部件合成至当前的软件开发项目之中,可为了将软部件合成至当前的软件开发项目之中,可以采用基于功能、基于数据和面向对象的合成技术。以采用基于功能、基于数据和面向对象的合成技术。第十七章第十七章 软件重用技术软件重用技术2024/8/1673国防科技大学计算机学院小结(续)小结(续)o为了有效地实施软件重用,为了有效地实施软件重用,CASE工具的支持是必工具的支持是必不可少的。不可少的。o由于封装和继承特征,面向对象方法非常适合支持由于封装和继承特征,面向对象方法非常适合支持软件重用。因此,目前大多数商品化的软部件库都软件重用。因此,目前大多数商品化的软部件库都是以类库的形式出现的。是以类库的形式出现的。o技术因素并非软件重用的唯一成功要素。为了鼓励技术因素并非软件重用的唯一成功要素。为了鼓励软部件的生产、提高软部件重用率,应该设立面向软部件的生产、提高软部件重用率,应该设立面向重用的管理机构,根据重用考核指标实施有效的奖重用的管理机构,根据重用考核指标实施有效的奖惩机制,尽量消除经济因素和心理因素对软件重用惩机制,尽量消除经济因素和心理因素对软件重用的消极影响。的消极影响。第十七章第十七章 软件重用技术软件重用技术2024/8/1674国防科技大学计算机学院 谢谢谢谢2024/8/1675国防科技大学计算机学院2024/8/1676国防科技大学计算机学院
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号