软件复用技术
软件复用技术

论使用复用设计1、引言复用是活动,而不是对象.在创建软件相关的系统的语境中,复用仅仅是非常简单的任何过程,该过程通过复用来自以前开发工作的某些东西来生产(或帮助生产)一个系统。
那么,唯一的问题是:复用什么、什么是导致成功复用的过程。
在软件工程的范围内,复用既是旧概念,也是新概念。
程序员从最早的计算时代已开始复用概念、对象、论据、抽象和过程,但是我们复用的途径是特定的。
本文对软件复用的讨论,将从以下四个方面进行:1)软件工程师可以获得一系列可复用的软件制品,这些包括软件的技术表示(例如,规约、体系结构模型、设计和代码)、文档、测试数据,甚至包括过程相关的任务(如,检查技术)。
2)复用过程包括两个并发的子过程:领域工程和软件工程。
领域工程的目的是在特定应用领域中标识、构造、分类和传播一组软件制品。
然后,软件工程可在新系统开发中选取这些软件制品作为复用。
3)构件复用为软件质量、开发者生产率、以及整个系统成本带来了固有的收益,然而,在复用过程模型被广泛地用于软件产业前,必须克服很多障碍.4)对可复用构件的分析、设计技术采用和在良好的软件工程实践中使用的相同原则和概念。
可复用构件应该在一个环境中设计,该环境为每个应用领域建立标准数据结构、接口协议和程序体系结构。
2、可复用的软件制品软件复用不仅仅涉及源代码,但是,还涉及多少东西呢?CaperJones定义了可作为复用候选的十种软件制品:项目计划。
软件项目计划的基本结构和许多内容(例如,SQA 计划)均是可以跨项目复用的。
这样减少了用于制定计划的时间,也减低了和建立进度表、风险分析和其他特征相关的不确定性.成本估计.因为经常不同项目中含有类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。
体系结构。
即使当考虑不同的应用领域时,也很少有截然不同的程序和数据体系结构.因此,有可能创建一组类属的体系结构模板(例如,事务处理体系结构),并将那些模板作为可复用的设计框架。
软件工程中的软件复用技术分析

软件工程中的软件复用技术分析在当今快速发展的信息技术领域,软件工程面临着越来越高的要求和挑战。
为了提高软件开发的效率、质量和降低成本,软件复用技术逐渐成为软件工程中的重要手段。
软件复用,简单来说,就是在软件开发过程中,重复使用已有的软件资源,包括代码、设计、文档等。
这就好比在建造房屋时,不是每次都从制作砖头开始,而是可以直接使用已经生产好的砖头,从而节省时间和精力。
软件复用技术具有诸多显著的优势。
首先,它能够显著提高软件开发的效率。
通过复用已有的成熟组件和模块,开发人员无需从头开始构建每一个功能,从而大大缩短了开发周期。
想象一下,如果每次开发一个新的应用程序都要重新编写登录模块、用户管理模块等常见功能,那将是多么耗时费力的事情。
而有了软件复用,这些常见的功能模块可以直接拿来使用,或者在其基础上进行少量的修改和定制,就能满足新的需求。
其次,软件复用有助于提高软件的质量。
被复用的软件组件往往经过了多次的测试和优化,其稳定性和可靠性相对较高。
使用这些经过验证的组件,能够降低新开发软件中出现错误和缺陷的风险。
再者,软件复用还能降低开发成本。
由于减少了重复开发的工作量,相应的人力、时间和资源投入也会降低,从而使软件开发的成本得到有效控制。
在软件工程中,常见的软件复用形式多种多样。
代码复用是最基本的一种形式,开发人员可以直接复用他人编写的函数、类或者模块。
设计复用则是在更高层次上的复用,例如复用软件的架构设计、算法设计等。
还有一种是组件复用,这就像是在搭积木,将各种预定义好的组件组合在一起,构建出复杂的软件系统。
然而,要实现有效的软件复用,并非一帆风顺,也面临着一些挑战和问题。
首先是复用资源的查找和评估问题。
在庞大的软件资源库中,如何快速准确地找到符合需求的复用资源,并且评估其质量和适用性,是一个难题。
这需要建立有效的检索机制和评估标准。
其次,复用资源的适应性和兼容性也是需要考虑的。
不同的软件项目可能有不同的需求和环境,复用的资源可能需要进行一定的修改和调整才能适应新的情况。
《软件复用技术》课件

