为了纪念逝去的JSF,淘汰的JApplet,友好的Facelets,实用的Seam,优秀的Maven,理论的UCD,经典的Java EE,再次回顾了我的毕业论文。
它本来是短小精简的,但是在导师的要求下,不情愿的加了很多东西。在这里和大家分享一下。
BeyondTrack 软件过程支持环境 —— Web 层设计及实现
目录
插 图目录 iii
表 格目录 v
BeyondTrack 软件过程支撑环境 —— Web 层设计及实现 1
1 绪论 3
1 . 1 研究的背景和意义 3
1 . 2 国内外现状 4
1 . 3 研究内容 5
1 . 3 . 1 Java EE 中 Web 层设计和实现 5
1 . 3 . 2 JSF 技术 5
1 . 3 . 3 JApplet 5
1 . 4 论文组织结构 5
2 相关技术介绍 6
2 . 1 JApplet 6
2 . 2 JSF ( JavaServer Faces ) 6
2 . 3 Facelets 7
2 . 4 Seam 7
2 . 5 Maven 7
2 . 6 UCD ( User-Centered Design )模型 8
2 . 7 Java EE 分层模型 9
2 . 8 软件过程支撑环境 9
3 BeyondTrack 系统需求分析 11
3 . 1 功能需求 11
3 . 2 界面驱动的需求分析 11
3 . 3 可视化软件过程建模设计器的需求分析 18
4 BeyondTrack 系统 Web 层设计 18
4 . 1 Web 层概要设计 21
4 . 1 . 1 Web 层架构及设计方法 21
4 . 1 . 2 页面组织结构 21
4 . 1 . 3 Web 层接口设计 22
4 . 2 界面设计 23
4 . 2 . 1 BeyondTrack 系统界面规范 23
4 . 2 . 2 界面设计与关系图 24
4 . 2 . 3 美学设计 26
5 BeyondTrack 系统实现 27
5 . 1 Web 层实现 27
5 . 1 . 1 JSF 与 Facelets 27
5 . 1 . 2 JSF UI 组件自定义 27
5 . 1 . 3 JSF 页面导航与 Renderer 28
5 . 1 . 4 JSF 转换器、验证器及消息机制 28
5 . 1 . 5 JSF 国际化、本地化多主题 30
5 . 1 . 6 可视化的软件过程建模设计器的详细设计 31
5 . 2 系统整合 33
5 . 2 . 1 运行环境 33
5 . 2 . 2 系统测试 34
5 . 3 系统应用实例 35
总 结 43
1 工作总结 43
2 工作展望 43
致 谢 44
参 考文献 45
附 录 46
插图目录
图 1.1 2005 年至 2008 年编程技术岗位需求 4
图 2.1 JAp p let 生命周期 6
图 2.2 JSF 生命周期 6
图 2.3 Seam 框架 7
图 2.4 Maven 生命周期 8
图 2.5 UCD 模型 8
图 2.6 Java EE 多层应用 框架 9
图 3.1 编辑用户信息的界面需求分析 12
图 3.2 创建用户的界面需求分析 12
图 3.3 注册用户的界面需求分析 13
图 3.4 维护自己帐号的界面需求分析 13
图 3.5 管理用户列表的界面需求分析 13
图 3.6 管理项目列表的界面需求分析 14
图 3.7 创建项目的界面需求分析 14
图 3.8 项目信息及成员管理的界面分析需求 14
图 3.9 过程管理的界面需求分析 15
图 3.10 创建任务的界面需求分析 15
图 3.11 管理自己任务的界面需求分析 16
图 3.12 管理过程变量粒度权限的界面需求分析 16
图 3.13 任务详细信息的界面需求分析 16
图 3.14 创建过程的界面需求分析 17
图 3.15 任务相关信息的界面需求分析 17
图 3.16 活动列表的界面需求分析 18
图 3.17 可视化软件 过程 建模用例图 18
图 4.1 Web 层框架 21
图 4.2 页面组织结构 22
图 4.3 界面框架图 24
图 4.4 页面关系图 26
图 5.1 Facelets 命名空间导入 27
图 5.2 Facelets 定义逻辑区域 27
图 5.3 Facelets 替换逻辑区域 27
图 5.4 UI 自定义组件 28
图 5.5 JSF 请求处理阶段和转换器 29
图 5.6 Seam 中的验证器和消息 29
图 5.7 JSF 请求处理阶段和验证器 30
图 5.8 黑白主题和中文语言 30
图 5.9 默认主题和英文语言 31
图 5.10 设计器获取节点的时序图 31
图 5.11 设计器保存文件的时序图 32
图 5.12 设计器类和包关系图 32
图 5.13 设计器类图 33
图 5.14 可视化的软件过程建模设计器 35
图 5.15 编辑用户信息 35
图 5.16 管理 用户信息列表 36
图 5.17 当前登录用户维护自己的帐号 36
图 5.1 8 创建项目 36
图 5.1 9 项目列表及管理 37
图 5.20 项目信息及成员管理 37
图 5.21 过程模板列表及项目成员角色管理 38
图 5.22 上传软件过程建模模板 38
图 5.23 过程的开始活动节点 39
图 5.24 开始节点下的任务、任务模板及可 选分支 39
图 5.25 过程的第一个活动节点 39
图 5.26 第 一 个活动节点下的任务模板及可选分支 39
图 5.27 过程的第二个活动节点 40
图 5.28 第二个活动节点下的任务模板及可选分支 40
图 5.29 过程的结束活动节点 40
图 5.30 结束活动节点下的任务模板及结束选项 40
图 5.31 过程列表 40
图 5.32 创建 任务及人员分配 41
图 5.33 当前登录用户的任务 41
图 5.34 过程变量的权限 管理 41
图 5.35 任务详细信息 42
图 5.36 创建 过程 42
表格目录
表 1.1 2009 年编程语言排行 4
表 3.1 系统功能需求表 11
表 3.2 连接两个活动节点的用例描述 18
表 3.3 移动节点的用例描述 18
表 3.3 创建活动节点的用例描述 19
表 3.4 创建过程名称的用例描述 19
表 3.5 添加角色的用例描述 19
表 3.6 删除角色的用例描述 19
表 3.7 移动线的用例描述 20
表 3.8 生成 XML 文档的用例描述 20
表 3.9 删除所有节点和线的用例描述 20
表 3.10 节点和线的重命名的用例描述 20
表 4.1 Web 层接口设计 22
表 4.2 控件使用说明表 23
表 4.3 保留字列表 24
表 4.4 界面设计简介表 25
表 5.1 系统功能测试列表 34
12
BeyondTrack 软件过程支撑环境
—— Web 层 设计 及 实现
李 丽媛
摘要: 在这个技术飞速发展、竞争日益激烈的社会中,交互性 Web 系统显得格外重要 ; 面对 众多 软件公司,想要从根本上提高效率,软件过程支撑环境是必不可少的。 Java EE 能快速开发和实现 Web 系统 , 并且 便于扩展 、 方便管理和维护 ; JSF 能简化编程,具有 Seam 、 Facelet s 等优秀框架的支持。 本文 主要阐述了 BeyondTrack 软件过程支撑环境 Web 层设计及实现。该系统采用 界面驱动 和 UCD ( User-Centered Design )模型 相结合的开发方式,功能包括: 可视化的软件过程建模 , 软件过程流控制 , 自定制过程变量 , 过程变量粒度的权限管理 , 过程任务、参与者管理 , 基于 Wiki 的文档管理 和 追踪过程事件历史 。 Web 层采用 JSF 界面 框架 与 Seam 应用框架、 Facelets 模板框架相结合来实现 , 具有操作 界面一致 、 配置 简洁、 本地化、多主题和多语言 的 特性;可视化的软件过程建模使用跨平台的 JApplet 实现,保证了用户安全性,易于用户使用; 结合用户体验对底层的接口进行封装 ,完成 系统 的 整合 与 测试 。 整个软件过程支持环 境 逻辑与实现分离 , 具有丰富的用户体验, 易 于维护和扩展。
关键词: JSF 、 Seam 、 Java EE Web 层、软件过程支撑环境
BeyondTrack : the Supporting Environment of Software Process
- The Design and Implement ation of Web Layer
LI, Liyuan
Abstract I n an increasingly competitive society with the rapid development of information technology , interactive Web system is particularly important . T here are many software companies which want to fundamentally improve the efficiency of application development . So a support ing environment of software process is essential in achieving this. Java EE can achieve the quick develop ment of web systems and facilitate the extension and maintenance of these applications. JSF ( Java Server Faces ) can realize the simplif ication of programming, with these excellent framework s of Seam, Facelets and so on. T his paper represents the design and implementation of BeyondTack’ s web layer. The development method of system adopts both interface-driven and UCD ( User-Centered Design ) model . This system includes these functions of visual software process modeling , the control of software process flow, the customiz ation of process variab les , permission management of process variable-scoped , the management of process tasks and actors, the Wiki-based document management and tracking the events of process history . The w eb layer us es JSF ’ s interface framework, Seam ’ s application framework and Facelets ’ s template framework , a nd it has these features of a consistent user interface, simplified configuration , localiz ation , multi-them es and multi-language s. V isual software process modeling is implemented by the cross-platform ’ s JApplet , which ensure s user ’ s security and usability . And the ultimate user experience combined with encapsulates the lower interfaces , complete system integration and test . T he entire supporting environment of software process has logic separation from its implementation , rich user experience , and easy to do maint e n ance and extension .
Key Words JSF, Seam, Java EE Web tier, Software Process Support ing Environment
在这个技术飞速发展、竞争日益激烈的社会中,具有交互性的系统,尤其是企业级 Web 应用系统显得格外重要。在一些科技发达的国家中,人们越来越多的依赖电子设备获取大量信息和服务,他 们每时每刻都离不开这些信息技术,并且变得更加的依赖。今天,人们对这些技术所展现出来的交互情况有了新的期待和要求,他们希望这些交互性系统能够像桌面 应用程序一样简单实用。看到了人们如此的期待, IT 届各位大头纷纷推出各种 Web 技术和产品。 Web UI 技术也因此开始不断的发展,企业级 Web 应用系统也拥有了越来越多的 UI 交互功能,其特征也越来越接近桌面应用软件。
一个成功的企业级 Web 应用系统,界面丰富的表现是 必 不 可少的,但效率,安全性能和服务器等方 面也是不可低估的。 如果你已经在这个领域中工作,你就应该知道当今 企业级 Web 应用系统 的 要求非常高,必须设计、编译并产生 符合 企 业级 Web 应用 标 准的 程序,以缩减所需资金、获 取 更 高速度并减少所需资源。为了缩减开发成本,快速跟踪企业应用的设计和开发, Java EE 技术提供了基于组件的设计方法 —— 开发、集成、部署应用程序。 Java EE 平台提供了多层分布式应用模式 ; 一些可重用的组件 ; 一 个统一的安全模型 ; 灵活的事务控制 ; 借助基于可扩展标记语言( XML )的开放标准和协议的集成数据交换提供 Web 服务支持 [1] 。而面对 Java EE 的 Web 层, JSF 又是其中 的佼佼者,它不仅简化编程,提高效率,还具有丰富的组件等等一系列 优点。 它们 逻辑与实现分离, 达到代码清晰,结构分明,易于修改、维护、 复用 、 控制和延展的目的。能为基于组件驱动的 Web 编程提供支持;为业务组件化奠定基础; 使 开发人员 只 关 注某一层,分工明确,提高开发速度; 让 接口被模块调用,减少重复开发, 可 用新 的 实 现替换原有实现; 令 模型不依赖于视图,当用户界面更改时不会影响模型。 因此 可 见 ,在除技术之外的相等条件下,选择 JSF 作为 Java EE Web 层的主流技 术, 无论在成本 、 性 能和时间上都 将具有无可比拟的优势。这样一个企业级 Web 应用系统失败的概率就远远 降 低,乃至为零了。
另外,在当今 IT 公司层出不穷的现状中,想要与时 间和金钱赛跑,赢在所有人的前面,软件过程支撑环境是必不可少的。不论在国内还是国外,一个 从本质上提高效率和质量, 运营良好, 有高额利润的 IT 公司都在某种程度上 都 具备一定规模的软件过程支撑环境。它 不仅能 减少沟通成本、 节省大量时间,还可以看到整个生产线所存在的问题,以便及时 的进行 改进。
因此,针对以上现实情况。使用 基于 Java EE 来实现软件过程支撑环境 ,并使用 JSF 进 行 Web 层的实现 是可行的,并且具有重要 意义。
结合表 1.1 和 图 1.1 [14] ,我们不难看出无论在国内还是国外, Java 和 JSF 在技术选型方面都占 有 非 常重要的优势和地位。
表 1 .1 2009 年编程语言排行
2009 年 4 月排名 |
2008 年 4 月排名 |
编程语言 |
百分比 |
1 |
1 |
Java |
19.431% |
2 |
2 |
C |
15.471% |
3 |
3 |
C++ |
10.741% |
4 |
4 |
PHP |
9.888% |
5 |
5 |
(Visual)Basic |
9.097% |
6 |
7 |
Python |
6.080% |
7 |
8 |
C# |
4.059% |
8 |
9 |
JavaScript |
3.678% |
9 |
6 |
Perl |
3.462% |
10 |
10 |
Ruby |
2.569% |
图 1 .1 2005 年至 2008 年编程技术岗位需求
至于软件过程支撑环境, 要么是价格昂贵 , 性能稳定 ,为整个软件过程 提供支撑的环境;要么是性能低下 ,价格 便宜或免费的 只涵盖了软件过程中某一部的支撑环境。 对于 落 实方面,国内外有 着明显的 差别。在国外,软件企业都注重落到实处,能从中取得根本上的突破。可是在国内,许多软件企业进行过 程改进只是为了通过 CMM 的认证,往往忘却了提高软件质量和生产力这一根本目的 [1 5 ] 。
了解 Java EE 中 Web 层的概念;根据需求和底层提供的接口 结合 UCD 模 型 进行 Web 层的设计;使用 JSF 、 Seam 等技术进行 Web 层 的实现;与底层结合后进行系统的整合 及 测试 , 并逐步完善。
JSF 页面导航,事件驱动,转换器,验证器,安全性能,自定义组件, EL 表达式,生命周期,国际化和本地化,组件模型,动态主题切换, Renderer 等方面的技术研究及应用; JSF 与 Facelets 和 Seam 相结合的意义;根据使用体验和收集的资料对 JSF 进行客观的评价和展望。
使用 JApplet 编写一个设计器,以便帮助用户对软件过程建模进行可视化的设计;根据设计结果生成符合软件过程定义语 言规范的 XML 文档。
本论文主要介绍了 BeyondTrack 软件过程支撑环境 Web 层 的设计和实现 。主要为 五 个 章节。第一章介绍了项目背景,项目研究的内容和意义。第二章对项目中使用到的技术进行简要的介绍,主要包括了 JApplet , JSF , Seam , Maven , UCD 模型, Java EE 分层模型和软件过程 支撑环境。 第三章对整个 系统的功能需求进行了简要的描述,并介绍了 需求从 获 取到 分析 的整个过程 。 第 四 章 详细介绍了 Java EE 中 Web 层的设计,主要分为 Web 层 概要设计和界面设计两 大部分进行阐述。最后一章介绍了 Java EE 中 Web 层的实现,综述了 JSF 、 Seam 、 Facelets 等技术在 Web 层 中的详细实现; 界面测试 和 系 统应用实例。 最后针对本次项目的研究内容进行总结和 展望 并 对项目 作出下一步的发展计划 。
JApplet 是运行在 Web 浏 览器中的 Java 小应用程序,是 java.applet.Applet 的一个子类,添加了对 JFC/Swing 组件架构的支持 [16] 。 能 完全跨平台兼容;安全性能高;具有面向对象的概念; 其 可 扩展性 能 提高二次开发速度;可自动更新版本和下载插件。 其生命周期参见图 2.1 。
图 2.1 JAp p let 生命周期
JSF 是 Java Web 应用程序的用户界 面框架 [4 ] ,其生命周期参加图 2.2 。 它 具 有简化编程,提高效率; 遵循模型 - 视图 - 控制器( MVC ) 模式;提供事件驱动的页面导航模型;使用了 POJO ,控制反转( IoC )技术 ; 其 标准规范和大量第三方组件库的支持能让 Web 应用具有类似桌面程序功能 等优点 。 但 也 存在学习曲线高;组件供应商不 可能 提供所有想要的组件;自定义组件编写过于麻烦;东西 过多多乱 ;程序员和美工之间协作困难的 缺点 。幸运的是有 Facelets 和 Seam 这样优秀的框架为其弥补。
图 2.2 JSF 生命周期
Facelets 是构建在 JSF 标 准之上的一个视图处理模板框架,提供以 JSF 为核心且不依赖于 JSP 的视图技术 [5 ] 。 优点如下: 纳入 了 JSR314 [17] 规范; 模板化;详细的错误报告;不需要 XML 配置文件;为 HTML 标准元素提供 jsfc 属 性 , 使其在编译时转换为 JSF 组 件;复合组件;定制的逻辑标记;表达式语言;对设计师友好的页面开发;创建组件库;支持任何 JSF 渲染器; API 不依赖 web 容器。
Seam 是一种企业级 Java 的 应用程序框架 [3] , 其 框架参见图 2.3 。 它 能 与 JSF 完美结合,弥补其不足之处;简化 EJB 3.0 的开发;深度结合 jBPM ,减少开发时间;扩展的持久化上下文 , 简化开发;使用注解简化 XML 的配置;自动化集成测试;开放性标 准与开源的结合 。 但它在 Tomcat 中部署,每一次改动都需要重新编译和部署 。
图 2.3 Seam 框架
Maven 是一个项目管理工具,它包 含了一个项目对象模型( Project Object Model ),一组标准集合,一个项目生 命周期( Project Lifecycle ),一个依赖管理系统( Dependency Management System ) 和 用来运行定义在生命周期阶段( phase )中插件( plugin )目标( goal ) 的逻辑 [ 6 ] , 其 生命周期 参见图 2.4 。 它 拥有 标准的项目布局和项目结构生成器;标准的依赖管理机 制;多项目支持;在开发者需要的时候及时地下载新的插件和功能部件;生成最新项目信息的网站;集成了源代码控制软件: CVS 和 Subversion ;内置的编译和 打包应用的任务;与 Jetty 、 cobertura 、 pmd 、 findbugs 集成 等优点 。 但你有可能下载到破损的版本、插件和 错误文档,需要 一定的时间和知识积累来学习,不过总的看来 它是非常优秀的。
图 2.4 Maven 生命周期
把设计用户体验的工作分解成各个要素,贯穿到 UCD 模型中的每一层。 UCD 模 型分为五层,从下到上依次分为战略层(用户需求、网站目标),范围层(功能规格、内容需求),结构层(交互设计、信息架构),框架层(界面设计、导航设 计、信息设计)和表现层(视觉设计) [ 9] ,其模型参见图 2.5 。 UCD 设计伴随着整个软件的生命周期 ; 从 中打破了以往传统的设计方法 ; 能够使项目建立在需求稳定的基础上 ; 满足用户的体验和需求 ; 使 项目达到最大的收益。
图 2.5 UCD 模型
对于企业应用程序, Java EE 平台使用分布式多层应用程序模型 ,能 根据功能将应用程序逻辑分成一些 组件 。 组成 Java EE 应用程序的各种应用 组件 应 根据应用程序组件在 Java EE 环境中所属的层次,将这些组件安装在不同的计算机上 [1] 。如图 2.1 所示:
图 2 . 6 Java EE 多层应用 框架
软件过程是指软件生命周期中所涉及的一系列相关 过程,主要包括了管理过程、支持过程和培训过程等;其中过程又是由许多的活动组织而成,主要包括需求、设计、实现、确认和支持等活动; 其中活动又是由很多任务构成的,任务是把输入转换成输出的原子操作 [11] 。
在整个软件过程中,需要对其进行静态的描述,从而获得软件过程模型。然后才能针对该模型进行不断的修改,使其逐渐演化成一个最终的应 用系统。在这一过程中,我们需要根据现有的各方面资源进行适当合理的任务安排、计划、执行和总结。只有进行这样的控制,才能提高软件 的 生 产质量和生产效率。在这个过程中,想要单纯靠人来管理是很困难的。起初,人们只能依靠文档的保存来进行记录、跟踪;随着人类不断的进步和网络的不断发展, 软件过程支撑环境被逐 步提上了这个舞台。一个良好的软件过 程支撑环境能帮助人们在软件过程生产中大大提高效率。这主要取决于它能够提供文档、代码、设备、人力等整套的管理;能 跟踪到软件过程中所有最细粒度的任务;能 够 把 每一个活动根据上下文进行关联,符合人类的思考行为。这样一来便能节约大量的时间;减少程序员之间不必要的沟通;方便人员 的 管 理。从而达到提高软件生产质量和软件生产效率的最终目的。
ByondTrack 是一个基于 Java EE 平台的 B/S 结构的软件过程支撑环境。在该环境下,使用者可以进行: 可视化的软件过程建模;软件过程流控制;自定制过程变量; 过 程变量粒度的权限管理;过程任务、参与者 的 管 理;基于 Wiki 的文档管理;追踪过程事件历史。 其功能需求概要请 参见表 3.1 。
表 3.1 系统功能需求表
用户视图 |
功能说明 |
系统管理员 |
维护自己的账户信息 |
增删改用户 |
|
管理用户角色(项目经理、一般用户) |
|
管理用户帐号的使用状态 |
|
项目经理 |
维护自己的账户信息 |
创建和修改项目 |
|
可视化的软件过程建模 |
|
上传建模好的文档到已有 的 项目 中 |
|
在已有项目中增加和删除成员 |
|
在已有项目中根据建模的角色,对成员进行角色上的赋予或删除 |
|
在已有项目中根据所建模的过程变量进行权限管理(查看、修改) |
|
在已有项目中根据所建模的文档创建 流程 |
|
在已有项目中根据所建模的任务创建 新任务并分配给相关人员 |
|
在已有项目中对每一个任务的进度进行跟踪 |
|
在已有项目中控制所创建的流程流向和进度 |
|
一 般用户 |
维护自己的账户信息 |
管理 分配给 自己的任务 |
|
修改任务的下面的变量值和任务进度 |
|
追踪分配给自己的任务 |
本系统使用 界面 驱动 的 方式来进行 需求分析 。 根据公司 初步需求,用 Axure 软件绘制出 原型。经过迭代 和 需求 获取 的 深入, 细节性的需求同步更新到原型上 。 当 原型和 公司 所描述的需求 大致相同时 , 就从软件实现的角度出发进行一系列的设计 。
利用界面 驱动的需求分析 可以 获取 正 确 完整 的 需 求和设计 ;使 用户感性地认识系统 ,作出快速 准确 的 判 断 ; 提高软件系统 的 友好性 ; 降 低系统实施成本 ; 将客户需求明确化,消除异解。 本系统 的 界面驱动需求分析 结果 如下:
内容太多,我已上传到csdn上面,地址找不到了,⊙﹏⊙b汗。。。
估计是还没审核吧。