【软件工程】概要设计文档——概要设计说明书

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

文章目录

    • 1 引言
      • 1.1 编写目的
      • 1.2 范围
        • 1.2.1 系统目标
        • 1.2.2 主要软件需求
        • 1.2.3 软件设计约束、限制
      • 1.3 术语和缩略词
      • 1.4 参考资料
    • 2 体系结构设计
      • 2.1 需求复审
      • 2.2 软件体系结构
      • 2.3 模块设计
    • 3 接口设计
      • 3.1 用户接口
      • 3.2 外部接口
      • 3.3 内部接口
        • 3.3.1 内部模块间关系
        • 3.3.2 接口数据描述
    • 4 数据设计
      • 4.1 数据结构
      • 4.2 文件和数据库结构
    • 5 需求交叉索引
    • 6 测试部分

1 引言

1.1 编写目的

​   本说明的目的是对Asking APP进行概要的功能说明,以便用户及项目开发人员了解产品大致的设计与实现。以下叙述将结合文字描述、数据流图、变换图等来描述Asking的体系结构设计、接口设计,数据设计等方面。本说明的预期读者有客户、项目经理、开发人员以及跟该项目相关的其他竞争人员。

1.2 范围

1.2.1 系统目标

  Asking APP是一款针对年轻人的咨询类社交软件,大家可以在这里分享自己有趣的想法,以及咨询自己的烦心事或畅聊每天的趣事。现在市场上大部分的咨询类社交软件都不仅仅是帮助用户解决问题,还掺杂了一些诸如推送广告、推销等的附带功能,为了解决这一问题我们推出Asking APP,主打咨询类社交,无其他附带功能,为用户提供一个纯粹的问答平台。我们希望用户可以在使用我们的产品时不被“问答”之外的事情烦扰。

1.2.2 主要软件需求

功能需求:

(1) 注册、登录:获取用户输入的用户名、密码进行登录和注册。

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

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

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

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

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

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

非功能需求:

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

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

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

1.2.3 软件设计约束、限制

​   采用免费的开发软件,开发成本低,但运行效率受限。技术上,采用现有的小组成员掌握的技术保证项目的最终实现。环境上,在浏览器、安卓手机端保证运行正确。

1.3 术语和缩略词

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

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

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

1.4 参考资料

《软件工程方法与实践 (第3版)》, 窦万峰等编著, 机械工业出版社,2016

《Asking软件需求规格说明书》,辣鸡搬砖喵喵团队编著

2 体系结构设计

2.1 需求复审

​ (1)复审整个数据流图,检查是否有问题和可以完善的部分

​ 复审后的Asking 系统的0层数据流图如图1所示:

【软件工程】概要设计文档——概要设计说明书_第1张图片

          图1 Asking的0层数据流图

​ (2) 对部分数据流图的精化如下

l 用户登陆功能精化数据流图如图2所示:

【软件工程】概要设计文档——概要设计说明书_第2张图片

​           图2 登陆精化数据流图

l 搜索功能精化数据流图,如图3所示:

【软件工程】概要设计文档——概要设计说明书_第3张图片

​           图3 搜索精化数据流图

l 回答管理精化数据流图,如图4所示:

【软件工程】概要设计文档——概要设计说明书_第4张图片

          图4 回答管理精化数据流图

l 提问管理精华数据流图,如图5所示:

【软件工程】概要设计文档——概要设计说明书_第5张图片

          图5 问题管理精化数据流图

2.2 软件体系结构

​ 根据复审的数据流图,得出软件的逻辑结构,利用事务设计的方法,得到的软件结构图如图6所示:

【软件工程】概要设计文档——概要设计说明书_第6张图片

          图6 Asking系统的软件结构图

本系统软件结构图展示说明如下:

(1) 用户登录:

l 用户选择登陆或注册,如果选择登录,输入的信息将进行身份验证,

l 选择注册,则将进行合法性验证后写入用户信息库。

(2) 系统主控界面:

l 用户可以选择个人信息管理,进行个人信息修改和头像修改;

l 选择问题搜索,看自己想看的问题

l 选择问题推送,系统推送相关问题列表给用户

l 选择提问管理,创建新的提问或删除自己不想要的提问

l 选择回答管理,创建新的回答或删除自己不想要的回答

l 选择问题查看,查看对应问题

l 选择回答查看,查看该问题对应的回答

2.3 模块设计

Asking系统模块组成

1.用户登录子系统

