烫烫烫烫烫(hotcode5)团队
1. 团队成员的简介和个人博客地址
刘畅
博客园ID:森高Slontia
身份:PM
个人介绍:
弹丸粉 || 小说创作爱好者 || 撸猫狂魔(x || 生命的价值在于创造
(我绝对不知道,我一个写代码的怎么就当PM去了?)
张安澜
博客园ID:MinstrelZ
身份:后端开发
个人介绍:
张安澜,来自北京航空航天大学2015级计算机学院,喜欢旅游,修仙党,lol大乱斗选手,吃鸡萌新,喊666贼6
辛德泰
博客园ID:Alethia
身份:前端开发
个人介绍:
我是ZnTcTi
窦鑫泽
博客园ID:AlenDou
身份:开发
个人介绍:
大家好,给大家介绍一下,这是我自己@窦鑫泽。
喜欢在行末尾写左大括号{,
代码字体喜欢consolas,
喜欢空格而非tab,
最喜欢的语言是Python,
//最喜欢的游戏是2k
比较喜欢和大家一起合作做东西,希望可以多向大家学习,共同解决遇到的技术性的困难,做出一个有价值能应用有用户的项目。
赵奕
博客园ID:ohazyi
身份:开发
个人介绍:
擅长做梦,喜欢折腾
方科栋
博客园ID:科栋
身份:测试
个人介绍:
零经验但喜欢解决问题带来的成就感,抱着“不选软工,枉入六系”的心态选课,愿意为此付出足够时间。
2. 团队开发情况
2.1 项目预期
2.1.1 团队项目的目标
资源共享
我们的目标是打造一个北航课程资源共享平台,让同学们更便利地获取各个课程的相关资源,资源包含且不限于课件、考题、笔记等。
互助学习
在此基础上,我们希望这个平台能够帮助同学们解决一些学习上的困难,并鼓励同学们互帮互助。
2.1.2 预期的典型用户
在项目功能说明书中,我们已经对预期的典型用户进行了一个初步的估计,但后来发现当时预估的典型用户考虑得并不充分。
经过了Alpha阶段的开发,我们根据用户的水平进行了一定的分类:
学霸级:
- 不屑于学院安排的课程,对课外知识涉猎更多,利用平台进行知识与经验的分享
- 想学的课太多,很多知识都想了解一下,通过这个平台可以获取到感兴趣课的课件
普通级:
- 平时还算用功,单纯希望期末考个好成绩,对得起这一学期的努力
- 即将面临研究生考试,有些方,希望能在平台上得到比较靠谱的考研指点
- 学习很努力,善于做笔记,记录自己学习的点滴收获
- 趁着假期对下学期的课程进行预习
学弱级:
- 平时浪太多,期末压力大,利用平台进行知识恶补
2.2 用户量情况
我们记录了每一个访问这个网站的ip,目前监测到的ip约有220条,有效的注册用户数量约为30。
2.3 团队成员协作情况
2.3.1 分工协作情况
其中红色任务表示核心任务,浅红色任务表示非核心任务,灰色任务表示暂不考虑任务。
我们将团队成员的职责进行了一个简要分配:
PM一人、测试一人、前端开发两人、后端开发两人
在Alpha前半部分,后端按照给定的接口说明进行功能的实现,前端主要负责页面设计,彼此关联度不是很高。在每日的会议上,前端和后端的分配的任务基本都是彼此独立的。
Alpha阶段的后半部分则是前端和后端的衔接,通过Ajax进行数据交换。在这个过程中,前端和后端的任务会有所交集,比如在衔接过程中遇到了一些问题,需要搞清楚是前端还是后端的责任,这时候就需要负责该功能的前端和后端开发人员进行沟通。
2.3.2 经验教训
其实感觉团队协作这一部分处理得还是挺糟糕的,糟糕的地方主要是以下几点:
(1) 任务分配不明确
总体感觉github上的issue没有处理到位,由于缺乏对一些任务的认知,导致没有充分细化,实际时间与预估时间相距甚远。对任务本身缺乏了解,多半会把任务想得过于简单,在分配任务的时候自然就会出现问题。工作少则修修bug,工作多则实现整个功能,进度忽快忽慢,缺乏稳定性,这是我认为最需要反省的一点。
(2) 没有更新技术说明文档
作为一个指挥官,太着急亲自投入到实际的战斗中,以至于连作战物资都没有准备齐全,这样的队伍多半是要吃败仗的。
很抱歉的是,这次似乎带着团队绕了很大一个弯子。在Alpha阶段开始前制定的技术说明文档的确起到了一定作用,但计划往往赶不上变化,实际情况和技术说明文档所描述的相差甚远。这也是为什么前端和后端的衔接花费了如此长的时间。没有一个统一的规格,就相当于一艘船没有龙骨,前端和后端就总是需要通过沟通去商议如何衔接,效率低了很多。
2.3.3 Scrum Meeting
在Alpha阶段中,我们小组共进行了10次会议,会议大致内容为:任务进度,任务分配,问题难点交流等等。
2.4 团队项目管理
使用github,分配的任务有进展,或处理了遗留问题后就push到dev分支上。
2.5 时间/质量/资源的平衡
一开始是划分了几大核心功能,如登录注册、课程查找、资源上传和下载等。目标是在Alpha阶段结束的时候,这些功能至少是一个“可以用的状态”,但是“不一定好使”,也就是先解决“温饱”问题。如果时间还有富余,就将这些功能尽可能优化,向“小康”迈进。
2.6 测试情况
测试报告
下面的前四个是使用selenium进行自动测试的脚本,已在网站上运行成功,最后一个是负载测试的脚本,同样已运行成功。
测试注册功能: TestRegister.java
测试用户登录和访问个人中心: TestLoginAndUserInfo.java
测试课程搜索功能: TestSearch.java
测试下载功能:TestDownload.java
负载测试: test_load.jmx
2.7 代码规范
由于我们的前端框架是vue,需要用npm编译才能和后端进行衔接。而npm在编译的时候有着它自己的一套代码规范,我们认为这个代码规范很不错,就直接拿来用了。
npm的代码规范很严格,如每行的末尾不允许有空格,大括号前后必须有一个空格,所有引号必须为单引号,不允许出现tab等等。
另外在view.py中,我们对函数实现的功能进行了一个简要的说明,大大提升代码可读性,如图:
2.8 项目文档情况
在Alpha阶段开发工作开始前,发布了功能说明文档和技术说明文档,内容包括原型设计、接口说明、功能验收标准等。除此之外,在Alpha阶段开发初期,还制定了一个数据库设计文档。由于开发过程中实际情况和文档所描述得有差异,于是对接口说明部分进行了更新,和项目代码一起push到github上。对于其他方面的说明之后也会陆续整理成独立的文档,与项目同步更新。
2.9 对于项目的目标用户是一般学生的项目, 你们如何找到学生做需求分析?他们给你什么样的反馈?
在选题的时候,我们面向北航所有本科在读本科生,发布了《北航信息平台用户调查》。此次问卷调查共回收有效问卷95份。
2.9.1 功能需求调查
调查其中一项是让同学们对平台功能进行选择,结果如图所示:
如上图,分数越高,表示该功能越受用户青睐。由于课程平均分、挂科率等数据需要和教务协商,我们决定优先实现资源共享功能。
2.9.2 用户行为调查
问题1:你是否需要一个平台,用于了解课程信息,并与其他同学交流?
问题2:如果这个平台上有课程相关的资源(如课件、考题、笔记等),你是否愿意以做出部分贡献(如上传资源、撰写课程心得)为代价,获取这些资源呢?
问题3:你是否愿意花费一些时间精力,撰写某门课程的学习心得、课程体会,为接下来学弟、学妹们的学习提供帮助呢?
虽然调查报告的结果显示同学们对于这个平台充满期待,但调查数据也只是一种比较理想的预期估计,要想取得用户的青睐,还需我们多加考虑平台的具体设计。
3. 进展情况
3.1 燃尽图
最后一次会议的燃尽图:
这个燃尽图是根据github中issue的关闭情况自动生成的,因此符合开发的实际情况。
3.2 发布的功能
我们的网站: 北航iCourse课程资源平台
资源的下载功能(无需登录)
资源的上传功能(需要登录)
最新资源显示
课程模糊搜索功能
统计下载量/课程访问量功能
登录/注册功能
个人中心
一键加入用户群
3.3 用户群中的反馈
关于资源窗口显示的问题
关于获取资源信息时间过长的问题
4. 团队成员在Alpha阶段的角色和具体贡献:
各成员贡献情况。贡献分的计算方式依照事先制定的贡献分分配文档(有一定调整)。
5. 所做软件最有特色的功能是什么,请着重介绍一下。活的用户如何从你的软件中获益的,请现场展示。
目前最核心的功能是资源的下载。网站初始的资源全部是从课程中心获取的,对于资源的下载,用户无需注册/登录,这比课程中心要方便许多。
但是说到最有特色,我想应该是Beta阶段要重点实现的“贡献分”(和刚刚所说的软工的贡献分没有关系)——某同学在某门课上的贡献分越高,说明在他在这门课程上做出的贡献越大。为了鼓励同学们为课程学习做出贡献,每门课程都会有一个“贡献分排行”,对课程做出卓越贡献的同学的名字将会被公布在排行榜上。
不仅如此,对于贡献最多的同学,我们会给予“专家”的称号,这意味着他的文章或回答具有更高的可信度。
贡献分的获得方式有很多,可以是发布资源、发表文章、补充课程信息、回答同学问题等等,我们希望这种积分制可以吸引同学们尽自己所能为他人提供帮助。
6. 存在的问题
6.1 得到的反馈
我们建了一个用户群,群里时不时会有反馈,但反馈的大多数是显示相关的问题。
老师和助教也在我们的开发说明中给予了反馈,其中注册邮箱不存在、进入个人中心无法返回、返回选课页面无法保留原状态这三条反馈很有价值,只是在Alpha阶段中来不及全部修复。在Beta阶段中,我们将对之前不合理的地方进行优化,提升用户体验。
6.2 目前的bug
由于功能还没有实现完全,有些链接点击后会起到和刷新相同的效果;
课程选择页面在不断地放大/缩小之后,课程列表的宽度会变得很宽,但刷新之后恢复正常。
有用户反馈,在部分浏览器中访问网站会出现问题,但是在Chrome、Firefox、Edge*问是正常的。
部分资源的访问依赖于课程中心,如果课程中心出了问题,可能会导致资源无法访问等问题发生。
7. 总结
7.1 团队收获
大一、大二的学习主要以独立完成课程设计为主,很少涉及团队协作内容,所以这次Alpha阶段带给我们最大的收获便是一次完整的团队软件开发流程。这是一次由“理论”转变为“实践”的过程,我们所学到的不仅仅是如何部署服务器,如何编写代码,如何对网站进行测试,更是如何彼此协作,提高团队开发的效率,这是由“独立完成”到“协作完成”思维方式的转变。
就我个人而言,在Alpha阶段开始前不仅没有接触过网站开发,更是一个没有任何管理经验,不太擅长沟通的人(笑),所以这次担任PM的工作对我而言是一次不小的挑战。正像上面谈到的那样,我并不认为Alpha阶段的协作状况令人满意,所幸团队的成员都是一群充满活力和热情的老铁们,他们时刻鼓舞着我,信任着我,当协作出现问题的时候,他们没有抱怨,而是在积极思考如何解决问题,这令我十分感动,在这里我必须向他们表达感谢。
Alpha阶段暴露的问题是带给我的教训,我会总结经验,不让同样的错误在Beta阶段重演。
7.2 Beta阶段的计划
Beta阶段的首要任务是对Alpha阶段的功能进行优化和补全,比如之前助教所提升的邮箱不存在问题,我们打算采用“邮箱认证”的方式解决,除此之外还有诸如“课程收藏”、“资源收藏和评价”、“举报和审核”、消息提醒、历史搜索、热门课程等提升用户体验的细节功能需要实现。
另外我们的网站在部分浏览器上显示的效果不是很好,我们想在Beta阶段中对这一部分进行优化。
除了资源功能以外,我们还想再Beta阶段实现“发帖”的功能,我认为*那种设计很适合我们,既可以发表文章,也可以提问题,不过具体还需再商议。