(计算机应用技术专业论文)rails框架在车务段测评系统中的研究与应用.pdf_第1页
(计算机应用技术专业论文)rails框架在车务段测评系统中的研究与应用.pdf_第2页
(计算机应用技术专业论文)rails框架在车务段测评系统中的研究与应用.pdf_第3页
(计算机应用技术专业论文)rails框架在车务段测评系统中的研究与应用.pdf_第4页
(计算机应用技术专业论文)rails框架在车务段测评系统中的研究与应用.pdf_第5页
已阅读5页,还剩80页未读 继续免费阅读

(计算机应用技术专业论文)rails框架在车务段测评系统中的研究与应用.pdf.pdf 免费下载

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 中国铁路采用先进化的管理手段,经常对员工培训、测评以提高员工能力 以及公司的效益。中国铁路某车务段在科技日益发达的今天,采用了车务段测 评系统对员工进行培训测评以提高员工能力和公司的现代化管理水平。 车务段测评系统是一个b s 模式的w e b 系统,如何有效快速的完成此系统 的开发是开发人员面临的难题。传统的软件方法,曾经解决了一些问题,但是 随着经济和技术的发展,用户需求的不确定性成为软件行业的显著特点,传统 软件方法不能很好地对这些问题进行解决。 为了解决软件危机,业界提出了一些新的技术:测试驱动开发、敏捷( a g i l e ) 软件方法。基于框架开发的技术,也能够解决一些开发工程中的问题,诸如: 低复用、架构不清晰等问题。r a i l s 框架总结了软件业特别是基于w e b 开发的经 验,将敏捷软件方法、测试驱动开发思想融入到一起,成为个目前最火热的 w e b 开源框架。r e s t 架构是针对w e b 应用而设计的,其目的是为了降低开发 的复杂性,提高系统的可伸缩性,r a i l s 也将r e s t 架构纳入了框架之中。 本文简要介绍了敏捷软件开发模型、测试驱动开发、m v c 架构模型、r e s t 架构模型以及r a i l s 框架的特点,重点分析了敏捷软件开发模型和测试驱动、 r e s t 网络架构和m v c 架构以及r a i l s 框架和这些技术架构之间的关系。 论文分析了系统的具体需求,得出了系统需要完成的各项功能需求和性能 指标,并根据系统具体需求设计和搭建了系统的开发和运行环境。 论文实现部分以r a i l s 开源框架为开发主线,探讨和实现了如何在具体的车 务段测评系统中使用敏捷软件开发模型快速响应用户的需求变化,如何应用测 试驱动开发模型的测试先行开发方式,如何应用r e s t 网络架构与m v c 架构实 现测评系统。 论文最后规划了系统部署和运行阶段需要完成的工作。 关键词r a i l s ;r e s t ;m v c ;敏捷开发;测试驱动;车务段 西南交通大学硕士研究生学位论文第1 i 页 a b s t r a c t i no r d e rt oi m p r o v et h es t a f fc a p a b i l i t i e sa n dt h ee f f e c t i v e n e s so ft h ec o m p a n y , c h i n ar a i l w a ya d o p tt h ea d v a n c e dm a n a g e m e n tt o o l s ,s u c ha sr e g u l a rs t a f ft r a i n i n g a n de v a l u a t i o n i nt h ei n c r e a s i n g l yd e v e l o p e do fs c i e n c ea n dt e c h n o l o g y , ap a r a g r a p h o p e r a t i o n so fc h i n ar a i l w a ya p p l yp a r a g r a p ho p e r a t i o n se v a l u a t i o ns y s t e mo nt h e s t a f ft r a i n i n ga n de v a l u a t i o nt oi m p r o v es t a f fc a p a b i l i t i e sa n dt h el e v e lo fm o d e m m a n a g e m e n t t h ee v a l u a t i o ns y s t e mo fr a i l w a yt r a i no p e r a t i o nd e p o ti sab sm o d e lw e b s y s t e m s ,a n di t sd e v e l o p m e n ti s ap r o b l e mf o rd e v e l o p e r s t r a d i t i o n a ls o f t w a r e r e s o l v e ds o m ei s s u e sf o rt h i s p r o b l e m ,w i t ht h e e c o n o i 裔ca n dt e c h n o l o g i c a l d e v e l o p m e n t ,t h eu n c e r t a i n t yo fu s e rn e e d sb e c o m ea n o t a b l ef e a t u r ei nt h ef i e l do f s o f t w a r ei n d u s t r y t r a d i t i o n a ls o f t w a r em e t h o d sc a nn o tb eag o o ds o l u t i o nt ot h e s e p r o b l e m s i no r d e rt os o l v et h es o f t w a r ec r i s i s ,s o f t w a r ei n d u s t r yp r o p o s e dan u m b e ro f n e wt e c h n o l o g i e s :t e s td r i v e nd e v e l o p m e n t ,a g i l es o f t w a r em e t h o d s b a s e do nt h e f r a m e w o r ko ft h em c h n o l o g ya l s oc a ns o l v es o m ep r o b l e m si nd e v e l o p m e n tp r o j e c t s , s u c ha s :l o wr e u s e 、s t r u c t u r eu n c l e a ra n de c t t h er a i l sf r a m e w o r ks u m m a r i z et h e e x p e r i e n c e o fw e bd e v e l o p m e n t ,i n t e g r a t et h ea g i l es o f t w a r em e t h o d sa n d t e s t - d r i v e n d e v e l o p m e n tt h i n k i n g ,b e c o m e am o s tp o p u l a r o p e n s o u r c ew e b f r a m e w o r k r e s ts t r u c t u r ew a sd e s i g n e df o rw e ba p p l i c a t i o n ,i no r d e rt or e d u c et h e c o m p l e x i t yo fd e v e l o p m e n ta n di m p r o v es y s t e ms c a l a b i l i t y r a i l sa l s oi n c o r p o r a t e t h er e s ts t r u c t u r ei n t oi t sf r a m e w o r k t h i sp a p e ri n t r o d u c e st h em o d e lo fa g i l es o f t w a r ed e v e l o p m e n t ,t e s t d r i v e n d e v e l o p m e n t ,m v ca r c h i t e c t u r e ,r e s ts t r u c t u r em o d e la n dt h ec h a r a c t e r i s t i c so f r a i l sf r a m e w o r k a n dt h e na n a l y s i so ft h ea g i l es o f t w a r e d e v e l o p m e n ta n d t e s t d r i v e nm o d e l r e s tn e t w o r ka r c h i t e c t u r ea n dt h em v cf r a m e w o r ka sw e l la s t h er a i l sf r a m e w o r ka n dt h er e l a t i o n s h i pb e t w e e nt h et e c h n i c a la r c h i t e c t u r e t h i sp a p e ra n a l y z e st h es p e c i f i cr e q u i r e m e n t so ft h es y s t e ma n do b t a i n sa l lt h e f u n c t i o n a lr e q u i r e m e n t sa n dp e r f o r m a n c ei n d i c a t o r s f i n a l l y , d e s i g n sa n db u i l d st h e s y s t e md e v e l o p m e n ta n dr u n t i m ee n v i r o n m e n ta c c o r d i n gt ot h es p e c i f i cr e q u i r e m e n t s 西南交通大学硕士研究生学位论文第1 ii 页 o fs y s t e m t h er e a l i z a t i o no fp a r to ft h i sp a p e rg r a s pr a i l so p e ns o u r c ef r a m e w o r ka sa m a i nl i n e ,e x p l o r e sa n dr e a l i z e sh o wt ou s ea g i l es o f t w a r ed e v e l o p m e n tm o d e lt o r e s p o n dq u i c k l yt oc h a n g i n gu s e rn e e d si nt h ee v a l u a t i o ns y s t e mo fr a i l w a yt r a i n o p e r a t i o nd e p o t ,h o wt ou s et e s t d r i v e nd e v e l o p m e n tm o d e l d r i v e nd e v e l o p m e n t m e t h o d st ot h et e s t ,h o wt oa p p l yt h em v ca r c h i t e c t u r ea n dr e s tw e bf r a m e w o r k f o rt h er e a l i z a t i o no fe v a l u a t i o ns y s t e m f i n a l l yt h es y s t e mp r o j e c t e dt h ep h a s eo ft h ed e p l o y m e n ta n do p e r a t i o nn e e d st o b ed o n e k e yw o r d s :r a i l s ;r e s t ;m v c ;a g i l es o f t w a r e ;t e s t d r i v e nd e v e l o p m e n t ;r a i l w a y t r a i no p e r a t i o nd e p o t 西南交通大学学位论文创新性声明 本人郑重声明:所呈交的学位论文,是在导师指导下独立进行研究工作所 得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体 已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在 文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。 本学位论文的主要创新点如下: 徇蜘, ) 珂6i 西南交通大学 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权西南交通大学可以将本论文的全部或部分内容编入有关数据库 进行检索,可以采用影印、缩印或扫描等复印手段保存和汇编本学位论文。 本学位论文属于 1 保密口,在年解密后适用本授权书; 2 不保密彰使用本授权书。 ( 请在以上方框内打“ ) 学位论文作者签名:弓匦渤 日期: 矿a 多髫 指导老师签名_ _ 球 日期: 易基 西南交通大学硕士研究生学位论文第1 页 第1 章绪论 1 1 课题研究背景及意义 任何一个行业、任何一家企业的发展,首先需要的是人才,人才的竞争是 企业能否持续健康发展的原动力。员工绩效考核办法员工绩效考核是公司人力 资源管理的重要一环,它是对员工进行任用、晋升、调薪、奖惩、培训的客观 依据。绩效考核的过程和结果也是重要的激励手段。中国铁路当然也不能放过 先进化的管理,所以铁路车务段经常有员工学习、测评等等。考试是进行考核 的重要手段,也是培训过程中不可缺少的重要环节。通过考试可以检测培训效 果和员工对所学知识的掌握情况,以便车务段在后续的员工培训中进行调整和 改进。笔试是最为传统的一种考试方法,是将员工集中起来,在规定的时间内 完成某份试卷进行测试。这种传统的考试要求车务段考务中心人工出卷、试卷 印刷、安排考试、考生考试、人工阅卷、成绩评估和试卷分析等一系列琐碎的 过程。而且车务段作为一个铁路部门其下辖的机构不仅人员众多,各车站还由 于距离空间上分散、各职工工作时间上分散。由此而导致的每次考评都涉及很 多的调班等诸多不便。显然,随着考核类型的不断增加及考试要求的不断提高, 车务段考务中心的工作量将会越来越大,并且其工作将是一件十分烦琐和非常 容易出错的事情,可以说传统的考试方式已经不能适应现代企业管理的需要。 并且车务段内部现在人员管理、证书管理等都处于手动管理,对于处理这些信 息,相当单调且繁杂。 随着计算机和网络技术的迅速发展和日益成熟,i n t e r n e t 正在演变成为人们 生产和生活的一个重要组成部分。社会的各个领域都在努力利用现有技术建立 网络化的应用系统,进而实现信息交互和资源共享。越来越多的政府机构、公 司、组织创建了基于w e b 的应用系统。w e b 在各行业中的应用越来越广泛,发 挥的作用也越来越大。 随着软件技术的发展,软件规模不断扩大,复杂度日益升级,开发人员面 临的问题也越来越多,解决方案更是百花齐放。设计者或者开发人员如何将新 的设计或开发建立在以往工作的基础上,复用以往成功的案例呢? 因此人们越 来越意识到软件重用技术的重要性,框架便应运而生。开源软件的兴起,使得 西南交通大学硕士研究生学位论文第2 页 框架更是层出不穷。如何在众多的框架中选择建立适合具体应用的架构,并且 怎样让各个应用层无缝的连接? 如何整合框架以及各个相关技术便让各个层以 一种松散耦合的方式彼此作用而不管底层的细节技术? 这些都对软件开发人员 提出了挑战。 传统的软件方法,譬如:软件统一过程,都曾经解决了一些问题,但是随 着经济和技术的发展,用户需求的不确定性成为软件行业的显著特点,传统软 件方法不能很好地对这些问题进行解决,而且还增加了软件开发的成本。 综上所述,如何快速有效的开发车务段测评系统这一w e b 应用是本文研究 的内容和意义。 1 2 国内外研究现状 框架使得系统的开发降低了难度,并且复用了良好的设计,使系统的可扩 展性、可维护性、灵活性得到了提高。在w e b 应用系统的开发中,各种新的框 架和技术层出不穷。r a i l s 框架凭借其开源的优势和吸引力,成为目前最有发展 潜力的开发平台。 r a i l s 是使用纯面向对象脚本r u b y 语言编写的一个使w e b 应用程序的开发、 部署和维护变得更容易的全栈式的基于m v c 架构的框架。使用r a i l s 开发w e b 程序更自然、更简单、更快速。 为了解决软件危机业界提出了一些新的技术:测试驱动开发、敏捷软件方 法。敏捷软件方法是一种轻量型的软件方法,其关注的是用户交流和需求变化。 测试驱动则一反测试在后的开发模式,其要求测试先行。 r e s t 网络架构使构建网络超媒体分布式系统更加简单,使开发基于w e b 的多种客户端输出成为可能。 1 3 课题来源 六盘水车务段职工测评系统。 西南交通大学硕士研究生学位论文第3 页 1 4 论文的主要内容 论文介绍了r a i l s 框架的各个相关技术,并在r a i l s 的框架上针对本系统项 目的具体需求,设计开发了车务段远程测评系统,验证了此框架的可用性和先 进性。 本文论述的重点不是敏捷开发、测试驱动的流程以及在车务段测评系统中 的开发具体过程,而是如何应用r a i l s 框架快速而敏捷的实现车务段测评系统。 因此,在论文中着重论述的是r a i l s 框架的快速应对变化的能力,以及在车务段 测评系统中中的具体应用,而不是给出了敏捷开发与测试驱动中的每一步迭代 与重构。 本文对于r e s t 和m v c 在r a i l s 中的结构给予了详细的阐释,并且重点分 节研究和论述了m v c 、r e s t 架构和技术在车务段测评系统组卷信息管理模块 的应用。由于r e s t 架构和m v c 架构的融合和独特的技术特点,因此本文中关 于此模块实现部分内容比较多。 本文在实现部分也论述了a j a x 在r a i l s 框架中的结构,并且分析了针对具 体的系统需求如何快速地实现a j a x 应用。 本文根据具体的应用需求给出了系统的具体架构以及一些关键需求的解决 方案,例如:性能,可伸缩性等,并且也给出了系统中在开发过程中所遇到实 际问题的解决思路和方案。 1 5 论文的主要结构 鉴于本文所需论述要点的特点,将本文的章节安排如下: 第1 章:绪论。主要介绍课题研究的背景、意义以及国内外研究现状,对 论文的主要内容与结构安排做了概要介绍。 第2 章:r o r 概述。介绍了敏捷开发和测试驱动、r e s t 网络架构、m v c 架构模式以及r a i l s 的技术特征,并且分析了敏捷开发和测试驱动的关系。论文 中的后续章节需要引用此章节的内容。 第3 章:系统分析与设计。分析并提取了系统的目标和功能需求并根据需 求设计了系统的整体架构。在系统的r e s t 架构部分叙述了r e s t 网络架构和 m v c 架构的关系。 西南交通大学硕士研究生学位论文第4 页 第4 章:系统的实现。这个部分按照敏捷开发、m v c 架构、r e s t 网络风 格、a j a x 的应用等几个方面的系统实现。在实现的过程中探讨了如何应用这 些技术,以及针对具体的开发环境与需求,研究并改进了某些r a i l s 框架源码, 并给出了具体的思路和方法。 第5 章:系统的部署和运行。叙述了系统的安装部署的关键技术点以及系 统运行过程管理。 总结与展望部分对本论文的主要工作进行总结,并对今后的研究工作进行 展望。 附录部分展示了组卷信息管理脚手架的运行代码。虽然短短的一点代码, 但足以从代码中窥出r a i l s 的快速和强大。 西南交通大学硕士研究生学位论文第5 页 第2 章r o r 概述 r u b yo nr a i l s 简称r o r ,亦简称r a i l s 。r u b y o i lr a i l s 是一种结合r u b y 语 言与r a i l s 平台的一种网页编程语言,r u b y 语言以自然、简洁、快速著称,全 面支援面向对象程序设计,而r a i l s 则是r u b y 广泛应用方式之一。本章主要介 绍r a i l s 框架相关的技术。 2 1r ai is 的敏捷性 如今在软件开发领域占绝对主流地位的传统软件工程学思想是大约在上世 纪6 0 年代伴随着“软件危机”言论的出现而诞生的。所谓软件危机是指在计算 机软件的开发和维护过程中所遇到的一系列严重问题,它包含两方面内容:一是 如何开发软件,以满足不断增长,日趋复杂的需求;二是如何维护数量不断膨 胀的软件产品。传统软件工程学思想的诞生,把软件开发活动按照工程化的原 则和方法进行组织,并一度被认为是摆脱软件危机的一个主要出路。但是,随 着技术和经济的不断发展,业界越来越发现,这个危机并没有解决,反而越来 越严重了。 敏捷开发,一种轻量级的软件开发方法出现了,虽然目前还没有成为业界 的标准,但是这个世界从来就不是按照标准来进行的,关键的一点是:能不能 解决问题。敏捷开发颠覆了传统的软件开发的流程和方法,是一种革命性的变 革。 r a i l s 框架创始之初一直在强调其敏捷、快速,因此本节将论述r a i l s 应用 程序开发中需要注重的敏捷开发的关键要点。 2 1 1 敏捷开发原则 1 个体和交互胜过过程和工具 r a i l s 非常强调人和交互。r a i l s 框架没有繁重的工具,没有复杂的配置,没 有冗长的过程。于是,开发的透明度更高:开发者所做的工作能够让客户看到。 这是一个天生的交互式的过程1 5 。在测评系统开发过程中,敏捷开发的短迭代 西南交通大学硕士研究生学位论文第6 页 让客户能够很快的用户看到系统的进展。用户也能给系统提出及时有用的反馈。 2 可以工作的软件胜过面面俱到的文档 “直到迫切需要并且意义重大时,才来编制文档。这是一位敏捷开发的软 件倡导者说的。在强调可重构代码的今天,最好最合理的文档其实就是代码本 身,代码真实的表达了系统所做的事情。虽然从代码中提取系统的原理和结构 信息有时比较困难,但是代码具有文档所没有的优势:无二义性。编写文档需 要花费大量宝贵的时间,而且要投入很大精力让文档和代码保持同步。r a i l s 并 不打算废弃所有的文档,其可以毫不费劲的为所有代码生成h t m l 格式的文档。 当然,这个要借助于r a i l s 命令行工具。但r a i l s 的开发过程并不是由文档驱动 的。在开发的过程中开发者和用户一道发掘需求,寻找实现需求的办法。由于 用户需求往复的变化,甚至刚开始的文档到了开发的中后期一点用处都没有了, 所以,简约而不简单的文档,对敏捷的r a i l s 已经足够了。 3 客户合作胜过合同谈判 软件研发,很大程度上已经转向高科技服务业,客户作为服务的对象,如 果一直限定消费者的需求,这样的产品肯定不会令人满意的。特别是软件,这 样抽象的服务。所以如何在合同和及时获取用户需求上做一个权衡,就成为了 一个值得商榷的事情了。在敏捷开发中,注重用户的需求而不是合同的敲定。 因此,r a i l s 鼓励用户与开发团队合作,及时的给予项目反馈,甚至参与到软件 研发中,与开发人员一道处理处理系统开发中的瓶颈,这样,让用户也能感到 他的重要性。对于日后的系统交付和系统售后服务都有着质的影响。 4 随时应对变化重于循规蹈矩 敏捷,说到底还是要快速、有效的响应变化。r a i l s 强烈的要求甚至可 以说是强迫遵循d r y ( d 0 1 1 tr e p e a ty o u r s e l f ,d r y ) 原则,这就意味着一旦 变化来临,r a i l s 应用需要修改的代码量比用其它开发框架开发的应用要少得多 【5 】。而且,由于r a i l s 应用用r u b y 编写,而r u b y 又能够准确、简练地描述程序 概念,因此,变化也更加容易变限制在一个小模块内部。敏捷是一种思维,这 个和传统的软件开发方式有很大的差别。敏捷软件开发就是一个革命性的方法, 只不过它要颠覆的不仅仅是低质量的软件开发方式,更重要的是,它要颠覆软 件生产企业和软件的使用企业之间的生产关系。 西南交通大学硕士研究生学位论文第7 页 2 1 2r ajjs 的测试驱动 1 测试驱动开发 测试驱动开发( t e s t d r i v e nd e v e l o p m e n t ,简称t d d ) 是以测试作为开发过程 的中心,以不断的测试推动代码的开发,实现既简化代码,又保证质量的目标。 这是一种革命性的开发方法,能够造就简单、清晰、高质量的代码。测试驱动 开发通过测试来推动整个开发的进行,其并不只是单纯的测试工作,同时也是 一种代码设计过程【l5 1 。测试驱动开发的哲学思想更加面向对象 ( o b j e c t o r i e n t e d ) ,其关注的是编码是否通过测试,而不是功能如何实现。测 试从原来的验证编码提升到设计的高度,具体的实现则是如何使得测试通过。 2 测试驱动开发的主要内容 测试驱动开发主要包括两个方面,测试先行和重构。测试优先的本质是目 标管理。通过集中精力编写测试完成一个个小目标,这些目标规定了需要设计 的类、方法、以及方法需要满足的结果。随着测试代码的开发与完善,系统也 逐步完成了。最终,通过保存这些测试,就可以使程序更易于维护。重构是对 已经完成的代码进行改进的过程,它在不对代码的外部行为进行改动的情况下, 对代码内部的结构进行优化,是严谨地对完成的代码进行清理,消除重复设计, 优化设计结构,从而减少出错的一种方法【1 5 1 。重构的目的: ( 1 ) 改进软件的设计。重构可以重新组织代码,重新清晰的体现设计结构, 进一步改进设计。 ( 2 ) 提高代码质量和可维护性。测试先行与代码重构,是测试驱动开发的精 华所在。重构保证了代码的质量、设计的简捷。 3 测试驱动开发的步骤 测试驱动开发的基本过程如下: ( 1 ) 明确当前要完成的功能,可以记录成一个列表。 ( 2 ) 快速完成针对此功能的测试用例编写。 ( 3 ) 执行测试,编译失败。 ( 4 ) 编写对应的功能代码。 ( 5 ) 测试通过。 ( 6 ) 代码重构,消除重复设计,优化设计结构,保证测试再次通过。 西南交通大学硕士研究生学位论文第8 页 ( 7 ) 循环完成所有功能的开发。 4 测试驱动开发的优缺点 测试驱动开发的优势主要有以下几个方面: ( 1 ) 基于测试的设计,使得设计、测试、开发融为一体。 ( 2 ) 通过测试驱动开发可以获得简单、清晰、高质量的代码。 ( 3 ) 开发完成后有一套伴随产品代码的详尽的测试集。 “) 保障代码的正确性。针对关键代码的测试集,以及不断完善的测试用例, 为迅速发现、定位b u g 提供了条件。 缺点: ( 1 ) 测试代码的编写、代码的重构,增加了开发人员的工作量。 ( 2 ) 对于测试编写需要更多的知识积累,对开发人员要求比较高。 2 1 3 测试驱动与敏捷开发 站在开发者的角度,敏捷开发顾名思义就意味着快速的软件开发是指 在较短时间内高质量高标准的完成客户的功能要求。重构是在不改变软件功能 的前提下,改变其内在的设计结构,使其具有更高的重用性和扩展性。重构能 够提高软件的设计结构,一个经过良好设计的软件架构无疑大大提高了其可维 护性,在一定程度上也加快了软件的开发速度。而重构的方法中可以使用设计 模式作为解决方案。敏捷开发中强调与客户的交互以快速应对变化,增加应对 变化的能力。测试驱动开发中测试与设计的一致性以及代码的重构无一不体现 了开发过程对需求变动的快速反应,并且还保证系统的高质量。测试驱动从系 统的角度看问题,主要解决的是保证系统设计、代码、测试的一致性。敏捷开 发则主要从需求的角度看待问题,其主张快速应对变化。二者虽看待问题角度 不同,但可完美结合。 2 2r e s t 网络架构 r e s t 这个术语,是r o yf i e l d i n g 在p h d 论文中提出来的,它的全称是 “r e p r e s e n t a t i o n a ls t a t et r a n s f e r9 9 0 r e s t 本身只是为分布式超媒体系统设计的一 种架构风格,而不是标准。r e s t 是对分布式超媒体系统中的架构元素的一种抽 西南交通大学硕士研究生学位论文第9 页 象。 2 2 1r e s t 架构方式 1 r e s t 规范 r e s t 规范主要有以下几点u 2 1 : ( 1 ) 客户服务器。 ( 2 ) 无状态性。 ( 3 ) 缓存。 ( 4 ) 统一接口。 ( 5 ) 分层系统。 ( 6 ) 按需代码。 2 r e s t 设计准则 r e s t 架构是针对w e b 应用而设计的,其目的是为了降低开发的复杂性, 提高系统的可伸缩性。r e s t 提出了如下设计准则1 2 】: ( 1 ) 网络上的所有事物都被抽象为资源( r e s o u r c e ) 。 ( 2 ) 每个资源对应一个惟一的资源标识符( r e s o u r c ei d e n t i f i e r ) 。 ( 3 ) 通过通用的连接器接e l ( g e n e r i cc o n n e c t o ri n t e r f a c e ) 对资源进行操作。 ( 4 ) 对资源的各种操作不会改变资源标识符。 ( 5 ) 所有的操作都是无状态的( s t a t e l e s s ) 。 2 2 2 资源 r e s t 对于信息的核心抽象是资源,任何能够被命名的信息都能够作为一个 资源。r e s t 中的资源所指的不是数据,而是数据和表现形式的组合。r e s t 之 所以是一个超媒体系统,是因为它可以把网络上所有资源进行唯一的定位,不 管文件是图片、视屏以及语音等等都可以利用支持h t t p 的t c p i p 协议来确定互 联网上的资源。r e s t 中的资源所指的不是数据,而是数据和表现形式的组合。 在w e b 开发中资源标识符就是u r l ,不管任何资源,全部通过u r l 对其进行唯 一标识。 西南交通大学硕士研究生学位论文第10 页 2 2 3 资源的操作 r e s t 是基于h t t p 协议的,任何对资源的操作行为都是通过h t t p 协议来实 现。h t t p 不是一个简单的运载数据的协议,而是一个具有丰富内涵的网络软件 协议。它不仅仅能够对于互联网资源进行唯一的定位,而且还能告诉该资源进 行操作。这也是r e s t 架构中最重要的两个概念。r e s t 网络架构遵循了c r i y d ( c r e a t e 、r e t r i e v e 、u p d a t e 、d e l e t e ) 原则,对应于资源的四种行为操作:创建( c r e a t e ) 、 获取( r e t r i e v e ) 、更新( u p d a t e ) 和销毁( d e l e t e ) 。在w e b 应用程序中,r e s t 通过使 用h 兀p 协议的p o s t 、g e t 、p u t 和d e l e t e 动词对资源进行操作,具体对应到 关系数据库中则对应i n s e r t 、s e l e c t 、u p d a t e 和d e l e t e 种操作。 2 2 4 多客户端应答 r e s t 架构风格的核心特征就是强调组件之间有一个统一的接口,在r e s t 世界里,网络上所有的事物都被抽象为资源,通过通用的链接器接口对资源进 行操作。这样设计的好处是保证系统提供的服务都是解耦的,极大地简化了系 统,从而改善了系统的交互性和可重用性。并且r e s t 针对w e b 的常见情况做了 优化,使得r e s t 接口被设计为可以高效地转移大粒度的超媒体数据,这也就使 得r e s t 接口可以对不同的客户端使用,传回给客户端不同格式的内容【12 1 。 2 3 r a ;is 的m v c 架构 2 3 。1r u b y 语言 r u b y 是一种迅速和简便的纯粹面向对象编程的动态解释性脚本语言。r a i l s 框架的简练易用就是得益于实现它的这门语言。r u b y 语言在灵活性和开发效率 上不亚于甚至超过 j a v a 和d e l p h i 。r u b y 语言的优点很多,与其他w e b 语言相比 最突出的优点有: 1 解释:r u b y 是解释型语言,因此执行程序时无需编译。 2 变量无类型:r u b y 的变量可以接收各种类型的数据,因此没有必要担 心变量类型的问题。另一方面,这弱化了编译检查的功能。 西南交通大学硕士研究生学位论文第11 页 3 无需声明变量:r u b y ? 无需声明变量即可使用。可以根据变量名分辨 变量的种类( 局部变量,全局变量,实例变量等) 。 4 内存管理无需用户干预:r u b y 自动进行内存管理。解释器内置的垃圾 回收器会自动回收不再使用的对象。 5 一切都是对象:从一开始r u b y 就被设计成为纯粹的面向对象语言。包 括整数这种基本的数据类型在内所有数据都被看成对象,进而得到统一 的处理。 6 动态绑定方法:可以在编程过程中动态地给对象和实例添加方法。 7 使用模块进行揉合:r u b y 认为多重继承会导致问题复杂化,因此故意 舍弃了多重继承,但可以使用模块超越类的界限来共享数据和方法等。 2 3 2r ails 中的m v c r a i l s 框架是基于m v c 框架设计的,其实现了一套独特的m v c 开发架构,采 取模型( m o d e l ) 、视图( v i e w ) 、控制器( c o n t r o l l e r ) 分离的开发方式,不但 减少了开发中的问题,更简化了许多繁复的动作。r a i l s 框架是以固定的命名习 惯来自动判断整个架构。 r u b yo nr a i l s 的模型一视图控制器架构由以下各部分组成: 1 模型 模型包含着应用的状态,状态可能是临时的也可能是长久性保存在数据库 中的。需要注意的是模型不仅包含数据,而且包含数据代表的逻辑。在r a i l s 中, 模型通常是由一些代表关系数据库中r d b m s 表的类组成的。在r o r 中,模型类 是通过a c t i v er e c o r d 模式进行处理的。一般来说,程序员要做的是继承 a c t i v e r e c o r d 类,同时程序会自动计算出要使用哪个r d b m s 表,这个表有哪些 列。表与表之间的关系通过简单的命令来指明。 2 控制器 控制器将用户界面和数据模型关联起来,并充当协调运作的角色。它接收 各种用户操作,更新数据模型,并用合适的v i e w 展示结果给用户。像他的名字 一样,可以说应用的主要控制中心就是各个控制器。 3 视图 v i e w 负责根据m o d e l 中的数据显示用户界面。作为w e b 应用,r a i l s 里 西南交通大学硕士研究生学位论文第12 页 的v i e w 通常是生成整个或者部分网页。当然可以是x m l 或者甚至是j a v a s c r i p t 代码。表现为使用内嵌的h t m l 、x m l 、j a v a s c r i p t 模板。 2 4 惯例优于配置 惯例胜于配置,c o n v e n t i o no v e r c o n f i g u r a t i o n ( c o c ) ,这个部分可以说是 r a i l s 和以往的很多框架大不相同的地方,也是r a i l s 强大的地方。如果把约定比 作约束的话,那么配置也就应该是是自由了。约束可以使事情变的简单,自由 丰富了多样化的世界。这个世界从古到今一直也在讨论着自由和约束的问题, 可是我们人类也一直没有很好解决它问题的焦点在于如何平衡这个矛盾的 集结点。r a i l s 提供的不仅是约束,还有灵活的配置。在r a i l s 中可以使用自己想 要的配置足够的自由那也意味着更多的劳动。r a i l s 应用程序在创建之 初就设置好了配置文件的目录和具体的文件。这些文件都位于a p p c o n f i g 下。 关于系统的配置部分,论文将在第四章作详细的介绍。本小节的后续部分将主 要介绍r a i l s 约束约定。 2 4 1 命名约定 1 r u b y 的命名约定: 变量名应该全部小写,单词之间以下划线分割;类和模块的名称中没有下 划线,短语中每个单词的首字母( 包括整个短语的第一个字母) 大写【5 】。 2 r a i l s 的命名约定: r a i l s 完全采用t r u b y 的命名约定,并在两个方面对其进行扩展1 5 1 。首先, r a i l s 认为数据库表名应该像变量名一样,全部采用小写字母,单词之间以下划 线分割。而且,r a i l s 会认为表名始终是复数形式的,也就是说表名应该类似于 “p a p e r _ i n f o r s ”的形式。另一方面,r a i l s 认为文件名也应该全部采用小写字母, 单词之间以下划线分割睁】。 2 4 2 约定配置 如果没有显式的修改配置文件,r a i l s 是基于默认配置的。这个默认配置也 是基于命名惯例的,r a i l s 会根据这些约定自动进行名称转换。比如说 西南交通大学硕士研究生学位论文第13 页 “p a p e r _ i n f o r s 组卷信息这个数据库表。r a i l s 会有如下推论: 模型类名为p a p e r l n f o r 位- j :a p p m o d e l s p a p e r _ i n f o r r b 文件中。 此模型对应的控制器为p a p e r - i n f o r s 。控制器类名为p a p e r l n f o r s c o n t r o l l e r , 位于a p p c o n t r o l l e r s p a p e r _ i n f o r sc o n t r o l l e r r b 存在一个名p a p e r l n f o r s h e l p e r 的辅助类a p p h e l p e r s p a p e r _ i n f o r s _ h e l p e r r b 这个控制器的视图模板应该位于a p p v i e w s p a p e r _ i n f o r s 文件夹下。关于视图 模板和控制器的默认配置部分,r a i l s 也有很多的命名假设。这部分的内容,论 文中放到了m v c 的实现部分,因为模板的渲染部分虽然有约定的部分,但是考 虑的因素比较多。 默认的布局模板应该为: a p p v i e w s l a y o u t s p a p e r _ _ i n f o r s h t m l e r b 文件。 2 4 3d r y 原则 不要重复自己( d o n tr e p e a ty o u r s e l f ,d r y ) 是r a i l s 社区的一个常见术语。 r a i l s 框架委员会使用通常看起来像是r u b y 语言的扩展的方法来把重复的任务抽 象出来。r a i l s 的元编程策略使每行代码都执行更多的任务。敏捷遍布于r a i l s 内 的核心实现,r u b y 作为动态语言,具有强大的元语言编程支持,能够在运行阶 段动态的对程序进行分析,这让敏捷开发的效率得到了极大的提高。为保持良 好的灵活性,j a v a 框架保持了大量普遍的配置文件。r a i l s 不采用这种策略,它 为方法、类、表和列采用普通的项目目录结构和简单普通的命名约定,以推断 哪些己配置在应用程序中,大大减少了敏捷开发的代码量,减轻了维护和开发 的代价。r a i l s 提供了强大的测试套件。包括单元测试,功能测试及性能测试等。 因此r a i l s 框架的哲学就是让开发者能关注真正的业务,去掉繁琐的,重复的动 作。这也要求开发人员有较好的素养,尽量多对系统重构,使系统保持低重复。 西南交通大学硕士研究生学位论文第14 页 3 1 系统目标 第3 章系统分析与设计 通过对车务段原有系统、工作流程和业务规则的分析后,确定该系统目标 如下: 1 ) 规范车务段考务、职工管理、证书管理等日常工作 规范题库、试卷的维护工作,使车务段管理人员依照规定流程完成车务段 测评工作:规范系统的维护与运行所需的工作;规范证书,职工等管理。 2 ) 提高车务段办公效率 通过改进数据的输入界面,完善数据的自动处理功能,提供丰富的统计查 询功能,系统要确实减轻车务段考务工作量,提高工作效率。 3 ) 保障系统安全 系统必须保障职工考试数据、试卷的保密工作,各部门用户只能使用系统 给定权限的操作。 4 ) 操作人性化 系统须从界面输入,排序,批量处理等方面满足部门用户平时使用习惯, 对用户输入或使用错误的地方,系统给出友好的提示。 5 ) 实现移动和异地办公 系统基于b r o w s e s e r v e r 模式设计,依靠铁路局内部网络,用户可以随时随 地的使用该测评系统管理考务以及人员信息,实现远程办公。 3 2 系统组成 从车务段的实际工作流程以及功能需要,将车务段测评系统分为两个大的 模块:管理员模块和考生模块。管理员模块和考生模块又分为多个小模块。系 统结构图如图3 1 和图3 2 0 西南交通大学硕士研究生学位论文第15 页 图3 - 1 考生模块功能图 图3 2 系统管理员模块功能图 西南交通大学硕士研究生学位论文第16 页 3 3 系统功能需求分析 r a il s 是敏捷的,本文的2 1 节已经表述过了。对于敏捷开发来

温馨提示

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

评论

0/150

提交评论