eGov电子政务系统概要设计说明书1引言1.1编写目的此文档对eGov电子政务系统概要设计进行说明。预期的读者有(甲方)的需求提供者、项目负责人、相关技术人员等,北京亚思晟商务科技有限公司(乙方)的项目组成员,包括项目经理、客户经理、分析设计开发测试等人员。1.2背景eGov电子政务系统是基于互联网的应用软件.在研究中心的网上能了解到已公开发布的不同栏目(如新闻,通知等)的内容.各部门可以发表栏目内容(如新闻,通知等),有关负责人对需要发布的内容进行审批。其中:有的栏目(如新闻)必须经过审批才能发布,有的栏目(如通知)则不需要审批就能发布。系统管理人员对用户及其权限进行管理。1.3定义无1.4参考资料eGov电子政务系统需求规格说明书eGov电子政务系统详细设计说明书2总体设计2.1需求规定eGov电子政务系统按模块可以分成三部分,一是一般用户浏览的内容管理模块,二是系统管理,三是内容和审核管理,而它们各自又有具体的小模块组成。具体需求见eGov电子政务系统需求规格说明书。2.2运行环境操作系统:Win2003/XP,LinuxWEB服务器:Tomcat5.5以上数据库服务器:MySQL5.0以上,能够处理数据并发访问,访问回馈时间短。2.3基本设计概念1.系统整体方案(1)eGov电子政务系统主要特性我们从以下五个方面确定目标系统特性如下:用户界面的复杂度:数据的静态显示/可定制视图(customizableview)用户界面的部署约束:基于独立的桌面电脑或专用工作站的浏览器用户的数量和类型:组织内的日常使用者,总共几百人系统接口类型:通过HTTP协议提供服务,未来可以使用SOAP的SOA技术性能:主要是独立的数据更新,有少量并发处理从上述特性我们可以判断eGov电子政务系统属于中大型项目,因此我们使用基于Struts-Spring-Hibernate框架的分层架构设计方案。(2)架构分层在eGov电子政务项目架构设计中,我们使用分层模式。具体地说,我们将eGov电子政务系统应用在职责上分成3层:表示层(PresentationLayer)、持久层(PersistenceLayer)和业务层(BusinessLayser)。每个层在功能上都应该是十分明确的,而不应该与其他层混合。每个层要相互独立,通过一个通信接口而相互联系。(3)模式和框架使用:在分层设计基础上,我们将使用设计模式和框架,这些是可以重用的资产。1)MVC模式MVC模式就是一种很常见的设计模式。所谓的MVC模式,即模型—视图—控制器(model—view--controller)模式。其结构图如下:图4-1MVC架构图1、Model端在MVC中,模型是执行某些任务的代码,而这部分代码并没有任何逻辑决定用户端的表示方法。Model只有纯粹的功能性接口,也就是一系列的公共方法,通过这些公共方法,便可以取得模型端的所有功能。2、View端在MVC模式里,一个Model可以有几个View端,而实际上多个View端是使用MVC的原始动机。使用MVC模式可以允许多于一个的View端存在,并可以在需要的时候动态注册所需要的View.3、Controller端MVC模式的视图端是与MVC的控制器结合使用的。当用户端与相应的视图发生交互时,用户可以通过视窗更新模型的状态,而这种更新是通过控制器端进行的。控制器端通过调用模型端的方法更改其状态值。与此同时,控制器端会通知所有注册了的视图刷新用户界面。那么,使用MVC模式有哪些优点呢?MVC通过以下三种方式消除与用户接口和面向对象的设计有关的绝大部分困难:ViewModelController1、控制器通过一个状态机跟踪和处理面向操作的用户事件。这允许控制器在必要时创建和破坏来自模型的对象,并且将面向操作的拓扑结构与面向对象的设计隔离开来。这个隔离有助于防止面向对象的设计走向歧途。2、MVC将用户接口与面向对象的模型分开。这允许同样的模型不用修改就可使用许多不同的界面显示方式。除此之外,如果模型更新由控制器完成,那么界面就可以跨应用再使用。3、MVC允许应用的用户接口进行大的变化而不影响模型。每个用户接口的变化将只需要对控制器进行修改,但是控制器包含很少的实际行为,它是很容易修改的。面向对象的设计人员在将一个可视化接口添加到一个面向对象的设计中时必须非常小心,因为可视化接口的面向操作的拓扑结构可以大大增加设计的复杂性。MVC设计允许一个开发者将一个好的面向对象的设计与用户接口隔离开来,允许在同样的模型中容易地使用多个接口,并且允许在实现阶段对接口做大的修改而不需要对相应的模型进行修改2)框架根据项目特点,我们使用三种开源框架:表示层用Struts;业务层我们用Spring;而持久层则用Hibernate。如图1-1所示。图1-1Struts-Spring-Hibernate架构1表示层一般来讲,一个典型的Web应用的前端应该是表示层。这里可以使用Struts框架。下面是Struts所负责的:管理用户的请求,做出相应的响应提供一个流程控制器,委派调用业务逻辑和其他上层处理处理异常为显示提供一个数据模型用户界面的验证以下内容,不该在Struts表示层的编码中经常出现,与表示层无关的。与数据库直接通信与应用程序相关联的业务逻辑及校验事务处理在表示层引入这些代码,则会带来高耦合和难以维护的后果。2持久层典型的Web应用的后端是持久层。开发者总是低估构建他们自己的持久层框架的挑战性。系统内部的持久层不但需要大量调试时间,而且还经常因为缺少功能使之变得难以控制。这是持久层的通病。幸运的是,有几个对象/关系映射(Object/RelationMapping,ORM)开源框架很好地解决了这类问题,尤其是Hibernate。Hibernate为Java提供了持久化机制和查表示层业务层持久层询服务,它还给已经熟悉SQL和JDBCAPI的Java开发者创造了一个学习桥梁,使他们学习起来很方便。Hibernate的持久对象是基于POJO(PlainOldJavaObject)和Java集合(collections)的。此外,使用Hibernate并不妨碍你正在使用的IDE(IntegratedDevelopmentEnviroment)。下面是Hibernate所负责的:如何查询对象的相关信息。Hibernate是通过一个面向对象的查询语言(HQL)或者正则表达的API来完成查询的。HQL非常类似于SQL,只是把SQL里的table和columns用Object和它的fields代替。HQL语言容易理解且文档也做得很好。HQL是一种面向对象查询的自然语言,很容易就能学会它。如何存储、更新、删除数据库记录。如Hibernate这类的高级ORM框架支持大部分主流数据库,并且支持父表/子表(Parent/child)关系、事务处理、继承和多态。3业务层一个典型Web应用的中间部分是业务层或者服务层。从编码的视角来看,这层是最容易被忽视的一层。我们往往在用户界面层或持久层周围看到这些业务处理的代码,这其实是不正确的。因为它会造成程序代码的高耦合,这样一来,随着时间推移,这些代码将很难维护。幸好,针对这一问题有好几种框架(Framework)存在。最受欢迎的两个框架是Spring和PicoContainer。这些也被称为轻量级容器(microcontainer),它们能让你很好地把对象搭配起来。这两个框架都着手于“依赖注入”(dependencyinjection)(还有我们知道的‘控制反转’InversionofControl=IoC)这样的简单概念。这里我们将关注于Spring的依赖注入和面向方面编程。另外,Spring把程序中所涉及到的包含业务逻辑和数据存取对象(DataAccessObject)的Objects——例如transactionmanagementhandler(事务管理控制)、ObjectFactoris(对象工厂)、serviceobjects(服务组件)——都通过XML来配置联系起来。下面是业务层所负责的:处理应用程序的业务逻辑和业务校验管理事务提供与其他层相互作用的接口管理业务层级别的对象的依赖在表示层和持久层之间增加了一个灵活的机制,使得他们不直接联系在一起通过揭示从表示层到业务层之间的上下文(Context)来得到业务逻辑(businessservices)管理程序的执行(从业务层到持久层)2.UML视图(1)Use-caseDiagram:如图所示。(2)class-Diagram:如图所示。2.4结构1.一般用户浏览的内容管理模块:首页显示及其他页面2.系统管理模块:a)登录b)栏目业务设置c)栏目权限设置d)用户管理设置3.内容管理和审核模块a)内容管理(新闻的显示,编辑,修改,屏蔽,删除,通知的显示,编辑,修改,删除)b)内容审核(新闻审核)2.5功能需求与程序的关系各项功能需求的实现同各块程序的分配关系如下所示:程序1(Action)程序2(BusinessService)程序3(DAO)内容管理和审核模块1内容管理(新闻)NewsActionINewsServiceImpl/INewsServiceINewsDAOImpl/INewsDAO2.内容审核(新闻)NewsActionINewsServiceImpl/INewsServiceINewsDAOImpl/INewsDAO3内容管理(通知)NoticeActionINoticeServiceImpl/INoticeServiceINoticeDAOImpl/INoticeDAO电子政务系统管理一般用户浏览内容管理等栏目权限用户管理栏目设置内容管理内容审核系统管理模块………………1登录LoginActionIUserServiceImpl/IUserServiceIUserDAOImpl/IUserDAO……………………一般用户浏览………………2.6人工处理过程无2.7尚未解决的问题无3接口设计3.1用户接口用户接口以基于浏览器的图形用户界面(GraphicUserInterface,GUI)的方式提供,具体见页面导航图(静态页面设计)。3.2外部接口本系统同与已有的办公自动化(OA)系统之间有数据交换。3.3内部接口BusinessService接口DAO接口InewsServiceINewsDAOInoticeServiceINoticeDAOIuserServiceIUserDAO…………接口描述1、IUserService接口类提供一下方法:publicUsruserLogin(Stringusername,Stringpassword);目标:用户登录参数类型说明usernameString用户登陆帐号passwordString用户登陆密码主要流程描述:用户提交请求,在Action中调用该方法,传入用户输入的帐号和密码,到数据库读取,如果有此用户且密码对应,返回该用户,登陆成功。否则返回null,登陆失败。2、INewsService接口类提供以下方法:publicListselectSQL(Stringsql,Object[]value);目标:根据SQL语句查询参数类型说明sqlString执行查询的hql语句valueObject[]hql语句中的参数值主要流程描述:在Action中写好hql语句,把参数写入一个Object数组中,然后调用该方法,传入hql和Object类型数组,执行查询,返回List类型集合。publicvoidaddObject(Objectobj);目标:添加方法参数类型说明objObject需要保存的数据对象主要流程描述:在Action中创建JavaBean的对象,调用该方法,传入该对象,执行保存。publicvoidupdateObject(Objectobj);目标:修改方法参数类型说明objObject需要修改的数据对象主要流程描述:在Action中查