开源社区的参与和贡献
开源软件和开源社区兴起,已经 成为推动软件复用和创新的一股 重要力量。
云端和容器化的复用能力
云端、容器化、微服务化已经成 为互联网时代的重要趋势,它们 提供了更加灵活和扩展的软件架 构和复用方式,可以更好地支持 软件模块化和集成。
总结
1
软件复用技术的意义和价值
软件复用技术是提高软件开发效率和质
《软件复用技术》PPT课 件
本课程将介绍软件复用技术的定义、好处和实现方法,以及如何应用最佳实 践来提高软件复用的效率和质量。我们还将展望软件复用未来的发展趋势和 机遇。
什么是软件复用技术?
定义软件复用
所谓软件复用,就是在软件开发 过程中将已有的程序代码、组件、 模板等成熟的技术成果进行封装 和归档,方便日后重复利用。
复用的好处和优势
软件复用可以提高软件开发效率, 减少重复工作,显著降低软件开 发成本和风险。同时,复用也可 以带来更高的软件质量和维护性。
何时应该使用软件复用技 术?
当你需要完成一个新的软件项目 时,如果该项目的某个或某些功 能已经被构建过,而且这些构建 过的模块可以在新项目中被重复 利用,就可以考虑使用软件复用 技术。
实现软件复用的方法和工具
2
量的关键技术之一,具有重要的战略和 经济价值。
软件复用可以通过多种方式和工具来实
现,需要根据具体的项目情况和软件特
点进行选择和优化。
3
软件复用未来的趋势和发展方向
软件复用将继续以更加智能、模块化和 云化的方式演进,为软件开发和创新提 供更加便捷和高效的支持。
2
持续集成和自动化测试
通过引入持续集成和自动化测试工具,来提高软件质量和开发效率,减少重复工 作和人力成本。
第14讲软件复用

技术方面的问题
采用软件复用可以降低开发成本,但如果其 原件存在的某些问题代码,可能会导致其他 采用该代码的系统具有相同的问题代码;这 种情况称之为继承性缺陷。 因此当原件的问题代码被修改后,往往无法 自动更新实用软件中相应的代码;最终导致 实用软件中的问题代码依旧存在。这种非但 没有降低开发成本,反而增加维护消耗的复 用技术显然是失败的。
领域工程 基于构件的开发 面向对象与软件复用
软件复用的基本概念
软件复用是指在软件开发过程中重复使
用相同或相似软件元素的过程。
软件复用是在软件开发中避免重复劳动 的解决方案,它使得应用系统的开发不 再采用一切从零开始的模式,而是以已 有的工作模式为基础,充分利用过去应 用系统开发中积累的知识和经验,从而 将开发的重点集中于应用的特有构成成 分。
面向对象与软件复用
OO方法对软件复用的支持 复用技术对OO方法的支持
小结
软件复用是在软件开发中避免重复劳动的解决 方案。 通过软件复用,可以提高软件开发的效率和质 量。软件复用研究被视为解决软件危机,提高 软件生产效率和质量的现实可行的途径。
软件复用面临的问题
⑴ ⑵ ⑶ ⑷ 管理问题。没有相应的鼓励机制等。 复用的障碍。 技术方面的问题 法律问题
复用的障碍
自负;太多的开发人员认为不是他们亲自编写的 程序不可能是好程序; 检索问题。如何从庞大的复用件库中所需要的复 用件; 几乎没有相应的复用培训; 复用代价昂贵。有人估计,仅使一个构件可复用, 就将至少增加60%的成本; 虽然存在软件 经济利益方面。一些开发人员尽力避免编写那些 太通用的例程,唯恐使自己失业。
软件复用技术

