版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目前,国内外信息化建设已经进入以Web应用为基础核心的阶段。Java语言应该算得上是开发Web应用的最佳语言。然而,就算用Java建造一个不是很烦琐的Web应用系统,也不是件轻松的事情。有很多东西需要仔细考虑,比如要考虑怎样建立用户接口?在哪里处理业务逻辑?怎样持久化数据?而这3层构架中,每一层都有各自要仔细考虑的内容,比如各个层该使用什么技术?怎样的设计既能松散耦合还能灵活改变?怎样替换某个层而不影响整体构架?应用程序如何做各个方面的处理(例如,事务处理)?幸运的是,构架一个Web应用需要解决的一些问题已经由曾遇到过这类问题的开发者建立起处理这类问题的框架(Framework)。一个好框架应
2、具备以下几点:减轻开发者处理复杂问题的负担,具有良好的可扩展性,并且有一个支持它的强大的用户团体。好的框架一般有针对性地处理某一类问题,并且能将它做好(Do One Thing Well),好的框架还应该能指导代码如何分布。更重要的是,框架能把开发者从底层编码中解放出来,使他们能专心于应用程序的逻辑。本书将讨论怎样结合3种著名的框架Struts、Spring和Hibernate来使你的应用程序做到松散耦合。如何建立你的架构,并且怎样让你的各个应用层保持一致?如何整合框架,以便让每层以一种松散耦合的方式彼此作用而不用管底层的技术细节?这里讨论一个使用3种开源框架的策略:表示层用Struts,业务
3、层用Spring,而持久层则用Hibernate,如图1-1所示。大部分的的Webb应用在在职责上上至少能能被分成成4层:表表示层(Preesenntattionn Laayerr)、持持久层(Perrsisstennce Layyer)、业务务层(BBusiinesss LLayeer)和和域模块块层(ddomaain moddel Layyer)。每个个层在功功能上都都应该是是十分明明确的,而不应应该与其其他层混混合。每每个层要要相互独独立,通通过一个个通信接接口而相相互联系系。下面面将分别别详细地地介绍这这4层,讨讨论一下下这些层层应该提提供什么么,不应应该提供供什么。1.1 表示示层一
4、般来讲讲,一个个典型的的Webb应用的的前端应应该是表表示层,这里可可以使用用Strrutss框架。下面是SStruuts所所负责的的:管理用户户的请求求,做出出相应的的响应提供一个个流程控控制器,委派调调用业务务逻辑和和其他上上层处理理处理异常常为显示提提供一个个数据模模型用户界面面的验证证以下内容容,不该该在Sttrutts表示示层的编编码中经经常出现现,它们们与表示示层无关关的。与数据库库直接通通信与应用程程序相关关联的业业务逻辑辑及校验验事务处理理在表示层层引入这这些代码码,则会会带来高高耦合和和难以维维护的后后果。典型的WWeb应应用的后后端是持持久层。开发者者总是低低估构建建他们自
5、自己的持持久层框框架的挑挑战性。系统内内部的持持久层不不但需要要大量调调试时间间,而且且还经常常因为缺缺少功能能使之变变得难以以控制,这是持持久层的的通病。幸运的的是,有有几个对对象/关系映映射(OObjeect/Rellatiion Mapppinng,ORMM)开源源框架很很好地解解决了这这类问题题,尤其其是Hiiberrnatte。Hibbernnatee为Javva提供供了持久久化机制制和查询询服务,它还给给已经熟熟悉SQQL和JDBBC AAPI的的Javva开发发者创造造了一个个学习桥桥梁,使使他们学学习起来来很方便便。Hiiberrnatte的持持久对象象是基于于POJJO(Pl
6、aain Oldd Jaava Objjectt)和Jaava集集合(ccolllecttionns)的的。此外外,使用用Hibbernnatee并不妨妨碍你正正在使用用的IDDE(Inttegrrateed DDeveeloppmennt EEnviirommentt)。下面是HHibeernaate所所负责的的内容。如何查询询对象的的相关信信息。Hibeernaate是是通过一一个面向向对象的的查询语语言(HHQL)或正则则表达的的APII来完成成查询的的。HQQL非常常类似于于SQLL,只是是把SQQL里的的tabble和和collumnns用Objjectt和它的的fieeldss代替
7、。HQLL语言容容易理解解且文档档做得很很好。HHQL是是一种面面向对象象查询的的自然语语言,很很容易就就能学会会它。如何存储储、更新新、删除除数据库库记录。 Hibbernnatee这类的的高级OORM框框架支持持大部分分主流数数据库,并且支支持父表表/子表(Parrentt/ cchilld)关关系、事事务处理理、继承承和多态态。一个典型型Webb应用的的中间部部分是业业务层或或服务层层。从编编码的视视角来看看,这层层是最容容易被忽忽视的。我们往往往在用用户界面面层或持持久层周周围看到到这些业业务处理理的代码码,这其其实是不不正确的的。因为为它会造造成程序序代码的的高耦合合,这样样一来,随
8、着时时间推移移,这些些代码将将很难维维护。幸幸好,针针对这一一问题有有几种框框架(FFrammewoork)存在,最受欢欢迎的两两个框架架是Spprinng和PiccoCoontaaineer。这这些也被被称为轻轻量级容容器(mmicrro cconttainner),它们们能让你你很好地地把对象象搭配起起来。这这两个框框架都着着手于“依赖注注射”(deppenddenccy iinjeectiion),还有有我们知知道的“控制反反转”(Invverssionn off Coontrrol,IoCC)这样样的简单单概念。这里,我们将将关注于于Sprringg的依赖赖注射和和面向方方面编程程。另
9、外外,Spprinng把程程序中所所涉及到到的包含含业务逻逻辑和数数据存取取对象(DattaAcccesss OObjeect)的Obbjecctstraansaactiion mannageemennt hhanddlerr(事务务管理控控制)、Objjectt Faactooriees(对对象工厂厂)、sservvicee obbjeccts(服务组组件)都都通过XXML配配置联系系起来。后面我们们会通过过项目和和实例来来揭示SSpriing是是怎样运运用这些些概念的的。下面是业业务层所所负责的的。处理应用用程序的的业务逻逻辑和业业务校验验管理事务务提供与其其他层相相互作用用的接口口管理业
10、务务层级别别的对象象的依赖赖在表示层层和持久久层之间间增加了了一个灵灵活的机机制,使使得他们们不直接接联系在在一起通过揭示示从表示示层到业业务层之之间的上上下文(Conntexxt)来来得到业业务逻辑辑(buusinnesss seerviicess)管理程序序的执行行(从业业务层到到持久层层)既然我们们致力于于一个WWeb的的应用,我们就就需要一一个对象象集合,让它在在不同层层之间移移动。域域模块层层由实际际需求中中的业务务对象组组成,比比如订单单明细(OrdderLLineeIteem)、产品(Prooducct)等等。开发发者在这这层不用用管那些些数据传传输对象象(Daata Traan
11、sffer Objjectt),而而仅关注注域对象象(doomaiin oobjeect)即可。例如,Hibbernnatee允许你你将数据据库中的的信息存存入域对对象(ddomaain objjectts),这样你你可以在在连接断断开的情情况下把把这些数数据显示示到用户户界面层层,而那那些对象象也可以以返回给给持久层层,从而而在数据据库里更更新。而而且,你你不必把把对象转转化成DDTO(这可能能导致它它在不同同层之间间的传输输过程中中丢失)。这个个模型使使得Jaava开开发者能能很自然然运用面面向对象象编程(Objjectt-Orrienntedd Prrogrrammmingg),而而不需
12、要要附加的的编码。本书围绕绕上述架架构,通通过一个个完整的的项目oonliine boooksttoree来具体体展开SStruuts-Sprringg- HHibeernaate这这3部分的的讲解。项目开发发并不是是一个简简单的过过程,我我们需要要遵循一一些开发发流程。一个项项目的开开发会被被分成很很多步骤骤来实现现,每一一个步骤骤都有自自己的起起点和终终点。也也正如此此,使得得开发过过程中的的每个步步骤起点点和终点点在不同同的软件件项目中中出现不不同难度度的“坎”,使其其难于达达到该步步骤开始始或是终终结的条条件,开开发过程程也就不不会一帆帆风顺。不同的开开发模式式其实就就是将步步骤的起起
13、点和终终点重新新定义,甚至重重新组合合排列,虽然任任何一个个开发模模式最终终目的都都是完成成软件项项目的开开发,但但期间所所经历的的过程不不一样,过程步步骤之间间的起点点和终点点的定义义不同,所带来来的“坎”也就不不一样,项目周周期自然然各不相相同。因因此,根根据软件件项目的的实际情情况选择择一个适适合的开开发模式式能减少少开发周周期中“坎”的出现现次数与与难度,可以很很大程度度地缩短短开发周周期。我们首先先了解一一下传统统瀑布式式开发流流程,如如图2-1所示示。图2-11 瀑瀑布式(Watterffalll)开发发流程瀑布模型型是由WW.W.Royyce在在19770年首首先提出出的软件件开
14、发模模型,在在瀑布模模型中,开发被被认为是是按照需需求分析析、设计计、实现现、测试试(确认认)、集集成和维维护坚定定而顺畅畅地进行行的。线线性模型型太理想想化,太太单纯,以至很很多人认认为瀑布布模型已已不再适适合现代代的软件件开发模模式,几几乎被业业界抛弃弃。我们向大大家推荐荐的是统统一开发发流程RRUP(Rattionnal Uniifieed PProccesss),它它是目前前最流行行的一套套项目开开发流程程模式,其基本本特征是是通过多多次迭代代完成一一个项目目的开发发,每次次迭代都都会带来来项目整整体的递递增,如如图2-2所示示。从纵向来来看,项项目的生生命周期期或工作作流包括括项目需
15、需求分析析、系统统分析和和设计、实现、测试和和维护。从横向向来看,项目开开发可以以分为44个阶段段:起始始(Inncepptioon)、细化(Elaaborratiion)、建造造(Coonsttrucctioon)和和移交(traansiitioon)。每个阶阶段都包包括一次次或者多多次的迭迭代。在在每次迭迭代中,根据不不同的要要求或工工作流(如需求求、分析析和设计计等)投投入不同同的工作作量。也也就是说说,在不不同阶段段的每次次迭代中中,生命命周期的的每个步步骤是同同步进行行的,但但权重不不同。这这是与传传统瀑布布式开发发流程区区别最大大的地方方。2.1.1 项目生生命周期期1项目目需求分
16、分析需求分析析阶段的的活动包包括定义义潜在的的角色(角色指指使用系系统的人人,以及及与系统统相互作作用的软软、硬件件环境)、识别别问题域域中的对对象和关关系,以以及基于于需求规规范说明明和角色色的需要要发现用用例(uuse-casse)和和详细描描述用例例。2系统统分析和和设计系统分析析阶段是是基于问问题和用用户需求求的描述述,建立立现实世世界的计计算机实实现模型型。系统统设计是是结合问问题域的的知识和和目标系系统的体体系结构构(求解解域),将目标标系统分分解为子子系统,之后基基于分析析模型添添加细节节,完成成系统设设计。3实现现实现又称称编码或或开发阶阶段,也也就是将将设计转转换为特特定的编
17、编程语言言或硬件件,同时时保持先先进性、灵活性性和可扩扩展性。在这个个阶段,设计阶阶段的类类被转换换为使用用面向对对象编程程语言编编制(不不推荐使使用过程程语言)的实际际代码。这一任任务可能能比较困困难,也也可能比比较容易易,主要要取决于于所使用用的编程程语言本本身的能能力。4测试试和维护护测试用于于检验系系统是否否满足用用户功能能需求,以便增增加用户户对系统统的信心心。系统统经过测测试后,整个开开发流程程告一段段落,进进入运行行维护或或新的功功能扩展展时期。2.1.2 项目开开发阶段段1起始始阶段(Thee Inncepptioon PPhasse)对于新的的开发项项目来说说,起始始阶段是是
18、很重要要的。在在项目继继续进行行前,我我们必须须处理重重要的业业务与需需求风险险。对于于那些增增强现有有系统的的项目,起始阶阶段是比比较短暂暂的,但但是其目目的仍是是确定该该项目的的实施价价值及可可行性。起始阶段段有4个重要要活动。制定项目目的范围围计划并准准备业务务案例综合分析析,得出出备选构构架准备项目目环境2细化化阶段(Thee Ellaboorattionn Phhasee)细化阶段段的目标标是为系系统构架架设立基基线(bbaseelinne),为在构构建阶段段开展的的大量的的设计与与实施工工作打下下坚实的的基础。构架是是通过考考虑最重重要的需需求与评评估风险险演进而而来的,构架的的稳
19、定性性是通过过一个或或多个构构架原型型(prrotootyppe)进进行评估估的。3构建建阶段(Thee Coonsttrucctioon PPhasse)构建阶段段的目标标是完成成系统开开发。构构建阶段段从某种种意义上上来看是是一个制制造过程程,其中中,重点点工作就就是管理理资源、控制操操作,以以优化成成本、日日程和质质量。因因此,在在此阶段段,管理理理念应应该进行行一个转转换,从从起始阶阶段和细细化阶段段的知识识产品开开发转换换到构建建和交付付阶段的的部署产产品的开开发。构建阶段段的每次次迭代都都具有33个关键键活动。管理资源源与控制制过程开发与测测试组件件对迭代进进行评估估4交付付阶段(
20、Thee Trranssitiion Phaase)交付阶段段的焦点点就是确确保软件件对于最最终用户户是可用用的。交交付阶段段包括为为发布应应用而进进行的产产品测试试,在用用户反馈馈的基础础上做微微小的调调整等内内容。在在生命周周期的这这个时刻刻,用户户反馈主主要集中中在精确确调整产产品、配配置、安安装,以以及可用用性等问问题上。交付阶段段的关键键活动如如下:确定最终终用户支支持资料料在用户的的环境中中测试可可交付的的产品基于用户户反馈精精确调整整产品向最终用用户交付付最终产产品最后,作作为补充充,我们们再简单单介绍一一种新的的开发流流程:敏敏捷开发发和极限限编程。20011年,为为了解决决许
21、多公公司的软软件团队队陷入不不断增长长的过程程泥潭的的问题,一批业业界专家家一起概概括出了了一些可可以让软软件开发发团队具具有快速速工作、响应变变化能力力的价值值观和原原则,他他们称自自己为敏敏捷联盟盟。敏捷捷开发过过程的方方法很多多,主要要有SCCRUMM、Cryystaal、特特征驱动动软件开开发(FFeatturee Drriveen DDeveeloppmennt,简简称FDDD)、自适应应软件开开发(AAdapptivve SSofttwarre DDeveeloppmennt,简简称ASSD),以及最最重要的的极限编编程(eeXtrremee Prrogrrammmingg,简称称
22、XP)。极限编程程是一套套能快速速开发高高质量软软件所需需的价值值观、原原则和活活动的集集合,使使软件能能以尽可可能快的的速度开开发出来来并向客客户提供供最高的的效益。XP在很很多方面面都和传传统意义义上的软软件工程程不同,同时,它也和和传统得得管理和和项目计计划得方方法不同同。这些些方法在在软件工工程和其其他管理理活动中中都有借借鉴意义义。XP具有有12个过过程,只只有完全全使用112个过过程才是是真正使使用了XXP,只只是简单单使用了了其中一一个方法法并不代代表使用用了XPP。XP的12个过过程如下下。现场客户户(Onn-siite Cusstommer)计划博弈弈(Pllannningg
23、 Gaame)系统隐喻喻(Syysteem DDesiign)简化设计计(Siimplle DDesiign)集体拥有有代码(Colllecctivve CCodee Owwnerrshiip)结对编程程(Paair Proograammiing)测试驱动动(Teest-driiverr)小型发布布(Smmalll Reeleaase)重构(RRefaactoorinng)持续集成成(Coontiinouus iinteegraatioon)每周400小时工工作制(40-houur WWeekks)代码规范范(Coodinng SStanndarrds)下面是极极限编程程的有效效实践。完整团队
24、队XP项目目的所有有参与者者(开发发人员、客户、测试人人员等)一起工工作在一一个开放放的场所所中,他他们是同同一个团团队的成成员。这这个场所所的墙壁壁上随意意悬挂着着大幅的的、显著著的图表表以及其其他一些些显示他他们进度度的东西西。计划博弈弈是持续续的、循循序渐进进的。每每2周,开开发人员员就为下下2周估算算候选特特性的成成本,而而客户则则根据成成本和商商务价值值来选择择要实现现的特性性。客户测试试作为选选择每个个所期望望的特性性的一部部分,客客户可以以根据脚脚本语言言来定义义出自动动验收测测试来表表明该特特性可以以工作。简单设计计团队保保持设计计恰好和和当前的的系统功功能相匹匹配。它它通过了
25、了所有的的测试,不包含含任何重重复,表表达出了了编写者者想表达达的所有有东西,并且包包含尽可可能少的的代码。结对编程程所有的的产品软软件都是是由两个个程序员员并排坐坐在一起起在同一一台机器器上构建建的。测试驱动动开发编编写单元元测试是是一个验验证行为为,更是是一个设设计行为为。同样样,它更更是一种种编写文文档的行行为。编编写单元元测试避避免了相相当数量量的反馈馈循环,尤其是是功能验验证方面面的反馈馈循环。程序员员以非常常短的循循环周期期工作,他们先先增加一一个失败败的测试试,然后后使之通通过。 改进设计计随时利利用重构构方法改改进已经经腐化的的代码,保持代代码尽可可能的干干净,具具有表达达力。
26、持续集成成团队总总是使系系统完整整地被集集成。一一个人拆拆入(CChecck iin)后后,其他他所有人人负责代代码集成成。集体代码码所有权权任何结结对的程程序员都都可以在在任何时时候改进进任何代代码。没没有程序序员对任任何一个个特定的的模块或或技术单单独负责责,每个个人都可可以参与与任何其其他方面面的开发发。编码标准准系统中中所有的的代码看看起来就就好像是是由一人人单独编编写的。隐喻将整整个系统统联系在在一起的的全局视视图,它它是系统统的未来来影像,使得所所有单独独模块的的位置和和外观变变得明显显直观。如果模模块的外外观与整整个隐喻喻不符,那么你你就知道道该模块块是错误误的。可持续的的速度团
27、团队只有有持久才才有获胜胜的希望望。他们们以能够够长期维维持的速速度努力力工作,他们保保存精力力,他们们把项目目看作是是马拉松松长跑,而不是是全速短短跑。极极限编程程是一组组简单、具体的的实践,这些实实践结合合在形成成了一个个敏捷开开发过程程。极限限编程是是一种优优良的、通用的的软件开开发方法法,项目目团队可可以拿来来直接采采用,也也可以增增加一些些实践,或者对对其中的的一些实实践进行行修改后后再采用用。UML(Uniifieed MModeelinng LLangguagge)是是实现项项目开发发流程的的一个重重要工具具,它是是一套可可视化建建模语言言,由各各种图来来表达。图就是是用来显显示
28、各种种模型元元素符号号的实际际图形,这些元元素经过过特定的的排列组组合来阐阐明系统统的某个个特定部部分或方方面。一一般来说说,一个个系统模模型拥有有多个不不同类型型的图,一个图图是某个个特定视视图的一一部分。通常,图是被被分配给给视图来来绘制的的。另外外,根据据图中显显示的内内容,某某些图可可以是多多个不同同视图的的组成部部分。图具体分分为静态态模型和和动态模模型两大大类。其其中,静静态模型型包括:用例图(Usee-casse DDiaggramms)类图(CClasss DDiaggramms)对象图(Objjectt Diiagrramss)组件图(Commponnentt Diiagrr
29、amss)部署图(Depployymennt DDiaggramms)动态模型型包括:序列图(Seqquennce Diaagraams)协作图(Colllabboraatioon DDiaggramms)状态图(Staate Chaart Diaagraams)行为图(Acttiviity Diaagraams)2.2.1 用例例图用例图(Usee-caase Diaagraam)显显示多个个外部参参与者,以及他他们与系系统之间间的交互互和连接接,如图图2-33所示。一个用用例是对对系统提提供的某某个功能能(该系系统的一一个特定定用法)的描述述。虽然然实际的的用例通通常用普普通文本本来描述述
30、,但是是也可以以利用一一个活动动图来描描述用例例。用例例仅仅描描述系统统参与者者从外部部通过对对系统的的观察而而得到的的那些功功能,并并不描述述这些功功能在系系统内部部是如何何实现的的。也就就是说,用例定定义系统统的功能能需求。图2-33 一一个超市市系统的的用例图图2.2.2 类图类图(CClasss DDiaggramm)用来来显示系系统中各各个类的的静态结结构,如如图2-44所示。类代表表系统内内处理的的事物。这些类类可以以以多种方方式相互互连接在在一起,包括关关联(类类互相连连接)、依赖(一个类类依赖/使用另另一个类类)、特特殊化(一个类类是另一一个类的的特化)或者打打包(多多个类组组
31、合为一一个单元元)。所所有的这这些关系系连同每每个类的的内部结结构都在在类图中中显示。其中,一个类类的内部部结构是是用该类类的属性性和操作作表示的的。因为为类图所所描述的的结构在在系统生生命周期期的任何何一处都都是有效效的,所所以通常常认为类类图是静静态的。图2-44 旅旅馆系统统的类图图我们常常常会使用用特殊化化(Sppeciialiize)、一般般化(GGeneerallizee)、特特化(SSpecciallizaatioon)和和泛化(Genneraalizzatiion)这几个个术语来来描述两两个类之之间的关关系。例例如,对对于一个个类A(即父父类)派派生出另另一个类类B(即子子类)
32、这这样一个个过程,也常常常这样描描述:类类A可以特特殊化为为类B,而类类B可以一一般化为为类A;或者者类A是类B的泛化化,而类类B是类A的特化化。一个系统统一般都都有多个个类图并不是是所有的的类都放放在一个个类图中中并且一一个类可可以参与与到多个个类图中中。2.2.3 对象图图对象图(Objjectt Diiagrram)是类图图的一个个变体,它使用用的符号号与类图图几乎一一样。对对象图和和类图之之间的区区别是:对象图图用于显显示类的的多个对对象实例例,而不不是实际际的类。所以,对象图图就是类类图的一一个实例例,显示示系统执执行时的的一个可可能的快快照在某一一时间点点上系统统可能呈呈现的样样子
33、。虽虽然对象象图使用用与类图图相同的的符号,但是有有两处例例外:用用带下划划线的对对象名称称来表示示对象和和显示一一个关系系中的所所有实例例,如图图2-55所示。图2-55 显显示类的的类图和和显示类类的实例例的对象象图虽然对象象图没有有类图那那么重要要,但是是它们可可以用于于为一个个复杂类类图提供供示例,以显示示实际和和关系可可能的样样子。另另外,对对象图也也可被作作为协作作图的一一部分,用于显显示一群群对象之之间的动动态协作作关系。2.2.4 状态图图一般来说说,状态态图(SStatte DDiaggramm)是对对类的描描述的补补充。它它用于显显示类的的对象可可能具备备的所有有状态,以及
34、那那些引起起状态改改变的事事件,如如图2-66所示。对象的的一个事事件可以以是另一一个对象象向其发发送的消消息,例如到到了某个个指定的的时刻,或者已已经满足足了某条条件。状状态的变变化称之之为转换换(Trranssitiion)。一个个转换也也可以有有一个与与之相连连的动作作,后者者用以指指定完成成该状态态转换应应该执行行的操作作。在实际建建模时,并不需需要为所所有的类类都绘制制状态图图,仅对对那些具具有多个个明确状状态的类类,并且且类的这这些不同同状态会会影响和和改变类类的行为为才绘制制类的状状态图。另外,也可以以为系统统绘制整整体状态态图。图2-66 电电梯系统统的状态态图2.2.5 序列
35、图图序列图(Seqquennce Diaagraam)显显示多个个对象之之间的动动态协作作,如图图2-77所示。序列图图重点是是显示对对象之间间发送的的消息的的时间顺顺序。它它也显示示对象之之间的交交互,也也就是在在系统执执行时,某个指指定时间间点将发发生的事事情。序序列图由由多个用用垂直线线显示的的对象组组成,图图2-77中时间间从上到到下推移移,并且且序列图图显示对对象之间间随着时时间的推推移而交交换的消消息或函函数。消消息是用用带消息息箭头的的直线表表示的,并且它它位于垂垂直对象象线之间间。时间间说明以以及其他他注释放放到一个个脚本中中,并将将其放置置在顺序序图的页页边空白白处。图2-7
36、7 打打印服务务器的序序列图2.2.6 协作图图协作图(Colllabboraatioon DDiaggramm)像顺顺序图一一样显示示动态协协作。为为了显示示一个协协作,通通常需要要在顺序序图和协协作图之之间做选选择。除除了显示示消息的的交换(称之为为交互)以外,协作图图也显示示对象以以及它们们之间的的关系(上下文文)。通通常,选选择序列列图还是是协作图图的决定定条件是是:如果果时间或或顺序是是需要重重点强调调的方面面,那么么选择序序列图;如果上上下文是是需要重重点强调调的方面面,那么么选择协协作图。序列图图和协作作图都用用于显示示对象之之间的交交互。协作图可可当做一一个对象象图来绘绘制,它
37、它显示多多个对象象以及它它们之间间的关系系(利用用类/对象图图中的符符号来绘绘制),如图22-8所所示。协协作图中中对象之之间绘制制的箭头头显示对对象之间间的消息息流向。图2-8中的的消息上上放置标标签,用用于显示示消息发发送的顺顺序。协协作图也也可以显显示条件件、迭代代和返回回值等信信息。当当开发人人员熟悉悉消息标标签语法法之后,就可以以读懂对对象之间间的协作作,以及及跟踪执执行流程程和消息息交换顺顺序。协协作图也也可以包包括活动动对象,这些活活动对象象可以与与其他活活动对象象并发地地执行。图2-88 打打印服务务器的协协作图2.2.7 活动图图活动图(Acttiviity Diaagraa
38、m)用用于显示示一系列列顺序的的活动,如图2-9所示示。尽管管活动图图也可以以用于描描述像用用例或交交互这类类的活动动流程,但是一一般来说说,它主主要还是是用于描描述在一一个操作作内执行行的那些些活动。活动图图由多个个动作状状态组成成,后者者包含将将被执行行的活动动(即一一个动作作)的规规格说明明。当动动作完成成后,动动作状态态将会改改变,转转换为一一个新的的状态(在状态态图内,状态在在进行转转换之前前需要标标明显式式的事件件)。于于是,控控制就在在这些互互相连接接的动作作状态之之间流动动。同时时,在活活动图中中也可以以显示决决策和条条件,以以及动作作状态的的并发执执行。另另外,活活动图也也可
39、以包包含那些些被发送送或接收收的消息息的规格格说明,这些消消息是被被执行动动作的一一部分。图2-99 打打印服务务器的活活动图2.2.8 组件图图组件图是是用代码码组件来来显示代代码物理理结构的的。其中中,组件件可以是是源代码码组件、二进制制组件或或一个可可执行的的组件。因为一一个组件件包含它它所实现现的一个个或多个个逻辑类类的相关关信息,于是就就创建了了一个从从逻辑视视图到组组件视图图的映射射。根据据组件图图中显示示的那些些组件之之间的依依赖关系系,可以以很容易易地分析析出其中中某个组组件的变变化将会会对其他他组件产产生什么么样的影影响。另另外,组组件也可可以用它它们输出出的任意意的接口口来
40、表示示,并且且它们可可以被聚聚集在包包内。一一般来说说,组件件图用于于实际的的编程工工作中,如图22-100所示。图2-110 显示代代码组件件之间依依赖关系系的组件件图2.2.9 部署图图部署图(Depployymennt DDiaggramm)用于于显示系系统中的的硬件和和软件的的物理结结构。这这些部署署图可以以显示实实际的计计算机和和设备(节点),同时时还有它它们之间间的必要要连接,也可以以显示这这些连接接的类型型,如图图2-111所示示。在图图中显示示的那些些节点内内,已经经分配了了可执行行的组件件和对象象,以显显示这些些软件单单元分别别在哪个个节点上上运行。另外,部署图图也可以以显示
41、组组件之间间的依赖赖关系。图2-111 系统物物理结构构的部署署图正如前面面所说的的那样,显示部部署视图图的部署署图描述述系统的的实际物物理结构构,这与与用例视视图的功功能描述述完全不不同。但但是,对对一个明明确定义义的模型型来说,可以实实现从头头到尾的的完整导导航:从从物理结结构中的的一个节节点导航航到分配配给该节节点的组组件,再再到该组组件实现现的类,接着到到该类的的对象参参与的交交互,最最终到达达用例。系统的的不同视视图在总总体上给给系统一一个一致致的描述述。 HYPERLINK /bookfiles/111/1001113455.shtml 3.1 项目需需求分析析网上购书书系统由由3
42、部分组组成:用用户管理理、购书书网站和和订单处处理中心心。其中中,用户户管理负负责用户户注册及及用户登登录;购购书网站站是一个个Webb应用程程序,用用户可以以通过WWeb浏浏览器登登录到此此网站,在此网网站,用用户可以以搜索要要找的书书,查看看书的详详细信息息并购书书(将书书加入购购物车);订单单处理中中心用来来管理购购物网站站转过来来的订单单,如图图3-11所示。用户管理理主要包包括以下下功能模模块。注册用户户信息对于新新用户,单击“注册”按钮,进入用用户注册册页面;填写相相关注册册信息,*为必填填项;填填写完成成后单击击“确定”按钮; 弹出出“注册成成功”对话框框,即成成功注册册。用户登
43、录录验证 对于于已注册册的用户户,进入入用户登登录页面面,如图图3-22所示; 填写写您的用用户名和和密码; 单击击“登录”按钮;用户名名和密码码正确,登录成成功,进进入购书书网站。图3-22 用用户登录录页面购书网站站主要包包括以下下功能模模块:浏览图书书网站的书书籍列表表要列出出当前网网站所有有的图书书名称,如图33-3所所示。当当用户单单击某一一图书名名称时,要列出出该书的的详细信信息(包包括书名名、作者者、单价价)。图3-33 浏浏览图书书页面查找图书书用户可以以在网站站的查找找框中输输入一个个书名,单击“查找”按钮可可以查看看网站是是否有此此书,系系统将查查找结果果(如果果有此书书,
44、返回回书的详详细信息息;如果果没有,返回当当前没有有此书的的信息)返回给给用户,如图33-4所所示。图3-44 查查找图书书页面购物车管管理用户可以以随时查查看自己己的购物物车,可可以添加加或删除除购物车车中的商商品,如如图3-5图图3-77所示。图3-55 购购物车管管理页面面图3-66 购购物车增增加商品品页面图3-77 购购物车减减少商品品页面购书在浏览图图书时,用户可可以在查查看选中中图书的的详细信信息时添添加此书书到购物物车,添添加完毕毕可以选选择继续续购物或或是结算算。如果果选择结结算,要要填定一一个购书书登记表表,该表表包括以以下内容容:购书书人姓名名、地址址、E-maiil、所
45、所购图书书的列表表、总价价,如图图3-88所示。订单处理理中心的的功能:订单处理理中心是是一个WWeb应应用程序序,在此此将列出出所有等等待处理理的订单单,每一一笔订单单包含购购书人姓姓名、地地址、EE-maail、所购图图书的列列表、总总价。其其中,所所购图书书的列表表包括各各个书籍籍信息的的明细内内容,总总价是系系统自动动计算的的。图3-88 购购书页面面系统是由由Webb服务器器、数据据服务器器和浏览览器客户户端组成成的多层层Webb计算机机服务系系统,采采用Sttrutts-SSpriing-Hibbernnatee架构,具用先先进性、灵活性性、可扩扩展性等等特点。3.2.1 数据库库
46、设计(datta mmodeel)实体关系系(Enntitty-RRelaatioonshhip)图(1)逻逻辑图(Loggic diaagraam),如图33-9所所示。(2)物物理图(Phyysiccal diaagraam),如图33-100所示。建立表:boook、cusstommer、ordderiitemm和ordderss的脚本本如下,其对应应表结构构如表33-1表3-44所示。CREAATE TABBLE boook ( bbookk_idd iint(11) NOOT NNULLL auuto_inccremmentt, bbookk_naame vaarchhar(1000
47、) NNOT NULLL ddefaaultt , bbookk_auuthoor varrchaar(1100) NOOT NNULLL deefauult , bbookk_prricee ddoubble NOTT NUULL deffaullt 0, iimagge varrchaar(1100) NOOT NNULLL deefauult , ddesccribbe varrchaar(2200) NOOT NNULLL deefauult , PRRIMAARY KEYY (boook_id) CREAATE TABBLE cuustoomerr ( ccusttomeer_iid
48、 intt(111) NNOT NULLL aautoo_inncreemennt, ccustt_naame vaarchhar(1000) NNOT NULLL ddefaaultt , ppasssworrd varrchaar(1100) NOOT NNULLL deefauult , eemaiil varrchaar(1100) NOOT NNULLL deefauult , PRRIMAARY KEYY (cuustoomerr_idd) CREAATE TABBLE orrderriteem ( oordeerIttem_id innt(111) NOTT NUULL autt
49、o_iincrremeent, qquanntitty intt(111) NNOT NULLL ddefaaultt 00, oordeer_iid intt(111) NNOT NULLL ddefaaultt 00, bbookkid innt(111) NOTT NUULL deffaullt 0, PRRIMAARY KEYY (orrderrIteem_iid) CREAATE TABBLE orrderrs ( oordeer_iid intt(111) NNOT NULLL aautoo_inncreemennt, ccustt_idd iint(11) NOOT NNULLL
50、 deefauult 0, ttotaalprricee ddoubble NOTT NUULL deffaullt 0, PRRIMAARY KEYY (orrderr_idd) 表3-11 bbookk(书籍籍)表结结构列 名类 型描 述bookk_idd int(11)表示书籍籍标识号号,是自自动递增增的主键键bookk_naamevarccharr(1000)表示书籍籍名字bookk_auuthoorvarccharr(1000)表示书籍籍作者bookk_prriceedoubble表示书籍籍价格imaggevarccharr(1000)表示书籍籍图片在在文件系系统中的的路径descc
51、ibeevarccharr(2000)表示书籍籍描述信信息(ddesccribbe是数数据库关关键字,这里有有意命名名为deescrribee)表3-22 CCusttomeer(客客户)表表结构列 名类 型描 述custtomeer_iidint(11)表示客户户标识号号,是自自动递增增的主键键custt_naamevarccharr(1000)表示客户户姓名passsworrdvarccharr(1000)表示客户户登录密密码emaiilvarccharr(1000)表示客户户电子邮邮件表3-33 OOrdeers(订单)表结构构列 名类 型描 述ordeer_iidint(11)表示订单
52、单标识号号,是自自动递增增的主键键custt_iddint(11)表示客户户标识号号totaalprriceedoubble表示订单单的总价价格表3-44 OOrdeerittem(订单明明细)表表结构列 名类 型描 述ordeerIttem_idint(11)表示订单单明细标标识号,是自动动递增的的主键quanntittyint(11)表示订单单中购买买每种书书的数量量ordeer_iidint(11)表示订单单标识号号bookkidint(11)表示订单单中购买买每种书书的标识识号1系统统分析我们通过过UMLL语言里里的用例例图(uuse-casse ddiaggramm)、类类图(ccl
53、asss ddiaggramm),以以及序列列图(ssequuencce ddiaggramm)来分分析网上上书店项项目。(1)uuse-casse ddiaggramm:项目目用例图图如图33-111所示。(2)cclasss ddiaggramm:用户户管理模模块类图图、图书书管理模模块类图图和订单单管理模模块类图图分别如如图3-12、图3-13和和图3-14所所示。图3-111 项目用用例图图3-113 图书管管理模块块类图图3-114 订单管管理模块块类图(3)ssequuencce ddiaggramm:用户户管理模模块序列列图、图图书管理理模块序序列图和和订单管管理模块块序列图图分
54、别如如图3-15、图3-16和和图3-17所所示。图3-115 用户管管理模块块序列图图图3-116 图书管管理模块块序列图图图3-117 订单管管理模块块序列图图2系统统设计系统的整整体逻辑辑结构如如图3-18所所示。图3-118 项目整整体逻辑辑结构图图具体如下下。(1)WWeb应应用程序序设计本项目中中使用了了Strrutss-Sprringg-Hibbernnatee框架建建立购书书网站。在Sttrutts框架架中,JJSP用用于前端端展现,Serrvleet用于于控制,Acttionn用于处处理前端端页面JJSP发发来的请请求,请请求参数数通过AActiionFFormm进行传传递,
55、AActiion在在获得请请求后通通过调度度业务系系统提供供的Spprinng sservvicee beean做做处理,最后将将处理结结果转发发到相应应的JSSP进行行展现。Web应应用程序序的组织织结构可可以分为为4个部分分。 Webb应用根根目录下下放置用用于前端端展现的的JSPP文件 comm.asscennt.sstruuts.acttionn放置处处理请求求的Acctioon comm.asscennt.sstruuts.forrm放置置所有的的ActtionnForrm comm.asscennt.sstruuts放放置程序序中用到到的资源源文件AAppllicaatioonRe
56、esouurcees.ppropperttiess下面以组组织结构构中的44个部分分为例,分别进进行介绍绍。JSP文文件包括括10个文文件,表表3-55列出了了每个JJSP文文件实现现的功能能。表3-55 JJSP文文件列表表文件名称称功 能indeex.jjsp索引页面面,入口口界面Logiin.jjsp用户登录录页面reg.jspp用户注册册页面Listtboook.jjsp书籍列表表页面bookkdettaill.jssp书籍详细细信息页页面viewwCarrt.jjsp购物车管管理页面面carttok.jspp购物结算算页面checckokk.jssp订单处理理页面headd.jssp
57、页眉模板板页面taill.jssp页脚模板板页面actiion包包括100个文件件,表33-6列列出了每每个Acctioon的功功能。表3-66 AActiion列列表文件名称称功 能BaseeActtionn所有Acctioon的父父类,同时是是服务定定位器LogiinAcctioon用户登录录ActtionnLogooutAActiion用户退出出ActtionnRegiisteerAcctioon用户注册册ActtionnBookkQueeryAActiion.javva查询指定定书籍AActiionQuerryDeetaiilAcctioon书籍详细细信息AActiionAddCCar
58、ttActtionn.jaava往购物车车添加书书籍AcctioonDeleeteCCarttActtionn.jaava查看购物物车AcctioonEmpttyCaartAActiion.javva结算AcctioonOrdeerChheckkActtionn.jaava订单处理理Acttionnformm包括5个文件件,表33-7列列出了每每个AcctioonFoorm的的功能。表3-77 AActiionFFormm列表文件名称称功 能LogiinFoorm表示用户户登录数数据RegiisteerFoorm表示用户户注册数数据BookkQueeryFFormm.jaava表示书籍籍查询数
59、数据OrdeerChheckkForrm.jjavaa表示订单单数据HideeForrm表示隐藏藏表单数数据(2)后后端数据据Hibbernnatee部分的的设计 comm.asscennt.bbeann逻辑包包包括Peersiisteencee Obbjecct(持持久化对对象)和和相应的的hbmm映射文文件,pperssisttencce OObjeect列列表如表表3-88所示。表3-88 PPerssisttencce OObjeect(持久化化对象)列表文件名称称功 能com.asccentt.beean.Boook代表一本本书的类类com.asccentt.beean.Cussto
60、mmer代表一个个客户的的类com.asccentt.beean.Ordderiitemm代表订单单项的类类com.asccentt.beean.Ordderss代表订单单的类Hibeernaate.cfgg.xmml代表数据据库的整整体配置置文件 comm.asscennt.ddao逻逻辑包包括数据据读取对对象Daata Acccesss Obbjecct(DAOO)的接接口和实实现类BBookkDAOO、OrdderDDAO、OrdderiitemmDAOO、CusstommerDDAO,DAOO接口列列表如表表3-99所示,DAOO实现列列表如表表3-110所示示。表3-99 DDAO接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新疆北屯额河明珠国有资本投资有限公司中层管理人员选聘备考题库及参考答案详解1套
- 2025年重庆交通大学诚聘英才80人备考题库及答案详解参考
- 2025年渭南市各级体育运动学校教练员专项招聘备考题库及参考答案详解1套
- 2025年北京语言大学面向副高级及以上专业技术职务人员事业编制公开招聘备考题库有答案详解
- 宜宾市科技人才集团有限公司2025年第三批员工公开招聘的备考题库及1套完整答案详解
- 2025年荆门屈家岭产业发展集团有限公司招聘备考题库及参考答案详解一套
- 2025年四川工商学院招聘党委宣传部工作人员备考题库及答案详解1套
- 2025年关于公开招聘编外临床护士的备考题库及参考答案详解1套
- 2025年中国传媒大学财务处、信息化处、校医院其他专业技术岗招聘备考题库及参考答案详解一套
- 安全证书制度详解讲解
- 一级建造师考试机电工程管理与实务试卷及答案(2025年)
- 2026年潍坊护理职业学院单招职业倾向性考试必刷测试卷及答案1套
- 医保政策学习课件
- 雨课堂学堂在线学堂云《科学研究方法与论文写作(复大)》单元测试考核答案
- 2025浙江省自由贸易发展中心招聘工作人员5人(第二批)参考笔试试题及答案解析
- 老公情人签约协议书
- 4、蓝恒达QC小组活动基础知识与实务培训课件
- 小学六年级科学上册2025年期末检测卷(含答案)
- 现场清洁度培训课件
- 豪华转马应急预案
- 2025年信用报告征信报告详版个人版模板样板(可编辑)
评论
0/150
提交评论