(水利水电工程专业论文)基于组件的动态流程重组技术的研究及实践.pdf_第1页
(水利水电工程专业论文)基于组件的动态流程重组技术的研究及实践.pdf_第2页
(水利水电工程专业论文)基于组件的动态流程重组技术的研究及实践.pdf_第3页
(水利水电工程专业论文)基于组件的动态流程重组技术的研究及实践.pdf_第4页
(水利水电工程专业论文)基于组件的动态流程重组技术的研究及实践.pdf_第5页
已阅读5页,还剩49页未读, 继续免费阅读

(水利水电工程专业论文)基于组件的动态流程重组技术的研究及实践.pdf.pdf 免费下载

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

文档简介

华中科技大学硕士学位论文 摘要 f 随着软件科学的不断发展,新的应用系统越来越复杂,尤其是这几年 i 叔a n e “i n t e r n e l 的迅猛发展,使应用软件胃身j 二更加广阔的坏境中。组件技术诈是适 应了这种潮流并在此基础上迅速发展起来的。 一个具体的面向工程的模拟计算系统,往往山于目标行业的强烈专业性而导致应 川i 范围窄小,就算是在同行业内部,它也很难以被推j 。究其原因,主要是由于该系 统根据客户的特定要求“固化”了内部模块的执行流程。即使整个系统完全由组件构 成,一旦客户的特定要求发生改动,我们还是,1 i 得不调整每个组件模块的执行流程, 这就免不了重新编译系统,这显然有悖于组件化设计的初衷。如何将当前软件工程领 域的最新技术同实际应用相结合,并根据本专_ q k _ e 程计算系统流程复杂的特点提出一 个亚合适的软件设计方案,这是一个非常值得研究的课题。丰一 本文的示例程序是由华中科技大学方i l o f 发中心与某公州合作丌发的个分析i 式商品图片管理系统的客户端子系统。它的生要功能是负责商晶图片的登陆,主要包 括图片导入、图片浏览、图片编辑以及图片存储四个模块,各个模块之间独立性很强, h 有一定的流程要求。作者将组件化的设计引入到丌发过程中,不仅加快了整体的开 发速度,还使系统的可维护性大大提高。然而另一方面,客户对系统流程要求的不稳 定性又使得系统的可重用性受到限制,日i j 为1 1 :9 j 没有一个较成熟的技术可以解决流 程的动态改变的问题。 鉴于此,本人经过大量的分析与实践,提出了一种基于m i c r o s o f t 组件标准 c o m d c o m 胤范的刚动态重组流程的软件设计疗法。该方法通过使用一个外部的“流 程控制属性表”来实现对系统流程的动态控制,从而为解决专业系统流程不稳定性的 难题提供了一个较完荚的解决方案。目前,这个新的设计方法已被应用到示例系统中, 成功的实现了对系统流程的动态控制,证明了该方案的可行性。 关键词:面向对象,丝咎,c o m 心,弛念j 直韭重组,工程c a d 华中科技大学硕士学位论文 a b s t r a c t w i t ht h ed e v e l o p m e n to fs o f t w a r es c i e n c e ,n e wa p p l i c a t i o ns y s t e mi s b e c o m i n gm o r e a n dm o r e c o m p l i c a t e d e s p e c i a l l yw i t ht h er a p i dd e v e l o p m e n to f i n t r a n e t i n t e r n e ti nr e c e n t y e a r s ,c o n l p u t i n g m e t h o dh a s c h a n g e d f r o mh o s t c e n t r a l i z e dt o n e t w o r k c e n t r a l i z e d a p p l i c a t i o ns o f t w a r eh a sb e e np l a c e di nf l w i d e re n v i r o n m e n tw i t h o u tp r e c e d e n t t oa d a p t t ot h ec o n v e r s i o n ,t h ec o m p o n e t t e c h n o l o g ye m e r g e sa n dd e v e l o p sa tah i g hs p e e d a g i v e ns i m u l a t i o ns y s t e mo f o n ec u r t a i ne n g i n e r r i n gp r o j e c tc a l lh a r d l yb ea p p l i e dt o a n o t h e rb e c a u s eo fi t s s t r o n gp r o f e s s i o n a lb a c k g r o u n d f h i s i s a l w a y st r u e e v e ni no n e e n g i n e e r i n ga r e a t h er e a s o nw h i c h c a u s et h i si st h a tt h et r a d i t i o n a ls o f t w a r es y s t e mh a st h e e x e c u t i o nf l o wo fi t si n t e r n a lf u n c t i o nm o d e l sh a r d - c o d e d ,a n di tj u s tc a l ln o tf i tt h en e w r e g u l a t i o no ft a r g e tp r o j e c tw i t h o u tr e c o m p o s i t i o na n dr e c o m p i l a t i o n t h i sc o n t r a d i c tt h e o r i g i n a l i n t e n t i o no fc o m p o n e td e s i g n t t e n c e t oc o m b i n et h en e w e s tt e c h n o l o g i e so f s o f t w a r ee n g i n e e r i n gw i t ht h ep r a c t i c a ls y s t e ma n dt op u tf o r w a r dam o r ea p p l i c a b l ed e s i g n m e t h o da r ew o r t h yt ob er e s e a r c h e d t l i ee x a m p l es y s t e mr e f e r e n c e di nt h i sp a p e ri sac l i e n ts i d es u b s y s t e mo fad i s t r i b u t e c o m m e r c i a lp r o d u c ti m a g em a n a g e m e n ts y s t e mw h i c hi sd e v e l o p e db yh u s tf o u n d e r r & dc e n t e r i tp r o v i d e st h el o g o nf u n c t i o no ft h ep r o d u c t s i m a g e s t h i ss y s t e mi s c o m p o s e d o ff o u rm o d u l e s ,w h i c ha r ei m a g ei m p o r ts u b s y s t e m 、i m a g eb r o w s e s u b s y s t e m 、 i m a g e e d i t s u b s y s t e m a n d i m a g e l o a d s a v e s u b s y s t e m e a c hs u b s y s t e m i ss o m e h o w s e l f - g o v e r n e d a n di s o r g a n i z e db yag i v e n f l o wr u l e s d u r i n gt h ew h o l ed e v e l o p m e n t p r o c e s s ,t h ec o md e s i g np l a y sas i g n i f i c a n t r o l e o nt h eo t h e rh a n d ,w ea l s oh a v et o m o d l , 蝴s y s t e mf r a m e w o r kd u e t ot h eu n c e r t a i n t yo f t h es y s t e m se x e c u t i o nf l o w , w h i c h b e c o m e sa b i go b s t a c l ei ns u c h a l a r g es c a l ec o m m e r c i a ls o f t w a r e i nt h i sp a p e r , ab r a n n e wd e s i g nm e t h o dw h i c hc a nm a k et h er e o r g a n i z a t i o no f s y s t e m s e x c u t i o nf l o wa p p l i c a b l ei sp r o p o s e d s u c hm e t h o di sb a s e do nt h em i c r o s o f tc o m d c o m s t a n d a r d ,a n di si m p l e m e n t e di nt h ee x a m p l ep r o j e c t k e y w o r d :o b j e c t - o r i e n t e d ,c o m p o n e n t ,c o m d c o m ,d y n a m i c f l o w r e o r g a n i z a t i o n e n g i n e e r i n gc a ds y s t e m 华中科技大学硕士学位论文 1 1 实用价值和理论意义 1 导言 2 0 世纪6 0 年代爆发的软件危机促使人们思考解决的办法。从那时至今,软件开发 模式经历了无缩构的机器语言、汇编语言编程、面向过程的结构化编程和面向对象的 编程几个阶段。尤其是8 0 年代后期兴起的面向对象编程掀起了一场编程模式的革命。 在这个历程中,还形成了以软件周期和软件开发方法学为特征的软件工程,用之作为 解决软件危机的对策。尽管如此,软件危机至今也未得到完全的解决。 当前的软件开发多是针对具体情况的开发过程,开发者注重的是针对当前需求的 设计及实现,对由此而产生的软件资源是否能为以后的软件开发者重用却想的很少。 这种开发方法在无形中造成了巨大的资源浪费也十分不利于将来的代码维护。为了解 决开发过程效率低下的问题,很多公司和机构都在面向对象技术的基础之上研究基于 组件的编程方法,并逐渐形成了几种组件软件的规范。其中最熏要的就是微软的c o m ( c o m p o n e n t o b j e c t m o d e h 公共对象模型) 和o m g ( o b j e c t m a n a g e m e n t g r o u p 对 象管理组) 的c o r b a ( c o m m o n o b j e c t r e q u e s t b r o k e r a r c h i t e c t u r e :公共对象请求代 理构架) 。 基于组件的软件开发与原有的面向过程软件开发是很不一样的,和纯面向对象的 软件开发比较起来仍有一些不同之处。把组件软件方法和软件工程方法学结合起来, 就形成了一种新的软件开发模式一基于组件的软件开发模式。 对基于组件的软件开发模式的研究,在国民经济中具有重要的实用价值。随着我 国经济的快速发展,在教育、科技、文化、商业、财务、金融甚至国防战线管理信 息化都是不可遏止的潮流,因而对软件的需求会越来越大,安全性和质量的要求越来 越高。基于组件的软件开发模式有助于提高软件开发的效率,减少开发失败的风险, 保证信息的安全。所以对我国的经济发展会有很大的影响。同时,基于组件的软件开 发模式的研究,在理论上对原有的软件开发模式进行了有益的补充。 1 2 软件设计方法的发展历史 从软件业的发展历程来看,程序设计方法经历了以下几种主要的变革。 结构化程序设计方法 传统的程序设计方法往往是以解决面向过程语言系统的设计问题为目的。主要是 那些基于功能分析或数据分析基础上的结构化方法,它们把算法作为基本构造单元。 这些方法中,把功能看作是主动的,可以有各种行为;而数据是被动的,只是被功能 华中科技大学硕士学位论文 影响的信息载体。系统被分成许多函数,而数据在函数之间被传来传去。在缩构化设 计方法的设计原则中,好的系统设计要求在不同部件中不能传送控制信息,要求把所 有的控制都集中在高层的模块,以保证影响范围处于控制范围之中。这种方法设计的 系统在7 0 年代或8 0 年代早期还可以适应。但在越来越复杂的非数值计算类型的程序设 计中,在广泛应用图形界面的交互式应用中,在控制要求非常突出的系统中,在需求 经常适应变动的条件下,用传统的程序设讨方法的标准来进行设汁往往暴露出了严重 的不适应性。 由于在现实世界和作为其映射的软件系统中,“过程”和“操作”是多变和不稳 定的,而“对象”和“数据结构”是相对稳定的。冈此,以过程为中心来设计开发软 件系统的结果可重用性必然较差:而以“对象”或“数据结构”为中心来设计开发软 件系统的结果的可重用性就可能较好。正因为如此,自从8 0 年代以来,在短短不到2 0 年的研究工作中,面向对象技术得到了空前的发展。 面向对象程序设计方法 面向对象程序设计方法强调把问题域的概念直接映射到对象以及对象之间的接 口。这种方式比较符合人们通常的思维方式,从而减少了传统开发方法从问题域到分 析阶段再到设计和实现阶段的偏差。 面向对象方法使得在客观世界以及作为其映射的软件系统中,实体的结构相对稳 定。面向对象方法把属性和服务封装在对象中,当外部功能发生变化时,这种封装可 以保持对象结构的相对稳定,使得改动仅局限在一个对象的内部,减小了因改动引起 的系统波动效应。因此,用面向对象方法开发的软件具有易于扩充、修改和维护的特 性。同时由于面向对象程序设计方法都使用统一的模型来表达每个阶段的结果,包括 分析、设计、编码实现等阶段。冈此,从整个软件生存周期来看,后一阶段可以直接 重用前一阶段的工作成果,弥补了传统开发方式从数据流图到模块结构图的鸿沟,既 避免了熏复劳动,又消除了转换过程带来的误差。面向对象方法具有的继承性和封装 性支持软件晕用,并易于扩充,能较好地适麻复杂大系统不断发展和变化的要求。 但是,面向对象程序设计方法也不是十全十美。从十多年的发展来看,它也表现 出一些缺点。首先面向对象程序设计方法在处理大型软件系统时,它的粒度粗细难以 有效控制。其次,现实世界中的许多问题领域包括影响多个对象的全局性处理,可以 由若干并行和串行的步骤组成。这种全局处理的概念并不从属于任何单个对象,这与 面向对象程序设计的思想不统一,并且缺乏有效的表示方法。另外一点,虽然面向对 象程序设计方法强调重用性,但实际重用的效果并不十分理想。最后,从软件工程的 观点来看,尽管许多面向对象的程序设计语言已经取得了极大的成功。但我们也应该 看到,在程序设计的各个阶段,除了编码阶段有这些面向对象语言作为工具支持,其 他的阶段都缺少强有力的软件t 具作为支持。 组件化程序设计方法 2 华中科技大学硕士学位论文 随着软件科学的不断发展,新的应用系统越来越复杂,尤其是这几年i n t r a n e t i n t e m e t 的飞速发展,使应用软件置身于更加广阔的环境中,从而对应用软件提出了更 高的要求,这就使得程序设计更加困难。在这样的情况下,传统面向对象的思想已经 难以适应这种分布式软件模型,于是组件化程序设计的思想得到了迅速的发展。 纵观整个程序设计方法的发展历史,从最初的功能分解法,到结构化程序设计方 法,再到至今仍在广泛使用的面向对象程序设计方法以及当前较为人们关注的组件化 程序设汁方法,人们对程序设汁方法的选择总是取决于程序设汁方法对应用软件的适 应性。每当一种程序设计方法小能适麻应用软件发展需要时,人们总会找到一种新的 程序设计方法来解决这种“软件危机”。可以说,每种程序设计方法都是在这样的情 况下发展起来的。结构化程序设计方法着眼于局部的程序结构,难以用发展的眼光指 导麻用程序的设计;面向对象程序设计方法能够从问题域本身来把握应用系统的整体 设计,并且有效地把应用发展过程中易变部分与稳定部分隔开来,而组件化程序设汁 思想则适应了分布式计算的要求。 1 3 课题的背景和论文的结构 1 3 1 问题提出的背景 前晤我们简单地回忆了一下程序设计方法的发展历史。这些方法是对所有应用程 序都适用的共性问题。然而,在进行具体的应用程序开发时,某些应用系统还存在着 一些个性问题。的确,在实际工作中,我们经常遇到这样的问题,如果你设计的是一 个专业性较强的系统,那么,即使原来有相关的现成的系统存在,但由于所使用的规 范1 i 完全相同等原因可能对你并不适用,你不得不对其做大量修改,甚至重新设汁。 即原来系统的可复用性小太好。另外,即使所采用规范相同,在你对现有系统进行扩 展时或二次开发时,同样会困难重重。更为突出的问题是,当你使用某个系统时,在 某一时刻需要运行所有模块,而另一对刻你可能只运行其中一部分模块,这时你就需 要对模块执行流程进行重新组织,而当前系统并没有提供流程可重组的功能,你唯一 能做的只能是对系统进行修改,然后重新编译。由于专业系统应用范围窄,一般只是 在行业内推广,使得人们在设计这些专用系统时很少考虑到系统的可复用性、可重用 性等问题。正是因为这类系统专业性强,应用范围窄及规范不够严格统一,而很少见 到有成熟的商品化的系统软件。然而随着计算机技术的发展,在各行各业中计算机 的普及,如何改变上述这种情况已经是我们不得不考虑的问题。在这种情况下,我们 提出了基于组件技术的可重组流程设计思想。其目的主要是:提高软件模块的可重用 性;方便1 二程设计人员动态地对流程进行重组,同时可根据需要对系统进行扩充,也 华中科技大学硕士学位论文 就是说工程设计人员应能a 主地列这些号川系统进行二:次丌发。 1 3 2 论文内容及结构 基于上述背景,本文以华中科技大学方i f 研发中心j 1 :发的一个商品管理信息系统 的图像登陆子系统为背景,从组件技术出发,设计出与体系结构无关的功能模块,并 在此基础上实现流程重组。主要解决的问题有:体系结构整体设计、与体系结构无关 的模块设计、各模块的组件化实现等问题,另外还对组件的动念流程重组和改造等较 前沿的问题做了探讨。具体安排如下: 第2 章是对基于组件的软件丌发模式的归纳和补充。 第3 章是按组件丌发模式的方法对实例系统进行整体的分析与模块划分过程的描 述。 第4 章是对系统中的几个关键模块的实现进行详细论述。 第5 章对组件的动态流程重组做了论述。 第6 章是对整个工作的总结与展望。 4 华中科技大学硕士学位论文 2 1 软件组件模型 2 组件开发模式概要 组件是指能够容易地组装起来,以更高的开发效率创建应用程序的可复用软件部 分。组件技术的核心是组件模型,它定义了组件的结构、外部如何操作组件及组件间 的相互作用。组件和容器是组件模型的两种基本元素。组件部分提供了创建实际组件 的模板,是组件创建与利用的基础。容器部分定义了将组件集中起来成为有用结构的 方法,提供了安排组件及与其他组件相互作用的语青环境。组件模型还负责提供各种 形式的服务。功能完善的组件模型可支持下列六种主要服务1 1 l : 自我描述 事件处理 持久性 布局 对应用程序建立器的支持 对分布式汁算的支持 自我描述是指向外界展示组件功能的机制。通过自我描述机制,应用程序能够对 组件提出询问,找到组件的功能并且与组件相互作用。自我描述是组件模型的关键特 征之一,负责决定组件对应用程序以及其他组件的外观。 事件处理是一种能够使组件产生事件通知的机制。这种通知与组件内部状态的变 化相对廊。通知的对象或者是父应用程序或者是其他组件。 持久性是指在水久性的存储介质( 如硬盘) 上存储和获取组件的能力。存储和获 取的信息是组件的内部状态,和它与容器或其他组件的关系。 布局是指可视化组件的物理布局。包括组件自己空间内的组件布局和在同一个容 器内与其他组件共享空间的布局。组件的空间需求主要是给组件提供一个矩形区域, 以使组件成为可视的。 组件对应用程序建立器的支持,使用户能以图形方式在组件外建立复杂的应用程 序。通常应用程序建立器的支持由对话框组成,使用户能以图形界面的方式来编辑组 件的属性。 随着网络技术和应用的发展,组件模型对分布式计算的支持变得越来越重要。软 件组件模型可以简化分布式应用程序的开发过程。 华中科技大学硕士学位论文 2 2 软件组件模型实现的条件 使用组件的种种优点直接来源于可以动态地将它们插入或卸出应用程序,为了实 现这种功能,所有的组件必须满足两个互相依赖的条件 1 1 。 动态键接 通过动态链接,用户可以在运行时将组件替换掉,而开发人员不需要将整个程序 蘑新编译或者链接一遍后熏新发行新的版本。 信息封装 应用程序是由各个组件连接起来的。当用新的组件把某个组件替换掉时,需要将 此组件同系统断开,然后将新的组件连上去。显然新的组件必须按同样的方式连接到 系统中,否则将需耍重新编写、重新编译或重新链接这些组件。对于一个应用程序或 组件,如果它使用了其他组件,我们称之为一个客户,客户通过接口同其他组件进行 连接。如果某个组件发生了变化,而其接口没有任何改变,那么它的客户将不需要进 行任何修改。类似地,若客户发生了变化,而没有改变其接口,那么它所连接的组件 也小需要任何改变。相反,如果客户或组件的变化导致了对接口的修改,那么接口的 另一方也应发生相应的变化。因此为了充分发挥动态链接的功能,组件及客户都应尽 可能不要改变它们的接口,即它们必须封装起来。也就是说,组件及客户的内部实现 细节4 i 能反映到接口。接口同内部实现细节的隔离程度越高,组件或客户发生变化时 对接口的影响将越小。这种将客户同组件实现隔离的要求对组件加上了如下的限制: 1 ) 组件必须将实现其所用的编程语言封装起来。编程语言的暴露将会 在组件和客户间引入新的依赖。 2 ) 组件必须以编译、链接好的可执行二进制代码的形式发布。 3 ) 组件必须可以在不妨碍已有用户的情况下被升级。 4 ) 组件在网络上的位置必须可以透明地被重新分配。组件及使用它的程序应能 够在同一进程中、不同进程中或不同机器上运行。客户对远程组件的处理方式应与对 本地组件的处理方式是一样的。 2 3 组件对象模型 长期以来,编写高重用性代码一直是面向对象语言的主要动机之一,也是之所以 c + + 程序员群体如此庞大的原因。但是事实上。要编写一个很容易被重用的c + + 类非 常困难。在c + + 领域中,除了设计和开发时晕用的许多障碍,在运行时也有大量的阻 碍,这使得c + + 对象模型小能成为“构建可重用软件组件”的理想底层基础。这些障 华中科技大学硕士学位论文 碍来源于c + + 本身所假设的编译和链接模型要求客户必须知道对象的二进制布局,从 而导致了客户和对象可执行代码之间的二进制耦合关系。为了解决这些问题, m i c r o s o f t 提出了所谓的组件对象模型即c o m ( c o m p o n e n to b j e c tm o d e l ) 。 c o m 升华了传统面向对象思想中封装的概念,它将一个对象的外观( 接口) 同 其实际丁= 作方式( 实现) 分离开来这一原则应用到二进制的层次上,在客户和对象之 间强加了一层二进制的通讯协议,并且该防火墙只使用与编译器无关的特性,完全切 断r 客户与对象之间的耦合关系,这样以来对象的布局结构甚至功能能够随时问而进 化而丝毫一i 影响现有的客户,使得组件化的开发方式成为可能。 c o m 标准包括规范和实现两大部分,规范部分定义了组件和组件之间通信的机 制,这些规范不依赖任何特定的语言和操作系统,只要按照该规范,任何语言和在任 何半台之上都可使用;而c o m 标准的实现部分是c o m 库,它为c o m 规范的具体实现 提供了一些核心服务,方便客户使用。 c o m 规范中所定义的组件模型,除了包含传统的面向对象的思恕以及组件模型 中必须的客,r l t 服务器特性之外,还具有语言无关性、进程透明性、高度可重用性等 几点关键的优势。 作为c o m 规范的实际应用,o l e2 为了使软件开发者能够将他们的数据和功能模 块包装成一个具有高度重用性的组件而定义了一整套可扩展的实现方案【2 】。它涉及到 系统开发的方方面面,从结构化存储到统一数据传输,从复合文档到实地激活,从自 动化、可连接对象到o l e 控件( a c t i v e x 控件的前身) ,所有的这一切都建立在c o m 之上,i t l o l e2 的各个功能模块都依靠c o m 的组件接口协议来进行通信。它们之间的 关系可由图2 1 来表示。 7 华中科技大学硕士学位论文 图2 1o l e2 关键技术关系图,注意它们均以c 0 m 为底层支撑 从1 9 9 3 年发布至今近十年的时间里,c o m 已经使整个软件开发业产生了翻天覆 地的变化,使每个开发者都获益匪浅,但是它自身也暴露了一些不足之处。例如,它 对组件的适应性改造的支持十分有限,这严重影响了组件在一个全新环境下的重用能 ) 3 , 2 4 基于组件的开发模式 基于组件的开发模式并不是一种新的开发模型,而是组件技术同其它几种经典模 型相结合的产物,大体步骤可分为:分析阶段、设计阶段、实现阶段、组装和测试阶 段嘲。同样的这几个阶段仍然可以有反复和迭代的过程。 2 4 1 分析阶段 这一阶段的任务主要是定义要解决的问题,定义应用程序,并决定采用哪种软件 体系结构虽然组件技术和面向对象的结合,提供了一种编写分布式可重用应用软件 的可行机制,但如果没有严密的分析,只能生产出低劣的组件,从而组装出低劣的应 用程序。所以认真分析软件的用户需求、使用环境非常重要。一般憎况下,只要对用 户和使用环境做出分析之后,就可以决定适用的软件体系结构。不管最终决定采用哪 华中科技大学硕士学位论文 种软件体系结构,都可以采用组件的方式实现其中的一部分功能。 2 4 1 1 问题陈述 在开始考察怎样实现一种解决方案之前,首先要对欲解决的问题进行定义。首先 站在用户的角度对于要解决的问题有一个总体印象。不仅要考虑用户认为这个问题应 当怎样解决,还麻当考虑这种方式是否合理,是否有效。在描述问题的时候,尽量避 免对用来实现解决方案的技术做任何假设,这种假设可能会在设计过程中限制我们的 视野。问题描述出来之后,应该让用户来评估它这一步的结果是形成一个文档,用 简明扼要的语言描述和用广定义好的业务问题。在以后的工作中,它有助于把精力集 中在明确标识了的问题上。 2 4 1 2 功能规范陈述 然后就要对系统欲完成的功能进行具体的分析。在大多数需求分析方法中,都有 关于“功能规范”的详细描述,它指的是一个文档,从用户的角度描述应用程序应该 完成的任务。为了形成这样的文档,应该列举出应用程序的操作方案在m s f ( m i c r o s o f ts o l u t i o nf r a m e w o r k = 微软解决方案框架) 中,把这一过程叫做“情节分离 ”,而在u m l 中叫做“定义使用模型”,并可以用使用情况图来描述它。 在对功能规范进行描述的时候,就可以总结出用户同系统之间进行的交互。一般 情况下,用户要和系统做几次交互,做一定的分析,然后用户做出一定的决定,从而 对系统中的某些数据进行一些更新操作这个过程可以用u m l 中的顺序图来表述。 2 4 1 3 应用程序的需求和系统约束条件的陈述 最后还耍对廊用程序的性能、部署和安全性方向的需求进行考查。对于性能有小 同的定义,在分析阶段就应当同用户达成一致意见。性能主要指在现有硬件、软件系 统的支持下,系统的可用性和支持的用户数目。系统的可用性包括了使用的时段,以 及在某个时段当中系统的利用率等。用户的数i ;i 包括在高峰低谷和均值的时候,单位 时间内同时使用系统的人数。 关于部署,也就是明确指出需要和解决方案交互操作的现有系统,如局域网、 i n t e r n e t 、服务器等。可能要到最后才能决定具体的部署。部署时要考虑的问题还包 括原有系统的处理,是进行升级还是保持原样,这会影响到设计阶段的应对措施。另 一个因素是用户、服务器、数据源的位置。用户在地理上是否是分散的,彼此是如何 连接的。数据源是分布的还是集中的。这些因素决定了系统使用的网络结构。实际上 在分析和设计阶段,甚至在实现阶段都可以一i 去管怎样部署它们。应该尽可能做出 努力,使系统集成人员和管理人员具有相当的灵活性,让他们能以多种方式去部署应 q 华中科技大学硕士学位论文 用程序。 关于安全型,应该考虑是否有安全性需求。比如在刚络传输数据的时候可能就需 要加密,最终还可能需要通过书面材料加以确认。另一个问题是给用户授予相应的操 作的权限。 这一步形成的文档应包含性能需求、部署需求和安全性需求。 2 4 1 4 决定采用的体系结构 经过以上的分析,整理文档,就可以得到一个应用程序的定义,也可以决定采用 哪种软件体系结构。常见的软件体系结构有:数据流模式,包括批处理模式和管道与 过滤器模式:调用和返回模式,包括主从程序模式、面向对象系统模式和分层结构模 式:虚拟机模式,包括解释器和基于规则的系统:以数据为中心模式,包括数据系统 、超文本系统和黑板系统。 大多时候,并不是采用单一的一种软件体系结构,而是好几种的综合。比如在基 于数据库的程序设计中,对某些具体的数据可以采用管道与过滤器的方式来处理。不 管采用哪种软件体系结构,都可以采用组件的方法来实现。 2 4 2 设计阶段 这一阶段的主要任务是通过面向对象的分析,识别对象和类,描述对象和类之间 的关系。以及通过描述每个类的功能定义对象的行为。同时还应该在这个阶段完成应 用程序总体结构的设计。应用程序的总体结构实际上是对所有组件的部署和组装。最 后对这一阶段的_ 作进行评审和逻辑验证。 为了发现对象和类,开发人员要在系统需求和系统分析的文档中查找名词和名词 短语,如事物、角色、事件、互相作用、人员、场所、组织、设备和地点等。浏览目 标系统的脚本,发现重要的对象及其作用,是面向对象分析和设计初期至关重要的工 作。当重要的对象被发现后,就要着手建立一组互相关联的模型,详细表示类之间的 关系和对象的行为。这些模型从四个不同的侧面表示了软件的体系结构: 静态逻辑模型 动态逻辑模型 静态物理模型 动态物理模型。 静态逻辑模型描述类与对象的属性与服务,以及对象之间的关联、聚集( 整体部 1 0 华中科技大学硕士学位论文 分关系) 、继承( 一般化) 等关系,因而也称为对象模型。定义对象模型的符号体系通 常是从用于数据建模的实体关系图导出的。 动态逻辑模型描述与时间和变化有关的对象之间的互相作用。动态建模的重点在 于控制,即通过描述系统的操作次序来定义系统运行的行为,这些操作都是对外部触 发的响应。动态模型的基本要素是事件( 表示外部触发) 和状态( 表示对象属性) ,通常 用基于有限状态机的状态转移图表示。 静态物理模型为软件划分模块,描述代码的布局。 动态物理模型描述软件的进程和线程等体系结构设汁。 在这些模型中,b o o c h 、c o a d y o u r d o n 、0 m t 和j a c o b s o n 方法在面向对象软 件开发界得到了广泛的认可 4 1 。 2 4 3 实现阶段 分析和设计完成之后,就应该着手进行组件的实现了。实现可以分为实现组件和 局部测试两个互相交织的阶段。 2 4 3 1 选择已有的组件 如果以前编制的一些组件可以再次利用,就尽量地利用它们。如果这些组件在功 能上比较类似于所要求的组件,但并4 i 完全满足要求,就需要对它们进行修改。这里 就涉及到组件的适应性改造问题,本文后面会有提及。 2 4 3 2 实现组件 可以采用的实现组件的方式比较多。大的分类,可以选择j a v ab e a n 或c o m 规 范的组件,甚至也可以采用c o r b a 组件。小的分类,可以根据组件的功能选择进程 内组件、进程外组件或是远程组件,a c d v e x 控件、a u t o m a t i o ns e r v e r 、c o m 组件 或是a c t i v e 文档。还要决定该组件是用编程工具提供的w i z a r d 编制、a t l 模板编制, 还是从头编制。一旦决定某个组件应以什么样的方式实现,选择合适的开发工具实现 具体的组件就很容易对号入座了。要实现c o m 规范的组件,可以用v c 、v b 、d e l p h i 等;实现j a v ab e a n ,既可以用j d k 手1 二编制,也可以用b d k 等工具编制;要想实现 c o r b a 组件,就必须采用专门公司的t 具了。 如果在以前的设计中使用了u m l ,那时生成的许多图现在就能用上了。实际上。 如果我们是用c + + 语言、v b 或j a v a 来编写组件,那么在r a t i o n a lr o s e 中,根据设计 阶段主成的图,就可以直接生成代码。这些代码一般可以包括进自己的工程,直接进 行功能的实现就可以了。但是有一个问题,象v c 、v b 这些工具往往也有自己的一些 华中科技大学硕士学位论文 w i z a r d ,这些w i z a r d 有时候f 叮能不认同第三方产生的些代码。比如有时候,明明 定义了一个成员变量,但在v c 左边的类视图中就是没有。 关于v b ,r o s e 不仅提供了从图到v b 代码的转换,也提供了从v b 代码到图的 转换,这个功能可以以a d di n ( 外接程序) 的形式真接在v b 集成环境中使用。这 就给反复设计提供了很大的便利。 2 4 3 3 组件打包 在这个阶段,如果是m t s 组件,还必须要把组件按分组打包。打完包后,j 能 进行一些测试。因为需要在m t x e x e 中设置组件的m t s 事务属性,设置好属性之 后组件才能j 下常工作。 2 4 3 4 局部测试组件 在控制的环境中,用一些工具对单个组件进行测试,不断进行修改。由于组件是 一个相对封闭的系统,只通过接口同外界交互,所以要测试组件主要就是营造一个环 境,测试通过对接口的访问,组件是否能达到预期的要求。肯定不能等所有的组件都 编制完成了才进行这一步的工作。可以用到的测试工具包括d a t a o b j e c tv i e w e r 、 d o c f i l ev i e w e r 、a c t i v e xc o n t r o lt e s tc o n t a i n e r 、o l ec l i e n tt e s t e r 以及r o tv i e w e r 等 等。同一个丌发小组里的人可以在这个小组内营造一个环境,将各自按接口定义做 的组件互相进行测试。如果组件的测试表明组件的抽象和分组有些不符合实际要求, 这就要求退回到设计阶段,重新进行设计。由于组件的思想已经把原有的系统划分为 逻辑分离的模块,所以假如有这种反复,也只是在范围不大的部分罩面重新设计,并 不影响大局。 2 4 4 组装和整体测试 这一阶段的主要任务是建立应用程序框架,并在其中利用组件,完成应用程序的 功能,并进行整体功能的测试。 2 4 4 1 框架选择和设计 框架一般可以理解为完成一定功能的模块的集合,阐明了整个设计、组件问的依 赖关系。大多情况下,框架的定义以及成员组件的表述都是以自然语言或伪代码的形 式描述的。对于较成熟的框架,比如通用查询框架,也可以以相应编程语言的形式存 在。应用程序本身就是一个框架,它的下面又有一些子框架。这些子框架都是如系统 登录、资料浏览、信息管理、数据编辑这一类相对较稳定的框架。如果原来的应用中 华中科技大学硕士学位论文 有类似于这样的功能,就可以选择这些框架来改造和使用。如果没有就必要重新设计。 2 4 4 2 系统测试 测试的目的是测试系统的正确性、健壮性。要把基于组件的应用系统正确地组装 起来,不是一件直截了当的事。组件安装好了之后,才能够运行程序,才能够进行测 试。如果在组件实现的时候就对组件进行了较严密的测试,设计上也没有的大的缺漏, 集成的测试应该比较顺利。但如果出了问题。首先要确定框架是否正常使用了组件。 特别是引入m t s 之后,很多情况下框架不能正常丁作都是因为组件使用不当。然后 确定涉发的组件是否正常工作。有时候组件在扁部测试的时候是正常工作的,但一目 接入真正的集成环境就不能t 作。这时候要确定故障的原冈是组件实现的问题,还是 设计的问题,从而进行相麻的补救措施。 2 5 本章小节 在这一章里,我们简单的介绍了组件模型的概念及实现的条件,还介绍了基于组 件的开发过程的一般步骤。基于组件的软件开发方法是建立在面向对象方法基础之上 的,较好地弥补了纯面向对象方法的缺陷。使用组件技术,可以使已有的一些应用程 序的升级更加方便和灵活。 华中科技大学硕士学位论文 3 系统分析与模块划分 本论文的项目背景是华中科技大学方矿研发中心与某公司合作丌发的一个商品 信息管理系统。这是一个旨在让商品厂商和客户共享商品信息的网上c r m ( c u s t o m e r r e l a t i o n s h i pm a n a g e m e n t ) 系统。其中它的一个重要功能就是通过维护一个商品基本 信息和图片数据库,使得厂方对主打商品生成促销广告传单的流程自动化。该系统由 两个子系统组成。一个是w e b 子系统,主要负责整个数据库的维护,广告传单的流 程控制,促销计划的生成以及客户资料的维护等等功能。另一个是w o r k s t a t i o n 子系 统,主要功能是让终端用户能够登陆和维护商品的基本数据和图片信息。本人在此项 目中主要负责w o r k s t a t i o n 子系统的图像登陆部分。由于该部分无论在功能上,还是 在逻辑上都相当于w o r k s t a t i o n 中十分独立的一个系统,故本人将其隔离出来,用组 件化的方式将其实现并成功的将其集成到整个系统之中。 3 1 问题陈述 该项目起初承接自某公司的照明事业部,客户传递给我们的样本中有一本该公司 的照明器具广告传单册。日方告诉我们,像这样厚达2 0 0 0 余页的宣传册子,他们每 个季度都要手工制作一本,上面有公司该季度所有商品的基本信息。每一个商品的基 本信息包括它的实物图片,规格,推出同期,价格等等。本人负责的图像登陆系统的 主要由商品图片浏览、商品图片导入、商品图片编辑及商品图片存储四大部分组成, 还有一个安全管理子系统,负责对系统操作人员的身份进行安全认证。从信息化的角 度而言,该系统是一个全新系统,没有遗留问题。其功能使得用户从原来手工分散的 收集和整理商品图片信息的模式转变成为统一的自动化模式。 商品图片浏览部分使用户能够方便的在本机或局域网内部搜索和浏览已有的商 品图片资料,支持的图片格式不仅要包括普通的b m p 、d i b 、j p g 等,还要支持高清 晰度的e p s 、t i f f 等格式。 商品图片导入部分使用户能够方便的将前部分搜索到的图片导入到指定地点,如 本地数据库或者是指定目录。另外还要具备从外部媒体如扫描仪等设备导入以及屏幕 捕捉等附加功能。支持批量导入功能。 商品图片编辑部分使用户能够对图片进行一般的处理工作,如缩放、旋转、剪裁、 标注、简单艺术处理、更改格式等。 商品图片存储部分负责管理图片数据的存储工作,用户能够自由选择目标位置, 如数据库、本地硬盘、网络位置等。适当的时候要对图片进行压缩处理。整个 w o r k s t a t i o n 系统足以上几个子系统的有机结合。用户一般从图片导入部分丌始,依次 华中科技大学硕士学位论文 经过阅览、编辑到存储。但是,我们也必须看到这几个子系统之间是逻辑独立的模块 如果能够把它们做成商度重用的组件,那将是一件i 一分有意义的_ 作。 3 2 功能规范陈述( 应用的环境和用户分析) 功能规范定义了应用程序“方式方法的含义”。它保h e 新产品或服务的开发有一 条系统的途径,这对我们有以下帮助: 使完成开发项日所必要的资源利开发时间能得到更准确的估t 给决策者提供了开发的产品所麻具有功能的单一描述 功能规范文档是功能规范陈述的产物,它依赖于开发刚队所选择的开发策略( 如 果有的话) 。功能规范文档中通常包括的产业标准说明内容包括: 业务案例,通过它证明为什么要开发应用程序满足客户的要求。 应用程序特性规范,对应用程序如何开发以满足客户要求进行说明。 应用程序的用户界面的说明。 在我们这个项目巾,用户的终极目标是让商品广告传单册的生成过程自动化。任务划分到本人负 责的子系统巾,就是要满足用户对商品图片的集中管理的要求。通过上一节对子系统问题陈述所 产生的结果,我们的模块划分可以很好的满足用户的基本需鳃。以下是对各个部分实现方案的初 步设想: 图片浏览部分的实现以方便直观为宗旨,借鉴w i n d o w s 系统中资源管理器 t r e e v i e w 和l i s t v i e w 相结合的方式来实现。t r e e v i e w 中显示当前本机中所有的磁盘驱 动器以及本地局域网中的邻居机器。l i s t v i e w 中显示当前t r e e v i e w 中选中的甩录中的 所有支持格式的图片文件,浏览方式有列表、小图标方式以及t h u m b n a i l 方式,考虑 到对用户的体贴性,系统将支持拖放操作并以高解析度画面显示整个拖放过程。在 l i s t v i e w 下方设一图片拣选窗口,用来对用户浏览过程中选定的图片进行临时存放。 图片导入部分主要包括两个功能,一是从外接设备如扫描仪、数码相机等中 导入图片,二是从屏幕上导入图片,即通常所说的屏幕捕捉功能。后者捕捉的对

温馨提示

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

评论

0/150

提交评论