1.1 用户登录包含模块:

用户登录模块:从下层模块获取用户输入信息以后,将得到的用户输入信息与用户信息数据库中的数据进行匹配,判断是否可以登录。如果匹配成功,将此用户信息提供给上层模块用户输入子系统。如果匹配失败,拒绝用户登录。

1.2 用户注册包含模块:

新用户注册模块:从下层模块获取用户输入信息以后,将得到的新用户信息添加到用户信息库,完成新用户注册。

2.系统主控子系统

2.1 个人信息管理包含模块:

个人信息管理:用户可以修改自己的个人信息。并将新的用户信息更新到用户信息库。

2.2 搜索问题包含模块:

搜索问题模块:用户提供问题关键字,该模块根据用户提供的问题关键字在问题信息库寻找相关问题,返回相关问题信息。分为普通问题和问题箱问题。

2.3 问题推送包含模块

问题推送模块:根据用户信息在问题信息库中寻找该用户感兴趣的问题,并将问题以列表的形式呈现给用户

2.4 提问管理包含模块

提出问题模块:用户提出新的问题并发布

删除问题模块:用户可以选择删除自己提出的问题

2.5 回答管理包含模块

新建回答模块:用户提出新的回答并发布

删除回答模块:用户可以选择删除自己做出的回答

2.6 问题查看包含模块

问题查看模块:根据问题信息显示相应的问题。

2.7 回答查看包含模块

回答查看模块:显示该问题相应的所有回答。

3 接口设计

3.1 用户接口

用户登录界面:当用户访问正确的网址时,进入用户登录界面。该界面至少包含用户名输入栏和密码输入栏以便接受用户的输入,还应该有“登录”按钮使得用户可以提交用户名和密码和“注册”按钮。

注册界面:用户点击用户登录界面的“注册”按钮后可以进入注册界面。该界面应提供“用户名”、“昵称”、“密码”、“确认密码”栏供用户输入,还应该提供“提交”按钮让用户提交用户信息并完成注册。

主界面:用户提供正确的用户名和密码后,跳转到该界面。该界面根据问题库中问题的热度,问题的时间等信息为用户推送相关的问题。并且需要提供搜索问题的输入栏和“个人中心”的跳转按钮。

搜索结果显示界面:通过读取主界面的搜索关键字在问题信息库中匹配相关问题,并将相关问题显示到该界面。

查看问题界面:用户在看到问题后可以点击该问题便可跳转到该界面,在该界面展示问题的详细信息,并且需要提供给用户“点赞”按钮和评论栏。

个人中心界面:用户在主界面点击个人中心跳转按钮可以跳转到该界面。该界面显示用户的昵称、签名、称号、硬币数、提问数、回答数等基本信息,并且提供给用户查看“我的回答”、“我的提问”、“创建问题”、“帮助\提示”和“退出”等按钮方便用户进行相应操作。

我的回答界面:用户在个人中心界面点击“我的回答”按钮可以跳转到该界面。该界面显示本用户发表过的所有回答,并且提供给用户“返回”按钮方便用户跳转回个人中心界面。

我的提问界面:用户在个人中心界面点击“我的提问”按钮可以跳转到该界面。该界面显示本用户发表过的所有问题,并且提供给用户“返回”按钮方便用户跳转回个人中心界面。

创建问题界面:用户在个人中心界面点击“创建问题”按钮可以跳转到该界面。该界面提供给用户问题标题栏、设置为问题箱选项、问题标签选项、问题描述栏以及“发布”按钮。用户点击“发布”按钮后的问题信息会及时存储到问题信息库。

3.2 外部接口

硬件接口:

  系统运行服务器要求运行内存大于1G,存储空间大于2G

  使用者电脑内存要求512M以上,磁盘空间要求40G以上,硬盘空间要求1.5G以上。

软件接口:

  VScode、IntelliJ IDEA、MySQL8.0,浏览器或安卓手机端。

3.3 内部接口

3.3.1 内部模块间关系

【软件工程】概要设计文档——概要设计说明书_第7张图片

          图7 Asking系统结构图(带编号)

l 系统总模块:Main( ):void

l 用户登录

1.1 用户登录:login(username:string,password:string):user

1.2 用户注册:register(username:string,password:string):user

l 系统主控界面:

2.1 个人信息管理:

​ 2.1.1 修改信息:update(info:string……):void

​ 2.1.2 修改头像:updateavater(img:file):void

