软件复用技术
软件工程中的软件复用技术分析

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

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

• 指在两次或多次不同的软件开发过程中重 复使用相同或相似软件元素的过程。 • 软件元素:程序代码、测试用例、 设计文档、设计过程、 需求分析文档、领域知识等 ——称为“软件部件”或“构件” • “新一代软件危机”: 近年来实际存在于软件行业中的普遍现象, 即“大量的软件项目,一切从头开始”, 致使软件开发效率低下和质量问题严重!
• 实施软件复用的目的:使软件开发工作进行 得“更快、更好、更省”
更快——市场竞争中,软件开发能及时满足市场要求
更好——所开发出的软件在未来的运行中,少出差错 更省——在开发和维护软件期间节省成本
• 实际效益:
日美的统计资料:软件复用率最高达90%; 产品上市时间缩至原来的1/2—1/4 产品缺陷密度缩至原来的50%—10% 产品维护费用缩至原来的50%—10% 产品开发总费用缩至原来的15%—75% 75%是针对长期项目,含开发可复用资产及支持复用 的负担
软件复用技术的细节概念
构件——构成软件系统的基本组成单位
构件应当是内聚的, 且具有相当稳定公开的接口 一段代码、一份文档、一个软件模型都 可以成为构件
面向对象技术中的封装、多晶型等,可 简化构件的开发工作 面向对象软件中的类就是可复用的构件
软件复用技术的细节概念
•构件系统门面
软件复用技术的细节概念
热衷于实施复用技术,形成整个行业的互助、
协作、信任、共享————互惠互利
软件复用技术的细节概念
• 软件复用需要改变软件开发过程
软件复用技术的细节概念
•领域工程和应用系统工程
一个强调重用的过程模型
领 域 工 程
领域 分析 设计软 件结构 开发可重用 的软件成分 中心库 可重用软件 Байду номын сангаас分/构件
软件复用技术

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

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

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

浅析软件复用技术摘要:可复用的软件技术,已经成为大多数程序员不断使用的技术,也出现了专门以提供构件服务的供应商,它已经不再是一种单一的技术,而成为软件产业中的重要生产力、推动力,它不仅减轻了软件开发的重负,也开辟了软件产业链中的新方向。
关键词:软件复用;研究;发展本文简单介绍了软件复用研究的发展与软件复用的主要技术,进而研究了软件复用技术发展的新趋势,特别对软件复用技术研究的最新特点—软插件与软总线模型及其在分布环境中的应用前景进行讨论.1、软件复用的定义我们以前在提起软件复用时,往往把其简单的看作是一种节约企业软件作业的工作量的一种手段,而实际上,软件复用的展开还是提升软件质量的最有效的方式:一个软件模块在得到多次复用之后,其可靠性会不断的提高,软件的出错概率也会越来越低,当然相应的质量风险会越来越小,你的软件也就更加具有竞争力。
而规模化的成本效益和质量也正是产品化软件的最核心的价值所在。
软件构件是软件系统内可标识的、符合某种标准要求的构成成分,类似于传统工业中的零部件。
以上为软件复用过程的直观示例图。
复用成分的管理完成对复用成分库的组织,以期能够有效地组织和扩充软件复用成分.复用成分的实施利用是获取和管理的目的.其过程包括根据要求选择抽象的可复用成分,并对其进行适应性修改,以将其集成到现行开发的软件系统中去。
2、软件复用技术的历史与现状软件复用的历史,大致可划分为萌芽期、发展期和初步实用期3个历史时期。
代末到代末,软件复用技术迅速发展成为软件工程的一个重要的应用领域但由于注意力放在如何收集、提炼和改造软件系统构件上,而忽略了其他方面的问题,以致进展缓慢. 代起,人们不仅已认识到软件复用问题涉及多方面的知识,如软件工程知识、应用领域知识、人类工程学知识和人工智能知识,而且还认识到在软件复用实施中管理因素的重要性这一时期,软件复用在子程序库、报告生成器、编译器等方面都取得了长足进展.同时,人们已对何为软件复用有了一个非形式化、不够完整的概念;对复用信息的提炼、组织和存储进行了初步探讨;已经理解了软件的组装技术及基于对象的设计技术等,但上述理解仍是非形式化的,人们仍不能以任何系统化途径实现复用.这一时期被称为发展期.代后期至今,软件复用领域取得一些实用成果,软件复用进入初步实用期.各厂商开发了许多支持复用的软件系统,如Toshiba的软件工厂, Draco, Genesis系统等.从实现角度看, 代以前,软件复用主要以采用非面向对象技术来实现,复用的效果则主要以软件生产率和软件质量为标准来加以衡量.下图为软件复用技术的现状。
软件复用技术研究及其在软件工程中的应用

软件复用技术研究及其在软件工程中的应用一、引言随着信息技术的不断发展,软件复用技术在软件工程中的应用日益广泛。
软件复用技术是指通过封装、继承、模板等手段,将现有的软件组件进行重复利用的技术。
软件复用技术在软件工程中的应用能够提高软件开发效率、降低软件开发成本、提高软件质量、简化软件维护等方面具有显著的优势。
本文将就软件复用技术的研究及其在软件工程中的应用进行深入探讨。
二、软件复用技术研究(一)复用分类1.功能复用:将软件中同一功能模块的不同实现方法加以抽象,以实现不同应用场景下的复用。
2.数据复用:将软件中常用的数据类型进行抽象封装,以提高软件开发效率和提高数据的可复用性。
3.构件复用:将软件中固定的结构、算法封装成独立的组件,以便不同的软件系统可以重复利用。
(二)复用方法1.基于继承的复用:利用面向对象编程语言的继承机制,通过扩展父类来达到复用的目的。
2.基于接口的复用:利用面向对象编程语言的接口机制,通过实现接口来达到复用的目的。
3.基于组件的复用:将软件封装成独立的组件,以便其他软件系统可以重复利用。
(三)复用技术1.模板技术:利用模板技术可以将通用的代码压缩为一处,提高代码复用率。
2.泛型技术:利用泛型可以实现对不同类型数据的通用处理,从而提高软件开发效率。
3.元编程技术:元编程技术能够在编译时预处理代码,从而提高软件的效率和可维护性。
三、复用在软件工程中的应用(一)提高软件开发效率由于很多需要实现的功能是相似的,如果每个程序员都要从头开始设计、编写和测试代码,软件开发效率就会受到很大的影响。
而软件复用技术可以将一些常用的代码模块打包成库,多次利用这些库减少了程序员再次编写相同的代码的时间。
因此,软件复用技术可以显著地提高软件开发效率。
(二)降低软件开发成本软件复用技术可以降低软件开发成本。
现代软件通常需要大量的测试、改进和验证,这些成本会直接影响软件开发的总成本。
但是,使用软件复用技术可以减少排除故障所需的时间和成本。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
论使用复用设计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、构造方法和设计一样,可复用软件制品的构造依赖于本书中其他地方已经讨论过的软件工程方法,构造可以使用传统的第三代语言、第四代语言和代码生成器、可视化程序设计技术、或更高级的工具来完成。
更高级的构造技术的一个有代表性例子是Netron公司开发Frame技术Netron方法定义了一组自适应的、称作Frame 的类属构件。