软件复用技术及其发展一软件复用技术及其分类软件复用是在软件开发中避免重复劳动的解决方案,其出发点是应用系统的开发不再采用一切“从零开始”的模式,而是以已有的工作为基础,充分利用过去应用系统开发中积累的知识和经验,消除了包括分析、编码、测试等在内的许多重复劳动,提高了软件开发的效率;同时复用高质量的已开发成果,避免了重新开发可能引入的错误,提高了软件的质量。
目前及近期的未来最有可能产生显著效益的复用是对软件生命周期中一些主要开发阶段的软件制品的复用,按抽象程度的高低,可以划分为如下的复用级别:(1)代码的复用。
包括目标代码和源代码的复用,依靠含有大量可复用构件的构件库来实现大规模的源程序复用,其中目标代码的复用级别最低,历史也最久。
(2)设计的复用。
设计结果比源程序的抽象级别更高,因此它的复用受实现环境的影响较少,从而使可复用构件被复用的机会更多,并且所需的修改更少。
(3)分析的复用。
这是比设计结果更高级别的复用,可复用的分析构件是针对问题域的某些事物或某些问题的抽象程度更高的解法,受设计技术及实现条件的影响很少,所以可复用的机会更大。
(4)测试信息的复用。
即测试用例和测试过程信息的复用。
测试用例的复用是把一个软件的测试用例在新的软件测试中使用或在软件修改后在新一轮测试中使用。
测试过程信息的复用是在测试过程中通过软件工具自动地记录测试的过程信息,包括测试的操作输入参数、测试用例及运行环境等一切信息。
此种级别的复用从信息的形态看大体与处于与程序代码相当的级别。
二软件复用技术的发展经历了结构化程序设计、面向对象技术、软件构件技术的发展,软件复用已经成为加速软件工业化早日实现的重要力量。
(1)面向对象技术及其对软件复用的支持面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送多态性等概念来构造系统的软件开发方法。
面向对象方法之所以会成为今天的主流技术,其很重要的一个原因就在于模型对问题域的这种直接的映射。
软件工程中的软件复用

软件工程中的软件复用软件复用是指在软件开发过程中,重复使用已有的软件组件、模块、库或其他可重用的资源来构建新的软件系统。
它是提高软件开发效率和质量的重要手段之一。
本文将从软件复用的定义、优势、实施方法以及存在的挑战等方面进行讨论。
一、软件复用的定义软件复用是指在软件开发过程中,通过合理组合已有的软件组件、模块、库等可重用资源,使得新的软件系统能够更高效、更快速地开发出来。
软件复用旨在降低开发成本、加快开发进度、提高软件质量和可靠性。
它可以通过不同的方式实现,如通过代码重用、组件复用、模块复用等。
二、软件复用的优势1. 提高开发效率:软件复用可以避免从头开始编写相同或相似功能的代码,减少了开发时间和工作量,提高了开发效率。
2. 提高软件质量:通过复用已经经过测试和验证的软件组件,可以减少错误和缺陷的可能性,提高软件的质量和可靠性。
3. 降低成本:软件复用避免了重复开发相同功能的成本,节约了开发资源和时间,并且可以通过合理的复用策略降低软件维护的成本。
4. 加快上市时间:软件复用可以减少开发周期,使得软件能够更快速地上市,占领市场先机,增加竞争力。
三、软件复用的实施方法1. 代码重用:通过将已经编写好的代码模块作为库文件或软件包,供其他项目重复使用,实现代码的复用。
2. 组件复用:将可独立使用的业务组件打包成可重用的组件库,由多个项目共享使用,避免重复研发相同的组件。
3. 模块复用:将软件系统中的功能模块抽象出来,形成独立的模块,供多个系统复用,实现模块级的复用。
四、软件复用存在的挑战1. 适用性问题:不是所有的软件都适合进行复用,有些软件需求特殊或定制化程度高,不适合直接进行复用。
2. 维护问题:复用的软件组件可能需要进行维护和升级,需要投入额外的人力和时间进行支持和维护。
3. 版本管理问题:多个项目同时复用同一个软件组件时,版本管理可能成为一个挑战,需要具备良好的版本管理机制。
4. 知识和沟通问题:开发团队需要具备相应的知识和技能才能进行有效的复用,同时需要加强团队间的沟通和协作。
软件的复用技术及开发方法

