ImageVerifierCode 换一换
格式:DOC , 页数:31 ,大小:668KB ,
资源ID:1272701      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-1272701.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(面向对象设计和极限开发方法实践-毕业论文.doc)为本站会员(滴答)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

面向对象设计和极限开发方法实践-毕业论文.doc

1、Object Oriented Design and Extreme Programming in Practice 1 面向对象设计和极限开发方法实践 摘要 本文以一个 CMM2 级项目管理系统的开发为基础,探索和 总结 了面向对象设计和极限开发方法 在实际应用中可能存在的一些问题,以及对比传统设计和开发模式所带来的优势和革新。并且还展示了相关 J2EE 技术 和设计模式 在企业开发中的应用。 关键词 面向对象设计 极限开发 Java J2EE 架构 Object Oriented Design and Extreme Programming in Practice 2 Object Ori

2、ented Design and Extreme Programming in Practice Summary This paper shows how to implement Object Oriented Design and Extreme Programming in developing a project management system based on CMM2. And also shows some J2EE core design patterns and technology. Key words Object Oriented XP Java J2EE Obje

3、ct Oriented Design and Extreme Programming in Practice 3 目录 引言 . 4 1. 项目背景 . 4 1.1. 功能需求 . 4 1.2. 技术需求 . 4 2. 设计、架构描述 . 5 2.1. 相关概念 . 5 2.2. 系统总体概述 . 6 2.3. 数据访问 -O/R 映射层 . 7 2.4. 商业逻辑层 .17 2.5. 支持层 .18 2.6. 表现层 .19 3. 与传统设计方式的对比 .20 3.1. 基于数据模型的传统设计方式 .21 3.2. 面向对象的设计 方式 .22 4. 开发方法和工具 .23 4.1. 相关概

4、念 .23 4.2. 可行性分析 .23 4.3. 预计开发目标 .23 4.4. 迭代 .24 4.5. 重构 .26 4.6. 开发工具 .27 5. 总结 .29 5.1. 系统设计、架构 .29 5.2. 开发方式 .30 致谢 : .31 参考文献: .31 Object Oriented Design and Extreme Programming in Practice 4 引言 虽然面向对象设计和开发已经出现了近 20 年,并在国外得到了广泛的应用。可是在国内真正可以实现面向对象的企业却寥寥无几,本文借助一个项目管理系统的开发过程,希望能够展示出面向对象设计给软件开发 带来的真

5、正革新, 以及 相比较于 传统的 面向数据的开发的区别和优势。 同时, 面向对象技术不仅仅意味着设计和编程,而是贯穿于软件生命周期的始终,解决分析与设计期间的复杂性并实现分析与设计的复用 。 在开发的实施过程中,我们采用了极限开发的方法和思想,虽然最后没有 在严格意义上 实现,可是仍然体现出了相较于传统开发模式巨大的优势和潜力。 XP 的很多方法和思想对开发过程都有相当的帮助。 最后, 此系统基于 J2EE 开发,希望可以展示出 J2EE 框架和技术对于企业应用所带来的好处。 1. 项目 背景 1.1. 功能需求 客户在过去使用 DevTrack + Peforce 来进行项目的建立、分配、转

6、发和修改等,现在由于引进了 CMM2 的开发标准,需要对项目进行计划、监控及报表。所以需要在 DevTrack的基础上加入所需的功能。主要包括: 1. 组合查询功能 2. 工作计划功能 3. 工作度量功能,包括工作量和优先级。 更详细请参见附件中的需求文档。 1.2. 技术需求 DevTrack 由于有多方客户在同时使用(美方、中方),我们不能在其基础上做二次开发(新功能仅仅是中方的要求),并且对于 DevTrack 的数据库也只有读取的权限。所以我们需要使用新的数据库来存放新信息,结构如下: D e v t r a c kD a t a b a s eP r o j e c tm a n a

7、 g e m e n td a t a b a s eJ a v aM i d d l e w a r eW e b s i t eD e v t r a c km i d d l e l a y e rD e v t r a c k W e b s i t eObject Oriented Design and Extreme Programming in Practice 5 同时,由于 DevTrack DataBase 的地理位置(美国)和负载量,使得访问速度不够理想。在技术上,我们要解决数据库的异构,访问速度等问题, 并且系统还应满足可移植性要求,可以方便移植到主流的 J2EE 的服

