(计算机应用技术专业论文)软件演化技术在mis中的应用研究.pdf_第1页
(计算机应用技术专业论文)软件演化技术在mis中的应用研究.pdf_第2页
(计算机应用技术专业论文)软件演化技术在mis中的应用研究.pdf_第3页
(计算机应用技术专业论文)软件演化技术在mis中的应用研究.pdf_第4页
(计算机应用技术专业论文)软件演化技术在mis中的应用研究.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(计算机应用技术专业论文)软件演化技术在mis中的应用研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

哈尔滨理t 火学t 学硕1 j 学位论文 软件演化技术在m i s 中的应用研究 摘要 管理信息系统在现实生活中有着广泛的应用,企业利用管理信息系统控 制企业的行为,帮助企业实现其规划目标。随着管理信息系统的广泛使用和 市场需求量的扩大,在管理信息系统的开发和运行维护阶段都出现了很多问 题。这些问题主要是由于用户需求的不断变化导致对系统的修改难度增大。 而软件演化技术的核心就是研究软件如何适应改变,因此本文采用软件演化 技术解决管理信息系统开发维护阶段存在的问题。 首先,本文针对设计开发阶段管理信息系统适应变化能力不足的问题, 结合软件静态演化技术中的重构技术,在管理信息系统开发阶段在类之间和 类之中对软件进行演化,在演化过程中采用了设计模式中的s t a t e 模式从而使 得系统能更好的适应变化。 其次,针对已经投入使用的管理信息系统如何在不停机的情况下进行系 统的修改进行了动态演化研究,并提出了用d l l 结合反射技术实现管理信息 系统动态演化的方法。按照方法提出的步骤,可以顺利实现某一类系统的构 件动态替换,如:实现组件的动态添加、替换,而不影响功能,从而达到软 件动态演化的目的。 最后,本文通过一个案例说明静态演化和动态演化的过程,并证明了文 中提出的静念演化和动态演化方法的可行性。 关键词管理信息系统;维护;静态演化;动态演化 r e s e a r c ha n da p p l i c a t i o no fs o f t w a r ee v o l u t i o n t e c h n o l o g y i nm i s a b s t r a c t m i sh a sb e e nw i d e l yu s e di no u rd a i l yl i f e ,c o m p a n i e su s et h ei n f o r m a t i o n p r o v i d e db ym i st od ob u s i n e s sm o r ee f f e c t i v e l y , i no r d e rt o c o m p l e t et h e p l a n n i n gg o a l s a st h em a r k e t i n gd e m a n df o rm i s i n c r e a s e s ,p r o b l e m se m e r g ea t s t a g eo fd e v e l o p m e n t a n dm a i n t e n a n c e t h ep r o b l e m sm a i n l yd u e t ot h e c o n s t a n t l yc h a n g eo ft h eu s e r s r e q u i r e m e n t sm a k i n g m o d i f i c a t i o no ft h es y s t e m m u c hm o r ed i f f i c u l t t h ec o r eo ft h es o f t w a r ee v o l u t i o nt e c h n o l o g yi s t os t u d y h o wt om a k es o f t w a r em o r ea d a p t i v et oc h a n g e s ,b e c a u s eo fw h i c h ,t h ep a p e r u s e ss o f t w a r ee v o l u t i o nt e c h n o l o g yt os o l v et h ep r o b l e m s f i r s t l v w ea d o p tr e f a c t o r i n gt e c h n o l o g yt o s o l v et h ep r o b l e mo fl a c k i n g a d a p t a b i l i t yt oc h a n g ed u r i n gt h em i s d e v e l o p m e n ts t a g e e v o l v i n gt h es y s t e mm c l a s sa n db e t w e e nc l a s s e s a n da d d i n gt h es t a t ed e s i g np a t t e r n t ot h ec a u s e0 t e v o l u t i o nt og e tb e t t e ra d a p t a b i l i t y s e c o n d l y w ep r e s e n tas o l u t i o nt h a ta l l o w st h es y s t e m st o r e m a i na c t i v e w h i l et h e ya r ee v o l v i n g o u ra p p r o a c hi st ou s e d l la n dr e f l e c t i v et e c h n o l o g yt o d y n a m i c a l l ye v o l v e t h es y s t e m f o l l o w i n gs t e p so ft h ea p p r o a c h ,w e c a n s u b s t i t u t ec o m p o n e n t sd y n a m i c a l l y i nm i s ,f o ri n s t a n c e ,a d d i n g ,d e l e t i n g c o m p o n e n t sw i t h o u ta f f e c t i n gf u n c t i o n a l i t yo f t h es y s t e ms ot h a tt h es y s t e mc a n b ed y n a m i c a l l ye v o l v e d f i n a l l y , w ep r e s e n tt h ep r o c e s so ft h es t a t i ca n dd y n a m i ce v o l u t i o nw i t ha c o n c r e t es y s t e m ,t h r o u g hw h i c ht e s t i f i e dt h ec o l q e c t n e s so f t h ea p p r o a c h k e y w o r d s m a n a g e m e n ti n f o r m a t i o n d y n a m i ce v o l u t i o n s y s t e m ,m a i n t e n a n c e ,s t a t i c e v o l u t i o n , i i 哈尔滨理工大学硕士学位论文原创性声明 本人郑重声明:此处所提交的硕士学位论文软件演化技术在m i s 中的应 用研究,是本人在导师指导下,在哈尔滨理工大学攻读硕士学位期间独立进行 研究工作所取得的成果。据本人所知,论文中除己注明部分外不包含他人已发表 或撰写过的研究成果。对本文研究工作做出贡献的个人和集体,均已在文中以明 确方式注明。本声明的法律结果将完全由本人承担。 作者签名:蓥馋蔷日期:加7 年中月多日 哈尔滨理工大学硕士学位论文使用授权书 软件演化技术在m i s 中的应用研究系本人在哈尔滨理工大学攻读硕士 学位期间在李成严导师指导下完成的硕士学位论文。本论文的研究成果归哈尔滨 理工大学所有,本论文的研究内容不得以其它单位的名义发表。本人完全了解哈 尔滨理工大学关于保存、使用学位论文的规定,同意学校保留并向有关部门提交 论文和电子版本,允许论文被查阅和借阅。本人授权哈尔滨理工大学可以采用影 印、缩印或其他复制手段保存论文,可以公布论文的全部或部分内容。 本学位论文属于 保密口,在年解密后适用授权书。 不保密q 。 ( 请在以上相应方框内打) 作者签名:痞佟看r 期:跏一7 年中月 否 日 导师签名: 番莜芗 同期:力卯7 年, 7 - 月石同 哈尔滨理丁人学丁学硕f j 学位论文 第1 章绪论 1 1 课题研究背景及意义 在信息技术高度发达的当今社会,企业管理信息系统( m a n a g e m e n t i n f o r m a t i o ns y s t e m ,m i s ) 几乎无处不在,企业利用m i s 中先进的管理思想和管理 方法管理企业的业务流程,可以说m i s 对企业的发展起着至关重要的作用。但是 随着m i s 的广泛使用和市场需求量的扩大,在m i s 的开发和维护阶段都出现了很 多问题,这些问题主要分为两个方面:在m i s 开发过程中,开发人员会随着需求 不断变化而不断修改m i s ,加大了m i s 的开发难度;在m i s 的后期维护升级过程 中,通常要停止整个系统进行软件更新,这对一些要求m i s 连续运行性较高的企 业会造成一定的损失。 针对m i s 上述存在的问题,研究人员采用了很多方法来解决,现有最常用 的方法是软件复用技术和软件构件技术n 引。这些方法能有效减少m i s 在开发阶 段因改变而重新编写的代码数量,但是对m i s 更好的适应变化能力并没有质的 提高。 软件演化( s o f t w a r ee v o l u t i o n ) 指 在软件系统的生命周期内软件维护和软件 更新的动态行为| 3 1 。而软件演化技术的核心问题就是研究软件如何适应改变。基 于这些原因,软件演化技术成为本文解决m i s 开发和维护阶段问题的方法。 现阶段软件演化技术已成为软件工程领域罩最活跃最受关注的一项技术, 很多新兴的软件技术都被划分到软件演化技术的研究领域,例如:e x t r e m e p r o g r a m m i n g h 3 ,a g i l es o f t w a r ed e v e l o p m e n t 体,引,a o p ,这些新技术的应用使得 软件适应变化的能力大大提高,软件演化技术的不断发展对于软件的开发和维 护必将带来深远的影响。 在欧美发达国家9 0 以上的企业实现了信息化管理。尤其近些年来,国内 的企业信息化管理软件厂商纷纷崛起,如用友,金蝶,浪潮。国内企业越来越 重视信息化管理软件带给企业的效益,m i s 系统的需求也日益增多。这些都说明 了m i s 的重要性,解决m i s 开发和维护阶段存在的问题也被提上了同程,因此研 究软件演化技术来解决m i s 存在的问题具有深远的现实意义。 喻尔滨理t 人学t 学硕f j 学位论文 1 1 1m i s 的研究现状 管理信息系统是一个由人、计算机及其他外围设备等组成的能进行信息的 收集、传递、存贮、加工、维护和使用的系统| 8 1 。它是- - i _ 新兴的科学,其主要 任务是最大限度的利用现代计算机及网络通讯技术加强企业的信息管理,通过 对企业拥有的人力、物力、财力、设备、技术等资源的调查了解,建立正确的 数据,加工处理并编制成各种信息资料及时提供给管理人员,以便进行j 下确的 决策,不断提高企业的管理水平和经济效益。在国外的发达的国家得到了广泛 地开发与应用。它已经大量应用于生产、通信、交通、运输、邮电、商业、文 化教育等各个方面。 m i s 于8 0 年代进入我国之后,经过多年的发展变化,在理论和实践的不断的 探索中,取得众多成果,推进了我国企业信息化建设的进程,提高了企业管理 的效率和水平。它是由收集、存储、检索等处理信息的各种要素组成的,并产 生对信息管理者有用的信息,它是辅助管理者做出决策的一个集合体,为企业 或事业的管理、决策提供服务,它能测定企事业的各种运行情况,并利用现有 的信息分析现在状况并预测未来前景。尤其是对于一个以销售服务为核心的、 业务模式成熟的中小型企业,构建m i s 来处理业务数据,既能保证数据的安全性, 又能实现数据共享和分级管理,还能方便查询、修改、统计并形成报表打印上 报。 我国软件产业的软件生产力比其他国家来说存在一定的差距。很多中小软 件开发公司所采用的开发方法还是面向功能的。中小型m i s 在m i s 产品中占了相 当的比重,中小型软件开发有自身的特点项目功能较少,项目人员较少,开发 周期较短,功能需求灵活而且变更频繁,与其他软件项目相比受市场的影响更 大,无疑增加了开发的风险。一般一个中小型m i s 开发只允许几个月的时间,而 且在如此短的时间内,需求调查、需求分析、设计、编码只占用相对较少的工 作量,大部分的时问都用在应对用户需求变更上。传统的解决方法在减少重复 性工作上取得了一定的成果,但是并不能使软件更好的适应变化。 1 1 2软件演化技术的研究现状 当今软件演化研究领域有两大主流观点,一方面是w h a ta n dw h y 观点,一 方面是h o w 观点阳1 。w h a ta n dw h y 观点主要把软件演化作为一门科学规律进行 研究,它试图研究软件演化现象的本质,并对演化的驱动因素进行分析和解释。 哈尔滨理t 人学t 学硕i j 学位论文 该观点主要是对软件演化进行理论方面的研究“0 。h o w 观点把软件演化作为一 门工程规律来进行研究,它主要研究软件开发人员和项目经理每天遇到编程方 面的任务,并且该观点主要关注软件演化的技术、方法、工具、以及实现并控 制软件演化的活动。本文主要是研究后面一种观点即软件演化技术。 1 1 2 1国外研究现状软件反向工程和软件再工程:软件反向工程是软件演 化技术研究的一个重要领域1 。该活动主要是用来理解只有源代码是唯一可靠 信息的大型软件的行为和体系结构上。软件反向工程的目的在于从程序源代码 中构造更高层的、更抽象的软件模型。软件再工程主要是为了从原有软件系统 获得共容易演化、功能更多的软件系统。 渐进式变化技术( i n c r e m e n t a lc h a n g et e c h n o l o g y ) :在软件的开发实现阶段, 由于需求的不断调整,需要对软件进行相应的改变,但是有些改变被证明是不 能被直接进行改变的,因此对软件的重构2 i 就被用来对需求的变化进行相应的 整合。y a u “3 1 等人提出了c h a n g em i n i c y c l e 技术来应对软件开发时期的变化问 题。b o h n e r 和a r n o l d i 研究了预测变化影响程度的技术,从而决定是否有 必要对原有系统做出改变。r a j l i c h 和g o s a v i 5 1 6 1 研究了软件模块与模块变化 所产生的连带关系。在软件的实现阶段,a r n o l d ”7 1 和b r i t oea b r e u 以及 m e l o 【1 8 通过改进软件的内部结构来使软件更好的适应变化,但是这种改进并不 改变软件的外部行为。在软件改变后的验收阶段,回归测试技术圳成为验证软 件是否因改变而出现性能退化的主要技术。 由演化引出的管理技术( m a n a g e r i a li s s u e s ) :各种调查研究表明,8 0 的软件 维护工作都并不是对软件进行错误性的更正圳。软件维护所需的时间占软件生 产时i 、日j 的5 0 以上幢。在这个领域主要存在两种观点:一些研究学者认为应该根 据现有经验开发出更为精确的预测软件演化所需的代价与努力的模型1 2 2 2 引。另一 些学者认为应该对软件演化进行软件质量确认,如果软件的质量能够被测量, 就可以防止软件因演化而出现性能退化,现在已经有很多用来测量软件特性的 指标,例如:复杂性,聚合性,耦合性等比6 。2 9 。 基于自反射的动态软件研究:反射式中间件是一种通过开放内部实现细节以 获取高灵活性的中问件m 1 。具体而言,通过引入反射原理,中问件运行时的内 部状态和行为可通过一种受限方式访问和操纵。系统的反射性是指系统能够提 供对自身状态和行为的自我描述( 简称自述) ,并且系统的实际状态和行为始终与 自述保持一致,也就是说,对自述的改变能够立即反映到系统实际的状态和行 为,而系统的实际状态和行为改变也能够立即在自述中反映出来。一个反射系 统通常定义了一个层次化的反射体系,包括一个基层和一个或多个元层 哈尔演理下人学t 学硕i j 学位论文 ( m e t a 1 e v e l ) 。工作在基层中的实体( 基层实体) 执行系统j 下常的业务功能,而工作 在元层中的实体( 元层实体) 负责建立和维护系统自述。 1 1 2 2国内研究现状国内对于软件演化技术的研究起步相对较晚,但也取 得了丰富的成果。 北京大学黄罡,梅宏旧“3 2 1 研究了基于自反射中间件p k u a s 的运行时软件体系 结构( r u n t i m es o f t w a r ea r c h i t e c t u r e ) ,实现了e j b 构件的在线演化,他们的研究 基于单个e j b 容器内的构件演化。 基于图的动态体系结构的研究:文献 3 3 和文献 3 4 】提出一种面向“图”的 分布式w e b 应用软件系统架构技术,利用严格定义的“图 来作为描述分布式 w 曲应用软件体系结构的基本手段,并用图上的操作来支持系统体系结构的动态 重配置。这种以图来表示的软件体系结构不仅仅是高层的抽象描述,同时也是 具体的可操作的对象实体,从而有助于提高体系结构与最终实现之间的可追溯 性该对象存在于具体的系统实现中,充当了两个关键的角色:( 1 ) 沟通各分布 的计算构件之间的通信中间件;( 2 ) 整个应用的体系结构框架。通过在系统实现 中显式地使用表述体系结构的对象,整个系统获得了类似自反射中问件的能力, 从而为支持体系结构的动态重配置提供了便利。 综上,国外的软件演化技术的研究水平高于国内,对软件运行过程中进行 演化的技术少于开发阶段演化的技术,虽然软件演化技术已经在很多领域进行 应用,但是并没有对m i s 进行过具体的演化论证。 1 2 课题主要研究内容 基于m i s 开发和维护阶段存在的问题,本文在深入分析解决问题方法软件演 化技术现状的基础上,对解决问题的软件演化技术进行应用研究,具体工作如 下: 首先,针对m i s 开发和维护阶段传统技术存在的问题,结合软件演化技术的 特点,确定应用软件演化技术从静态和动态两方面提高m i s 的演化能力。 接下来,介绍了目前软件演化技术涉及的领域和其中的问题,以及问题现 在的解决方案。 最后,结合具体实例,在应对需求变化和不停机维护方面应用了本文分析 的软件演化技术,从动态和静态验证了系统演化能力的提高。 哈尔滨理t 人学t 学硕l j 学位论文 1 3论文结构 全文共分五章,具体结构安排如下: 第1 章,介绍课题的研究背景及发展现状,明确研究的目的和意义,对本 文的主要工作进行简要的介绍,并给出全文的整体结构。 第2 章,分析解决问题的软件演化技术:重构与基于反射的d l l 分别从静 态和动态两个方面提高软件的演化能力。 第3 章,具体分析重构技术在m i s 开发阶段如何提高软件演化能力。 第4 章,具体分析基于反射的d l l 技术在m i s 维护运行过程中如何提高软 件演化能力。 第5 章,结合一个m i s 应用实例,应用软件上述演化技术解决m i s 开发和 维护阶段存在的问题,并进行相关验证。 哈尔滨理t 人学t 学硕i j 学位论文 第2 章相关技术分析 管理信息系统是一个由人、计算机等组成的能进行信息的收集、传送、储 存、维护和使用的系统,能够实测企业的各种运行情况,并利用过去的历史数 据预测未来,从企业全局的角度出发辅助企业进行决策,利用信息控制企业的 行为,帮助企业实现其规划目标。这罩给出的定义强调了管理信息系统的功能 和性质,也强调了管理信息系统中的计算机对企业管理而言只是一种工具。管 理信息系统是信息系统的重要分支之一,经过3 0 多年的发展,已经成为一个具 有自身概念、理论、结构、体系和开发方法的覆盖多学科的新学科。软件演化 ( s o f t w a r ee v o l u t i o n ) 指在软件系统的生命周期内软件维护和软件更新的动态行 为。在现代软件系统的生命周期内,演化是一项贯穿始终的活动,系统需求的 改变、功能实现的增强、新功能的加入、软件体系结构的改变、软件缺陷的修 复、运行环境的改变无不要求软件系统具有较强的演化能力,能够快速适应改 变,减少软件维护的代价1 3 引。 2 1m i s 分析 2 1 1m i s 的主要组成和任务 m i s 通常由四个部件构成:信息源、信息处理器、信息用户和信息管理者。 信息源是信息的产生地;信息处理器负担信息的传输、加工、保存等任务;信 息用户是信息的使用者,利用信息进行决策;信息管理者负责信息系统的设计、 实现和维护。 m i s 一般被看作_ 个会字塔形的结构,分为从底层的业务处理到运行控制、 管理控制、最高层的战略计划。最基层由任务巨大处理繁杂的事务信息和状态 信息构成。层次越往上,事务处理的范围越小,针对的也是比较特殊和非结构 化的问题。 一个组织的管理信息系统可分解为四个基本部分: 1 e d p ( e l e c t r o n i cd a t ap r o c e s s i n g ) 部分主要完成数据的收集、输入, 数据库的管理、查询、基本运算、日常报表的输出等。 2 分析部分主要在e d p 基础之上,对数据进行深加工,如运用各种管 理模型、定量化分析手段、程序化方法、运筹学方法等对组织的生产经营情况 哈尔滨理t 人学t 学硕i j 学位论文 进行分析。 3 决策部分m i s 的决策模型多限于以解决结构化的管理决策问题为主, 其决策结果要为高层管理者提供一个最佳的决策方案。 4 数据库部分主要完成数据文件的存贮、组织、备份等功能,数据库是 m i s 的核心部分。 此外,一个组织的m i s 可以根据管理功能的不同划分为纵向的子系统。主 要的子系统有: 1 库存管理子系统功能包括对库存的控制、库存台账的管理、订货计划 的制定和仓库自身管理等。 2 生产管理子系统功能包括物料需求计划的制定、生产计划的安排、生 产调度和日常生产数据的管理分析等。 3 人事管理子系统功能包括人员的档案管理、人员考勤情况管理、人员 各种保险基会的管理和人员培训计划的制定等。 4 财务管理子系统功能包括财务账目管理、生产经营成本管理、财务状 况分析和财务计划的制定等。 5 销售管理子系统功能包括销售计划的制定、销售状况分析、顾客信息 的管理和销售合同的管理等。 6 决策支持子系统功能包括企业经营战略的制定、企业资源的分配等。 系统功能子系统的划分因企业的生产经营特点的不同而存在差异,上面的六个 功能子系统一般企业都具有的,而且上面的每一个子系统可以进行更细层次的 划分,这里我们不再作详细的说明。 m i s 辅助完成企业日常结构化的信息处理任务,一般认为m i s 的主要任务 有如下几方面: 1 对基础数据进行严格的管理要求计量工具标准化、程序和方法的j 下确 使用,使信息流通渠道顺畅。有一点要明确,“进去的是垃圾,出来的也是垃 圾”,必须保证信息的准确性、一致性。 2 确定信息处理过程的标准化统一数据和报表的标准格式,以便建立一 个集中统一的数据库。 3 高效低能地完成日常事务处理业务优化分配各种资源,包括人力、物 力、财力等。 4 充分利用已有的资源包括现在和历史的数据信息等,运用各种管理模 型,对数据进行加工处理,支持管理和决策工作,以便实现组织目标。 哈尔滨理t 人学t 学硕 :学位论文 2 1 2 m i s 的特点 m i s 的特点可以从七个方面来概括: 1 m i s 是一个人机结合的辅助管理系统。管理和决策的主体是人,计算机 系统只是工具和辅助设备。 2 主要应用于结构化问题的解决。 3 主要考虑完成例行的信息处理业务,包括数据输入、存储、加工、输出, 生产计划,生产和销售的统计等。 4 以高速度低成本完成数据的处理业务,追求系统处理问题的效率。 5 目标是要实现一个相对稳定的、协调的工作环境。因为系统的工作方法、 管理模式和处理过程是确定的,所以系统能够稳定协调地工作。 6 数据信息成为系统运作的驱动力。因为信息处理模型和处理过程的直接 对象是数据信息,只有保证完整的数据资料的采集,系统才有运作的前提。 7 设计系统时,强调科学的、客观的处理方法的应用,并且系统设计要符 合实际情况。 2 1 3m i s 在开发维护过程中存在的适应性问题 在m i s 开发阶段,存在以下几个问题导致系统在需求发生变化时的适应性 不足,从而增大了开发的难度与工作量: 1 设计不足传统的软件开发方法是面向功能的,没有采用软件设计方面 的知识。另外,m i s 的开发周期通常比较短,迅速使代码运行起来是很多公司 压倒一切的要求,开发人员被要求在现有系统中快速添加新功能,而这往往伴 随着巨大的压力,使我们无法改进既有代码的设计。 2 软件复用率低软件复用是提高软件开发效率、改善软件质量得重要途 径。正如一座房屋由许多门、窗、墙、楼板等构件构成,一台机器由许多零部 件构成一样,一个软件系统也是由许多构件构成的,其中很大部分可以复用己 有的构件,无须重复设计和编程。然而利用传统的开发方法开发的软件大多是 一段程序或模块的复用,软件复用的利用率和效果都不是很好。比如用面向功 能方法开发的系统,它的软件系统是建立在企业业务流程的基础上的,而各个 企业的业务流程通常都是有差别的,所以不能直接套用别人的模块,只能针对 这个业务流程重新设计一个模块。 3 可读性差难以理解开发人员在开发m i s 的过程中使用的变量名和函数 哈尔演理- e 人学t 学硕i j 学位论文 名信息量不足,甚至会引起误导作用。函数可能使用大量全局变量以及定义模 糊的冗长的参数列表。函数本身冗长,难以理解,聚合性高,耦合性低。控制 流不清晰,难以找到来龙去脉。程序的意图几乎无法理解,因为代码可能经过 多个维护者之手不断修改,而这些维护者几乎都没有理解自己的修改会造成怎 样的后果。 2 2软件演化的基本概念 1 软件演化与软件维护从软件演化的概念来看,软件演化和软件维护有 着密切联系,但软件维护是对现有的已交付的软件系统进行修改,使得目标系 统能够完成新的功能,或是在新的环境下完成同样的功能,主要是指在软件维 护期的修改活动。而软件演化则是着眼于软件的整个生命周期,从系统功能行 为的角度来观察系统的变化,这种变化是软件的一种向前的发展过程,主要体 现在软件功能的不断完善。在软件维护期,通过具体的维护活动可以使系统不 断向前演化。因此,软件维护和软件演化可以归结为这样一种关系:前者是后 者特定阶段的活动,并且前者直接是后者的组成部分。 2 软件演化与软件复用软件演化的过程,也是通过修改软件的组成成分 适应变化的过程。在这一过程中,通常我们会尽可能复用系统已有的部分,降 低演化的成本和代价。因此支持软件演化的技术通常也包含了软件复用的部分 技术,如基于构件的开发、构件复用技术等等。与软件复用一样,软件演化也 可能发生在时间、平台、应用三个维上腿1 : ( 1 ) 软件以以前的软件版本作为新版本的基础,适应新需求,加入新功能, 不断向前演化。 ( 2 ) 软件以某平台上的软件为基础,修改其和运行平台相关的部分,运行在 新的平台上,适应环境变化。 ( 3 ) 特定领域的软件演化后应用于相近的应用领域。 尽管软件演化和软件复用具有如上的共同特性,但它们研究问题的出发点 和手段目的都是不同的。软件复用的目的是避免软件开发的重复劳动,提高软 件开发的质量和效率。而软件演化着眼于整个软件的生命周期,研究如何在较 低的开发代价的情况下,延长软件的生命周期,提高软件适应改变的能力。 3 软件演化的分类软件演化从总体上可基本上分为两种:静态演化和动 态演化。 ( 1 ) 静态演化( s t a t i ce v o l u t i o n ) 是指软件在停机状态下的演化。其优点是不 哈尔滨理t 人学t 学硕i 学位论文 用考虑运行状态的迁移,同时也没有活动的进程需要处理。然而停止一个应用 程序就意味着中断它提供的服务,造成软件暂时失效。 ( 2 ) 动态演化( d y n a m i ce v o l u t i o n ) 是指软件在执行期间的软件演化。其优 点是软件不会存在暂时的失效,有持续可用性的明显有点。但由于涉及状态迁 移等问题,比静态演化从技术上更难实现。 按照变更发生的时机,软件演化可分为以下几类。 ( 1 ) 设计时演化设计时演化是指在软件编译前,通过修改软件的设计、源 代码,重新编译来适应变化。设计时演化是目前在软件开发实践中应用最广泛 的演化形式。 ( 2 ) 装载周期演化装载期演化是指在软件编译后、运行前进行的演化,变 更发生在运行平台装载代码期间。因为系统尚未开始执行,这类演化并不涉及 系统状念的维护问题。 ( 3 ) 运行时演化发生在程序执行过程中的任何时刻,部分代码或者对象在 执行期间被修改。这种演化是研究领域的一个热点问题。 显而易见,设计时演化是静态演化,运行时演化是一种典型的动态演化, 而装载期间的演化既可以被看作是静态演化也可以看作是动态演化,取决于它 怎样被平台或提供者使用。事实上,如果是用于装载类和代码,那么装载期演 化就是静态演化,因为它其实是类的映射,而实际装载代码并没有改变;另一 种可能是增加一个层,允许在运行时刻动态的装载代码和卸载旧的版本,这样, 通过连续的版本来更换代码,最后实现系统的演化,变更本身也可以被认为是 动态的演化机制。 2 3软件静态演化技术 静念演化是目前在软件开发实践中应用最广泛的演化形式。静态演化在软 件前,通过修改软件的设计、源代码,重新编译、部署系统来适应变化。目前 有多种技术用来提高软件的静态演化能力,如设计模式( d e s i g np a t t e r n ) 、基于 构件的开发( c b s d ) 、重构( r e f a c t o r i n g ) 等。 2 3 1设计模式对静态演化的支持 设计模式是对经过实践检验的、好的设计经验的提炼和总结,强调了在特 定环境下对反复出现的设计问题的个软件解,侧重于解决软件设计中存在的 具体问题。 哈尔演理t 人学t 学硕l j 学位论文 设计模式解决的核心问题与静态演化是一致的:要解决软件如何适应变化 的问题引。各种设计模式实际都从不同侧面封装了变化,有效提高了软件的静 态演化能力。表2 1 列出了部分设计模式和他们所封装的变化。 表2 1 设计模式对静态演化的支持 t a b l e2 1d e s i g np a t t e r n sa n dt h e i rs u p p o r tf o rs t a t i ce v o l u t i o n 变化设计模式 实现算法 v i s i t o r , s t r a t e g y 用户接口对象操作 c o m m a n d 对象接口 a d a p t e r 对象实现 。 b r i d g e 对象之间的交互 m e d i a t o r , f a q a d e ,p r o x y 对象创建过程 a b s t r a c tf a c t o r y , f a c t o r ym e t h o d ,p r o t o t y p e 对象结构建立过程 b u i l d e r 对象结构 c o m p o s i t e 遍历算法 i t e r a t o r 对象行为 s t a t e ,d e c o r a t o r 操作执行过程 t e m p l a t e 对象依赖关系 p u b l i s h s u b s c r i b e 2 3 2重构技术对静态演化的支持 m a r t i nf o w l e r 把重构定义为两种形式:一种是名词形式在不改变程序 可观察行为的6 订提下,对程序内部结构改善的过程,目的是使它更易于理解, 并且能够更廉价地进行改善;另一种是动词形式通过应用一系列对代码进行处 理的手段和步骤,重新构造一个软件训。 重构不仅限于整理代码,它提供了一种更高效且受控的代码整理技术。它 提供了一系列的重构准则,根据这些重构准则我们可以去除重复,简化复杂逻 辑和澄清模糊的代码。并且通过对代码的“批判”改进其设计。这种改进可能 很小,d , n 只是一个变量名;也可能很大,大到整个框架的重新设计。一切取 决于项目的实际。 重构的目的是使软件更容易被理解和修改。重构不同于提升软件的性能, 后者往往构造巧妙的代码减少程序的运行时间,但往往使得程序更难于理解。 哈尔滨理t 人学t 学顾i j 学位论文 重构的目的是使原有的代码更加清晰,结构更加合理。通过重构保证当需求改 变,需要对代码进行修改时;或者需要增加一个新的模块时,所有的工作能够 顺利的进行。不可否认重构有时牺牲了代码的执行效率,但对于给整个系统带 来的好处,这些牺牲往往是值得的。 重构不会改变软件“可观察行为”,我们可以在软件内部对软件做很多修 改,但必须对软件“可观察行为”只造成很小的变化,或者甚至不造成变化。 也就是说重构不能改变原有软件的功能并且要保证软件的正确性不受破坏。任 何用户,不论最终用户或者是程序员,都不知道已有的东西已经发生了变化。 2 3 3静态演化技术分析 程序有两方面的价值:“现在的功能”和“今后的功能”。大多数时候, 我们都只关注程序当前的功能。不论是修复错误还是添加新功能,我们都是让 程序能力更强,让它在今天更有价值。 但是系统当前的行为,只是程序整个生命周期的一部分。如果仅仅是为了 “完成今天的任务”而采取的开发方法使你不可能在明天完成明天的任务,那 么该软件的开发就是失败的。但是,你知道客户今天的需求,但是却不一定知 道客户明天需要什么。也许我们能预测到一些可能变化的需求,但是总有意想 不到的变化。 m i s 开发过程中难以实现静态演化( 即难以适应变化) ,主要有以下4 个原 因: 1 难以阅读的程序,难以修改。 2 逻辑重复( d u p l i c a t e dl o g i c ) 的程序,难以修改。 3 在添加新行为时,需要修改原有代码的程序,难以修改。 4 带有复杂条件逻辑( c o m p l e xc o n d i t i o n a ll o g i c ) 的程序,难以修改。 因此,我们希望m i s :( 1 ) 容易阅读;( 2 ) 所有逻辑都只在唯一地点指定; ( 3 ) 新的改动不会危及现有行为;( 4 ) 尽可能简单表达条件逻辑。 根据前述技术,我们得知重构是这样一个过程:它在一个目前可运行的程 序上运行,试图在不改变程序行为的情况下使得m i s 具有以上4 点性质,使我 们能够继续保持高速开发,从而增加程序的价值。因此应用重构技术提高m i s 的静念演化能力是可行的。 哈尔滨理t 人学t 学顾1 学位论文 2 4软件动态演化技术 静态演化技术演化过程一般比较简单,一般根据需求,开发新的功能实现 或更新已有的功能模块,编译链接生成新的应用系统,最后部署更新后的软件 系统即可。然而对于某些要求必须连续运行的系统,如空中交通管制系统、全 球性的会融交易系统、工业控制系统、网络服务系统等,停止整个系统的运行 进行软件更新,会带来重大损失,这就要求软件系统具备动态演化的能力,即 可以在不停止系统运行的情况下,实现软件的功能更新。 需要指出的是运行时系统改变能力,并不局限于对安全和连续运行有苛刻 要求的关键系统。目前大量的商业软件系统j 下在提供类似的能力,以获得更好 的系统扩展性和用户满意度。目前些运行时系统扩展机制已经出现在现代操 作系统( u n i x 和w i n d o w s 系统中的动态连接库川) 和构件对象模型( c o r b a 和 c o m 的动态对象绑定) 。这些机制通过允许在运行时动态的定位、加载和执行 新的构件,使得系统可以不需重新编译便可进行演化。 目前在操作系统、分布式对象技术和编程语言( 如l i s p ) 中提供的运行时更新 能力,存在很多不足。这些机制不能保证运行时改变的一致性、正确性以及运 行时改变的可控性。变化管理对于进行有效的运行时系统改变具有关键意义。 变化管理可以帮助确认需要变化的系统边界,帮助制定有效的运行时系统改变 策略和方案,并控制变化过程以维护系统的一致性。如果缺乏变化管理,对系 统进行运行时改变引入的风险可能大大超出关闭和重启系统导致的损失。 目前有多种实现动态演化的技术途径,本文重点介绍基于代理的动态类 ( d y n a m i cc l a s s ) 技术和基于动念链接库技术的动态演化技术。 2 4 1基于动态类的动态演化技术 动态类( d y n a m i cc l a s s ) 引是指类的实现在软件运行过程中可以动态改变,可 以在类级别上引入新的功能、修改己有的程序错误。为了支持类的实现动态可 变,要求实现和接e 1 分离,所有实现( 通常是一个动态链接库或j a v a 类) 符合一 个统一的接口,作为和客户交流的媒介,接口在编译时定义,并在系统运行期 间始终保持不变。 在引入动态类实现时,有两种情况:新的实现或者更新了一个已存在类的 实现,即引入了新的实现版本;或者引入了新类,这个新类必须派生自预定义 的接口,新类的实现成为新类的第一个实现版本,这意味着动态类不仅可以实 哈尔演理丁人学丁学顾f j 学位论文 现代码的动态演化,在一定程度上也可以实现类型的动态演化。 在更新已存在的动态类时,一个基本的问题是如何处理已经存在的旧类的 实例,因为在引入动态类新的实现时,系统中可能己经存在一些动态类的对象。 有三种处理策略解决这个问题: 1 冻结策略系统等待己存在对象被它们的客户释放,在所有旧对象销毁 前,禁止创建新的旧对象,在所有旧对象停止使用后,系统开始使用动态类新 的实现创建对象,同时旧的动态类实现被释放,以节省内存。 2 重建策略系统使用新的动态类实现重新创建所有旧对象,同时拷贝原 有对象的状态信息到新对象。 3 共存策略旧对象和基于新实现的对象共存,但以后的对象创建使用新 的动态类实现,i e t 对象随着系统的运行自行消失,所有旧对象被释放后,旧的 动态类实现被释放。 在大多数情况下,“共存”策略可以满足实际应用要求,这也是最简单、 速度最快的方式。 为了实现动态类,需要一个代! t 里( p r o x y ) ,代理负责维护动态类的所有实现 的列表,以及实现的外部存储位置。代理监控所有发送给接口的功能请求,并 将请求转发给最新的实现版本,如果最新的实现版本没有加载,则根据已经注 册的外部存储位置加载实现,存储位置可以是本地文件系统,也可以是远程网 络服务器,以方便实现软件版本的集中管理。图2 1 显示了基于代理的动念类 实现机制。 系统原犁 接u 与实现分离 求 图2 1 基于代理的动态类机制实现 f i g 2 一ld y n a m i cc l a s si m p l e m e n t a t i o nb a s e do np r o x ym e c h a n i s m 哈尔滨理t 人学t 学硕l 。学位论文 2 4 2基于动态链接库的动态演化技术 动态链接技术是在软件升级维护过程中经常需要使用的技术,动态链接是 相对于静念链接而言的。所谓静态链接是指把要调用的函数或者过程链接到可 执行文件中,成为可执行文件的一部分。换句话说,函数和过程的代码就在程 序的可执行文件中,该文件包含了运行时所需的全部代码。当多个程序都调用 相同函数时,内存中就会存在这个函数的多个拷贝。而动态链接所调用的函数 代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调 用函数的描述信息( 往往是一些重定位信息) 。仅当应用程序被装入内存开始运 行时,才在应用程序与相应的动态库之间建立链接关系。 2 4 3 动态演化技术分析 d l l 这样的特点恰好对软件的动态演化提供了支持,例如:可以将m i s 的 某些功能封装在动态库中提供,如果需要更改软件的功能,则替换这个动态库 就可以了。然而,传统的动态链接技术中,需要在m i s 开发前定义好接口,即 便替换新的动态库,也不能动态地改动这些接口。这就局限了动态链接库在m i s 动态演化方面的应用,因此需要结合一种技术使得m i s 在运行过程中动态的改 动这些接口。 2 5本章小结 本章针对m i s 特点进行技术分析,在此基础上分别介绍了软件静态演化技 术与软件动态演化技术的些相关基本概念。并针对解决m i s 存在的问题对软 件静念与动态技术进行了分析。 哈尔滨理t 人学t 学顾i 学位论文 第3 章m i s 开发阶段静态演化方法 3 1静态演化基本思想 1 改善设计设计模式是对经过实践检验的、好的设计经验的提炼和总结, 强调了在特定环境下对反复出现的设计问题的一个软件解,侧重于解决软件设 计中存在的具体问题。设计模式解决的核心问题与静态演化是一致的:软件如 何适应变化。 各种设计模式实际都从不同侧面封装了变化,有效提高了m i s 静态演化能 力。在应用设计模式的时候要遵循开闭原则,这以原则可以这样理解:模块、 方法和类应对扩展开放,对修改封闭。 同样完成一件事,设计不良的程序往往需要更多代码,这常常是因为代码 在不同的地方使用完全相同的语句做同样的事。因此改进设计的一个重要方向 就是消除重复代码。这个动作的重要性着眼于未来。代码的数量减少并不会使 系统运行更快,然而代码数量减少将使未来可能的程序修改动作容易很多。 通过持续重构可以不断地找出代码的不良特征,一旦发现就立即通过重构 去除,这样代码的扩展和维护就会变得更加容易,有效的提高了m i s 静念演化 能力。 2 提高复用软件复用是提高软件开发效率、改善软件质量得重要途径。 正如一座房屋由许多门、窗、墙、楼板等构件构成,一台机器由许多零部件构 成一样,一个软件系统也是由许多构件构成的,其中很大部分可以复用己有的 构件,无须重复设计和编程。 重构技术是在现有代码的基础上对代码进行修改,使其能更好地适

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论