




已阅读5页,还剩84页未读, 继续免费阅读
(计算机应用技术专业论文)面向软件生产线的复用资产开发研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 一 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名: 虚赵盘车 日期:沙j 口年r 月啪 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:趱呼导师签名:孥鱼丝 日期:加io 年f 月冲日 i 厶 j 摘 摘 软件复用是指重复利用现有系统中具有相同或相近的软件元素来开发新系统 的过程,它极大的提高了软件开发效率和软件质量。作为解决软件危机的有效途 径,软件复用技术迅速发展,可复用软件资产的粒度、范围越来越大。软件生产 线技术集中体现了对软件体系结构( 以及其他相关复用资产) 的显示的、有计划 的复用,是迄今为止实现了最大粒度软件资产复用的开发方式。核心资产开发是 软件生产线的一个重要组成部分,包括开发高复用性的构件资产以及像领域公共 体系结构这种大粒度的构架资产。其中还有很多问题值得研究,比如如何对领域 中的可复用资源进行识别和分析、如何划分不同粒度级别的复用资源以提高复用 效率并降低复杂性、如何对不同级别的可复用资源采取相应修复方式等。 基于这些问题,本文从生产线的核心资产库的度量出发,研究分析了生产线 的复用过程,提出了一个比较完善的基于核心资产库的生产线复用分层体系,并 针对资产库中两种粒度级别的核心资产的开发方式进行了研究。具体包括: 1 ) 基于对提高生产线的复用效率和降低复杂性的考虑,本文将核心资产库划 分为框架资产和构件资产两个层次,并提出了以这个划分为基础的生产线复用体 系。 2 ) 基于对几种可复用资产的开发形式的分析和比较,说明了开发生产线所需的 两种级别的资产方法的特殊性需求。 3 ) 对生产线复用体系所需的框架资产,本文提出了一种生产线中基于构件的 框架( c o m p o n e n t b 嬲e ds o f t 、) l r a r ef r 锄e w o r ko fp r o d u c t “n e ,c b f p ) 重构元模型, 定义了框架资产的开发标准。 4 ) 对生产线复用体系所需的构件资产,本文提出一种基于生产线的构件模型 ( p r o d u c t 1 i i 坨b a s e dc o i n p o n e n tm o d e l ,p b c m ) ,给出了对构件资产的封装方法。 5 ) 结合实际,将开发模型应用到家电嵌入系统领域生产线的资产开发中。 关键词:软件复用,软件生产线,核心资产,框架资产,构件资产 - j a b s t r a c t a bs t r a c t s o j f t w a r er e u s ei st h ep r o c e s so fu s i n gt l l es a m eo rs i m i l a rs o r w a r ee 1 锄e n t si i l e x i s t i n gs y s t e m st od e v e l o par l e ws y s t e m ,i tg r e a t l yi m p r o v em ee 衔c i e n c yo fs o m r a r e d e v e l o p m e n ta n dm eq u a l i t yo fs o 胁a r e a sa ne 能c t i v ew a yt or c s o l v en l es o f t w a r e c r i s i s ,s o 胁a r er e u s et e c h n o l o g yi sd e v e l o p i n gq u i d d y t 1 1 es i z ea 1 1 ds c o p eo fs o f h ) i r a r e r e u s e 硒s c t sa r ea l s og r o w i n g s o 鲰a r ep r o d l l c tl i i l et e d m o l o g yc o n c e i l 灯a t e so nt 1 1 e a p p a r e n t l y 锄dd e s i g n e dr e u s eo fm es o f t w a r ea r c l l i t e c t u r ea i l d0 t h e rr e u s e 嬲s e t s , a 出e v em a x i m u m 黟锄u l a r i t ) ,r e u s eo fs o f 蛔a r ca s s e t sb yf 缸c o r ea s s e t sd e v e l o p m e n t i st 1 1 ei r n p o r t a mc o m p o n e n to fs o f h v a r ep r o d u c t1 i i l e ,i 1 1 c l u d e sd e v e l o p i n g l el l i 曲 r e u s a b i l i 够o fc o m p o n e n t 嬲s e t s 锄d1 a r g e 黟a i 】l u l 撕t ya s s e t sl i k ed o m a i na r c h i t e c t u r e ,1 1 l e 犯a r es t i l lm a n yi s s u e sw o r 吐ls t u d y i i l g ,s u c ha sh o wt oi d e i l t i 矽a i l d 锄a l y s i s 廿l e r e u s a b l er e s o u r c e s ,h o wt 0d i 们d et l l ed i a 打e n tl e v e l so fg r a n u l 撕t yt 0e i l l l a i l c em i e r e u s ee 伍c i e i l c ya 1 1 dr e d u c em ec 0 i n p l e x i t y ,觚dh o wt ot a l 【et h e 印p r o p r i a t er 印a i r m e m o d st ot l l ed i f 蚤玎e n tl e v e l b 够eo n 廿l em e 弱u r eo fm ec o r e 懿s e t sd e v e l o p m e n t ,t m st 1 1 e s i s 锄a l y s i st h er e u s e p r 0 c e 豁o fs o 胁a r ep r o d u c tl i l l e ,锄dt l l e l lp r o p o s e sa1 a y e r e dr e u s ea r c t l i t e c t l l r ei n p r o d u c tl i l l eb a s e do nt 1 1 ec o r e 勰s e t sb 弱e ,觚ds t u d i 铭m ed e v e l o p m 饥tm o d e so ft l l e d i 撩嬲l t 鲫n u l 撕t ) rl e v e l s ni n c l u d 鹳: 1 ) i l lo r d e rt 0i m p r 0 v et l l e 砌l s ee 伍c i 吼c y 锄dr e d u c et l l ec o r n p l e x i t ) ,o fs o f 啊a r e p r o d u c tl i l l e ,l i sm e s i sd i v i d 锱l ec o r e 鹤s e t sb 弱ei 1 1 t 0t w ol e v e l l a ”墨t l l e 丘a m e w o r k 硒s e t s 锄dc o m p o n e n t 弱s e t s ,觚dp r o p o s 骼as o 小a r ep r o d u c tl i i l er e u s ea r c l l i t e 咖r e b a s e do n 廿l ed i 访s i o n 2 ) b a s e do n l e 锄a l y s i s 锄dc o m p 撕s o no fs e v e r a ld e v e l o p m e n tm o d e so fr e u s a b l e 鹤s e t s ,w es h o wm es p e c i a ln e e d so ft l l et w ol e v e l s 粥s e t sd e v e l o p m 朗ti 1 1s 0 胁a r e p r o d u c tl i n e 3 ) p r o p o s 鹤m ec b f p ( c o m p o n e n t - b 舔e ds o 脚a r ef r 锄e w o r ko fp r o d u c t l i n e ) m o d e l ,锄dd e 缸e st l l ed e v e l o p i l l 铋ts t a l l d a r d so fm 吼e w o r k 嬲s e t s 4 ) p r o p o s 韶m ep b c m ( p r o d u c t 1 i n eb a s e dc o m p o n 饥tm o d e l ) a r l dp r o p o s e st 1 1 e e n c a p s u l a t i o nm e t l l o do fc o m p o n e n t 鹤s e t i i ,0一 目录 目录 第一章绪论1 1 1 研究背景及意义1 1 2 国内外研究现状2 1 2 1 生产线研究现状2 1 2 2 领域工程研究现状3 1 3 课题来源与研究内容4 1 4 论文的组织结构5 第二章软件复用技术6 2 1 软件复用相关概述6 2 1 1 软件复用的基本概念6 2 1 2 软件复用的层次6 2 1 3 实现软件复用的关键因素7 2 2 软件复用技术分析1 0 2 2 1 复用技术的分类1 0 2 2 2 软件复用技术形式1 l 2 3 几种软件复用技术的比较1 5 2 4 本章小结1 6 第三章基于资产库的生产线复用体系1 7 3 1 生产线中的核心资产开发1 7 3 2 核心资产库1 8 3 2 1 核心资产的定义1 8 3 2 2 核心资产库的度量2 0 3 2 3 核心资产库的开发2 1 3 3 基于核心资产库的生产线复用体系2 2 3 3 1 生产线复用过程分析2 2 3 3 2 生产线复用分层体系设计2 3 目录 3 3 3 支持生产线复用分层体系的关键因素2 6 3 4 本章小结2 6 第四章支持生产线复用体系的资产开发2 8 4 1 遗留资产挖掘实践2 8 4 2 基于h o r s e s h o e 模型的资产修复策略2 9 4 2 1 体系结构重构3 1 4 2 2 构件封装3 2 4 2 3 用户界面封装3 3 4 2 4 几种策略的比较3 4 4 3 基于生产线的框架重构3 5 4 3 1 生产线对框架资产的需求3 5 4 3 2c b f p 重构元模型3 6 4 3 3 框架资产的结构元素3 7 4 3 4 框架重构对复用体系的支持4 2 4 4 基于生产线的构件封装4 3 4 4 1 构件模型的定义4 3 4 4 2 生产线对构件资产的需求4 4 4 4 3p b c m 构件封装模型:4 5 4 4 4 构件封装对复用体系的支持4 8 4 5 本章小结4 9 第五章特定领域生产线的资产开发实现5 0 5 1 面向家电嵌入式系统的软件生产线5 0 5 1 1 传统的开发模式5 0 5 1 2 家电嵌入式系统软件生产线的构造5 1 5 2 家电嵌入式系统领域的框架资产开发5 3 5 2 1 领域分析5 3 5 2 2 框架重构5 4 5 2 3 形成框架资产5 7 5 3 家电嵌入式系统领域的构件资产开发5 8 5 3 1 构件模型5 8 v 目录 5 3 2 形成构件资产5 9 5 4 集成开发平台中的资产开发实现6 1 5 4 1 家电嵌入式生产线集成开发平台6 1 5 4 2 核心资产开发子系统6 2 5 4 3 部分系统界面6 9 5 5 本章小结7 1 第六章总结与展望7 2 致谢7 4 参考文献7 5 攻硕期间取得的成果7 8 v l 一 第一章绪论 1 1 研究背景及意义 第一章绪论 帚一早珀t 匕 随着软件行业的不断发展,软件对现代化世界的介入越来越深。为了社会各 界日益膨胀的软件需求,从事软件开发行工作的企业和公司也越来越多。在这些 软件产品带来巨大的经济效的同时,随之却引发了日益严重的软件危机【1 】问题。 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,其实 质是传统的软件开发模型已经不同满足市场的需求。传统的“一次性 开发模式, 通常为因软件产品需求的变化,而导致成本和开发周期难易控制,而其软件产品 的质量得不到保证。再者,大量的软件产品都是开发人员思维活动的代码化,他 人难易代替,由于缺少相应的文档说明,造成了大量的遗留软件难易维护。 自从1 9 6 8 年d m c i h o y 第一次提出共享构件( s h 鲫甜c o m p o n e n t ) 【2 】的概念 以来,软件复用就被认为是解决软件危机的最佳对策。它被认为是一种有明显回 报的软件开发思想,它通过已有的高质量的软件元素来构建软件系统,提高开发 效率,节约开发成本。软件复用长期以来一直是软件工程界不断追求的目标,自 从d m c n r o y 提出软件复用概念的原型后,人们一直在尝试用不同的方法实现通 过软件模块的组合来构造软件系统。从2 0 世纪6 0 年代的子程序到7 0 年代的模块, 从8 0 年代的对象和类再到9 0 年代的构件,软件复用经历了一个漫长的路程。当 构件技术兴起的时候,曾经有人预测,基于构件的软件开发将分为构件开发者、 应用开发者( 构件) 用户,而跨组织边界的构件复用是困难的。对于一个软件开 发组织来说,它总是在开发一系列功能和结构相似的软件系统,并且有足够的经 济动力驱使它对以开发和将要开发的软件系统进行规划、重组,并且尽可能的在 这些系统中共享相通的软件资源,于是企业认识到了软件体系结构的重要性。随 着软件体系结构的发展,基于构件的软件开发( c b s e ) 的复用在软件中的主要地 位就逐渐的向基于软件生产线的复用转移【3 】。 软件生产线( s o f t w a r ep r o d u c tl i n e ) 是一个新兴的软件工程领域,是一般意 义上的上生产线在软件领域中的应用。与基于构件的软件开发相比,生产线强调 针对特定领域产品家族的领域分析和面向复用的开发,生产线家族共享一个基础 构架,以及一组插入在这个构架上的通用构件【4 】。软件生产线复合软件复用的发 电子科技大学硕士学位论文 展趋势,从小粒度的复用( 代码、对象复用) 到构件复用,再发展到生产线的策 略复用,以及大粒度的部件( 软件体系结构、体系结构框架) 复用,使得软件复 用将发挥到更大的效益。软件生产线是目前为止最大程度的软件复用,可以有效 降低成本、缩短产品面市时间、提高软件质量。 卡耐基梅隆( c 锄e 西em e l l o nu 1 1 i v e r s 时,c m u ) 的软件工程学院( s o f l w a r e e n g i n e 嘶n gi i l s t i t l l t e ,s e i ) 将软件生产线分为核心资产和产品集合两个部分【5 】, 核心资产包括一个基本体系结构以及植于其上的公共的、可裁剪元素,还包括设 计文档、用户手册、测试用例等一切和产品族有关的资产,是领域内所有结果的 集合,是生产线中产品构造的基础。核心资产开发的过程实质是一个领域工程的 过程,领域工程覆盖了开发可复用软件资产的所有活动,通过对领域内所有的软 件系统进行分析,识别出它们的共性特征和可变特征,抽象出领域中应用的共有 的体系结构d s s a ( d o m a i ns p e c i 丘cs o 脚a r ea 玎c h i t e c t u r e ) 【酬,并以此为基础识别、 开发可复用资产,这些可复用资产将存入核心资产库中,为生产线的开发提供支 持。核心资产的可用性直接影响到一条生产线的能力成熟度,所以对生产线中可 复用资产的开发研究是具有重要意义的,这也是本课题的选取依据。 1 2 国内外研究现状 1 2 1 生产线研究现状 软件生产线的研究与实践出现在2 0 世纪8 0 年代中期,最著名的例子是瑞士 c e l s i u s t e c h 公司的舰艇防御系统的开发【刀,该公司使用软件生产线开发方法大大 减少了生产过程中的软硬件消耗比,极大的降低了开发时间及成本。 国际上软件生产线的研究发展十分迅速,目前软件生产线的发展己经趋向成 熟。软件生产线的发展也很大的得益于军方的支持,如美国国防部的两个典型的 项目:d s s a ( d o m a i l ls p e c i 丘cs o f h a r e 删t e c t u r e ) 和s t a r s( s o f 时a r e t e c h n o l o g yf o ra d a p t a b l e ,r “a b l es y s t e m s ) 【8 】,这两个项目在软件体系结构和软 件重用两个方面极大地推动了软件生产线的研究和发展。 c m u 软件工程学院是从事软件生产线研究最活跃的学术团体,尤其在软件 体系结构和软件工程研究领域。这两个软件生产线技术基础学科的领先地位奠定 了它在软件产品研究领域的基础。c m u 制定了一个生产线实践框架,目的是确 定该领域的基础概念、基本活动和实践领域【9 1 ( 软件工程、技术管理、组织管理) , 2 第一章绪论 并描述了领域内基本的、己被证明的实践活动,为软件组织向软件生产线方法过 渡提供指导。软件组织可以把该框架作为实现软件生产线开发的技术和过程提高 计划的基础和指南。 凯撒斯劳腾大学i e s e ( i i l s t i t u t ef o re x p 甜m e i l t a ls o 胁a r ee n 酉n e 舐n g ) 致力于 推动创新的软件开发技术、方法和工具向工业实践的转化,来帮助公司建立适合 其需求的软件竞争力。它的软件生产线部门主要研究方向为:生产线方法、生产 线体系结构、系统化的范围划分和建模。主要提出了p u l s e 和k 0 b r a 方法【1 0 1 。 p u l s e ( p r o d u c tl i l l es o f h v a r ee n 舀n e 嘶n g ) 方法提供一个完整的框架来支持软件 生产线生命周期的构造、使用和进化。k o b r a ( c o m p o n e n tb a s e da p p l i c a t i o n d e v e l o p m e n t ) 是一个可以扩展到中小型软件开发组织的p u l s e 的己定制方法,集 成了生产线、构件技术的应用开发方法。 国际上对软件生产线的理论研究和实践都已经有了显著的成效。国内软件产 业的发展,迫切需要对大规模软件开发的方法论、技术和管理等理论研究有所提 高,在软件工程环境等方面有所突破。在理论研究上,国内尚未形成以软件生产 线为主导的、系统化的研究。 1 2 2 领域工程研究现状 领域工程出现在2 0 世纪8 0 年代,那时,领域工程以软件复用为主要目标, 被看做是软件工程在某个特定领域中的应用。当d s s a 出现后,领域工程迅速与 d s s a 相结合,将软件复用变为系统复用,通过挖掘相似或相关系统之间的共性 来提供对跨应用的变化支持【】。到9 0 年代后,领域专家采用经济技术,通过对 市场的分析,选择能满足最大比例客户需求的最小的需求和概念集合,并以该集 合为领域工程后续阶段做基础,这样就出现了以软件生产线为核心的领域工程。 目前,国际上对领域工程理论的研究持续发展,c m u s e i 提出了面向特征的领域 分析方法f o d “1 2 】( f e a t u r c o r i 饥t e dd o m a i na n a l y s i s ) ,支持对领域中系统共性 和个性的发现。k 跹g 等进一步将f o d a 方法扩展,提出了一种面向特征的复用 方法f o r m ( f 翩t 1 】r e - o r i 饥t e dr e 嘴em e m o d ) ,支持使用领域工程所产生的领 域制品进行应用的开发。 最典型的领域设计过程就是w i ut r a c z 提出d s s a 方法【1 4 】。首先定义领域特 定的设计和实现需求约束,在此基础上,产生特定领域的软件体系结构,说明构 成它的构件的语法和语义。在领域设计中一般采用面向对象的设计方法,设计模 3 电子科技大学硕士学位论文 型也用面向对象的模型来描述,但是也有的采用结构化的设计技术和描述手段( 如 s t a r s ) 。 现有的领域设计过程大多关注设计模型的描述、从领域分析模型到领域设计 模型的转换等问题,对上文提出的领域设计中的两个关键问题都是作为与特定领 域相关的具体技术问题留给领域设计者自己解决。目前的研究主要从两方面来解 决这两个关键问题。第一方面是体系结构方面,立足于领域特点,提出适合各自 领域的软件体系结构。例如,被广泛研究和应用的c 2 软件体系结构,在通信软 件领域内广泛使用的自适应通信环境a c e ( a d 印t i v ec o 1 i i l u n i c a t i o ne n v i r o 衄e n t ) 框架等【1 5 】。第二方面,对在各个领域中使用的设计经验和方法进行总结和提炼, 得到一些通用的设计方法和准则。 在国内,对领域工程研究还处于上升阶段,很少有成熟的研究成果应用到实 际开发生产中。 1 3 课题来源与研究内容 本课题来源于广东托思软件科学园合作项目面向家电的嵌入式系统共性技术 研究平台研究( 国家高技术研究发展计划( 8 6 3 计划) 课题) 。在这个项目中围 绕家电嵌入式系统领域可重用技术以及新型生产线技术等方面进行了研究,为本 课题的理论研究提供了技术实践。 本论文的主要研究内容如下: 1 研究基于核心资产库的软件生产线的复用体系:通过对生产线中核心资产库 的量度、组织及开发过程和软件生产线的复用开发过程的研究分析,针对生产线 线中存在的一些问题,设计出一种基于划分资产库层次的生产线复用体系。 2 研究支持生产线复用体系的可复用资产的开发方式:结合领域工程技术和再 工程技术,对遗留软件的可复用资源进行分析,研究可支持生产线复用分层体系 的资产的开发方式,具体包括: 1 ) 对遗留系统中的可复用资源的开发形式进行分析和比较,确定生产线的 不同粒度层次的资产开发的需求。 2 ) 针对生产线复用体系所需的框架资产开发,本文设计一种生产线中基于 构件的框架( c o m p o n e n t b 嬲e ds o 脚a r cf r 锄e w o r ko f p r o d u c t l i l l e ,c b f p ) 重构元模型,定义出框架资产的结构标准。 3 ) 针对生产线复用体系所需的构件资产开发,本文设计一种基于生产线的 4 第一章绪论 构件模型( p r o d u c t - l i n eb 懿e dc o n l p o n e n tm o d e l ,p b c m ) ,实现对构件资产 的封装方法。 3 特定领域的生产线中资产开发的实际应用:在课题的支持下,将上述设计资 产开发方法实际应用到嵌入式家电领域软件研发生产线中,实现对家电领域的核 心资产开发。 1 4 论文的组织结构 本文一共分为六个章节,各章节组织如下: 第一章该章节主要对本课题的选题背景和选题意义进行了介绍,对国内外相 关的理论技术的研究进行了概述,最后给出了本文的研究内容和组织安排。 第二章该章节对软件复用相关概念进行了介绍,具体分析了了实现软件复用 的几种不同的技术实现形式,并比较各自的优缺点。 第三章该章节首先对软件生产线中的核心资产开发过程进行了介绍,对了生 产线对核心资产的定义、量度以状态演化进行了详细的研究分析,并根据对生产 线复用过程的研究,提出了一种基于核心资产库的生产线复用分层体系。 第四章该章节首先简介了资产开发过程中的挖掘实践工作,研究可复用资产 开发形式。针对生产线复用分层体系所需的两种层次资产,提出了c b f p 重构模 型和p b c m 封装模型,定义对资产的开发形式。 第五章该章节将c b f p 和p b c m 模型与特定领域下的生产线的核心资产开发 实践相结合,实现了该设计模型的成功应用。 第六章对全文的内容进行总结,并对进一步的工作指出了方向。 5 电子科技大学硕士学位论文 第二章软件复用技术 随着计算机应用领域的逐步扩大,传统的软件开发方式已经不能满足急剧增 长的软件需求。针对日趋复杂的软件需求的挑战,软件业界开始关注并发展出了 软件复用技术,作为对“软件危机 的最佳对策,已有许多复用技术的研究成果 和成功的复用实践活动。 本章首先介绍软件复用的相关概念,然后就一些主要的复用技术进行分析和 比较,说明何种复用技术才能实现大粒度、高质量的实现复用。 2 1 软件复用相关概述 2 1 1 软件复用的基本概念 软件复用是指重复使用“为了复用目的的而设计的软件 的过程【l6 1 。相应 地,可复用软件是指为了复用目的而设计的软件。与软件复用的概念相关,重复 使用“并非为了复用目的而设计的软件”的过程,称为软件挽救。不同的研究人 员对软件复用有不同角度的定义。有研究人员认为软件复用应该具有事先性,“软 件挽救”这类行为不属于严格意义上的软件复用。也有研究人员把在多个应用中 使用相同的构件称作软件复用,不区分软件复用和软件挽救之间的区别。 一般我们这样理解软件复用的含义:可将软件看成是由不同功能部分的“部 件”所组成的有机整体,每一个部件在编写时可以被设计成为完成同类任务的通 用工具。这样,如果完成各种任务的部件被关联起来以后,编写特定软件的工作 就变成了将各种不同部件组装起来的简单工作,正如传统的工业生产流水线,其 基本模式均是符合标准的零部件( 构件) 生产以及基于标准构件的产品生产( 组 装) ,这对于软件产品的最终质量和维护工作都有本质性的改变。 2 1 2 软件复用的层次 软件复用的实践表明,大量可复用软件资产能够有效的提高软件复用的效, 同时,软件复用的层次也是成功进行软件复用的关键。研究表明,针对软件开发 生命周期中一些主要开发阶段的软件制品的复用,是最有可能产生显著效益的。 6 第二章软件复用 按找抽象程度的高低,可以将复用划分到三个层次1 7 】: 一一;。:? ,:j ? 代码的复用; ”。 i 设计的复用 j : 分析的复用 j 也f,。一一+ 4 : 图2 l 软件复用的三级层次 1 、代码的复用 包括源代码和目标代码的复用。其中目标代码的复用级别最低,历史也最久, 当前大部分编程语言的运行环境都提供了绑定、链接等功能来支持这种复用功能。 源代码的复用级别略高,程序员在编程时把一些可复用的代码段复制到自己的程 序中,但由于库文件包含等原因,往往会造成新旧代码的匹配错误。 2 、设计的复用 设计成果的复用比代码复用的抽象级别更高,因而它受实现环境的影响较少, 从扩展了复用构件被复用的范围,并且不需过多的修改。这种复用有三种方式, 第一种方式是从遗留系统的设计成品中提取部分可复用的设计组件,并把这些组 件应用于新系统的开发中;第二种方式是保留一个遗留系统的全部设计文档,但 是使用新的软件技术在硬件平台上开发实现,即把一个设计框架运用到多个具体 的实现:第三种方式是不依照任何遗留系统,独立于具体的应用或特定的功能要 求,有计划地开发一些可复用的设计组件。 3 、分析的复用 分析复用的抽象级别最高,可复用的分析构件,是针对特定领域的某些问题 提出的抽象程度更高的解决措施,受实现环境、实现技术的影响更少,所以可复 用的机会更大、范围更广。复用的方法也有三种,一是从遗留系统的分析结果中 提取可重用的部分( 组件) 用于新系统的分析;二是用一份完整的分析文档作为 输入,输出针对不同软硬件平台和其它技术条件的分析设计;三是不重用遗留系 统的分析文档,独立于特定应用或需求,专门开发一些可重用的分析组件。 2 1 3 实现软件复用的关键因素 实现软件复用的技术因数和非技术因数是相互联系的,这些关键因数主要包 括:软件构件( s o 脚a r ec o m p o n e n t ) 、软件体系结构( s o r w a r ea r c h j t e c t u r e ) 、领 7 过程 种非 图2 - 2 实现软件复用的关键因素 1 、软件构件技术 构件技术是支持软件复用的核心技术,主要的研究内容包括【l9 】: ( 1 ) 构件挖掘。利用领域工程等相关技术,从遗留系统中挖掘构件和有针对 性的进行构件生产。 ( 2 ) 构件建模。主要研究构件的属性以及构件之间的依赖关系。构件模型定 义了构件的本体属性,对接口进行了规范,对构件与软件体系结构间的交互机制 提供了标准。 ( 3 ) 构件描述语言。针对构件模型的一种描述语言,对构件接口、属性精确 的描述、理解,并指导构件组装问题。 ( 4 ) 构件分类与查询。主要研究构件分类策略、构件组织策略和构件查询检 索策略,并依据标准建立构件库,已提供构件管理功能。 ( 5 ) 构件集成( 组装) 。已构件模型为基础、根据构件接口描述语言,研究 软件构件的连接、组装方法以构造出新的应用系统软件。 2 、软件体系结构 软件体系结构是对软件系统的组织,是对软件系统整体结构设计的描述【2 0 】。 对于软件体系结构的研究,可以在较高的抽象级别上提取不同应用系统的共同特 征。对于软件体系结构存在的可变性和可靠性等非功能属性的研究,对于软件工 8 第二章软件复用 程整个开发设计有决定性的指导作用。 在基于复用的软件开发中,复用有粒度大小之分。而“为了复用目的而开发” 的软件体系结构就是一种大粒度的、高抽象级别的复用资产,并且软件体系结构 为小粒度的复用资产( 构件) 的组装集成提供了基础和上下文,具有非常重要的 意义。 3 、领域工程 领域是指一组具有相似或相近软件需求的应用系统所覆盖的功能区域【2 1 1 。软 件复用的研究和实践表明,再特定领域的软件复用相对容易取得成功。这是由于 特定领域本身的相对内聚性和稳定性所决定的。 领域工程是为一组相似或相近系统的应用工程建立基本能力和必备基础的过 程,它覆盖了建立可复用软件构件的所有活动,可分为三个主要阶段【2 1 】:1 ) 领 域分析,目的是获得领域模型( d o m 血m o d e l ) ,用以描述领域中不同系统之间的 共同需求。2 ) 领域设计,目的是获得领域体系结构( d o m a i l ls p e c i 6 cs o 脚a r e a 们1 1 i t e c t u r e ,d s s a ) 。d s s a 描述在领域模型中表示的需求的解决方案,根据具 体需求的不同,d s s a 相应的具有可变性。3 ) 领域实现,的主要行为是定义将需 求翻译到由可复用构件创建的系统的机制。这种机制可能是一组与d m 和d s s a 想关联的可复用构件,也可能是应用系统的生成器。 4 、软件再工程 遗留系统是软件复用的一个重要部分,如何从现存的大量遗留系统( l e g a c y s o 脚a r e ) 中选取、挖掘出可复用的软件构件【冽;如何维护、封装、修复软件构 件,以延长起生命周期,发挥出这些可复用有构件的最大功能;如何使遗留系统 适应新技术新环境需求的变化,采用适应性、可靠性更高的软件体系结构并提炼 出可复用的构件;软件再工程技术正是解决这些问题的有效途径。 5 、软件过程 软件过程是指一套关于项目的阶段、状态、方法、技术和开发、维护软件的 人员以及相关圳f a c t s ( 计划、文档、模型、编码、测试、手册等) 组成。目前 有三种方法:u p ( m eu 1 1 i 丘e dp r o c e s s ) ,o p ( t l l e0 p p r o c e s s ) ,o o s p ( 1 h e o b j e c t o r i t e ds o f t v 矿a r ep r o c 鹳s ) 。一个良好定义的软件过程对软件开发的质量和 效率有着重要的影响。对基于复用的软件开发过程来说,则和传统的软件开发模 式有着本质的不同,所以研究适应于软件复用的软件过程是一个重要的问题。 6 、c a s e 技术 c a s e ( c o m p u t e r 赴d e ds o 脚a r ee n g i i l e 舐n g ,计算机辅助软件工程) :是一 9 电子科技大学硕士学位论文 套方法和工具,可使系统开发商规定的应用规则,并由计算机自动生成合适的计 算机程序【2 2 1 。c a s e 技术可以为软件工程的软件设计、代码生成、测试管理、在 工程、软件过程等诸多方面提供有力的自动或半自动支持,并提高开发效率和质 且 里o 7 、非技术因素 除了上述的技术因素以外,软件复用还涉及众多的非技术因素,如:管理制 度如何适应复用的需求;机构组织如何适应复用的需求;创造性和工程化的关系; 前期成本投入的经济考虑;标准化问题等等。这些因素虽然都是从非技术层面上 影响软件复用,但是很多时候,这些非技术因素对成功的复用也起着非常重要的 作用。 2 2 软件复用技术分析 2 2 1 复用技术的分类 软件资产的复用可以在多个维度进行,从不同角度对复用进行划分: 1 、集成性复用于生产式复用,也可以称为产品复用和过程复用【2 3 1 。集成性 复用是利用构件库中的构件自底向上的集成系统,这种复用的挂念在于要解决构 件的分类和检索技术,以及开发出一个自动化系统支持集成、组装过程。生产式 复用是特定与某个应用领域的,它采用标准的领域构架模型和一致的构件复用接 口,根据一个适当的参数规约生成新的系统。这个方法在成熟的领域中非常有效, 但在开发初始模型的时候需要投入很大的精力。 2 、直接复用与适应性的复用,通常也称为黑盒( b l a c k b o x ) 复用与白盒 ( w 1 1 i t e - b o x ) 复用【2 4 1 。黑盒复用指对已有的构件资产不需再作任何修改,直接进 行复用。白盒复用指已有构件并不能完全符合用户需求,需要根据用户需求进行 适应性修改后才可以使用。一般来说,在可复用资产的设计阶段要保留一定的弹 性,例如可以设计成参数化的构件,但是为了满足服用者的需求,适当的修改也 是必要的。 3 、小规模复用和大规模复用,也可以称为小粒度复用和大粒度复用。小规模 的复用。小规模的复用通常指代码级的复用,比如数学函数库、子程序、面向对 象的类等等,现在已经得到了广泛的应用,但是个别的复用所能节省的代价并不 大,必须要普遍地复用才能获得收益。大规模的复用一般针对完整的应用子系统, l o 第二章软件复用 比如信息处理子系统、核心资产库子系统,这时个别的复用即可获得很大的收益, 但是对一个特定的子系统性质的大构件来说,复用的机会是非常有限的。 2 2 2 软件复用技术形式 目前主流的复用技术包括面向对象的软件复用、基于组件的软件复用和面向 软件生产线的软件复用【2 5 】等,这些复用技术一直是软件复用研究的核心。 2 2 2 1 面向对象的软件复用 面向对象方法从面向对象的编程发展到面向对象的分析与设计,使这种方法 支持软件复用的固有特征能够从软件生命周期的前期阶段开始发挥作用,从而使 0 0 方法对软件复用的支持达到了较高的级别。 面向对象的方法中,对象( 类) 是开发模式的基本成分,是复用构件的一种 原始模型。类和类继承是强有力的复用机制;继承和重载是复用构件的功能扩展 和转化的修改方法;继承和消息传递是单一构件组合成复合式构件的合成机制。 面向对象的软件开发( 0 i b j e c t o r i t e ds o 胁a r ee n 百n e 甜n g ,o o s d ) 通过类 的封装和继承等技术来实现复用,虽然已经是现有成熟的技术,但是它的继承扩 展机制存在“脆弱的基类问题和“过度增殖”等问题【2 6 1 ,并存在着对象的复用 规模过小( 源代码的复用) 、依赖开发语言、不可独立部署等问题,这些缺点都 限制了面向对象复用机制的应用。 2 2 2 2 基于构件的软件开发 基于构件的软件开发( c o m p o n e n t - b 弱e ds o r w a r ed e v e l o p m e n t ,c b s d ) 是通 过某些预先设计好的软件构件来组装成新的软件,而不是像传统的从头开始开发 的模式,其过程可以分成领域工程( 开发构件) 和应用工程( 使用构件开发应用 程序) 两个独立的子过程,两个子过程之间通过构件库联系起来【2 6 】。 1 领域工程 领域工程是是一种系统地生产构件的过程,是开发构件的主要方式。与传统 的应用程序开发过程最大的区别在于这个开发过程强调复用。因为构件将会在许 多应用程序中被复用( 包括现在还不存在的应用程序) ,所以构件应该被很好地归 约、容易理解、具有足够的通用性、能够方便地被修改、发布、配置和替换,构 件接口尽量简单并且严格地与其实现分开。 构件模型是构件化的软件开发的基础,解决不同的问题需要定义不同的构件 电子科技大学硕士学位论文 模型,构件模型可以采用形式化或非形式化的方式来描述。现有的构件模型按照 使用场合可以分成构件的实现模型和构件的分析设计模型两方面。前者是在软件 的实现阶段使用的构件模型,如c o i 氇a 、c o m 、j a v 出e a n s ,它们都提供了各 自构件实现模型的运行时环境以及相应的开发工具环境。后者是在分析设计阶段 使用的构件模型,用于分析构件化的软件系统的各种特性、方便构件的管理( 例 如查询合适的构件) 以及支持软件的设计自动化( 例如自动组装、自动生成代码) 等,其中3 c 模型是一个受到较普遍认同的参考模型2 7 1 。 2 应用工程 应用工程就是利用软件资产开发具体应用程序的过程,它建立在领域工程的 基础之上。一般来说,应用工程也可以划分成需求分析、设计、实现等几个基本 阶段,且每个阶段都可以从构件库中获取领域工程产生的相应构件作为本阶段工 作的基础。 需求分析:需求分析是对分析用户对于新系统的功能即质量的要求,我们可 以从构件库中获取类似系统的开发经验以及相关文档。在这个阶段,我们需要对 用户的需求、可复用的构件以及用户需求的扩展等几方面进行考虑,试图找到一 个平衡点,即能满足用户的要求,又能最大化的复用库中的构件资产。 系统设计:构件化的软件开发的最根本的特色就是利用已有的构件来开发新 的应用软件,这集中体现在系统设计阶段,即通过构件组装( c o m p o n e l l t c o m p o s i t i o n ) 的方式来设计。构件化的软件设计是自底向上和自顶向下的结合, 它以体系结构为设计指导,通过构件组装的方式来完成应用软件的设训2 引。 系统实现:这个阶段完成的主要任务包括:根据系统设计结果,设计新构件 并加入构件库,对已有构件进行功能扩展性、适应性修改,编写构件集成框架, 测试最终的组装系统。这些工作既可以手工完成,也可以在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水质检验基础知识培训课件
- 建筑工地人员健康管理方案
- 幕墙施工现场环保措施
- 萤石矿矿山通风系统方案
- 水稻生产机械化培训课件
- 水利工程结构稳定性分析
- 水电站消防安全知识培训课件
- 水电技术基础知识培训课件
- 二零二五年度户外广告牌匾智能控制系统安装合同
- 2025版房屋置换项目环保验收与节能改造合同
- 《中国动态血压监测基层应用指南(2024年)》解读 2
- 2025初中语文新教材培训
- 企业技术人员管理制度
- DB13T 5545-2022 选矿厂安全生产基本条件
- 探索语文学习的有意义情境任务设计
- 血管内导管相关性血流感染预防与诊治2025
- 智慧停车系统开发与运营合作
- T/SHPTA 102-2024聚四氟乙烯内衬储罐技术要求
- T/CAQP 001-2017汽车零部件质量追溯体系规范
- 高速考试题目及答案
- 眼内炎护理疑难病例讨论
评论
0/150
提交评论