(计算机软件与理论专业论文)基于领域构件的软件开发技术的研究与应用.pdf_第1页
(计算机软件与理论专业论文)基于领域构件的软件开发技术的研究与应用.pdf_第2页
(计算机软件与理论专业论文)基于领域构件的软件开发技术的研究与应用.pdf_第3页
(计算机软件与理论专业论文)基于领域构件的软件开发技术的研究与应用.pdf_第4页
(计算机软件与理论专业论文)基于领域构件的软件开发技术的研究与应用.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

(计算机软件与理论专业论文)基于领域构件的软件开发技术的研究与应用.pdf.pdf 免费下载

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

文档简介

独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所 知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果, 也不包含为获得南昌大学或其他教育机构的学位或证书而使用过的材料。与我 同工作的同 志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:尹晶海签字日期:h 。s 年芎月日 学位论文版权使用授权书 本学位论文作者完全了解南昌土学 有关保留、使用学位论文的规定,有权探留并向国 家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权南昌史学可以 将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或翔描等复制手段 保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:尹基询 导师签名 厶 却也 签字目期:1 0 0 r 年拿月2 = d 日签字日期:2 叫年j 月2 _ 0f | 学位论文作者毕业后去向 工作单位: 通讯地址: 电话 邮编 硕士学位论文:基于领域构件的软件开发技术的研究与应用 摘要 随着公安部门金盾工程的不断推广,很多软件公司和公安系统合作在不断 开发着用于公安执法监督的软件系统。由于受着传统软件开发方法的限制,在 不同单位不同部门之间进行着大量的重复开发设计工作,浪费了大量的人力、 财力和时问资源,大大降低了开发效率。本文主要研究一种通过基于领域构件 的开发方法来开发这一领域的软件,提高软件的开发效率。 本文将对构件化与面向领域的软件开发方法进行研究,研究内容主要是归 纳整理出和软件构件技术相关的基本概念、分析研究出构件化与面向领域的软 件开发过程与其它开发方法的不同之处以及软件开发各阶段的重点工作内容。 根据这一设计和上述主要理论方法,我们设计出一组可以实际应用的法制领域 的软件构件。 本文工作的重点研究一种基于领域构件的软件开发模式。本文所做的创新 性工作有: 一提出了基于领域构件的系统框架,将领域构件划分为三个层次:基础构 件、数据结构构件和业务实体构件:三层构件按照自底向上的方式生成, 其中数据结构构件可以直接转化为数据库脚本;该系统框架将业务逻 辑、数据结构、外观布局等从软件中单独剥离出来,通过解析器整合为 实际的应用程序。 _ 采用x m l 来描述领域构件、系统构件、样式与布局文件。 e n 对构件进行特征建模,提取特征后用x m l 描述特征; 设计了一种根据特征描述产生应用程序的方法; 随后,本文按照以上述设计为基础实现了一组领域构件以及与之相对应的 编辑器和解析器。 关键词:领域构件,特征建模,) 0 4 l ,执法监督,面向方面编程 硕士学位论文:基于领域构件的软件开发技术的研究与应用 a b s t r a c t a l o n gw i t ht h ep u b l i cs e c u r i t yd e p a r t m e n tg o l ds h i e l dp r o j e c tu n c e a s i n gp r o m o t i o n , t h ev e r ym a n ys o f f w a r e sc o m p a n ya n dt h ep u b l i cs e c u r i t ys y s t e mc o o p e r a t i o ni s d e v e l o p i n gu n c e a s i n g l yi su s i n gi nt h ep u b l i cs e c u r i t yl a we n f o r c e m e n ts u r v e i l l a n c e s o f t w a r es y s t e m b e c a u s ei sr e c e i v i n gt h et r a d i t i o n a ls o f t w a r em e t h o do fe x p l o i t a t i o n l i m i t ,i sc a r r y i n go nt h em a s s i v er e p e t i t i o n sd e v e l o p m e n td e s i g nw o r kb e t w e e nt h e d i f f e r e n tu n i td i f f e r e n td e p a r t m e n t ,h a sw a s t e dt h em a s s i v em a n p o w e r , t h ef i n a n c i a l r e s o u r c ea n dt h et i m er e s o u r c e s ,r e d u c e dt h ed e w e l o p m e n te f f i c i e n c yg r e a t l y t h i s a r t i c l em a i n l ys t u d i e so n ek i n dt h r o u g ht od e v e l o pt h i sd o m a i nb a s e do nt h ed o m a i n c o m p o n e n tm e t h o do fe x p l o i t a t i o nt h es o f t w a r e ,e n h a n c e s t h es o f t w a r et h e d e v e l o p m e n te f f i c i e n c y t h i sa r t i c l ew i t hw i l lc o n d u c tt h er e s e a r c ht ot h ec o m p o n e n tf a c et h ed o m a i n s o f t w a r em e t h o do fe x p l o i t a t i o n ,t h er e s e a r c hc o n t e n tm a i n l yw i l lb et h ei n d u c t i o n r e o r g a n i z e sa n dt h es o f t w a r ec o m p o n e n tt e c h n o l o g yc o r r e l a t i o nb a s i cc o n c e p t ,t h e a n a l y s i s s t u d i e st h ec o m p o n e n tw i t hs i m i l a r i t ya sw e l la st h es o f t w a r ed e v e l o p s v a r i o u ss t a g e sf a c et h ed o m a i ns o f t w a r ep e r f o r m a n c eh i s t o r yw i t ho t h e rm e t h o d so f e x p l o i t a t i o nt h ek e yw o r kc o n t e n t a c c o r d i n gt ot h i sd e s i g na n dt h ea b o v em a i n t h e o r ym e t h o d ,w ed e s i g nag r o u pt ob ep o s s i b l et h ep r a c t i c a la p p l i c a t i o nl e g a l s y s t e md o m a i ns o f t w a r ec o m p o n e n t t h i sa r t i c l ew o r k st h ek e yp o i n ts t u d i e so n ek i n db a s e do nt h ed o m a i nc o m p o n e n t s o f t w a r ed e v e l o p m e n tp a t t e r n m u c hc r e a t i v ew o r kh a sb e e nd o n ei nt h e s ea s p e c t s : p r o p o s e db a s e do nt h ed o m a i nc o m p o n e n ts y s t e mf r a m e ,t h ed o m a i nc o m p o n e n t d i v i s i o ni st h r e el e v e l s :f o u n d a t i o nc o m p o n e n t ,c o n s t r u c t i o no fd a t ac o m p o n e n t a n ds e r v i c ee n t i t yc o m p o n e n t ;t h r e ec o m p o n e n t sa c c o r d i n gt of r o mt h eb o a o m u p w a r dw a yp r o d u c t i o n ,c o n s t r u c t i o no f d a t ac o m p o n e n tm a yt r a n s f o r md i r e c t l y a st h ed a t a b a s es c r i p t ;t h i ss y s t e mf r a m et h es e r v i c el o g i c ,t h ec o n s t r u c t i o no f d a t a ,t h eo u t w a r da p p e a r a n c el a y o u ta n ds oo na l o n es t r i p s 丘o mt h es o f t w a r e , t h r o u g hr e s o l v e rc o n f o r m i t y f o rr e a l i t ya p p l i c a t i o np r o c e d u r e u s e sx m lt od e s c r i b et h ed o m a i nc o m p o n e n t ,t h es y s t e mc o m p o n e n t ,t h es t y l e a n dt h el a y o u td o c u m e n t c a r r i e so nt h ec h a r a c t e r i s t i cm o d e l l i n gt ot h ec o m p o n e n t ,a f t e rw i t h d r a w st h e 2 硕士学位论文:基于领域构件的软件开发技术的研究与应用 c h a r a c t e r i s t i ct od e s c r i b et h ec h a r a c t e r i s t i cw i t hx m l 一d e s i g n e do n ek i n dt oh a v et h ea p p l i c a t i o np r o c e d u r em e t h o da c c o r d i n g t ot h ec h a r a c t e r i s t i cd e s e r i p t i o n ; a f t e r w a r d s ,t h i sa r t i c l ea c c o r d i n gt oh a sr e a l i z e dg r o u po fd o m a i n sc o m p o n e n t sa s w e l la st h ee d i t o ra n dr e s o l v e r t a k ea b o v ed e s i g na st h ef o u n d a t i o nw h i c h c o r r e s p o n d sw i t hi t w r i t t e nb y 堑丛j i n g 鱼4 i ( c o m p u t e rs o f t w a r ea n dt h e o r y ) d i r e c t e db y p r o f e s s o rw a n gm i n gy a h k e yw o r d s :t h ed o m a i nc o m p o n e n t ,t h ec h a r a c t e r i s t i cm o d e l l i n g , x m l ,t h e l a we n f o r c e m e n ts u r v e i1 l a n c e ,p r o g r a m sf a c et h ea s p e c t 3 硕士学位论文:基于领域构件的软件开发技术的研究与应用 第1 章引言 1 1 选题背景和意义 为了解决软件危机问题,人们引进了软件工程的概念,提出了软件生存期模型, 对软件进行自顶向下的分阶段的开发或者是采用原型化方法进行软件设计。生存周 期法和原型开发方法各有各的优势和不足。但它们有一点共同之处,那就是每开发 一个软件都要从头做起,按照一定的步骤设计并实现软件系统的所有功能。这样, 很多的开发项目都在做着大量的重复性的工作,软件的开发效率非常低。为了在软 件行业进行社会化大生产,解决当前软件生产远远落后于社会需要的状况,在软件 界引进了软件构件概念,提出了采用软件构件技术来开发、生产软件的方法,即构 件化开发方法。也就是在开发一个软件时先构造出软件的总体框架,然后将已有的 软件构件集成进总体框架中,从而得到所需要的软件。 随着公安部门金盾工程的不断推广,很多软件公司和公安系统合作在不断开发 着用于公安执法监督的软件系统。在这些软件系统中,有各种架构模式和数据库系 统存在,实现方法各不相同。但有很多的软件功能都是相同或相似的,由于受着传 统软件开发方法的限制,在不同单位不同部门之间进行着大量的重复开发设计工作, 这不仅浪费了大量的人力、财力和时间资源,而且由于将大量精力用于频繁的软件 开发、更新工作,使得没有足够的人力、时间对软件进行充分测试。有时由于软件 更换太快,开发时间太少,甚至根本没有进行测试就将软件直接用于公安机关的执 法监督工作,这就很难保证软件的正确性、可靠性和稳定性。 近年来,在公安部门法制领域同在其他领域一样投入了很大的力量来推广软件 工程方法,试图解决软件危机。但是,如果每开发一个软件系统都要重新设计实现 软件的每一部分,尽管可以采取先进的管理方法,总的开发效率也不会很高。现在 各单位都在不断地开发的各自的法制软件系统中有大部分软件所完成的功能是相同 的。比如,案件登记、案件处理、案件审核、执法考评、统计分析、法律文书打印 及各种管理功能等。如果将这些功能进行提炼分解,将相应的软件设计为软构件, 使其应用于不同的单位、不同的环境中,则可以大幅度减少各单位的软件重复开发 量,节省大量的人力和时间。同时,由于这些软构件是一次性进行开发设计,可以 硕士学位论文:基于领域构件的软件开发技术的研究与应用 集中组织人力和时间对其进行充分的测试,从而较好地保证其正确性、可靠性和稳 定性。因此,在公安部门法制领域中采用构件化方法进行软件开发,是提高软件开 发效率、保障软件质量的有效途径。 1 2 国内外相关研究现状 目前,国内外已经制定了一些软件构件规范和标准。如m i c r o s o f t 公司推出了软 件连接技术规范o l e ;i b m 、a p p l e s u n 联合推出了开放的构件软件技术规范o p e n d o c : l i p 3 c o m c 等组织推出了对象技术规范c o r b a 。在这些技术规范和标准之下,一些 公司开发出了不少的商业化的软件构件。但是,这些技术规范都是针对通用软硬件 平台制定的。在这些规范下生产的软件构件基本上都是通用的基础构件。至于领域 构件,由于其专用性,现在还没有统一的技术规范和标准。据了解国外有些公司开 发了一些用于本行业的领域软件构件,但由于技术保密和技术封锁的原因,目前无 法得到这些软件产品和相关的技术资料。国内仅有个别单位应用构件化软件开发方 法开发了一些用于本部门的领域构件,但由于这种开发方法还处于研究阶段,还缺 乏相关的方法规范和技术规范,这些开发也仅是一些尝试,开发的软件规模和应用 范围都不大。到目前为止在国内公安系统还没有见到有单位采用这种方法和技术开 发该领域专用的领域构件。 1 3 研究内容和结构安排 本课题的研究工作主要包括两部分内容。其中第一部分是关于构件化与面向领 域的软件开发方法的研究,研究内容主要是归纳整理出和软件构件技术相关的基本 概念、分析研究出构件化与面向领域的软件开发过程与其它开发方法的不同之处以 及软件开发各阶段的重点工作内容。第二部分研究内容是将该方法应用于执法监督 软件的开发设计中,设计出可以实际应用的法制领域的软件构件。本论文的第二章 对传统的软件开发方法,即寅底向上的开发方法、白顶向下的开发方法、原型开发 方法和面向对象的开发方法作了简单的介绍,分析了这些开发方法各自的优缺点, 提出了引入其它开发方法的必要性。第三章论述了对构件化软件开发方法的主要研 究成果。给出了和构件化方法相关的基本概念,如复用、可复用性、软件构件、软 件构架、构件库、构件化软件开发方法等等。第四章介绍了面向领域工程的软件开 发过程与方法。第五章介绍了法制领域软件构件设计的基本情况。第六章对全文作 硕士学位论文:基于领域构件的软件开发技术的研究与应用 了一个概括性的总结。本章第一节简单介绍了法制领域软件开发现状,第二节研究 了法制领域软构件设计的主要内容与工作重点,第三节对执法监督软件功能进行了 初步分解,第四、五、六、七、八、九节分别对具体的软件构件设计进行了详细论 述。 硕士学位论文:基于领域构件的软件开发技术的研究与应用 第2 章传统的软件开发方法概述 2 1 自底向上的开发方法 在计算机应用的早期,硬件的开发设计受到充分的重视,而软件一直被当作硬 件的附属品末得到足够的重视,当时的软件开发也仅仅是作坊式的个体化的程序设 计。当需要为一个应用项目设计一个程序时,各个程序员就开始设计编制自己所负 责的模块,实现程序的基本功能,然后由总联人员将各个模块联接起来生成整个软 件系统。采用自底向上的开发方法主要有以下优点( 程序易于满足应用单位的具体 需要。在编程过程中也易于发现和扩充新的需求。但是,由于这种从底层模块开始 的开发方法没有进行总体设计,在进行模块联接装配时,容易出现模块相互之间接 口不一致等问题,使得系统难以装配,有时甚至会出现整个推倒重来的情况。除此 之外,采用这种方法也还存在着如下的问题: - 用这种方法开发出的软件质量低,不能满足用户对系统的要求。对软件开发进 度和开发成本的估计很不准确,经常突破进度和成本指标。 _ 软件通常没有适当的文档。软件的可维护性很差,运行中出现问题时进行修改 非常困难,当软硬件环境发生变化时很难修改软件使其适应新的环境,也难以 扩充新的功能来满足用户不断增加的需求。 - 软件开发生产率难以提高,不能适应计算机应用迅速普及对软件生产的要求。 随着软件规模的不断扩大,这种作坊式的开发方法的缺点越来越明显,以至于 产生了“软件危机”。为了解决“软件危机”问题,人们逐渐采用了其它的软 件开发方法,以适应计算机应用迅速发展的需要。 2 2 自顶向下的开发方法 随着计算机应用的多样化、复杂化,软件的规模越来越大,采用自底向上的方 法开发与维护软件也越来越困难。为了克服自底向上开发方法的缺点,人们引进了 软件工程的概念,提出了软件生存期模型,对软件进行自顶向下的分阶段的开发。 这种模型将软件生存期分为软件开发和软件维护两个大的阶段。其中软件开发阶段 又分为分析、设计和实现三个步骤。第一步进行系统需求分析和软件需求分析,确 定要实现一个什么样的系统,即系统应具有的功能和性能。第二步首先进行概要设 硕士学位论文:基于领域构件的软件开发技术的研究与应用 计,提出如何实现分析阶段所要求的系统,并且设计出系统的总体结构,也就是设 计出组成系统的模块以及这些模块之间的相互关系:然后进行详细设计,设计出实现 各模块的具体算法。第三步是进行编程与测试,采用选定的程序设计语言实现各模 块的算法,并对所得到的程序进行测试。采用生存期方法对软件进行自项向下的设 计具有如下优点: 每个阶段的任务相对独立,从而降低了软件开发的难度。 在开发的每个阶段都采用科学的技术方法和严格的阶段审查、评审,使得整个 开发工作都可按照工程的方法有条不紊地进行。进而提高了软件的质量。但是, 这种方法也存在种种的缺陷: _ 这种方法要求在进入实际开发之前必须对需求进行严格的定义,而实际上,由 于用户和开发者等诸多方面的原因,在系统正式建立起来之前,很难仅依靠分 析来制定出一套完整、一致、有效的用户需求。 一这种方法难以适应用户需求不断变化的情况。 采用这种方法的开发周期也比较长。 为了克服传统软件生存期模型的种种缺点,人们借鉴了其它工程学科的做法,在软 件系统开发中采用了原型开发方法。 2 3 原型开发方法 原型法打破了自顶向下的开发模式,是目前比较流行的、实用的软件开发方法。 所谓原型法就是指在获得一些基本需求后,就将其实现,产生一个系统的早期版本, 即原型。有了这个原型,用户就可对其进行评价,提出新的需求,然后开发者根据 新的需求重新设计,直到满足用户的需求 采用原型方法的优点: 可以逐步获得正确完整的需求,消除开发者和用户之间的通信障碍,使得软件 设计和编程更快速更正确,从而提高软件质量。 _ 但是,原型法也有它的问题: - 大多数原型并不能直接演化为最终系统,用户看到的原型和实际所需要的系统 之间存在很大差别,当进行重新设计时用户难以接受。 -为使系统尽快投入运行,开发人员会采用一些自己熟悉而不适合采用的操作系 硕士学位论文:基于领域构件的软件开发技术的研究与应用 统、编程语言等开发环境,而这些对以后最终环境的选择会产生不良影响。 _ 采用原型法还需要有比较好的原型开发工具的支持。 2 4 面向对象的开发方法 上面介绍的自顶向下软件工程方法和原型法开发方法采用的都是传统的结构化 的分析方法和结构化的设计方法,属于结构化软件生存期模型。随着面向对象技术 的逐渐成熟,这几年又提出了o o 软件工程生存期开发模型。也就是采用面向对象的 分析方法和面向对象的设计方法来开发软件系统。 软件对象是指外部实体对象在计算机系统中的内部表示,是外部对象属性数据 和这些属性数据上的容许操作的抽象封装。具有相同属性和容许操作的一组对象的 一般描述,称为对象类:类中的每个对象都是该类的对象实例。或者说,对象类给出 同类的一组对象的定义。系统运行时通过这类定义中属性初始化可以生成该类的对 象实例。一个对象类可以定义为另一个更一般的对象类的特殊情况,这个一般对象 类是特殊对象类的父类( s u p e r c l a s s ) ,或者说,特殊对象类是这个一般对象类的子 类( s u b c l a s s ) 。子类继承父类盼所有属性和操作,除此丽外,子类还可以定义它自 己特有的属性和操作。 面向对象分析的目的是完成对问题空间的分析和建立系统模型。其体任务是确 定和描述系统中的对象、对象的静态特性和动态特性、对象间的关系等。面向对象 的设计是确定问题的解决方案的过程,包括系统设计和对象设计两方面的内容。 上面介绍的几种开发方法各有各的优点和缺点,但他们有一个共同之处,那就 是在开发一个软件系统时,不管采用其中的哪一种方法都需要按照开发步骤开发设 计出软件系统的每一组成部分。这样,在一些类似软件系统的开发中,有很多功能 相近甚至相同的软件部分被多次重复开发。如果我们将这些功能相近或相同的软件 部分设计成可以用于不同系统的通用软件,就可以减少很多的软件重复开发工作, 节省大量的人力和时间。 下面介绍的软件构件就是这样的可以重复使用的通用软件。 硕士学位论文:基于领域构件的软件开发技术的研究与应用 第3 章构件化软件开发方法研究 目前关于构件化软件开发方法和构件技术的文章也有一些,但大多数都是比较 分散、零乱的探索性的文章,还没有系统论述构件化方法的资料。本章首先整理归 纳出了和构件化方法相关的基本概念,如复用、可复用性、软件构件、软件构架、 构件库、构件化软件开发方法等等。随后,对如下内容进行了较为详尽的分析与研 究: _ 软件复用的分类和构件的形态 - 构件化软件开发过程针对构件化开发方法的特点,重点研究了在软件开发的各 个阶段,即在需求分析、软件设计和软件实现阶段,采用构件化开发方法和传 统开发方法的不同,以及需要重点注意的问题。 31 软件复用、软件构件及相关概念 自从1 9 6 8 年的n a t o 软件工程会议正式提出软件复用的概念以来,软件复用己有 了近三十年的发展历程,复用的对象也从早期的代码复用扩展到对软件开发过程中 一切有价值的信息的复用,包括需求、需求规约、设计、源代码、测试计划和测试 案例等。近三十年的实践证明,软件复用可以有效地提高软件的质量和生产率,是 解决当前“软件危机”的一条比较现实可行的途径。 在一个新的应用环境中( 同一系统的其它地方或另一个系统中) 使用已有的软件成分。 可复用性软件可以被复用的程度或范围。 可复用软件构件一一软件系统中一切可以被明确标识和复用的软件实体:它可以是 需求分析、设计、代码、测试数据或软件开发过程的其它产品。 软件构件一一一软件系统中一切可以被明确标识的软件实体。在本文中如无特 殊声明,专指可复用软件构件。 软件构架 复用者 可移植性 软件系统的体系结构,是一种特殊的软件构件。 在自己开发的项目中复用软件构件的个人或组织。 原来在一台计算机和操作系统上开发的软件构件可以在另一台 计算机和( 或) 操作系统上使用的程度。若构件可移植性好,则它的复用潜力就大。 硕士学位论文:基于领域构件的软件开发技术的研究与应用 可复用构件库一可复用软件构件的集合,包括向用户提供构件时所需的过程和 功能。 软件生命周期一软件系统在开发和配置时所经历的一系列阶段。尽管不同项目 在具体阶段上会有所差别,但通常都会包括下列阶段:需求分析、设计、编码、测试 和维护。 构件化软件开发方法一一包括开发可复用软件构件和基于可复用构件的 开发两个生命周期。这两个生命周期与传统的软件开发过程有着很大的不同,主要 体现在生命周期的各个阶段中,均以软件复用为中心,以可复用的软件构件库为基 础,构件的制作与复用相互衔接,从而将软件复用的思想充分贯彻到软件开发过程 的各个阶段中。构件化软件开发方法可以提高软件生产率并减少开发代价,还可以 提高软件系统的质量。具体来说,采用构件化软件开发方法的优点可以归纳为下列 五个方面: 一提高生产率。 复用软件构件最明显的好处在于提高生产率,从而减少开发代价。生产率的提高不 仅体现在代码开发阶段,在分析、设计及测试阶段同样可以利用复用构件来节省开 销。用可复用的构件构造系统还可以提高系统的性能和可靠性,因为可复用构件经 过了高度优化,并且在实践中经受过检验。 减少维护代价 这是复用软件构件的另一个重要的优越性。由于使用经过检验的构件,减少了可能 的错误,同时软件中需要维护的部分也减少了。例如,要对多个具有公共图形用户 界面的系统进行维护时,对界面的修改只需要一次,而不是在每个系统中分别进行 修改。 一提高互操作性 使用软件构件的一个更为专业化的好处在于提高了系统间的互操作性。通过使用接 口的同一个实现,系统将更为有效地实现与其它系统之间的互操作。 一支持快速原型 复用软件构件的另一个好处在于对快速原型的支持,即可以快速构造出系统可操作 的模型的原型,以获得用户对系统功能的反馈。利用可复用构件库可以快速有效地 1 4 硕士学位论文:基于领域构件的软件开发技术的研究与应用 构造出应用程序。 3 2 复用的分类和构件的形态 3 21 复用的分类 可以从不同角度对软件复用进行划分和描述。 - 组装式复用与生成式复用 也可以称为产品复用与过程复用。组装式方法利用库中的底层构件自底向上地开发 系统,关键是要解决构件的分类和检索技术,以及开发出一个自动化系统以支持组 装过程。生成式方法是特定于应用领域的,它采用标准的领域构架模型和一致的构 件接口,目的是根据一个适当的参数规约生成新的系统。这种方法在成熟的领域中 非常有效,但在开发初始模型时需要很大的努力。 小规模复用与大规模复用 小规模复用( 例如使用数学函数库) 现在己得到了广泛的应用,但个别的复用节省的 代价并不大,必须要普遍地复用才能获得收益。大规模复用针对的是整个子系统, 这时个别的复用即可获得很大的收益,因为复用了成千上万行代码。但是对一个特 定的大构件来说,复用的机会是非常有限的。 _ 原样复用与带修改的复用 构件既可以原样复用,也可能需要修改。一般来说,可复用构件应设计得比较有弹 性,例如可以设计成参数化的构件,但为了满足复用者的需求,适当的修改也是必 要的。易修改性,即软件构件易于修改的能力,是可复用软件中尤为重要的性质。 32 2 构件的形态 构件具有不同的粒度,即具有不同的形态。基于面向对象技术的软件构件的主要构 件形态有: - 类构件 类构件是粒度最小的构件。 一类树构件 一个类树是这样一种构件,其树根是一个抽象类,其它的树节点是一些具体子类( 也 可能有抽象类) 。 框架构件 硕士学位论文:基于领域构件的软件开发技术的研究与应用 一个框架由一组相互协作的类组成,阐明了整个设计、类间依赖及成员类的责任分 布。这些类通常是抽象类,实现细节放在具体子类中,构成一个抽象的设计,不同 的子类构成对设计的不同实现。将框架作为构件使得用户可以复用设计,用户通过 具体子类的嵌入而在框架中加入特殊功能。在非面向对象设计环境下,可按构件的 规模或功能来划分构件的形态: _ 函数和过程类构件 这是目前使用最多的可复用构件。但是,现在常用的函数和过程,其接口都是固定 的,作为一般意义的构件,其接口通常是可变的。 进程级构件 这类构件是能够独立运行的、具有完整功能的进程构件。 一子系统级构件 子系统级构件由一个或多个进程级构件组成。它是一个软件系统中的一个子系统。 构架构件 在构架构件中嵌入其它构件可以生成进程级构件、子系统级构件或整个软件系统。 硕士学位论文:基于领域构件的软件开发技术的研究与应用 第4 章面向领域的软件开发 4 1 领域工程及其相关概念”1 大多数软件系统可以根据业务领域和它们支持的任务类型来划分类别。例如, 定期航班预定系统、医学纪录系统、证券管理系统、订单处理系统、库存管理系统 等等。我们把根据系统类别而组织的领域称为纵向领域。类似的,我们也可以根据 软件系统部件的功能把它们分类,例如数据库系统、容器库、工作流系统、g u i 库、 数值代码库等等。我们把根据软件部件的类别组织的领域称为横向领域。 很明显,在一个领域内特定的系统或者组件分享很多特性,因为它们也分享很 多许多需求。因此,在一个特定的领域里构造过一系列系统或者构件的公司在构造 后续系统时,可以利用已经获得的知识。通过以可重用资源的形式和在新产品开发 过程中捕捉这个领域的知识,这个组织将能够在更短的时间内,以更低的成本、更 高的质量发布新的产品。领域工程就是一个为达到此目的而采取的系统化步骤。 领域工程是在构造一个特定领域内的系统或者系统的某些部分时,以可重用的 形式( 也就是说,可重用的工作产物) ,收集、组织并保存过去的经验的活动,以 及在构造新系统时,提供一种充分的方法来重用这些资源( 也就是说,获取、限定、 改造、装配等等) 。 领域 一个知识或者活动的域,有一组能够被这个域内的实践者理解 的概念和术语来确定特性。 领域分析一一一一选择和定义要解决的领域并收集相关的领域信息,把它整合成 一个一致的领域模型。 领域唐息一一一一包括领域内已有的系统、领域专家、系统使用手册、文本、原 型、试验、与未来系统有关的已知需求、当前或潜在的客户、标准、市场调研、技 术预测等等。 领域模型一一一一领域内系统的通用和差异属性、属性和领域概念的意义以及差 异属性之间的依赖性的明确表示。 领域设计一一一开发用于领域中系统族的一个架构,并设计一个制作计划。 领域实现一一一一使用合适的技术来实现架构、组件和过程计划。 硕士学位论文:基于领域构件的软件开发技术的研究与应用 应用工程一一一一基于领域工程的结果构建系统的过程。 42 领域特征建模 特征建模就是对概念的通用和可变属性以及它们的相互依赖性进行建模的活 动,并且把它们组织成一个一致的模型,就是特征模型。 4 21 特征模型 领域特征模型是面向特征的领域需求规约模型,它代表概念实例的通用和可变 特征,以及可变特征之间的依赖。它包括一个特征图和某些附加信息,例如,每一 个特征的简短语义描述、每一个特征的原理、每一个特征中的风险承担者和客户程 序,以及具有一个给定特征、约束、默认依赖规则、可用性站点( 即在那里、什么 时候和对谁这个特征是有效的) 、绑定站点( 即在哪里、什么时候、谁能够绑定一 个特征) 、绑定模式( 即动态或者静态绑定) 、开放封闭属性( 即是否期望新的子 特征) 和优先级的系统例子。 42 i 1 特征图 一个特征图包含一组节点、一组定向边和一组边的修饰。节点和边构成了一颗 树。边的修饰被画成连接子集或者从同一个节点延伸出来的所有边的弧。边的修饰 高效的定义了一个节点的子节点的一个划分。 在特征图中存在着以下几种基本的特征类型“3 : - 强制特征 强制特征被包含在一个概念实例的描述中,当且仅当它的父节点包括在实例的描述 之中。一个强制措施节点被一个简单边所指向,末尾有一个同心圆,如下图所示, 概念c 的每一个实例都具有特征f 1 和f 2 。 硕士学位论文:基于领域构件的软件开发技术的研究与应用 可选特征 可选特征可以包含在一个概念实例的描述中,当且仅当它的父节点包含在描述中。 一个可选特征被一个以一个空心圆结尾的简单边所指向的简单边所指向,如下图所 示,特征f l 和f 2 都是概念c 的可选特征。 二选一特征 特征图中的一个节点可以拥有一组或者更多组直接二选一特征。类似的,一个特征 也可以拥有一组或多组直接二选一子特征。一组二选一特征的节点被一条用弧连接 的边所指向,如下图所示,c 具有两组二选一特征:一组包括f 1 和f 2 ,而另一组包括 f 3 、f 4 和f 5 。 o r 特征 一个概念可以拥有一个或者多个直接o z 特征。一组o r 特征的节点被用一个实心弧连 接的边所指向。如下图中,c 具有一组o r 特征:包括f 3 、f 4 和f 5 。 1 9 硕士学位论文:基于领域构件的软件开发技术的研究与应用 4 21 2 在特征模型中与特征图解相关的其他信息 一个完整的特征模型由一个特征图和与它有关的其他信息组成“1 ,包括: 语义描述 每一个特征都应该拥有至少一个简单描述以描述它的语义。 一原理 一个特征具有一个标注,解释为什么在这个模型中包含这个特征。 一范本系统 如果可能,我们应该使用已知的实现这些特征的系统来注解特征 约束和默认依赖规则 约束就是可变特征之间的硬依赖,可能跨越多个特征视图。 有效站点、绑定站点、绑定模式 有效站点描述一个可变特征在什么时候、什么地方和对谁是可用的,而绑定站点描 述在什么时候、什么地方、由谁绑定一个特征。绑定模式决定一个特征是否是静态 的、可变的或者是动态绑定的。 优先级 可以把优先级分配给特征以纪录与项目的相关性。 42 2 特征建模过程 4 2 2 1 怎样发现特征 发现特征主要包括以下三个步骤“1 : _ 收集特征的源 特征的源包括现有和潜在的风险承担者、领域专家和领域文献、现有的系统、预先 存在的模型、在开发过程中创建的模型等等。 确定特征的策略 硕士学位论文:基于领域构件的软件开发技术的研究与应用 用于确定特征的策略包括自顶向下和自下向上策略两种 特征建模的一般步骤 特征建模是一个具有以下步骤的持续性的、迭代的过程: 1 ) 纪录实例之间的相似性,就是通用特征。 2 ) 纪录实例之间的差异性,就是可变特征。 3 ) 在特征图中组织特征,就是把特征组织成层次,并且按照强制、二选一、可选、 o r 以及可选二选一特征来对它们进行分类。 4 ) 分析特征组合和交互。 5 ) 纪录有关特征的额外信息。 4 2 22 分解技术 分解技术包含两种重要的概念的分解: 模块分解 模块分解包括把系统分解为层次单元。例如,模块、组件、对象、函数、过程等等。 - 方面分解 方面分解是把一个概念的描述组织成一组视角,其中,每一个视角都与一个不 同的方面有关,每一个视角都可以独自充分的描述整个概念。方面包括交互、算法、 数据结构、数据流、同步、错误处理、内存管理和历史化等等。 方面分解和模块分解互相补充,并且应该组合在一起使用。它们对应与人类的 自然建模。一般同时采用这两种方法的实践,从不同的视角研究事物,并且把它们 分解成层次。 4 3 面向方面的编程技术 良好编程的一个主要原则是把与正在开发的系统有关的重要问题以一种清晰 的、局部化的方式编码。把重要的问题局部化在一个单独的代码段中有很多好处。 面向对象、泛型和面向组件的编程都允许我们以一种清晰的、局部化的方式表达这 样的概念。然而,也有一些问题很难甚至不可能使用传统的结构,以一种清晰的、 局部化的方式表达。例如,从一个良好的、清晰的系统设计开始,所有的重要的领 硕士学位论文:基于领域构件的软件开发技术的研究与应用 域概念都已经清晰的表示为对象或者组件。然后,软件需要修改为在网络上分布的。 为了达到这个目的,软件必须添加安全控制、事务控制、分布数据传输以及同步并 发访问和执行。实现这些问题中的每一个都需要把许多小的功能片段添加到大多数 已有的组件和对象中。有时甚至必须要修改整个组件结构,以获得合理的性能。做 出以上修改后,基本摧毁了良好的、清晰的系统设计。面向方面的编程技术正是为 了解决这些问题而产生的。 4 3 1 面向方面编程的基本概念 面向方面编程的目标是提供方法和技术,用于把问题分解成一系列功能组件和一系 列贯穿多个功能组件的方面,然后组合这些组件和方面,获得系统的实现。 4 3 2 如何产生方面 方面的例子 同步、实时限制、错误检查都是方面的例子,其他例子还有对象交互、内存管理、 永久性、历史化、安全、缓存策略、配置、监控、测试、数据的结构和表示,以及 领域特定优化。 一代码混乱 当我们试图只使用通过过程实现方面的时候,代码混乱就发生了。在优化的情况下, 作为手工编写优化的、混乱的代码的替代,我们更应该使用高层的、非优化的代码, 以及一组领域特定优化来表达程序。 横切 横切是方面的核心。如果一个模型横切了另一个模型的结构,那么这个模型是另一 个模型的一个方面,但同时,这个方面可能是另一个没有在图中展示的层次结构的 一个模块单元。 4 3 3 组合机制 组合机制需要遵循的原则: 最小耦合 方面之间以及方面和组件之间的耦合应做到最小,但不是完全的分离它们,因为完 全的分离只有在一些简单情况下才有可能,大多数方面都是不能完全分离的。 不同的绑定时间和模式 硕士学位论文:基于领域构件的软件开发技术的研究与应用 在领域分析过程中发现的特征,被作为文档,使用特征图纪录下来,特征图使用绑 定时间作为注解。例如,展示它们是在运行时之前还是运行时期内被绑定。绑定模 式分为静态和动态绑定两种。静态绑定指的是优化的而且“冻结”的绑定,例如内 联。而动态绑定要在被绑定的实体之间留下某些间接的代码。在从新绑定非常频繁 的情况下,我们将使用动态绑定,否则使用静态绑定。 - 非扩散的适应性 这里指的是不需要手工修改,就可以使组件和方面适应的能力。 4 3 4a o p 编程的实现技术 一般有三种方法实现表达一个方面的抽象“: - 把方面支持编码为一个传统的库 使用这种方法,需要提供一个合适的组合机制,处理所包含的各种横切方面。 _ 为方面设计一种独立的语言 使用预处理器、编译器或者解释器来实现这种语言。本文将使用x m l 来表达方面的抽 象并且通过解析程序实现这些抽象。 - 为方面设计一个语言扩展 对于一个语言扩展,可以把它插入到任何我们当前使用的语言中。 随着增加一组方面语言的抽象和横切级别,需要的编制转换的复杂性通常增加的非 常快。程序设计语言设计和实现的发展,与大量拥有高度专业技巧的程序员相竞争, 使得用于各种方法的自动转换变的越来越复杂。通过把某些手工工作转移到方面编 制者中,使程序员可以集中精力于软件开发中更加具有创造性的部分。 44x m l 简介 44 1 什么是x m l 1 ) x m l 即为可扩展的标记语言( e x t e n s i b l em a r k u pl a n g u a g e ) 。它是一套定 义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。 由于x m l 的平台无关性,它可以被用于多种系统平台上,而且它得到了工业 界的广泛支持,大多数的应用软件开发平台都可以开发x m l 应用程序。这些 程序可以同时拥有多个程序语言版本,并且能够跨平台运行。而且x m l 使用 的是非专有的格式,不受版权、专利、商业秘密或是其他种类的知识产权的 硕士学位论文:基于领域构件的软件开发技术的研究与应用 限制。因此在本文中采用了) 。也来描述领域构件。 4 4 2x m l 文件的整体结构 x m l 文件包括三部分:x m l 声明、处理指示( 可选) 、x m l 元素。x f l l 文档的一个基本 要求是形式良好的( w e l lf o r m e d ) ,一个形式良好的x m l 文档要包含这三个部分。 下面是一个完整的x m l 文档( 程序1 。1 ) : 李华 河北 1 5 6 2 8 7 5 5 5 5 张三 北京 :年龄 1 4 8 2 8 7 3 4 2 5 44 3 形式良好的x m l 为了使一个文档”形式良好”,x 扎文档中的所有置标和字符数据必须遵守如下规则: 文档的开始必须是x m l 声明。

温馨提示

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

最新文档

评论

0/150

提交评论