作业概述
这个作业属于哪个课程 | 软件工程-计科21级12班-计算机学院-广东工业大学 |
---|---|
这个作业要求在哪里 | 团队项目3-计科21级12班 |
这个作业的目标 | 项目需求改进&完善系统设计 |
1.成员信息
姓名 | 学号 | 身份 | 博客园主页 |
---|---|---|---|
李梦承 | 3121004702 | 队长 | yeaihe |
刘师华 | 3221004766 | 队员 | shzhlh |
谭茵 | 3221004812 | 队员 | TanYinn |
詹慧丹 | 3221004855 | 队员 | muggle1116 |
陈鑫杰 | 3121004688 | 队员 | heart-knot |
甘盛培 | 3121004692 | 队员 | G03P |
江卓颖 | 3121004699 | 队员 | jiangzhuoying |
2、需求与原型改进
- 选题及需求修改
- 问题1:用户定位不够清晰
- 修改1:我们在后续讨论时,将项目的用户定位为患者和患者家属。针对不同年龄段的患者和患者家属人群,他们在医疗方面存在不同的需求。例如,面向学龄儿童的医疗诊断机器人可以帮助祖辈更好地照顾孩子,避免因封建土方而导致的不良后果;面向青年群体的医疗咨询机器人可以帮助他们及时了解身体状况,避免因误判或过晚发现身体异常而导致的不良后果;面向中老年群体的医疗问答机器人可以帮助他们更好地管理药物的服用时间和剂量频率,提高治疗效果。
- 问题2:我们的使用场景不够清晰
- 修改2:经讨论后,关于用户如何能使用到本产品,我们决定将使用场景升级变为app+网页端的结构,使用前端交互界面,后端将项目部署到服务器上,提供web端供用户进行使用,向线上使用靠近,尽量避免要通过线下于医院使用。
- 修改完善上周提交的需求规格说明书
对于上周提交的需求规格说明书,其中2.2面向用户分析(具体内容如下)浅谈了不同用户人群的需求状况,而经过需求修改后,这部分我们再进行一个详细描述
更改后:
- 面向学龄儿童,由于人口老龄化趋势导致年轻人的压力增大,越来越多的年轻人选择外出打拼,将孩子交给祖辈看护,但是祖辈的科学知识并不充裕,存在很多封建土方,比如孩子发烧通过厚被闷汗出热治病,但是这其实没有任何正效应,甚至可能导致加重发烧,需要一个准确的医疗诊断机器人,避免因误判或过晚发现身体上的异常,容易造成不可估量的无法挽回后果
- 面向青年群体,青年身体有异常习惯通过挺两天尝试自愈,但是并非每种情况都可以靠身体自愈,而且为了方便,通常选择网络查病,但例如百度,经常随便一问都是癌症征兆或者晚期,不仅没实际效果,而且会导致心理焦虑,需要一个即时的医疗咨询机器人,及时保障自身健康
- 面对中老年群体,他们的记忆力下降,容易忘记药物的服用时间和剂量频率,需要一个便捷的医疗问答机器人,防止影响治疗效果
- 针对学龄儿童需要一个准确的医疗诊断机器人,青年群体需要一个即时的医疗咨询机器人,中老年群体需要一个便捷的医疗问答机器人的时代发展背景,我们选择开发这个基于知识图谱的医疗问答机器人,要求医疗数据包含疾病的定义、症状、治疗方法,拓展疾病的忌吃食物、宜吃食物、通用药品、推荐药品、并发症、治疗科室;要求辨识用户,识别用户输入内容中的意图、实体,缓存用户对话信息,并支持槽位继承和意图继承实现多轮对话。
完善后的需求分析与实现
、
需求 | 实现 |
---|---|
用户输入信息 | 本地端、微信端、网页端界面 |
识别输入中的实体 | 实体识别模块,实体规范化模块 |
识别输入中的意图 | 意图识别模块 |
多轮对话 | 用户标识,对话缓存 |
准确性 | 搜索引擎、医院等数据集 |
即时性 | neo4j图数据库,比mysql数据库更快的响应速度 |
便捷性 | 本地端、微信端、网页端 |
- 参考《构建之法》5节功能的定位和优先级,给出功能分析的四个象限
外围功能 | 杀手功能 | |
---|---|---|
必要需求 | 基本的症状问病功能 | 独特的并发症和宜忌食物查询功能 |
辅助需求 | 拓展的药品查询功能 | 缓存对话信息,支持多轮对话功能 |
- 根据修改后的需求,调整任务分解WBS及相应的项目进度计划
时间 | 目标 |
---|---|
第 9 周 | 1.团队组队、团队博客(已完成) |
2.团队介绍、成员展示、角色分配、选题确定 (已完成) | |
3.制定团队计划安排,团队贡献分的规定(已完成) | |
第10周 | 1.需求规格说明书(已完成) |
2.确定项目功能模块和实现方法,队员估计任务难度并学习必要的技术(已完成) | |
3.平台环境搭建完成、初步架构搭建(已完成) | |
4.对接口、测试、界面要求进行初步设计(已完成) | |
第11周 | 1.原型改进(给目标用户展现原型,并进一步理解需求)(已完成) |
2.架构设计,WBS, 团队成员估计各自任务所需时间(已完成) | |
3.测试计划(已完成) | |
4. 明确接口、代码完成规范(已完成) | |
5. 推进编码主体部分完成(已完成) | |
第12、13周 | 1.团队项目Alpha任务分配计划 |
2.连续7天的Alpha敏捷冲刺,7 篇 每日Scrum Meeting博客+代码提交 | |
第14周 | 1. 用户反馈+测试计划改进 |
2.团队Alpha阶段个人总结 | |
3.团队项目Alpha博客:发布说明、测试报告、展示博客、项目管理 | |
第15周 | 1.团队项目Alpha博客:事后分析 |
3、系统设计
- 系统的架构设计
基础功能
- 实现基础的登录功能
- 实现用户数据的存储及管理
- 对用户输入进行命名实体识别预测、关系抽取、数据导入,提供基本数据给后期对话机器人使用
- 处理相关医疗数据,可以包含疾病的定义、症状、治疗方法等。
- 要求辨识用户,识别用户输入内容中的意图、实体,缓存用户对话信息,并支持槽位继承和意图继承实现多轮对话
- 构建医疗知识图谱,包括实体类型、实体关系和属性等。
- 利用BERT模型对用户提出的问题进行语义理解和分析。
- 根据问题中的实体和关系,在知识图谱中查找相关信息。
- 根据查找到的信息,生成答案并返回给用户。
4、Alpha任务分配计划
1. 依据项目组能提供的总时间、功能模块的优先级以及模块之间的依赖关系,在Product Backlog中选取待实现的功能项。
2. 对已选择的功能项再做进一步分解,分解为1-10小时左右的任务,构成Sprint Backlog。在PM的协助下,编码的同学对任务进行认领。
3. 以甘特图的方式拟定迭代冲刺计划。
5、测试计划
- 测试类型
测试类型 | 具体内容 |
---|---|
单元测试 | 确保每个模块里面的函数方法无误 |
功能测试 | 实现需求说明书里所有功能 |
兼容测试 | 对于主流的安卓版本,都能够运行此app |
用户体验测试 | 用户是否满意其便捷性,实用性 |
- 测试工具与环境
测试工具:Pycharm
测试环境:
python==3.7
tensorflow==1.14.0
keras==2.3.1
bert4keras==0.10.6
h5py==2.8.0
- 测试时间与人员安排
测试内容 | 测试时间 | 测试人员 |
---|---|---|
实体识别模块 | 开发进行过程中 | 李梦承 |
关系抽取模块 | 开发进行过程中 | 甘盛培 |
模块衔接测试 | 开发进行过程中 | 江卓颖、甘盛培 |
单元测试 | 开发进行过程中 | 陈鑫杰、李梦承 |
功能测试 | 完成功能模块后一周 | 詹慧丹、刘师华 |
兼容测试 | 开发完成后一周 | 詹慧丹、谭茵 |
用户体验测试 | 开发完成后一周 | 詹慧丹、刘师华 |
- 测试资源
每项测试,测试数据均为200条,30%为测试人员结合自身生活生成,40%为网络收集,30%为交叉测试人员生成,例如实体识别模块,测试数据为“天气冷了,感觉自己有点感冒,头晕,提不起精神”,实体识别模块识别出“感冒”疾病实体和“头晕,提不起精神”症状实体,关系抽取模块测试数据“天气冷了,天气变化太大了,所以我有点感冒了”,模块识别出“天气变化太大”是“感冒”的原因,模块衔接测试则为使用实体识别,扩大关系抽取模型可利用的实体,进而识别出更多的实体关系