FAQs系统概要设计说明书.docx
《FAQs系统概要设计说明书.docx》由会员分享,可在线阅读,更多相关《FAQs系统概要设计说明书.docx(23页珍藏版)》请在冰豆网上搜索。
FAQs系统概要设计说明书
FAQs系统案例研究项目概要设计
第一部分、引言
1.1编写目的
本说明是盼盼安全防盗公司FAQs系统案例研究项目软件产品的总体设计和实现说明,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计和出错处理设计等,记录了系统整体实现上技术层面上的考虑,并且以需求说明作为依据,为程序的详细设计提供基础。
同时该文档将作为产品实现、特性要求和控制的依据。
软件开发小组的每一位参与开发成员应该阅读本说明,以清楚产品在技术方面的要求和实现策略,本手册将进行技术评审和技术的可行性检查,同时为下一步的详细设计说明提供框架。
1.2适用范围
本概要设计文档提供给系统设计开发人员,包括详细设计人员和项目组成员,不得提供给公司外人员。
1.3背景
说明:
A、软件系统的名称:
盼盼安全防盗公司FAQs系统案例研究项目
B、任务提出者:
盼盼安全防盗公司
开发者:
北大青鸟Aptech产品开发部
实现完成的系统将在盼盼安全防盗公司的技术支持、产品管理等部门使用,所应用的网络系统是该系统的内部局域网。
该公司的客户可通过互联网以多种方式浏览FAQs。
C、本系统将是独立的系统,目前不与盼盼安全防盗公司的财务系统和其他资料系统提供接口,所产生的输出都是独立的。
本系统将使用Oracle9iRelease2作为数据库存储系统,Oracle9iRelease2企业版将由盼盼安全防盗公司自行购买。
1.4定义
FAQs:
Frequentlyaskedquestions,常见问题解答;
JSP、JSPs:
JavaServerPages;
Servlet:
应用服务器程序;
FrontController:
一种J2EE程序的设计模式。
实现MVC模式的Controller层,通常用Servlet实现。
1.5文档概述
本文档包括以下部分:
总体设计
用例
设计概述
接口设计
系统出错处理设计
系统维护设计
数据库基表结构
1.6参考资料
相关的文件包括:
A、盼盼安全防盗公司的内部文件《FAQs系统案例研究项目》;
B、盼盼安全防盗公司FAQs系统案例研究项目分析会议备忘录;
C、盼盼安全防盗公司《FAQs系统案例研究项目需求说明》;
D、盼盼安全防盗公司系统《FAQs案例研究项目开发计划》;
参考资料:
A、北大青鸟AptechACCP3.0Sem2《基于软件开发项目的毕业设计》;
B、国家标准《概要设计说明书(GB8567——88)》;
C、莱克公司的人力资源管理项目的软件概要设计说明书;
D、《设计模式》
合同:
A、《盼盼安全防盗公司FAQs系统案例研究项目合同-2》;
第二部分、总体设计
2.1需求规定
需求规定的详细内容,请参考独立的文档:
盼盼安全防盗公司《FAQs系统案例研究项目需求说明》;
2.2基本设计理念
1.数据集中存放,以B/S方式实现FAQs数据管理
2.基于J2EE平台架构
2.3运行环境
1、设备:
客户程序硬件要求:
具有PentiumIII处理器且满足以下要求的计算机:
最低64MB内存
最小2.1GB硬盘
鼠标
键盘
服务器硬件需求:
具有PentiumIII处理器且满足以下要求的计算机:
最低256MB内存
最小8GB硬盘
鼠标
键盘
2、支持程序
浏览器客户端:
操作系统:
Windows98/NT/2000或更高版本
浏览器:
IE5.0以上或Netscape同等版本以上;
数据库服务器软件:
操作系统:
WindowsNT/2000Server或更高版本
Web服务器:
IBMHTTPServer、Apache、MSIIS等;
应用服务器:
WebLogic(7.0以上版本)等企业级应用服务器;
数据库产品:
OracleEE(9iEE以上版本)
2.3约束和假定
本系统基于J2EE架构开发,要求系统运行在支持J2EE的应用服务器中
2.4基本设计概念和处理流程
本系统采用MVC设计模式、Command模式、单子模式。
设计说明:
1、由一个Servlet作为系统的Controller,负责收集用户的输入、调用相应的命令和将命令执行的结果返回适当的页面;
2、独立的存储访问模块,为保证系统共享唯一一个存储访问类,使用了单子模式设计存储访问类;
3、使用交易令牌技术,避免了交易的重复提交,保证交易的一致性;
4、使用Command模式设计业务逻辑,使系统具有良好的结构和可扩展性。
2.5人工处理过程
(不适用)
2.6尚未问决的问题
(不适用)
第三部分、用例
3.1需求用例
3.2系统包结构
注:
更详细的包结构组成将在每个子系统统处说明。
3.3包和用例对照关系
编号
用例
使用的包名
1
浏览FAQs
faqtool
2
管理FAQs
faqtool
3
浏览FAQs
common
4
管理FAQs
common
第四部分、设计概述
4.1简述
本系统完全采用Java语言开发,以B/S方式实现浏览FAQs、管理FAQs等功能,采用Visio2002和RationalRose2003工具完成业务建模和分析工作。
使用UML语言描述了系统的设计思想和业务流程。
4.2系统结构设计
4.2.1体系结构
下面的图例展示了本系统上层的体系结构
4.2.2公用模块设计
系统中存在部分公用模块,其他模块和工程项目也要使用,这部分模块的设计在这里说明。
1、软件配置读取模块
软件配置读取模块,包路径为:
mon,软件配置读取类如下图所示:
PropertiesManager类目前有如下方法:
getProperties()主要实现如下功能:
读取FAQs系统的JDBC配置文件,以Properties对象返回有关的JDBC驱动、用户、密码和连接URL的信息。
4.2.3Web访问FAQs
4.2.3.1Web访问FAQs设计实现
类关系图如下所示:
类的描述如下表:
编号
对象名
说明
1
all.jsp
浏览全部FAQs页面
2
single.jsp
浏览一个FAQ页面
3
toc.jsp
浏览FAQs索引页面
4
plain.jsp
浏览FAQs文本视图
5
FaqServlet
Web访问FAQs子系统的控制Servlet
6
Command
命令接口
7
GetCommand
读取一个FAQ命令
8
GetAllCommand
读取全部FAQs列表命令
9
FaqRepository
FAQs数据库存储管理
1.浏览一个FAQ时序图
使用方法说明:
编号
方法名
功能描述
1
execute()
执行浏览一个FAQ命令
2
getFaq()
调用存储管理模块,读取一个FAQ
3
forward
FaqServlet导向输出页面
2.浏览全部FAQs时序图
使用方法说明:
编号
方法名
功能描述
1
execute()
执行浏览全部FAQs命令
2
getFaqs()
调用存储管理模块,读取全部FAQs列表
3
forward
FaqServlet导向输出页面
3.浏览FAQs索引页面时序图
使用方法说明:
编号
方法名
功能描述
1
execute()
执行浏览FAQs索引页面命令
2
getFaqs()
调用存储管理模块,读取全部FAQs列表
3
forward
FaqServlet导向输出页面
4.浏览FAQs文本视图时序图
使用方法说明:
编号
方法名
功能描述
1
execute()
执行浏览FAQs文本视图命令
2
getFaqs()
调用存储管理模块,读取全部FAQs列表
3
forward
FaqServlet导向输出页面
4.2.4FAQs管理
4.2.4.1FAQs管理设计实现
类关系图如下所示:
类的描述如下表:
编号
对象名
说明
1
menu.jsp
FAQs管理主菜单页面
2
FaqAdminServlet
FrontControllerServlet
3
CommandToken
命令令牌,维护交易的一致性
4
GetCommand
读取一个FAQ命令
5
GetAllCommand
读取全部FAQs列表命令
6
Command
命令接口
7
AddCommand
增加FAQ命令
8
DeleteCommand
删除FAQ命令
9
UpdateCommand
更新FAQ命令
10
AbortCommand
退出命令
11
NullCommand
空命令
12
FaqRepository
FAQs数据库存储管理
用户界面:
1.增加FAQ时序图
使用方法说明:
编号
方法名
功能描述
1
execute()
执行增加FAQ命令和空命令
2
put()
调用存储管理模块,插入FAQ
3
forward
FrontController导向输出的JSP页面
增加FAQ的过程为:
输入FAQs管理主菜单界面,根据显示菜单列表menu.jsp,选择创建新FAQ按钮,前端控制器获得用户输入,调用NullCommand命令的execute()方法。
前端控制器根据NullCommand命令返回的结果:
add.jsp,系统显示页面add.jsp。
用户输入FAQ的信息,提交Form。
前端控制器获得用户输入,调用AddCommand命令,AddCommand命令调用FaqRepository的put()将FAQ增加到数据库中。
前端控制器根据AddCommand命令返回的结果:
menu.jsp,系统返回FAQs管理主菜单界面menu.jsp。
2.删除FAQ时序图
使用方法说明:
编号
方法名
功能描述
1
execute()
执行读取全部FAQ、读取一个FAQ命令和删除一个FAQ命令
2
getFaqs()
调用存储管理模块,读取全部FAQs
3
getFaq()
调用存储管理模块,读取一个FAQ
4
removeFaq()
调用存储管理模块,删除一个FAQ
5
forward
FrontController导向输出的JSP页面
删除FAQ的过程为:
输入FAQs管理主菜单界面,根据显示菜单列表menu.jsp,选择删除FAQ按钮,前端控制器获得用户输入,调用GetAllCommand命令的execute()方法。
GetAllCommand命令调用FaqRepository的getFaqs()读出全部FAQs的Id列表。
前端控制器根据GetAllCommand命令返回的结果:
del-menu.jsp,系统显示页面del-menu.jsp。
用户选择待删除的FAQId,提交Form。
前端控制器获得用户输入,调用GetCommand命令,GetCommand命令调用FaqRepository的getFaq()读出被删除FAQ的详细信息。
前端控制器根据GetCommand命令返回的结果:
delete.jsp,系统显示删除确认页面delete.jsp。
用户点击删除,前端控制器调用DeleteCommand命令,DeleteCommand命令调用FaqRepository的removeFaq()删除FAQ。
前端控制器根据DeleteCommand命令返回的结果:
menu.jsp,系统返回FAQs管理主菜单界面menu.jsp。
3.更新FAQ时序图
使用方法说明:
编号
方法名
功能描述
1
execute()
执行读取全部FAQ、读取一个FAQ命令和更新FAQ命令
2
getFaqs()
调用存储管理模块,读取全部FAQs
3
getFaq()
调用存储管理模块,读取一个FAQ
4
update()
调用存储管理模块,更新FAQ
5
forward
FrontController导向输出的JSP页面
更新FAQ的过程为:
输入FAQs管理主菜单界面,根据显示菜单列表menu.jsp,选择更新FAQ按钮,前端控制器获得用户输入,调用GetAllCommand命令的execute()方法。
GetAllCommand命令调用FaqRepository的getFaqs()读出全部FAQs的Id列表。
前端控制器根据GetAllCommand命令返回的结果:
upd-menu.jsp,系统显示页面upd-menu.jsp。
用户选择待更新的FAQId,提交Form。
前端控制器获得用户输入,调用GetCommand命令,GetCommand命令调用FaqRepository的getFaq()读出被更新FAQ的详细信息。
前端控制器根据GetCommand命令返回的结果:
update.jsp,系统显示更新编辑页面update.jsp。
用户输入信息后,点击更新,前端控制器调用UpdateCommand命令,UpdateCommand命令调用FaqRepository的update()更新FAQ。
前端控制器根据UpdateCommand命令返回的结果:
menu.jsp,系统返回FAQs管理主菜单界面menu.jsp。
第五部分、接口设计
本系统采用集成开发工具JBuilder9.0进行开发,所提供的接口,都具有高度的集成性。
5.1用户接口
本系统提供Browse/Server的操作方式。
使用了MVC设计模式,将业务逻辑与表示逻辑最大程度的分离。
5.2外部接口
本项目是一个独立、完整的项目,目前不提供与其他系统的接口。
5.3内部接口
本系统的“存储管理“子系统为“Web访问“和“FAQs管理“分别提供访问FAQs数据库的接口。
1.API接口
JavaClass文件:
FaqRepository.class;
具体方法说明,见<>。
第六部分、系统出错处理设计
利用Java异常处理机制,捕获/处理所有异常,并在程序中进行处理成用户可理解形式表现。
异常类
描述
出错提示
CommandException
命令执行异常
根据不同命令的属性来定
FaqRepositoryException
存储管理异常
根据数据库异常的属性来定
UnknownFaqException
FAQ不存在
根据删除、修改不同的属性来定
第七部分、系统维护设计
1.系统的“存储管理“子系统使用配置文件存储有关数据库的连接信息。
可进行灵活的维护修改。
2.数据库的备份和维护采用数据库厂家自身的工具。
第八部分、数据库基表结构
1.faqs详细描述示例格式如下:
表名:
faqs建表时间:
设计人员:
各个字段信息:
列编号
列名
类型
长度(精度)
是否为空
初始值(缺省值)
列说明
可能的取值范围及各值的含义
1
ID
INT
N
标识
2
question
VARCHAR2(255)
N
问题
3
answer
VARCHAR2(2000)
Y
答案
4
modified
DATE
Y
时间戳
主键:
(ID)
(外键:
)
索引:
约束:
大致存储量:
总记录数*每记录字节数,时间参数。
表定义语法:
修改记录:
2.其他数据库元素设计
数据元素名称:
faqid_seq建立时间:
设计人员:
语法定义:
CREATESEQUENCEfaqid_seq
INCREMENTBY1
STARTWITH1
MINVALUE1;
主要完成的任务(设计目标):
修改记录:
数据元素名称:
建立时间:
设计人员:
语法定义:
主要完成的任务(设计目标):
修改记录:
数据元素名称:
建立时间:
设计人员:
语法定义:
主要完成的任务(设计目标):
修改记录:
数据元素名称:
建立时间:
设计人员:
语法定义:
主要完成的任务(设计目标):
修改记录:
数据元素名称:
建立时间:
设计人员:
语法定义:
主要完成的任务(设计目标):
修改记录:
数据元素名称:
建立时间:
设计人员:
语法定义:
主要完成的任务(设计目标):
修改记录:
数据元素名称:
建立时间:
设计人员:
语法定义:
主要完成的任务(设计目标):
修改记录:
数据元素名称:
建立时间:
设计人员:
语法定义:
主要完成的任务(设计目标):
修改记录:
表名:
ReportStore建表时间:
设计人员:
各个字段信息:
列编号
列名
类型
长度(精度)
是否为空
初始值(缺省值)
列说明
可能的取值范围及各值的含义
1
ID
INT
N
编号
2
Title
VARCHAR(90)
N
报表名称
3
UserID
INT
Y
发布人ID
4
DistTime
TIMESTAMP
Y
发布时间
5
UpdateTime
TIMESTAMP
Y
更新时间
6
FileName
VARCHAR(64)
N
报表文件名称
7
ReportContent
BLOB()
Y
报表内容
8
ReportType
VARCHAR(20)
Y
报表类型
9
Frequency
VARCHAR(8)
N
报表周期
10
ReportNo
INT
N
报表期号
11
Permit
INT
Y
发布许可
12
BussType
INT
Y
业务类型
13
Memo
VARCHAR(128)
Y
备注
主键:
(Title)
(外键:
UserID)
索引:
约束:
大致存储量:
总记录数*每记录字节数,时间参数。
表定义语法:
修改记录:
表名:
XMLDataFile建表时间:
设计人员:
各个字段信息:
列编号
列名
类型
长度(精度)
是否为空
初始值(缺省值)
列说明
可能的取值范围及各值的含义
1
ID
INT
N
编号
2
XMLFileID
VARCHAR(64)
N
文件标示
3
SpecCode
VARCHAR(64)
N
接口编码
4
UserID
INT
N
报送用户ID
5
SendFshTime
TIMESTAMP
N
报送结束时间
6
Content
BLOB()
N
文件内容
7
DataStatus
VARCHAR(8)
N
文件数据状态
是否解压,校验等
8
FileSize
INT
Y
文件大小
9
BussType
INT
Y
业务类型
10
Memo
VARCHAR(60)
Y
备注
主键:
(XMLFileID)
(外键:
SpecCode,UserID)
索引:
约束:
大致存储量:
总记录数*每记录字节数,时间参数。
表定义语法:
修改记录:
设计人员:
语法定义:
主要完成的任务(设计目标):
修改记录:
详细描述其他数据库元素设计,如存储过程,触发器,序列号,视图,函数,同义词,链接,快照等。
其文档格式: