《软件工程概论(共9页).doc》由会员分享,可在线阅读,更多相关《软件工程概论(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上第13章 软件重用技术13.1 典型问题分析和解答【例1】实施软件重用的目的是要使软件开发工作进行得( A )。软件重用的实际效益除了( B )之外,在企业的经营管理方面也渴望达到理想的效益。新的应用软件开发技术和工具是以( C )作为关键,重用大粒度的( D ),为的是快速开发应用软件。这些新技术包括微软的( E )、( F )、( G ),SUN公司的Java,OMG公司的CORBA、IDL等。供选择的答案: A. 更简捷 更方便 更快、更好、更省 更丰富 B. 重用率 功能扩充 效率 空间利用率 C, D. 软件 固件 构件 属性 对象 事物 数据 代码 EG.
2、 office Visual Basic Active X Photoshop OLE Fortran COBOL Delphi 答案:A. , B. , C. , D. , E. , F. , G. 。其中,E、F、G的答案顺序可互换。分析:实施软件重用的目的是要使软件开发工作进行得是更快、更好、更省。“更快”是指在市场竞争环境中,软件开发工作能满足市场上时间方面的要求(即在提供软件产品的时间方面能赛过竞争对手);“更好”是指开发出来的软件在未来的运行中失效可能性小;“更省”是指在开发和维护期间所花费的开销少。日美一些大公司的资料表明,软件重用率最高可望达到90 %,而且软件重用使得企业在及
3、时满足市场、软件质量、软件开发和维护费用等方面都得到显著的改进。除了重用率之外,在企业的经营管理方面也可望达到理想的效益。例如,上市时间可缩短2 5倍;软件产品的缺陷密度可减少5 10倍;软件产品的维护费用可减少5 10倍;软件开发总费用可减少15% 75%,其中,75%是针对长期项目,包括开发可重用构件及支持重用的负担。新的应用软件开发技术和工具是以“构件”作为关键,重用大粒度的“对象”,为的是快速开发应用软件。这些新技术包括微软的Visual Basic、Active X、OLE(对象链接与嵌入),SUN公司的Java,OMG公司的CORBA(公用对象请求代理程序体系结构)、IDL(接口定
4、义语言)等。非面向对象语言(如COBOL和Fortran)在重用实践中已经相当的成功。这些非面向对象程序设计语言构件技术的成功实践说明了实现软件重用并不限于面向对象语言构件或类库。【例2】以往的软件工程技术不能满足重用的需要,体现在工程、( A )、( B )、经营业务等4个方面。“工程”指软件开发工程,表现在缺乏( C )手段,缺乏( D )构件,缺乏对潜在可重用的( E ),缺乏实施重用的工具。 供选择的答案: A, B. 需求 过程 环境 组织管理 C E. 重用 可靠性 灵活性 界定 工具 互连性答案:A. , B. , C. , D. , E. 。其中,A、B的答案的顺序可互换。分析
5、:以往的软件工程技术不能满足重用的需要,体现在工程、过程、组织管理、经营业务等4个方面。这里所说的“工程”是指软件开发工程,其技术和方法面对重用的需要已显得低效,主要表现在: 缺乏界定手段:为了软件重用,需要循软件开发流程的各个阶段,通过分析它们的描述模型,明确界定出潜在可重用的部分,被界定出的部分,可能是可被重用的部分,也可能是可被可重用构件代用的部分。而以往的软件工程缺乏这种界定手段。 缺乏可重用的构件:这反映在许多方面。例如,不能有效地挑选出可重用构件并对它们进行强化;缺乏对构件打包、文档化、分类、界定的技术;缺乏有效方法进行(构件)库的设计和实现;缺乏良好的构件库存取方法。 缺乏对潜在
6、可重用构件的灵活性:如果一个构件很死板,那么它被重用的机会就很少。而过去的软件工程方法在设计灵活的、分层的软件体系结构方面一直没有成熟的办法。过去的方法是对构件进行调节使之满足新的需求,或者使对新的体系结构进行限制。 缺乏实施重用的工具:为了实施重用,需要一系列新的工具,并把它们集成到面向重用的软件工程环境中去。而过去的工程缺乏这方面的工具。【例3】论域工程过程要在选定的应用论域中界定出( A )和( B ),要为多个应用和构件定义一个( C ),并开发一系列可适度扩展的( D )。创建可重用构件既困难又昂贵。所以,应当帮助软件人员进行界定工作,以及按重要性对各项( E )进行优先性排队。在一
7、定程度上,这项工作要依赖于( F )。供选择的答案:A, B, E, F: 共性 特性 可变性 属性 灵活性 可靠性 健壮性 适用性 C, D: 固件 构件 体系结构 组件 总体框图 数据结构答案:A. , B. , C. , D. , E. , F. 。其中,A、B的答案顺序可互换。分析:论域工程过程要在选定的应用论域中界定出共性和可变性,要为多个应用和构件定义一个体系结构,并开发一系列可适度扩展的构件。创建可重用构件既困难又昂贵。所以,应当帮助软件人员进行界定工作,以及按重要性对各项“特性”进行优先性排队。在一定程度上,这项工作要依赖于预测的可靠性(预测需要哪些应用层的可靠性和构件层的可靠
8、性),这也关系到我们要冒多大的风险。【例4】软件体系设计的一个中心问题是能否( A ),以及采用何种软件体系结构风格。有原则地使用体系结构风格可带来一些实际的好处:(1) 它促进了对设计的( B );(2) 它可以带来显著的( C )(体系结构风格的不变部分使它们可以共享同一个实现代码);(3) 只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构;(4) 对标准或规范风格的使用也支持了( D ),例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;(5) 在限制了设计空间的情况下体系结构风格通常允许进行特殊的与风格有关的分析;(6) 通常可以对
9、特定的风格提供( E )手段。供选择的答案: A C. 使用特定的体系模式 使用重复的体系模式 重用 专用 代码重用 结构重用 D E. 可视化 构件 互操作性 可移植性 可调度性 框架答案:A. , B. , C. , D. , E. 。分析:软件体系设计的一个中心问题是能否使用重复的体系模式,以及采用何种软件体系结构风格。例如可以采用通用的基于层次或数据流的系统体系结构,或者采用特殊的系统组织(如经典的编译器分解方式),OSI七层协议,MVC用户界面语义图等。有原则地使用体系结构风格可带来一系列实际的好处。(1) 它促进了对设计的重用。一些经过实践证实的解决方案可以拿来可靠地解决新问题。(
10、2) 它可以带来显著的代码重用。体系结构风格的不变部分使它们可以共享同一个实现代码。(3) 只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构。例如,如果某人把系统描述为“客户机服务器”模式,则不必给出细节,人们立刻就会明白它们是如何一部分一部分地组织起来,并在脑海中清晰地得到这个图像。(4) 对标准或规范风格的使用也支持了互操作性,例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;(5) 在限制了设计空间的情况下,体系结构风格通常允许进行特殊的与风格有关的分析。例如,分析管道过滤器系统的可调度性(吞吐量、延时、死锁的解决)是可行的,但对于任
11、意的、或用其它方法构造的架构来说,这种分析可能毫无意义。(6) 通常可以对特定的风格提供可视化的手段。例如,可以对与客户的专业领域有关的设计作出图解或文字说明。对于应用软件体系结构风格来说,由于视点的不同,软件人员有很大的选择空间。要为系统选择或设计某一个体系结构风格,必须根据特定项目的具体特点,进行分析比较后再确定。体系结构风格的使用几乎完全是特化的。【例5】分层系统采用层次化的组织方法,每一层向其( A )提供服务,并利用( B )的服务。在一些分层系统中,( C )全部被隐藏起来,只有( D )和一部分精心选择的功能可以被系统外部看到。在这种系统中,( E )是实现在层次结构中的一些虚拟
12、机,( F )是层次与层次之间交互的协议,( G )包括对层次之间交互的限制。分层系统中有许多可取的属性。首先,它支持( H )的系统设计,这使得设计者可以把一个复杂的系统按递增的步骤分解开来;其次,它支持( I ),像管道结构的系统一样,因为每一层至多和相邻的上下层交互,因此,功能的改变最多只影响相邻的上下层。另外,它能支持( J ),和抽象数据类型一样,只要提供的服务接口定义不变,同一层的不同实现可以交换使用。供选择的答案: A D. 下层 内部层次 外部层次 上层 中间件 接口 E G. 接口定义 软件部件 连接 拓扑约束 规范定义 推理机制 系统结构 H J. 基于抽象程度递增 基于具
13、体细节递增 重用 可视化 互操作 功能增强 效率提高 结构化答案:A. , B. , C. , D. , E. , F. , G. , H. , I. , J. 。分析:对于分层系统:过程调用用户有用的系统基本工具内核(1) 基本结构:分层系统采用层次化的组织方法,每一层向其上层提供服务,并利用其下层的服务。在一些分层系统中,内部层次全部被隐藏起来,只有外部层次及一部分精心选择的功能可以被系统外部所见。在这种系统中,软件部件是实现在层次结构中的一些虚拟机,连接是层次与层次之间交互的协议,拓扑约束包括对层次之间交互的限制。如图所示。不同元素组合(2) 应用:这种系统最广泛的应用是分层通信协议。在
14、这一应用论域中,每一层提供一级抽象的功能,作为上层通信的基础。较低的层次定义低层的交互,最低层通常只定义硬件物理连接。其它应用论域有数据库系统、操作系统等。(3) 分层系统中有许多可取的属性。首先,它支持基于抽象程度递增的系统设计,这使得设计者可以把一个复杂的系统按递增的步骤分解开来;其次,它支持功能增强,像管道结构的系统一样,因为每一层至多和相邻的上下层交互,因此,功能的改变最多只影响相邻的上下层。另外,它能支持重用,和抽象数据类型一样,只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,并允许有各种不同的实现方法(典型的例子是ISO OSI参考模型和某
15、些Windows的系统协议)。【例6】软件重用可分为以下三个层次:( A ),例如软件工程知识的重用。( B ),例如面向对象方法或国家制定的软件开发规范的重用。软件成分的重用。软件成分的重用又可进一步划分为( C ),如剪贴;( D ),如重用设计模型;( E ),更高级别重用。为了研究软件重用程度与软件生产率之间的关系,我们引进:生产率P = ( F )和重用率R = ( G )的公式,以及两者之间的关系P = ( H )。其中,用Lt代表程序总长度,Ln和Lr分别为新编代码和重用代码的长度。令Et、En和Er分别代表开发该程序的总工作量、新编程序的工作量和重用已有软件构件的工作量,Cn和
16、Cr分别代表开发新代码和重用已有软件构件的生产率。供选择的答案: A E. 知识重用 分析结果重用 代码重用 方法与标准重用 设计结果重用 软件成分重用 F H. 答案:A. , B. , C. , D. , E. , F. , G. , H. 。分析:广义来讲,软件重用可分为以下三个层次:(1) 知识重用(如软件工程知识的重用);(2) 方法和标准的重用(如面向对象方法或国家制定的软件开发规范的重用);(3) 软件成分的重用。软件成分的重用又可进一步划分为三个级别: 代码重用(源代码剪贴、源代码包含、继承); 设计结果重用; 分析结果重用(这是一种更高级别的重用,即重用某个系统的分析模型)。
17、为实现软件重用需要付出额外代价,如投资、时间和可重用构件库。即使不考虑上述的额外代价,软件重用也不是必然能提高软件生产率。为研究软件重用程度与软件生产率的关系,我们首先引入下列两个量:生产率P = 程序总长度开发该程序所用人时数重用率R = 重用代码长度程序总长度令Lt为程序总长度(目标代码条数),Ln和Lr分别为新编代码和重用代码的长度(都用目标代码条数来度量)。再令Et、En和Er分别代表开发该程序的总工作量、新编程序的工作量和重用已有软件构件的工作量,则有以下等式成立:Lt = Ln + Lr, Et = En + Er, P = LtEt, R = LrLt.此外,用符号Cn和Cr分别
18、代表开发新代码和重用已有软件构件的生产率,则有:Cn = LnEn, Cr = LrEr.从上述6个等式出发,可以推导出下列的生产率与重用率之间的关系:从上式可知,重用率R越高,生产率不一定就越高。只有当软件开发人员使用已有的软件构件构造应用系统时,其工作效率比重新从底层编写程序的效率高时,重用率的提高才会导致生产率提高。可见,通过软件重用来提高软件生产率,并不是一件轻而易举的事情。构件的实用程度和使用方便程度,以及软件人员的素质、开发环境等因素,都直接影响软件重用的效果。13.2 习 题1. 软件重用的含义是什么?软件重用的范围有哪些方面?2. 比较横向重用和纵向重用的异同及优劣。3. 当今
19、大多数软件重用过程中,都涉及创建过程的一个重要活动,即界定潜在的可重用的资源。在这个活动中需要一整套的界定方法,并需要一个能确保可重用资源被重用的体系结构。这个活动就叫做( A )。而应用软件的开发过程或重用过程则称为( B )。系统地软件重用的实质是:( C )先投资,即界定并仔细地创建出可重用的资源,从而可以使得( D )能够又快又省地开发应用软件。供选择的答案:A, B. 应用系统工程 软件工程 论域工程 需求工程C, D. 用户 创建者 重用者 投资者 管理者4. 所谓一个“构件”,可以是一个类型、类或其它的工作成品。对于构件,应当按可重用的要求( A )、( B )、打包、编写文档。
20、构件是( C ),并具有相当稳定的公开的( D )。这里的构件是基于( E )技术的。( E )技术中的封装、多态等特性,可简化构件的开发工作。而( E )技术中的( F )机制则有使开发简化、维护复杂的两面性。供选择的答案:A, B. 实现 运行 设计 计划C, D. 外联的 内聚的 公开的 私有的 外设 接口 输出 E, F. 面向数据 面向对象 封装 继承 重用5. 软件开发人员必须用各种抽象化手段来开发代码级构件。典型的抽象方法有3种。( A )、( B )、( C )。( A )使构件的( D )仅由接口说明确定,而把实现细节对构件的使用者隐藏起来;( B )在( A )的基础上进一
21、步隐藏除接口参数外的所有数据。面向对象程序设计语言中的“类”是一种典型的基于( B )的构件。( C )则在( B )的基础上进一步实现在同一构件上并发执行的多个( E )的无关性。构件提供端口,以便为多个( F )同时访问构件中的资源进行( G )控制。供选择的答案: A B. 数据抽象 需求抽象 设计抽象 过程抽象 功能抽象 实例抽象 D G. 异步 程序 线程 用户 功能 同步6. 回答下列问题。(1) 简述关键词分类法、多面分类法和超文本分类法等组织方法的概要。(2) 简述相应的检索方法。7. 试简述基于软件重用的软件项目管理机构的组织和工作职责。习题参考答案1. 软件重用就是指利用某
22、些早先开发的对建立新软件系统有用的软件元素来生产新系统。软件重用的范围有以下十个方面: 项目计划:软件项目计划的基本结构和许多内容都可以跨项目重用。 成本估计:由于不同项目中常包含类似的功能,所以有可能在极少修改或不修改的情况下,重用对该功能的成本估计。 体系结构:即便应用论域千差万别,但程序和数据体系结构大同小异。因此,可以创建一组类属的体系结构模板,将这些模板作为可重用的涉及框架。 需求模型和规格说明:类和对象的模型和规格说明显然可以重用。此外,用传统软件工程方法开发的分析模型也可以重用。 设计:用传统方法开发的体系结构、数据、接口和过程化设计,以及用面向对象方法开发的系统和对象的设计都可
23、以重用。 源程序代码:验证过的程序构件可以拿来重用的。 用户文档和技术文档:即便特定的应用不同,但也经常有可能重用用户文档和技术文档中的大部分内容。 用户界面:这可能是最广泛被重用的软件元素。如经常重用GUI的软件构件。 数据结构:经常被重用的数据结构包括:内部表、列表和记录结构,以及文件和完整的数据库。 测试用例:只要将设计或代码构件定义成可重用构件,相关的测试用例就应当成为这些构件的“从属品”。2. 软件重用可以区分为横向重用和纵向重用。横向重用是重用不同应用论域中的软件元素,例如数据结构、排序算法、人机界面构件等。标准函数库是一种典型的原始的横向重用机制。纵向重用是在一类具有较多公共性的
24、应用论域之间重用软件构件。横向重用是在几个截然不同的应用论域之间进行软件重用,可重用的资源有限,潜力不大。纵向重用的应用范围较大,从系统软件到特定论域的软件及应用软件,还有软件工程过程方面,许多计算机软件厂商开发了大量可重用的构件或软件包,在软件工程实践中取得显著的效益,因此受到广泛关注。3. A. , B. , C. , D. 4. A. , B. , C. , D. , E. , F. 。5. A. , B. , C. , D. , E. , F. , G. 。6. (1) 软件构件的分类方法和相应的构件库结构对构件的检索和理解有极为深刻的影响,就是说,可重用构件库的组织应当便于构件的存储
25、和检索。用户界面 关键词分类法。此方法的基本思想是:根据论域分析的结果,将应用论域(族)的概念按照从抽象到具体的顺序,逐步分解树形结构或有向无回路图结构。每个概念用一个描述性的关键词表示。不可再分解的原子层的包含隶属于它的某些软件构件。下图给出了可重用构件库的关键词分类结构,它支持图形用户界面设计。对话框事件处理菜单窗口拖放处理信息对话框图形窗口键盘事件处理数据录入对话框文本窗口当加入新的构件时,库管理员应对构件的功能或行为进行分析,浏览上述关键词分类结构,将构件置于最合适的原子层关键词下。如果无法找到构件应从属的关键词,可以扩充关键词分类结构,引进新的关键词。但必须保证新关键词有相应的论域分
26、析的结果作为支持。 多面分类法。此方法由3部分构成:多面分类机制、同义词库和概念距离图。)多面分类机制:分析论域范围并定义若干用于描述一个构件特征的“面”,每个“面”包含若干“概念”,它们表述构件在“面”上的基本特征。这些特征根据它们的重要性排队。“面”可以描述构件执行的功能、被操作的数据、构件应用的上下文以及任何其它特征。描述某一构件的“面”的集合称为面描述子。)同义词库:意义相同或相近的若干词汇组成同义词库。所有词汇按照隶属于“面”的“概念”分组,在任一时刻点,每个“概念”可用组内的某一同义词汇作为标识载体。)概念距离图:用于度量每个“面”中“概念”的相似性程度。属于每个“面”的一般化概念
27、与其中的两个或多个“概念”以加权边相连接,两个“概念”的相似性由它们之间的最短加权路径上的加权距离确定,附加于边上的权值体现了“概念”之间的差异程度。采用多面分类法进行可重用构件库的组织,必须在存储软件构件的同时,表示并存储多面分类机制、同义词库和概念距离图。多面分类法的所有语法构件(“面”、“概念”、同义词、一般化概念、差异性权值)均取材于论域分析的结果。当需要在可重用构件库中加入新的构件时,库管理源必须对构件的功能、行为进行深入分析,利用现有的多面分类结构确定构件的描述子,对每个“面”选取合适的“概念”作为特征描述。必要时可以考虑增加新的“概念”,此时必须根据新“概念”完善同义词库和概念距
28、离图。C 超文本组织法。此方法的基本思想是:所有构件都必须辅以详细的功能或行为说明文档,说明中出现的概念和构件以网状链接方式互相连接。检索者在阅读文档的过程中可任意跳转到包含相关概念或软件构件的文档中去。全文检索系统将用户给出的关键词与说明文档中的文字进行匹配,实现软件构件的浏览式检索。超文本方法以结点为基本单位,链作为结点之间的联想式关联。一般地,结点是一个信息块。对于可重用构件库而言,结点可以是论域的概念、功能或行为名称、构件名称等,在图形用户界面上,结点可以是字符串,也可以是图像、声音、动画等。(2) 可重用构件库的检索方法与库的组织方式密切相关。 基于关键词的检索:这种检索方法的基本思
29、想是:系统(CASE工具)在图形用户界面上将可重用构件库的关键词树直观地展示给用户,用户通过在树上的逐级浏览寻找需要的关键词并提取相应的构件。当然,用户也可以直接给出关键词(其中可含有通配符),由系统自动地给出合适的候选构件清单。这种方法的优点是简单,易于实现。缺点是对库的浏览容易使用户迷失方向。 多面检索:这种检索方法基于多面分类法。步骤如下: 构造查询:用户提供待查构件在每个“面”上的特征,生成构件描述子。此时,用户可以从可重用构件库已有的“概念”中挑选,也可以将某些特征值置为空。系统在库中检索时将忽略特征值为空的“面”。在构造查询的过程中,可以利用同义词库和概念距离图来帮助用户正确选择特
30、征值。 检索构件:实现多面分类法的CASE工具利用同义词库和概念距离图,在可重用构件库中寻找相同的或相近的构件描述子及相应的构件。 对构件进行排序:按照相似程度对被检索出来的构件进行排序,还可以按照与重用有关的度量信息(如构件的复杂性、可重用性、成功重用的次数等)进行排序。这种方法的优点是易于实现相似构件的查找,但用户构造查询比较麻烦。 超文本检索:这种检索方法的步骤是:用户首先给出一个或若干个关键词,系统在构件的说明文档中做精确的或模糊的语法匹配。匹配成功后,向用户提供相应的构件说明。这些构件说明是含有许多超文本结点的正文。用户在阅读这些正文时可实现多个构件说明文档之间的自由跳转,最终选择合
31、适的构件。为了避免用户在跳转过程中迷失方向,系统可以通过图形用户界面显示浏览历史图,允许将特定画面定义为有名“书签”并可随时跳转到“书签”。此外,还可以帮助用户逆着跳转路径逐步返回。这种方法的优点是用户界面友好,但在某些情况下用户难以在超文本浏览过程中正确选择软件构件。 其它检索方法:上述检索方法都是基于语法匹配,要求用户对可重用构件库中的出现的众多词汇有较全面的把握,较精确的理解。理论上,理想的检索方法是语义匹配:可重用构件库的用户以形式化的手段描述所需要的构件的功能或行为的语义,系统通过定理证明或基于知识的推理过程寻找语义上等价的或相近的构件。但这种基于语义的检索方法涉及许多人工智能的难题
32、,目前难于支持大型构件库的工程实现。7. 基于重用的软件项目组织与传统的软件开发项目组织不同,它必须有两个职能,并由两个部门分别承担这两个职能。一个职能是创建,相应的部门是创建者或论域工程部门;另一个职能是重用,相应的部门是重用者或应用工程部门。而具有重用经验的单位,往往还需要第三个职能,即支持,相应的部门是支持者或支持部门。创建、重用和支持这三个平行的部门之上,还有一个高层经理,他关注的是总目标。 重用者负责传统的软件开发任务。同时,在各开发阶段,软件人员可查询构件库,从中检索可重用构件,进行适应性修改后将其合成到当前的目标软件中来。此外,对于同类(或同族)应用的首次开发,重用者还需在做需求
33、分析之前进行论域分析,以便为系统地构造软件构件提供依据。 创建者负责从重用者手中接受构件的设计规格说明,进行构件的设计、实现和质量控制,重点考虑因素是构件的可重用性。在构件库的积累初期,开发可重用构件的工作量较大,需要设立专门的软件构件开发组。但随着构件库的不断丰富,可以考虑将构件开发组并入系统开发组。 高层经理负责管理、组织和协调各类软件重用活动,并处理所有有关重用的事务性工作。所有下属的创建、重用和支持部门都应定期向他报告各自重用活动的当前状况,高层经理根据这些状况制定或调整重用计划,实施奖励,以调动开发人员的重用积极性。此外,他还应根据整体重用情况,向项目管理人员提供资源分配、进度安排等方面的决策建议。 重用支持者负责可重用构件的资格确认、质量保证、分类和存储。在可重用构件库尚未形成的初期,支持者的任务还包括开发可重用构件库和其它配套的软件重用CASE工具。此后,还可将部分力量投入应用论域中某些通用构件的开发。专心-专注-专业