成员简介
谷大鑫: 热爱编程,技术狂魔,可以对感兴趣的技术钻研到茶饭不思,队伍的技术中坚。标签:整个队伍里最靠谱的人。
个人博客:http://www.cnblogs.com/nrm1/
杨金键: 未曾有相关开发经验,不是大腿,照片是表哥的,性取向正常,平日打游戏看动漫,但没有加入ll等*,不玩氪金手游,游戏动漫更新换代快,无特殊信仰,无特殊爱好,无特殊毛病,随处可见的平凡的不会在暗中拯救世界的中国大学生(小编:他只是比较低调)
个人博客:http://www.cnblogs.com/thereisnoname/
谢振威:学过的东西和系里的大部分同学一样,Java,c,c艹什么的,自称这2年最大的遗憾就是没把算法,数据结构学好。开发软件方面,除了测试,其他都比较感兴趣(小编:所以给他安排了测试这一工作)希望在学期末可以做出一个看上去比较炫酷的东西出来。
个人博客:http://www.cnblogs.com/xiezw/
崔正龙:整个团队里面的氛围担当,全天24小时里面有25小时都处在逗逼状态。最让人佩服的地方是娱乐学习两不误这里做的不能再好,人之楷模
个人博客:http://www.cnblogs.com/R-81/
金豪: 熟悉很多领域的不同的东西,除了代码(这是个悲伤的故事),目前也正在通往技术达人的路上奋斗着。这个软工课程也正是这样的一个契机,可以和诸多志同道合的人合作完成一个绝佳的任务,真是一个让人兴奋的过程,期待。
个人博客:http://www.cnblogs.com/MurryK/
详细团队成员介绍见:http://www.cnblogs.com/longweilingshi/p/longweilingshi.html
产品描述
我们在做的产品是一个集数据获取以及处理为一体的系统。整个系统分为两个部分,数据爬虫模块以及数据处理模块分别继承自去年两个团队的成果。我们的任务是在这些现有代码的基础之上增加新的功能并且完善修复,保证所处理的数据可以被前端,也就是学霸网站的前台程序所使用。
用户描述
我们的产品只有一个用户,那就是负责xueba网站前端开发的六六大顺项目组,而依据我们与用户的沟通协商,一致决定alpha版本的最终目标就是让整个学霸网站从后到前全线贯通,完整运行,再beta版本再考虑展示更多更好的数据
分工合作
因为项目工期短任务量大,所以没有安排专制的开发人员或者测试人员(会把开发人员累死),所以我们小组采用了”全民借兵”的形式,每个人都承担了不同的开发任务,包括项目经理(摊手)同时顺带测试自己的代码。
项目管理
因为一些先天的限制,例如所使用的服务器只能有一个用户同时在线,所以大家很难做到同时线上开发。所以我们采取了本地开发的模式。每个人都在自己本地写新增的代码,经过测试后整合到整个项目的模块里面,最后再同步到服务器上面。除了原本的服务器,我们还在github上有做版本管理,对于不同的开发模块,建立不同的分支进行管理。
资源分配
首先不得不承认的一点是做软工确实需要占用我们大量的时间,从开发任务到每日例会都需要很多的时间。而我们嫩顾总的只能有效的利用时间,在这里,我也没有强制性的给队员设置DDL,而只是让每个人自己给自己定任务。因为每个人都会自己的可利用时间心里有数,这样就可以最大程度的在保证大家积极性的前提之下最快的完成既定的任务
软件测试
因为我们做的产品本质上只是一个用来从海量互联网上爬取数据并处理的工具,所有用户需要看到的是最终有有效的数据被提取并且展示出来,而其中实现细节不需要考虑。所以我们最终在做的主要是白盒测试而不是覆盖率极广的单元测试。具体的测试细节见Alpha版本测试报告
运行效果
代码编写规范
我们的开发是基于上一届两组学生的代码之上进行的,而我们的编码思路也只能依照原本的代码里来,所以没有做出详细的编码规范。(P.S. 但是我们在beta版本会按照我们的思路重新整理代码模块, 那时会有统一的编码风格以及接口定义)
文档展示
除了日常例会记录*16之外
龙威零式-团队博客
学霸网站之NABCD
数据获取以及处理系统 --- 功能规格说明书
数据获取以及处理系统 --- 技术规格说明书
团队个人贡献分分配规则
Alpha版本测试报告
Alpha版本项目展示
Alpha版本发布说明
爬虫数据库描述
学霸数据处理项目α版本代码冗余部分消除及部分代码调整过程说明
学霸数据处理项目网页与后台交互方式及具体实现备用方案
新版本改进
这里分模块来说。对于爬虫模块,我们修复了主要的问题,保证了其可以顺利运行并且拿到数据。在这个基础上,随着我们越加深入的了解代码结构,就有越多的问题暴露出来,而且都是牵一发而动全身的问题,于是经过再三考虑,我们打算在beta版本采用carwler4j 作为现成的爬虫模块进行使用,这样既可以保证可靠性又可以保证速度。于是在这样的前提下,再花费大量精力在现有爬虫的改进上就是无用功,于是我们在爬虫部分满足alpha版本milestone的要求之后就停止了开发,即使还保留了一些无关紧要的问题。
而对于数据处理模块,我们在beta版本中虽然打算换框架,但是主要模块功能以及实现方法思路都是基本一致的,所以我们很多精力都投入在了数据处理模块的改进上面(除了项目经理之外的四个人都在做这个),具体的改进有:
- 新增从特定网站获取关键词的功能
- 新增针对word文件的处理功能
- 更换核实的分词器,新增翻译关键词功能,并添加进列表
- 新增加了MD5加密算法,用于调用百度翻译的api
- 新增solr的处理连接模块,实现与用户的对接
- 新增html正文提取函数,可以提取出格式标准的正文
- 修复了其第二次获取关键词会统计到上次的关键词的bug
- 修复了其某些网站获取的关键词不能存储的bug
- 修复了某些网站不能正常获取作者的信息的bug
- 解决数据处理模块代码运行完全没效果的问题
- 解决无法从数据库中存在的word文件读入的问题
- 解决vs 2012无法引用微软处理office组件的问题
- 优化了翻译全文卡顿时间过长的的问题
- 修复了旧版本中翻译模块不能使用的问题
- 修复了程序ip地址错误引用的问题
- 修复了数据重复处理的问题
- 修复了html中引用正则表达式错误导致崩溃的bug
- 修复原本代码中try catch不足导致的各种崩溃
- 修复了连接数据库时未释放连接程序导致无法连接的bug
- 修复了爬虫模块运行崩溃的问题
- 修复了爬虫模块部分功能性按钮错乱的问题
- 修复了爬虫模块长时间运行没有结果的问题
- 优化了部分爬虫代码的算法,提升了部分效率
项目进展
燃尽图:
发布文档:
发布地址:
https://github.com/LongWerLingShi/DataObtainingAndHandling/tree/master/alpha_publish
用户效果:
前端组已经可以访问到我们处理之后的数据,放在网页上效果如下:
此外,从solr上也可以看到我们的成果
燃尽图反应:
我认为燃尽图在考察整个项目的进度时并不准备,甚至可以说有比较大的出入。1. 最重要的一点是燃机图认为所有的issue都是等价的,而实际开发过程中,issue背后的工作量可能会相差几倍,而这些都不能反应在燃尽图中. 2. 其次,在开发过程中,燃尽图的最初待燃的部分无法做到全覆盖,我们很难在项目最初就准确的将我们需要完成的任务全部分条逻辑出来,我们只能一边做一边估计,这样燃尽图的增长实际上会与我们中间某段时间的状态相关联 这两点原因导致了燃尽图燃烧情况与真实项目进度往往有一些出入
成员贡献
贡献计算分配规则见博客
于是有
名字 | 角色 | 团队贡献分 | 具体的,可衡量的,可验证的贡献 |
---|---|---|---|
杨金键 | Dev/Test | ||
谢振威 | Dev/Test | ||
谷大鑫 | Dev/Test | ||
崔正龙 | Dev/Test | ||
金豪 | PM/Dev/Test |
用户反馈
在将跑通整个程序为首要目标的alpha版本中,我们的成果也得到了前端团队的使用
另外临时存储的数据也可以在10.2.28.82:8080/solr
中直观的看到
总结
(这里我仅仅能从团队经理的角度谈谈我看到的我们的成长,具体到个人请参考每个人的个人总结)
经过整个alpha阶段的磨练,整个队伍的成长还是很大的。
- 我们学会了更好的分工合作,我们从最初的没有明确分工,每个人随心的找一些东西来学,到后来有了明确的分工,每人专攻一个特定的领域。
- 我们学会了如何有效的协作开发一个项目,这里主要是指github团队开发的学习,了解了衡量指标(issue)的重要性。
- 我们学会了如何进行更有效的沟通。最开始每次例会都会长达半个小时到一个小时,大家流水账似的讲述今天干了什么,明天要干什么,另外也总发散到别的地方,好像都有说不完的话但是其实细想之下没有包含多少对于其他人有价值的内容。后来我们逐渐过渡为敏捷会议,上来直接讨论那些真正需要讨论需要大家动脑的内容,虽然时间很短,但是重要的信息一个都不会拉下
- 我们学会了将自己的学习成果保留下来。整个项目开发过程中,总是不乏各种学习任务,最初我们的学习任务都是属于来无影去无踪的类型,在意识到这样不正确之后,大家都开始有意识的将自己的学习成果以文字的形式记录下来,不仅可以作为劳动的证明,还为其他人的参考学习甚至自己的回顾提供了遍历。