软件工程第六次作业--结对作业
在线英语学习平台客户端原型
1.结对成员
刘博良 2015034643042
杨子龙 2015034643030
2.需求分析
使用NABCD模型进行需求分析
2.1 N(Need, 需求)
2.1.1背景描述和需求简介
随着经济全球化和信息全球化的发展,英语能力越来越受到人们的关注。作为国际通用语言的英语,更是在很多重要场合上广泛使用。由此英语的学习越来越被社会所重视,小学到高中自不必说,英语向来是作为考核的课程之一。而在大学的英语四六级考试同样是要求在校大学生有较强的英语能力,而且英语也是考验中的必考课程之一。Crazy在线英语学习平台,顾名思义,是针对英语学习而生的学习平台。而它的主要服务对象是大学生,里面的词汇既有四六级词汇,也有考验英语需要的词汇,无论是为了四六级考试,或者是备战研考,使用Crazy在线英语学习平台都是一个不错的选择。
本项目服务对象有两种,客户端用户和后台管理用户。而后台管理用户可划分两种,超级管理员和普通管理员,超级管理员有操作后台数据的一切权利,而普通管理员只有对静态英语数据的储存有全部操作权限,其他的存储模块只有查看的权限。
至于客户端用户,是本项目的前端使用者用户,要成为客户端用户,首先需要进行用户注册,注册后进行登录才能使用学习平台进行学习使用。以下把客户端用户简称为用户。用户登录后,可以进入用户的个人中心查看信息。在个人中心里面可以查看或者修改用户的基本信息,然后还可以查看学习历史,除此之外,用户还可以查看好友的信息,查看好友在线状态,可以给好友发送留言信息,同时在个人中心里还可以查看留言板看是否有留言信息接收。
除了个人中心外,主界面里还有排行榜信息查看,可以进入排行榜界面查看前10名用户的排行。然后还有社区模块,进入社区可以浏览其他用户发的信息帖子,在社区模块里面可以发帖,在帖子界面里发送留言信息,回复留言信息等。
然后就是主模块,即学习模块,学习模块首先划分学习层次,有英语四级学习,英语六级学习,考研英语学习三大学习层次, 选择好学习层次后, 就可以选择分类学习, 组合学习和整体学习, 分类学习有单词学习,短语学习, 句子翻译学习(四六级汉译英,研考英译汉), 完型填空学习, 阅读理解学习, 还有写作练习;组合学习是从分类中用户选择要组合的类型进行套卷组合进行学习, 而整体学习是包括了所有分类题型的学习。分类学习可以选择题目数量,最少5道题以上,最多100道题,增加数目以5的倍数增加。
学习完成后,系统自动判题统计分数以及给出完成的时间, 根据分数和时间进行积分运算, 积分用于排名。
2.1.2具体功能和数据需求
2.1.2.1 登录注册管理
(1) 注册
用户填写基本信息进行注册,要填写的信息有(账号,密码,确认密码,邮箱,密保问题,密保问题可以设置多个,最多三个)
(2) 登录
用户根据账号或者邮箱号进行登录
(3) 忘记密码
根据密保问题重置密码
2.1.2.2 英语资料数据管理
该模块的使用用户只针对管理员
(1) 查看数据
英语数据资料首先根据层次分类,不同的层次有对应的类型的不同的题目
(2) 上传数据
选择层次(英语四级,英语六级,研考级)和类型进行上传
(3) 修改数据
可修改题目的层次,类型,描述,答案等
(4) 删除数据
可批量删除和单个删除
2.1.2.3 个人中心模块管理
(1) 用户基本信息的操作
查看/修改用户的基本信息(账号名,用户昵称,性别,年龄,邮箱,密保问题,学历,毕业学校)
查看用户的荣誉信息(总积分,排名,单词学习积分,短语学习积分,句子翻译学习积分,完型填空学习积分,阅读理解学习积分,写作学习积分)
查看学习历史,查看做过的学习套卷,可查看每道题的得分情况,用的提示次数和用户所做的答案和标准答案以及其他用户对题目的评论信息
(2) 好友模块的操作
查看好友列表,好友信息(好友账号,好友昵称,好友在线状态,好友总积分,好友排名)
可以给好友发送留言信息
发送好友申请,选择账号/邮箱号发送好友申请
查看好友申请,可以拒绝申请/接受申请
(3) 留言信息的操作
查看留言信息,回复留言
2.1.2.4 英语学习模块管理
(1) 选择学习层次
选择有:英语四级水平,英语六级水平和研考水平
(2) 选择学习方式
选择分类学习/组合学习/整体学习, 其中分类学习可以选择单词学习,短语学习,句子翻译学习,完型填空学习,阅读理解学习和写作学习等。组合学习可以任意选择一个或多个分类学习中的类型进行套卷组合来做题。整体学习结合所有分类来整体出卷。组合学习和整体学习还可以选择不同的类型的题目的出题数量来进行学习
(3) 具体学习
具体学习中,每道题有两次提示,用一次提示题目得分/2, 提交试卷后,系统自动给出总分和用户所用提示次数。
2.1.2.5 社区模块管理
(1) 发帖
用户可以创建帖子来进行发布,帖子发布包括(题目,主体内容)
(2) 回帖
可在具体帖子里留言,也可在其他用户留言里回复
2.1.2.6排行榜管理
(1) 查看排行榜
查看总积分排行前10的用户的信息(用户名,总积分,排名,单词学习积分,短语学习积分,句子翻译学习积分,完型填空学习积分,阅读理解学习积分,写作学习积分) 对他们的互动有好友添加和留言
2.2 A(Approach,做法)
2.2.1 项目架构
整个项目我们大概分为六大模块层,第一模块是数据操作层,主要是存放数据,数据底层操作;第二模块是业务逻辑模块,主要是提供网站的业务逻辑处理,跟网络通信层和数据操作层紧密结合;第三模块是服务器通信层,主要是提供网络通信,稳定进行网络服务,这一层我们考虑采用nginx作为服务器进行网络通信服务;第四模块是前端模块,主要是进行客户页面的友好显示和提供前端服务逻辑,这一模块我们分为两个版本,一个PC页面响应式版,一个是手机端页面版。第五大模块是爬虫和数据处理模块,主要是进行分布式爬虫爬取网站所需要的数据,爬取的数据将暂放到Mongodb中,同时还要负责对爬取的数据进行数据清洗和数据筛选。第六大模块是数据分析模块,这一模块使用机器学习算法对用户数据进行分析,自动对用户的英语学习作出智能的学习报告,以及进行题目的智能推荐,让用户更好地更有效率地进行针对性学习。
对于部署服务器,我们采用腾讯云服务器centos 7.12进行项目部署,然后数据库采用MySQL和MongoDB, 其中MySQL存放项目中稳定的数据,MongoDB存放爬虫数据。
后台服务端语言使用Python3,Web框架使用的是Django框架, 管理界面将采用比较完善的xadmin后台管理界面。
前端技术采用HTML, CSS, JavaScript, Jquery, Bootstrap, Vue, Swiper等语言和框架进行开发。我们整个项目以前后端分离以基准,所以会用到大量的异步Ajax进行json数据包的通信
2.3 B(Benefit,好处)
用户可以自定义学习计划,可以按照你的学习规律和学习习惯定义你的学习计划进行英语学习。
系统智能分析你的学习情况,智能推荐题目提供学习。
同时还可以与好友一起学习,一起相互监督,一起成长
随时获取你的学习记录,查看你的学习情况和知识掌握情况,从而可以改进你的学习计划更好地进行学习
2.4 C(Competitors,竞争)
对比其他竞争产品,如百词斩,扇贝等。
我们给用户更多的自由学习合适的学习计划进行学习,确定好学习计划后。同时系统会智能根据你的学习情况进行题目推送
题型较多,除了词汇题,选择题外,还会有各种翻译题甚至是写作题提供练习,而判题由系统进行智能判断
题库庞大,题目质量高,我们采用全网分布式爬虫进行数据爬取,利用大数据进行数据清洗和数据筛选,然后系统智能对数据进行整合处理,变成各种不同类型,不同难度的高质量题目。
与好友更好地互动学习,能够邀请好友PK学习,提供学习的乐趣
有社区模块进行英语学习交流,资料分享等
2.5 D(Delivery,推广)
线上推广:我们会编写QQ机器人和微信机器人,进行并发广告推送,同时还会建立微信公众号进行公众号推广
线下推广:推广给身边的朋友,师弟师妹,师兄师姐等,有必要可以进行传单推广,同时联系学校的一些协会和组织与我们进行合作推广
前端用例图
4.PSP
PSP | Personal Software Process Stages | 预估耗时 | 实际耗时 |
---|---|---|---|
Planning | 计划 | 20 | 10 |
· Estimate | · 估计这个任务需要多少时间 | 20 | 10 |
Development | 开发 | 400 | 320 |
· Analysis | · 需求分析 (包括学习新技术) | 220 | 150 |
· Design Spec | · 生成设计文档 | 60 | 60 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 30 | 30 |
· Design | · 具体设计 | 180 | 130 |
· Coding | · 具体编码 | --- | --- |
· Code Review | · 代码复审 | --- | --- |
· Test | · 测试(自我测试,修改代码,提交修改) | 60 | 30 |
Reporting | 报告 | 115 | 130 |
· Test Report | · 测试报告 | 90 | 120 |
· Size Measurement | · 计算工作量 | 5 | 5 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 20 | 5 |
合计 | 610 | 520 |
5.原型设计
工具:PhotoShop
前端界面比较多,所以在这里只放部分界面显示
6.结对过程
首先是阅读<<构建之法>>到第八章,充分了解到了软件开发的开发模式,开发流程和团队合作的流程,以及需求分析和NABCD模型
然后我们对项目进行深入地探讨进行需求分析,甚至已经进行了逻辑模式的设计
接着我们分析项目需要的技术点,根据团队的技术能力情况,综合整个项目来进行架构分析
然后是利用NABCD模型进行分析,PSP分析和原型设计
我们的结对照
7.心得感想
刘博良:以前做项目大多数是个人开发,一个人做需求,做设计,架构,开发,测试,部署等。当然也有过团队开发和组队编程的经验,但却没试过结对合作。这次结对合作,算是感觉良好,两个人相互配合,1+1 > 2 的效果还是很明显的。在做需求分析的时候,遇到挺多难题,大家各有想法,不过最终我们慢慢磨合好,把想法合为一致,进度也越来越快,效率越来越高。这个项目是我提出的一个项目,算是我的一个想法,所以我对这个项目是比较有感觉的,所以整个流程算是我作为一个主导的作用,不过子龙也算是给我了很多建议,有个好队友还是很不错的,我们结对时候互相配合,做架构的时候也是一起探讨,原型设计的时候相互弥补,整体进行的算是比较顺利。
杨子龙: 一直都是自己一个人做项目,借此机会抱紧博良的大腿进行结对合作,感觉知识得到了升华,学到了许多专业的知识,克服了很多以前没遇到的困难,增进了我俩的友谊。从需求分析到项目架构,再到原型设计,我们两个如同亲兄弟一般一起思考,一起分析研究,从中不断地有新的灵感迸发,这种感觉是极其愉快的,仿佛得到生命的大和谐。总之从中能学到更多如何与人合作,如何进行团队协作,为我将来进入企业工作奠定了基础,这是难能可贵的。