(计算机软件与理论专业论文)软件构件技术在在线考试系统中的研究与应用.pdf_第1页
(计算机软件与理论专业论文)软件构件技术在在线考试系统中的研究与应用.pdf_第2页
(计算机软件与理论专业论文)软件构件技术在在线考试系统中的研究与应用.pdf_第3页
(计算机软件与理论专业论文)软件构件技术在在线考试系统中的研究与应用.pdf_第4页
(计算机软件与理论专业论文)软件构件技术在在线考试系统中的研究与应用.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

中文摘要 摘要 随着软件开发规模和复杂性不断提高,随着社会对软件开发速度和数量要求 不断提高,“软件危机”愈加明显的暴露出来,提高软件生产率成为软件产业当 务之急。为了克服“软件危机”,人们提出了软件复用思想并对其进行了不懈的 研究。软件构件技术被认为是解决软件危机,提高软件生产率和软件质量,增强 软件开发性和对外部扰动适应性的主要途径。 同时,随着网络技术的发展,更多的考试正从传统的笔纸考试向基于w 曲的 在线考试转变。这种考试形式不但减轻了教师的负担而且还提高了工作效率。因 此,学校、公司、网站对考试系统软件需求的呼声越来越高。 基于以上两方面原因,本文提出将软件构件技术引入到在线考试系统的开发 中,以实现考试系统软件的工业化生产。首先,本文探讨了软件构件技术的相关 概念及基于软件构件技术的软件开发方法,并对目前三种主流的构件模型进行介 绍和比较,总结出e j b 构件模型的优势。其次,采用基于u m l 技术的构件抽取方 法和构件抽取策略,通过建立系统用例图和序列图对系统流程和功能进行分析, 在此基础上,对系统进行构件抽取,建立系统各部分功能的构件模型。再对已抽 取的构件进行分析和调整。最后,采用e j b 技术实现抽取好的构件,并探讨构件 的组装问题。 关键词:软件构件;考试系统;u 札;e j b 英文摘要 r e s e a r c ha n da p p l i c a t i o no fe x a m i n gs y s t e m b a s e do nc o m p o n e n t a b s tr a c t w i t ht h ei n c r e a s eo fs o f t w a r ed e v e l o p m e n ts c a l ea n dc o m p l e x i t y , a sw e l la st h e b o o s tt ot h en e e do fs o f t w a r ed e v e l o p m e n ts p e e da n dq u a n t i t y ,s o f e w a r ec r i s i sh a sb e e n e x p o s e di n c r e a s i n g i t se m e r g e n c yt oi n c r e a s et h ee f f i c i e n c yo fs o f t w a r e t oc o n q u e r s o f t w a r ec r i s i s ,t h e o r yo fs o f t w a r er e u s ei sp r e s e n t e da n dh a sb e e nu n d e rs t i l d y t h e t e c h n o l o g yb a s e do ns o f t w a r ec o m p o n e n t si sc o n s i d e r e da st h em a i nm e a s u r et os o l v e s o f t w a r e c r i s i s ,i m p r o v e s o f t w a r e p r o d u c t i v i t ye f f i c i e n c ya n ds o f t w a r eq u a l i t y ,a n d e n h a n c et h ea d a p t a b i l i t yt oo u t s i d en o i s e w i t ht h e d e v e l o p m e n t o fn e t w o r k ,t h ea u t h o rh a sd i s c o v e r e dt h a tm o r e e x a m i n a t i o n si np a p e rh a v ec o n v e r tt oo nc o m p u t e r s t l l i sk i n de x a m i n a t i o nn o to n l y r e d u c et h eb u r d e no ft e a c h e rb u ta l s oi n c r e a s ew o r k i n ge f f i c i e n c y s ot h en e e d so f s c h o o l s ,c o m p a n i e sa n dn e t w o r ks t a t i o n sf o re x a m i n gs y s t e ms o f t w a r ea r em o r ea n d m 0 i e b a s e do nt h et w of a c t o r sa b o v e ,i no r d e rt or e a l i z et h ei n d u s t r i a l i z a t i o no fe x a m i n g s y s t e m ,a u t h o rh o p e st h a t r e u s et e c h n o l o g yo nt h eb a s i so fs o f t w a r ec o m p o n e n ti s i n t r o d u c e dt ot h ed e s i g na n dd e v e l o p m e n to fe x a m i n gs y s t e mt h r o u g ht h es t u d yo n s o f t w a r ec o m p o n e n ta n dr e l a t i n gt e c h n o l o g i e s f i r s t ,t h i s p a p e rd i s c u s s e s s o f t w a r e c o m p o n e n tt e c h n o l o g ya n ds o f t w a r ed e v e l o p m e n tm e t h o db a s e do ni t ,t h e ni n t r o d u c e s t h r e em a i n - s t r e a ms o f t w a r e c o m p o n e n t m o d e l sa n dd r a w s c o m p a r i s o n s i n t h e m s e c o n d ,a f t e ra n a l y z i n gs y s t e mr e q u i r e m e n t a n d s m d d n gu m lm o d e l i n g t e c h n o l o g y , i tp r o p o s e sc o m p o n e n te x t r a c t i n gm e t h o da n ds t r a t e g yb a s e do nu m l t e c h n o l o g y b ya n a l y i n ge x a m i n gs y s t e mi nu s eo fu s ec a s ed i a g r a m sa n ds e q u e n c e d i a g r a m s ,e x t r a c t sc o m p o n e n t sa n dc o n s t r u c t sc o m p o n e n tm o d e l so ff u n c t i o no f a l lp a r t s o ft h es y s t e m t h e na n a l y z e sa n dr e g u l a t e st h ec o m p o n e n t s l a s t ,r e a l i z e st h e c o m p o n e n t sb yu s e o fe j b ,t h e nd i s c u s s e st h eo r g a n i z a t i o na n dt e s to ft h e m k e yw o r d s :s o f t w a r ec o m p o n e n t :。e x a m i n gs y s t e m :u m l :e j b 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰写成博士硕士学位论文:毯住掏佳撞丕在查线耋达丕统虫的硒究生应用:。除 论文中已经注明引用的内容外,对论文的研究做出重要贡献的个人和集体,均已 在文中以明确方式标明。本论文中不包含任何未加明确注明的其他个人或集体已 经公开发表或未公开发表的成果。 本声明的法律责任由本人承担。 论文作者签名:葡7 书 j t 吖年夕月巧日 学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连海事大学研究生学位论文提交、 版权使用管理办法”,同意大连海事大学保留并向国家有关部门或机构送交学位 论文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将 本学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或 扫描等复制手段保存和汇编学位论文。 论文作者躲隧拶新签名:扭汤f r 期:劫稗;月7 r 日 软件构件技术在在线考试系统中的研究与应用 第1 章绪论 软件构件技术的蓬勃兴起揭开了软件开发由作坊式生产向工业化生产转变的 革命序幕【l 】。本文将软件构件技术引入到在线考试系统开发中,并就如何构造考试 系统展开探讨。在本章中,首先介绍本课题的应用研究背景以及研究本课题的意 义,接着概述构件技术在国内外研究现状及研究存在的问题,最后概括本文主要 工作和组织结构。 1 1 课题研究背景和研究意义 1 1 1 技术研究背景 随着社会信息化程度越来越高,人们抽象的经验、知识越来越多的以软件形 式予以精确的体现【2 】,因此软件的规模和复杂性也不断提高;同时随着计算机技术 的飞速发展,i n t e m e t i n t r a n e t 迅速普及,以及与之相适应的新技术不断涌现,各行 各业对软件开发的数量和速度有了更高要求。但目前软件开发与生产能力相对不 足,这不仅造成了许多急需的软件迟迟不能开发出来,而且形成了软件脱节现象【2 l , 再加上大量存在的遗留软件系统,形成了所谓的“软件危机 。据美国国家标准 和技术研究院的一份报告显示,占据世界软件销售额8 5 的是大型的专用软件, 而其开发的失败率却高达7 0 。其失败的原因与应用系统传统的、落后的生产组 织方式有着莫大的关系。 回顾经典的工业化革命,不难得出一些有益的启示:功能再复杂的产品也都 是由大量标准的零件( 尽管零件可能只在本领域内有用) 组成,零件在生产线上 装配成一个成品,所有零件在成品中共同发挥作用。分工越细致、专业生产的程 度越高,总体生产效率就越高。因此,要想从根本上解决“软件危机 ,必须采 用工程化的开发方法与工业化的生产技术,实现软件工业化生产。这包括技术与 管理两方面的问题:在技术上,应该采用基于复用的软件生产技术;在管理上, 应该采用多维的工程管理模式【2 1 。软件复用通常可以分为产品复用和过程复用两条 途径,基于软件构件的复用是产品复用的主要形式【3 1 ,也是当前实现软件工业化的 第1 章绪论 热点技术。软件构件技术为软件复用提供了技术基础,使得软件复用从个体性、 不确定性行为上升为群体性、形式化行为,从而使得大规模产品线式的软件工业 化生产成为可能。同时,在分布对象研究领域,软件构件技术也是一项重要内容, 适应了当前软件开发从单机模式向网络模式发展的需要。 软件构件技术的出现,极大程度上满足了多个应用领域的要求,使得各种技 术形成的软件构件可以最大程度地进行复用。使用构件技术可以减少软件开发活 动中大量的重复性工作,这样就能够提高软件生产率,降低开发成本,提高互操 作性和缩短开发周期。同时,由于软件构件大都经过严格的质量认证,并在实际 运行环境中得到检验,因此,复用构件有助于改善软件质量。此外,大量使用现 成软件构件,软件的灵活性和标准化程度也得到了提高。总之,通过对通用构件 的复用,可以消除开发过程中的重复性劳动,避免重新丌发可能产生的错误,从 而提高了软件开发效率和系统的稳定性。据有关调查机构统计显示,构件技术可 以使软件的投放市场时间缩短到原来的1 2 至1 5 ,使软件的缺陷密度降低到原来 的1 5 至1 1 0 ,使软件的维护成本降低到原来的1 5 至1 1 0 ,使整体软件的开发成 本降低了大约1 5 ,长期项目甚至可降低高达7 5 的成本。 以软件构件复用为代表,基于构件的工程技术正在使软件开发方式产生巨大 的改变。采用基于软件构件的软件复用技术,将使软件设计生产工厂化成为可能, 是未来软件开发的发展方向。 1 1 2 应用研究背景 在传统的纸、笔考试方式下,考试时间和空间受到很大的限制,组织一次考 试要经过出题、组卷、考试、阅卷、计算成绩、试卷分析等一系列步骤,这需要 耗费大量的人力和物力,而且在整个过程中,由于人的参与,不能完全体现考试 的客观性。在一定程度上说,传统的考试方式已经不能适应时代发展的要求,存 在着改革的必要。 i n t e m e t 技术的发展使得考试的技术手段和载体发生了跨时代的变化,计算机 技术、网络技术和考试理论的日渐成熟,使考试从传统的纸笔考试到计算机辅助 软件构件技术在在线考试系统中的研究与应用 考试再发展到基于w e b 的在线考试成为现实。 基于w e b 技术的在线考试系统借助遍布全国的因特网,使得考试既可以在本 地进行,也可以在异地进行,大大拓展了考试的灵活性。而且,智能的组卷系统、 自动阅卷评分和试卷分析将老师从繁重的工作中解脱出来,大大提高了工作效率, 真j 下的实现了无纸化考试。 1 1 3 课题研究意义 针对上述情况,可以看出构件技术是未来软件产业化发展的必然趋势,在线 考试系统是现代考试方式改革的必然要求,因此,在这样的背景下,本课题提出 将构件的复用技术应用到在线考试系统中。 本文通过对构件技术的研究将系统的主要功能模块构件化,使系统的开发完 全可以采用“组装 的模式,避免从代码级做起的重复开发带来的低效率和低质 量,同时有利于系统的升级和维护。而开发的构件对其他相似的系统具有复用价 值,并且对我国软件工程的理论和实践也具有重要意义。 1 2 国内外研究现状和存在问题 1 2 1 软件构件技术在国内外的研究现状 早在1 9 6 8 年软件构件与“软件组装生产线”思想就在国际n a t o 软件工程会 议上被提出来。从那以后,采用构件技术实现软件复用,采用“搭积木”的方式 生产软件,成为软件业长期的梦想。然而,由于技术水平限制,在很长一段时间 内构件技术只是作为一种思想存在,直到c o r b a 、j 2 e e 和c o m d c o m 出现, 中间件兴起以后,构件技术才逐渐走向现实。 近年来,基于构件的软件工程对软件产业以及其它很多领域产生了巨大的影 响,复用层次不断提高是当今软件工程中最广泛、意义最深远的影响之一。在国 际上,软件复用在领域工程、构件及构件库的标准化、构件组装技术、基于复用 的软件开发过程和复用成熟度模型等方面取得了重大成功。如:卡内基梅隆大 学的软件工程研究所( c m u s e i ) 提出了面向特征的领域分析方法( f e a t u r e - o r i e n t e d d o m a i na n a l y s i sm e t h o d ,f o d a ) ,并将该方法成功地运用于美国空军运动控制等 第1 章绪论 领域。美国军方在政府资助下,已建立了若干个构件库系统,如:c a r d s 、a s s e t 、 d s r s 等。s t a r s 项目组于1 9 9 2 年提交了a l o a f ( a s s e sl i b r a r yo p e na r c h i t e c t u r e f r a m e w o r k ,开放体系结构的构件库框架) v e r s i o n l 2 。这份报告体现了a l o a f 对可 复用构件库系统的认识,并就此实现了a l o a f 规约作为该参考模型的实例。 c a l d i e r i 和b a s i l i 提出基于复用的软件开发过程。i b m 和l o r a l f e d e r a l s y s t e m 公司 研究出了复用成熟度模型等等。【4 】 国外大型软件公司在所提供的集成开发环境中也蕴含有软件复用技术,为开 发者提供了使用方便、性能可靠的软件构件。例如,m i c r o s o f t 公司的系列可视化 产品、e s r i 公司的m a p o b j e c t 、i n t c r g r a p h 公司的g e o m e d i a 等。【4 】 在国内,杨关清院士支持的国家重点科技攻关项目青鸟工程,重点研究了软件 的工业化生产流程和软件复用的相关技术,并取得了可喜的研究成果。他们已将该 技术应用于桂林百货大楼、北京前门市场等的p o s 系统中。清华大学与i b m 、印 度、白俄罗斯等组建了虚拟实验室,进行构件技术方面的研究工作。国内许多大 工程、大项目都纷纷采用软件构件技术,如8 6 3 计划近一半的项目、通信投资的 许多大项目、金融行业的业务处理系统等。 由此可以看出,全世界的软件行业特别是在应用领域中的软件技术,正在酝 酿着一次飞跃,这次飞跃将会对软件行业的生产方式产生根本性的变革。 1 2 2 基于软件构件的软件复用存在的问题 尽管基于构件的软件复用已经取得了一定成果,然而在实际软件生产中,真 正成功的基于构件的软件复用项目并不多见。主要原因在于: ( 1 ) 可复用构件的分析、设计方法存在限制。基于构件的软件开发技术是近年 来软件产业最重要的革命,正带动软件产业从手工工业逐渐进入到组装化和集成 化的半自动工业。构件技术让软件工程师可以根据客户需要快速、弹性地组装可 伸缩、易维护的应用系统,可通过增减构件来调整部分系统功能,对系统修改时 亦仅限于部分构件,而不必牵动整个系统。然而,在实际开发中,没有真正采用 面向对象分析设计方法,而只是采用面向对象编程语言来实现构件。要提取出通 软件构件技术在在线考试系统中的研究与应用 用构件,需要比较相关系统差异,然而现在还没有一套有效、统一的提取方法, 仍然处于摸索阶段。 ( 2 ) 构件间互操作性很差。构件的代码形式、系统环境以及抽象程度的差异, 直接影响了其复用效果。使用面向对象设计的构件,因其接口规范、易于扩充修 改,从而复用的可能性较大。但是缺乏标准的接口定义方式,开发的构件本身在 功能、数据及外部接口上并不真正独立。将差异很大的构件重组起来相当困难, 并非想象中的“即插即用 。 ( 3 ) 构件分类、检索制约。基于构件的软件复用,除了具有大量的可复用构件 外,另外一个主要问题就是如何找到合适的构件。当构件达到一定数量以后,较 快的从中找到所需要的构件就变得并不容易了,因为大多数构件使用者不是构件 开发者,用户只知道自己所需要的构件应该具有什么功能,至于是否存在这样的 构件、构件名字是什么、在什么位置,则并不知道。如果靠阅读构件功能说明来 查找一个构件,其效率是极其低下的,而且也很难找到最合适的那个构件。这就 需要有一个比较好的构件分类、检索方法。而目前现有的构件分类、检索方法的 效果并不理想。 ( 4 ) 基于构件的软件复用需要一整套方法、工具和平台支持。 除了上述技术上的困难之外,人为因素与管理因素也是导致构件难以成功复 用的原因。多数软件开发人员喜欢自己创造而不喜欢使用别人的东西,特别是要 对别人的构件进行修改后才能使用时。而且在管理上也常常是能复用固然好,不 愿意复用,也不勉为其难。不是在项目一开始就向着创造可复用构件的方向努力, 而只是在项目结束后才从中看看有没有可复用构件。 1 3 本文主要工作 ( 1 ) 深入了解软件构件技术、构件要素、构件开发过程。 ( 2 ) 在对系统进行需求分析和u m l 建模技术研究基础上,采用了基于u m l 技术的构件抽取策略和构件抽取方法,并对系统进行构件抽取。 ( 3 ) 研究e j b 构件模型,采用e j b 实现系统中的构件和构件集成。 第1 章绪论 1 4 本文组织结构 本文共分为四章,组织结构如下: 第一章,主要介绍本课题的研究背景和研究意义以及构件技术在国内外的研 究现状,并对本论文所要做的工作和组织结构进行阐述。 第二章,探讨软件构件技术及基于软件构件技术的软件开发方法,并对目前 主流的三种构件模型进行介绍和比较。 第三章,在对考试系统的发展现状和需求进行分析以及u m l 建模技术研究的 基础上,采用基于u m l 技术的构件抽取方法和构件抽取策略。通过用例图和序列 图对系统进行分析后,对系统进行构件抽取,建立系统各部分功能的构件模型。 再对已抽取的构件进行分析和调整。 第四章,采用e j b 技术实现抽取的构件,在此基础上,探讨构件的组装。 软件构件技术在在线考试系统中的研究与应用 第2 章软件构件及其开发过程 本章首先介绍了构件的相关概念,包括构件、构件接口、构件描述语言;接 着将构件技术与面向对象技术进行比较,从而归纳出构件技术在软件开发中具有 的优势;然后探讨了软件构件的开发方法、开发模型和开发流程;最后阐述了三 种主流的构件模型并对它们进行详细的比较,总结出e j b 构件模型的优势。 2 1 软件构件 构件,在有些地方又叫做组件,是基于构件的软件开发中的最基本的概念。 对于它的定义,界内没有确切统一的说法,不同的作者从不同的角度出发会有不 同的理解。 欧洲面向对象编程( e c o o p ) 会议认为:“软件构件是一个具有规范接口和 确定上下文依赖的组装单元。软件构件能够被独立部署和被第三方组装。【5 】, 卡内基梅隆大学软件工程研究所的定义是:“软件构件是一个不透明的功能 实现;能被第三方组装;符合一个构件模型。 1 5 】 本文将从以下几方面对构件的概念进行阐述: ( 1 ) 包装的观点,它将构件定义为:“系统的一个物理的,可替换的部分,是 实现的包装,并且提供了对一系列接口的实现。 从包装的观点来看,一个构件可以看作是一个组织化的概念,也就是可以作 为一个独立单元加以复用的许多不同元素的集合。这里的重点是复用。这是一个 非常宽泛的定义,包含了多种可复用的应用开发制品,如文档、源代码文件、对 象模块、链接库、数据库等等。 这就是统一建模语言( u m l ) 规范所采用的观点。 ( 2 ) 服务的观点,它将构件定义为:“构件是指通过接口提供服务的软件包。 服务的观点将构件视为为使用者提供服务( 操作或功能) 的软件实体。这罩 的重点是将构件视为服务的提供者。这种观点强调了一系列服务的提供者和使用 者之间共同遵守和使用的契约的重要性。各种服务都必须通过一种一致的、契约 第2 章软件构件及其开发过程 性的称为接口的单元来提供。接口可以认为是一种契约,因为它描述了此构件服 务的潜在使用者需要了解的所有问题,它也是潜在客户访问这些服务的唯一途径。 这是构件描述模型( c o m p o n e n td e s c r i p t i o nm o d e l ,c d m ) 所采用的观点。微 软构件库提供的开放信息模型( o p e ni n f o r m a t i o nm o d e l ,o i m ) 也部分地采用了这 种观点。 ( 3 ) 完整性的观点,它将构件定义为:“构件是独立的、可交换的、对一系列 软件操作的包装,这种包装可以用来构造应用程序或更大的构件。 要想允许构件可以作为系统的一个内部单元安装或升级,需要把构件看作一 致的、可替换的单元。完整性的观点将构件定义为实现包装的界限,是维护其所 管理的数据的软件集合,这种观点强调构件是一种可以提供独立的、可替换的行 为的单元,我们称其为独立构件。因此,它是与其他构件的实现相独立的。这一 规范是构件可替换的必要条件。 这种完整性的观点被许多不同的面向复用的技术所支持。例如,s t e r l i n g s o f t w a r e 公司的c s 3 0 标准对于用c o o l :g e n 工具开发的程序,支持其对跨应用 程序的业务功能复用【6 】。 总之,构件是一个独立发布的功能部分,可以通过它的接口访问它的服务。 构件一般具有如下五要素 6 1 : ( 1 ) 规格说明。它建立在接口概念之上,构件要求有一个关于它所提供的服务 的抽象描述,以作为服务的客户方和提供方之间的契约。 ( 2 ) 一个或多个实现。构件必须被一个或多个实现所支持。这些实现必须符合 规格说明。 ( 3 ) 约束的构件标准。软件构件存在于一个定义好的环境中,或称为构件模型 ( c o m p o n e n tm o d e l ) 。构件模型是一套支持软件的服务,加上为了使构件利用这 些服务而必须遵守的一套规则。已有的构件模型包括m i c r o s o f t 的c o m + 、s u n 的 j a v ab e a n 和e n t e r p r i s ej a v ab e a n s ( e j b ) ,以及o m g 的c o r b a 构件标准。 ( 4 ) 包装方法。构件可以按不同的方式分组来提供一套可以替换的服务,这个 软件构件技术在在线考试系统中的研究与应用 分组就称为包。它们代表了必须安装在系统中的功能单元。为了使这个包可以使 用,在构件模型中要有某种对包的注册机制。 ( 5 ) 部署方法。一旦成品构件安装在一个运行环境中,它们就将被部署。这是 通过创建构件的可执行实例并且允许与它发生交互来实现的。 构件作为一种主要的软件复用方式,具有诸多优点: ( 1 ) 位置透明性,构件以及使用它的程序能够在同一进程、不同进程或不同分 机器上运行。构件对远程构件的处理方式和对本地构件的处理方式是一样的。 ( 2 ) 语言无关性,构件必须以二进制的形式发布,这样就将其实现所用的编程 语言封装起来,做到与语言、开发环境无关。 ( 3 ) 可扩充性,由于每个构件都是自主的,只能通过接口和外界通信,当一个 构件需要提供新的服务时,可通过增加新的接口来完成,不会影响到原接口的用 户,而新的用户可以重新选择新的接口来获得服务。 ( 4 ) 平台无关性,实现不同厂商的软件间的真正的互操作,构件可以来自不同 的构件开发商,独立地被生产、获得和配置,不同的构件可以方便地搭建应用程 序。 ( 5 ) 易于版本更新,当由构件组装而成的系统由于外界软硬件环境发生变化或 者用户的需求有所改变而需要升级或者调整时,只需要对其中受到影响的构件进 行修改即可。 2 2 构件接口 基于构件的开发方法是按照满足预先定义的功能要求将构件集成到应用系统 的过程。每个构件提供服务并向其它构件请求服务,因此,构件接口定义成为关 注的焦点。构件接口是构件间信息通信的机制,是对外展示的窗口。 接口是包含了一组函数的数据结构,通过这组函数,外部环境可以调用构件 对象的功能。构件接口规范与编程语言无关,而是定制了二进制一级的标准。这 样就为不同语言开发的构件之白j 的互操作提供了条件,从而实现构件的语言无关 性。此外,接口还具有继承性、封装性和多态性等面向对象系统的特性。和构件 第2 章软件构件及其开发过程 对象一样,每个接口也有自己唯一的标识号( 例如c o m d c o m 中的u n i d ) ,系 统通过唯一的标识号来寻找和识别不同的对象及其接口。 接1 3 通常都具有自己的定义语言i d l ( i n t e r f a c ed e f i n i t i o nl a n g u a g e ,接1 3 定义 语言) ,其中包含了对构件接口的描述,可以通过i d l 编译器编译后转化为相应编 程语言的代码。 ( 1 ) 构件接口分类。根据构件之间的交互和周围基础设施的相关性可以将接口 类型分为: 应用程序接口。这些接口定义了与其它构件的交互作用,它们描述了与其 它构件交互的导入导出关系。导出接口描述了构件所提供的功能,导入接口描述 了构件从其它构件所需求的功能。这种接口层次称为“水平通道”。 平台接口。这些接口定义了构件与它所运行的平台之间的交互作用,包括 操作系统调用、基础的硬件技术及通信系统。因此,一个构件要运行,必须有特 定的处理器、内存、通信设备和其他硬件设备支持。这种交互类型与上一种交互 类型同样重要。它决定了构件是否可以运行及如何运行。这种层次方法能够帮助 设计者规约和设计出独立于程序设计语言和操作系统的构件。一些实现可以有不 同的平台接口,但要有相同的设计规约。这种接口层次称为“垂直通道”。 ( 2 ) 构件接口定义模型。构件的特性对于有效管理和使用构件是相当重要的, 构件接口定义模型提供了一个用于开发、管理和使用构件的基础。它分为三个层 次,底部是一个构件的基调( s i g n a t u r e ) 描述,它形成了一个构件与外界联系的基 础,包括所需的机制( 如交互) ,表征了构件的功能;第二层是根据应用对象对 构件基调的限制,即使用构件要在一定的限定条件下,构件的基调和限定条件包 含了对构件所有功能的定义;第三层是根据构件在给定应用场景中角色对接口基 调的包装,根据应用语境的不同,构件接口可以有不同的配置;构件接口的第四 个方面是根据构件的非功能属性确定构件的特性,它可以与基调和配置交互。 2 3 构件描述语言 建立在构件模型的基础上,构件描述语言( c o m p o n e n td e s c r i p t i o nl a n g u a g e ) 软件构件技术在在线考试系统中的研究与应用 以一种严格而又易于理解的方式,为协作构件、构件组装工具和c b s d 开发人员 提供全面准确的构件信息川。c d l 的基本思想是将构件视为黑盒,通过描述构件 接口的语法和语义向外界提供构件的结构和行为信息,使构件复用者不必关心其 内部细节。c o r b ai d l 、d c o mo d l 和i d l 等接口描述( 或定义) 语言都能够 描述构件接口的语法,并且支持编译和浏览工具;但是现有的接口描述语言在描 述构件接口语义和构件间复杂的交互协议方面缺乏进一步的支持。 下面介绍的构件类定义语言是构件描述语言的一个子类,它用来描述构件类 的一种定义语言。 构件类语法如下: c o m p _ d c t 陟:= c o m p e n d 由上面公式可见,一个构件类由构件类说明和构件类体两部分组成,其中构 件类体可以为空,把构件类说明和构件类体分开的原因是考虑到同一个构件类说 明可以由不同的程序设计语言来实现。 构件类说明的语法: := s e p c 构件类名 】参数表( 可以为空) 操作界面表 关系表 属性表 e n d 构件类体说明的语法: := b o d y e n d :2 0 b j := d e m o 以上说明,构件类体由两部分组成,一部分是构件类说明中操作界面的具体 实现例程;另一部分为构件类的演示,由于构件类本身是不可执行的,所以要演 第2 章软件构件及其开发过程 示某个构件类的功能,必须首先使其实例化,再加上必需的系统配置后才可实际 还仃o 2 4 构件技术与面向对象技术比较 面向对象技术在传统开发方法基础上发展而来,具有许多很好的特性,如信 息隐藏使得调用者不需要了解实现细节,而且使得对一个对象内部的修改不会影 响其他对象。系统的可维护性很好,易于修改。面向对象的设计方法对问题领域 进行自然分解,更符合人们习惯的思维方式。此外,面向对象的设计方法在创建 和组合可再用的软件成分时有很大灵活性,新的对象可以通过继承已存在的对象 的性质而产生,因此,这样实现的可再用性是自然和准确的。面向对象技术的产 生与发展,改变了结构化的程序设计思想,对提高代码的重用产生了积极的推动 作用,可以说,面向对象技术是现代软件工程的里程碑。然而,在开发大型软件 系统时,面向对象技术却暴露了其天生缺陷。软件构件技术是在面向对象技术基 础上发展起来的,但同面向对象技术相比却有了质的飞跃。 首先,面向对象技术所支持的软件重用是代码级别的,某一面向对象语言的 类只能用于同一语言中,不同软件开发商开发的对象( 指语言的类) 不易交互合 作,难以支持系统集成:构件技术实现了语言独立,不同语言编写的构件可以彼 此提供服务,而不会感觉到底层实现代码不同,服务可以来自同一进程,也可以 来自不同的进程,甚至是异地机器和相互调用。 其次,从抽象程度来看,面向对象技术已经达到了类级复用( 代码复用) , 它以类为封装单位。这样的复用粒度还太小,不足以解决异构性操作和效率更高 的复用。构件将抽象程度提到一个更高层次,它是对一组类的组合进行封装,并 代表完成一个或多个功能的特定服务,也为用户提供了多个接口。整个构件隐藏 了具体的实现,只用接口对外提供服务。这样,在不同层次上,组件均可以将底 层的多个逻辑组合成更高层次上的粒度更大的新组合,甚至直接封装到一个系统, 使模块的复用从代码级、对象级、架构级到系统级都可能实现。【8 】 最后,面向对象技术是在“数据+ 算法的基础上提升了对事物的认识方法, 软件构件技术在在线考试系统中的研究与应用 对象的概念符合人们认识世界的习惯。而构件思想则更多地将重点从建模本身发 展到对软件生产的考虑,即构件可以在应用领域的软件生产中作为零件纳入新的 体系中被重用。因此,构件是面向对象思想的沿袭和扩展,使认识事物的角度从 对象个体本身转变到个体在群体中的作用,侧重于复杂系统中组成部分的协调关 系,强调实体在环境中的存在形式。 s l 因此,面向对象技术虽然促进了软件复用的发展,但在类与整个系统之间仍 然存在着不可逾越的鸿沟。构件技术将对象从特定的编程语言和操作系统限制中 解放出来,并被视为更大粒度的抽象和基础结构的有效实现,已成为当今软件开 发的主流技术。 2 5 基于构件的软件开发 2 5 1 基于构件的软件开发方法 集软件复用、分布式对象技术、客户服务器结构和构件技术于一身的基于 构件的软件开发( c o m p o n e n tb a s e ds o f t w a r ed e v e l o p m e n t ,c b s d ) 是2 0 世纪9 0 年 代兴起的一种新的软件开发方法,是一种利用可重用的软件构件建立应用系统的 技术。与传统软件工程方法有所不同,它不仅针对某个具体的工程项目,而更多 地针对某一行业领域的共性需求,利用领域工程方法,将多年积累的行业经验进 行总结,提炼出业务模型、特定领域的系统架构、构件库等,这样开发出来的架 构和构件封装了业务的个性和变化性,具有此领域的共同特点,在此领域有很高 的可复用性。有了这样的积累之后,整个应用软件的生产方式将发生很大的改变, 使系统开发不再以代码编写为中心,而是转变为构件组装过程,系统的升级由以 前的原有系统替换过程转变为构件替换过程。 基于构件的软件开发方法学应包括下面几方面: ( 1 ) 对构件有明确的定义。 ( 2 ) 以接口为核心:构件的接口和实现是分离的,构件通过接口实现与其它构 件和框架的交互,构件的具体实现被封装在内部,组织者只关心接口,不必知道 其实现细节。 第2 章软件构件及其开发过程 ( 3 ) 构件的接口必须严格的标准化。目前主流的构件技术标准有m i c r o s o f t 的 c o m d c o m ,j a v a 的j a v a b e a n s 和e j b ,o m g 组织的c o r b a 。 ( 4 ) 开发应用系统必须按构件裁剪划分组织,包括分配不同的角色。 ( 5 ) 有支持检验构件特性和生成文档的工具,确保构件规范的实现和质量测 试。 2 5 2 基于构件的软件开发模型 传统的软件开发模型有瀑布模型、螺旋模型及喷泉模型。瀑布模型是较为常 用的模型,但是它并不适合自底向上和原形系统的开发方式;螺旋模型通过原形 来支持软件的快速开发,但是它缺乏一个比较明确的目标;喷泉模型支持增量式 和递归式开发,但是它没有显示鼓励复用。需要一个新的基于软件构件的软件开 发模型。 c b s d 开发方法的基本特征就是将构件组装成应用系统。故其开发过程就是构 件的制造、组织、选取及组装的过程。c b s d 开发模型如图2 1 。 构件的,f 发应用程序的歼发 图2 1c b s d 开发模型图 f i g 2 1d e v e l o p i n gm o d e lo fc b s d 2 5 3 基于构件的软件开发流程 软件构件技术在在线考试系统中的研究与应用 基于构件的软件开发一般经过如下几个步骤: ( 1 ) 领域需求分析 领域需求分析是为了理解问题域空间,获得领域中每个典型系统需求和构件 需求。由于构件是用于整个领域的系统开发,它和系统软件的需求分析是有区别 的。系统软件的需求界定在该系统,而构件的需求分析界定在整个领域。 ( 2 ) 建立系统模型 系统模型是利用u m l 建模技术,根据前面的需求分析,建立起领域中一些典 型的系统分析模型。 第一步:进行系统调查、领域分析和需求分析,明确和系统进行交互的人员、 外部系统,也就是确定系统边界和问题域,同时明确系统要完成什么功能、表达 什么信息,即标识系统责任。在这个阶段,系统分析员在领域专家的协助下,并 借鉴以往相关的成功案例,主要通过u s ec a s e 框图来进行描述。系统的每个u s e c a s e 主要表达的是系统的功能,在这个意义上可以认为u s ec a s e 框图就是系 统的功能模型。对于每个u s ec a s e 框图,要建立它的主事件流和其它事件流( 主 要用来处理系统例外情况) ,而对于其它事件流的取舍应该与系统责任紧密相连, 这种取舍对于系统分析员来说通常是比较困难的。 第二步:对系统的每个u s ec a s e 进行流程分析,即确定每个u s ec a s e 的 实现流程。在这一步,系统分析员通过与领域专家、u s ec a s e 的最终用户及其 涉及的角色进行交流,并在他们的协助下,设计出对应每个u s ec a s e 的 s e q u e n c e 框图和c o l l a b o r a t i o n 框图。对于s e q u e n c e 框图和 c o l l a b o m ”i o n 框图,它们所表达的是每个u s ec a s e 的实现步骤,每个步 骤实际上都是通过函数来实现的,而至于每个函数归属哪个类,具体如何实现在 此并不确定。 第三步:采用面向对象分析方法,并结合每个u s ec a s e 的s e q u e n c e 框图 和c o l l a b o r a t i o n 框图,建立系统的c l a s s 框图( 包括对象层、特征层和关 系层) 。c l a s s 框图中的每个方法只需定义出接口,即输入、输出什么参数,而 不包括实现细节,把具体的实现( 包括程序框图、实现代码) 留到设计阶段。 第2 章软件构件及其开发过程 ( 3 ) 建立软件构件模型 用u m l 建模技术建立领域内系统分析模型的目的是利用分析模型中的 c l a s s 框图,综合考虑系统责任、系统的体系结构以及开发平台,建立系统的构 件模型。 ( 4 ) 构件设计 在设计构件之前,查询可复用构件库,对已有构件( 相同的直接复用,相近的 通过修改复用) 进行复用,对于新构件进行设计。设计新构件包括接口设计( i d l 文件的设计) 、每个功能的程序框图设计、算法设计以及复杂算法的伪代码。 ( 5 ) 书写构件规格说明 构件规格说明实际上是构件名称、功能等的描述,作为构件的表示依据,为 构件的入库、构件的再开发等提供方便。 ( 6 ) 构件实现 构件实现是构件的代码实现,其目标是把构件规格说明转变成相应的实现。 ( 7 ) 构件包装 这个包装必须实现任何已定义的映射,并且允许把该功能作为在适当的构件 技术中一个独立的、可部署的单元来提交。 ( 8 ) 构件测试 2 6 软件构件模型 构件模型是构件技术的核心内容,是构件定义和构件性质的集体化。构件模 型除定义了构件的本质属性外,还规定了构件接口的结构以及构件与应用框架、 构件与构件之间的交互机制。构件模型通常还提供创建和实现构件的指导原则。 一个被构件生产者和使用者所共同接受的构件模型实际上起到了构件标准化的作 用。c o r b a 、c o m d c o m 和e j b 等构件模型构成了构件模型的工业标准。 2 6 1c o r b a c o r b a ( c o m m o no 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 ,公共对象请求代理体系 结构) 被认为是最早出现的分布式构件技术,c o r b a l 1 是对象管理组织( o m g ) 软件构件技术在在线考试系统中的研究与应用 在1 9 9 1 年提出的技术规范,它目前已经发展到了3 0 3 版本。c o r b a 体系结构是 为解决分布式处理环境中,硬件和软件系统互操作问题而提出的一种解决方案。 它的底层结构是基于面向对象模型的,由o m g 接口描述语言( o m gi n t e r f a c e d e f i n i t i o nl a n g u a g e ,o m gi d l ) 、对象请求代理( o b j e c tr e q u e s tb r o k e r ,o r b ) 和i i o p 标准协议( i n t e r n e ti n t e r - o r bp r o t o c o l ,也称网络o r b 交换协议) 三个关 键模块组成。 其中,o r b 是c o r b a 平台的核心,它屏蔽了底层平台以及网络实现的细节, c o r b a 能让客户程序和服务器端对象在特定的o r b 实现中进行通信。使用o r b , 客户可以调用服务器端的构件对象,被调用的对象既可以是本地的,也可以是远 程的。客户将

温馨提示

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

评论

0/150

提交评论