




已阅读5页,还剩68页未读, 继续免费阅读
(计算机软件与理论专业论文)插件体系结构软件开发方法研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
硼川人学硕士学位论文 y 7 7 8 9 4 7 插件体系结构软件开发方法研究 计算机软件与理论专业 研究生徐宏兴指导教师沈琳 随着计算机技术的发展,软件体系结构和开发方法也在发生着重大变化。 为了高效率地进行软件开发,并且开发出高质量的产品,人们一直在寻求更好 的软件体系结构和开发方法。插件式软件体系结构和开发方法正得到越来越多 的应用,当前有很多成功的软件产品采用此种体系结构来开发。 插件式体系结构是一种非常灵活的组件式结构,它把程序的功能分散在插 件中来完成,插件是独立于系统可独立开发的程序模块,它能够动态地插入到 系统中,并且插件可以被自由地插入、删除和替换。因此它有着相当突出的优 点:能够提高软件开发的并行性和开发效率,降低设计开发难度,缩短开发周 期,增强应用程序的可运行性、可测试性和可维护性。因此对如何开发基于插 件式体系结构的软件进行研究,具有现实的实用意义。 本文首先分析了插件式体系结构软件的结构和工作原理,详细地对插件系 统的设计思想,开发中的原则、建议、技术方法以及可行性进行了总体的细致 深入的分析。s h a r p d e v e l o p 是采用微软n e t 技术基于插件树体系结构开发的成 功的应用和影响广泛的开源的集成开发环境。接着本文对s h a r p d e v e l o p 进行了 仔细研究,分析了它的插件管理程序的实现细节和如何用插件组织应用程序。 最后本文利用之前的研究成果,利用s h a r p d e v e l o p 提供的接口,开发了一个简 单的插件,并成功地装配到s h a r p d e v e l o p 中。 插件体系结构软件开发方法已经具有了成功的应用,对它进行研究,使这 种方法应用更加广泛,对提高软件开发效率和软件质量有很大帮助。 关键词:插件软件体系结构设计模式 晒川大学硕上学位论文 r e s e a r c ho np l u g i na r c h i t e c t u r e m a j o rc o m p u t e rs o f t w a r ea n dt h e o r y p o s t g r a d u a t ex uh o n g x i n g d i r e c t o rs h e n l i n w i t l lt h ed e v e l o p m e n to fc o m p u t e rt e c h n o l o g y , g r e a tc h a n g e sh a v eh a p p e n e dt o s o f t w a r ea r c h i t e c t u r ea n dd e v e l o p i n gw a y s d e v e l o p e r sh a v eb e e ns e e k i n gb e t t e r a r c h i t e c t u r ea n dw a y st oi m p r o v ed e v e l o p i n ge f f i c i e n c ya n ds o f t w a r eq u n i t y c u r r e n t l y , ak i n d o fa r c h i t e c t u r e ,w h i c hb a s e so np l u g i n s ,i sg e t t i n gm o r ea n dm o r e a d o p t e da n dm a n ys u c c e s s i v es o f t w a r ep r o d u c t sh a v eb e e nd e v e l o p e da c c o r d i n gt o i t s o f t w a r eb a s i n go np l u g - i n ss e p a r a t e si t sf u n c t i o n si n t od i f f e r e n tp l u g i n s ,s oi t i sc o n v e n i e n tt od e s i g na n dd e v e l o p p l u g i n sc a r li n d e p e n d e n t l yb ep r o g r a m m e da n d p l u g g e di n t oa p p l i c a t i o n sd y n a m i c a l l y t h es o f t w a r ec a na d d d e l e t ea n dr e p l a c e p l u g - i n se a s i l y , a n dd e v e l o p e r sc a nb e n e f i tal o tf r o mt h i sc h a r a c t e r i tn o to n l y m a k e sd e v e l o p i n gd i f f e r e n tp a r t so fs o f t w a r es y n c h r o n o u s l yp o s s i b l eb u ta l s o i m p r o v e sd e v e l o p i n ge f f i c i e n c y b e s i d e s ,i ta l s om a k e st h ep r o c e s so fd e s i g n i n ga n d d e v e l o p i n ge a s i e rs oa st or e d u c et h ec o s t so f t i m e m e a n w h i l e ,i tm a k e st h ep r o g r a m e a s y t o e x e c u t e ,t e s ta n d m a i n t a i n f o ra l lr e a s o n s a b o v e ,r e s e a r c h e s o n p l u g - i n o r i e n t e da r c h i t e c t u r ei sm e a n i n g f u l i nt h i sa r t i c l e ,f i r s t l y , t h es t r u c t u r ea n dt h e o r yo fp l u g - i n o r i e n t e da r c h i t e c t u r e a r es t u d i e d ,a n dd e t a i l e d a n a l y s e sf o c u s i n go nd e s i g n i n gt h o u g h t s ,d e v e l o p i n g p r i n c i p l e sa n df e a s i b i l i t ya r ep r o v i d e d t h e ns t u d i e so nt h ed e t a i l so fs h a r p d e v e l o p a r e u n d e n a k e n s h a r p d e v e l o p i sa no p e n s o u r c e di d ep r o g r a m m e d u s i n g m i c r o s o f t n e t t h ea r c h i t e c t u r e ,w h i c hi sc a l l e da d d i nt r e e ,i ss u c c e s s f u l l ya p p l i e d i ns h a r p d e v e l o p n o w a d a y s ,s h a r p d e v e l o pi sw i d e l yu s e da n ds t u d i e db ym o r ea n d 四川大学硕士学位论文 m o r ep e o p l e a tl a s t ,t h r o u g hm a k i n gu s eo ft h ef o r m e rs t u d i e so ns h a r p d e v e l o p ,a p l u g i no fs h a r p d e v e l o pi sd e v e l o p e d a r c h i t e c t u r eb a s i n go np l u g i nh a sb e e na p p l i e ds u c c e s s f u l l y , a n ds t u d y i n go ni t s oa st om a k ei ta d o p t e dw i d e l yw i l la b s o l u t e l yi m p r o v ed e v e l o p i n ge f f i c i e n c ya n d q u a l i t y k e yw o r d s :p l u g - i n ,s o f t w a r ea r c h i t e c t u r e ,d e s i g np a t t e m s 3 四川大学硕士学位论文 1 绪论 1 1 引言 自从计算机诞生以来,如何高效地开发程序就一直是软件开发人员热衷于 研究的领域。但计算机诞生之初,计算机硬件较为昂贵,应用的领域还并不广 泛,计算机软件也还仅局限于少量特定目的使用上,因此在当时,软件技术的 研究也大都考虑如何提高程序运行的速度,减少对硬件环境的需求。二十世纪 八十年代后,计算机技术经历了迅猛的发展,硬件价格日趋下降,并且越来越 小型化,逐渐进入到企业并且普及到家庭,应用范围也涉及到整个社会日常生 活的几乎方方面而,从航天飞机到家庭娱乐,从气象预报到股票交易,软件的 功能也越来越复杂,界面越来越友好,操作也越来越简便。同时硬件的发展使 得软件也几乎摆脱了它的束缚,操作系统提供的强大功能使得程序员能够更多 地把精力放在软件开发本身上。在硬件以摩尔定律发展的时候,软件的应用领 域迅速扩大,新的需求层出不穷,软件的升级换代也越来越快。传统的软件丌 发方法在现代的多样需求下显得力不从,f i , ,这就需要我们寻找一种新的更好的 开发方法。 传统的软件开发方法基于传统的体系结构,最初的软件通常都是单一模块 的执行程序,在早期的开发中,大多数任务都是功能较为简单的程序,因此容 易自顶向下逐层细分划分为较小的模块进行分别开发。在有新的需求出现时, 即使全部重新开发,也相对容易,这样软件的升级和换代就并非很困难的事情。 但是传统的计算机开发方法在现代计算机的发展和应用水平下难以适应。首先 软件的复杂程度超过以前,完整开发出一个软件需要大量的人力和物力,并且 需要很长的软件开发周期,而且软件升级和更新换代的要求往往很快,因此需 要新的软件体系结构和新的软件开发方法来适应新的需求。 1 2 软件体系结构的现状 在二十世纪四十年代计算机问世之后,硬件的价格一直居高不下,计算机 资源包括处理器的能力和存储设备的能力都很有限,并且很紧张。程序员在编 写程序的过程中,必须考虑节省资源,以便能够在有限的隋况下运行,因此几 乎所有程序都是采用单一模块的可执行程序结构,甚至很多程序都采用了汇编 语言进行编程,当时对体系结构的研究很大程度上是为了使运行代码更紧凑, l 四川大学硕卜学位论文 运行速度更快,如何提高软件的开发效率只是其中很少考虑的一部分。 随着科学技术的发展,除了特殊领域的特殊需求,减少程序运行的开销, 已经不是开发程序的首要目标了。而程序员可以更多地考虑如何优化程序结构 以便方便地支持更多需求。这些需求刺激了新技术的出现,新技术的出现满足 了这些需求,并且促进软件体系结构和开发方法的发展。如动态链接技术,面 向对象技术,微软的c o m ,s u n 公司的e j b ,还有微软的n e t 等。这些新技 术的出现,对于提高软件开发效率具有重大意义。我们可以不必局限于一次开 发出完整的软件,也不必在更新换代时重新修改或编写所有的程序。以这些新 的技术为基础,我们就能够克服传统方法的限制,构建出新的软件体系结构发 展新的软件开发方法提高软件开发效率。 当前,传统的软件体系结构仍然在许多应用领域占据着主要地位,但随着 技术的进步和整个软件产业的规模化生产,一些新的软件体系结构也在不断地 形成和发展中。现在主要有以下一些结构:数据流系统( d a t a f l o w s y s t e m ) ,调用返回系统( c a l l a n d r e t u r ns y s t e m ) ,独立部件 ( i n d e p e n d e n tc o m p o n e n t ) ,虚拟机( v i r t u a lm a c h i n e s ) ,面向数 据中心系统( d 朋阪一c e n t e r e ds y s t e m ) ,等等。 1 3 软件开发方法的历史与现状 6 0 年代中期开始爆发了众所周知的软件危机。为了克服这一危机,在1 9 6 8 、 1 9 6 9 年连续召开的两次著名的n a t o 会议上提出了软件工程这一术语,并在以 后不断发展、完善。与此同时,软件研究人员也在不断探索新的软件开发方法。 至今已形成八类软件开发方法。 1 3 1 p a r n a s 方法 最早的软件开发方法是由d p a m a s 在1 9 7 2 年提出的。由于当时软件在可 维护性和可靠性方面存在着严重问题,因此p a m a s 提出的方法是针对这两个问 题的。首先,p a r n a s 提出了信息隐蔽原则:在概要设计时列出将来可能发生变化 的因素,并在模块划分时将这些因素放到个别模块的内部。这样,在将来由于 这些因素变化而需修改软件时,只需修改这些个别的模块,其它模块不受影响。 信息隐蔽技术不仅提高了软件的可维护性,而且也避免了错误的蔓延,改善了 2 四川太学硕l :学位论文 软件的百r 靠性。现在信息隐蔽原则融成为软件工程学中的一条匿要原则。 p a m a s 提爨熬第二条琢粥是在软传设诗薅瘦蹲霹麓发生筑秘耪意势数媾袋 取措施。软件是很脆弱的,很可能因为一个微小的错误而引发严重的事故,所 以必须加强防范。如猩分配使用设豁前,应该取设备状态字,检查设备是否正 常。此外,模块之间媳簧加强检查,骑止错误蔓延。 p a m a s 对软律开教提出了深栽翡觅解。遗憾静楚,铯没蠢绘爨暖确靛工作 流程。所以这一方法不能独立使用,只能作为其它方法的补充。 。3 。2 ¥o u r d o n 方法 1 9 7 8 年,e y o u r d o n 和l l c o n s t a n t i n e 提出了结构化方法,也可称为丽向 功能的软件开发方法或面向数据流的软件开发方法。1 9 7 9 年t o md e m a r c o 对 北方法臻了进一步静突蛰。 y o u r d o n 方法是8 0 年代嫠蘑最广泛静较 孛开发方法。它酋先精结构纯分耩 ( s a ) 对软件进行需求分析,然艏用结构化设计( s d ) 方法进行总体设计, 最后是绣掏化编程( s p ) 。这一方法不仅开发步骤明确,s a 、s d 、s p 相辅楣 残,一气姆残,瑟显绘出了嚣类典黧黪软箨结秘交换銎稳蘩务壅,矮予参 照,使软件开发的成功率大大提高,从而深受软件开发人员的脊睐。 ,3 ,3 嚣羯数黎缝秘鹣载癸器发方法 t 9 7 5 年,m a j a c k s o n 提出了一类至今 i j 广泛使用的软件开发方法,被称 为j a c k s o n 方法。这一方法从目标系统的输入、输出数据结构入手,导出程序 框架结构,再补充其它缎节,就可褐至g 完整的程序结构霉。这一方法对输入、 辕整数瓣绍稳鲳确静串,l 、鳖系统祷稍窍效,蟊鬻效应焉中懿文牛表格廷理。渡 方法也i ! 叮与其它方法销台,用于模块的详细设计。 j a c k s o n 方法有时也称为面向数据结构的软件设计方法。 1 9 7 4 年,j d 。w a m i e r 疆交魏款转嚣袭方法与j a c k s o n 方法类酝熬方法,被 称为w a m i e r 方法。麓剃有三点:是它们使用的图形工具不同,分别使用 w a r n i e r 图和j a c k s o n 阔;另一个差别髭使用的伪码不同;最主辫的差别是在构造 程穿撰絮黠,w a r n i e r 方法双考虑输入数据结构,蕊j a c k s o n 方法不仅考虑输入 数据绪梅,而且还考纛输出数据缡鞠。 四川大学硕士学位论文 1 3 4 问题分析法 问题分析法( p a m ,p r o b l e m a n a l y s i s m e t h o d ) 是8 0 年代末由日立公司提 出的一种软件开发方法。 p a m 方法希望能兼顾y o u r d o n 方法、j a c k s o n 方法和自底向上的软件开发 方法的优点,而避免它们的缺陷。它的基本思想是:考虑到输入、输出数据结构, 指导系统的分解,在系统分析指导下逐步综合。这一方法的具体步骤是:从输入、 输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐 步综合处理框,直到画出整个系统的p a d 图。从上述步骤中可以看出,这一方 法本质上是综合的自底向上的方法,但在逐步综合之前已进行了有目的的分解, 这个目的就是充分考虑系统的输入、输出数据结构。 p a m 方法的另一个优点是使用p a d 图。这是一种二维树形结构图,是到 目前为止最好的详细设计表示方法之一,远远优于n s 图和p d l 语言。 这一方法在日本较为流行,软件开发的成功率也很高。由于在输入、输出 数据结构与整个系统之间同样存在着鸿沟,这一方法仍只适用于中小型问题。 1 3 5 面向对象的软件开发方法 面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。 随着o o p ( 面向对象编程) 向o o d ( 面向对象设计) 和o o a ( 面向对象 分析) 的发展,最终形成面向对象的软件开发方法o m t ( o b j e c tm o d e l l i n g t e c h n i q u e ) 。这是一种自底向上和自顶向下相结合的方法,而且它以对象建模 为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数 据结构。所以o m t 彻底实现了p a m 没有完全实现的目标。不仅如此,o o 技 术在需求分析、可维护性和可靠性这三个软件开发的关键环节和质量指标上有 了实质性的突破,彻底地解决了在这些方面存在的严重问题,从而宣告了软件 危机末日的来临。 面向对象的开发方法首先采用自底向上的归纳方法。o m t 的第一步是从问 题的陈述入手,构造系统模型。从真实系统导出类的体系,即对象模型包括类 的属性,与予类、父类的继承关系,以及类之间的关联。类是具有相似属性和 行为的一组具体实例( 客观对象) 的抽象,父类是若干子类的归纳。因此这是 4 四川大学硕士学位论文 一种自底向上的归纳过程。在自底向上的归纳过程中,为使子类能更合理地继 承父类的属性和行为,可能需要自顶向下的修改,从而使整个类体系更加合理。 由于这种类体系的构造是从具体到抽象,再从抽象到具体,符合人类的思维规 律,因此能更快、更方便地完成任务。这与自顶向下的y o u r d o n 方法构成鲜明 的对照。在y o u r d o n 方法中构造系统模型是最困难的一步,因为自顶向下的” 顸”是一个空中楼阁,缺乏坚实的基础,而且功能分解有相当大的任意性,因此 需要开发人员有丰富的软件开发经验。而在o m t 中这一工作可由一般开发人 员较快地完成。在对象模型建立后,很容易在这一基础上再导出动态模型和功 能模型。这三个模型一起构成要求解的系统模型。 面向对象的开发方法然后采用自顶向下的分解方法。系统模型建立后的工 作就是分解。与y o u r d o n 方法按功能分解不同,在o m t 中通常按服务( s e r v i c e ) 来分解。服务是具有共同目标的相关功能的集合,如i o 处理、图形处理等。 这一步的分解通常很明确,而这些子系统的进一步分解因有较具体的系统模型 为依据,也相对容易。所以o m t 也具有自顶向下方法的优点,即能有效地控 制模块的复杂性,同时避免了y o u r d o n 方法中功能分解的困难和不确定性。 o m t 的基础是对象模型。每个对象类由数据结构( 属性) 和操作( 行为) 组成,有关的所有数据结构( 包括输入、输出数据结构) 都成了软件开发的依 据。因此j a c k s o n 方法和p a m 中输入、输出数据结构与整个系统之间的鸿沟在 o m t 中不再存在。o m t 不仅具有j a c k s o n 方法和p a m 的优点,而且可以应用 于大型系统。更重要的是,在j a c k s o n 方法和p a m 方法中,当它们的出发点一 一输入、输出数据结构( 即系统的边界) 发生变化时,整个软件必须推倒重来。 但在o m t 中系统边界的改变只是增加或减少一些对象而已,整个系统改动极 ,j 、。 面向对象的开发方法使需求分析进行得彻底。需求分析不彻底是软件失败 的主要原因之一。即使在目前,这一危险依然存在。传统的软件开发方法不允 许在开发过程中用户的需求发生变化,从而导致种种问题。正是由于这一原因, 人们提出了原型化方法,推出探索原型、实验原型和进化原型,积极鼓励用户 改进需求。在每次改进需求后又形成新的进化原型供用户试用,直到用户基本 满意,大大提高了软件的成功率。但是它要求软件开发人员能迅速生成这些原 型,这就要求有自动生成代码的工具的支持。 四川大学硕士学位论文 o m t 彻底解决了这一问题。因为需求分析过程已与系统模型的形成过程一 致,开发人员与用户的讨论是从用户熟悉的具体实例( 实体) 开始的。开发人 员必须搞清现实系统才能导出系统模型,这就使用户与开发人员之间有了共同 的语言,避免了传统需求分析中可能产生的种种问题。 面向对象的开发方法使系统可维护性大大改善。在o m t 之前的软件开发 方法都是基于功能分解的。尽管软件工程学在可维护方面作出了极大的努力, 使软件的可维护性有较大的改进。但从本质上讲,基于功能分解的软件是不易 维护的。因为功能一旦有变化都会使开发的软件系统产生较大的变化,甚至推 倒重来。更严重的是,在这种软件系统中,修改是困难的。由于种种原因,即 使是微小的修改也可能引入新的错误。所以传统开发方法很可能会引起软件成 本增长失控、软件质量得不到保证等一系列严重问题。正是o m t 才使软件的 可维护性有了质的改善。 o m t 的基础是目标系统的对象模型,而不是功能的分解。功能是对象的使 用,它依赖于应用的细节,并在开发过程中不断变化。由于对象是客观存在的, 因此当需求变化时对象的性质要比对象的使用更为稳定,从而使建立在对象结 构上的软件系统也更为稳定。 更重要的是o m t 彻底解决了软件的可维护性。在o o 语言中,子类不仅 可以继承父类的属性和行为,而且也可以重载父类的某个行为( 虚函数) 。利用 这一特点,我们可以方便地进行功能修改:引入某类的一个子类,对要修改的一 些行为( 即虚函数或虚方法) 进行重载,也就是对它们重新定义。由于不再在 原来的程序模块中引入修改,所以彻底解决了软件的可修改性,从而也彻底解 决了软件的可维护性。o o 技术还提高了软件的可靠性和健壮性。 1 3 6 可视化开发方法 可视化开发是9 0 年代软件界最大的两个热点之一。随着图形用户界面的兴 起,用户界面在软件系统中所占的比例也越来越大,有的甚至高达6 0 7 0 。 产生这一问题的原因是图形界面元素的生成很不方便。为此w i n d o w s 提供了应 用程序设计接口a p i ( a p p l i c a t i o np r o g r a m mi n gi n t e r f a c e ) ,它包含了6 0 0 多个 函数,极大地方便了图形用户界面的开发。但是在这批函数中,大量的函数参 数和使用数量更多的有关常量,使基于w i n d o w sa p i 的开发变得相当困难。为 6 四大学硕士学位论文 此b o r l a n dc + + 推出了o b j e c tw i n d o w s 编程。它将a p i 的备部分用对象类进行 羹装,撵袋了大量颟定义夔类,势必这些定义了雪等多藏贯灏数。裁瑁予类对父 类的继承性,以及寂例对类的函数的引用,鹰用程序的开发可以省却大蘸类的 定义,省却大量成员函数的定义战只需作少量修改以定义子擞。o b j e c tw i n d o w s 还提供了许多标准的缺省处理,大大减少了癍耀程序开发的工作量。但娶掌握 它们,麓菲专监入受米说爨是一个沉重静受趱。为蓝天稍秘溺w i n d o w sa p i 或 b o r l a n dc + + 的o b j e c tw i n d o w s 开发了一批可视开发工具。 可视化开发就题在可视开发工具提供的图形用户界面上,通过操作器筒元 素,送麴菜擎、按锻、对话框、缡耱框、零选糕、复遥摇、捌表摇帮滚动袈等, 由可视开发工具自动生成应用软件。 这类应用软件的正作方式是鬻件驱动。对镣一事件,由系统产生相应的消 息,鼯传递绘提应豹游息晦应蘧数。这些漕感璃应函数是由可援开发工具凌生 成软件时自动装入的。 可视开发工具威提供两大类服务。一类是生成图形用户界面及相关的消息 响应函数;通常的方法是先生成糕本窗口,莠在它的外面以豳标形式列出所有 其它瓣赛嚣元素,让开发人员爹l 选惹敖天窑嗣搔定位餮。程逐一安嚣 赛瑟元素 的同时,还可以用鼠标拖动,以使窗口的布局盥趋合理。 另一类服务是为各种具体的予应用的各个常规执行步骤提供规范窗口,它 包援对话框、菜单、捌表框、缓会堰、按锾亵缡骥挺等,戳供建户援选。开发 :e 具遥成为所有的选择( 事件) 提供消息响应函数。 由于要生成与备种应用相关的消息响应函数,因此,可视化开发只能用j 二 相当成熟的应用领域,如曩前滤行的可视化开发工具基本上熙予关系数掇瘁麴 开发。辩觳的应鲻,西蘸的可褫纯开发王其哭能提供臻户羚谣的可视纯开发。 至于消息响应函数,则仍需用通常的高级语言犏写。 从原理上讲,与图形有关的所有应用都可采用可视化歼发方式,如活塞表 覆设谤申嚣熬应力诗冀。滔户灵鬻在赛瑟上蠲鼠蠢修袭瀵塞凌豢静基线,痿蠲 软件就自动进行有礤元划分、温度场计算、热威力计算,并将热应力的等值益 线图鼹示在屏幕上。最后几次生成的结果还可并列显示在备衡口上,供用户比 较,冀孛粒一个主窟i :1 还可让用户遴一步修改落塞表面楚线。 许多工程科学计算都与霞形肖关,跌丽郡w 以开发稿纛的可视位计算躲应 7 四川大学硕t = 学位论文 片j 软件。 可视化开发是软件开发方式上的一场革命,它使软件开发从专业人员的手 中解放出来,对缓解8 0 年代中后期爆发的应用软件危机有重大作用。 1 3 7 集成计算机辅助软件工程 提高人类的劳动生产率,提高生产的自动化程度,一直是人类坚持不懈的 追求目标。软件开发也不例外。早在1 9 8 2 年美国国防部就提出了s t a r s 工程, 希望建立一个”用以支持需求定义、程序生成以及软件维护等软件生存期全部活 动的,并把它们集成在一起的整个体系”。但早期的软件开发环境工具较少,且 不配套,支持需求分析等高层次生存期阶段的工具更少,因此要求支持某类软 件开发方法的全过程已很不容易了。如y o u r d o n 公司的c r a d l e 软件开发环境支 持y o u r d o n 结构化开发方法,j a c k s o n 工具集支持j a c k s o n 开发方法。 随着软件开发工具的积累,自动化工具的增多,软件丌发环境进入了第三 代集成计算机辅助软件工程( i c a s e ,i n t e g r a t e dc o m p u t e r a i d e ds o f t w a r e e n g i n e e r i n g ) 。系统集成方式经历了从数据交换( 早期c a s e 采用的集成方式: 点到点的数据转换) ,到公共用户界面( 第二代c a s e :在一致的界面下调用众 多不同的工具) ,再到目前的信息中心库方式。这是i c a s e 的主要集成方式。 它不仅提供数据集成和控制集成,还提供了一组用户界面管理设施和一大批工 具,如垂直工具集( 支持软件生存期各阶段,保证生成信息的完备性和一致性) 、 水平工具集( 用于不同的软件开发方法) 以及开放工具槽。 c a s e 的迸一步发展则是与其它软件开发方法的结合,如与面向对象技术、 软件重用技术结合,以及智能化的i c a s e 。近几年已出现了能实现全自动软件 丌发的i c a s e 。 i c a s e 的最终目标是实现应用软件的全自动开发,即开发人员只要写好软 件的需求规格说明书,软件开发环境就自动完成从需求分析开始的所有的软件 开发工作,自动生成供用户直接使用的软件及有关文档。 在应用最成熟的数据库领域,目前已有能实现全部自动生成的应用软件, 如m s e 公司的m a g i c 系统。它只要求软件开发人员填写一系列表格( 相当于 要求软件实现的各种功能) ,系统就会自动生成应用软件。它不仅能节省9 0 以上的软件开发和维护的工作量,而且还能将应用软件的开发工作转交给熟练 r 四川大学硕士学位论史 的用户。 1 3 8 较件熏用和缀件连接 软件重用又称软件复用或软件再用。早在1 9 6 8 年的n a t o 软件工稷会议 上就已掇如可复是露的愚想。1 9 8 3 年,f r e e m a n 对软转重用绘出了详纲的定义: 在构造新的软释系绞瀚过程中,辩已存在翁簌佟入工铺品翁使粥技术。较佟人 工制晶可以是源代粥片断、子系统的设计结构、模块的详细设计、文档和浆一 方匿的规范说明等。所以软件重用是利用已有的软件成份来构造颓的软 牛。它 爵戳丈大减少较终开发掰霉夔赘强震跨闯,量京嚣予提毫较锫豹霹维护装鞍豸 靠性。隧前软件重用沿着下面三个方向发展: 第一个方向是熬于软件复用朦的软件重用。它是一种传统的软件重用技术。 这类软纷嚣发方法要求提供软终可蓬矮残傍懿援式分类和捻索,显要勰凌懿籁 有效蛾缀织、标识、擒述和引稻这些软 牛成份。通常采厢鼹种方式迸彳亍软 牟重 用:( 1 ) 第一种方式是基于生成技术的软件重用,这是对模式的重用。由软件 生成器邋过替换特定参数,生成撼象软件成份的具体实例。( 2 ) 第二矛申方式是 篓予鬣装方式翡较 夸遘焉。褰焉翳缀装方式蠢:子程痔疼技术、茭享按蜀没诗稻 嵌套函数调用等。组裟方式对软件蘑用成份通常不作修改,或仪作很少的修改。 第= 个方向是与灏向对象技术结合的软件笈用。o o 技术中类的聚集、实 镄对癸鹣裁员函数或操终夔雩 踅、予类瑟父类戆继承等霞软转豹哥重竭瞧鸯了 较大的提离。而且这种类型的重用容易实现。所以这种方式的软件重用发餍较 快。 第三个方向是蒸予组件连接靛软件复用,这是强翦发展黢祆的软件熏髑方 式。最举静组锌连接技术o l e1 + 0 ( o b j e c tl i n k i n ga n de m b e d d i n g ) 是m i c r o s o f t 公司予1 9 9 0 年1 1 月在c o m d e x 展览会上推出的。o l e1 0 的规范发表于1 9 9 0 年1 2 月,1 9 9 1 年2 月推出了第批支持o l e1 0 规范豹应用程序。1 9 9 3 年5 嚣鬟袋to l e 2 0 。冗令嚣嚣,繁一魏支持o l e 2 g 熬应爱糕净阕毽。 o l e 给出了软 牛组件( c o m p o n e n to b j e c t ) 的接口标准。这样任何人部可 以按此标准独立地群发组件和增值组件( 组件上添加一些功熊构成新的组件) , 或盘蓑予组箨缓建蘩域赣 孛。在这张软 孛开发方法中,应弼系统熬开发人员哥 醣把主鬻精力放在瘟用系统本身的研究上,困为镌们可在缎佟市场上赡买所需 9 四川大学硕士学位论文 的大部分组件。 软件组件市场组件集成方式是一种社会化的软件开发方式,因此也是软件 丌发方式上的一次革命,必将极大地提高软件开发的劳动生产率,而且应用软 件开发周期将大大缩短,软件质量将更好,所需开发费用会进一步降低,软件 维护也更容易。 软件组件连接的另一个标准是1 9 9 5 年3 月推出的o p e n d o c 。这是i b m 、 a p p l e 等公司组成的c il a b s 集团使用的标准。由于o p e n d o c 的编程接口比 o l e 小,因此o p e n d o c 的应用程序能与o le 兼容。 第三个组件连接标准是对象管理集团o m g 于1 9 9 1 年发表的c o r b a ( c o m m o n o b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e ) ,19 9 4 年o m g 又发表了c o r b a 2 0 。 由于o l e1 0 、o l e2 0 的部分功能已放入w i n d o w s3 1 ( 在推出o l e2 0 的同时,推出w i n d o w s3 1 的o l e2 0 ) ,因此目前使用的组件连接开发技术大 多基于o l e2 0 。 综上所述,今后的软件开发将是以o o 技术为基础,可视化开发、i c a s e 和软件组件连接三种方式并驾齐驱。它们四个将一起形成软件界新一轮的热点 技术。 1 4 研究的意义 在现代软件发展的趋势下,程序开发方法也在不断变化,其手段越来越先 进,可视话编程使得代码的编制更简单,而操作系统提供的强大的底层支持, 使得程序员能够花较少的精力在输入、输出和界面设计上。而如何通过新的软 件体系结构和开发方法,提高程序开发效率,适应当前软件业发展要求,则越 来越多地摆在了我们面前。 首先,传统的体系结构不利于大规模的集群化开发,对现代软件产业的发 展造成极大的限制。对软件体系结构和开发方法的研究,实现用新的方法划分 软件开发模块和功能,使之相互之间具有更少关联,更大独立性,以及采用新 的技术手段和新的开发方法,可以促进提高程序开发过程中的并行性,为软件 产业的大规模生产提供支持。 其次,新的软件体系结构和开发方法将更能克服传统的体系结构和方法由 1 0 四川大学硕士学位论臾 于单闽定的模式替致的程序代码重用性能低,且不易对功能模块进彳亍替换等 臻点。缒够在开发裰_ 隽缀过程串燮褰效蘧去处壤瑟鹣要求纛臻戆,节省开发嚣重 间和截费。 最后,软件体系结构和开发方法的进步也必将会促进编程方法的发展,从 丽提离软终产韭豹生产效率,嚣戴对竣转访系结 訇秘开发散发黪磅究,糍够改 进软 牛开发,使褥软件开发更蕊科学合理帮商效率,促进较件产业的规模化, 跟上全球信息产业殷展的趋势和步伐。 本瘴简单介绍了软件体系结构翻开发方法对软件开发的麓要意义,分栋了 镑统较徉俸系结药豹弊漆,概撬了软释委= 发方法发震懿瑟受势对其送行鼹类, 对当今软件体系结构和开发方法的现状和发展方向进行了总结。对软件体系结 构和开发方法进行研究,对促进软件产业发展,提高软件开发效率都具商藿要 嚣意义。在下一章中将奔绥捶终体系结魏秘颤鼗结秘为驱麓邂行敬终秀发熬方 法。 四川1 人学硕士学位论文 2 插件体系结构开发方法 2 1 插件的概念 插件体系结构的开发方法,是一种程序设计技术,是一种面向组件的软件 开发方法。在插件结构的应用系统中,程序并不是单一的执行文件,而是由主 程序和若干外部模块组成。这些模块是按照一定的规则编写,可以通过配置文 件灵活地加入到系统中,也可以在程序运行时动态地加入到系统中。由于可以 灵活机动地增加减少替换这些模块,通常把插入到系统中的模块称为插件,基 于插件的系统称为插件系统,而把这种开发方法称为插件驱动开发方法。在插 件程序中,插件管理程序可以通过一定的规则和特定的接口与插件通信以及调 用插件实现的功能。与般的函数调用不同,插件管理程序与插件是相对独立 的,插件管理程序可以脱离具体的插件模块而独立运行,插件也是实现特定功 能的相对独立模块,插件管理程序可以在程序运行的过程中动态调用多个不同 插件所提供的服务。 与传统的软件体系结构的一个程序集成所有功能不同,插件体系结构将大 部分功能放在外部插件中,插件管理程序中仅仅包含组织协调和调用插件的功 能,所以软件的功能就不像传统的那样固定不变。而且由于这种方法的方便和 灵活性,能够通过插入和改变外部插件来实现软件功能的扩充和改进提高,这 也是插件体系结构开发方法的魅力所在。图2 1 是传统体系结构和插件体系结 构的比较图: 传统体系结构插件式结构 图21 传统体系结构与插件体系结构 2 2 插件体系结构开发方法的优点 与传统的软件体系结构相比,插件体系结构的程序中,插件管理程序和插 1 2 四川i 大学硕上学位论文 件程序之间的划分是非常清楚的,这使得插件管理程序的结构简单,只负责处 理与插件的通信与调用插件的功能,而与具体功能相关的数据结构算法等则由 插件模块来完成,而各个插件之间几乎没有什么联系和干扰。把各个插件之间 的联系和干扰降到最低,是在划分模块组织软件过程中应该尽量满足的要求, 这样能够降低插件模块之间的耦合度,减少插件之间的依赖。采用这种方法, 在完成软件的设计后,插件管理程序和各个插件模块可以完全独立开发,这有 利于在大规模软件开发过程中,使开发能够并行进行,提高开发的效率和质量。 并且在开发和调试过程中,当部分插件模块发生问题的时候,由于各个插件模 块之间相对独立,并不会影响到其他模块,有利于软件测试工作的开展和进行, 便于在测试和调试的过程中发现问题然后解决问题。另外,对部分插件的修改, 不会影响到其他插件,避免了因为改正错误而引出新的问题的情况。 插件体系结构的开发方法,给程序开发人员带来了灵活性,在主要模块完 成后就可以正式发行,不必等到整个开发过程的全部结束。在软件发布以后还 可以添加新的插件和完善已有的功能。这样,大大缩短了软件的开发周期,这 样可以节省出传统的软件体系结构和开发方法开发出的软件在维护阶段所需要 投入的人力,物力和财力,集中力量与资源到新产品的开发当中。 同时插件甚至可以交给第三方公司开发,提高行业内的合作能力,达到优 势互补的目的。插件开发完成后,也可能被其他的应用程序用到,提高了软件 的可重用性。 因此,在现代软件业向规模化产业化发展的时候,插件程序体系结构和开 发方法具有巨大的优势和潜力。 2 3 插件与组件 二十世纪九十年代后,软件技术的最大进步之一就是面向组件的开发方法。 这使传统应用程序的完整性和单一性向群体生产率提高的方向发展。面向组件 的开发方法有利于提高软件的复用性,节省开发时间和维护成本。众多软件厂 商在这方面做了努力与创新,这些新的方法大都采用了类似的做法:将程序的 各个功能模块划分为不同的组件进行开发,各个组件之间独立无关,通过插件 管理程序进行调度和相互通信,而功能则隐藏在组件内部来实现,对外提供稳 定的外观和接口,改变组件不会影响到它的外部程序,这一类程序被称为独立 13 四川大学硕士学位论文 组件结构的应用程序。 其中微软公司丌发的c o m ( c o m p o n e n to b j e c tm o d e l ) 方法是比较有影响 力和普及的,以c o m 为基础的o l e ,a c t i v e x 等技术也在微软办公软件, 浏览器软件等上面大量采用,许多开发人员也开始采用c o m 架构进行开发。 c o m 方法将应用程序分为容器程序以及多个组件程序,容器程序可以访问组 件程序所提供的服务功能。总之,组件式的应用程序与插件式程序特别是结构 上有些相似,但也有很多不同之处。组件式应用程序更像是由固定的组件所组 成的应用程序,而功能也比较固定,而插件程序中插件的数量并不固定,在资 源许可的情况下可以插入任意数量的插件,因此程序的功能也可以增加。插件 式结构在应用中更加灵活,不像组件式应用程序需要大量地考虑兼容性和可重 用性的问题,这使得它在应用中对程序会有许多额外的要求,比如c o m 要利 用w i n d o w s 的注册标机制。 组件结构 插件管理系统 插件结构 图2 2 插件和组件 因此插件和组件从设计目的来看是有很大的不同的,组件是为了提高复用, 易于对部分组件进行替换和升级,方便网络上不同的客户通过同样的接口访问 等等。而捅件则倾向于在程序中插入大量的插件来增强系统功能。图2 2 是组 件和插件结构的比较图。 2 4 插件程序的应用领域 插件式程序在当前有着广泛的应用前景,特别是大规模的软件开发当中, 对于提高群体的开发效率,缩短开发周期以及降低设计难度有着相当突出的作 用。插件程序的难点在于设计插件模块程序和插件管理程序之间的借口,通过 1 4 四川大学硕士学位论文 接口主程序能够正确调用插件中的功能。因此当一个程序中需要大量相似的功 能的时候,我们可以把这些功能设计为插件结构,并且通过同样的接口与插件 管理程序相连,从而达到充分利用人手,使开发和测试都能够并行进行。另外, 对于软件中可能会经常发生变化的部分,或者一时难以全部开发完成的部分, 也可以用插件的方式来实现,以便于将来增加新的功能和修改已有功能。 事实上,只要设计得当,一个软件几乎可以全部都利用插件来完成,组成 它的每一个菜单,按钮,对话框和功能模块都可以是插件,插件在实际应用中 是可以多种多样的,除了可执行代码外,还可以是图像生音动画等。因此插件 式体系结构和以其驱动的开发方法能够在大量应用中采用,并成为一种重要的 开发方法。有非常成功的流行的软件采用此种方法来开发和设计,例如 w i n a m p ,p h o t o s h o p ,采用j a v a 开发的e c l i p s e 软件和采用c 撑开发的 s h a r p d e v e l o p 软件等。当然根据软件任务功能特点的不同,采用的插件结构形 式也不尽相同。 2 5 插件程序的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025南华大学附属南华医院招聘62人(湖南)考前自测高频考点模拟试题及答案详解(易错题)
- 2025甘肃陇南市人民检察院招聘司法警察辅助人员5人模拟试卷附答案详解(黄金题型)
- 2025年中国花园手推小车行业市场分析及投资价值评估前景预测报告
- 2025福建南平市建阳区园林服务中心招聘园林养护综合专员1名考前自测高频考点模拟试题及1套参考答案详解
- 2025广西贺州市商务局公开招聘1人考前自测高频考点模拟试题及答案详解(网校专用)
- 2025年度中国农业科学院哈尔滨兽医研究所公开招聘18人模拟试卷参考答案详解
- 2025法士特社会招聘模拟试卷完整答案详解
- 2025年度哈尔滨“丁香人才周”(春季)延寿县事业单位引才招聘模拟试卷及1套参考答案详解
- 2025年安徽宿州萧县云水水务社会招聘9人模拟试卷及1套参考答案详解
- 2025河南航空港投资集团有限公司25人招聘模拟试卷及参考答案详解
- 二零二五版养老保险单质押退休金贷款合同3篇
- 第八章-统计指数(平均指数)
- 《电动自行车停放充电场所消防技术规范》(DB 32-T 3904-2020)
- 2024年废旧船舶拆解合同范本
- 川教版2024-2025学年五年级上册信息技术全册教案
- 清洁间歇性导尿的护理
- 哈工大课件教学课件
- 森林防火智能预警监测系统方案
- 2024~2025学年中考数学重难创新题 二次函数性质综合题含答案
- 《 大学生军事理论教程》全套教学课件
- 1200吨黑水虻养殖项目可行性研究报告写作模板-备案审批
评论
0/150
提交评论