【软件工程】详细设计文档——详细设计说明书

【软件工程】详细设计文档——详细设计说明书文章目录1引言1.1编写目的1.2项目背景1.3定义1.4参考资料2总体设计2.1需求概述2.2软件结构3模块描述3.1模块基本信息3.2功能概述3.3算法3.4模块处理逻辑3.5接口3.6性能3.7测试计划1引言1.1编写目的​ ​ 本报告的目的是对Asking进行详细设计说明,以便用户及项目开发人员了解产品详细的设计与实现。为开发人员提供开发参考书。以下叙述将结合文字描述、伪代码,图表等来描述Asking的详细设计和相关的模块描述。本报告的预期读者有客户、项目经

大家好,又见面了,我是你们的朋友全栈君。

【备注】本说明书由华中农业大学2018级计算机科学与技术专业的刘畅、刘铠铭、张清望、卢家伟四位同学共同完成。

1 引言

1.1 编写目的

​ ​ 本报告的目的是对Asking进行详细设计说明,以便用户及项目开发人员了解产品详细的设计与实现。为开发人员提供开发参考书。以下叙述将结合文字描述、伪代码,图表等来描述Asking的详细设计和相关的模块描述。本报告的预期读者有客户、项目经理、开发人员以及跟该项目相关的其他竞争人员。

1.2 项目背景

(1)项目名称:Asking

(2)任务提出者:刘畅、卢家伟、刘铠铭、张清望

(3)开发者:辣鸡搬砖喵喵团队

(4)用户:喜欢社交并且有想法的年轻人群体

(5)实施单位:辣鸡搬砖喵喵团队

1.3 定义

(1)问题箱:一种私密问题。该类问题的回答者仅可以通过Id搜索到问题,输入密钥后查看,并且所有回答都是匿名状态。

(2)硬币:软件内虚拟货币。每日签到可以获取2枚硬币,为赞同的回答点赞时会消耗硬币,并且该硬币会转移给回答者。

(3)称号:根据持有硬币数所给予的等级,依次为:见习、水手、舰长、提督、总督。称号等级高者可表明他收到过大量的赞或者使用此软件的时间较长。

1.4 参考资料

[1]窦万峰.软件工程方法与实践(第三版).北京:机械工业出版社,2016

[2]普莱斯曼.软件工程:实践者的研究方法(原书第8版).北京:机械工业出版社,2016

[3] 辣鸡搬砖喵喵团队.Asking需求规格说明书.

[4] 辣鸡搬砖喵喵团队.Asking软件概要设计说明书

2 总体设计

2.1 需求概述

功能需求:

(1)搜索:通过问题标题或标签进行模糊搜索显示结果列表,通过问题箱id精确搜索并显示该问题箱的界面。

(2)提问、删除问题:提出问题、删除自己提出的问题。

(3)创建、删除问题箱:创建问题箱并分享给好友、删除自己创建的问题箱。

(4)查看、回复问题:查看该问题及其回答、回答该问题。

(5)增加、删除回答:回答别人提出的问题,删除自己做出的回答。

(6)个人中心:查看基本资料和功能列表,可以签到、修改资料。

非功能需求:

(1)数据需求:用户信息、问题信息、问题的回复、问题箱信息和问题箱回复。用户自己输入的问题箱密钥、判断用户某一个行为后的状态码和提示消息。

(2)性能需求:用户名、密码和问题ID有相应的精度要求。对于响应时间、更新处理时间和数据的转换及传送时间有相应的时间限制。

(3)运行需求:用户界面在用户操作后发出相应的响应。软件接口和硬件接口提供限制。

2.2 软件结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aBAVcBcW-1618229632008)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps2.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图1 Asking系统的第一级分解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nSkLgYOR-1618229632011)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps3.jpg)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图2 Asking系统的软件结构

​ ​ ​软件结构图的总体解释说明:Asking系统向下划分为用户登录,系统主控界面两个模块。用户登录主要负责接收用户的输入并进行相应的处理,在这一步信息由外部形式变换成内部数据形式,这被标识为输入流。系统主控界面子系统主要负责响应用户进行的相关操作,该子系统是软件的核心,输入数据经过一系列加工处理,这被标识为变换流。并将处理后得到的相关信息转换成用户可见的形式,即最终将变化流转换成输出流。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4c62FQ8d-1618229632013)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps4.jpg)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图3 系统物理体系结构

如图3所示是对系统的物理体系结构进行详细的描述。

3 模块描述

3.1 模块基本信息

表1 模块基本信息表

