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