8、务器上。 2. 设计、架构描述 2.1. 相关概念 面向对象: 是当前程序设计的主流技术,其本质:抽象、封装、多态、继承。第一要着是抽象,而抽象具有是不确定的,具有不同的粗粒度(根据不同的粗粒度可以排列成为一种层次)。在此之上面向对象设计,则是一种工程学方法,在 Robert Martin 于 1995 年出版的那本著名的 Designing Object-Oriented C+ Application,在回答 什么是面向对象设计 时, Uncle Bob 这样写道:面向对象设计的目的是管理程序中各部分之间的依赖关系。最终开发目标就是降低耦合度,实现复用。 框架 :软件复用的发展方式:程序主体

9、反主为客,并让 辅助组件反客为主,即控制反转。如果一个程序库负担了整个应用程序 运行的主干算法,并实现了主动的事件循环、事件处理机制、控制流程。则为框架。而基于此的所谓的应用架构的外在本质是把 技术问题和业务问题分离 ,而其内在本质是抽象,把一个系统抽象为技术和业务。以达到技术的复用。任何一个系统都存在技术 问 题,虽然他们的业务问题可能不一样。技术层面上,建立一个应用架构从宏观层面来看第一要著是使系统结构化,结构化的途径有三个:分层、管道和过虑、黑板。 1. 分层模式是一种解决 大 系统的良好的方法,无论是 J2EE 还是 .Net 都应用这种技术。本质上讲分层是抽象的排列。因为大系统复杂性

10、较高,它的抽象层面也相应较多。 2. 管道和过虑通过用来解决数据流的较好方式。 3. 黑板则是用来解决不确定性问题的首要途径。当一个问题解 决方法缺乏一定模式,而现有的方法集中的每个方法都只能解决问题的一个部分,并各自不相交。黑板可以成为较好的抽象机制。 面向对象设计原则: SRP 单一职责原则: 就一个类而言,应该仅有一个引起变化的原因 OCP 开放封闭原则: 软件实体应该可以扩展,但是不可修改 LSP Liskov 替换原则: 子类型必须能够替换它们的基类型 DIP 依赖倒置原则: 抽象不应该依赖于细节,细节应该依赖于抽象 ISP 接口隔离原则: 不应该强迫客户依赖于它们不用的方法。接口属

11、于客户,不属于所在的类层次结构 REP 重用发布等价 原则: 重用的粒度就是发布的粒度 CCP 共同封闭原则: 包中的所有类对于同一性质的变化应该是共同封闭。一个变化如果对一个包产生影响,则将对该包中的所有类产生影响,而对于其他包不造成任何影响。 CRP 共同重用原则: 一个包中所有类应该是共同重用。如果重用了包中一个类,那么就要重用该包中的所有类。 ADP 无环依赖原则: 在包中的依赖关系图中不允许存在环。 SDP 稳定依赖原则: 朝着稳定的方向进行依赖 Object Oriented Design and Extreme Programming in Practice 6 SAP 稳定抽象

12、原则: 包的抽象程度应该和其稳定程度一致。 2.2. 系统总体概述 本系统建立在异构的数据库之 上, 且为 B/S 结构,所以分层的架构可以把问题和责任分散到相应的层和类中,易于降低系统的耦合度,增加复用性。 因为本系统基于极限开发方法构建,所以在最初的迭代中并不会采用复杂的结构,但是考虑到项目整体规模和需求未来的发展,最终系统会被重构为如下 结构: 各个层次间关联如下: Object Oriented Design and Extreme Programming in Practice 7 由于系统开发周期的原因,所以系统仍在不断的迭代中,下面是目前系统各个模块的基本设计 。同时 ,在下面的

13、描述中实行了“简单”原则,即只用最典型的设计片断来表现中心设计思想。如需要了解全部系统细节,请参阅代码或系统规格文档。(使代码具有注释 性的可读性也是系统构建的目标之一) 2.3. 数据访问 -O/R 映射层 2.3.1. 总体结构 总体结构如下:( Facade 不在此层,仅为了说明关系) Object Oriented Design and Extreme Programming in Practice 8 功能 /职责介绍 Package Function / Responsibility Jdbc 封装物理连接,包括 driver, connection, preparedstatem