名称 编号 设计者 所在文件 所在包
用户登录模块 1.1 张清望 .\controller\UserController.java.\entity\User asking.controllerasking.entity
新用户注册模块 1.2 张清望 . \controller\UserController.java.\entity\User asking.controllerasking.entity
个人信息管理 2.1 卢家伟 . \controller\UserController.java.\entity\User asking.controllerasking.entity
搜索问题 2.2 卢家伟 . \controller\UserController.java.\asking\Answer asking.controllerasking.entity
问题推送 2.3 卢家伟 . \controller \AskingApplication.java.\asking\Answer asking.controllerasking.entity
提问管理 2.4 刘畅 . \controller\QuestionController.java. \controller\QuestionBoxController.java asking.controller
回答管理 2.5 刘铠铭 . \controller\QuestionController.java. \controller\QuestionBoxController.java asking.controller
问题查看 2.6 刘畅 . \controller\QuestionController.java. \controller\QuestionBoxController.java asking.controller
回答查看 2.7 刘铠铭 . \controller\AnswerController.java. \controller\BoxAnswerController.java asking.controller

​ 如表1所示,说明了各个模块的基本信息,包括模块名称、编号、设计者、所在文件和所在包。

3.2 功能概述

表2 功能描述

编号 说明
0 11.11.1.1 1.21.1.21.1.32.12.1.12.1.22.32.42.4.12.4.22.52.5.12.5.22.62.7 Asking系统:用户登录和新用户注册,个人信息管理,搜索问题,问题推送,提问管理,回答管理,问题查看用户登录,新用户注册获取用户输入的用户名和密码根据用户输入的用户名和密码同用户信息库中的信息核对,并产生登录情况信息获取用户输入的个人信息对新用户输入的个人信息进行合法性检验将检验合格的用户信息存入用户信息库输入信息,执行修改获取用户要修改的信息根据用户输入的修改信息修改用户信息库用户进入主控界面推送热门问题新建提问,删除提问根据输入的问题描述在问题数据库中创建问题记录删除已提出的问题新建回答,删除回答根据用户输入的问题回答在回答数据库创建回答记录并显示删除已存在的回答用户查看自己已经发布过的问题用户查看自己已经发布过的回答

如表2所示,表格第一列是模块编号,表格第二列是说明信息。该表对模块的功能进行了概述。

3.3 算法

3.4 模块处理逻辑

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Itp4KCsh-1618229632017)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps5.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图4 用户登录程序流程图

​ ​ ​图4是用户登录模块的程序流程图,该模块开始监听用户输入处于监听状态,若用户输入相应信息并且与用户信息库中的用户信息核对后正确用户进入主控界面,若用户未输入相应信息或者与用户信息库中的用户信息核对有误则系统继续处在监听状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I2T2RvrP-1618229632019)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps6.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图5 新用户注册程序流程图

​ ​ ​图5是新用户注册模块程序流程图,该模块开始处于等待用户注册的状态。如果用户提出注册请求就转入获取用户输入信息状态,获取用户输入信息若输入合法在用户信息库创建用户信息记录。如果用户未发出注册请求模块继续处在等待用户注册状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jfu0HI8J-1618229632021)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps7.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图6 搜索问题程序流程图

​ ​ ​ ​图6 是搜索问题模块的程序流程图,该模块首先进入等待用户输入搜索信息状态。如果用户已经输入则获取用户输入并根据输入的搜索关键字在问题信息库中匹配问题最后退出。如果用户未输入则模块继续处于等待用户输入搜索信息状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zbs5fUv2-1618229632022)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps8.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图7 问题推送程序流程图

​ ​ ​图7是问题推送模块程序流程图,模块开始进入监听状态,如果用户进入主界面则从问题数据库中抽取热门问题推送。如果用户未进入主界面则模块继续处于监听状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxiVYhrL-1618229632024)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps9.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图8 新建回答程序流程图

​ ​ ​图8是新建回答模块程序流程图,该模块开始进行用户是否回复判断,若用户进行回复则获取用户回复信息并且修改问题信息库之后进入用户是否点赞判断,若用户未回复则直接进入用户是否点赞判断。如果用户点赞则修改问题信息库中该问题的获赞数并修改用户信息库中用户的硬币数之后退出,如果用户未点赞则直接退出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jc7DFLSs-1618229632025)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps10.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图9 新建提问程序流程图

​ ​ 图9是新建提问模块程序流程图,该模块开始进入等待用户发出提问请求状态。若用户发出提问请求则模块进入获取用户输入问题描述处理,若用户未发出提问请求则模块继续处于等待用户发出提问请求状态。进入获取用户输入问题描述处理后判断用户的输入是否合法,若用户的输入合法则判断用户提问是否为问题箱问题,若用户的输入非法则继续处于获取用户输入问题描述状态。经判断若用户的提问为普通问题则在问题信息库中创建普通问题的记录,若用户的提问为问题箱问题则在问题信息库中创建问题箱问题的记录,最后退出。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1V9kEfWs-1618229632027)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps11.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图10 个人信息管理程序流程图

​ ​ ​图10是个人信息管理模块程序流程图,该模块首先进入等待用户修改个人信息请求状态。如果用户发出请求则获取用户输入修改的个人信息并修改用户信息库。如果用户未发出请求则模块继续处于等待用户修改个人信息请求状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PS6ygm9j-1618229632029)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps12.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图11 问题查看

