已阅读5页,还剩66页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 极限编程是敏捷开发中的一种,是软件开发方法学泰斗k e n t b e c k 先生最为推崇的方法之一,他强调交流,简化,反馈和胆识, 在测试驱动开发、重构、小型发布等1 3 种经典实践的帮助下,指导 软件工程师进行软件系统开发。 本文首先对全日空网上预定系统及其子系统划分、系统架构等 做了简要阐述;然后对该系统特殊性做了分析,根据其需求变化大, 客户要求得到高质量、可运行的小型发布版本试运行的特点,最终 选取极限编程方法作为系统开发的指导方法论,并在全日空网上预 定系统开发中进行了认真实践。 全日空网上预定系统的开发过程包括多种实践,如完整团队、 结对编程、集体代码所有权等。在采用极限编程的应用程序开发中, 文章就u m l 指导需求分析、利用自动化测试工具j v n i t 等辅助测试驱 动开发实践、利用设计模式提高系统构架质量、利用重构不断完善 和改进代码及设计缺陷等几个方面进行了详细阐述;在基于极限编 程的数据库开发中,作者提出了测试驱动数据库开发的思想,并在 现有的自动化测试工具d b u n i t 和d b i o n s t e r 等的辅助下完成了项目, 通过以上方法的实践,数据库处理部分的性能得到大大的提高。极 限编程的引入在一定程度上缩短了开发时间,节约了开发成本,并 将发现错误的时间大大提前,提高了软件的质量。最后,本文总结 了所做的工作,指出了该方法学存在的问题,提出了需要进一步研 究的方向。 关键词敏捷开发,极限编程,测试驱动数据库开发,d b u n i t , d b m o n s t e r a b s t r a c t e x t r e m ep r o g r a m m i n g ,i sp r o m o t e db yt h ef a t h e ro fs o f t w a r e d e v e l o p m e n tm e t h o d s ,k e n tb e c k , w h i c hi so n eo f t h ea g i l em e t h o d s , w h i c he m p h a s i z e di nc o m m u n i c a t i o n ,s i m p l i c i t y , f e e d b a c ka n dc o u r a g e x p sc l a s s i cm e t h o d si n c l u d et e s td r i v ed e v e l o p m e n t ( t d d ) ,r e f a c t i o n , c o n t i n i o u si n t e g r a t i o na n da n o t h e r1 0m e t h o d sw h i c hc a ni n s t r u c tx p e r s t od e v e l o pt h e i rp r o j e c t s a t f i r s t ,p a p e rp r e s e n t ss k y h o l i d a ys y s t e m ss u b s y s t e ma n d a r c h i t e c t u r e w ed e c i d e dt oa d o p tx pa so u rs o f l - v c a r ed e v e l o p m e n t m e t h o d o l o g y t oi n s t r u c to u rs y s t e md e v e l o p m e n ta n dp u ti ti n t op r a c t i c e , b e c a u s et h a tt h es y s t e m sr e q u i r e m e n ti su n c e r t a i n ,o u rg u e s tr e q u i r e s g o o d - q u a l i t ya n dr u n a b l es m a l lr e l e a s e s k y h o l i d a y sd e v e l o p m e n tp r o c e d u r ei n c l u d e m o l et e a m p a i r p r o g r a m m i n g , c o l l e c t i v eo w n e r s h i pe t c i nt h ea p p l i c a t i o nd e v e l o p m e n t b a s i n go nx p , p a p e rd e s c r i b e dd e t a i li nu m l , u s i n ga u t o m a t i ct e s tt o o l j u n i tt oa s s i s ti nt t d u t i l i z i n gd e s i g nm o d e la n dr e f a c t i o nt op r o m o t e t h eq u a l i t yo fc o d e s i nt h ed a t a b a s ed e v e l o p m e n tb a s i n go nx p , w e p r o m o t et h ec o n c e p tt e s td r i v ed a t a b a s ed e v e l o p m e n t ,a n du s i n g a u t o m a t i ct e s tt o o l sd b u l l i ta n dd b m o n s t e rt oa s s i s to u rd e v e l o p m e n t d a t a b a s ed e v e l o p m e n tb a s i n go nx pa l s om a k eag r e a ti m p r o v e m e n ti n o u rd a t a b a s e sp e r f o r m a n c e a p p l i c a t i o nd e v e l o p m e n tb a s i n go nx p i m p r o v e st h eq u a l i t yo fo u rc o d e sa n dr e d u c et h ee r r o rh i d i n gi no u r c o d e sg r e a t l y f i n a l l y , i ts u m m a r i z e st h er e s e a r c ha n da n a l y z e st h e p r e s e n tp r o b l e m sa n dt h ew o r ki nf u t u r e k e yw o r d s a g i l em e t h o d ,e x t r e m ep r o g r a m m i n g ,t e s td r i v e d a t a b a s ed e v e l o p m e n t ,d b u n i t ,d b m o n s t e r 原创性声明 本人声明,所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。尽我所知,除了论文中特别加以标注和致谢的地方外,论文中不包含 其他人已经发表或撰写过的研究成果,也不包含为获得中南大学或其他单位的学 位或证书而使用过的材料。与我共同工作的同志对本研究所作的贡献均已在论文 中作了明确的说明。 作者签名: 嗍峰钥 关于学位论文使用授权说明 罗日 本人了解中南大学有关保留、使用学位论文的规定,即:学校有权保留学位 论文,允许学位论文被查阅和借阅;学校可以公布学位论文的全部或部分内容, 可以采用复印、缩印或其它手段保存学位论文:学校可根据国家或湖南省有关部 门规定送交学位论文。 作者签名 吼挑7 年蝴夕同 硕士学位论文第一章绪论 1 1 引言 第一章绪论 2 0 0 1 年2 月,在美国犹他州的一个滑雪场,1 7 位轻量级软件开发方法的创 始人和专家,包括k e n t b e c k ( e x t r e m e p r o g r a m m i n g ) 、a l i s t a i r c o e k b u r n ( c r y s t a l m e t h o d o l o g i e s ) ,j i mh i g h s m i t h ( a d a p t i v es o f t w a r ed e v e l o p m e n t ) 等等,共同 发布了“t h em a n i f e s t of o r a g i l es o f t w a r ed e v e l o p m e n t ”( 敏捷软件开发宣言) 。 这表明,在软件业经历了无数次的项目失败之后,人们开始反思软件开发的工 程特性,反思计划和控制的有效性,反思过去对于不确定性的态度和反应。敏 捷开发被软件业,以及该行业中的一些人所认识、理解和推崇。 会上所提出的敏捷开发( a g i l e ) 方法是近十五年来涌现的一群新的方法学, 这些方法学是区别于传统开发方法( 重载方法,h e a v y w e i g h tm e t h o d o l o g i e s ) 的轻量级方法( l i 曲咐e i g h tm e t h o d o l o g i e s ) 【4 】。敏捷开发方法高度重视软件生 产率,主要适用于需求模糊或者快速变化下的项目开发。在保证软件开发有成 功产出的前提下,他们希望尽量减少开发过程中的活动和制品【5 】。 目前流行的几种敏捷开发方法中,1 9 9 8 年由s m a l l t a l k 社群中的大师级人 物k e n tb e c k 提出的极限编程( e x t r e m ep r o g r a m m i n g ,简称为x p ) 是其中最引 人注目的一个。他由一系列简单却互相依赖的实践组成,这些实践结合在一起 形成了一个胜于部分结合的整体,其名称中e x t r e m e 的含义是将好的开发实践 ( p r a c t i c e s ) 运用到极致的意思 1 l 】【1 2 1 。此外,极限编程方法引起了世界各地广 泛的注意,越来越多的项目组采用或正考虑采用极限编程方法进行开发。2 0 0 1 年7 月,在美国北卡莱罗纳州举行了极限编程国际研讨会,会议上s e i 、m m 、 s a s 等知名机构的专家作了专题演讲,表明了极限编程的活跃程度【1 3 l 【1 4 】。 1 2 课题来源及背景 社会不断进步,人们对生活的要求也越来越高。日前,日本航空公司巨 头一一全日空集团,推出了旅游公司提供商品,旅客网上自制的旅游服务理念。 然而该公司对于配套软件的需求不甚明朗,而公司又迫切希望能快速将新理念 变成效益;对于软件质量的要求颇高,这些都对软件开发提出了挑战。 目前,国内外大多数公司仍采用传统瀑布模型指导项目开发,该方法为软 件开发制定了一个将包容大量细节、时间跨度极长的庞大计划,对于需求明确、 硕士学位论文第一章绪论 投入时间较长的大项目,仍有其显著优势;但对需求变化快、系统开发发挥性 强、时间要求又比较紧迫的系统,就略显笨重了。 本课题来源于北京实达科技有限公司一一全日空网上预定系统,由于其需 求变动大、质量要求高并逐步发布可运行版本的要求,经公司研究决定采用极 限编程方法来指导项目开发。对于采用新的开发方法,公司给予了高度的重视 以及全力的支持,投入资金与人力物力到该项目组。此刻,完成本课题所要求 的各项条件皆已准备就绪。 1 3 研究内容及意义 本课题的研究内容主要包括: ( 1 ) 首先对全日空网上预定系统的功能子系统、系统构架等进行分析和描 述;对传统开发方法、敏捷开发方法等进行深入的分析和对比后,根据目标系 统特征选取最合适的开发方法; , ( 2 ) 对极限编程开发方法进行细化,将其典型过程以及实践应用到全日空 系统开发中来。 根据全日空网上预定系统以及开发团队的特征,我们提出了“渐近式”多 方法融合的极限编程思想,以及测试驱动数据库开发方法,指导系统以及系统 数据库开发;此外,为了更好的进行项目计划和时间控制,我们引入了s c r u m 焚烧模型作为系统开发有效的时间管理方法。 ( 3 ) 进行必要的总结和分析,具体包括:项目开发以及产品发布各阶段的 错误率以及缺陷密度分析:项目开发结束后的成本结算以及时间统计。通过这 样的途径我们考察和检验极限编程的优劣势,并检验其是否能达到降低成本、 缩减时间和减少错误的目的。 通过这次实践,我们将在极限编程指导下,完成全日空网上预定系统的整 个开发过程。我们将分析极限编程在项目开发中的应用难点、并对极限编程中 一些问题进行讨论,希望通过我们的项目实践活动提出的一些思想或方法能指 导以后项目的开发活动。 1 4 国内外研究动态 敏捷方法从提出到现在,其发展一直吸引着国内外软件界人士的广泛重视 和关注。 在欧美、印度、日本等软件行业较发达的国家,很多从事软件工程的研究 人员早期的工作都集中在对敏捷开发方法有效性的验证上,大量的理论研究和 项目经验数据证明,敏捷方法在其适当的应用周境下确实是卓越而有效的;不 2 硕士学位论文 第一章绪论 仅如此,也已有很多团队对其进行了实践,新方法在实践中取得了巨大的成功, 受到了很多团队的推崇,如j o n a 公司的o b i x 技术支持小组在采用极限编程 方法后,软件生产率提高了6 7 。t o md e m a r e n 认为,“极限编程对当今时代 的作用可与c m m 在八十年代和九十年代初的作用相媲美”。这是对软件开发方 法论而言,评价是非常高的。 此后两三年的研究工作逐渐转向新方法的完善和发展上 2 0 0 5 年1 1 月,k e n tb e c k 在应邀参加的u m l 中国组织采访中表明,目前 极限编程的发展将呈现两种趋势:其一,尽可能的缩短开发各个过程中的时间 间隔、更加明显的以增量的方式来完成所有工作。这样,从产生一个思想,到 开发出体现这个思想,到能部署和运行的软件之间的时间间隔变得越来越短。 这样的结果是,我们能对变化的业务环境、变化的技术环境、机遇、挑战,或 者是来自竞争者的威胁相应灵活性就越大;其二,尽可能提高极限编程开发过 程的可说明性。我们必须通过详细的进度追踪,让软件开发逐渐成为一个“不 太神秘”的工作,我们必须让软件开发的整个过程像其他工作,如销售或其他 产品生产一样直观明了【5 l 】。 2 0 0 6 年6 月6 日上海交大举办的“敏捷技术专家论坛上”,敏捷开发创始 认、软件工程大师m a r t i n f o w l e r 也同样提出了明确软件开发时间、过程,明了 衡量敏捷开发产出的思想。此外,将敏捷开发应用到分布式大型开发上去也是 目前研究的主要方向【埘。 放眼国内,敏捷开发方法、极限编程作为一个较新的软件工程的课题,在 深入理论研究和工程实践上只能算是刚刚起步。目前我们的理论研究仍然集中 在开发( 测试) 效能分析、质量控制等阶段,也有一些研究和论文涉及到了极 限编程与其他成熟方法的交融与协作等方面,如南京大学计算机软件新技术国 家重点实验室提出了借鉴c m m 需求管理方面等的极限编程研究方向。 此外,国内目前真正在项目中实施x p 模式开发的团队还占少数,尤其是 在数据库上的实践还未曾真正实施过。虽然近几年出现了如东大阿尔派、用友、 联想、托普等一批规模较大,信誉较好的软件企业,他们越来越重视软件管理 以及软件质量,对国内软件业的发展起到了重要的作用;但由于我国的软件开 发起步比较晚,绝大多数软件企业的运作还是小作坊式的生产模式,“小、散、 软”的缺陷一直没有得到根本解决。软件开发普遍存在着项目需求不够清晰,重 代码,轻文档,产品复用性差,升级换代费用高的毛病。而这些现象的出现很 大程度上是国内软件人员对于软件开发方法、软件质量的认识不够造成的。软 件开发的过程五花八门,没有系统的软件开发方法作为指导,尤其是对软件开 发方法指导意义的不重视,使采用新方法也变得不切实际。 硕士学位论文第一章绪论 总之,极限编程作为一个新的软件开发方法,还有很多值得并且需要我们 去研究和实践的地方,各国的软件工程专家和软件工程师们也都在为此不懈的 努力。 1 5 论文内容组织和安排 要使新的软件开发方法真正发挥其指导意义,必须完成两个方面的准备: 第一,对软件开发方法的高度重视以及深入学习和研究;第二,以实际项目为 依托对具体开发方法核心实践进行细化,在此过程中领悟开发方法的精髓;最 后提出发现的问题,并进行改进。 全文共有六章: 第一章绪论。本章依次阐述了全日空网上预定系统的课题来源及背景, 研究内容及意义,极限编程开发方法国内外研究及意义,最后说明了论文的组 织和安排; 第二章全日空网上预定系统介绍。本章首先对全日空网上预定系统、子 系统、系体结构进行简单概述,并对数据库设计原则做了分析和阐述; 第三章系统开发方法选取。本章首先介绍了全日空网上系统的特殊性, 并对开发方法的选取做了分析和详细说明,然后我们简单阐述了极限编程开发 方法的核心理念、方法价值、开发过程以及核心实践; 第四章极限编程在系统中的实践。本章首先对极限编程系统整体开发过 程以及核心方法在全日空网上预定系统中的实践做了重点阐述;随后对测试驱 动开发、测试驱动数据库开发等,在自动化测试工具j u n i t ,d b u n i t 的辅助下, 在系统开发过程中的实践进行了举例说明;此外,对系统开发过程中涉及到的 设计模式、重构、以及数据库功能重构等做了简单说明; 第五章极限编程新方法的探讨。本章介绍了极限编程在该系统实践过程 中的难点,并提出了一些极限编程实践新思路; 第六章工作总结及展望。对本文所完成的工作做了总结,并提出了进一 步研究方向和问题。 4 硕士学位论文 第二章全日空网上预定系统介绍 第二章全日空网上预定系统介绍 本章首先对全日空网上预定系统进行了简要描述,并对功能子系统划分、 系统构架以及系统数据库设计原则进行了详细阐述。 2 1 系统概述 全日空( s k y h o l i d a y ) 网上预定系统( 如图2 - l 所示) 来源于日本全日空航 空集团。该公司是日本排名第一,世界排名第七的全球性航空运输公司,他除 了本身的航空运输业务以外,还拓展了大量与运输业相关服务,如汽车出租、 采购、销售、地面支援业务等第三产业。 图2 - i 全日空网上预约系统模拟登录界面 近年来,全日空航空与乐天集团旗下的日本最大网络旅行预约公司一一乐 天旅游( r a k u t e n t r a v e l ,东京港区) 联手向旅游业进军,进行面向个人用户的 旅游商品的销售,其中最主要的合作形式是:全日空出售航空等运输服务,而 乐天则出售其酒店资源。此外,还有很多第三产业公司加盟到该联盟中来,为 该系统提供资源商品。 该系统倡导的全新的旅游服务理念,与以往的旅游服务大不相同。 传统打包旅游服务如下: 旅客只能选择线路和日期,如旅客选择长沙一北京5 日游,2 0 0 6 年l o 月1 日出发,而其他旅游资源和时间就完全被旅行社安排,如交通工具的选择、班 5 硕士学位论文第二章全日空网上预定系统介绍 次、旅馆档次、餐饮地点、具体旅游行程等等。 而在全日空网上预定系统中: 客户将具有更大的选择范围和自主能力。用户登录后,只需填写自己要求 的信息,如出发日期、出发地、目的地等,系统就会自动显示系统可以提供的, 符合条件的所有全日空航班、酒店、以及其他可用旅行资源( 如租赁汽车,导 游等) 。用户根据意愿任意组合资源,并通过网络预定的方式来为自己做出游前 的准备。当然系统也将为客户提供传统的打包旅行服务,但这只是系统的一小 部分。这样,系统的初衷通过整合多公司资源,利用网络预定的快捷便利,实 现个人旅游的随心所欲在系统中得到充分体现。 下表2 1 对全日空网上预定系统的规模做了简单描述: 表2 - 1 全目空网上预定系统项目规模描述表 条目描述 项目名称全日空网上预定系统 项目周期9 0 个工作日 项目金额 5 0 万 开发人员2 5 人( 其中包括资深 项目小组人员 顾问2 名,客户代表1 名) 由此可见,全日空网上预定系统的规模不大,无论在开发周期、开发人员 等方面,都仅为一个中小系统。 2 2 子系统划分 全日空网上预定系统划分为5 个功能子系统:资源管理系统,客户管理系 统,控制管理系统,数据批处理系统以及输出系统( 如图2 2 所示) 。 旧篓p 控 一一 数 l 理系统卜叫 制 、 据输 管 - 批 出 理 f vd b1 处系 降 系 理统 统 系 l 理系统l 广 统 图2 - 2 全日空网上预定系统模块 6 硕士学位论文第二章全日空两上预定系统介绍 ( 1 ) 控制管理系统: 控制管理系统是该系统的特殊结构,他的主要功能在于整个系统的事务管 理,校验以及接口功能。全日空系统资源种类繁多、数量庞大,因此资源有效 性校验工作对于网络服务性软件而言尤其重要。资源输入系统获取商品提供商 提供的各类资源的种类,数量,等级以及提供有效时间等详细信息后,必须通 过该系统的控制和校验,才能被实时系统处理;同样,用户定购系统获得的用 户订单数据也必须通过校验控制子系统才能被处理。 ( 2 ) 客户管理系统: 图2 - 3 用户定购系统的主要流程 该子系统主要完成客户管理功能,全日空网上预定系统主要包括两部分用 7 硕士学位论文 第二章全日空网上预定系统介绍 户:商品提供商和旅客。 ( 3 ) 资源管理系统: 对于全日空系统而言,与客户( 包括商品提供商、旅客) 最直接的接触就 是资源管理系统,亲切,友善,自主和没有约束是所有用户界面的要求。无论 是商品提供商,还是旅客,系统都要让他们的目的是无论是何种资源,用户都 有极大的选择,自由的配置。 本系统分为两部分: 资源征集:全日空网上预定系统必须从各方面征集可用资源,除了之前提 到的旅店资源,以及航空机票等,还有旅行社提供的导游资源,饭店提供的餐 饮资源,运输公司的车辆出租等。这些资源的输入、校验、记录都是通过网络 分布式资源输入系统来完成。通过该系统,全日空公司将所有一定档次的,请 求提供资源的公司所提供的种类,级别各异的资源进行整理、审核和存储。而 这些数据就成为了用户定购系统的将来的资源提供者。 资源销售:全日空网上预定系统中用户定购子系统的主要流程,如图2 3 所示。下例为全日空航班预定系统界面图,系统显示多条信息让客户选择( 如 图2 - 4 所示) 。 图2 - 4 全日空网上预定系统用户定购子系统 2 0 0 6 年5 月3 0 日,星期一,型号a n a 5 5 的飞机,9 :0 0 从日本羽田起飞, 1 0 :3 5 在千岁降落,还有2 席可供选择;有普通客房一问( 标准一人间) 可供 选择; 2 0 0 6 年5 月3 1 日,星期二,型号a n a 6 5 的飞机,1 3 :o o 从日本羽田起飞, 硕士学位论文第二章全日空网上预定系统介绍 1 4 :3 5 在于岁降落,还有2 席可供选择;有普通客房一间( 标准一人间) 可供 选择; 2 0 0 6 年6 月1 日,星期三,型号a n a 6 5 的飞机,2 0 :3 0 从日本羽田起飞, 2 2 :0 5 在千岁降落,还有2 席可供选择等。 ( 4 ) 数据批处理系统: 通常来说,批部分( b a t c h ) 通常是用来完成数据统计,分析,存档功能, 有的系统甚至有数据挖掘的要求。他们的处理常常是逻辑关系复杂,处理数据 量巨大。该模块一般运行于系统处理空闲期,如周末或者凌晨。如果系统效率 太差,在指定时间内完不成任务的话,对于系统第二天或者后期的任务常常有 重大影响。所以对于该子系统而言,性能要求是最高的,数据批处理子系统在 企业应用系统中一直以来都具有非常重要的意义 正因为如此,一些软件公司开始尝试研发这样的数据处理b a t c h 系统为系统 提供有效的数据处理服务。如微软公司开发的s q ls e r v e r2 0 0 0 中的数据转换 服务( d t s ) 就为此提供了一组图形化工具和可编程对象,能够帮助管理员和 开发人员解决从不同来源到单个或多个目标的数据转移问题,包括数据提取、 转换以及合并。用户可以将任务、工作流操作和限制条件组成d t s 数据包, 然后安排定期或在特定事件发生时执行该数据包。但是这样的集成工具并不是 适合所有企业系统的:因为现在的数据库服务系统并非相互兼容的,以d t s 为 例,一旦应用系统采用非s q ls e r v e r 的数据库服务,如o r a c l e ,m y s q l ,d b 2 等,那么这些数据库服务则立马失去效力。此外,关键的问题是,各个系统对 于数据处理的业务要求大大不同,尤其体现在数据分析部分,所以各个系统往 往不得不开发自己的数据处理子系统。 同样,全日空批处理系统( b a t c h ) 将在午夜1 2 点被系统时间触发完成企业 每天的业绩分析( 对获取到的数据进行分析、合并、导入、导出、数据转换) 以及存档、备份等工作。在本文后面章节将对该子系统的实现过程进行详细分 析和阐述。 ( 5 ) 输出系统: 输出系统是相对简单的模块,在管理控制系统做完数据库操作,或夜间系 统工作完成后,指定获得的数据在请求的方式下,通过存档,报表等方式输出。 2 3 系统架构 全日空跨地域的网络预定系统必将采用多层结构的b s 模式( 如图2 - 5 所 示) 。 9 硕士学位论文 第二章全日空网上预定系统介绍 i用户表示层 】亡 业务接口层 1 1 【 l 业务实体层i |业务逻辑层 lll n l数据访问层 图2 - 5 全e l 空网上预定系统b s 模式架构图 整个系统分为表示层、业务接口层、业务实体层、业务逻辑层、数据访问 层五层。层与层之间功能明确,结构清晰,这样较容易保证系统较高的可维护 性、可扩展性、灵活性以及封装性,也使整个系统开发过程分工明确,大大加 快了系统的开发速度。 ( 1 ) 用户表示层负责与用户的信息交互,他是系统与用户的直接接触部分; ( 2 ) 业务接口层负责向用户表示层提供业务接口,该接口既可以实现相同 业务在不同行业中的重载,也可以保证用户不能直接接触业务逻辑实现,从而 提高了安全性; ( 3 ) 业务实体层负责各业务对象实体化,实现在各层之间所有业务流程信 息都以业务实体来传递,从而保证业务流程中数据的安全性和正确性; ( 4 ) 业务逻辑层负责业务的具体实现,实现相同业务在不同行业中的不同 实现。数据访问层负责对数据库的操作访问、事务管理等。 ( 5 ) 数据访问层为业务逻辑层服务,不对表示层开放。通过封装数据访问 层可以实现用户和数据分开,屏蔽非法用户通过网络对数据库直接操作,保证 了系统的安全性;同时。数据访问层可以实现通用数据访问( 支持各种不同的 数据源) 、数据库连接池的配罨( 减少数据库连接开销,提高数据库服务器性能) , 这也保证了应用系统的高性能。 2 4 系统数据库 全日空网上预定系统的数据库采用了o r a c l e9 i ,其良好的性能以及与j a v a 语言完美结合,大大有助于我们开发出高性能的应用程序,并且有较好的移植 i o 硕士学位论文 第二章全日空网上预定系统介绍 性,可实现跨平台使用;此外,o r a c l e 系统具有较好的安全性,o r a c l e 维护所 有数据事务的日志,对于数据庞大、操作频繁的全日空系统而言具有重大意义; 最后,他还提供了良好的联机分析处理、及数据仓库技术,能满足今后业务扩 展,数据分析的需要,所有这些都使其成为全日空数据库系统的首选 4 6 1 1 4 7 1 。 经过详细的方案分析及系统分析后对系统数据库进行了设计。开发人员除 了遵守数据库设计基本要求以外,结合本系统实际,采取了以下策略: ( 1 ) 命名规范化。对数据库对象命名时尽量使用有意义的单词、缩写词、 表名、列名及下划线等组合,使其易于识别和记忆,且命名长度最好不要超过 3 0 个字符,便于应用系统适应不同的数据库,并尽量保持命名风格的统一。在 本系统中,我们采用“所属功能模块”+ “”+ “个别名称”的这种格式来 给各种数据库对象命名。 ( 2 ) 不盲目追求高范式。对于频繁使用,数据量又大的表,适当增加了冗 余字段,避免多次操作其他表的次数,有利于程序编写和提高系统运行效率。 同时适当增加触发器,保障数据一致性。 ( 3 ) 表设计时,增加了一定数量的记录日志,数据版本等其他字段,方便 系统跟踪管理,同时也为数据库字段扩展提供帮助。 ( 4 ) 良好索引可以大大提高查询效率,改善系统性能,但对索引的存储和 维护操作的同时会给系统空间和实践带来负面影响。所以要在提高查询速度和 节省存储空间之间寻求最佳平衡点。 根据以往开发测试经验,我们把索引建立在以下字段更能实现该平衡:主 外键所在字段,快速或关键查询字段,需要排序快速或频繁检索的字段以及集 合过程中需要快速或频繁组合的字段等。 ( 5 ) 基于数据库批处理特征,系统大量采用存储过程,有利于提高运行速 度,避免大量数据的传递,提高系统性能。 由于文章篇幅有限,下图给出的是全日空网上预定系统数据库部分物理设 计图。如下图2 - 6 所示。 硕士学位论文 f “ p 强 蓐h i 謦一p t f 一p t r l , f 琏) t 张, 薷i 彝 一可io 精 萎萎i = ; l 士 转誊 车7 砰 蛙z 臻燃蕾嚣降 亍黼t 哥 第二章全日空网上预定系统介绍 图2 - 6 全日空系统数据库部分物理设计图 罐囊 错 篷刍萋箍墓霉t 雕 罄烹 兽。一p ( f 蕈) 糟黧瀑3 _ f “ 爱羹耋嚣磊薹譬甚 盘轳孽熟。一- j lo 糕孚萼霉崎 ,魏 张 扛 静 。o致们 撼 母f抖丹p- ,_ 蘩一碡 一 ii$章一:带特_囊3鞠岁分一嚣酶了3虑特遂擎蔫麟耩辨学特一 区一老麓话枉羹毳冀蠼蘑黉董丞”持掌,善薏蔫蕊女拳墓#转轳缣纬一 年垃一担敬羹暮茬蹬瓤黛琏鑫鏊五 矿一瓤葫,篱堑努黢簇 ;“一#雕睫;一o, fl节 霉二_烯 ,_番o煽量dq岁啡势镰转一惦辑鞴予&镕z垂震a罔童黔秽班魏肆“魂h一最1种 每 o 缱i n ;一节 l亨来一崎 ;垂番一罐io多“鳍瑚一,舒研鞘靳,0器一z受爨焉7壤a癣=鬻锵栌社稚年世样;礴。_量量磊帆 ,一; 缸 群勰哥一张硝 0 ; 番一0t l 寸 号毒聋一# 研藏一媾 ;番譬魏|一 0辅a8节h母嘲跚一j骨7衢赫靳帚;逆瞎医一詹港廿蠡v瓣萋蔓7 一, i耳毒(术蠢擘十b ; 一“, 砷,。,d 张补, 一:; i 甜日日8口邕日口 0;雕,一pf;匿奎 申罐霪罐蓬唾。节 frh篝ll-f舟再盖 螺镟麓构嚣捎蔫一肆 一一母普一jj_ 雄霉一7盎节畿培龋缢苗萤娥撬辅3豺岁 j 1#7磷一鎏a嚣猪了爻h搴 凡,骑靖妫音鲁暑释v璃露移誊华戆罅捧,了鞋-零精控镕鹭缝替差罡皇空a鲁嚣霉避焉凡a辑一彝臻臻键堍臻冶晦铲酶#臻麓菪皓盎睡一瑗照榛嚣嚣凄梅鼍瘟莲辔霪壤曩基耕 # f 忑 _ 聋d:一b0缺儿于;可 蒋彳z 絮一啐 麓,:n多歉甜瞻于z斯靳,辑 释瓣f i蕈茎,辩予墨0,驿“菇醉毒滢囊p譬嚣麟辛缡 :_8 挂麟,诺一 辫薅事 墨 ,;“;一“器,oi垆 摊f 尹母一 丢砖翱ii(砖 ;一葺蔷营一 -*曩擂嚏壤立星节 r 3 3世国营一静霉#始堵籍嚣张薪新v耋棒鞠肆一割篡p蓊嬲翌薯焉7空肇二笼一牵馈蓦咎辫薨蠢慈解舻护瞻牟蓍辑垃蟥一撑季进傅羹凳鏊蒜最辫 :,一e h瞎,雌,“一o, ;h,;h一;可 pf0陌哥0甘一裳一崎 _一号孽哥,簪一罐j挂, 嚣瑟鬈一黪紧纛鬣”翳斡黪黪牌舔粉黪黼 硕士学位论文 第三章系统开发方法选取 第三章系统开发方法选取 3 1 本系统开发的特殊性 系统开发方法选取前,项目组先对全日空网上预定系统特殊性进行分析: ( 1 ) 需求不明确问题 首先,全日空集团提出的是全新的旅游服务理念,这与以往的旅游服务理 念大不相同。全日空公司对此系统开发也给予了高度重视,并派遣公司专员到 北京实达公司协助进行需求分析。然而对于新理念想要达到的效果,客户自己 也比较模糊;此外,开发过程中没有成功系统可以参考,开发人员有很强的发 挥性,这是导致需求理解二义性等问题的主要原因之一。 其次,随着市场发展,生活资料极大丰富,导致全日空网上预定系统的商 品提供商可提供的资源种类不断翻新,旅游客户的要求也日渐增多并更加细化。 在系统用户( 商品提供商、旅客) 需求剧烈变化的情况下,软件系统也必将随 其变化。 以上两点的存在必然导致系统变化,对成型系统代码进行频繁修改,这也 将不可避免。 ( 2 ) 其次,全日空公司从商业上考虑,要求尽量缩短开发时间,使新理念 能最快速度的变成利润。他们要求不断得到质量可靠的中间版本并投入市场使 用,新开发的版本也要同时进行,不断完善界面、增加新功能,以满足市场需 求,并进一步测试市场反应。 ( 3 ) 此外,系统要求有独立的批处理模块,他们要定期或者不定期的对系 统业务量、利润等进行统计,还要分析系统提供的各项服务中的优势服务进行 扩展。这些操作要求系统数据库处理部分性能优越。当数据量日渐增大的时候, 他们仍然能够胜任。 3 2 开发方法选取 ( 1 ) 传统瀑布模型f 2 】 3 】 迄今为止,瀑布模型仍然是软件开发使用最多的开发方法之一,尤其是在 很多大公司中更是如此。对于需求明确、投入时间较长的大项目,传统开发方 法有其宏观计划的优势;但由于传统开发方法阶段性明确,概设、详设、编码、 各类测试直到投入运行周期非常长,因此,在全日空网上预定系统的开发中, 1 3 硕士学位论文 第三章系统开发方法选取 瀑布模型不能满足客户尽量缩短开发时间的要求。如果开发人员硬性缩短开发 时间,必然需要压缩设计或测试的时间,问题随之而来,设计粗糙、忽视文档、 测试不完全甚至取消测试等。此外,采用瀑布模型也不能获得客户想要得到中 间版本。 此外,传统开发方法为软件开发制定一个包容了大量细节、时间跨度极长 的庞大计划,如果万事不变,这个计划将会执行得非常好,所以软件开发人员 必然要尽力阻止软件需求变化的发生;软件产品经过精心设计最初制造出来时 具有良好架构,但是随着时间的推移、需求的变化,必须不断的修改原有的功 能、追加新的功能,并免不了一些缺陷要修改。为了实现变更,不可避免的要 违反最初的设计构架。经过一段时间以后,软件的架构就千疮百孔难以维护了。 新需求难以实现,软件的构架对新的需求失去支持力,而是成为一种制约;尤 其是到了软件开发后期做的修改,将大大增加系统开发的花销( 如图3 1 所示) , 最后新需求的开发成本会超过开发一个新的软件的成本,软件生命走到尽头【”。 蠢 8 0 - 1 0 0 x r e q u i r e m e n t so “l c o d eu n i t i n t e o r a b o nr e l e a s e t 螭矗t 髓 图3 - 1 引入同一变化付出的代价的变化趋势 而全日空系统的需求动态性很强,通过上面的分析知道,传统瀑布模型不 能满足该项目的开发。 ( 2 ) 快速原型法【2 l 【3 】 快速原型法是目前使用较多的一种实用而有效的成熟方法学。他用交互的, 快速建立起来的应用系统原型取代了形式的,僵硬的( 不允许更改的) 大部头 的规格说明。试用的原型系统被客户置于实际环境去运行,借此向开发方提供 真实的反馈意见。小规模的设计和实现也是系统扩展性的保障。 采用快速原型法一定程度上减轻了版本发布的问题。但他的问题在于,发 布原型往往是为了达到开发方与客户之间需求交互的目的,中间发布的版本一 旦存在b u g s 或不稳定情况,退回开发方继续修改便可,客户对测试版本的质量 要求不高,他们只注重最终版本的正确性。而全日空网上预定系统的中间版本 也是面向广大用户的,系统的任何漏洞都会给客户带来损失,这就使客户对中 1 4 硕士学位论文 第三章系统开发方法选取 问版本的要求也非常高。 在原型法指导下,虽然开发人员每完成一个功能模块后都会对其进行单元 测试,但系统迭代后,新加入的模块是否会对原有系统产生影响,就不得而知 了。如果系统每次修改后即对以前的模块进行重新测试又不太现实,回归测试 会带来费用过高的问题。所以快速原型法也同样不能满足客户的要求。 ( 3 ) 敏捷开发方法 为满足客户需求,我们必须寻找更适合的软件开发方法。 敏捷开发的宣言是【7 j : 1 ) 个体和交互胜过过程和工具; 2 ) 可以工作的软件胜过面面俱到的文档; 3 ) 客户合作胜过合同谈判; 4 ) 响应变化胜过遵循计划。 从敏捷开发宣言我们可以知道: 1 ) 敏捷方法是适应型的,而并非可预测型的。他拥抱变化,适应变化,利 用变化来发展。敏捷团队依靠变化来获取活力,他们持续地改进设计,以便于 每次迭代结束后的系统都具有最适合于需求的设计。需求的变化不再使开发人 员惧怕和排斥,他们乐意接受用户提出的变更要求,并及时满足他们的需要。 这样以来。即使是用户需求的频繁改变也不再是影响软件开发的顽疾【8 】【9 】【埘。 这对于需求动态性极高的全日空网上预定系统而言是非常合适的选择。 2 ) 敏捷方法是以人为本而不是以过程为本,更不是以文档为本的。他们建 立起一种观念:工作应该能够发挥人的特性,而不是去限制他,强调软件开发 过程应该是一个有趣的过程。在敏捷开发思想的指导下,软件开发去掉了大量 文档开发的困扰,为全日空网上预定系统的开发缩短了大量时间。 3 ) 测试驱动开发( t e s td r i v ed e v e l o p m e n t ,简称t d d ) ,起源于极限编程 法中提倡的测试优先实践,并在整个敏捷开发中推广。测试驱动开发以测试作 为开发过程的中心,他要求在编写任何产品代码之前,首先编写用语定义产品 代码行为的测试,而编写的产品代码又要以使测试通过为目标。更重要的是, 测试驱动开发要求测试可以完全自动化的运行,代码变动或者代码重构前后都 必须运行测试,这是一种革命性的开发方法,能够造就简单、清晰,高质量的 代码。因此,有了测试驱动开发的保障,无论我们加入多少新模块,或者需求 发布新版本,我们都能自信的去完成了。在全日空系统中,使用测试驱动开发 方法来完成系统的开发工作,不仅能保证代码质量,更能节省回归测试给系统 开发带来的大量时间和高昂代价。 此外,虽然敏捷开发方法是近年提出的新方法学,但其中使用的很多方法 1 5 硕士学位论文第三章系统开发方法选取 如设计模式,重构等都是经过多年实践证明了的经典方法。而敏捷开发则是这 些方法的一个组织和提升,不仅强调其在实践中的重要性,并切实要求将他们 应用到开发中去。 通过以上四点的说明得出结论:瀑布模型、迭代式原型法都不能很好的满 足全日空网上预定系统的开发需求;而在敏捷开发思想的指导下,全耳空系统 开发过程中将要遇到的种种问题,如软件需求变化频繁、中间版本发布、软件 质量保障等问题,在理论上都能得到较好的解决。 敏捷开发典型的开发方法包括:极限编程( e x t r e m ep r o g r a m m i n g ,简称极 限编程) ,s c r u m ,c r y s t a lm e t h o d o l o g i e s ,特征驱动软件开发( f e a t u r e d r i v e n d e v e l o p m e n t ,简称f d d ) 。动态系统开发方法( d y n a m i cs y s t e md e v e l o p m e n t m e t h o d o l o g y ,简称d s d m ) ,自适应软件开发( a d a p t i v es o f t w a r ed e v e l o p m e n t , 简称a s d ) ,以及p r a g m a t i cp r o g r a m m i n g 等【6 l 还有很多其他的开发方法,他们 各有长处,在自己的应用领域有着的独特的指导意义,并有其各自的最佳应用 周境。 下面对各种典型敏捷方法做简单说明,并选取应用周境与全日空网上预定 系统开发相符的一种。 ( 1 ) s c r u m s c r u m 由k e n s c h w a b e l 和j e f f s u t h e r l a n d 提出,旨在寻求充分发挥面向 对象和构件技术的开发方法,是对迭代式面向对象方法的改进,名称来自英式 橄榄球( 在比赛中每个队员都应时刻保持对场上全局的判断,然后通过集体行 动,奋力实现同一目标一胜利) 【2 9 j 【3 0 l 。s c r u m 方法1 9 9 3 年最初实践于e a s e l 公司,现已被数十家公司数百个项目开发中应用,适用于7 人或以下的小团队 和极短期应用产品的开发。s c r u m 方法的最近开始尝试借鉴极限编程方法 【3 1 】【3 2 1 。 ( 2 ) c r y s t a lm e t h o d o l o g i e s a l i s t i r c o c k b u r n 研究基于对i b m 公司近四十个项目( 这些项目有大有小, 方法有轻载和重载,时间跨度为1 9 8 0 1 9 9 9 年) 案例的调查。他认为不同的项 目需采用不同的开发方法,并随着开发的进行应不断细调( o n - t h e - f l yt u n i n g ) , 也就是连续不断的过程改进。据此他提出了一系列方法( c r y s t a lc l e a r 、c r y s t a l y e l l o w 、c r y s t a lo r a n g e 、c r y s t a lr e d 等,名称借自于自然界中的晶体,有透明 的、黄色的、橙色的等) 作为基本参照和一些原则来指导方法的调整。c r y s t a l 方 法系列的核心理念:软件开发可视为创造和交流相协调的过程,其中人的因素 为第一位,软件开发的第一目标是交付
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冰箱的租赁合同范文
- 参建住宅协议书的编写范本
- 交通银行借款合同范本
- 房屋租赁合同终止声明书
- 物业公司管理协议书
- 旅游合作开发合同范文点评
- 建筑劳务分包合同格式范本
- 广东省茶叶原料采购合同模板
- 工程劳动力和施工合同示例
- 员工劳动合同续签互用协议
- 正余弦定理知识点权威总结18页
- 国企纪检监察嵌入式监督的探索与实践
- 浅议小升初数学教学衔接
- 设备安装应急救援预案
- 深基坑工程降水技术及现阶段发展
- 暂堵压裂技术服务方案
- 《孔乙己》公开课一等奖PPT优秀课件
- 美的中央空调故障代码H系列家庭中央空调(第一部分多联机)
- 业主委员会成立流程图
- (完整版)全usedtodo,beusedtodoing,beusedtodo辨析练习(带答案)
- 广联达办公大厦工程施工组织设计
评论
0/150
提交评论