《FAQs系统概要设计说明书.doc》由会员分享,可在线阅读,更多相关《FAQs系统概要设计说明书.doc(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、FAQs系统案例研究项目概要设计第一部分、引言1.1编写目的本说明是盼盼安全防盗公司FAQs系统案例研究项目软件产品的总体设计和实现说明,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计和出错处理设计等,记录了系统整体实现上技术层面上的考虑,并且以需求说明作为依据,为程序的详细设计提供基础。同时该文档将作为产品实现、特性要求和控制的依据。软件开发小组的每一位参与开发成员应该阅读本说明,以清楚产品在技术方面的要求和实现策略,本手册将进行技术评审和技术的可行性检查,同时为下一步的详细设计说明提供框架。1.2适用范围本概要设计文档提供给系统设计开发人员,包括详细
2、设计人员和项目组成员,不得提供给公司外人员。1.3背景说明:A、 软件系统的名称:盼盼安全防盗公司FAQs系统案例研究项目B、 任务提出者:盼盼安全防盗公司开发者:北大青鸟Aptech产品开发部实现完成的系统将在盼盼安全防盗公司的技术支持、产品管理等部门使用,所应用的网络系统是该系统的内部局域网。该公司的客户可通过互联网以多种方式浏览FAQs。C、 本系统将是独立的系统,目前不与盼盼安全防盗公司的财务系统和其他资料系统提供接口,所产生的输出都是独立的。本系统将使用Oracle 9i Release 2作为数据库存储系统,Oracle 9i Release 2企业版将由盼盼安全防盗公司自行购买。
3、1.4定义FAQs : Frequently asked questions,常见问题解答;JSP、JSPs: Java Server Pages;Servlet:应用服务器程序;Front Controller: 一种J2EE程序的设计模式。实现MVC模式的Controller层,通常用Servlet实现。1.5文档概述本文档包括以下部分:总体设计用例设计概述接口设计系统出错处理设计系统维护设计数据库基表结构1.6参考资料相关的文件包括:A、 盼盼安全防盗公司的内部文件FAQs系统案例研究项目;B、 盼盼安全防盗公司FAQs系统案例研究项目分析会议备忘录;C、 盼盼安全防盗公司FAQs系统案
4、例研究项目需求说明;D、 盼盼安全防盗公司系统FAQs案例研究项目开发计划;参考资料:A、 北大青鸟Aptech ACCP3.0 Sem2基于软件开发项目的毕业设计;B、 国家标准概要设计说明书(GB856788);C、 莱克公司的人力资源管理项目的软件概要设计说明书;D、 设计模式合同:A、盼盼安全防盗公司FAQs系统案例研究项目合同 - 2;第二部分、总体设计2.1需求规定需求规定的详细内容,请参考独立的文档:盼盼安全防盗公司FAQs系统案例研究项目需求说明;2.2基本设计理念1. 数据集中存放,以B/S方式实现FAQs数据管理2. 基于J2EE平台架构2.3运行环境1、设备:客户程序硬件
5、要求:具有 Pentium III 处理器且满足以下要求的计算机:最低 64 MB 内存最小 2.1 GB 硬盘鼠标键盘服务器硬件需求:具有 Pentium III 处理器且满足以下要求的计算机:最低 256MB 内存最小 8 GB 硬盘鼠标键盘2、支持程序浏览器客户端: 操作系统:Windows 98/NT /2000或更高版本浏览器:IE 5.0以上或Netscape同等版本以上;数据库服务器软件:操作系统:Windows NT /2000 Server或更高版本Web服务器:IBM HTTP Server、Apache、MS IIS等;应用服务器:Web Logic(7.0以上版本)等企
6、业级应用服务器;数据库产品:Oracle EE(9i EE以上版本)2.3约束和假定本系统基于J2EE架构开发,要求系统运行在支持J2EE的应用服务器中2.4基本设计概念和处理流程本系统采用MVC设计模式、Command模式、单子模式。设计说明:1、由一个Servlet作为系统的Controller,负责收集用户的输入、调用相应的命令和将命令执行的结果返回适当的页面;2、独立的存储访问模块,为保证系统共享唯一一个存储访问类,使用了单子模式设计存储访问类;3、使用交易令牌技术,避免了交易的重复提交,保证交易的一致性;4、使用Command模式设计业务逻辑,使系统具有良好的结构和可扩展性。2.5人
7、工处理过程(不适用)2. 6尚未问决的问题(不适用)第三部分、用例3.1需求用例3.2系统包结构注:更详细的包结构组成将在每个子系统统处说明。3.3包和用例对照关系编号用例使用的包名1浏览FAQsfaqtool2管理FAQsfaqtool3浏览FAQscommon4管理FAQscommon第四部分、设计概述4.1简述本系统完全采用Java语言开发,以B/S方式实现浏览FAQs、管理FAQs等功能,采用Visio 2002 和 Rational Rose 2003工具完成业务建模和分析工作。使用UML语言描述了系统的设计思想和业务流程。4.2系统结构设计4.2.1体系结构下面的图例展示了本系统上
8、层的体系结构4.2.2公用模块设计系统中存在部分公用模块,其他模块和工程项目也要使用,这部分模块的设计在这里说明。1、软件配置读取模块软件配置读取模块,包路径为:mon, 软件配置读取类如下图所示:PropertiesManager类目前有如下方法:getProperties()主要实现如下功能:读取FAQs系统的JDBC配置文件,以Properties对象返回有关的JDBC驱动、用户、密码和连接URL的信息。4.2.3 Web访问FAQs4.2.3.1 Web访问FAQs设计实现类关系图如下所示:类的描述如下表:编号对象名说明1all.jsp浏览全部FAQs页面2single.jsp浏览一个
9、FAQ页面3toc.jsp浏览FAQs索引页面4plain.jsp浏览FAQs文本视图5FaqServletWeb访问FAQs子系统的控制Servlet6Command命令接口7GetCommand读取一个FAQ命令8GetAllCommand读取全部FAQs列表命令9FaqRepositoryFAQs数据库存储管理1.浏览一个FAQ时序图使用方法说明:编号方法名功能描述 1execute( )执行浏览一个FAQ命令 2getFaq( )调用存储管理模块,读取一个FAQ 3forwardFaqServlet导向输出页面2.浏览全部FAQs时序图使用方法说明:编号方法名功能描述 1execute
10、( )执行浏览全部FAQs命令 2getFaqs( )调用存储管理模块,读取全部FAQs列表 3forwardFaqServlet导向输出页面3.浏览FAQs索引页面时序图使用方法说明:编号方法名功能描述 1execute( )执行浏览FAQs索引页面命令 2getFaqs( )调用存储管理模块,读取全部FAQs列表 3forwardFaqServlet导向输出页面4.浏览FAQs文本视图时序图使用方法说明:编号方法名功能描述 1execute( )执行浏览FAQs文本视图命令 2getFaqs( )调用存储管理模块,读取全部FAQs列表 3forwardFaqServlet导向输出页面4.2
11、.4 FAQs管理4.2.4.1 FAQs管理设计实现类关系图如下所示:类的描述如下表:编号对象名说明1menu.jspFAQs管理主菜单页面2FaqAdminServletFront Controller Servlet3CommandToken命令令牌,维护交易的一致性4GetCommand读取一个FAQ命令5GetAllCommand读取全部FAQs列表命令6Command命令接口7AddCommand增加FAQ命令8DeleteCommand删除FAQ命令9UpdateCommand更新FAQ命令10AbortCommand退出命令11NullCommand空命令12FaqReposi
12、toryFAQs数据库存储管理用户界面:1.增加FAQ时序图使用方法说明:编号方法名功能描述 1execute( )执行增加FAQ命令和空命令 2put( )调用存储管理模块,插入FAQ 3forwardFront Controller导向输出的JSP页面增加FAQ的过程为:输入FAQs管理主菜单界面,根据显示菜单列表menu.jsp,选择创建新FAQ按钮,前端控制器获得用户输入,调用NullCommand命令的execute()方法。前端控制器根据NullCommand命令返回的结果:add.jsp,系统显示页面add.jsp。用户输入FAQ的信息,提交Form。前端控制器获得用户输入,调用
13、AddCommand命令, AddCommand命令调用FaqRepository 的put()将FAQ增加到数据库中。前端控制器根据AddCommand命令返回的结果:menu.jsp,系统返回FAQs管理主菜单界面menu.jsp。2.删除FAQ时序图使用方法说明:编号方法名功能描述 1execute( )执行读取全部FAQ、读取一个FAQ命令和删除一个FAQ命令 2getFaqs( )调用存储管理模块,读取全部FAQs 3getFaq()调用存储管理模块,读取一个FAQ 4removeFaq()调用存储管理模块,删除一个FAQ 5forwardFront Controller导向输出的J
14、SP页面删除FAQ的过程为:输入FAQs管理主菜单界面,根据显示菜单列表menu.jsp,选择删除FAQ按钮,前端控制器获得用户输入,调用GetAllCommand命令的execute()方法。GetAllCommand命令调用FaqRepository 的getFaqs()读出全部FAQs的Id列表。前端控制器根据GetAllCommand命令返回的结果:del-menu.jsp,系统显示页面del-menu.jsp。用户选择待删除的FAQ Id,提交Form。前端控制器获得用户输入,调用GetCommand命令, GetCommand命令调用FaqRepository 的getFaq()读
15、出被删除FAQ的详细信息。前端控制器根据GetCommand命令返回的结果:delete.jsp, 系统显示删除确认页面delete.jsp。用户点击删除,前端控制器调用DeleteCommand命令,DeleteCommand命令调用FaqRepository 的removeFaq()删除FAQ。前端控制器根据DeleteCommand命令返回的结果:menu.jsp,系统返回FAQs管理主菜单界面menu.jsp。3.更新FAQ时序图使用方法说明:编号方法名功能描述 1execute( )执行读取全部FAQ、读取一个FAQ命令和更新FAQ命令 2getFaqs( )调用存储管理模块,读取全
16、部FAQs 3getFaq()调用存储管理模块,读取一个FAQ 4update()调用存储管理模块,更新FAQ 5forwardFront Controller导向输出的JSP页面更新FAQ的过程为:输入FAQs管理主菜单界面,根据显示菜单列表menu.jsp,选择更新FAQ按钮,前端控制器获得用户输入,调用GetAllCommand命令的execute()方法。GetAllCommand命令调用FaqRepository 的getFaqs()读出全部FAQs的Id列表。前端控制器根据GetAllCommand命令返回的结果:upd-menu.jsp,系统显示页面upd-menu.jsp。用户
17、选择待更新的FAQ Id,提交Form。前端控制器获得用户输入,调用GetCommand命令, GetCommand命令调用FaqRepository 的getFaq()读出被更新FAQ的详细信息。前端控制器根据GetCommand命令返回的结果:update.jsp, 系统显示更新编辑页面update.jsp。用户输入信息后,点击更新,前端控制器调用UpdateCommand命令,UpdateCommand命令调用FaqRepository 的update()更新FAQ。前端控制器根据UpdateCommand命令返回的结果:menu.jsp,系统返回FAQs管理主菜单界面menu.jsp。
18、第五部分、接口设计本系统采用集成开发工具JBuilder 9.0进行开发,所提供的接口,都具有高度的集成性。5.1用户接口本系统提供Browse/Server的操作方式。使用了MVC设计模式,将业务逻辑与表示逻辑最大程度的分离。5.2外部接口本项目是一个独立、完整的项目,目前不提供与其他系统的接口。5.3内部接口本系统的“存储管理“子系统为“Web访问“和“FAQs管理“分别提供访问FAQs数据库的接口。1.API接口Java Class文件:FaqRepository.class;具体方法说明,见。第六部分、系统出错处理设计利用Java异常处理机制,捕获/处理所有异常,并在程序中进行处理成用
19、户可理解形式表现。异常类描述出错提示CommandException命令执行异常根据不同命令的属性来定FaqRepositoryException存储管理异常根据数据库异常的属性来定UnknownFaqExceptionFAQ不存在根据删除、修改不同的属性来定第七部分、系统维护设计1.系统的“存储管理“子系统使用配置文件存储有关数据库的连接信息。可进行灵活的维护修改。2.数据库的备份和维护采用数据库厂家自身的工具。第八部分、数据库基表结构1.faqs详细描述示例格式如下:表名:faqs建表时间: 设计人员:各个字段信息:列编号列名类型长度(精度)是否为空初始值(缺省值)列说明可能的取值范围及各
20、值的含义1IDINTN标识2questionVARCHAR2(255)N问题3answerVARCHAR2(2000)Y答案4modifiedDATEY时间戳主键:(ID)(外键:)索引:约束:大致存储量:总记录数*每记录字节数,时间参数。表定义语法:修改记录:2. 其他数据库元素设计数据元素名称:faqid_seq 建立时间: 设计人员:语法定义:CREATE SEQUENCE faqid_seq INCREMENT BY 1 START WITH 1 MINVALUE 1;主要完成的任务(设计目标):修改记录:数据元素名称: 建立时间: 设计人员:语法定义:主要完成的任务(设计目标):修改
21、记录:数据元素名称: 建立时间: 设计人员:语法定义:主要完成的任务(设计目标):修改记录:数据元素名称: 建立时间: 设计人员:语法定义:主要完成的任务(设计目标):修改记录:数据元素名称: 建立时间: 设计人员:语法定义:主要完成的任务(设计目标):修改记录:数据元素名称: 建立时间: 设计人员:语法定义:主要完成的任务(设计目标):修改记录:数据元素名称: 建立时间: 设计人员:语法定义:主要完成的任务(设计目标):修改记录:数据元素名称: 建立时间: 设计人员:语法定义:主要完成的任务(设计目标):修改记录:表名:ReportStore建表时间: 设计人员:各个字段信息:列编号列名类型
22、长度(精度)是否为空初始值(缺省值)列说明可能的取值范围及各值的含义1IDINTN编号2TitleVARCHAR(90)N报表名称3UserIDINTY发布人ID4DistTimeTIMESTAMPY发布时间5UpdateTimeTIMESTAMPY更新时间6FileNameVARCHAR(64)N报表文件名称7ReportContentBLOB()Y报表内容8ReportTypeVARCHAR(20)Y报表类型9FrequencyVARCHAR(8)N报表周期10ReportNoINTN报表期号11PermitINTY发布许可12BussTypeINTY业务类型13MemoVARCHAR(1
23、28)Y备注主键:(Title)(外键: UserID)索引:约束:大致存储量:总记录数*每记录字节数,时间参数。表定义语法:修改记录:表名:XMLDataFile建表时间: 设计人员:各个字段信息:列编号列名类型长度(精度)是否为空初始值(缺省值)列说明可能的取值范围及各值的含义1IDINTN编号2XMLFileIDVARCHAR(64)N文件标示3SpecCodeVARCHAR(64)N接口编码4UserIDINTN报送用户ID5SendFshTimeTIMESTAMPN报送结束时间6ContentBLOB()N文件内容7DataStatusVARCHAR(8)N文件数据状态是否解压,校验等8FileSizeINTY文件大小9BussTypeINTY业务类型10MemoVARCHAR(60)Y备注主键:(XMLFileID)(外键:SpecCode, UserID)索引:约束:大致存储量:总记录数*每记录字节数,时间参数。表定义语法:修改记录: 设计人员:语法定义:主要完成的任务(设计目标):修改记录:详细描述其他数据库元素设计,如存储过程,触发器,序列号,视图,函数,同义词,链接,快照等。其文档格式:
限制150内