




已阅读5页,还剩64页未读, 继续免费阅读
(计算机应用技术专业论文)程序切片技术在软件重用中的应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 摘要 软件重用是运用现存的软件或知识构造新系统,从而避免重复劳动的解决方 案,被视为解决软件危机、提高软件生产效率和质量的现实可行的途径。软件重 用按重用粒度可分为:代码级重用,设计级重用和软件体系结构级重用。作为控 制软件复杂性、提高软件系统质量、支持软件开发和重用的重要手段之一,软件 体系结构( 简称s a ) 自提出以来,日益受到软件研究者和实践者的关注,并发展 成为软件工程的一个重要的研究领域。由于软件体系机构是系统的高层抽象,反 映了系统的主要组成元素及其交互关系,因而较算法更稳定,更适合于重用。 计算机系统的发展给软件提出了更高的要求,软件质量提升得到越来越多研究 学者的关注,而软件的可重用性是保证软件具有高质量的关键因素。近年来,软 件从业人员为保证开发中软件的质量,提出了多种技术与方法。程序切片技术是 由m w e i s e r 首先建立起来的一种程序分解技术,具体为通过寻找程序内部的相关 性来分解程序,再通过对分解得到程序切片的分析达到对整个程序的分析和理解。 本文提出软件体系结构切片的概念和方法,能在较大粒度上实现软件重用。 同时,本文提出了一种基于程序切片技术的软件体系结构评估方法,实现对软件 体系结构的定量评估。本文最后提出了一种基于软件体系结构的软件开发模型。 本文的内容和特色包括: 1 ) 作为基于软件体系结构的软件开发模型的基础,本文提出了一种软件体系 结构切片的方法,该方法可适应大型复杂软件系统的开发。 2 ) 软件体系结构演化作为基于软件体系结构的软件开发模型的重要部分,本 文提出了一种基于程序切片技术的软件体系结构评估方法,可应用在软件体系结 构设计、演化等方面。 3 ) 详细阐述了一种基于软件体系结构的软件开发过程,并与目前常用软件开 发模型进行了对比。 4 ) 结合实际,将本文提出方法应用于基于s o a 架构的空调电子系统软件 研发生产线改造项目中。 关键词:软件重用,软件体系结构,程序切片,软件体系结构评估,软件开发模 型 a b s t r a c t s o f t w a r er e u s ei sas o l u t i o nt h a tu s i n ge x i s t i n gs o f t w a r es y s t e m s ,o rs o f t w a r e k n o w l e d g e ,t ob u i l dn e ws o f t w a r es y s t e m s ,w h i c hc a na v o i dr e p e a t e dw o r ki nt h ee n d s o f t w a r er e u s eh a sb e e nc o n s i d e r e da saf e a s i b l ew a yt os o l v es o f t w a r ec r i s i sa n d i m p r o v es o f t w a r ep r o d u c t i v i t ya sw e l la sq u a l i t y i tc a nb ec l a s s i f i e di n t ot h r e et y p e s : c o d er e u s e ,d e s i g nr e u s ea n ds o f t w a r ea r c h i t e c t u r er e u s e s o f t w a r ea r c h i t e c t u r e ( s a ) h a s b e e nc o n s i d e r e da so n eo ft h em o s ti m p o r t a n tm e t h o d st oc o n t r o ls o f t w a r ec o m p l e x i t y , p r o m o t es y s t e mq u a l i t y , s u p p o r ts o f t w a r ed e v e l o p m e n ta n dr e u s ea n ds oo n s i n c et h e t e r mo fs o t h a r ea r c h i t e c t u r eh a sb e e nb r o u g h to u t , i th a sa t t r a c t e dm o r ea n dm o r e s o f t w a r er e s e a r c h e r sa n de n g i r e e f s a t t e n t i o na n db e c o m e sa ni m p o r t a n tr e s e a r c h o r i e n t a t i o n s o f t w a r ea r c h i t e c t u r ei sah i 曲a b s t r a c to fas y s t e m ,w h i c hr e f l e c t se a c hp a r t o fas y s t e ma n dc o m m u n i c a t i o n sb e t w e e ne a c ho t h e r , a l lo fw h i c hm a k ei tm o r es t a b l e t h a na r i t h m e t i ca n dm o r ea p p r o p r i a t et os u p p o r ts o f t w a r er e u s e t h ed e v e l o p m e n to fc o m p u t e rs y s t e m sh a sb r o u g h tm o r ea n dm o r er e q u i r e m e n t so n s o t h a r eq u a l i t y h o wt oi m p r o v es o f t w a r eq u a l i t yh a sb e e nah o tt o p i ca n da t t r a c t e d m o r ea n dm o r ea t t e n t i o n a si sk n o w nt oa l l ,s o f t w a r er e u s a b i l i t yh a sb e e nc o n s i d e r e da k e yf a c t o rt oe n s u r et h eq u a l i t yo fs o f t w a r e i nt h e s ey e a r s ,i no r d e rt oe n s u r et h eq u a l i t y o fs o f t w a r e , s o f t w a r ee n g i n e e r sh a v ep u tf o r w a r dm a n yt e c h n o l o g i e sa n dm e t h o d s p r o g r a ms l i c ei sat e c h n o l o g yt od e c o m p o s ep r o g r a m s ,w h i c hh a db e e np u tf o r w a r db y m w e i s e r i td e c o m p o s e sap r o g r a mb ys e a r c h i n gr e l a t i v i t i e si nt h ep r o g r a ma n do n eo r m o r et h a no n ep r o g r a ms l i c ec a nb er e a c h e d f r o mt h ea n a l y s i sr e s u l to ft h e s ep r o g r a m s l i c e s ,t h ew h o l ep r o g r a mc a nb eu n d e r s t o o d n ed e f i n i t i o no fs o f t w a r ea r c h i t e c t u r es l i c ea n dm e t h o d st h a th o wt og e ts o f t w a r e a r c h i t e c t u r es l i c e sh a v eb e e nb r o u g h tf o r w a r d ,w h i c hc a nr e a c hs o f t w a r er e u s eo na h i g h e rg r a n u l a r i t y m e a n w h i l e , am e t h o dt oe v a l u a t es o f t w a r ea r c h i t e c t u r eb a s e do n p r o g r a ms l i c i n gt e c h n o l o g yh a s b e e n p r o p o s e d , w h i c hc a ne v a l u a t es o f t w a r e a r c h i t e c t u r e q u a n t i t a t i v e l y i nt h ee n d ,as o f t w a r ed e v e l o p m e n tp r o c e s sb a s e do n s o f t w a r ea r c h i t e c t u r eh a sb e e nb r o u g h tf o r w a r d t h em a i ne o n t r i b u t i o na n df e a t u r eo ft h i sd i s s e r t a t i o ni n c l u d e : i i a b s t r a c t 1 ) a st h eb a s i so fs o f t w a r ed e v e l o p m e n tm o d e lb a s e do ns o f t w a r ea r c h i t e c t u r e , a m e t h o do fs o f t w a r ea r c h i t e c t u r es l i c i n gh a sb e e nb r o u g h tf o r w a r d i tc a l lb eu s e di n l a r g ec o m p l i c a t e ds o f t w a r es y s t e md e v e l o p m e n t 2 ) s o f t w a r ea r c h i t e c t u r ee v o l v e m e n ti s o n eo ft h em o s ti m p o r t a n tp h a s e so f s o f t w a r ed e v e l o p m e n tm o d e lb a s e do ns o f t w a r ea r c h i t e c t u r e am e t h o dt oe v a l u a t e s o f t w a r ea r c h i t e c t u r eb a s e do np r o g r a ms l i c i n gt e c h n o l o g yh a sb e e np r o p o s e d ,w h i c h c a nb eu s e db o n li ns o f t w a r ea r c h i t e c t u r ed e s i g na n de v o l v e m e n t 3 as o f t w a r ed e v e l o p m e n tp r o c e s sb a s e do ns o f t w a r ea r c h i t e c t u r eh a sb e e nb r o u g h t f o r w a r d i t s a d v a n t a g e s a r es u m m a r i z e db y c o m p a r i n g i tw i t ho t h e rs o f t w a r e d e v e l o p m e n tm o d e l sa tp r e s e n t 4 ) c o n s i d e r i n gr e q u i r e m e n t so fa i r - c o n d i t i o n i n g se l e c t r o n i cc o n t r o l l e rs o f t w a r e p r o d u c tl i n e , m e t h o d st h a th a v eb e e nb r o u g h tf o r w a r da b o v ew i l lb ep u ti n t op r a c t i c e k e y w o r d s :s o f t w a r er e u s e , s o f t w a r ea r c h i t e c t u r e , p r o g r a ms l i c i n g , s o f t w a r e a r c h i t e c t u r ee v a l u a t i o n ,s o f t w a r ed e v e l o p m e n tm o d e l i i l 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:童! 圭塾主丝日期:为0 7 年石月日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:塑盘赴导师签名:羔缝 日期:7 , 0 口c 7 年6 月e l 第一章绪论 1 1 课题研究背景 第一章绪论 自1 9 4 6 年世界上第一台电子计算机诞生之日起,计算机应用领域逐渐延伸。 如今,人们生活及工作的方方面面都离不开计算机。计算机的应用极大地提高了 社会生产力,而且计算机的计算速度仍然在持续提高。软件的灵活性实现了各种 繁琐复杂的运算,将之前由人完成的工作转交给计算机,大大提高了计算速度。 然而,随着软件系统规模和复杂性的不断增长,软件变得极其复杂和难以理解, 软件产品的开发开始出现众多问题,例如软件开发周期延长、软件质量下降、软 件开发成本增长等,从而产生了“软件危机 ( s o f t w a r ec r i s i s ) 。为此,在1 9 6 8 年 “软件工程 的概念被首次提出来解决这些问题【i 】【2 】。 在长期的软件工程实践中,软件重用被认为是能够满足软件产业需要的提高 软件生产效率和软件质量的方法t 3 1 。软件重用可大幅度减少软件的重复开发工作, 缩短整个软件产品的开发时间【4 】,大幅度降低开发成本,控制软件质量,降低后期 软件维护成本。在长期的工程实践中,人们提出了多种软件重用技术,如面向对 象技术、设计模式、c a s e 技术、产品线技术等等。这些技术大多支持代码级或设 计级的软件重用,重用粒度小,无法实现大规模的软件重用。软件体系结构的概 念在上个世纪8 0 年代首次提出,如今有关软件体系结构研究已延伸至软件开发周 期的多个阶段。由于软件体系结构是对系统的高层抽象,被认为是有效支持软件 开发和重用的重要方法。 计算机系统的发展给软件提出了更高的要求,软件质量也变得越来越难以控 制,因此,如何有效控制软件质量也得到越来越多研究学者的关注。软件的可重 用性等是保证软件具有高质量的关键因素之一。近年来,软件行业人员,为保证 开发中软件的质量,提出了多种技术与方法。程序切片技术是由m a r k w e i s e r 于 1 9 7 9 年首先建立起来的一种程序分解技术。它通过寻找程序内部的相关性来分解 程序,再通过对分解得到程序切片的分析达到对整个程序的分析和理解【5 】。然而, 目前程序切片技术大多应用在代码级的重用及度量。如何利用程序切片技术实现 软件体系结构重用,这是软件工程领域尚未研究的问题。利用程序切片技术实现 对软件体系结构的切片、评估,可为软件体系结构重用提供精准、大粒度的重用 电子科技大学硕士学位论文 元素,从而有效提高软件重用效率。 为此,本课题在广东省产学研项目基于s o a 架构的空调电子系统软件研发 生产线改造的支持下,在综合分析家电类产品系统软件的特性、体系结构、实 现技术的基础上,研究了一种基于软件体系结构的软件重用。基于程序切片方法, 本文提出了一种软件体系结构切片方法,可应用在软件体系结构设计、测试、演 化等多个阶段。同时,提出了一种基于程序切片技术的软件体系结构评估技术, 可作为基于度量的软件体系结构评估方式的重要补充。再次,提出了一种基于软 件体系结构的软件开发模型。利用该模型,可尽早发现软件设计错误及缺陷,降 低开发风险,同时,可有效重用遗留系统多重可重用元素,实现大规模的软件重 用,降低开发成本。最后,在上述方法的指导下,结合课题实际需求,将本文提 出的方法应用至工程实践中。 1 2 研究意义 软件重用技术被认为是解决软件危机的有力措旌。软件重用技术提出已有二 十余年,然后其在实践中的应用效果仍然不尽如人意,例如重用元素挖掘困难、 重用方法难以理解、重用粒度小、后期维护工作复杂,难以控制等等。本文提出 的软件体系结构级重用可实现大粒度的软件重用,为软件重用技术提供确实可行 的方法。 软件规模的迅速增长直接导致了软件质量的难以控制。软件的可重用性是保 证软件具有高质量的关键因素。程序切片是一种程序分析和逆向工程技术,它通 过寻找程序内部的相关性来分解程序,再通过对分解所得程序切片的分析达到对 整个程序的分析和理解。实践表明,程序切片可应用于程序理解、程序分析、逆 向工程、测试、调试、软件维护、软件重用、软件度量等多个方面1 6 1 。本文利用程 序切片技术,实现了对软件体系结构的切片,从而提供了大粒度的软件重用元素。 软件体系结构的设计是整个软件开发周期的重要阶段,直接影响到软件质量、 软件开发成本及是否能按时交付产品。因此,软件体系结构的评估显得尤为重要。 基于程序切片技术,本文提出了一种软件体系结构评估方法,可实现对软件体系 结构的定量化评估,为最终软件体系结构的选择提供参考依据。 此外,本文还阐述了一种基于软件体系结构的软件开发模型,可有效利用到 大型复杂软件体系的开发过程中。 本论文的研究工作具有理论和现实意义。 2 第一章绪论 1 3 国内外研究现状 目前,软件重用技术实践出现了多种方法,其中面向对象技术、软件生成技 术、设计模式、c a s e 技术及软件生产线是其中的典型代表。判断一种软件重用技 术取得成功的重要准则是,其在多大程度上达到了软件工程的目标【丌。然后,目前 的诸多方法都各有缺陷,如可重用元素挖掘困难、重用粒度小、技术门槛高、相 关工具及平台研发周期长等。如何实现更大粒度的软件重用成为软件重用研究的 热点。在软件系统规模日益复杂的推动下,研究学者开始了软件体系结构的研究。 如今,软件体系结构的研究已经渗透到软件生命周期的各个阶段,如需求分 析、系统设计、软件维护等,并取得了丰硕的研究成果。与软件工程研究中其他 领域一样,如结构化方法、面向对象方法等,体系结构的研究首先关注软件生命 周期的一个阶段( 设计) ,然后逐步过渡到设计之后的阶段( 实现、部署、后开发) , 最后再关注设计之前的阶段( 需求分析) ,从而成为覆盖各阶段的一整套方法【8 】。 目前,有关软件体系结构的研究主要有:软件体系结构风格、软件体系结构 描述语言、软件体系结构重用、软件体系结构评估、软件体系结构测试、软件体 系结构验证及演化模型等方面的研究1 9 。此外,软件体系结构相关工具的研究也是 重要的研究热点。 实践证明,基于软件体系结构的软件重用,其重用粒度大,重用效率高【l o 】。 近几年,i e e e ( 国际电气与电子工程师协会) 专门制定了与体系结构相关的国际 标准【1 1 】;s a e 制定了a d l 的国际标准a a d l t l 2 】。世界上许多著名公司也开始了 软件体系结构研究与实践,如西门子【】、贝尔实验室【1 4 1 ,这些公司大力推动了软 件体系结构在实际软件产品开发中的应用,同时将其在工业实践中所积累的宝贵 经验,贡献给体系结构研究者,进一步促进了软件体系结构的研究。 目前,程序切片技术的研究以面向对象程序切片研究为主,同时也出现了对 切片的多种变体的研究。现阶段,m a r y j e a nh a r t o l d 等人的研究工作是其中的典型 代表。他们利用类依赖图( c l d g ) 表示面向对象程序中的单个类、相互作用的类、 不完全系统以及完全的面向对象系统,基本解决了简单面向对象程序的切片问题。 他们还利用系统依赖图( s d g ) 计算了对象切片,这项工作为人们进一步研究面向对 象系统的切片问题奠定了一定的基础。 目前,关于如何利用程序切片技术实现软件体系结构重用,这方面的研究相 对较少。本文提出了软件体系结构切片的概念。软件体系结构切片可应用于软件 体系结构的设计、评估、实现、测试及演化等多个方面。同时,本文探讨了基于 电子科技大学硕士学位论文 软件体系结构的软件开发过程。上述内容构成了本文研究的重点。 1 4 课题来源及研究内容 本课题来源于基于s o a 架构的空调电子系统软件研发生产线改造( 广东 省产学研项目) 。在赴企业实地调研时发现:空调电子系统软件中,包括了大量可 以供重用的元素。对可重用元素进行挖掘后,如何有效对其进行重用,也是该项 目的关键。 为了解决可重用元素有效重用的问题,本文提出若干方法,包括: 1 ) 软件体系结构描述 本文给出了一种易于理解的软件体系结构描述方法,为软件体系结构形式化 规约提供了良好的基础,同时也在一定程度上保证了软件体系结构重用的可行性。 2 ) 软件体系结构切片技术 在课题的支持下,利用教研室科研成果,本文在分析软件体系结构重用技术 的基础上,提出了一种软件体系结构切片技术,可应用在软件开发周期的多个阶 段中,如软件体系结构设计、测试、评估及演化等。在该技术的指导下,可获得 大粒度的软件重用,大大减少开发工作。 3 ) 基于程序切片技术的软件体系结构评估技术 本文在程序切片技术的基础上,提出了一种软件体系结构评估方法,可作为 软件体系结构定量化评估方式的有力补充。 4 ) 在上述技术的基础上,提出了一种基于软件体系结构的软件开发过程 针对课题需求,提出了一种可行的基于软件体系结构的软件开发过程。该模 型考虑了软件体系结构开发的多个阶段,包括需求分析、设计、文档化、复审、 实现、测试及演化,为缩短项目产品研发周期提供了理论指导。 5 ) 基于软件体系结构的软件开发模式的实际应用 结合项目,将本论文提出方法运用于空调电子系统软件开发中,降低开发成 本,有效重用领域遗留系统,显著提高开发效率。 1 5 论文组织 本文一共分为八个章节,各章安排组织如下: 第一章绪论:本章首先对本文的研究背景和技术背景知识进行了介绍,指出 4 第一章绪论 了本文的研究意义,然后对国内外的相关研究工作进行了概述,最后简要介绍了 本文的组织结构。 第二章软件重用概述:本章首先详细介绍了软件重用相关概念和关键技术。 然后从软件重用层次角度,对比了不同层次的软件重用,并简要阐述了目前几种 较为成功的软件重用实践。 第三章软件体系结构:本章首先介绍了软件体系结构的概念,并对其研究现 状进行了阐述。然后,提出了一种易于理解的软件体系结构描述方法。再次,分 析了基于软件体系结构的软件重用的可行性。本章是全文的重点之一。 第四章程序切片技术与软件体系结构切片:本章首先介绍了程序切片技术的 概念,并对其分类进行介绍。然后,在已有的程序切片技术基础上,详细阐述了 软件体系结构切片的概念,分类,生成算法及其应用。本章是全文的重点之一。 第五章基于程序切片技术的软件体系结构评估:本章首先详细介绍了软件体 系结构的质量属性,以及目前软件体系结构评估方法,并基于度量的软件体系结 构评估原理,提出了一种基于程序切片技术的软件体系结构评估方法,可作为基 于度量的软件体系结构评估方法的有力补充。本章是全文的重点之一。 第六章基于软件体系结构的软件开发过程:本章首先介绍了目前常用的几种 软件开发模型,并对其优缺点分别进行了分析。然后,提出了一种基于软件体系 结构的软件开发过程,并对各个阶段分别进行了阐述。最后,结合课题,将本文 提出的方法进行实际应用。本章是全文的重点之一。 第七章结束语:本章对全文的内容进行总结,指出了本文特色和不足之处, 并对本文相关研究内容的下一步工作指出了方向。 电子科技大学硕士学位论文 2 1 引言 第二章软件重用概述 如今,计算机的应用遍布人们生活和工作的各个方面,产生了显著的社会生 产力。随着软件系统规模和复杂性的增长,软件质量变得越来越难以控制。根据 行业内国际权威组织s t a n d i s hg r o u pc h a o s 提供的统计资料,对2 0 0 2 年以来发布 的一系列软件项目调查数据进行统计,软件失败率调查结果如表2 1 所示。 表2 - 1 软件失败率调查嗍 年份成功比例失败比例有疑问比例 2 0 0 0 2 6 2 8 4 6 2 0 0 2 2 8 2 3 4 9 2 0 0 43 4 1 6 5 0 2 0 0 62 9 1 9 5 2 在软件开发过程中,由于设计、开发、测试人员及用户间的沟通、技术限制 等方面的原因,多阶段的软件开发过程不可避免地存在着错误积累与放大效应。 根据统计与经验表明,在软件开发各个阶段中,当前阶段的工作较上一阶段有一 定的程度扩展,其扩展倍数一般是5 到l o 倍,同时错误也同样被放大。图2 1 显 示了软件开发过程中错误积累及放大效应。 图2 - 1 软件开发过程中的错误积累与放大效应 同时,由于无法预料客户需求变化,软件开发常常面临巨大的风险,如开发 费用超出预算、软件开发周期超出客户要求、软件升级及维护无法进行等,从而 出现了软件危机。 6 第二章软件重用概述 针对日趋复杂的软件需求的挑战,软件业界发展出了软件重用技术。软件重 用技术被认为是解决软件危机的有力对策【1 6 】。如今,软件重用技术得到了众多学 者及工程实践人员的普遍关注,并出现了多种软件重用实践方法,如面向对象技 术、c a e 技术、软件产品线技术等等。然后其在实践中的应用效果仍然不尽如人 意,例如重用元素挖掘困难、重用方法难以理解、重用粒度小、后期维护工作复 杂,难以控制等等。如今人们开发探讨更大粒度的软件重用技术。 通常情况下,软件生命周期按照软件开发流程,可分为多个阶段,包含需求 分析、系统设计、代码编写、测试、维护及演化等多个阶段。每个阶段都会产生 阶段性成果,如需求说明书、系统设计方案、代码、标准测试程序、测试用例等 等。如果每个软件产品的开发都是从头开始,那么,在软件开发过程中就必然存 在大量重复的工作,而软件重用的目的正是为了避免软件开发过程中做大量重复 的工作,提高开发效率。 软件重用是在软件开发中避免重复劳动的解决方案,其出发点是软件系统的 开发不再一切从头开始,而是充分利用遗留系统开发中积累的知识和经验,如需 求获取方案、需求分析结果、设计方案、源代码、测试计划及测试用例等,从而 大大减少开发工作。同时,通过重用高质量的已有开发成果,避免了重新从零开 发可能引入的错误及缺陷,从而实现对软件质量的有效控制。 2 2 软件重用的概念 对于软件重用,目前还没有一个被公认的概念。不同的研究人员从不同的角 度对其进行了说明。本文所采用的对软件重用的定义为:软件重用是一种从遗留 系统及其有效元素构造新的软件系统的解决方案。其重用元素包括需求分析方案、 软件体系结构、系统设计方案、源代码、标准测试程序与测试用例等等。 软件重用的主要思想是:将软件看成是由不同功能部分所组成的有机体,每 一个重用元素可以被封装成完成同类功能的通用元素。这样,如果完成各种工作 的有机体被建立起来以后,开发特定软件的工作就变成了将各种不同重用元素组 织连接起来的问题,可大大减少开发工作,提高效率,同时,在很大程度上,保 证软件产品质量。 有关软件重用的研究主要集中两个方面:1 ) 可重用元素的深入准确挖掘;2 ) 可重用元素的大量有效重用。 可重用元素的深入准确挖掘涉及的关键因素包括软件再工程( s o f t w a r e 7 电子科技大学硕士学位论文 r c e n g i n e c r i n g ) 及领域工程( d o m m ne n g i n e e r i n g ) 等等。软件再工程是一个工程 过程,它通过系统理解的方法,包括对配置环境、运行时刻、源代码、设计分析、 文档等的全面理解,在现存系统的基础上构造满足新需求的系统。领域工程是为 一组相似或相近系统的应用工程建立基本能力和必备基础的过程,它通过对领域 中的系统进行分析,识别这些应用的共同特征和可变特性,形成领域模型。领域 工程的研究有助于开发领域内具有较高可重用性的元素,最终提高软件重用效率。 可重用元素的大量有效重用涉及的关键因素包括软件体系结构( s o f t w a r e a r c h i t e c t u r e ) 、软件开发模型( s o f t w a r ed e v e l o p m e n tm o d e l ) 、开放系统( o p e n s y s t e m ) 等方面【1 7 】。软件体系结构是对系统的高层抽象,有利于发现不同系统在 较高级别上的共同特性,可作为一种大粒度的、抽象级别较高的元素进行重用。 软件开发模型是对整个软件开发过程中各个阶段的组织,一个合适的软件开发模 型对软件开发的质量和效率有着重要影响。开放系统是指在系统的开发中使用接 口标准,为系统的演化提供了一个稳定的基础。 图2 2 给出了软件重用关键因素之间的关系。 2 3 软件重用粒度 图2 - 2 软件重用实现的关键因素 最有可能产生显著效益的重用是对软件生命周期中一些主要开发阶段的成果 的重用。按重用粒度进行划分,可将软件重用划分为代码级重用、设计级重用和 体系结构级重用三个级别。 第二章软件重用概述 2 3 1 代码级重用 代码级重用包括目标代码和源代码的重用。其中目标代码的重用级别最低, 当前大部分编程语言的运行支持系统都提供了连接、绑定等功能来支持这种重用。 源代码的重用级别略高于目标代码的重用,程序员在编写程序时,把一些可在今 后重复使用的代码段特殊保存对待,从而在今后需开发相似功能的程序时,只需 进行复制即可。但这样往往会产生一些新旧代码不匹配的错误,也无法实现大规 模的源代码重用。 2 3 2 设计级重用 设计比源程序的抽象级别高,因此设计级重用受实现环境的影响较少,从而 使可重用构件被重用的机会更多,并且所需的修改更少。这种重用有三种途径, 第一种途径是从现有系统的设计结果中提取一些可重用的设计构件,并把这些构 件应用于新系统的设计;第二种途径是把一个现有系统的全部设计方案在新的软 硬件平台上重新实现,也就是把一个设计运用于多个具体的实现;第三种途径是 独立于任何具体的应用,有计划地开发一些可重用的设计构件。 2 3 3 软件体系结构级重用 通过对软件体系结构的研究有利于发现不同系统在较高级别上的共同特性; 获得正确的体系结构对于进行正确的系统设计非常关键。对各种软件体系结构的 深入了解,使得软件工程师可以根据一些原则在不同的软件体系结构之间做出选 择;从体系结构的层次上表示系统有利于系统较高级别性质的描述和分析。为重 用而开发的软件体系结构可以作为一种大粒度的、抽象级别较高的软件体系结构 进行重用,而且软件体系结构还为部件的组装提供了基础和上下文,对于成功的 重用具有非常重要的意义。 由此可知,代码重用粒度最小。而体系结构重用,其重用粒度最大,可获得 较高的重用效率。有关软件体系结构,将在第三章详细阐述。 2 4 软件重用实践 软件重用自提出之日起,如何将软件重用成功应用于实践当中这一问题是研 究的热点。判断一种软件重用技术取得成功的重要准则是,其在多大程度上达到 9 电子科技大学硕士学位论文 了软件工程的目标。当前阶段成功的软件重用实践有面向对象技术、软件生成技 术、设计模式及软件生产线等几种。 2 4 1 面向对象技术 面向对象技术是较为成功的软件重用技术。面向对象技术可通过提高方法的 聚合性、减小方法的规模和交互耦合的程度,以及利用继承机制、委托和封装等 来提高软件的可重用性。面向对象中的类是较理想的可重用元素,它具有实例重 用、继承重用和多态重用三种重用方式。如今,面向对象技术在各类工程实践中 得到了广泛的应用,但同时它具有重用粒度较小、重用效率较低等缺点。 2 4 2 软件生成技术 软件生成技术是按照形式化的软件功能描述和一定的生成机制,由生成器系 统主动地生成目标程序的一种软件重用技术。这种方法所使用的可重用元素是生 成器本身的代码板或隐藏在变换规则集中的模板。这种技术抽象级别高,需要有 可重用软件库和知识库的支持,也是c a s e 技术的核心。 2 4 3 设计模式 设计模式是面向对象的软件开发的经验总结。一个设计模式事实上是系统地 命名、解释和评价某一个可重现的面向对象的设计方案。在编写程序时,很多情 况下代码不是从头开始编写,而是通过模仿他人的设计及程序,再经过一定改造 使之适应当前情况。设计模式可以视为这种模仿的一种抽象,包含一组规则,描 述了如何在软件开发领域中完成一定的任务。设计模式包括四个基本成分:模式 名称、问题、解决方案及后果。后果描述应用设计模式的结果和权衡,如比较与 其他设计方法的异同,得到应用设计模式的代价和优点等。 设计模式是程序设计经验的重用,易于理解且出错率较小。但是,设计模式 难以支持复杂的、大规模系统的开发、维护及演化。 2 4 4 软件产品线技术 软件产品线技术提出的目的为以生产线方式开发软件。卡耐基梅隆大学对软 件产品线给出如下定义:产品线是一个产品集合,这些产品共享一个公共的、可 管理的特征集,这个特征集能满足选定的市场或任务领域的特定需求1 引。 l o 第二章软件重用概述 软件产品线主要由两部分组成:核心资产和产品集合。核心资产是领域工程 的所有结果的集合,是产品线中产品构造的基础,包含产品线中所有产品共享的 产品线体系结构,新设计开发或者通过对现有系统的再工程得到的、需要在整个 产品线中系统化重用的软件构件;与软件构件相关的测试计划、测试实例以及所 有设计文档、需求说明书。同时,领域模型和领域范围的定义也是核心资产。 基于软件生产线的软件开发包括三个关键活动:核心资产开发、软件产品开发 以及支持以上两个部分的技术和组织管理。这三个活动极为重要,而在实际的工 程应用中,第三个活动,即支持前两个活动的技术和组织管理,往往被忽略。 对于计划应用软件生产线技术的企业,可直接从核心资产开发出发来构建软件 生产线,也可从以后的产品来开发核心资产,目的都是充分挖掘软件的共性组成 生产线的核心资产,以便在将来的软件开发中能够大粒度地重用。 使用软件产品线技术开发软件产品,按照实施流程,主要分为六个阶段,如 图,如图2 3 所示。 业务组件 信息内容设计 客户系统 实施 业务组件 自动生成 系统测试 与自动打包 业务流程 分析与设计 按业务流程组 装业务组件 图2 3 使用软件产品线技术开发流程 基于生产线方式的软件生产会大幅度提高软件开发的效率和质量,但同时也 存在风险,主要在于:1 ) 技术风险:生产线方式生产软件是一种较新的技术策略, 存在技术风险;2 ) 组织和管理风险:这些在实际操作中更易于被忽略。有效规避 这两类风险需要富有经验的技术人员和组织管理人员高效地配合,同时,需要对 软件开发中的各种问题进行及时的解决。另一方面,构建完善的软件生产线技术 门槛高,研发周期长,这也成为企业参考的重要因素。 由此可看出,目前常用的几种软件重用方法各有优劣,下一节将讨论软件体 系结构的概念,并探讨基于软件体系结构的软件重用的可行性。 2 5 小结 本章对软件重用主要研究内容进行了概述。首先详细介绍了软件重用相关概 念。然后,从软件重用层次角度,对比了不同层次的软件重用,并引出了软件体 电子科技大学硕士学位论文 系结构的概念。最后,简要阐述了目前几种较为成功的软件重用实践。 1 2 第三章软件体系结构 3 1 引言 第三章软件体系结构 自从软件体系结构的概念被提出之日起,软件体系结构就被认为是控制软件 复杂度、提高软件产品质量、支持软件开发和重用的重要方法。1 9 9 5 年出版的i e e e s o f t w a r e 体系结构专刊【1 9 】和1 9 9 6 年出版的专著s o f t w a r ea r c h i t e c t u r e : p e r s p e c t i v e so na ne m e r g i n gd i s c i p l i n e ) ) 幽】,标志着软件体系结构已经作为软件工 程一个研究方向。如今有关软件体系结构的研究已经解决了一些基本问题,逐步 从系统设计阶段扩展到对整个软件生命周期,且开始了在实际软件开发中应用软 件体系结构的探索【2 1 1 。 软件体系结构的研究对软件工程领域产生了非常重要的意义。首先,软件体 系结构实现了对系统的高层抽象。其次,软件体系结构影响着系统的质量,可对 软件产品质量进行有效预测。再次,软件体系结构有助于循序渐进的系统开发, 并可作为可传递和重用的模型。 3 2 软件体系结构的概念 虽然软件体系结构已经在软件工程领域中有着广泛的应用,但迄今为止还没 有一个被公认的定义。许多专家学者从不同角度对软件体系结构进行了定义,其 中较为典型的定义有: 1 ) d e w a y n ep e r r y 和a l e x a n d e rw o l f 曾这样定义:软件体系结构是具有一定形 式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构 件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同 部分组合连接起来。这一定义注重区分处理构件、数据构件和连接构件,这一方 法在其他的定义和方法中基本上得到保矧2 2 1 。 2 ) d a v i dg a r l a n 和d e w n ep e r r y 于2 0 0 0 年在国际电气和电子工程师协会软件 工程学报上又采用如下定义:软件系统结构是一个程序系统各构件的结构、它们 之间的相互关系以及进行设计的原则和随时间演化的指导方针【2 3 1 。 在本论文中,沿用较为广泛的定义,即软件体系结构是组成系统的部件 电子科技大学硕士学位论文 ( c o m p o n e n t ) 以及部件与部件之间交互作用关系( 连接件( c o n n e c t o r ) )高层抽象 【2 4 】 o 定义3 1 :部件c o m 是系统中承担一定功能的数据或计算单元。c o m = ( p 砥s , i m p - b s ) ,其中p o r t s 是部件接口集合,i m p b s 是部件的实现。p o r t s = p e a l , p e n 2 ,p o r tn ) ,而p o r ti = ( i d ,p u b l i ,e x t i ,p r v t i ,b e h a i ,m s g i ,c o n s i ,n f u n i , p l y i ,其中,i d 为部件标识,p u b l i 是p o r ti 向外提供的功能的集合,e x t i 是外部 通过p o r ti 向部件提供的功能的集合,p r v ti 是p o r ti 和b e h a i 是分别是p o r ti 的私 有属性集合和行为方法集合,m s g i 是p o r ti 产生的消息的集合,与事件有关c o n s i 是p o r ti 的行为约束,n f u n i 是p o r ti 的非功能说明,p l y i 是与连接件交互点自集 合。 定义3 2 :连接件c o n 是系统中承担部件间交互语义的连接运算单元。c o n = ( i d ,b e h a , m s g ,y f u n , c o n s ,r o l e ) 。其中,d 为连接件的标识,b e h a 是连接件行 为语义的描述,m s g 是部件与各r o l e 交互事件产生的消息的集合,n f u n 为连接件 的非功能描述,c o n s 是连接件语义约束的集合,r o l e 是连接件与部件交互点的集 厶 口。 定义3 3 :软件体系结构是由部件通过连接件及其之间的语义约束形成的拓扑 网络n s a = c o m s ,c o n s , c o n s t ) ( 称软件体系结构网络或软件体系结构网络模型) , 其中c o i n s 是部件的集合,c o n s 是连接件的集合,c o n s t 是部件与连接件之间的 语义动态、静态约束。 目前有关软件体系结构的研究主要有:软件体系结构风格、软件体系结构描 述语言、软件体系结构设计,测试与验证、软件体系机构重用、软件体系结构评 估、特定领域软件体系结构参考模型及软件体系结构相关工具等。 3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 病号心理测试题及答案
- 宝鸡焊工考试题及答案
- 民法自考试题及答案
- 教育哲学考试题及答案
- 炭疽防治考试题及答案
- java容器面试题及答案分享
- 2025年广东惠州仲恺高新区中小学校教师招聘考试笔试试题(含答案)
- 2025年福州市文化艺术事业单位招聘考试笔试试题(含答案)
- 北京电商运营知识培训课件
- 三基护理试题及答案大全
- 2025年四川省成都市锦江区中考数学二诊试卷(含部分答案)
- 食源性疾病防治知识
- API RP 5A3-2023 套管、油管和管线管的螺纹脂推.荐方法
- 行政岗干货知识培训课件
- 向上沟通培训课件
- 食品配送车辆管理制度
- 2025智联招聘行测题库及答案解析
- 网站篡改演练方案
- 《2025年CSCO卵巢癌诊疗指南》更新要点解读
- 2025年-四川省安全员《A证》考试题库及答案
- GB/T 12643-2025机器人词汇
评论
0/150
提交评论