​ ​ 如图11所示,该模块开始进入等待用户发出查看问题请求状态。如果用户发出查看问题请求则从问题信息库中得到该用户所有的问题并显示。如果用户未发出查看问题请求则继续处于等待用户发出查看问题请求状态。最后退出。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I2dqdBtN-1618229632032)(file:///C:\Users\User\AppData\Local\Temp\ksohtml1788\wps13.png)]

​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ 图12 回答查看

​ ​ ​如图12所示,该模块开始进入等待用户发出查看回答请求状态。如果用户发出查看回答请求则从回答信息库中得到该用户所有的回答并显示。如果用户未发出查看回答请求则继续处于等待用户发出查看回答请求状态。最后退出。

3.5 接口

表4 用户信息

数据名称 数据类型
用户名 char型
密码 char型
昵称 char型
个人签名 text型
等级 int型
硬币数 int型

表5 问题信息

数据名称 数据类型
问题ID int型
用户名 char型
问题标题 text型
问题内容 text型
问题标签 char型
问题创建时间 time型

表6 问题箱信息

数据名称 数据类型
问题箱ID int型
用户名 char型
问题箱密码 char型
问题箱标题 text型
问题箱内容 text型
问题箱创建时间 time型

表7 普通问题回答信息

数据名称 数据类型
回答ID long int型
问题ID int型
回答内容 text型
回答时间 time型

表8 问题箱问题回答信息

数据名称 数据类型
问题箱回答ID long int型
问题箱ID int型
问题箱回答内容 text型
问题箱回答时间 time型

3.6 性能

表9 数据精度

字段 精度 备注
用户名 char型 邮箱
密码 char型 8-12位
昵称 char型
用户是否存在 map型 前端传过来含有用户名和密码的json对象,后端接受到之后在数据库中匹配,返回是否匹配的信息给前端
问题箱ID int型

如表9所示,对不同字段的数据精度进行了详细要求。

时间特性:

(1)响应时间:用户任意操作后5秒内系统给予反馈信息。

(2)更新处理时间:由系统运行状态来决定。

(3)数据的转换和传送时间:能够在20秒内完成。

灵活性:

​ ​ 当需求发生某些变化时,该软件的基本操作、数据结构、运行环境等等基本不会发生变化,只是对系统的数据库的文件和记录进行处理,就可以满足需求。

3.7 测试计划

表10 初步测试计划

模块名称 输入数据 预期结果
新用户注册 123@qq.com 123 畅喵 用户数据库新增了该记录
用户登录 123@qq.com 123 登录成功进入主界面
问题推送 进入主界面 推送一些问题
搜索问题 畅喵 显示出畅喵的相关问题
提问管理 “畅喵的QQ是多少?”,普通问题 问题数据库中新增了该普通问题
提问管理 “畅喵的手机号是多少?”,问题箱问题 问题数据库中新增了该问题箱问题
回答管理 点击问题点赞 用户硬币数增多,问题数据库中该问题的点赞量加一
个人信息管理 修改昵称为“畅汪” 用户数据库该用户的昵称变为“畅汪”
问题查看 相关的问题可以正常显示
回答查看 相关的回答可以正常显示

如表10所示,以对应模块的输入数据和预期结果给出了初步的测试方案。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131094.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • java http协议_java编写协议

    java http协议_java编写协议前面一篇博客里面已经介绍过SSDP协议原理,本篇博客将实现实现Android上的SSDP协议。关键技术分析:1、发送广播;须要发送送广播,所以须要使用MulticastSocket、SocketAddress、InetAddress,须要掌握。2、SSDP数据报格式;标准的SSDPServer解析的时候对于分段的字段选用的特征码是”\r\n”,须要特别注意。3、訪问权限;须要互联网,要在Main…

    2022年10月11日
  • Linux环境redis集群搭建「建议收藏」

    (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下)127.0.0.1:7000127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003127.0.0.1:7004127.0.0.1:7005 1、安装redis上传服务器,解压,编译

  • linux-netstat

    linux-netstat

  • java socket通信中汉字乱码问题

    java socket通信中汉字乱码问题最

  • ChecklistBox的使用总结[通俗易懂]

    ChecklistBox的使用总结[通俗易懂]前言ChecklistBox看起来一个很简单的控件,使用的时候想要达到理想的效果是需要费一番功夫的,这篇博客对于近一两周来项目中主界面设计用到的ChecklistBox方法做了一点小小的总结。图示常用方法1.添加项checkedListBox1.Items.Add(“吃饭”);checkedListBox1.Items.Add(“睡觉”);checkedListB

  • cocoapods最新版本_cocoapods使用

    cocoapods最新版本_cocoapods使用CocoaPods简介CocoaPods负责管理iOS项目中第三方框架。CocoaPods的项目源码在Github上管理。项目从2011年8月12日开始,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。(练习时为了速度一般我都是直接导入工程中,个人比较讨厌写纯代码在Podfile文件中)开始安装安装需要用到Ruby,虽然Mac自带了Ruby,不过版本有点老了,最好更新一…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号