软件的复用技术及开发方法软件的复用技术及开发方法2.1软件的复用技术软件复用是指在开发新的软件系统时,对已有的软件或软件模块重新使用,该软件可以是己经存在的软件,也可以是专门的可复用组件〔8〕。
软件可复用性的高低影响到生产效率的高低、软件质量的好坏和系统可维护性的好坏。
在软件工程中面临的问题不是缺乏复用,而是缺乏广泛的、系统的复用。
软件复用包括构造可复用软件和用可复用软件进行构造。
构造可复用软件,一方面可以从现存的软件系统中抽取,另一方面通过改写或重新设计来实施。
Jones将软件复用的对象分为4种数据复用、体系结构复用、设计复用和程序复用。
这样,软件复用可在实现层、设计层和体系结构层三个层次上实现。
实现层软件复用是指对己有的程序代码进行复用,它包括源代码组件形式。
设计层软件复用是指对已有的软件系统的设计信息进行复用。
而体系结构层软件复用是最有效的软件复用,它主要是软件体系结构形式化的复用,即将软件的框架组织,全局结构设计作为复用对象。
可复用的软件体系结构则通常是显式地复用软件体系结构,并通过集成其他软件体系结构,建立新的更高层次的体系结构。
面向对象的软件复用机制主要有两种:继承和对象组合。
(1)继承继承是指子类可以从父类中直接获得某些特征和行为的能力,继承可作为代码复用和概念复用的手段。
作为代码复用的手段是指:子类通过继承父类的行为,一些代码就不必重写;作为概念复用的手段是指:子类共享父类的方法定义。
作为代码复用和概念复用手段的继承机制,在面向对象技术中,通过面向对象技术的一些主要机制来实现对“支持可维护性的可复用性”的支持。
这些面向对象的主要机制是:数据的抽象化、封装和多态性。
通过运用这些机制,继承可以在高层次上提供(相对于传统的低层次复用)可复用性:数据的抽象化和继承关系使得概念或定义可以复用;多态性使得实现和应用可以复用;而抽象化和封装可以保持和促进系统的可维护性。
这样一来,复用的焦点不再集中在函数和算法等具体实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。
复用技术在软件工程领域中的应用

