1、BBS 论坛概要设计说明书编写人(签字): 日期: xxxx 年 xx 月 xx 日用户方项目代表(签字): 日期: xxxx 年 xx 月 xx 日开发方项目代表(签字): 日期: xxxx 年 xx 月 xx 日质量保证 代表(签字): 日期: xxxx 年 xx 月 xx 日目 录第一章 引言 51.1编写目的 51.2背景 51.3定义 61.4参考资料 6第二章 总体设计(系统架构设计) 72.1需求规定 72.2运行环境 72.3基本设计概念和处理流程 82.3.5总体架构设计 2.4 系统结构(系统各个组件设计) 122.4 系统结构(系统各个组件设计) 13第三章 系统数据结构
2、设计 .193.1数据库逻辑结构设计 .193.2数据库物理结构设计 .26第一章 引言1.1 编写目的本文档作为 BBS 的概要设计说明文档,用于与用户确定最终的目标,并成为协议文本的一部分,同时也是本系统设计人员的基础文档。1.1.1 概要设计说明书目的本概要设计说明书说明了 BBS 论坛系统设计的整体结构。1.1.2 预期读者本系统开发人员及维护人员。1.2 背景BBS 论坛,或者称为社区,是电子商务网站中一种常见功能,也是互联网上一种极为常见的互动交流服务。它为上网用户提供了也各自由的讨论区。通过论坛可以向用户提供开放性的分类专题讨论区服务,同时注册的用户可以根据需要在论坛上发表文章,
3、交流技术经验,或者提出问题并表达自己的观点。不仅如此,上网的用户还可以在论坛中看到他人发表的文章,并且能够对该文章进行评论。一般情况下,BBS 按不同主题分为多个布告栏,其设立多是依据使用者的要求和喜好,但多具有信件交流、软件交流、信息发布等功能。 目前,大部分 BBS 由教育机构、研究机构或商业机构管理,大多有自己的拨入电话号码,用户只需电脑、调制解调器和电话线就可通过电话拨号登录 BBS 站点。1.2.1 待开发软件系统的名称BBS 论坛系统1.2.2 项目的任务提出者1.2.3 项目的任务开发者1.3 定义1.3.1 本文档中涉及的专业词汇1、GB:中华人民共和国国家标准的英文缩写字母2
4、、构件:具有某种功能的可重用的软件模版单元,表示了系统中主要的计算元素和数据存储。3、逻辑视图:描述支持系统的功能需求的视图。4、开发视图:也称模块视图,主要侧重于软件模块的组织和管理描述。1.3.2 名词说明1、BBS:Bulletin Board Service2、JSP(JavaServer Pages)JSP技术使用 Java编程语言编写类 XML的 tags和 scriptlets,来封装产生动态网页的处理逻辑。网页还能通过 tags和 scriptlets访问存在于服务端的资源的应用逻辑。JSP 将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于 Web的应用程序的
5、开发变得迅速和容易3、Struts 只是一个 MVC 框架(Framework )它用于快速开发 Java Web应用。Struts 实现的重点在 C(Controller),包括ActionServlet/RequestProcessor和我们定制的 Action,也为 V(View)提供了一系列定制标签(Custom Tag) 。但 Struts几乎没有涉及 M(Model),所以 Struts可以采用 JAVA实现的任何形式的商业逻辑。1.4 参考资料1、本软件项目规划依据标准为国家表准:GB856T88;2、技术参考资料(1)J2EE 项目实训 Hibernate框架技术(21 世纪高
6、等学校实用软件工程教育规划教材)杨少波 等编著 清华大学出版社 2008 年 5月(2)J2EE 项目实训 Spring框架技术(21 世纪高等学校实用软件工程教育规划教材)杨少波 等编著 清华大学出版社 2008 年 5月(3)J2EE 项目实训 UML及设计模式(21 世纪高等学校实用软件工程教育规划教材)杨少波 等编著 清华大学出版社 2008 年 5月(4)J2EE 项目实训 Struts框架技术(21 世纪高等学校实用软件工程教育规划教材)杨少波 等编著 清华大学出版社 2008 年 10 月第二章 总体设计(系统架构设计)2.1 需求规定2.1.1 输入输出要求界面风格:要求整体界
7、面美观,有清晰的层次感,布局简洁、合理。同时保证后台的管理页面和前台的服务页面保持风格的一致。2.1.2 时间要求时间需求:在软件方面,响应时间,更新处理时间都比较快且迅速,系统响应时间不能超过 20秒。 2.1.3 灵活性要求灵活性:当用户需求,如操作方式,运行环境,结果精度,数据结构等其他软件接口等发生变化时,设计的软件能做出适当调整,灵活性非常大。2.2 运行环境2.2.1 设备1、主机类型如表 2-1表 2-1 主机类型类别 服务器标准配置CPU Intel 奔腾 P4 2。0GHz 以上内存 256MB,最好 512MB 以上硬盘 120G 以上其他 无特殊要求2、网络类型:百兆高速
8、局域网3、存贮器容量:大容量存贮器4、其他特殊设备:网络打印机,复印机2.2.2 支撑软件1、操作系统: Windows 20032、数据库管理系统:MySQL 以上版本数据库3、其他支撑软件:J2SDK1.5 及以上版本4、应用服务器:Tomcat 5.0 以上2.3 基本设计概念和处理流程2.3.1 系统概述1、系统采用基于 J2EE的轻量级 B/S架构体系BBS网上论坛系统采用 B/S架构(浏览器/服务器)模式来实现。考虑到系统应用性、安全性、可扩展性与可维护性,决定采用基于 J2EE的轻量级架构体系。其体系结构图如下所示: 2、为什么对本项目要应用轻量级的框架技术轻量级容器的设计目标是
9、为了能够避免如下所有这些麻烦事情,基于以下的各个优点,我们决定在本项目中采用轻量级的框架技术。 侵略性的 API(代码依赖于 EJB) 对容器的依赖(代码不能在 EJB 容器之外工作) 只提供固定的一组功能,不具备配置能力 启动时间长 部署过程取决于特定的产品,无法通用2.3.2 系统架构示图1、本论坛系统的整体架构设计为 Struts +Spring +hibernate 架构组成(1)对于表示层经验表明,最好的方法是选择已存在的并已得到证明了的 Web应用框架,而不是自己去设计和开发新的框架。我们拥有多个可选择的框架,如 Struts,WebWork 和 JSF等,在本项目中,我们选择采用
10、Struts。(2)EJB 和 POJO都可以用来创建业务逻辑层如果应用是分布式的,采用具有 remote接口的 EJB是一个好的选择;由于本系统是一个典型的不需要远程访问的 Web应用,因此选用 POJO,并充分利用 Spring 框架的 IoC和 AoP的特性,将是实现业务逻辑层的更好选择。(3)在持久层中由于需要利用关系型数据库实现数据的持续化,但在应用中可以存在多种方法可用来实现: JDBC:这是最为灵活的方法,然而,低级的 JDBC难以使用,而且质量差的 JDBC代码很难运转良好 EJB Entity beans:CMP 的 Entity bean是一种分离数据访问代码和处理 ORM
11、的昂贵的方法,它是以应用服务器为中心的方法,即 Entity bean不是将应用与某种数据库类型而是 EJB容器约束在一起。 O/R Mapping 框架:一个 ORM框架采用以对象为中心的方法实现数据持续化,一个以对象为中心的应用易于开发并具有高度的可移植性-在该领域中存在几个框架可用JDO、Hibernate、TopLink 以及 iBATIS 和 CocoBase等。在本项目中我们选用 Hibernate。2、架构示图本系统采用了多层非分布式的构架,上图展示了系统的分层以及每一层中所采用的技术和对应的框架,并且各层将存在于同一个 Web 容器中。3、该形式的总体架构设计的主要特点(1)遵
12、循 Sun J2EE中两个主要的原则:“多层架构、松藕合”由于采用分层的设计方式,各个模块功能相互独立封装,层与层之间关联少,保持松耦合连接,稳定性高,便于扩展和维护。(2)本项目中的每一层所采用的技术都是可替换的例如 Struts可以被 JSF或者 Tapestry替换掉,JDO 可替换 Hibernate。 在每个层中都不同程度地应用了 J2EE中常用的设计模式Struts(承担表示层和控制层的角色)Spring(利用IoC 进行各种对象的管理 )Hibernate(实现数据访问和 O/R Mapping)相互集成 对 DAO 进行管理Struts 表示层(JSP 和HTML)Struts
13、 控制层Spring 业务处理层Hibernate 数据访问层前端控制器类业务控制类业务处理基类业务接口 数据操作类数据连接类持久实体类数据访问服务数据访问操作业务处理类业务实体类 使用基于 POJO 的轻量级架构,从而使得系统易于测试;便于移植;“开发-发布”周期短。4、各层中的组件(1)表示层由 Struts JSP 组件实现,利用了 Struts 中的构造标签技术,在用户浏览界面利用表单构造网页的整体结构(2)控制层由 Struts 中的 ActionServlet 和 Action 组件实现,并利用 ActionForm 封装 JSP 页面中的表单。将页面整体作为对象处理,在相应的 A
14、ction 了中调用业务逻辑,完成业务功能。 前端控制层: ActionServlet 类,并且对它加以扩展。 业务中心控制层:各个业务 Action 类(标准 Action 类和 DispatchAction 类)(3)业务处理层由 Spring 中的 IoC 来管理 业务处理基类:将各个业务功能模块中共同的部分抽象出,从而完成一些共同的功能。 各个业务处理类:完成具体的应用功能的各个模块(4)数据访问层由 Hibernate 框架来提供技术支持 数据库操作(DAO)类:完成对数据库数据的相关操作(增、删、解、查询等) 。 数据持久(PO)类:针对应用系统中的各个数据库表提供对应的 POJO
15、 类2.3.3 各层中应用了相应的主流的 J2EE 框架技术1、服务器端表示层 Struts框架完成如下工作 客户端表单进入的验证; 管理请求和响应; 提供控制器来完成页面流转和向业务逻辑层的委托; 返回到客户端页面显示。其它:标签技术、MVC、成熟技术、ActionForm 技术等2、业务逻辑层 Spring框架完成如下工作 为服务器段表示层提供松散的耦合; 处理真实的企业级应用; 事务管理的选择; 协调各种业务逻辑对象之间的依赖关系; 为持久层和业务逻辑层之间提供松散耦合; 实现持久层的业务逻辑。其它: 解藕(类与类、系统本身脱离容器) AOP(统一地解决系统中一些“切面”-技术性的问题)
16、 IoC(对象的管理由容器完成) POJO(普通 JavaBean) -不继承框架中某个类 容器服务(事务、数据库连接池)-Spring 中已经提供了 包装其它的框架(简化)3、持久层 Hibernate框架完成如下工作 对数据库进行查询,得到持久化对象 PO; 对数据库进行添加、删除、修改的动作并以 PO 来进行。域模型层 VO 完成如下工作:为各层之间数据交互服务,同时也在持久层部分可以描述一个实体,并与 PO 进行转换。其它: 屏蔽数据库的差异性-数据库方言 以面向对象的数据库访问(减少了 SQL) 各种对象关系 O/R Mapping 实现 技术成熟-企业开发 统一的事务管理实现 提供
17、各种缓存技术以提高速度(性能)2.3.4 系统基于 MVC 设计 模型组件控制调度层表示层中的请求 业务处理层表示层中的业务成功显示数据访问层表示层中的业务失败显示2.3.5 总体架构设计MS SQLServer2000 数据库采用 Spring 中的IoC 来管理对象index.jsp userRegister.jsp UserLogin.jsp Messageindex.jspUserLoginForm MessageFormClassUserRegisterAction基于 Hibernate 技术的数据访问组件(DAO)MessageActionClassUserLoginAction
18、SearchBBS.jspUserRegisterFormBBSActionServlet自定义的标签用户BBSSearchActionBBSSearchForm ormClass视图助手组件UserException业务基类和面向业务接口编程各种具体的业务组件各种具体的业务组件各种具体的业务组件各种具体的业务组件Struts 中的各种标签库中的标签Faade 模式Template 模式DAO 模式View Helper 模式复合视图模式DTO 模式基于 DBCP 的数据库连接池2.4 系统结构(系统各个组件设计)2.4.1 体系结构包图(架构包图)2.4.2 组件设计图(系统中的各个组件)2
19、.4.3 类图与接口设计(各个组件中的相关的类和接口)1、数据访问层组件采用一个 DAO 组件实现数据访问操作分别采用不同的 DAO 组件实现数据访问操作2、业务处理层组件3、控制层组件4、表示层组件2.4.4 系统总体类图(以体现类之间的关系)第三章 系统数据结构设计3.1 数据库逻辑结构设计3.1.1 实体关系(Entity-Relationship)图1、逻辑图(Logic diagram)2、物理图(Physical diagram)3.1.2 数据库表的逻辑设计1、BBS 信息数据库表结构及数据字典定义表注意:对数据库表中的结构设计,最后应该给出下面的对每个字段的详细说明。字 段 名
20、 标 识 符 类型及长度 有无空值 主键BBS的 ID标识 id int(自动编号) 无 PKBBS作者 author vchar 无BBS标题 title vchar 无字段名 标识符 类型及长度 是否允许为空 主键主题 ID bbsID int 4 Not null PK主题作者 author nvarchar(20) Not null主题标题 bbsTitle nvarchar(20) Not null回复数 reply int 4 Not null发表时间 createTime nvarchar(20) Not null最后回复时间 lastUpdateTime nvarchar(20
21、) Not null内容 content ntext(16) Not null点击数 hits int 4 Not nullBBS 表情图片 iconID int 4所属类型 ID bbsTypeID int 4 Not null所属版块 ID boardID int 4 Not null用户 ID userID int 4 Not null是否为精华帖 bbsElite int 4是否置顶主题 bbsTop int 4是否禁止回复 bbsLock int 4所属类型:原创、转贴、问题、灌水、建议、种子、资料、下载2、BBS 回复信息表结构及数据字典定义表字段名 标识符 类型及长度 是否允许为
22、空 主键回复帖 ID replyID int 4 Not null PK所属主题 ID bbsID int 4 Not null回复作者 replyAuthor nvarchar(20) Not null回复时间 replyTime nvarchar(20) Not null回复表情 ID replyIconID int 4回复标题 replyTitle nvarchar(50) Not null回复内容 replyContent ntext Not null3、BBS 分类标题数据库表结构及数据字典定义表字段名 标识符 类型及长度 是否允许为空 主键版块 ID boardID int 4 N
23、ot null PK版块题目 boardTitle nvarchar(20) Not null版块内容 boardContent nvarchar(255) Not null版主 leaderName nvarchar(20)副版主 secLeaderName nvarchar(20)版块主题总和 allTopicNumber int 4版块当天帖子总和 todayTopicNumber int 4最后回复的时间 lastReplyTime nvarchar(20) Not null最后回复的作者 lastReplyAuthor nvarchar(20) Not null4、用户信息数据库表结
24、构及数据字典定义表字段名 标识符 类型及长度 是否允许为空 主键用户 ID userID int 4 否 PK用户名 username nvarchar(20) 否用户性别(男 0,女 1) userSex smallint(2) 否用户密码 userPassWord nvarchar(16) 否用户 Email userEmail nvarchar(50) 否用户取回密码问题 userPassAsk nvarchar(30) 否用户取回密码答案 userPassAnswer nvarchar(30) 否用户角色 userType tinyint(1) 否用户生日 userBirthday n
25、varchar(10)用户地址 userComeFrom nvarchar(50)注册时间 userRegister nvarchar(20) 否用户头像 userSign nvarchar(255)QQ 号 userQQCode nvarchar(15)用户签名档 userIdiograph ntext最后登录时间 userLastTime nvarchar(20) 否用户发表的主题数总和 userTopicCount int 4用户回复的主题数总和 userReTopicCount int 4用户被删的帖子总和 userDelTopicCount int 4用户被推荐精华帖总和 userE
26、liteTopicCount int 4用户登录次数 userLoadDegree int 4是否被禁言 userLock int 45、管理员的数据库表及数据字典定义表6、用户联系数据库表结构及数据字典定义表7、用户角色数据库表结构及数据字典定义表字段名 标识符 类型及长度 是否允许空 主键角色 ID roleID int 4 Not null PK角色名称 roleName nvarchar(20) Not null用户 ID userID int 4 Not null下面为说明在 Access中创建出各个数据库表之间的 E-R图的实现过程可以在 Access中创建除各个数据库表之间的 E-R图,首先选择“工具”-“关系”此时,将产生除“关系”菜单项目,然后选择其中的“编辑关系”菜单项目。在项目的对话框中选中我们所需要创建关系的各个数据库表最后点击“添加”按钮,将出现下面的图示选择“关系”菜单中的“编辑关系” 子菜单在对话框中选择“创建”按钮以创建新的关系分别选择主动表和被动表以及它们之间的关联字段(主-外键)最后点击“创建”按钮,将产生除下面的 E-R 图3.2 数据库物理结构设计