精华内容
下载资源
问答
  • 详细设计

    千次阅读 热门讨论 2018-12-23 19:42:02
    详细设计的任务: 详细设计的原则: 详细设计的方法: 详细设计的工具: 1、传统程序流程图(程序框图) 2、N-S结构流程图(盒图) 3、PAD图 4、PDL(过程设计语言) 5、HIPO图 详细设计...

    目录

     

    详细设计的任务:

    详细设计的原则:

    详细设计的方法:

    详细设计的工具:

    1、传统程序流程图(程序框图)

    2、N-S结构流程图(盒图)

    3、PAD图

    4、PDL(过程设计语言)

    5、HIPO图

    详细设计规格说明书:

    1、详细设计说明书

    2、详细设计评审:

    详细设计文档的编写:


    详细设计的任务:

    1、为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述。

    2、确定每一模块使用的数据结构,为以后的编写程序做好充分的准备。

    3、确定模块接口的细节。

    4、要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码进行预订测试。

    详细设计的原则:

    1、模块的逻辑描述要清晰易读、正确可靠。

    2、采用结构化设计方法,改善控制结构,降低程序的复杂程度,提高程序的可读性、可测试性、可维护性。

          A、少使用GoTo语句,保证程序结构的独立性。

          B、使用单入口单出口的控制结构,确保程序的静态结构和动态执行情况一致,保证程序易理解。

          C、控制结构采用顺序、选择和循环三种。

          D、用自顶向下逐步求精方法进行程序设计。

          E、经典的控制结构有顺序、IF THEN ELSE 分支、DO-WHILE循环、CASE、DO-UNTIL循环。

    3、选择恰当描述工具来描述各模块算法。

    详细设计的方法:

    详细设计的工具:

    图形工具、表格工具、语言工具。

    1、传统程序流程图(程序框图)

    主要符号:

    5种基本控制结构:

    (a)顺序型、(b)选择型、(c)while型循环、(d)until循环、(e)多种情况选择。

    2、N-S结构流程图(盒图)

    3、PAD图

    基本符号:

    主要优点:

    A、程序从最左边竖线上端开始执行,自上而下、自左向右执行。

    B、结构化程序结构。

    C、结构清晰、层次分明。

    D、既可以表示程序逻辑,也可以用于描绘数据结构。

    E、用DEF逐步详细描述,可支持自动向下、逐步求精的设计方法,

    4、PDL(过程设计语言)

    5、HIPO图

    详细设计规格说明书:

    1、详细设计说明书

    包括表示软件结构的图表、对逐个模块的程序描述,包括算法和逻辑流程。

    2、详细设计评审:

    A、复审的指导原则:a、一般不让用户和其他领域的代表参加。b、欢迎别人提出批评和建议,防止把复审编程辩论。c、提出的问题应详细记录,但不要当场解决问题。c、复审结束前做出本次复审能否通过的结论。

    B、复审的主要内容:通过采用答辩方式,与会者要提前审阅文档资料,设计人员对设计方案详细说明后,回答与会者的问题并记录各种重要的评审意见。

    详细设计文档的编写:

    展开全文
  • 银行账户管理系统详细设计说明书

    万次阅读 多人点赞 2016-06-06 23:02:20
    银行账户管理系统详细设计,附源码于博主的GitHub个人主页中。

    第一部分  引言

     

    1.1  编写目的

    本说明对银行账户管理系统项目的各模块、页面、脚本分别进行了实现层面上的要求和说明。

    软件开发小组的产品实现成员应该阅读和参考本说明进行代码的编写、测试。

    1.2  背景

    说明:

    A、 软件系统的名称:银行账户管理系统

    B、 开发者:魏晓蕾等

    本项目将实现基于服务器端Java Web网站的银行账户管理系统的原型部分,并且在该原型的基础上进行功能的扩展和需求的界定,最终完成的版本将在全国范围内推广使用。提供银行账户管理功能。

    C、 本系统将作为银行柜员办理事务和银行账户管理的网站。本系统首先在三个异地银行站点推广使用,分别为呼和浩特分行、北京市分行、哈尔滨分行,并在三个站点设置分布式数据库,利用分布式数据库的读取存储优势实现在三个异地银行站点的存取款及转账等服务。

    1.3  定义

    IPO图 —— 输入/处理/输出图,一般用来描述一个程序的功能和机制;

     

    1.4  参考资料

    A、《JSP程序设计(第二版)》,范立锋等著,人民邮电出版社

    B、《21天学通Oracle(第三版)》,张朝明等著,电子工业出版社

    C、《精通Oracle核心技术与项目实战》,刘丽霞著,电子工业出版社

    D、《分布式数据库系统及其应用(第三版)》,徐俊刚、邵佩英著,科学出版社

     

    第二部分  程序系统的结构

     

    2.1  系统实现场景

    系统实现场景如图2-1所示。

    图2-1  系统实现场景

    本系统实现银行柜员处理银行事务的帐户管理功能,为柜员所使用的基于Java Web平台的网站系统。

    2.2  系统功能模块设计

    系统功能模块划分如图2-2所示。

    图2-2  系统功能模块划分

    2.3  系统开发及运行环境

    开发环境:

            A、Windows 7操作系统

            B、Eclipse-Jee-Mars-2-win32

            C、Oracle 10g 10.2.0

    运行环境:

             A、Internet Explorer浏览器

    2.4  系统项目简介

    2.4.1  项目概况

             A、工程类型:Java Web项目

             B、所用架构:MVC模式

             C、所用技术:JavaBean+JSP+Servlet技术

                                      连接Oracle分布式数据库

             D、工程名称:BankManagementSystem

    2.4.2  项目源码文件

    2.4.2.1  JSP页面

             o       Login.jsp                                       柜员登录页面

             o       LoginCheck.jsp                                  柜员登录检查页面

             o       LoginFailure.html                                柜员登录失败页面

             o       ClientLogin.jsp                                  客户登录页面

             o       ClientLoginOperation.jsp                          客户登录成功页面

             o       MainPage.jsp                                   柜员事务主页面

             o       CreateCard.jsp                                  办卡信息显示页面

             o       CreateCardPassword.jsp                          办卡录入密码页面

             o       CreateCardOperation.jsp                          办卡操作页面

             o       ChangePassword.jsp                             修改密码信息显示页面

             o       ChangePasswordForm.jsp                         修改密码表单页面

             o       ChangePasswordOperation.jsp                     修改密码操作页面

             o       LostCard.jsp                                    挂失/解挂信息显示页面

             o       LostCardOperation.jsp                            挂失/解挂操作页面

             o       ReCreateCard.jsp                                补卡信息显示页面

             o       ReCreateCardOperation.jsp                        补卡操作页面

             o       RemoveCard.jsp                                 销卡信息显示页面

             o       RemoveCardOperation.jsp                         销卡操作页面

             o       SaveInMoney.jsp                                存款信息显示页面

             o       SaveInMoneyForm.jsp                            存款表单页面

             o       SaveInMoneyOperation.jsp                       存款操作页面

             o       TakeOutMoney.jsp                              取款信息显示页面

             o       TakeOutMoneyForm.jsp                          取款表单页面

             o       TakeOutMoneyOperation.jsp                      取款操作页面

             o       ShowBalance.jsp                                查询余额页面

             o       ShowHistory.jsp                               查询历史记录信息显示页面

             o       ShowHistoryOperation.jsp                        查询历史信息操作页面

             o       ForwardMoney.jsp                              转账信息显示页面

             o       ForwardMoneyConfirm.jsp                       转账信息确认页面

             o       ForwardMoneyOperation.jsp                      转账操作页面

    2.4.2.2  JavaBean文件

             o       Connbean/ConnectionOracle.java                  连接Oracle数据库代码

    2.4.2.3  图片文件

             o       images/1.gif                                   柜员登录界面图片

             o       images/2.jpg                                  客户登录界面图片

             o       images/3.jpg                                  系统主页面界面图片

             o       images/4.jpg                                  信息显示页面界面图片

             o       images/5.jpg                                  操作页面界面图片

     

    第三部分  系统设计图表

     

    3.1  用例图

    3.1.1  用例表

    参与者

    银行柜员

    客户

    事件序列1

    录入客户信息

     

     

    事件序列2

    办卡

    录入密码

     

    事件序列3

    修改密码

     

     

    事件序列4

    挂失/解挂

    挂失

    解挂

    事件序列5

    补卡

    销卡

    办卡

    事件序列6

    销卡

    返回余额

     

    事件序列7

    存款

    计算手续费

     

    事件序列8

    取款

    计算手续费

     

    事件序列9

    转账

    转账信息核对

    计算手续费

    事件序列10

    查询余额

     

     

    事件序列11

    查询交易历史

    选择时间段

     

    3.1.2  用例图

    3.2  序列图

    3.2.1  序列表

    事件序列编号

    事件序列名

    发出事件人

    接收事件人

    事件序列1

    柜员登录

    银行柜员

    数据库

    事件序列2

    客户信息录入

    客户

    银行柜员

    事件序列3

    查询插入客户信息

    银行柜员

    数据库

    事件序列4

    办卡

    客户

    银行柜员

    事件序列5

    银行卡信息与客户信息绑定

    银行柜员

    数据库

    事件序列6

    修改密码

    客户

    银行柜员

    事件序列7

    更新数据库密码字段

    银行柜员

    数据库

    事件序列8

    挂失

    客户

    银行柜员

    事件序列9

    更新数据库银行卡状态字段

    银行柜员

    数据库

    事件序列10

    解挂

    客户

    银行柜员

    事件序列11

    更新数据库银行卡状态字段

    银行柜员

    数据库

    事件序列12

    补卡

    客户

    银行柜员

    事件序列13

    删除旧银行卡记录,添加新银行卡记录

    银行柜员

    数据库

    事件序列14

    销卡

    客户

    银行柜员

    事件序列15

    删除银行卡记录

    银行柜员

    数据库

    事件序列16

    存款

    客户

    银行柜员

    事件序列17

    更新银行卡余额字段

    银行柜员

    数据库

    事件序列18

    取款

    客户

    银行柜员

    事件序列19

    更新银行卡余额字段

    银行柜员

    数据库

    事件序列20

    转账

    客户

    银行柜员

    事件序列21

    更新新旧银行卡余额字段

    银行柜员

    数据库

    事件序列22

    查询余额

    客户

    银行柜员

    事件序列23

    查询余额字段

    银行柜员

    数据库

    事件序列24

    查询历史交易

    客户

    银行柜员

    事件序列25

    查询交易表某时间段全部信息

    银行柜员

    数据库

    3.2.2  序列图

    3.3  状态图

    3.3.1  状态表

    状态变迁编号

    开始状态

    到达状态

    触发事件

    状态变迁1

    INIIT

    UNUSED

    初始化

    状态变迁1

    UNUSED

    OPEN

    办卡

    状态变迁1

    OPEN

    UNUSED

    销卡

    状态变迁1

    OPEN

    LOST

    挂失

    状态变迁1

    LOST

    OPEN

    解挂

    状态变迁1

    LOST

    TERMINATE

    卡丢失

    3.3.2  状态图

     

    第四部分  数据库设计

     

    4.1  全局ER图

    4.1.1  各实体集及其属性图集及其属性图实体集及其属性图实体集及其属性图

    4.1.1.1  银行柜员实体集

    4.1.1.2  客户实体集

    4.1.1.3  银行卡实体集

    4.1.1.4  分行实体集

    4.1.2  实体集之间联系图

    4.2  全局表结构

     

    说明:

    英文名:30个字符以内,符合一般标识符命名规范,不用关键字或保留字及特殊符号。

    中文名:30个汉字以内,不要用空格。

    主键:组成主键字段英文名列表,如果有多个字段,用半角逗号隔开。

    类型:char,varchar2,date,number取其一。

    宽度:char最大2000varchar2最4000date不填,number最大38(有效数字个数),宽度以够用为好。

    空否:如果不能为空,填N,可以为空,不填。

    缺省值:字符型用单引号包围,其它类型不必。

    唯一:如果所有记录在此字段上分量没有重复值,填Y,无此限制,不填。

    参照:如果此字段信息必须参照其它表(包括自己)的某字段,则其上应该定义外键,

    填参照表英文名(参照字段英文名),如果不是,不填。

    备注:需要特别说明的信息,比如取值范围,特殊要求等,如没有,不填。

     

    表4‑1表名列表

    编号

    表中文名

    表英文名

    备注

    1

    客户表

    Client

    存储客户的信息

    2

    银行卡总表

    TotalCard

    存储所有分行银行卡信息

    3

    银行卡表

    Card

    存储某客户银行卡的信息

    4

    柜员表

    Teller

    存储柜员的信息

    5

    分行表

    SubBank

    存储各个分行的信息

    6

    交易表

    Trade

    存储各种交易信息

    以下列出每个表的明细信息

    表4‑2 Client(客户表)

    编号

    中文名

    英文名

    类型(宽度)

    空否

    缺省值

    唯一

    参照

    备注

    1

    身份证号

    CLIENTID

    Char(18)

    N

     

    Y

     

     

    2

    姓名

    CLIENTNAME

    Varchar2(10)

    N

     

     

     

     

    3

    手机号

    CLIENTTELNO

    Char(11)

    N

     

     

     

     

    表4‑3 TotalCard(银行卡总表)

    编号

    中文名

    英文名

    类型(宽度)

    空否

    缺省值

    唯一

    参照

    备注

    1

    银行卡号

    CARDID

    Char (19)

    N

     

    Y

     

     

    2

    状态

    CARDSTATUS

    Char (1)

    N

    UNUSED

     

     

     

    3

    分行编号

    SUBBANKID

    Char (4)

    N

     

     

    Y

     

    表4‑4 Card(银行卡表)

    编号

    中文名

    英文名

    类型(宽度)

    空否

    缺省值

    唯一

    参照

    备注

    1

    银行卡号

    CARDID

    Char(19)

    N

     

    Y

     

     

    2

    状态

    CARDSTATUS

    Char(1)

    N

    OPEN

     

     

     

    3

    银行卡密码

    CARDPS

    Char(6)

    N

     

     

     

     

    4

    余额

    CARDBALANCE

    Float(10)

    N

     

     

     

     

    5

    开户时间

    CARDCREATETIME

    Date

    N

     

     

     

     

    6

    身份证号

    CLIENTID

    Char(18)

    N

     

     

    Y

     

    7

    身份证号

    TELLERID

    Char(18)

    N

     

     

    Y

     

    8

    分行编号

    SUBBANKID

    Char(4)

    N

     

     

    Y

     

    表4‑5 Teller(柜员表)

    编号

    中文名

    英文名

    类型(宽度)

    空否

    缺省值

    唯一

    参照

    备注

    1

    身份证号

    TELLERID

    Char(18)

    N

     

    Y

     

     

    2

    柜员姓名

    TELLERNAME

    Varchar2(10)

    N

     

     

     

     

    3

    柜员密码

    TELLERPS

    Char(6)

    N

     

     

     

     

    4

    分行编号

    SUBBANKID

    Char(4)

    N

     

     

    Y

     

    表4‑6 SubBank(分行表)

    编号

    中文名

    英文名

    类型(宽度)

    空否

    缺省值

    唯一

    参照

    备注

    1

    分行编号

    SUBBANKID

    Char(4)

    N

     

    Y

     

     

    2

    分行名称

    SUBBANKNAME

    Varchar2(12)

    N

     

     

     

     

    3

    分行地址

    SUBBANKADDR

    Varchar2(20)

    N

     

     

     

     

    表4‑7 Trade(交易表)

    编号

    中文名

    英文名

    类型(宽度)

    空否

    缺省值

    唯一

    参照

    备注

    1

    交易编号

    TRADEID

    Char(6)

    N

     

    Y

     

     

    2

    源银行卡号

    FROMCARDID

    Char(19)

    N

     

    Y

    Y

     

    3

    目标银行卡号

    TOCARDID

    Char(19)

    N

     

     

    Y

     

    4

    交易时间

    TRADETIME

    Date

    N

     

     

     

     

    5

    交易金额

    TRADEMONEY

    Float(10)

    N

     

     

     

     

    6

    手续费

    TRADEFACTORAGE

    Float(10)

    N

     

     

     

    无手续费以0.00计入

    7

    摘要

    TRADEDIGEST

    Varchar2(20)

     

     

     

     

     

     

    第五部分  程序界面详细设计与说明

     

    5.1  柜员登录组件

    5.1.1  柜员登录界面

    5.1.1.1  呼和浩特分行柜员登录

     

    图5-1  呼和浩特分行柜员登录界面

    5.1.1.2  北京分行柜员登录

     

    图5-2  北京分行柜员登录界面

    5.1.1.3  哈尔滨分行柜员登录

     

    图5-3  哈尔滨分行柜员登录界面

     

    5.1.2  组件描述

    5.1.2.1  目的和意义

    本组件用于柜员登录,系统设置呼和浩特分行、北京分行、哈尔滨分行三地,每个分行有对应银行柜员。柜员通过本人身份证号和登录密码进行登录。

    5.1.2.2  特色说明

    本组件不需要选择分行登录地点,直接通过柜员身份证号确定柜员所在分行、客户办理业务分行。

    5.1.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    图5-4  柜员登录组件IPO图

    5.1.4  运行结果

        点击登录后,通过柜员身份证号查询数据库,登录成功进入录入客户信息界面,登录失败显示登录失败界面。

    5.1.4.1  柜员登录成功

    5.1.4.2  柜员登录失败

     

    5.2  客户信息录入组件

    5.2.1  组件界面

    5.2.2  组件描述

    5.2.2.1  目的和意义

    本组件作为客户录入信息使用。

    5.2.2.2  特色说明

    当柜员登录成功后,跳转到客户信息录入界面。点击提交,查询数据库中是否存在此客户信息,如果存在,提取出客户信息,如果不存在,插入客户信息,并将插入的客户信息提取出来。

    5.2.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.2.4  运行结果

     

    5.3  主页面组件

    5.3.1  组件界面

    5.3.2  组件描述

    5.3.2.1  目的和意义

    本组件作为银行账户管理系统的主界面。

    5.3.2.2  特色说明

    主界面功能包括:办卡、修改密码、挂失/解挂、补卡、销卡、存款、取款、查询余额、查询交易历史、转账。

    5.3.3  运行结果

    进入各功能页面。

     

    5.4  办卡组件

    5.4.1  组件界面

    5.4.2  组件描述

    5.4.2.1  目的和意义

        本组件用于银行柜员为客户办卡使用。

    5.4.2.2  特色说明

        银行柜员的身份证号与银行分行编号在数据库中已绑定,柜员用身份证号登录,意味着客户在某地分行办理业务。当柜员点击办卡后,出现该分行所有的银行卡列表,银行卡状态为USED为已经办理的卡,状态为UNUSED的为未办理的卡。如果点击状态为USED的卡的“录入密码”,录入密码后出现“此卡已使用,不能选择!返回办卡页面”。如果点击状态为UNUSED的卡的“录入密码”,录入密码后出现“客户信息与银行卡信息绑定页面”。

    5.4.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.4.4  运行结果

    5.4.4.1  点击银行卡状态为“USED”的银行卡的“录入密码”:

    点击“确认”:

    5.4.4.2  点击银行卡状态为“UNUSED”的银行卡的“录入密码”:

    点击“确认”:

     

    5.5  修改密码组件

    5.5.1  组件界面

    点击“修改密码”:

    5.5.2  组件描述

    5.5.2.1  目的和意义

        本组件用于客户修改银行卡密码。

    5.5.2.2  特色说明

    此组件界面会列出该客户所有的银行卡,点击需要修改密码的银行卡信息所在条目的“修改密码”,输入该银行卡的原密码、新密码及确认密码,点击“确认”,提示“该银行卡密码修改成功”。如果输入的新密码和确认密码不同,点击“确认”,提示“该银行卡新密码与确认密码不一致”。如果输入的原密码与数据库中的密码不同,提示“原密码输入错误”。

    5.5.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.5.4  运行结果

    5.5.4.1  银行卡密码修改成功

    5.5.4.2  新密码与确认密码不一致

    5.5.4.3  原密码输入错误

     

    5.6  挂失/解挂组件

    5.6.1  组件界面

    5.6.2  组件描述

    5.6.2.1  目的和意义

        本组件用于客户对银行卡挂失或者解挂。

    5.6.2.2  特色说明

    当银行卡状态为“OPEN”,点击“挂失/解挂”,此时使用挂失功能,提示“该银行卡挂失成功”。当银行卡状态为“LOST”,点击“挂失/解挂”,此时使用解挂功能,提示“该银行卡解挂成功”。

    5.6.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.6.4  运行结果

    5.6.4.1  挂失成功:

    5.6.4.2  解挂成功:

     

    5.7  补卡组件

    5.7.1  组件界面

    5.7.2  组件描述

    5.7.2.1  目的和意义

        本组件用于客户原卡不能使用,来银行柜员处补卡所用。

    5.7.2.2  特色说明

        组件界面显示用户所有银行卡信息,在需要补卡的银行卡信息条目上点击“补卡”,提示“该银行卡销卡成功,请重新办卡”,点击“办卡”,跳转到办卡界面,如前所述。

    5.7.3  功能描述

    输入-处理-输出采用IPO图表示如下: 

    5.7.4  运行结果

    销户成功:

    重新办卡:

     

    5.8  销卡组件

    5.8.1  组件界面

    5.8.2  组件描述

    5.8.2.1  目的和意义

        本组件用于客户在银行柜员处办理销卡所用。

    5.8.2.2  特色说明

    在销卡界面显示银行卡信息,包括银行卡余额,点击“销卡”,提示已向用户返回余额,销户成功。

    5.8.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.8.4  运行结果

     

    5.9  存款组件

    5.9.1  组件界面

    点击“选择”:

    5.9.2  组件描述

    5.9.2.1  目的和意义

        本组件为客户到柜台存款所用。

    5.9.2.2  特色说明

        在银行卡存款页面,显示用户所有银行卡信息,在需要存款的银行卡条目上点击“选择”,进入存款金额填写页面,输入存款金额,点击“存款”,显示存款成功,并显示余额。如果是异地存款(即银行卡所属分行编号与为客户办理业务的柜员所属分行编号不同),则显示余额和手续费。

    5.9.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.9.4  运行结果

    本地存款:

    异地存款:

     

    5.10  取款组件

    5.10.1  组件界面

    5.10.2  组件描述

    5.10.2.1  目的和意义

        本组件为客户在柜台取款所用。

    5.10.2.2  特色说明

        取款界面显示客户所有银行卡信息,在需要取款的银行卡信息条目上点击“选择”,进入“取款金额填写”界面,输入取款金额,点击“取款”,提示取款成功,并显示余额。

    如果是异地取款(即银行卡所属分行编号与为客户办理业务的柜员所属分行编号不同),则显示余额和手续费。

    5.10.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.10.4  运行结果

    本地取款:

    异地取款:

     

    5.11  查询余额组件

    5.11.1  组件界面

    5.11.2  组件描述

    5.11.2.1  目的和意义

        本组件为客户查询余额所用。

    5.11.2.2  特色说明

        点击“查询余额”,会显示出用户所有的银行卡余额信息。

    5.11.3  功能描述

    输入-处理-输出采用IPO图表示如下:

     

    5.12  查询历史交易组件

    5.12.1  组件界面

    5.12.2  组件描述

    5.12.2.1  目的和意义

        本组件用于客户在柜台查询历史交易信息。

    5.12.2.2  特色说明

        查询历史交易信息页面显示客户所有的银行卡信息。可以查询指定银行卡的“近一周”、“近一月”、“近三月”、“近半年”、“近一年”的信息。还可以查询指定银行卡、指定起始日期和结束日期的历史交易信息。

    5.12.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.12.4  运行结果

    近一周查询结果:

    近一月查询结果:

    近三月查询结果:

    近半年查询结果:

    近一年查询结果:

    指定转账银行卡、转账起始日期、结束日期查询历史交易信息:

    查询结果:

     

    5.13  转账组件

    5.13.1  组件界面

    5.13.2  组件描述

    5.13.2.1  目的和意义

        本组件为客户转账所用。

    5.13.2.2  特色说明

        点击“转账”,核对转账信息。如本次转账为本地转账,转账手续费为0元;如本次转账为异地转账,转账手续费为转账金额的0.1%;如转账手续费小于1元,按1元计;如转账手续费大于50元,按50元计。点击“确认转账”,显示转账成功界面。

    5.13.3  功能描述

    输入-处理-输出采用IPO图表示如下:

    5.13.4  运行结果

    本地转账信息确认界面:

    异地转账信息确认界面:

    转账成功界面:

     

    第六部分  系统后续工作说明

     

    本项目存在以下不足:

    1、并未实现分布式数据库,连接的仍是本地集中式数据库。原因如下:

    (1)分布式数据库原理理解,但SQL脚本代码部分看不懂。

    (2)连接老师服务器上的分布式数据库连接方式不清楚,存在以下问题:

    <1>连接集中式Oracle需要额外安装驱动,分布式需要吗?

    <2>连接分布式Oracle代码与连接集中式Oracle代码相同吗?

    (3)连接分布式Oracle数据库后,需要对程序进行整体改造及调试,还不清楚做法。

    2、在办卡、转账时,应向数据库中存入包括日期、时间在内的具体时间,而不是仅包含日期,这样在数据库中存的时间就是日期+00:00:00的时间,不合理。

    3、银行卡余额、存取款金额、手续费应为浮点数保留两位小数,我没有保留。要保留需要修改数据库相应字段,如float(10,2),意为最多保存10位有效数字,小数点后保留两位。

    4、Oracle和JSP页面之间使用Form表单提交中文内容已经解决,数据库中存的是中文,但JSP页面之间通过超链接传递中文参数仍是乱码??????,这个问题到现在也没有解决。

    5、个人电脑上安装Oracle 10g数据库的时区设置问题,当操作系统是(UTC +8:00 北京,重庆,香港特别行政区,乌鲁木齐)时区时,emd.properties这个文件的agentTZRegion=Asia/Chungking设置报错,只有当将操作系统时区调整成(UTC 世界协调时)时区时,emd.properties这个文件的agentTZRegion=GMT,才不会报错,OracleListener服务才可以启动。

    6、未实现本科时曾实现的《考勤管理系统》界面的样式。原因如下:

    (1)本科项目我只负责编码实现,界面美化由其他小组成员完成,我就没有弄清楚。

    (2)想弄清楚需要学会CSS+DIV+JavaScript+Ajax,这还需要后续学习。

     

    由此总结:每做一点,都需要把相关内容彻底弄懂,有一点不懂,就受制于人,就是未来的隐患。

    展开全文
  • 详细设计说明书

    万次阅读 多人点赞 2019-06-22 23:08:06
    目的是对该项目进行详细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试做准备。本详细设计说明书的预期读者为本项目小组的成员以及对该小程序感兴趣,在以后想对...

    F.1 引言

    F.1.1  编写目的

          本详细设计说明书是针对电子科大校园地图(UESTC Campus Map)小程序的项目编写。目的是对该项目进行详细设计,在概要设计的基础上进一步明确系统结构,详细地介绍系统的各个模块,为进行后面的实现和测试做准备。本详细设计说明书的预期读者为本项目小组的成员以及对该小程序感兴趣,在以后想对系统进行拓展和维护的人员。

    F.1.2  背景

    说明:

    a、待开发软件系统的名称:电子科大校园地图小程序(UESTC Campus Map)

    b、本项目的任务提出者:金成哲,陆冠臣,罗子建

               本项目的开发者:金成哲,陆冠臣,罗子建

               本项目的用户:在校学生,教师,校园游客

               本项目的计算中心:微信小程序

    F.1.3  定义

    (1) MVC Model View Controller ,是模型 ( model )-视图 ( view )-控

    制器(Controller)的缩写。

    (2) CURD 代表创建( Create )、更新 Update )、读取 Retrieve

    和删除( Delete )操作。

      (3)    UCM 是 UESTC Campus Map 的简称。

     

     

    F.1.4  参考资料

    (1)《软件工程》(第三版)·钱乐秋等编著·清华大学出版社

    (2)《设计模式之禅》)《设计模式之禅》(第二版)·秦小波著·机械工业出版社(第二版)·秦小波著·机械工业出版社

    (3)《玩转DjangoDjango 2.0》·黄永祥著·清华大学出版社》·黄永祥著·清华大学出版社

    (4)《数据库要求说明书》

    (5)《数据库设计说明书》

    (6)微信小程序开发文档

    F.2 程序系统的结构

    整体架构:整体架构设计演示如下:

                                           

     

    名称

    标识符

    说明

    客户端

    Client

    客户系统提供本地服务

    服务端

    Server

    向客户端提供资源,保存客户端数据

    数据库系统

    Database

    存储客户端资源及相关信息

    本地操作系统

    Local operating system

    客户端提供交互界面的服务

    电子科技大学统一身份认证系统

    Authentication system

    电子科技大学学生认证系统,提供学生认证平台

    微信服务器

    Wechat  server

    提供UCM的应用生态服务

    微信小程序后台管理系统

    Miniprogram admin system

    小程序开发者管理小程序的版本更新及用户数据分析

     

    客户端:采用 MVC 软件架构设计,框图演示如下

     

                   

     

    模型(即数据表):

    名称

    标记符

    说明

    标记点表

    Location

    记录校园地图的地点描述以及具体地理位置

    功能表

    Function

    记录标记点的功能信息以及标签分类

    轮播图表

    RollingImage

    记录某标记点的轮播图片

    讨论表

    Discussion

    记录用户发布讨论的内容信息

    评论表

    Comment

    记录用户参与评论的信息

    用户表

    User

    记录用户登录账户以及学生认证等基本信息

     

    控制:

    名称

    标记符

    说明

    网络请求

    Internet request

    提供连接服务,响应界面

    存储处理

    Storage Processing

    根据存储请求,将相关数据存储到对应数据表

    数据清洗

    Data cleaning

    根据内置算法设计,对数据表的数据进行再处理

     

    视图:

    名称

    标记符

    说明

    地图界面

    Map

    根据不同校区的需要,提供地图的功能介绍

    讨论界面

    Discussion

    给用户提供论坛讨论的服务,针对不同标记点发布讨论内容

    功能界面

    Function

    给对应标记点提供不同的功能介绍

    认证界面

    Authentication

    为区分不同用户,利用电子科大校园信息门户的平台,本小程序设计了一个校园身份认证的系统

    历史关注界面

    Historical Concerning

    为方便用户查看以前参与的讨论与功能的建设,故提供历史关注的服务

    轮播图界面

    Rolling Image

    为丰富用户对该标记点的认知与理解,提供对该标记点的轮播图展示服务

    登录界面

    login

    用户首次登录小程序

    服务端:

                                         

     

    名称

    标记符

    说明

    日志系统

    Logging System

    自动记录流式数据,各进程,异常信息

    网络模块

    Network module

    提供连接服务

    控制模块

    Controling module

    根据服务请求,进行不同模块的控制

    数据库操作模块

    Database operation module

    写入,查询,修改或删除数据库的信息

    F.3 网络模块

    F.3.1  程序描述

    网络模块主要是客户端对服务器的网络请求功能的模块化实现,整个客户端采用规范化的统一格式对服务器进行网络请求。主要是为了更好的鲁棒性以及可读性。

    F.3.2  功能

    功能范例:

     

    功能

    输入

    输出

    格式/请求

    校园身份认证

    openid、学号、密码

    codemsg

    identity

    json/POST

    微信登录

    code

    encryptedData

    iv

    code、msg、uid

    uNickName、uavaUrl:

    json/POST

    发布功能

    uid

    functionCode

    locationID

    code

    msg

    uid

    identity

    datatype

    data:[

    {functionID

    functioncontent

    functiondescription

    locationID

    locationdescription

    locationLatitude  

    locationLongitude}]

    json/POST

    发布讨论

    uid

    discussionCode

    locationID

    code

    msg

    uid

    identity

    datatype

    data:[

    discussionID  

    presenttime

    locationID

    locationLatitude

    locationLongitude

    ]

    json/POST

    评论他人

    uid

    uidor

    discussionID

    commentCode

    locationID

    code

    msg

    datatype

    commentID

    json/POST

    获取发布历史

    identity

    uid

    dataType

    code

    msg

    uid

    identity:

    dataType

    data:[

    discussionID

    discussionContent:                

    locationID

    locationLatitude

    locationLongitude

    imgUrls:[

    "https:********",          

    ]    

    ]    

    json/POST

    获取讨论列表

    locationID

    uid

    code

    msg

    dataType

    data:[

    {

    discussionID

    discussionCode

    discussioncontent:

    uNickName

    uavaUrl

    imgUrls:[]

    presenttime

    locationID

    locationLatitude

    locationLongitude

    comment:[

    {commentID

    commentcontent

    uNickName

    uorNickName}]}]

    json/POST

    获取功能列表

    uid

    locationID

    dataType

    code

    msg

    data:[{

    functionID:

    functionCode

    functioncontent

    functiondesription:

    locationID

    locationLatitud

    locationLongitude:

    }]

    json/POST

    获取轮播图

    uid

    string

    dataType

    code

    msg

    imgUrls:[

    "https://123.png",

    "https://124.png",]

    json/POST

    获取所有标记点

    uid

    dataType:

    code

    msg

    locationID:[]

    json/POST

    删除

    dataType

    uid

    dataType

    uid

    code

    msg:

    json/POST

    F.3.3  性能

    运行

    模块组合

    响应时间(ms)

    校园身份认证

    网络模块、数据库模块

    1000

    微信登录

    登录模块、数据库模块、网络模块

    500

    发布功能

    功能模块、数据库模块、网络模块

    200

     

    发布讨论

    数据库模块、讨论模块

    1000

    评论他人

    数据库模块、讨论模块、评论模块、网络模块

    200

     

    获取发布历史

    数据库模块、讨论模块、评论模块、功能模块、网络模块

    1000

    获取讨论列表

    数据库模块、讨论模块、评论模块、网络模块

    1000

     

    获取功能列表

    功能模块、网络模块、数据库模块

    300

    获取轮播图

    轮播图模块、数据库模块、网络模块

    1000+

    获取所有标记点

    数据库模块、网络模块、标记点模块

    200

    删除

    所有模块

    100

     

    添加标记点

    数据库模块、网络模块、标记点模块

    200

     

    F.3.4  输入项

    输入输出等参考功能F.3.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.3.5  输出项

    输入输出等参考功能F.3.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.3.6  算法

    1. API接口防止重放攻击和第三方滥用攻击算法:

    算法示例:

    字段名

    类型

    含义

    必填

    备注

    a

    text

    请求的字段

    True

     

    b

    text

    请求字段

    True

     

    appKey

    text

    客户端应用标识

    True

    一段唯一标识客户端的字符串

    salt

    text

    随机数(建议使用UUID)

    True

     

    timestamp

    long

    Unix时间戳(精确到秒)

    True

     

    sign

    text

    sha256签名

    True

    计算方法:sha256(a+b+appKey+salt+timestamp+密钥)

    例如:

    a:"123",

    b:"地图",

    appKey:"57673e9f4b774dd9a739ee668e38c0a1",

    salt:"66785bb6-2df8-5e7e-a51b-cb7d257738e5",

    timestamp:"1560761282",

    密钥:"651d-4bbf-350f-b477-fe1b",

    客户端利用sha256计算签名:

    sha256(123地图57673e9f4b774dd9a739ee668e38c0a166785bb6-2df8-5e7e-a51b-cb7d257738e51560761282651d-4bbf-350f-b477-fe1b)

    结果:423cb7cf98d7e11c4efa3ce042e4e4546ae342a565a460fd8443f814258d63b3

     

    服务器流程说明:

    服务器接收到数据后,首先验证appKey是否合法,然后从数据库中获取该appKey对应的密钥,然后再获取当前服务器的时间戳,计算t = 服务器时间戳-timestamp,若t>60,则是一条重放消息,若小于60,则开始验证签名,即服务器利用相同的算法计算请求的sha256,对比是否相同,若相同,则做下一步操作,否则这是一条非法请求,直接响应错误信息。

    F.3.7  流程逻辑

                                  

    F.3.8  接口
    用图的形式说明本程序所隶属的上一层模块及隶属于本程序的下一模块、参数赋值和调用方式,说明与本程序具有直接关系之数据结构(数据库、数据文卷)。

    F.3.9  存储分配

        无特别要求

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    服务器

    内存:50-100MB,

    硬盘:50GB

    适当情况下可以扩容,采用分布式集群的方式运行服务端

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

     

    F.3.10  注释设计

    1.单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.3.11  限制条件

    必须在连接互联网的情况下才能使用本模块,否则将提示网络异常信息。

    F.3.12  测试计划

    需要结合其它模块才能测试,此处不做说明。

    F.3.13  尚未解决的问题

    接口字段的模糊混淆处理,所以还是存在非法用户进行恶意发送脏请求的可能。

     

    F.4 日志模块

    F.4.1  程序描述

    小程序日志系统

    F.4.2  功能

    提供日志记录功能,为系统错误和恢复提供保障。

    F.4.3  性能

    日志信息分类

    (1)等级由低到高:debug<info<warn<Error<Fatal;

    (2)区别:

    debug :级别最低,可以随意的使用于任何觉得有利于在调试时更详细的了解系统运行状态的东东;

    info : 重要,输出信息:用来反馈系统的当前状态给最终用户的;

    warn:可修复,系统可继续运行下去;

    Error: 可修复性,但无法确定系统会正常的工作下去;

    Fatal: 相当严重,可以肯定这种错误已经无法修复,并且如果系统继续运行下去的话后果严重。

    F.4.4  输入项

         日志输入针对不同的日志类别有所区别。

    F.3.5  输出项

    1. 日志文档
    2. 文档格式

    log.error(“[接口名或操作名] [Some Error Msg] happens. [params] [Probably Because]. [Probably need to do].”);

    log.error(String.format(“[接口名或操作名] [Some Error Msg] happens. [%s]. [Probably Because]. [Probably need to do].”, params));

    log.error(“[Some Error Msg] happens to 错误参数或内容 when [in some condition]. [Probably Because]. [Probably need to do].”);

    log.error(String.format(“[Some Error Msg] happens to %s when [in some condition]. [Probably Because]. [Probably need to do].”, parameters));

    [Probably Reason]. [Probably need to do]. 在某些情况下可以省略; 在一些重要接口和场景下最好能说明一下。

    每一条错误日志都是独立的,尽可能完整、具体、直接说明何种场景下发生了什么错误,由什么原因导致,要采用什么措施或步骤。

    F.3.6  算法

    日志分析方法:

    1.特征字符分析(Signature-based)

         在日志中查找已知的漏洞特征,去发现黑客攻击行为, 是最简单的方法。

    2.访问频率分析(Frequency analysis)

    在黑客攻击过程中,需要对系统进行各种特定的访问,这些访问与正常用户访问有很大差别, 每种攻击行为都有不同的特征。

    通过对大量用户访问数据的挖掘,可以发现这些异常访问行为。

     

    日志检测方法:

    1.漏洞扫描检测:

    黑客使用漏洞扫描器对 Web 应用进行扫描,可以用匹配 User-Agent 特征的方式进行检测。如果自定义扫描器的 User-Agent,这个方法的效果可能会不好。但可匹配扫描器扫描的行为,

    ·访问目标离散

    ·来源地址相对固定

    ·访问结果大多数失败

    根据这些特征对 Web 访问日志进行分析,即可提取出来可疑的扫描行为。

    2.暴力破解检测:

    暴力破解密码的特征是:

    ·相对固定的来源地址

    ·对登录URL短时间内高频率发起请求

    ·与漏洞扫描的区别主要是目标 URL 固定。

    3.webshell 检测

    如果黑客发现系统漏洞,并且利用漏洞获得上传权限,会向系统 上传 webshell。webshell 是一种后门程序,此程序由脚本语言编写, 可以在 Web 服务器上运行,攻击者可以通过网页执行系统命令,读写 系统文件。从访问行为的角度看,webshell 通常:

    ·只有攻击者访问

    ·来源地址相对固定

    ·访问时间相对集中

    ·无内嵌其他页面

    通过这些特征即可提取出可疑文件,再通过人工确认的方式,检测出 webshell。

    F.3.7  流程逻辑

    日志产出 ——>采集——>储存——>分析——>储存——>可视化

    F.3.8  接口

    结构设计:

                                          

     

     

    日志工作流:

                                           

    F.3.9  存储分配

    文件

    存储

    备注

    log

    2GB

    每天24:00进行当天日志归档

    F.3.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.3.11  限制条件

    无特别要求

    F.3.12  测试计划

       结合其它模块进行测试

    F.3.13  尚未解决的问题

       日志自动化分析工具的集成

     

    F.5    数据库操作模块

    F.5.1  程序描述

       数据库操作的封装模块

    F.5.2  功能

       对数据库的增删查改进行功能封装,提供统一的接口

    F.5.3  性能

    功能操作

    模块组合

    资源占用时间(ms)

    校园身份认证

    网络模块、数据库模块

     

    20

    微信登录

    登录模块、数据库模块、网络模块

     

    20

    发布功能

    功能模块、数据库模块、网络模块

     

    20

    发布讨论

    数据库模块、讨论模块

     

    100

    评论他人

    数据库模块、讨论模块、评论模块、网络模块

     

    20

    获取发布历史

    数据库模块、讨论模块、评论模块、功能模块、网络模块

     

    100

    获取讨论列表

    数据库模块、讨论模块、评论模块、网络模块

     

    100

    获取功能列表

    功能模块、网络模块、数据库模块

     

    50

    获取轮播图

    轮播图模块、数据库模块、网络模块

     

    20

    获取所有标记点

    数据库模块、网络模块、标记点模块

     

    20

    删除

    所有模块

     

    50

    添加标记点

    数据库模块、网络模块、标记点模块

     

    20

     

    F.5.4  输入项

    F.5.5  输出项

    操作反馈

    F.5.6  算法

    多表查询算法:

    一、交叉连接

      交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。

    例如:如果希望得到学生表和选课表两个关系模式的乘积,查询语句为:

          SELECT *

          FROM学生表CROSS JOIN选课表

    二、内连接

      内连接是一种最常用的连接类型。内连接查询实际上是一种任意条件的查询。使用内连接时,如果两个表的相关字段满足连接条件,就从这两个表中提取数据并组合成新的记录,也就是在内连接查询中,只有满足条件的元组才能出现在结果关系中。

    例如:要查询每个已经选课的学生的情况,查询语句为

    SELECT*

    FROM学生表INNER JOIN选课表ON学生表.学号=选课表.学号

    分类:

    1)等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

    2)不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

    3)自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

    三、自然连接

      如果在一个连接查询中,涉及到的两个表都是同一个表,这种查询就称为自连接查询。同一张表在FROM字句中多次出现,为了区别该表的每一次出现,需要为表定义一个别名。自连接是一种特殊的内连接,它是指相互连接的表在物理上为同一张表,但可以在逻辑上分为两张表。

     例如:要求检索出学号为20210的学生的同班同学的信息,查询语句为

     SELECT学生表.*

     FROM学生表JOIN学生表AS学生表1ON学生表.班级=学生表1.班级

     WHERE学生表1.学号='20210'

     

    四、外连接

      内连接的查询结果都是满足连接条件的元组。但有时我们也希望输出那些不满足连接条件的元组信息。比如,我们想知道每个学生的选课情况,包括已经选课的学生(这部分学生的学号在学生表中有,在选课表中也有,是满足连接条件的),也包括没有选课的学生(这部分学生的学号在学生表中有,但在选课表中没有,不满足连接条件),这时就需要使用外连接。外连接是只限制一张表中的数据必须满足连接条件,而另一张表中的数据可以不满足连接条件的连接方式。

    3种外连接:

    1)左外连接(LEFTOUTER JOIN)

      如果在连接查询中,连接管子左端的表中所有的元组都列出来,并且能在右端的表中找到匹配的元组,那么连接成功。如果在右端的表中,没能找到匹配的元组,那么对应的元组是空值(NULL)。这时,查询语句使用关键字LEFT OUTERJOIN,也就是说,左外连接的含义是限制连接关键字右端的表中的数据必须满足连接条件,而不关左端的表中的数据是否满足连接条件,均输出左端表中的内容。

      例如:要查询所有学生的选课情况,包括已经选课的和还没有选课的学生,查询语句为

      SELECT学生表.学号,姓名,班级,课程号,成绩

      FROM学生表LEFT OUTER JOIN选课表ON学生表.学号=选课表.学号

    左外连接查询中左端表中的所有元组的信息都得到了保留。

    2)右外连接(RIGHTOUTERJOIN)

      右外连接与左外连接类似,只是右端表中的所有元组都列出,限制左端表的数据必须满足连接条件,而不管右端表中的数据是否满足连接条件,均输出表中的内容。

      例如:同上例内容,查询语句为

      SELECT学生表.学号,姓名,班级,课程号,成绩

      FROM学生表RIGHTOUTERJOIN选课表ON学生表.学号=选课表.学号

    右外连接查询中右端表中的所有元组的信息都得到了保留。

    3)全外连接(FULL OUTER JOIN)

      全外连接查询的特点是左、右两端表中的元组都输出,如果没能找到匹配的元组,就使用NULL来代替。

      例如:同左外连接例子内容,查询语句为

      SELECT学生表.学号,姓名,班级,课程号,成绩

      FROM学生表FULL OUTER JOIN选课表ON学生表.学号=选课表.学号

    F.5.7  流程逻辑

    F.5.8  接口

    F.5.9  存储分配

    模块

    存储

    备注

    数据库

    内存:1GB

    硬盘:50GB

    必要可扩容

     

    F.5.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.5.11  限制条件

      数据库不在本地的需要访问网络

    F.5.12  测试计划

     

     

     

    测试名称

    值说明

    输入方式

    写入数据库

    1.每个数据表的测试数据应包括:输入完整,不完整,字段非法等情况

    2.多表插入,单表插入

    自动输入

    查询数据库

    单表查询,多表查询

    自动输入

    从数据库删除

    自动输入

    F.5.13  尚未解决的问题

      大数据量下的数据库的分库分表操作

     

    F.6 讨论模块

    F.6.1  程序描述

        对用户讨论功能的封装,提供统一接口。

    F.6.2  功能

        将讨论功能进行封装,负责与底层数据库交互,提供统一的添加,修改和删除接口。

    F.6.3  性能

    功能

    模块组合

    延时(ms)

    发布讨论

    数据库模块、讨论模块

    网络:1000

    数据库:100

    获取讨论列表

    数据库模块、讨论模块、评论模块、网络模块

    网络:1000

    数据库:100

     

    F.6.4  输入项

    操作

    输入

    输出

    格式

     

    发布讨论

    uid

    discussionCode

    locationID

    code

    msg

    uid

    identity

    datatype

    data:[

    discussionID  

    presenttime

    locationID

    locationLatitude

    locationLongitude

    ]

    json/POST

     

    获取讨论列表

    locationID

    uid

    code

    msg

    dataType

    data:[

    {

    discussionID

    discussionCode

    discussioncontent:

    uNickName

    uavaUrl

    imgUrls:[]

    presenttime

    locationID

    locationLatitude

    locationLongitude:

    comment:[

    {commentID

    commentcontent

    uNickName

    uorNickName}]}]

    json/POST

                 

    F.6.5  输出项

    F.6.4  输入项

    F.6.6  算法

    F.6.7  流程逻辑

    (1)发布

     

    (2)获取

    F.6.8  接口

    F.6.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

     

    F.6.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.6.11  限制条件

    F.6.12  测试计划

    结合评论模块、网络模块、数据库模块进行测试

    F.6.13  尚未解决的问题

     

    F.7 评论模块

    F.7.1  程序描述

    评论模块主要是对校园论坛讨论的评论模块,通过发布评论,用户可以在线参与标记点的讨论建设。评论模块,提供一个评论收集与显示的界面。

    F.7.2  功能

    用户在评论界面,根据界面信息的渲染,对某些标记点的相关讨论评论进行展示。其逻辑为用户对某特定标记点发出评论列表的请求,向讨论表获取对应的评论列表,然后得到对应信息更新到界面中去。

    如果用户想要发布某些评论,发出发布评论请求,将评论更新到评论表中。

    功能

    输入

    输出

    格式/请求

    评论他人

    uid

    uidor

    discussionID

    commentCode

    locationID

    code

    msg

    datatype

    commentID

    json/POST

     

    F.7.3  性能

     

    运行

    精度

    响应时间(ms)

    评论某人

    数据库的写入与查询,精度较高

    200

     

     

     

    F.7.4  输入项

    输入输出等参考功能F.7.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.7.5  输出项

    输入输出等参考功能F.7.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.7.6  算法

    F.7.7  流程逻辑

    F.7.8  接口

    F.7.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

     

    F.7.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.7.11  限制条件

    评论界面类似微信朋友圈的风格,但是只有评论内容的显示,对评论内容的文字长度也有部分限制。

    F.7.12  测试计划

    结合讨论模块,网络模块一起测试,这里不做解释。

    F.7.13  尚未解决的问题

     

    F.8 功能模块

    F.8.1  程序描述

    功能模块主要是对校园固定标记点进行功能信息的采集与标签化的模块,通过发布功能系统,采集用户对标记点的功能模块化介绍,以及标签的集成处理,得到对应的功能介绍。

    F.8.2  功能

    用户在功能界面,根据界面信息的渲染,对某些标记点的功能信息进行展示。其逻辑为用户对某特定标记点发出功能列表的请求,向功能表获取对应的功能列表,然后得到对应信息更新到标记点表中。

    如果用户想要发布某些功能信息,发出发布功能请求,将功能描述更新到功能表中。

    功能

    输入

    输出

    格式/请求

    获取功能列表

    uid

    locationID

    dataType

    code

    msg

    data:[{

    functionID:

    functionCode

    functioncontent

    functiondesription:

    locationID

    locationLatitud

    locationLongitude

    }]

    json/POST

    发布功能

    uid

    functionCode

    locationID

    code

    msg

    uid

    identity

    datatype

    data:[

    {functionID

    functioncontent

    functiondescription

    locationID

    locationdescription

    locationLatitude  

    locationLongitude}]

    json/POST

    F.8.3  性能

    运行

    精度

    响应时间(ms)

    发布功能

    根据对应的数据项多少,其性能可能略有些区别

    200

     

    得到功能列表

    数据库的表项查询精度较高,查询速度响应较快

    20

    F.8.4  输入项

    输入输出等参考功能F.8.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.8.5  输出项

    输入输出等参考功能F.8.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.8.6  算法

    F.8.7  流程逻辑

    F.8.8  接口

    F.8.9  存储分配

     

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

     

    F.8.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.8.11  限制条件

          无

    F.8.12  测试计划

    结合网络模块、数据库模块进行测试

    F.8.13  尚未解决的问题

     

    F.9 标记点模块

    F.9.1  程序描述

    标记点模块主要负责针对电子科技大学校园地图界面上出现的标记点进行管理。

    F.9.2  功能

    地图界面的展示的所有标记点就是标记点模块的功能,用户自动产生查询所有标记点的请求,标记点模块根据特定语句查询标记点表中的所有标记信息,并根据界面显示需要,渲染出对应的标记点状态信息。

    功能

    输入

    输出

    格式、请求

    获取所有标记点

    uid

    dataType:

    code

    msg

    locationID:[]

    json/POST

    F.9.3  性能

    运行

    精度

    响应时间(ms)

    标记点管理

    数据库的表项查询精度较高,查询速度响应较快

    20

     

    F.9.4  输入项

    输入输出等参考功能F.9.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.9.5  输出项

    输入输出等参考功能F.9.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.9.6  算法

    F.9.7  流程逻辑

     

     

    F.9.8  接口

    F.9.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

    F.9.10  注释设计

    1. 单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.9.11  限制条件

    对于合理的标记点,后台管理系统必须要有初步审查的过程,管理员手动编辑标记点的合法性,普通用户无法主动更新及添加合法标记点。

    F.9.12  测试计划

    测试名称

    值说明

    输入方式

    写入数据库

    1.每个数据表的测试数据应包括:输入完整,不完整,字段非法等情况

    2.多表插入,单表插入

    自动输入

    查询数据库的所有标记点

    多表查询

    自动输入

    从数据库删除非法标记点

    自动输入

    F.9.13  尚未解决的问题

    用户无法根据实际需要添加更多标记点,后台管理员系统需要手动编辑合法标记点,提供用户固定的标记点信息推送。

     

     

     

     

     

    F.10 微信授权模块

    F.10.1  程序描述

    微信授权模块主要是请求微信用户的授权,以及得到用户微信基本信息。基于微信平台,对用户进行授权请求,根据登录凭证校验请求对用户进行校验。根据用户校验的自定义登录态,写入用户信息表中。

    F.10.2  功能

    用户在微信授权界面,根据微信系统的载入提示,根据启用协议的凭证验证请求结果对该小程序的启用结果进行永久存储,对得到授权的用户信息写入用户信息表。

    功能

    输入

    输出

    格式/请求

    微信登录

    code

    encryptedData

    iv

    codemsguid

    uNickNameuavaUrl:

    json/POST

    F.10.3  性能

    运行

    精度

    响应时间(ms)

    微信授权

    基于微信平台的认证,对用户的凭证请求做出正确的响应

    500

     

    F.10.4  输入项

    输入输出等参考功能F.10.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.10.5  输出项

    输入输出等参考功能F.10.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.10.6  算法

    数据签名校验方法

        为了确保开放接口返回用户数据的安全性,微信会对明文数据进行签名。开发者可以根据业务需要对数据包进行签名校验,确保数据的完整性。

        通过调用接口(如 wx.getUserInfo)获取数据时,接口会同时返回 rawData、signature,其中 signature = sha1( rawData + session_key )

    开发者将 signature、rawData 发送到开发者服务器进行校验。服务器利用用户对应的 session_key 使用相同的算法计算出签名 signature2 ,比对 signature 与 signature2 即可校验数据的完整性。

    如 wx.getUserInfo的数据校验:

    接口返回的rawData:

     

    {

      "nickName": "Band",

      "gender": 1,

      "language": "zh_CN",

      "city": "Guangzhou",

      "province": "Guangdong",

      "country": "CN",

    "avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"

    }

    用户的 session-key:

    HyVFkGl5F5OQWJZZaNzBBg==

    用于签名的字符串为:

     

    {"nickName":"Band","gender":1,"language":"zh_CN","city":"Guangzhou","province":"Guangdong","country":"CN","avatarUrl":"http://wx.qlogo.cn/mmopen/vi_32/1vZvI39NWFQ9XM4LtQpFrQJ1xlgZxx3w7bQxKARol6503Iuswjjn6nIGBiaycAjAtpujxyzYsrztuuICqIM5ibXQ/0"}HyVFkGl5F5OQWJZZaNzBBg==

    使用sha1得到的结果为

      75e81ceda165f4ffa64f4068af58c64b8f54b88c

    加密数据解密算法:

        接口如果涉及敏感数据(如wx.getUserInfo当中的 openId 和 unionId),接口的明文内容将不包含这些敏感数据。如需要获取敏感数据,需要对接口返回的加密数据(encryptedData) 进行对称解密。 解密算法如下:

    (1)对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。

    (2)对称解密的目标密文为 Base64_Decode(encryptedData)。

    (3)对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是    16字节。

    (4)对称解密算法初始向量 为Base64_Decode(iv),其中iv由数据接口返 回。

    F.10.7  流程逻辑

     

    F.10.8  接口

    F.10.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

    F.10.10  注释设计

    1.单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.10.11  限制条件

    如需获取用户头像、昵称等信息,会弹出登录弹窗引导用户授权,开发者在交互设计上兼容弹窗,避免出现多个弹窗叠加、重复提示等不好的体验。

    F.10.12  测试计划

    测试名称

    值说明

    输入方式

    请求微信服务器(服务器网络模块)

    客户端从微信获取的code

      和加密数据

    自动输入

    F.10.13  尚未解决的问题

          无

     

     

    F.11 校园身份认证模块

    F.11.1  程序描述

    校园身份认证模块主要是对校园用户的身份进行认证,基于电子科技大学信息门户平台,对学生以及教职工进行认证,根据认证结果对用户提供对应服务。根据实际用户身份的认证状态,写入用户信息表中。

    F.11.2  功能

         用户在校园身份认证界面,提供对应正确的学号以及密码,小程序的认证模块基于电子科大的信息门户系统,对其输入身份信息进行验证,根据认证结果对用户提供对应的服务,并将其认证结果写进用户信息表。

     

    功能

    输入

    输出

    格式/请求

    校园身份认证

    openid、学号、密码

    code、msg

    identity

    json/POST

    F.11.3  性能

    运行

    精度

    响应时间(ms)

    校园身份认证

    基于电子科大信息门户的认证精度,对正确的学号及密码能够正确认证

    1000

     

    F.11.4  输入项

    输入输出等参考功能F.11.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.11.5  输出项

    输入输出等参考功能F.11.2;

    安全保密:对请求数据进行签名,防止非法请求和重放攻击,同时,对用户敏感数据进行加密;

    F.11.6  算法

    用户密码加密算法采用AES对称加密,加密流程如下:

    解密流程(encryptedData 为加密数据):

    (1)对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充。

    (2)对称解密的目标密文为 Base64_Decode(encryptedData)。

    (3)对称解密秘钥 aeskey = Base64_Decode(session_key), aeskey 是    16字节。

    (4)对称解密算法初始向量 为Base64_Decode(iv),其中iv由数据接口返 回。

    F.11.7  流程逻辑

                          

    F.11.8  接口

    F.11.9  存储分配

    软件

    存储分配

    备注

    客户端

    内存:500KB(<=2MB),本地存储:10MB

    微信限制

    数据库

    内存:1GB;

    硬盘:50GB

    适当情况下可扩容

    F.11.10  注释设计

    1.单行注释(single-line)://注释内容

      一次只能注释一行,一般是简单注释,用来简短描述某个变量或属性,程序块。

    2.块注释(block):/*注释内容*/

     为了进行多行简单注释,一般不使用。

    3.文档注释:/**注释内容 */

     /**

     * projectName: xxx

     * fileName: xxx

     * packageName: xxxx

     * date: 2019年6月18日下午12:28:39

     * copyright(c) 2019-2020 xxx

     */

    4.类注释

    类注释(Class)主要用来声明该类用来做什么,以及创建者、创建日期版本、包名等一些信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @className: user

     * @packageName: user

     * @description: 这是用户类

     * @data: 2019-06-28 12:20

     **/

    5.方法注释

    方法注释(Methods)主要用来声明该类的作用、入参、返回值、异常等信息:

    /**

     * @version: V1.0

     * @author: Lulusimili

     * @methodsName: addUser

     * @description: 添加用户

     * @param:  xxxx

     * @return: String

     * @throws: IOException

     **/

    F.11.11  限制条件

    需要根据电子科技大学信息门户验证系统保持一致,如果电子科技大学信息门户验证界面有部分更新(如多次输入后,可能需要用户输入图片验证码),小程序的校园身份认证模块也要及时更新。

    F.11.12  测试计划

    测试名称

    输入项

    输入方式

    结果

    说明

    请求电子科技大学信息门户验证平台

    学号或工号,密码

    手动输入

    验证成功

    多次请求电子科技大学信息门户验证平台

    学号或工号,密码,验证码

    手动输入

    验证成功

    多次输入错误,强制输入图片验证码

    F.11.13  尚未解决的问题

       无

     

     

    展开全文
  • 详细设计模板

    千次阅读 2019-06-19 16:20:12
    说明编写详细设计方案的主要目的。 说明书编制的目的是说明一个软件系统各个层次中的每个程序(每个模块或子程序)和数据库系统的设计考虑,为程序员编码提供依据。 如果一个软件系统比较简单,层次很少,本文件...

     

    1 引言

    1.1 编写目的

    说明编写详细设计方案的主要目的。

    说明书编制的目的是说明一个软件系统各个层次中的每个程序(每个模块或子程序)和数据库系统的设计考虑,为程序员编码提供依据。

    如果一个软件系统比较简单,层次很少,本文件可以不单独编写,和概要设计说明书中不重复部分合并编写。

    方案重点是模块的执行流程和数据库系统详细设计的描述。

    1.2 背景

    应包含以下几个方面的内容:

    A. 待开发软件系统名称;

    B. 该系统基本概念, 如该系统的类型、从属地位等;

    C. 开发项目组名称。

    1.3 参考资料

    列出详细设计报告引用的文献或资料,资料的作者、标题、出版单位和出版日期等信息,必要时说明如何得到这些资料。

    1.4 术语定义及说明

    列出本文档中用到的可能会引起混淆的专门术语、定义和缩写词的原文。

    2 设计概述

    2.1 任务和目标

    说明详细设计的任务及详细设计所要达到的目标 。

    2.1.1需求概述

    对所开发软件的概要描述, 包括主要的业务需求、输入、输出、主要功能、性能等,尤其需要描述系统性能需求。

    2.1.2 运行环境概述

    对本系统所依赖于运行的硬件,包括操作系统、数据库系统、中间件、接口软件、可能的性能监控与分析等软件环境的描述,及配置要求。

    2.1.3 条件与限制

    详细描述系统所受的内部和外部条件的约束和限制说明。包括业务和技术方面的条件与限制以及进度、管理等方面的限制。

    2.1.4 详细设计方法和工具

    简要说明详细设计所采用的方法和使用的工具。如HIPO图方法、IDEF(I2DEF)方法、E-R图,数据流程图、业务流程图、选用的CASE工具等,尽量采用标准规范和辅助工具。

    3 系统详细需求分析

    主要对系统级的需求进行分析。首先应对需求分析提出的企业需求进一步确认,并对由于情况变化而带来的需求变化进行较为详细的分析。

    3.1 详细需求分析

    包括:

    • 详细功能需求分析
    • 详细性能需求分析
    • 详细资源需求分析
    • 详细系统运行环境及限制条件分析

    3.2 详细系统运行环境及限制条件分析接口需求分析

    包括:

    • 系统接口需求分析
    • 现有硬、软件资源接口需求分析
    • 引进硬、软件资源接口需求分析

    4 总体方案确认

    着重解决系统总体结构确认及界面划分问题。 

    4.1 系统总体结构确认

    对系统组成、逻辑结构及层次进行确认,对应用系统、支撑系统及各自实现的功能进行确认,细化集成设计及系统工作流程,特别要注意因软件的引进造成的系统本身结构和公司其他系统的结构变化。包括:

    Ÿ   系统组成、逻辑结构及层次确认

    Ÿ   应用系统结构确认

    Ÿ   支撑系统结构确认

    Ÿ   系统集成确认

    Ÿ   系统工作流程确认

    4.2 系统详细界面划分

    4.2.1 应用系统与支撑系统的详细界面划分

    应用系统与支撑系统之间的界面包括系统主服务器与其他服务器的服务范围及访问方式,网络及数据库对应用系统的支撑方式,全局数据的管理与存取方式等。

    4.2.2 系统内部详细界面划分

    系统各功能之间的界面包括覆盖范围,模块间功能调用涉及到的系统模块及方法,全局数据格式,系统性能要求等。

    5 系统详细设计

    5.1 系统结构设计及子系统划分

    对系统的组成及逻辑结构进行设计前确认。

    划分系统功能模块或子系统(如果有或者有必要,特别是大型的软件系统)。

    5.2 系统功能模块详细设计

    按结构化设计方法,在系统功能逐层分解的基础上,对系统各功能模块或子系统进行设计。此为详细设计的主要部分之一。

    用层次图描述系统的总体结构、功能分解及各个模块之间的相互调用关系和信息交互,用IPO图或其他方法描述各模块完成的功能。 以上建议采用HIPO图进行功能分解与模块描述,更高的要求建议采用IDEF0方法进行功能模型设计。

    详细设计应用系统的各个构成模块完成的功能及其相互之间的关系,用IPO或结构图描述各模块的组成结构、算法、模块间的接口关系,以及需求、功能和模块三者之间的交叉参照关系。

    每个模块的描述说明可参照以下格式:

    模块编号:

    模块名称:

    输入:

    处理:

    算法描述:

    输出:

    其中处理和算法描述部分主要采用伪码或具体的程序语言完成。

    对详细设计更高的要求建议用IDEF0图进行各功能模块的设计。

    如果对软件需进行二次开发(包括功能扩展、功能改造、用户界面改造等),则相应的设计工作应该设立子课题完成。

    5.3 系统界面详细设计

    系统界面说明应用系统软件的各种接口。整个系统的其他接口(如系统硬件接口、通讯接口等)在相应的部分说明。

    5.3.1 外部界面设计

    根据系统界面划分进行系统外部界面设计,对系统的所有外部接口(包括功能和数据接口)进行设计。

    5.3.2 内部界面设计

    设计系统内部各功能模块间的调用关系和数据接口。

    5.3.3 用户界面设计

    规定人机界面的内容、界面风格、调用方式等,包括所谓的表单设计、报表设计和用户需要的打印输出等设计。此部分内容可能比较多。

    6 数据库系统设计

    此数据库设计可单独成册,尤其对大型的数据库应用系统,即有一个单独的《数据库设计说明书》。

    6.1设计要求

    6.2 信息模型设计

    确定系统信息的类型(实体或视图),确定系统信息实体的属性、关键字及实体之间的联系,详细描述数据库和结构设计,数据元素及属性定义,数据关系模式,数据约束和限制。

    6.3 数据库设计

    6.3.1 设计依据

    说明数据被访问的频度和流量,最大数据存储量,数据增长量,存储时间等数据库设计依据。

    6.3.2 数据库种类及特点

    说明系统内应用的数据库种类、各自的特点、数量及如何实现互联,数据如何传递。

    6.3.3 数据库逻辑结构

    说明数据库概念模式向逻辑模式转换所采用的方法论及工具,完成数据库概念模式向逻辑模式的转换。详细列出所使用的数据结构中每个数据项、记录和文件的标识、定义、长度及它们之间的相互关系。此节内容为数据库设计的主要部分。

    6.3.4 物理结构设计

    列出所使用的数据结构中每个数据项的存储要求、访问方法、存取单位和存取物理关系等。建立系统程序员视图,包括:

    Ÿ  数据在内存中的安排,包括对索引区、缓冲区的设计;

    Ÿ  所使用的外存设备及外存空间的组织,包括索引区、数据块的组织与划分;

    Ÿ  访问数据的方式方法。

    6.3.5 数据库安全

    说明数据的共享方式,如何保证数据的安全性及保密性。

    6.3.6 数据字典

    编写详细的数据字典。 对数据库设计中涉及到的各种项目,如数据项、记录、系、文卷模式、子模式等一般要建立起数据字典,以说明它们的标识符、同义名及有关信息。

    7 信息编码设计

    7.3 代码结构设计

    确认信息分类编码总体方案,进行分类代码结构设计。

    7.4 代码编制

    按代码结构编制信息代码

     

    其他模板:

    参考模板1

    展开全文
  • 流量管理详细设计

    千次阅读 2020-03-23 11:27:25
    流量管理详细设计: 流量管理详细设计: svn地址:4.DevelopLibrary\12.CodeLibrary\2.DetailedDesign(DD)\01_API详细设计 根据ue做详细设计: 负责内容:充值结果通知、流量预警接口(提供给移动)、充值...
  • 详细设计文档

    千次阅读 2019-06-13 15:30:00
    详细设计文档 1.引言 随着广大在校大学生生活水平的提高,在假期选择外出旅游的学生愈加增多,针对大学生群体的旅游APP就显得很有市场价值。 1.1编写目的 本节描述软件详细设计文档的目的是: 定义软件总体要求...
  • 软件详细设计文档

    千次下载 热门讨论 2008-06-09 23:17:23
    软件设计详细说明,开发流程等
  • 大白话彻底搞懂HBase RowKey详细设计

    万次阅读 多人点赞 2020-05-08 14:18:42
    本文从RowKey的原理,可能出现的问题,如何优化及各个优化措施对应的缺点和适用的场景,设计原则等角度对RowKey进行了详细全面的解析,相信一定能对你有所帮助。
  • 软件设计---概要设计和详细设计

    千次阅读 2019-10-30 22:57:28
    软件设计是需求工程的后续...一般把软件设计分为概要设计和详细设计两个阶段,包括体系结构设计、界面设计、数据设计和过程设计。 1.概要设计: 也称总体设计,主要任务是基于数据流图和数据字典,确定系统的整体...
  • 软件工程——总体设计与详细设计

    千次阅读 2020-05-14 11:12:37
    需求分析确定了系统的开发目标,下一步工作就是软件设计。软件设计可以进一步地 分为两个阶段:总体设计和详细设计
  • 概要设计与详细设计的区别

    千次阅读 2019-09-26 10:35:15
    #概要设计与详细设计的区别如下: 1、概要设计的主要任务是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系...
  • 概要设计和详细设计(软件)

    千次阅读 2020-05-20 09:52:25
    概要设计和详细设计 在软件设计中,大家经常问到的一个问题是:概要设计应该怎样一个概要法,详细设计应该怎样一个详细法? 一般公司的研发流程是瀑布型的,这个模型中的分析、设计阶段是基于经典的结构化方法。...
  • 如何写详细设计文档

    万次阅读 2018-05-30 09:57:55
    在大多数软件项目中,要末不作详细设计,要么开发完成后再补详细设计文档,质量也不容乐观,文档与系统往往不能同步,使详细设计文档完全流于形式,对工作没有起到实际的帮助。那到底应不应该写详细设计文档呢,怎么...
  • 详细设计文档3.0

    千次阅读 2019-06-19 15:05:00
    详细设计文档 1.引言 随着广大在校大学生生活水平的提高,在假期选择外出旅游的学生愈加增多,针对大学生群体的旅游APP就显得很有市场价值。 1.1编写目的 本节描述软件详细设计文档的目的是: 定义软件总体要求...
  • 总体设计和详细设计怎么写?

    千次阅读 2019-09-10 11:21:35
    站位 站位 站位 站位 站位 首先总体设计 背景 整体设计图 名词定义 用于干什么 用途 包含了什么 站位 详细设计
  • 概要设计&详细设计 的理解

    千次阅读 2016-08-25 10:17:45
    概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。 详细设计 在概要设计...
  • 详细设计写些啥

    万次阅读 2018-05-30 10:22:15
    什么是详细设计详细设计是相对概要设计而言的,是瀑布开发流程的一个重要环节,在概要设计的高层设计的基础上,从逻辑上实现了每一模块的功能,是编码阶段的主要参考资料,是从高层到低层、逐步精化思想的具体实现。...
  • 详细设计文档包含概要设计文档的全部内容(不是绝对),也就是详细设计文档,其实是在概要设计文档的基础上进一步填充内容而得到的。那为什么还要分概要设计和详细设计文档呢,以房子为例:开发商只开发毛坯房,那么...
  • 概要设计与详细设计

    2013-03-09 08:43:57
    概要设计就是设计软件的结构,包括组成模块,... 详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。     概要设计阶段通常得到软件结构图 详细设计阶段常用
  • 【软件工程】 详细设计

    千次阅读 2019-06-01 18:04:32
    详细设计(过程设计): 文章目录一.详细设计的任务二.详细设计的方法 一.详细设计的任务 1.为每个模块确定采用的算法 2.确定每一模块使用的数据结构 3.确定模块接口的细节 4.要为灭一个模块设计出一组测试...
  • 概要设计和详细设计的区别

    万次阅读 2015-12-16 20:36:28
    概要设计与详细设计的区别   概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储...
  • 系统详细设计过程指南

    千次阅读 2020-01-16 22:45:34
    为规范研发团队的详细设计过程,提高设计质量与设计输出能力,特编制此文档。 设计过程 为便于理解系统设计的整个过程,本文选取最为常见的用户登录认证的需求为示例,通过该需求的设计过程中的每一步,设计人员可...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,806
精华内容 27,922
关键字:

详细设计