汇报人:文小库 2024-01-07
目录
• 复用技术概述 • 复用技术的分类 • 复用技术在软件工程中的应用
场景 • 复用技术面临的挑战与解决方
案 • 复用技术的未来展望 • 案例分析
01
复用技术概述
复用技术的定义
复用技术的定义
复用技术是一种在软件开发过程中, 将已有的代码、组件、模块等资源进 行重复利用,以提高软件的开发效率 和质量的技术。
详细描述
基于组件的复用技术使得软件应用程序的不同部分可以像乐高积木一样组合在一 起。这些组件具有明确定义的接口,使得它们可以在不同的应用程序中重复使用 。这种复用技术提高了软件开发的效率和可维护性。
基于框架的复用
总结词
基于框架的复用技术是一种将软件应用程序的结构和框架作 为可重用的资源,以减少开发工作量的方法。
区块链技术在软件复用中的潜在价值
版权保护
区块链技术可以用于记录软件的 版权信息和授权情况,保护开发 者的权益。
透明度与可信度
区块链的分布式特性可以提高软 件复用的透明度和可信度,降低 信息不对称的风险。
去中心化协作
区块链技术可以实现去中心化的 软件协作和复用,降低对中心化 机构的依赖。
06
案例分析
模块化开发
组件化开发
将软件组件封装为可重用的单元,通 过组件的组合和配置实现软件功能, 可以提高开发效率和软件的可扩展性 。
将软件系统划分为多个模块,每个模 块实现特定的功能,可以提高开发效 率和可维护性。
软件维护的复用
1 2
维护工具
使用自动化工具进行软件维护,如代码重构、代 码审查、测试工具等,可以提高维护效率和软件 质量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件复用技术-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII论使用复用设计1、引言复用是活动,而不是对象。
在创建软件相关的系统的语境中,复用仅仅是非常简单的任何过程,该过程通过复用来自以前开发工作的某些东西来生产(或帮助生产)一个系统。
那么,唯一的问题是:复用什么、什么是导致成功复用的过程。
在软件工程的范围内,复用既是旧概念,也是新概念。
程序员从最早的计算时代已开始复用概念、对象、论据、抽象和过程,但是我们复用的途径是特定的。
本文对软件复用的讨论,将从以下四个方面进行:1)软件工程师可以获得一系列可复用的软件制品,这些包括软件的技术表示(例如,规约、体系结构模型、设计和代码)、文档、测试数据,甚至包括过程相关的任务(如,检查技术)。
2)复用过程包括两个并发的子过程:领域工程和软件工程。
领域工程的目的是在特定应用领域中标识、构造、分类和传播一组软件制品。
然后,软件工程可在新系统开发中选取这些软件制品作为复用。
3)构件复用为软件质量、开发者生产率、以及整个系统成本带来了固有的收益,然而,在复用过程模型被广泛地用于软件产业前,必须克服很多障碍。
4)对可复用构件的分析、设计技术采用和在良好的软件工程实践中使用的相同原则和概念。
可复用构件应该在一个环境中设计,该环境为每个应用领域建立标准数据结构、接口协议和程序体系结构。
2、可复用的软件制品软件复用不仅仅涉及源代码,但是,还涉及多少东西呢?CaperJones定义了可作为复用候选的十种软件制品:项目计划。
软件项目计划的基本结构和许多内容(例如,SQA 计划)均是可以跨项目复用的。
这样减少了用于制定计划的时间,也减低了和建立进度表、风险分析和其他特征相关的不确定性。
成本估计。
因为经常不同项目中含有类似的功能,所以有可能在极少修改或不修改的情况下,复用对该功能的成本估计。
体系结构。
即使当考虑不同的应用领域时,也很少有截然不同的程序和数据体系结构。
因此,有可能创建一组类属的体系结构模板(例如,事务处理体系结构),并将那些模板作为可复用的设计框架。
需求模型和规约。
类和对象的模型和规约是明显的复用的候选者,此外,用传统软件工程方法开发的分析模型(例如,数据流图)也是可复用的。
设计。
用传统方法开发的体系结构、数据、接口和过程化设计是复用的候选者,更常见的是,系统和对象设计是可复用的。
源代码。
验证过的程序构件(用兼容的程序设计语言书写的)是复用的候选者。
用户和技术文档。
即使特定的应用是不同的,也经常有可能复用用户和技术文档的大部分。
用户界面。
可能是最广泛被复用的软件制品,GUI 软件经常被复用。
因为它可占到一个应用的60%的代码量,因此,复用的效果非常显著。
数据。
在大多数经常被复用的软件制品中,数据包括:内部表、列表和记录结构,以及文件和完整的数据库。
测试用例。
一旦设计或代码构件将被复用,相关的测试用例应该“附属于”它们。
应该注意,复用可以扩展到上面所讨论的可交付的软件制品之外,它也包含了软件工程过程中的元素。
特定的分析建模方法、检查技术、测试用例设计技术、质量保证过程、以及很多其他软件工程实践可以被“复用”,例如,如果某软件项目组有效地应用净室软件工程方法,该方法可能适用于另一个项目。
为了作出决定,有必要定义一组描述功能,它们使得潜在的净室用户能够对其应用作出适当的决策。
3、复用过程复用过程包括两个并发的子过程:领域工程和软件工程。
3.1、领域工程领域工程的目的是标识、构造、分类和传播一组软件制品,它们对某特定应用领域中对现存的和未来的软件系统具有很好适用性。
其整体目标是建立相应的机制,以使得软件工程师在工作于新的或现存的系统时可以分享这些软件制品——复用它们。
领域工程包括三个主要的活动——分析、构造和传播。
在第20 章中已给出领域分析的概述,然而,本节中将再讨论这个话题。
领域构造和传播将在本章以后几节中讨论。
有人争辩说“复用将消失,不是被消除,而是被集成”进软件工程实践之中,随着复用被更多的强调,人们相信在下个十年领域工程将变得和软件工程一样重要。
3.1.1、领域分析过程在面向对象软件工程范围内领域分析的方法,过程中的步骤定义如下:1).定义将被研究的领域。
2).分类从领域中抽出的物项。
3).收集领域中有代表性的应用样本。
4).分析样本中的每个应用。
5).开发对象的分析模型。
必须注意,领域分析适用于任意软件工程范型,并且可以用于传统的以及面向对象的软件开发。
Prieto-Diaz扩展了上面给出的领域分析的第二个步骤,建议了一个8 步骤的标识和分类可复用软件制品的方法:1).选择特定的功能/对象。
2).抽象功能/对象。
3).定义分类法。
4).标识公共特征。
5).标识特定的关系。
6).抽象关系。
7).导出功能模型。
8).定义领域语言。
领域语言使得在领域中进行应用的规约及构造成为可能。
虽然上面的步骤提供了一个有用的领域分析模型,但是它没有提供帮助决定哪些软件制品是复用候选的有用的指南。
Hutchinson 和Hindley提出了下面一组实际的问题,它们可以用作标识可复用软件构件的指南:*构件功能对未来的实现工作是需要的吗?*在领域中构件功能的公共性怎样?*在领域中存在构件功能的重复吗?*构件是否依赖于硬件?*在不同实现之间硬件是否保持不变?*硬件细节可被移动到另一个构件吗?*设计为下面的实现进行过足够的优化吗?*我们能够将一个不可复用的构件参数化以使其变成可复用的吗?*构件是否可以仅仅经过少许修改就能够在很多实现中复用吗?*通过修改进行复用是可行的吗?*某不可复用的构件能够通过被分解以产生一组可复用构件吗?*针对复用的构件分解是有效的吗?关于领域分析的深入讨论不在本书范围之内,更多的信息可见。
3.1.2、结构建模和结构点当使用领域分析时,分析员寻找在某领域中应用间的重复模式。
结构化建模(Structuralmodeling)是一种基于模式的领域工程方法,应用该方法的前提假设是:每个应用领域有重复的模式(功能的、数据的和行为的),它们具有可复用的潜在可能。
Pollak 和Rissman描述结构建模如下:结构模型由少量的用于表明清晰的交互模式的结构元素组成。
使用结构模型的系统的体系结构通过多个由这些模型元素组成的东西来刻划,这样,在系统的体系结构单元间的复杂交互可以用在这些少量元素间的简单交互模式来描述。
每个应用领域可用一个结构模型来刻划(例如,飞行器电子设备在细节上差异很大,但是在该领域的所有现代软件具有相同的结构模型),因此,结构模型是一种体系结构制品,它可以也应该在领域内所有应用中被复用。
McMahon描述结构点(structure Point)为:“在结构模型中的一个独特构成物”,结构点有三个显著的特征:1).一个结构点是一个抽象,它应该有有限数量的实例。
用面向对象的行话来陈述,类层次的规模应是小的。
此外,该抽象应该在领域中所有应用中不断重现,否则,用于验证、文档化和传播结构点所需的努力不可能是成本合算的。
2).管理结构点的使用的规则应该是容易理解的。
此外,结构点的接口应该相当简单。
3).结构点应该通过隐藏所有包含在结构点内部的复杂性而实现信息隐蔽,这会减少整个系统可被感知的复杂性。
作为把结构点当作系统的体系结构模式的一个例子,考虑警报系统的软件领域,该领域可能包含如SafeHome这样简单的系统,或如工业过程警报系统这样复杂的系统,然而,在每种情形,均可以遇到一组可以预测的结构模式:*界面,使用户能够和系统交互。
*范围设置机制,允许用户设置将被测度的参数的范围。
*传感器管理机制,和所有的监控传感器通讯。
*反应机制,对传感器管理系统提供的输入作出反应。
*控制机制,使用户能够可以控制监控执行的方式。
这些结构点中的每一个被集成到一个领域体系结构中。
定义跨越一组不同的应用领域的类属的结构点是可能的:*应用前端。
GUI,包括所有菜单、面板、输入和命令编辑设施。
*数据库。
所有和应用领域相关的对象的仓库。
*计算引擎。
操作数据的数值和非数值模型。
*报告设施。
产生所有种类的输出的功能。
*应用编辑器。
根据用户特定需要定制应用的机制。
结构点已被建议作为在软件成本估计中代码行和功能点的替代物。
4、构件复用关于创建可复用的软件并没有任何神奇之处。
抽象、隐蔽、功能独立性、求精、以及结构化程序设计等设计概念,连同面向对象方法、测试、SQA、以及正确性验证方法——所有均对可复用软件构件的创建有贡献。
本节中,我们将不重复讨论这些话题,而是考虑特定于复用的问题,它们是对完整的软件工程实践的补充。
4.1、为了复用的分析和设计数据、功能和行为模型(用一系列不同符号表示)可以被创建以描述特定应用必须完成的任务,书面的规约被用于描述这些模型并生成完整的需求描述。
理想地,分析分析模型以确定模型中的那些指向现存的可复用软件制品的元素。
问题是以能够导致“规约匹配”的形式从需求模型中抽取信息。
Bellinzoni 及其同事描述了一种针对面向对象系统的方法:构件被在不同的抽象层次定义和存储为规约、设计和实现类——每个类是来自以前应用的某产品的工程化描述。
规约知识——开发知识——被以复用建议(reuse-suggestion)类的形式存储,它们包括对以构件的描述为基础检索可复用构件及检索后组装和剪裁构件的指导。
使用自动化工具浏览构件库,以试图匹配当前规约中所标记的需求和那些为现存可复用构件(类)描述的需求。
领域特征和关键词被用于发现潜在的可复用构件。
如果规约匹配生成符合当前应用需要的构件,设计者可从可复用构件库中提取这些构件并将它们用于新系统的设计中。
如果没能找到设计构件,软件工程师必须应用传统的或面向对象的设计方法去创建它们。
正是在这点——当设计者开始创建新的构件时——应该考虑为了复用的设计(DFR)。
我们已经提到过,为了复用的设计需要软件工程师应用已有的设计概念和原则,但是,也必须考虑应用领域的特征。
Binder建议了作为为了复用的设计的基础而应该考虑的一系列关键问题:标准数据。
应该研究应用领域,并标识出标准的全局数据结构(例如,文件结构或完整的数据库),那么所有设计构件可以使用这些标准数据结构来刻划。
标准接口协议。
应该建立三个层次的接口协议:模块内接口的本质、外部的技术(非人)接口的设计、以及人机界面。
程序模板。
结构模型可以作为新程序的体系结构设计的模板。
一旦已经建立了标准数据、接口和程序模板,则设计者有了一个可在其中创建设计的框架。
符合这个框架的新的构件对以后的复用有更高的概率。
4.2、构造方法和设计一样,可复用软件制品的构造依赖于本书中其他地方已经讨论过的软件工程方法,构造可以使用传统的第三代语言、第四代语言和代码生成器、可视化程序设计技术、或更高级的工具来完成。