14、ent, resultset, transaction 等,为上层抽象数据库连接 Data 定义系统中所需的全部对象,包括中间对象和上层所需的真 实对象 Dao 调用 Jdbc 层,获取数据并组装为中间对象 Mapping 把中间对象组装为系统逻辑所需的最终对象,并提供 Cache 机制 Facade 封装全部系统定义的逻辑过程,提供各种逻辑检查和权限检查 设计思想概述 因为系统基于分布式数据设计 ,所以使用 Jdbc 层来屏蔽不同数据库的具体连接,使用Dao 取得相应的数据,最后在 mapping 层中组装为系统定义的对象,之上的业务逻辑层只需操作对象来完成系统功能 。整个系统都围绕域对象来

15、展开,降低了数据模型与业务逻辑之间的偶合度(在大多数系统中域对象比数据 模型更加稳定,在数据模型变化时,只要修改对象对数据模型的映射)。 2.3.2. JDBC层 设计思想概述 因为数据访问和更新的过程是不变的,所以采用 Template 模式统一过程,并为上层提供抽象接口: IDataSource, IPreparedStatementBuilder, IResultHandler。只要提供了数据源、查询语句制造器、结果集处理者,就可以完成查询,并从 ResultHandler 处得到处data jdbc mapping facade dao Object Oriented Design a

16、nd Extreme Programming in Practice 9 理过的结果。 功能 /职责介绍 Interface Function / Responsibility IQueryTemplate 提供连接数据库查询的 Template,统一实现查询过程 IUpdateTemplate 提供连接数据库更新的 Template,统一实现更新过程 IPreparedStatementBuilder PreparedStatement 的 Builder,制造PreparedStatement IResultHandler ResultSet 的 Handler,负责处理提取结果集的数据

17、IDataSource 抽象数据源,提供 connection,并负责回收 connection IConnectionPool 定义连接池 QueryTemplate 代码片断 public void query(final IPreparedStatementBuilder builder, final IResultSetHandler handler) throws Exception Connection conn = null; try conn = datasource.getConnection(); /得到连接 builder.setConnection(conn); fin

18、al PreparedStatement ps = builder.getPreparedStatement(); /创建 /PreparedStatement final ResultSet rs = ps.executeQuery(); while (rs.next() handler.processRow(rs); /处理结果 rs.close(); /关闭结果集 catch (Exception e) IDataSource getConnection() returnConnection() IQueryTemplate query() IResultSetHandler proce

19、ssRow() getResult() IUpdateTemplate update() IPreparedStatementBuilder getPreparedStatement() setParams() setSql() setConnection() Object Oriented Design and Extreme Programming in Practice 10 / throw customized exception finally datasource.returnConnection(conn); /回收连接 设计优势 通过 Template 的设计 ,屏蔽了具体的物

20、理连接和不同的数据源 ,因为可以预先定义出数据源、结果集处理方式,上层只 要编写查询条件,在选出相应的 DataSource 和ResultSetHandler 即可得到需要的数据 。 2.3.3. Data Layer 设计思想概述 因为数据分散在两个数据库,所以针对每个对象都设计两个部分对象对应不同数据库的数据,再用类似 Proxy 的方式用一个对象代理各个部分对象的方法,提供标准的对象,此外,各个部分对象可能会被 Cache,并使用 Lazy Init 的方式(即不调用对应的方法不会载入) 2.3.3.1. Property Data IDa t a P ro p e rtyg e t P ro p e rt y Id ()g e t P ro p e rt y N a m e ()g e t P ro p e rt y N a m e s ()Da t a P ro p e rt y设计思想概述 IDataProperty 被设计用来存放表级别的 id name 的属性对,如 StatusId StatusName, 设计优势 定义这种对象 ,一方面可以在查询层省去了表连接,而且可以被缓存,减少了数据库的负担,简化了查询语句,另一方面 getPropertyNames()可以为界面提供属性列表(如选择条件时)

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。