第7章 软件复用与构件技术

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第七章软件复用与构件技术7高等教育出版社高等教育电子音像出版社7.1软件复用的基本概念软件复用就是将已有的软件成分用于构造新的软件系统,以达到提高软件系统的开发质量与效率、开发成本的目的。可复用的软件成分称为可复用构件(ReusableComponent)或组件,可从旧软件中提取,也可以专门为复用而开发。软件复用不仅是对程序的复用,它包括对软件生产过程中任何活动所产生的制成品的复用。如:项目计划、可行性报告、需求定义、分析模型、详细说明、源程序和测试用例等。软件生产过程主要是正向过程,即软件产品从抽象级别较高的形态向抽象级别较低的形态演化,所以较高级别的复用容易带动较低级别的复用,反之则不然。复用级别越高,可得到的回报也越大,因此分析软件(AnalysisWare)和设计软件(DesignWare)的复用备受重视。软件复用的优点:(1)提高软件生产率,降低软件生产成本;(2)提高软件质量;(3)提高互操作性;(4)推动标准化;(5)支持原型开发。代码的复用设计结果的复用分析结果的复用测试信息的复用高抽象程度低7.1.1软件复用的级别包括目标代码,也包括文本形式的源代码。受实际环境影响小,可复用机会多,所需修改少。可被复用的分析结果是针对问题域的某些事物或某些问题的抽象程度更高的解法。主要包括测试用例(testcase)的复用和测试过程信息的复用。三种复用方式:从现有系统的分析结果中提取可复用构件用于新系统的分析;用一份完整的分析文档作为输入,生成针对不通软硬件平台和其他实现条件的多项设计;独立于具体应用,专门开发一些可复用的分析构件。7.1.2软件复用的形式一、按照重用活动所跨越的应用领域的类型分1.横向复用(horizontalreuse)也称为水平复用,是指复用活动的范围跨越了几个不同的应用领域,复用的软件产品主要包括数据结构、通用算法、人机界面等软件元素。2.纵向复用(verticalreuse)也称为垂直复用,是指复用活动的范围限制在同一个应用领域或者是一类具有较多共性的应用领域内。二、基于软件复用的软件开发过程的角度分1.生产者复用(productreuse)指建立、获取或者重新设计可复用构件的活动。涉及的活动包括:复用的规划、领域分析、构件的开发、构件库的组织和管理。2.消费者复用(consumerreuse)指使用可复用的构件建立新的系统的活动。涉及的活动包括:应用系统的规划、构件的检索和选择、应用系统中非复用部分的开发、应用系统的组装。建立构件组装应用生产者复用消费者复用(为复用开发构件)(使用构件开发应用)生产者复用与消费者复用复用具有许多明显的优点,但目前应用不广泛的主要原因是:(1)技术因素构件与应用系统之间的差异;构件要达到一定的规模,才能支持有效的复用;发现合用构件的困难;基于复用的软件开发方法和软件过程需要一些新的理论、技术及支持环境。7.1.3软件复用的困难(2)人的因素喜欢自己创造而不喜欢使用别人的东西。(4)教育因素软件科学技术的教育与培训中,缺乏关于软件复用的内容,缺少专门教材和课程。(3)管理因素把复用构件和一般软件构件同等看待,把复用看作可有可无的事。7.2软件构件与构件工程基于软件构件的软件工程也称为构件工程,是以面向对象的方法为基础,实现软件重用,构造新系统的过程。为了实现软件重用,基于软件构件的软件工程强调领域工程与软件工程同时进行。领域工程创建应用领域的模型,标识、构造、分类和传播一组可重用的软件。软件工程师则在软件开发过程中重用它们。下图给出了一个典型的重用的过程模型,描述了领域工程与软件工程的关系。图2领域分析设计软件体系结构开发可重用的软件成分中心库可重用软件成分/构件领域模型结构模型系统分析规格说明与设计建造系统规格说明分析与设计模型应用软件用户需求软件工程领域工程重用的过程模型一个软件只有在多个系统中被使用才可称为“可复用构件”,必须具备的条件:(1)独立性(2)完整性(3)可标识性(4)通用性(5)适应性(6)可靠性(7)标准化7.2.1可复用构件解决一个相对独立的问题,或大问题中某个相对独立的部分。一个软件只有在多个系统中被使用才可称为“可复用构件”,必须具备的条件:(1)独立性(2)完整性(3)可标识性(4)通用性(5)适应性(6)可靠性(7)标准化7.2.1可复用构件提供较完整的解决,不要遗留很多缺口,让复用者做大量补充。一个软件只有在多个系统中被使用才可称为“可复用构件”,必须具备的条件:(1)独立性(2)完整性(3)可标识性(4)通用性(5)适应性(6)可靠性(7)标准化7.2.1可复用构件构件所解决的问题应该是可标识的,可命名,有简要介绍,便于理解和使用。一个软件只有在多个系统中被使用才可称为“可复用构件”,必须具备的条件:(1)独立性(2)完整性(3)可标识性(4)通用性(5)适应性(6)可靠性(7)标准化7.2.1可复用构件构件解决的问题,应在同类应用中具有一般性。一个软件只有在多个系统中被使用才可称为“可复用构件”,必须具备的条件:(1)独立性(2)完整性(3)可标识性(4)通用性(5)适应性(6)可靠性(7)标准化7.2.1可复用构件应用场合有某些变化时,构件仍是可用的,使构件的某些数据参数化和数据类型参数化。一个软件只有在多个系统中被使用才可称为“可复用构件”,必须具备的条件:(1)独立性(2)完整性(3)可标识性(4)通用性(5)适应性(6)可靠性(7)标准化7.2.1可复用构件要求构件对预计将要使用它的系统是可靠的。一个软件只有在多个系统中被使用才可称为“可复用构件”,必须具备的条件:(1)独立性(2)完整性(3)可标识性(4)通用性(5)适应性(6)可靠性(7)标准化7.2.1可复用构件可复用构件的标准化对于软件复用是至关重要的。7.2.2基于构件的软件工程基于构件的软件工程与传统的或面向对象的软件工程相比,有显著的差异。它不是针对某个特定的软件系统,而是针对一类软件系统的共同的特征、知识和需求。基于构件的软件的开发过程包括两个并发的子过程,一个是领域工程,另一个是基于构件的开发。领域工程完成一组可复用构件的标示、构造、分类和传播;基于构件的开发完成使用可复用构件构造新的软件系统。领域分析(DomainAnalysis)是针对一类软件系统的应用领域,进行系统化分析,以发现其共同的特征、知识和需求和规约。领域分析是特定类领域软件重用的基础,领域分析又称作领域工程(DomainEngineering),是软件工程的发展与延伸。其目标是:发现和挖掘在特定领域内可以被复用的构件。领域分析活动中输入和输出如图所示:7.2.3领域分析领域分析输入信息技术文献已有应用专家经验/建议当前与未来的需求输出信息领域语言复用标准分类方法功能/行为模型领域分析的输入和输出领域分析是一项比系统分析更难的工作。领域分析方法可采用结构化方法和面向对象方法,而后者将成为主流。领域分析输入信息技术文献已有应用专家经验/建议当前与未来的需求输出信息领域语言复用标准分类方法功能/行为模型领域分析的输入和输出7.3.2构件库构件库(ComponentLibrary)用于对可复用构件进行存储和管理。它是支持软件复用的必要设施。构件库必须有大量的可复用构件。构件库系统应提供的主要功能:构件的存储、管理、检索以及库的浏览与维护等。关键是支持使用者高效而准确地发现所需的可复用构件。相关的主要技术是分类方法和检索方法。支持方便的、友好的用户管理和使用界面。构件分类构件检索涉及两个基本问题:大多数构件按枚举、刻面和属性-值分为三类:(1)枚举分类通过定义一个层次结构来对构件进行分类。构件库中的可复用构件按照某种标准被分成了若干个大类,每个大类中的构件再分成若干个小类,这样就形成了一个构件分类的层次结构。图形用户界面类窗口类菜单类图形窗口构件文字窗口构件系统菜单构件弹出式菜单构件普通菜单构件枚举分类的层次结构7.3.3构件的分类(2)刻面分类一个刻面描述构件某一个方面的特征。刻面分类则是从不同的侧面对构件进行分类,每一种分类方式称为一个刻面。不同的刻面根据其重要性可以设置不同的优先级。刻面应用领域对象功能编程语言刻面值图形用户界面编程菜单动态修改菜单项Java对构件的每个刻面赋予相应的值,用以描述该构件。刻面分类具有较好的灵活性,易于加入新的刻面值,因此刻面分类比枚举分类更易于扩展和修改。刻面分类法支持多重观点对构件进行分类,例如从构件的应用领域、构件所描述的对象、构件的观点和编程语言等不同的方式来分类。每一种分类方式称为一个刻面。每个刻面把构件集合划分为一个子集,各刻面所划分的子集形成一些较小的交集。一个构件对每个每个刻面有一个刻面值,例如:应用领域=计算机绘图对象=椭圆功能=彩色填充,编程语言=C++检索一个构件时,给出一组刻面值,将确定一组子集合,在这些子集合的交集中,确认所需的构件。构件可用属性描述,例如构件类型、开发单位、作者、提交日期等属性。检索时通过构件的属性可以缩小搜索范围。刻面和属性都不涉及构件内部实现,只是为了便于构件的管理、检索和使用。如果把构件比作一只箱子,其内容如同箱子中装的东西,刻面和属性则如同箱子外边的标签。刻面分类法可以看作层次分类法的扩充。(3)属性-值分类该方法首先是为构件库中的所有构件定义一组属性,并赋予相应的属性值。开发人员通过指定一组属性值在构件库中对构件进行检索。该分类方法与刻面分类方法有几点不同之处:属性的数量没有限制,而刻面描述一般限制在7或8个刻面;属性没有优先级,而刻面根据其重要程度,有相应的优先级。构件库中检索一个构件和在数据库中检索一个记录是不同的。1.数据库记录按关键字段检索。2.构件库按照子集(刻面值)或属性检索。⑴检索的2个指标:查准率(Precision)、查全率(Signature)⑵检索的不确定性带来两种相互矛盾的结果:检索的结果可能是一个较大的构件集合,要从中找到所需的构件仍然很费力;检索得到的集合没有把真正需要的构件包括在内。7.3.4构件检索解决方法:(一)构件库系统能对提出的检索条件作广义解释。建立同义词对照表,例如“商品销售”、“售货”、“卖货”看作一组同义词;建立近意词对照表,例如把“商业”、“商场”、“连锁店”看作一组近意词。系统首先匹配同义词,再匹配近义词,将匹配结果包括到广义结果集合中。解决方法:(二)使检索得到的构件集合尽可能不包括对用户无用的构件。增加更多的刻面与构件属性:将得到更小的子集合交集,降低最终发现和确认所需构件的难度;建立构件关键词:根据构件内容提炼关键词,反映有关构件内容的一些主要信息。例如,找功能构件的关键词有“压入”、“弹出”、“后进先出”等。如果通过刻面和构件属性得到的构件子集较大,可用关键词作进一步的检索,以缩小搜索范围。改进构件检索的其他措施:(1)记录用户使用构件库的经验,并根据这些经验改进构件检索系统;(2)对每个构件给出一段文字的简要介绍;(3)提供较强的人机对话功能;(4)引导用户对自己需求的表达不断精化。7.3.4基于构件的软件开发基于构件的软件开发是使用可复用构件组装开发新的应用系统的过程。一、开发过程1.构件的鉴定考察构件能否满足应用的需要,是否达到应用所需的性能、可靠性、质量的保证。2.构件的调整经过必要的调整和修改的构件,才能适应复用的需要。3.构件的组装将经过鉴定和调整后的构件组装到应用系统中。为此,必须建立一个基础设施,提供构件协同的模型和使构件能够交互并完成共同任务的特定服务。二、基于构件的软件开发特点1.提高开发质量开发的每个阶段使用的可复用构件在开发过程中都经过严格的测试,故软件的质量高。HP的统计报告表明:使用构件软件比无复用软件的缺陷率减少51%。2.开发的效率高开发各阶段都有被复用的软件产品,故效率高。约30%~50%的复用,效率提高25%~40%。3.开发成本低避免人力、物力和财力的不必要浪费。注意:购买第三方构件的风险。在同一个领域的应用系统之间,不但可以找到其共同的软件构件,而且可以发现共同的或相似的软件体系结构(Softw

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功