2.2 搜索问题:search(index:string):list

2.3问题推送:list(username:string):list

2.4 提问管理:

​ 2.4.1 新建提问: addquestion(info:question):void

​ 2.4.2 删除提问: deletequestion(questionid:string):list

2.5 回答管理

​ 2.5.1 新建回答::addanswer(info:answer):void

​ 2.5.2 删除回答:deleteanswer(answerid:string):void

2.6 问题查看: seequestion(questionid:list):list

2.7 问题查看: seeanswer(answered:list):list

3.3.2 接口数据描述

用户(user):包括用户名,密码,昵称,个人签名,身份信息,硬币数等。

问题信息(question):包括问题标题,问题内容,问题创建时间,回答数量等。

问题箱信息(question_box):包括问题箱ID,问题箱标题,问题箱内容,问题箱创建时间等。

普通问题回答信息(answer):包括回答ID,回答内容,回答时间等。

问题箱问题回答信息(box_answer):包括问题箱回答ID,问题箱回答内容,问题箱回答时间等。

4 数据设计

4.1 数据结构

用户信息

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

问题信息

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

问题箱信息

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

普通问题回答信息

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

问题箱问题回答信息

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

4.2 文件和数据库结构

1. 数据库物理模型

【软件工程】概要设计文档——概要设计说明书_第8张图片

2. 数据库表结构

用户信息表(user)

编号 字段名称 字段含义 字段类型 字段长度 是否主键 是否为空
1 username 用户名 varchar 1024 非空
2 password 密码 varchar 1024 非空
3 nickname 昵称 varchar 1024 非空
4 profile 个性签名 text
5 gender 性别 int 1
6 coin 硬币 int 11
7 avater 头像 varchar 1024 非空
8 last_sign 最后一次登录时间 datetime

问题表(question)

编号 字段名称 字段含义 字段类型 字段长度 是否主键 是否为空
1 question_id 问题编号 int 11 非空
2 username 用户名 varchar 1024 外键 非空
3 question_title 问题标题 text 非空
4 question_content 问题内容 text 非空
5 tag 标签 varchar 1024 非空
6 question_time 问题创建时间 datetime
7 question_view 问题的浏览量 bigint 20
8 comment_count 问题的评论量 bigint 20
9 nickname 昵称 varchar 1024
10 user_avater 用户头像 varchar 1024

问题回答表(answer)

编号 字段名称 字段含义 字段类型 字段长度 是否主键 是否为空
1 answer_id 回答编号 bigint 20 非空
2 question_id 问题编号 int 11 外键 非空
3 answer_content 回答内容 text 非空
4 thumb 评论的点赞量 int 11
5 answer_time 回答时间 datetime
6 username 用户名 varchar 1024
7 user_avater 用户头像 varchar 1024
8 nickname 昵称 varchar 1024

问题箱表(question_box)

编号 字段名称 字段含义 字段类型 字段长度 是否主键 是否为空
1 box_id 问题箱的编号 int 11 非空
2 username 用户名 varchar 1024 外键 非空
3 box_password 问题箱的密钥 varchar 1024 非空
4 box_title 问题箱的标题 text 非空
5 box_content 问题箱的内容 text 非空
6 box_time 问题箱创建时间 datetime
7 box_count 问题箱的数量 bigint 20
8 nickname 昵称 varchar 1024
9 user_avater 用户头像 varchar 1024

问题箱回答表(box_answer)

编号 字段名称 字段含义 字段类型 字段长度 是否主键 是否为空
1 box_aid 问题箱回答的编号 bigint 20 非空
2 box_id 问题箱的编号 int 11 外键 非空
3 box_acontent 问题箱回答的内容 text 非空
4 box_atime 问题箱回答的时间 datetime
5 username 用户名 varchar 1024

5 需求交叉索引

需求名称 实现的模块名称
用户登录 用户登录模块
新用户注册 新用户注册模块
搜索问题 搜索问题模块
提出问题 提问管理模块
删除问题 提问管理模块
创建问题箱 提问管理模块
删除问题箱 回答管理模块
查看问题 问题查看模块
回复问题 回答管理模块
个人中心 个人信息管理模块

6 测试部分

集成策略:采用自底向上的增量式集成方式

测试方针:首先对规定的正常的功能进行测试,以黑盒测试为主,白盒测试为辅助来设计测试用例,测试用例要尽量覆盖所有的程序功能,记录测试中的问题。

你可能感兴趣的