【备注】本说明书由华中农业大学2018级计算机科学与技术专业的刘畅、刘铠铭、张清望、卢家伟四位同学共同完成。
- 1 引言
- 1.1 编写目的
- 1.2 背景
- 1.3 术语和缩略词
- 1.4 参考资料
- 2 任务概述
- 2.1 项目概述
- 2.1.1 项目来源及背景
- 2.1.2 项目目标
- 2.1.3 系统功能概述
- 2.2 用户特点
- 2.3 假定和约束
- 3 功能需求
- 3.1 功能划分
- 3.1.1 系统功能组成
- 3.1.2 功能编号和优先级
- 3.2 功能描述
- 4 数据需求
- 4.1 静态数据
- 4.2 动态数据
- 4.3 数据字典
- 4.4 数据库描述
- 5 性能需求
- 5.1 数据精度
- 5.2 时间特性
- 5.3 灵活性
- 6 运行需求
- 6.1 用户界面
- 6.2 软件接口
- 6.3 硬件接口
- 7 其他需求
- 7.1 验收标准
- 7.2 质量属性
本文档的目的是详细地介绍Asking APP所包含的需求,以便客户能够确认产品的确切需求以及开发人员能够根据需求设计编码,以下叙述将结合文字描述、数据流图、ER图等来描述Asking APP的功能、性能、用户界面、运行环境、外部接口以及针对用户操作给出的各种响应。本文档的预期读者有客户、项目经理、开发人员以及跟该项目相关的其他竞争人员。
1.2 背景该项目适用于喜欢社交并且有想法的年轻人群体,由辣鸡搬砖喵喵团队进行后续的开发和实施工作。
1.3 术语和缩略词(1)问题箱:一种私密问题。该类问题的回答者仅可以通过Id搜索到问题,输入密钥后查看,并且所有回答都是匿名状态。
(2)硬币:软件内虚拟货币。每日签到可以获取2枚硬币,为赞同的回答点赞时会消耗硬币,并且该硬币会转移给回答者。
(3)称号:根据持有硬币数所给予的等级,依次为:见习、水手、舰长、提督、总督。称号等级高者可表明他收到过大量的赞或者使用此软件的时间较长。
1.4 参考资料[1]窦万峰.软件工程方法与实践(第三版).北京:机械工业出版社,2016
[2]普莱斯曼.软件工程:实践者的研究方法(原书第8版).北京:机械工业出版社,2016
2 任务概述 2.1 项目概述 2.1.1 项目来源及背景Asking APP是一款针对年轻人的咨询类社交软件,大家可以在这里分享自己有趣的想法,以及咨询自己的烦心事或畅聊每天的趣事,现在市场上大部分的咨询类社交软件都不仅仅是帮助用户解决问题,还掺杂了一些诸如推送广告、推销等的附带功能,所以我们推出Asking APP,主打咨询类社交,无其他附带功能。
2.1.2 项目目标该项目的市场目标为年轻人群体、咨询类社交软件市场,应用目标为实现咨询社交专一化,不掺杂其他功能。
2.1.3 系统功能概述(1)搜索:通过问题标题、标签或问题箱id进行模糊搜索显示结果列表。
(2)提问、删除问题:提出问题、删除自己提出的问题。
(3)创建、删除问题箱:创建问题箱并分享给好友、删除自己创建的问题箱。
(4)查看、回复问题:查看该问题及其回答、回答该问题。
(5)增加、删除回答:回答别人提出的问题,删除自己做出的回答。
(6)个人中心:查看基本资料和功能列表,可以签到、修改资料。
2.2 用户特点本产品的用户主要是20~35岁的年轻人群体,这类人群的主要特点是思维活跃,而且接受新鲜事物的能力比较强,他们时常浏览各大社交软件,发表自己的观点与想法,在Asking上可以提出自己的问题,同时也可以回答别人提出的问题,或者创建自己的私密问题,以满足自己的在一定程度上的社交需求。
2.3 假定和约束(1)人力和时间的约束:本APP开发过程中需要考虑到人力和时间的约束,相较于一些软件的开发团队来说人员较少时间较短。
(2)技术发展的约束:计算机技术和发展的日新月异,将会给信息处理带来更多手段,同时也会带来更加丰富的信息表达形式,例如现在发展起来的人工智能等等,可能导致我们在搜索问题的时候没有那么智能,这就要求软件在设计时要考虑技术变化的可能性,为可能的变化预留一定的处理能力。
3 功能需求 3.1 功能划分 3.1.1 系统功能组成(1)Asking的顶层数据流图
图 1 Asking顶层数据流图
描述:如图1所示,用户可以扮演两种角色——提问者、回答者。当用户扮演提问者的角色时,可以向Asking系统发送事务,同时提问者可以浏览Asking系统返回的事务,即提问者与Asking系统有双向的数据流动。当用户扮演回答者的角色时,可以向Asking系统发送事务,同时回答者可以浏览Asking系统返回的事务,即回答者与Asking系统也有双向的数据流动。
(2)Asking的0层数据流图
图 2 Asking 0层数据流图
描述:如图2所示,用户(包括两种角色——提问者、回答者)通过提交身份信息向用户登录事务发送请求。用户登录事务从用户信息库中读取相应的用户信息进行匹配判断登录结果。用户登录成功后,问题推送事务将要根据用户信息推送问题,用户可以进行个人信息管理、搜索问题、提问管理操作。用户进行搜索问题操作时,用户提供的搜索信息流动到搜索问题事务,搜索问题事务对搜索信息进行相应的处理后得到问题信息。系统对用户进行问题推送时,用户信息流动到问题推送事务,问题事务对用户信息进行处理得到请求信息。用户进行提问时,用户的提问者身份信息和提问信息流动到提问管理事务,提问管理事务对提问者身份信息和提问信息进行处理得到问题信息。以上三种操作分别得到问题信息、请求信息和问题信息,这三种信息均传送到问题信息库。问题信息库流出问题信息到问题查看事务,问题查看事务对问题信息处理后将得到的回答者身份信息和回答信息发送到问题回答管理事务。问题回答管理事务分别发送回答信息到回答信息库,发送问题列表到问题查看事务。
3.1.2 功能编号和优先级 功能编号功能优先级1用户登录高2个人信息管理中3搜索问题中4问题推送中5问题查看中6回答管理高7提问管理高8回答查看中 3.2 功能描述(1)用户登录
功能描述:如图3所示,用户登录可以分为注册和登陆。注册时用户提供新用户注册信息发往注册事务,注册事务根据新用户注册信息得到新用户信息存入用户信息库,同时流动出用户信息。登录时用户提供用户名和密码发往登录事务,登录事务将得到的用户名和密码与用户信息库中的信息匹配,同时流动出用户信息。
图 3 用户登录功能细化数据流图
表1 登录加工说明
加工名称:1.1 登录使用单位:所有用户输入部分 I处理描述 P输出部分 O·用户名、密码① 用户利用自己的用户名和密码进行登录。·用户信息表2 注册加工说明
加工名称:1.2 注册使用单位:用户输入部分 I处理描述 P输出部分 O·用户注册信息① 新用户输入用户名(邮箱)、密码、昵称进行注册·用户信息(2)个人信息管理
功能描述:用户登录后可以进行相应操作进入个人信息管理界面,用户可以在此页面修改自己的个人信息。
表3 个人信息管理加工说明
加工名称:2 个人信息管理使用单位:用户输入部分 I处理描述 P输出部分 O·当前用户信息① 用户对自己的个人信息进行修改和保存·修改后的个人信息(3)搜索问题
功能描述:如图4所示,用户在搜索栏输入相应的搜索信息。搜索信息可以是问题箱ID或者是问题标题。问题箱ID进入搜索问题箱事务,搜索问题箱事务处理传入的问题ID流动出问题箱内容。问题标题进入搜索问题事务,搜索问题事务处理传入的问题标题流动出问题内容。
图 4 搜索功能细化数据流图
表4 检索模式选择加工说明
加工名称:3.1 检索模式选择使用单位:用户输入部分 I处理描述 P输出部分 O·搜索信息① 用户输入想要搜索的信息,系统根据输入的信息判定搜索模式:是标题则是搜索普通问题、是ID则是搜索问题箱。·问题箱ID或问题标题表5 搜索问题箱加工说明
加工名称:3.2 搜索问题箱使用单位:用户输入部分 I处理描述 P输出部分 O·问题箱的ID① 系统根据输入的问题箱ID搜索问题箱·搜索到的问题箱内容表6 搜索问题加工说明
加工名称:3.3 搜索问题使用单位:用户输入部分 I处理描述 P输出部分 O·问题的标题① 系统根据输入的问题标题查找含有该字符的问题·搜索到的问题内容(4)问题推送
功能描述:用户选择该功能后,系统会发送请求,从问题库中选择较新和较热门的问题推送给用户。
表7 问题推荐功能加工说明
加工名称:4 问题推送使用单位:用户输入部分 I处理描述 P输出部分 O·用户信息系统根据用户信息推荐相关问题给用户·推荐的问题信息(5)问题查看
功能描述:用户可以查看问题的标题、标签、作者和描述,以及所有回答。
表8 问题查看功能加工说明
加工名称:5 问题查看使用单位:用户输入部分 I处理描述 P输出部分 O·问题信息系统根据问题信息将问题内容展示给用户·问题信息(6)回答管理
功能描述:如图5所示,回答问题信息进入功能划分事务,功能划分事务流动出回答信息及删除指令和回答信息。回答信息及删除指令进入删除回答事务,处理出待删除回答并存入回答信息库。回答信息进入问题分类事务,处理出匿名回答或记名回答,分别进入新增私密回答事务和新增普通回答事务,之后经过处理得到回答内容进入回答信息库。从回答信息库流动出回答列表。
图 5 回答管理功能细化数据流图
表9 功能划分加工说明
加工名称:6.1功能划分使用单位:回答者输入部分 I处理描述 P输出部分 O·回答信息身份信息或相关操作指令系统根据操作指令判定用户要执行什么功能·相关功能所需信息表10 删除回答加工说明
加工名称:6.2 删除回答使用单位:回答者输入部分 I处理描述 P输出部分 O·待删除回答信息系统根据输入的待删除回答信息删除该问题·删除记录表11 回答分类加工说明
加工名称:6.3 回答分类使用单位:回答者输入部分 I处理描述 P输出部分 O·回答信息系统根据回答信息是否匿名,分类为匿名回答和记名回答·分类后的回答信息表12 新增私密回答加工说明
加工名称:6.4 新增私密回答使用单位:回答者输入部分 I处理描述 P输出部分 O·匿名回答内容系统将回答内容写入数据库·回答内容表13 新增普通回答加工说明
加工名称:6.5新增普通回答使用单位:回答者输入部分 I处理描述 P输出部分 O·记名回答内容系统根据输入的回答写入数据库·回答内容(7)提问管理
功能描述:如图6所示,问题信息和身份信息进入功能划分事务,功能划分事务流动出问题信息及删除指令或问题信息。问题信息及删除指令进入删除问题事务,经过处理后流动出待删除问题存入到问题信息库。问题信息进入问题分类事务,问题分类事务处理问题信息分为问题箱问题和普通问题,分别进入新增问题箱事务和新增普通问题事务,之后处理得到问题内容存入问题信息库。从问题信息库流动出问题列表。
图 6 提问管理功能细化数据流图
表14 功能划分加工说明
加工名称:7.1功能划分使用单位:提问者输入部分 I处理描述 P输出部分 O·回问题信息身份信息或相关操作指令系统根据操作指令判定用户要执行什么功能·相关功能所需信息表15 删除问题加工说明
加工名称:7.2 删除问题使用单位:提问者输入部分 I处理描述 P输出部分 O·待删除问题信息系统根据输入的待删除问题信息删除该问题·删除记录表16 问题分类加工说明
加工名称:7.3 问题分类使用单位:提问者输入部分 I处理描述 P输出部分 O·问题信息系统根据问题信息是否含有密钥,分位普通问题和问题箱·分类后的问题信息表17 新增问题箱加工说明
加工名称:7.4 新增问题箱使用单位:提问者输入部分 I处理描述 P输出部分 O·问题箱内容系统将问题箱内容写入数据库·问题内容表18 新增普通问题加工说明
加工名称:7.5新增普通问题使用单位:提问者输入部分 I处理描述 P输出部分 O·普通问题内容系统根据输入的问题写入数据库·问题内容(8)回答查看
功能描述:列出对应问题的所有回答供用户查看
表19 查看回答加工说明
加工名称:8 回答查看使用单位:用户输入部分 I处理描述 P输出部分 O·问题列表系统根据问题列出该问题的所有回答·回答列表 4 数据需求 4.1 静态数据用户信息、问题信息、问题的回复、问题箱信息和问题箱回复。
4.2 动态数据用户自己输入的问题箱密钥、判断用户某一个行为后的状态码和提示消息。
4.3 数据字典1.数据流条目
(1)身份信息
名称身份信息简述描述提问者和回答者的身份来源提问者、回答者去处1用户登录(2)用户名
名称用户名简述用户登录的账号类型varchar长度1024来源1用户登录去处D1用户信息库(3)密码
名称密码简述用户登录的账号对应的密码类型varchar长度1024来源1用户登录去处D1用户信息库(4)搜索信息
名称搜索信息简述用户发出搜索问题的信息来源1用户登录去处3搜索问题(5)提问者身份信息
名称提问者身份信息简述描述提问者的身份信息来源1用户登录去处5提问管理(6)提问信息
名称提问信息简述用户发出提问问题的信息来源1用户登录去处5提问管理(7)请求信息
名称请求信息简述推送问题的请求信息来源4问题推送去处D2问题信息库(8)回答者身份信息
名称回答者身份信息简述描述回答者的身份信息来源5问题查看去处6回答管理(9)问题列表
名称问题列表简述描述问题的排列顺序来源6回答管理去处8回答查看(10)新用户注册信息
名称新用户注册信息简述新用户进行注册的信息来源用户去处1.2注册(11)问题箱ID
名称问题箱ID简述问题箱的编号类型int长度11来源3.1检索模式选择去处3.2搜索问题箱(12)问题箱内容
名称问题箱内容简述问题箱的内容类型text来源3.2搜索问题箱(13)问题标题
名称问题标题简述问题的概括性简述类型text来源3.1检索模型选择去处3.3搜索问题(14)问题内容
名称问题内容简述问题的内容类型text来源3.3搜索问题(15)删除指令
名称删除指令简述用户发出的删除问题或回答的指令来源6.1功能划分、7.1功能划分去处6.2删除回答、7.2删除问题(16)匿名回答
名称匿名回答简述用户匿名对问题的回答来源6.3回答分类去处6.4新增私密回答(17)记名回答
名称记名回答简述用户发出的删除问题或回答的指令来源6.3回答分类去处6.5新增普通回答(18)回答内容
名称回答内容简述用户回答问题的内容类型text来源6.4新增私密回答6.5新增普通回答去处D3回答信息库(19)待删除回答
名称待删除回答简述用户想要删除的回答来源6.2删除回答去处D3回答信息库(20)待删除问题
名称待删除问题简述用户想要删除的问题来源7.2删除问题去处D3问题信息库(21)问题箱问题
名称问题箱问题简述问题箱里面的问题来源7.3问题分类去处7.4新增问题箱(22)普通问题
名称普通问题简述普通问题来源7.3问题分类去处7.5新增普通问题2.数据存储条目
(1)用户信息
名称用户信息简述描述用户的信息组成用户名+密码+昵称+头像组织方式以用户名为关键字(2)新用户信息
名称新用户信息简述描述新用户的信息组成用户名+密码+昵称+头像+个性签名+性别+硬币数组织方式以用户名为关键字(3)问题信息
名称问题信息简述描述问题的信息组成问题编号+问题内容+问题标题+标签+问题创建时间+问题浏览量+问题评论量组织方式以问题编号为关键字(4)回答信息
名称回答信息简述描述回答的信息组成回答编号+回答内容+点赞量+回答时间组织方式以回答编号为关键字 4.4 数据库描述软件的数据库概念模型(ER图)
图 7 Asking 概念模型
由图7所示,该ER图中共有五个实体,分别为用户、问题、问题回复,问题箱和问题箱回复,其中用户以用户名为关键字,问题以其编号为关键字,问题回复以其编号为关键字,问题箱以其编号为关键字,问题箱回复以其编号为关键字,图中所有关系均为一对多的关系。
5 性能需求 5.1 数据精度 字段精度备注用户名char型邮箱密码char型8-12位昵称char型用户是否存在map型前端传过来含有用户名和密码的json对象,后端接受到之后在数据库中匹配,返回是否匹配的信息给前端问题箱IDint型 5.2 时间特性(1) 响应时间:用户任意操作后5秒内系统给予反馈信息。
(2) 更新处理时间:由系统运行状态来决定。
(3) 数据的转换和传送时间:能够在20秒内完成。
5.3 灵活性当需求发生某些变化时,该软件的基本操作、数据结构、运行环境等等基本不会发生变化,只是对系统的数据库的文件和记录进行处理,就可以满足需求。
6 运行需求 6.1 用户界面(1)注册:用户填写该页面的“用户名”、“昵称”、“密码”、“确认密码”信息后点击提交即可成功注册,返回“注册是否成功的消息”。
(2)登录:用户填写该页面的“用户名”、“密码”信息后点击登录即可成功登录,如果用户没有账号可以点击下方的链接进行注册。
(3)主页:此页面中央显示“随机问题列表”;点击列表中某个问题可以查看该问题的问题详情;点击列表中的某个头像可以查看该用户的“个人信息”;用户在上方搜索框内输入“搜索信息”后回车,下方列表即变为“包含搜索信息的问题”。
(4)个人中心:点击用户头像可以修改资料;点击签到可以进行本日签到;中间提供该用户的基本数据信息;下方提供列表,包括我的主页、我的回答、我的提问、创建问题、帮助提示这几个功能;点击最下方的退出可以登出用户。
(5)修改资料:点击头像旁边的上传新头像后可以更新头像;填写修改信息下的“用户名”、“昵称”、“密码”、“性别”、“简介”后点击确认修改可以修改用户的信息。
(6)我的回答:列出来了该用户的所有回答信息,点击删除即可删除该条回答信息;点击该回答会返回该问题的所有信息。
(7)我的提问:切换标签来展示不同类型的问题;点击删除即可删除该条问题;点击该问题会返回该问题的所有信息;在“问题箱”中点击分享,即可自动复制一份“邀请回答”链接。
(8)创建问题:输入问题的“标题”、“是否设为问题箱”、“标签”、“问题描述”后点击发布问题即可成功创建一个问题。
(9)查看问题:提供该问题的“标题”、“标签”、“作者”、“描述”,以及所有回答;用户可以点击赞给喜欢的回答点赞;可以在下方的评论区输入“评论”后点击发布评论即可发布一条对该问题的评论。
(10)回答问题箱:展示了该问题箱的“标题”和“描述”,用户成功输入密钥后填写该问题的回答后,点击提交评论后即可发布一条对该问题箱的评论。
(11)查看问题箱:展示了该问题箱的信息,用户可通过点击上一页和下一页来查看回答。
(12)查看用户:查看该用户的头像、昵称和基本数据信息。
6.2 软件接口1.操作系统:Microsoft Windows 10
2.软件设备:VScode、IntelliJ IDEA、MySQL8.0
6.3 硬件接口1.内存:512M以上
2.磁盘空间:40G以上
3.CPU:233Mhz以上
4.硬盘空间:1.5G以上
7 其他需求 7.1 验收标准 测试功能测试项输入/操作检验点预期结果验收登录功能登录单击用户名输入框,输入用户名用户名和密码检查符合形式,输入错误,提示用户名或密码有问题,请重新输入单击密码框,输入密码密码框保护输入的字符在密码框隐藏用户登录成功界面创建问题单击创建问题,输入相应内容问题成功创建查看问题页面显示已经创建的问题回复问题点击问题,进行评论、点赞或赞赏评论、点赞、赞赏问题下面显示回复以及点赞数和赞赏数搜索问题在查询框内输入标签或id搜索问题搜索查询框下显示相应的问题删除问题在个人中心我的问题里点击问题选择删除刷新该页面问题成功被删除,查看问题页面不再显示 7.2 质量属性1.可用性:用户可以使用
2.可靠性:在给定时间内可以大致上满足无错运行的要求
3.可维护性:服务器重启、写进日志
4.安全性:对用户的密码加密
5.可移植性:移动端移植