项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2023北航软件工程 |
这个作业的要求在哪里 | 团队项目-Alpha阶段项目展示 |
我在这个课程的目标是 | 学习软件工程技术,完成团队开发流程 |
这个作业在哪个具体方面帮助我实现目标 | Alpha阶段开发 |
我们使用coding平台作为代码仓库与项目协作管理平台。项目采用前后端分离模式开发,使用两个issues集合,分别进行前后端的任务计划与管理
这是coding的任务协作看板,具有两个对进度管理很有用的功能:
支持为任务增加父子的层级关联,整个任务看板可以以树状视图展现,利于将不同方面的父任务,划分更细粒度的子任务,体现敏捷开发的原则。
能够自动生成任务的甘特图,在任务进度管理时能够清晰直观地复盘与规划。
此外,coding平台支持多种基于代码仓库的数据统计版块,为我们在进行贡献分分配的任务量衡量方面提供了一定的参考依据。
团队分工主要从每个人的擅长部分出发, 前端四位同学发挥了每个人的优势,包括架构设计与仓库管理、设计复杂的视图与交互功能,设计精美的宣传页与轮播图,调整每个页面的布局与UI样式,后端有三位同学,分别负责运维和前后端对接、GPT部署与数据库的构建,还有编写高覆盖的单元测试。
姓名 | 分工 | 经验教训 |
---|---|---|
lzh | PM、运维 | 应该在项目前期对项目整体安全性方面做更多功课 |
wyy | 前端开发 | 在开发过程中要时刻考虑用户体验和易用性,避免过度复杂化设计 |
lyq | 前端开发 | 注意相对布局以及功能设计使用的完备性、安全性,布局以及功能要以用户为出发点 |
xzh | 前端开发 | 前后端开始编写代码前约定好数据格式与接口格式,并且注意功能的可拓展性;注意相对布局以及不同屏幕比例的适配 |
ljh | 前端开发 | 在设计前后端API的调用规范时缺少对安全性的考虑 |
zya | 后端开发 | 数据库与api设计应与前端充分沟通,减少后期反复修改 |
zl | 后端开发 | 应严格约束ChatGPT输出格式并进行后处理;应对爬虫得到数据进行多重过滤 |
项目的前期讨论与个人开发阶段,主要进行线上会议,讨论本阶段开发问题,明确下阶段任务。我们留存了五次线上会议的录屏,帮助不能参会的同学了解项目进展,同时用来进行会议总结。
项目的前后端对接与部署阶段,进行两次全员线下的集中开发,沟通效率比较高,线下推进比较顺利。
apifox接口管理与测试,一共完成52个接口文档,约束前后端接口的规范性。同时在开发初期,前后端使用它进行各自的测试,避免开发调试时进度不统一的问题,保证了个人开发的代码在交付到对接阶段时,都是经过充分调试的、可信赖的代码,保证了代码对接阶段的高效
从燃尽图能看出来,我们团队的项目进展是比较平稳推进的,基本与燃尽图的理想曲线符合,没有出现项目后期补天的情况,首先是感谢团队成员都有优秀的进度把控意识,以及印证了我们团队在前面的项目管理方面的介绍,是合理并且适合我们团队的。
后期实际进展与理想进展曲线出现一定偏离,经过反思是因为项目从个人开发转向对接阶段时,由于前后端部署与数据库的构建需要一定的学习与试错成本,拖延了一定的进度。
在任务中,我们存在issue的实时增删,包括增加新需求引入的新issue,以及对于一些不合理/重复/放入beta阶段的issue的删除。在Alpha阶段整体完成后,结合coding平台对issue的每日完成记录,去掉上述因素影响后,最终Alpha阶段项目的燃尽图较为合理。
姓名 | 小新 |
---|---|
用户身份 | 大一新生 |
年龄 | 18 |
用户所占市场比例 | 20% |
用户情况/个人英语水平 | 刚完成高中学业不久,高考英语水平 |
用户动机 | 脱离中学教育模式,开始自学英语 |
使用习惯 | 没有固定规律,有时间学英语时就用 |
支付意愿 | 学生群体付费意愿较低 |
产品期望 | 能够辅助培养自己自学英语的水平 |
应用情景 | 场景:有时间时学习一些新单词 收获:掌握单词释义,同时通过语境等加深印象 |
姓名 | 谷哥 |
---|---|
用户身份 | 即将出国的外企员工 |
年龄 | 30 |
用户所占市场比例 | 15% |
用户情况/个人英语水平 | 有一定的英语基础,日常工作中有英语使用需求 |
用户动机 | 满足商务会话、日常会话需求 |
使用习惯 | 平时日常巩固,要出国前适当突击 |
支付意愿 | 如果对英语水平(尤其是口语)有所提升则愿意消费 |
产品期望 | 提升口语水平,能够熟练进行日常英语会话 |
应用情景1 | 场景:学习商务中可能用到的词汇以及进行对应的对话训练 收获:熟悉商务对话 |
应用情景2 | 场景:日常常用词学习与训练 收获:锻炼日常英语交流能力 |
姓名 | 阿美 |
---|---|
用户身份 | 有美国留学意愿的学生 |
年龄 | 20 |
用户所占市场比例 | 25% |
用户情况/个人英语水平 | 大学四级/六级水平 |
用户动机 | 满足出国的英语要求 |
使用习惯 | 有规划的每日使用学习 |
支付意愿 | 愿意支付一定费用(和出国求学比消费较少) |
产品期望 | 满足托福等应试要求,并培养英语会话水平 |
应用情景1 | 场景:学习单词时同时学习阅读写作时对应的语境 收获:掌握单词在具体语境下的使用,从而提高GRE成绩 |
应用情景2 | 场景:通过对话学习单词的使用 收获:能够将单词运用到日常学习交流中 |
姓名 | 吕笑 |
---|---|
用户身份 | 初入某领域的科研人员 |
年龄 | 22 |
用户所占市场比例 | 5% |
用户情况/个人英语水平 | 英语水平能够满足日常使用和基础阅读, 但是对相关文献中的专业领域内的专有名词比较生疏 |
用户动机 | 更好的更快速的理解记忆领域内的专有名词以及用法 |
使用习惯 | 在阅读文献时边阅读边搜索专有名词,在闲暇时间能够整理理解单词本中的 |
支付意愿 | 学生收入有限,支付意愿比较低 |
产品期望 | 能够掌握领域内比较常见的专有名词,阅读文献时没有阅读障碍 |
应用情景1 | 情景:阅读一篇文献时,边阅读边搜索专有名词并添加到单词本 收获:整理一部分专有单词,能够及时复习以便更好的理解文献 |
应用情景2 | 情景:在闲暇时间生成领域内其他专有单词更深入的了解领域内专有名词。 收获:更快速的适应科研工作 |
姓名 | 马田 |
---|---|
用户身份 | 应对考试的学生 |
年龄 | 21 |
用户所占市场比例 | 25% |
用户情况/个人英语水平 | 英语水平较差,但是可以有比较长的时间周期内坚持学习和练习的意愿,希望能提高自己的英语水平 |
用户动机 | 提升阅读写作听力等应试方面的能力 |
使用习惯 | 会每天投入固定时间练习英语 |
支付意愿 | 学生收入有限,支付意愿比较低 |
产品期望 | 能够高效练习英语并最终提高英语成绩 |
应用情景1 | 情景:背单词时同时背诵近义词、反义词等相关词汇 收获:背诵更多的单词并加深单词的印象 |
应用情景2 | 情景:用已经背诵过的单词生成相关测试,检验背单词的效果同时练习阅读能力 收获:更深刻的记忆单词,并提高了阅读能力 |
应用情景3 | 情景:生成范文 收获:提高写作能力 |
姓名 | 田黑土 |
---|---|
用户身份 | 英语专业学生,有未来继续从事相关领域学习研究的意愿 |
年龄 | 20 |
用户所占市场比例 | 10% |
用户情况/个人英语水平 | 专业四级 |
用户动机 | 1.满足各类应试需求 2.提高英语阅读、写作等综合水平(非应试需求) 3.满足研究需要 |
使用习惯 | 每天会投入较长时间学习英语,但需求比较琐碎,使用某一特定功能(比如背单词)的时长不定 |
支付意愿 | 学生收入有限,支付意愿比较低,但在所需功能/资源必要且较为优惠(如软件词库专业性较强,市面上没有其他可替代资源或价格明显低于类似资源)的情况下愿意支付 |
产品期望 | 有语言学专业词汇等学科专业性较强的词库、CATTI热点词条等针对(受众相对较小的)应试需求的词库;有记忆曲线和默写测试功能,但复习和默写功能可自愿开启(即不需要每天先复习后才能学新词/学到的词默写检查后才能开始学下一个);可背记词组,但词组在复习时可以与单词分开(比如单词可能需要默写但词组很长又基本都是认识的词,默写很浪费时间);有词根词缀、语境记忆、联想记忆等多维助记法;对于原版只有顺序版的词书,可自主选择随机乱序排列;最好可以用户自主创建词库并共享 |
应用情景1 | 情景: 阅读英文原著时,利用单词app查找生词并加入生词本 收获:借助语境增大词汇量,积累原汁原味的英文表达 |
应用情景2 | 英语写作中利用单词app查找表达某一含义(如含有某些关键词)的例句 收获:使英文表达更地道 |
用户动机:锻炼出国的英语要求
产品期望:培养英语交流能力,满足托福等应试要求
使用场景:通过对话学习单词的使用,能够将单词结合真实语境,运用到日常学习交流中。为了通过托福等考试需要储备大量单词,学习单词时结合同义词反义词能够高效扩充词汇量
在右侧的卡片上我们引入了同义词、反义词以及非固定的单词例句等功能以供用户加深对单词的理解。也可以点击不再学习标记该单词为简单词。
平台展现了智能学习助手Kaleido这一虚拟形象,用户可以在此处与Kaleido进行试试交流对话。
在词单界面中用户可以拉取平台提供的优秀词单,可以自己导入想学习的单词完成个性化定制,平台会基于后端数据库为用户生成一份属于自己的词单。
故事模式:基于今日学习单词生成文章,在语境中复习单词
左侧会展示用户今日学习单词,点击选择部分单词即可由小助手生成包含该单词的故事,帮助用户在故事及语境中复习单词。
在阅读故事时遇到不理解的句子时,鼠标选中这句话,小助手会为用户分析这句话的中文释义以及长难句的句式结构分析,帮助用户提高阅读理解能力。
单词复习:给出一段短文,以完形填空的形式填入单词,加深对单词的掌握程度
背诵部分但此后进入单词复习模式,小助手会自动为用户选择今日学习生词,生成完形填空段落,让用户在真实语境下复习理解单词义
用户可以在文段中填入右侧单词,点击提交查看作答情况与正确答案
阅读分析:根据所选段落进行分析,给出中文释义、句式结构和语法分析
写作指导:根据上传的短文进行点评,并打出评分,基于写作指导
用户可以在左侧卡片键入作文或者使用文件导入作文后,点击开始分析,小助手会为用户评分,并给出对于文章的点评及建议。
鼠标选择某一句话,也可以为用户呈现句式结构的分析。
目标用户1:北航人工智能专业大四学生,保研后未来的研究方向为计算机视觉
目标用户2:中国传媒大学网络与新媒体专业大二学生,计划准备接下来的六级考试
目标用户3:北航计算机专业大三学生,计划出国留学
项目有完整的Git仓库管理规范,已发布到博客:团队Git规范
依照此规范,我们在开发期间保证了分支树与提交信息的清晰,能够保证进行项目进度管理时及时准确地了解到团队成员的代码推进进度,及时了解到相关页面的功能变更,出现错误后易于版本回退。
项目采用了CICD,对于开发环境,成员在并入dev分支后会自动触发开发环境的CICD,将变动更新到开发环境的项目,使成员能及时看到推送代码在开发环境的变动。
对于生产环境,由于需要谨慎测试后才能进行版本发布,所以生产环境的CICD采用前后端仓库管理员在复审代码通过后,手动点击触发生产环境的CICD。
采用CICD能够减少从开发到交付的时间,极大程度减轻运维的负担,更好地体现敏捷开发的原则。
使用Django框架的测试模块编写单元测试,对所有输出稳定的api的正常功能与异常情况编写了对应的单元测试,(其中去除了登陆注册、gpt交互功能的不稳定输出、每日学习单词的随机生成三类API)并全部通过。以下为32个测试点的测试情况。
QQ群最终有50人参与体验,并积极提出意见。宣发群涉及不同学校不同年级不同专业,用户有多方面需求,同时,以计算机专业的同学居多。在广泛调研其他专业用户使用体验的同时,计算机专业的同学能够在安全性、运行编译角度提出更专业的建议。
lzh:
zl:
xzh:
ljh:
依照每名成员在Alpha期间的贡献,以及贡献分转让原则,最终贡献分如下:
姓名 | 具体贡献 | 最终折合贡献分 |
---|---|---|
lzh | PM、服务器运维、后端开发 | 51 |
wyy | 复习功能页面开发 | 50 |
lyq | 聊天页面开发、UI美化 | 47 |
xzh | 单词页面开发、宣传页面 | 49 |
ljh | 词单页面开发、架构设计 | 48 |
zya | 后端开发、单元测试 | 52 |
zl | GPT部署、单词数据库 | 53 |
成员/功能 | 同义词、反义词 | 个性化词单 | 对话功能 | 复习模式 |
---|---|---|---|---|
lzh | 9 | 10 | 9 | 9.5 |
ljh | 9 | 8 | 9 | 9 |
wyy | 9 | 8 | 9 | 9.5 |
xzh | 9 | 9 | 8 | 9.5 |
lyq | 10 | 10 | 9.5 | 10 |
zl | 9 | 8 | 8 | 9 |
zya | 9 | 9 | 9 | 10 |
在开发前,我们的既定目标是完成一款个性化、智能化的单词学习软件。本软件首先要具备一个单词学习软件的所有基本内容,即最基础的单词学习和一个较为完整的单词数据库;同时也要具备本软件的特色功能,即智能化、个性化的相关功能,如故事模式、对话模式、阅读模式等等。
项目发布在 sayhelloword.com 官网。
HelloWord是一款简洁智能的背诵单词、学习英语的软件。个性化词单、智能分析与问答,让背单词学习英语的过程不再枯燥。Come and join us! Let’s say “Hello,Word!” to Kaleido ~
该页面引导首次使用HelloWord的用户进行平台注册,完成邮箱、用户名、密码等设置和验证后即可加入平台,和广大英语爱好者一起进行学习探索。
已经拥有账号的用户可以通过这一页面进行登录,开启独特的HelloWord之旅
完成登陆后,首先来到的便是词单界面,也是我们平台的核心功能界面,下面让我们一起踏上学习之旅。
词单界面左侧,为新用户贴心地初始化了《新用户词单》。每一个词单卡片包含词单名、词单作者、单词数量,以及词单学习进度。正在学习的词单由卡片的右下角的绿色打勾icon标识。
点击不同词单,词单界面右侧展示了所选词单的单词列表。下方提供翻页栏以及切换单词书功能。
在词单界面中用户可以拉取平台提供的优秀词单,可以自己导入想学习的单词完成个性化定制,平台会基于后端数据库为用户生成一份属于自己的词单。
如果词单学习完成可以点击编辑单词本进行删除。单词的学习记录仍然会保存。
在这一页面中我们还贴心的设置了今日小目标进度条,用户可以自行设置,起到督促学习的作用
选择单词书后平台将会根据用户的历史学习情况以及生词比例来提供今日新词,每次会提供一组单词进行学习,完成该组学习后更新用户学习状态,并提供新的单词。
每次背诵新单词会首先遮盖单词详细信息,用来检测用户对单词的掌握,可以点击认识或者不认识来记录学习状态,点击后显示单词全部信息。在右侧的卡片上我们人性化的引入了同义词、反义词以及非固定的单词例句等功能以供用户加深对单词的理解。也可以点击不再学习标记该单词为简单词。
完成一组单词的学习后会跳转到单词复习页面帮助用户来回顾所学习的单词,完全掌握后点击“学习下一组单词”的按钮可以获取新一组单词进行学习。
复习模式中包含一下三个功能,故事模式、阅读写作,以及单词复习,以轮播图的形式展现。在这里智能小助手为用户提供私人定制服务,帮助您徜徉学海。点击对应卡片即可跳转到对应的复习模式。
左侧会展示用户今日学习单词,点击选择部分单词即可由小助手生成包含该单词的故事,帮助用户在故事及语境中复习单词。
在阅读故事时遇到不理解的句子时,鼠标选中这句话,小助手会为用户分析这句话的中文释义以及长难句的句式结构分析,帮助用户提高阅读理解能力。
支持将小助手生成的故事与句式分析导出为文件
背诵部分但此后进入单词复习模式,小助手会自动为用户选择今日学习生词,生成完形填空段落,让用户在真实语境下复习理解单词义
用户可以在文段中填入右侧单词,点击提交查看作答情况与正确答案
用户可以在左侧卡片键入作文或者使用文件导入作文后,点击开始分析,小助手会为用户评分,并给出对于文章的点评及建议。
鼠标选择某一句话,也可以为用户呈现句式结构的分析。
平台展现了智能学习助手Kaleido这一虚拟形象,用户可以在此处与Kaleido进行试试交流对话。
该页面为用户的个人主页,展示了用户的历史学习记录以及个人信息。在该页面可以修改昵称、密码、退出登录。此外,平台还提供了用户标签的功能,便于在学习过程中为用户提供更具个性化的帮助。
为了方便用户对于平台的使用,我们绘制了帮助页面。用户在这里可以查看各部分功能,查看常见问题,反馈使用信息,联系平台开发者……我们致力于为大家提供最优质的英语学习平台。
用户在该页面可以查看平台功能,快速上手玩转平台。
在这一部分,我们提供了常见问题解答,帮助用户快速解决使用难题。
此外,在之前的页面中,部分功能右上角的问号icon支持点击跳转到帮助页面的对应栏目,帮助新用户了解本平台功能。
用户可以指出平台的功能Bug或者提出宝贵的意见。欢迎大家和我们共同来维护HelloWord平台。
最后是开发人员展示,HelloWord平台还在起步阶段,可能还有很多需求无法满足,欢迎大家联系我们进行技术交流。
项目发布后满足了用户的基本需求和大部分典型场景,但是并仍有一些典型场景尚未满足。
(1)软件共50+人参与体验,背单词功能共计90+人次、复习单词功能共计120+人次、智能对话功能共计360+人次。
(2)
① 宣传范围比较小,具有使用需求的受众占比小,用户使用量不大
② 宣传活动主要在五一假期中进行,用户们外出游玩,学习时间少,对软件需求小
③ 软件还待完善,需要更趣味性的功能来吸引更多的用户
(3)
① 活跃用户的使用数据,如文本分析、智能对话等功能的使用数据。宣传范围比较小,有使用需求的客户比较少,所以有需求的用户的使用量同样可以证明软件的有效性。
② 用户的交流与反馈数据。考虑到部分用户可能还不够了解我们的软件,虽未能使用软件但是在交流了解过程中可以便于他们日后使用该软件
③ 官方网站的浏览量。可能部分用户在宣发时间并没有使用需求,提前了解我们的项目以供日后使用
在用户试用过后提出的功能反馈主要分为两个方面:
第二方面与软件功能有关,为了给用户提供更好的使用体验感以及增强功能的实用性与便利性,有使用用户建议我们增加单词查询功能和历史记录的查询(包括背诵过的单词、分析过的文章、历史记录的关键字查询),同时还可以增加是否乱序以及设为背诵词单提示以完善单词背诵功能。
bug描述 | 会造成的影响 | 处理方式 |
---|---|---|
判断邮箱验证码的API和注册API没有封装成原子操作 | 会影响软件的安全性,容易被恶意攻击 | 在Beta阶段进行修改 |
gpt有次数限制的服务没加锁 | 导致请求服务期间可以无限调用,影响软件的使用安全性 | 在Beta阶段进行修改 |
完形填空复习单词的界面中,如果有重复单词,答案展示以及判读会不正确 | 影响用户的使用体验感,不能够正确顺利的完成本组单词的练习 | 在Beta阶段进行修改 |
完形填空复习单词的界面刷新界面后会换一组题,但是不能再继续填写作答 | 复现概率不太大,但还是会影响用户的使用体验感 | 在Beta阶段进行修改 |
个人信息界面上传头像失败 | 不影响基本功能的使用,对用户体验感的影响不太大 | 在Beta阶段进行修改 |
注册登录界面报错后重新修改信息报错不会消息 | 不影响基本功能的使用,对用户体验感的影响不太大 | 在Beta阶段进行修改 |
智能问答界面时间格式不太准确 | 不影响基本功能的使用,对用户体验感的影响不太大 | 在Beta阶段进行修改 |
验证码在前端生成与处理 | 会被扒出来验证码而被hack,影响软件的安全性 | 在Beta阶段进行修改 |
各个接口权限设置不到位,用户可以调用API修改其他用户的个人信息以及使用其权限次数 | 严重影响软件和用户账号的安全性 | 在Beta阶段进行修改 |
项目采用前后端分离的开发模式, 前后端均有requirements.txt用于环境构建,能够使项目被接手继续开发。
前后端的项目架构均依照目录规范 进行,目录与项目的各个页面一一对应,有良好的解耦性。
在Alpha开发期间,我们基本实现了项目计划中的所有功能,学到了如何敏捷开发与交付一个较为可靠的软件项目,经验教训是对于软件的安全性还需要更加完备的管理。Beta阶段首先将进一步完善软件的安全性,然后考虑将用户标签融入到英语学习的词单、单词、应用场景中,为用户提供更加个性化的英语学习内容。具体内容将在在后续的alpha总结文档与beta计划文档中具体展开。