咱们要实现一个课程资源共享平台,为同窗们获取资源、分享资源提供便利。对于要解决的问题咱们小组定义得比较明确,对典型用户和典型场景也有较为详细的描述。前端
原计划实现的资源上传/下载功能都已经在Alpha阶段实现了,只是一些比较细致的功能,如资源收藏、评价等,尚未实现。咱们的原计划是发布一周内用户量达到300, 实际结果为230左右。java
目前只是实现了资源上传和下载的功能,目前接到的反馈有打开资源界面的时候太慢,这一点实际上咱们已经在发布前注意到了,只是没有时间去修复了。在发布以后咱们经过资源的分页显示优化了资源显示过慢的问题,目前使用体验较好。python
感受没有抓住用户的痛点,下载资源的步骤感受仍是繁琐了点,应该在Alpha阶段实现一个“搜索资源”的功能会好一点,这部分咱们在Beta阶段实现。nginx
Alpha阶段共四周,其中第一周的时间主要都用于作计划上了,时间感受比较充足。咱们在第一周大体设计了网站的原型,并对数据库结构和一些接口进行了定义,但尽管作了不少计划,依然还有不少没有考虑周全的地方,好比数据库和接口在实际开发中作了不少修改。程序员
好像在实际开发中出现意见对立的状况不是不少……通常采起的作法是PM将全部不一样的意见汇总,综合利弊得出结论。数据库
本来计划是把资源收藏等小功能也给实现了,但资源上传下载这部分比想象中难很多,尤为是如何下载用户上传的文件是个问题,在这一部分花费的时间超出了预期。npm
我的中心在Alpha阶段彻底没用上,不过这也是为资源收藏等功能作铺垫,并且也没有耗费太多时间。编程
感受并无,PM只是说要实现一个什么样的功能,却没有说这个功能实现以后要达到一个怎样的标准,一个模棱两可的功能实现,最终也能够被交付。后端
并非,好比在爬取课程信息的时候一开始没有获取到课程类别和开课院系等信息,这样子就没办法筛选课程了,只能先把Beta阶段的课程搜索功能先实现了。还有一个意外就是以前提到的,咱们的资源分为两种,一种是爬取的资源,其实就是引用一个课程中心的连接;另一种是用户上传的,和课程中心上的是彻底不一样的原理,下载用户上传的资源咱们费了很多时间。服务器
计划中没有缓冲区,都是从issue堆里直接分配的(逃
工做重心转移到后端,比起赶着实现博文功能,不如先把资源功能尽量完善,把较少的功能作到极致。
开发感受缺少计划性,尽管最终目标很明确,可是实际开发时是走一步算一步。我感受计划方面要向NewTeam团队学习,他们在Alpha阶段代码编写以前就已经将任务细化到每人、天天上,这一点比咱们强太多……
咱们是一人测试,四人开发,两人前端,两人后端,资源算是很充足了,并且组员们能力都很优秀,遇到的不少坑在你们的努力下都一一踩实了。
以小时为单位记录任务时间,估计的时候首先对任务进行一个大体了解,而后经过商议、查找资料等途径判断其难度。
咱们有一名成员专门负责测试,资源还算充足,只是在进行压力测试的时候机器要一直开几天,感受有些吃不消……咱们团队没有美工设计和文案,只有码代码的程序员。
有时候网站功能出现问题了会帮忙debug,但须要本身先熟悉一下代码,这样效率感受就有点低了(其实仍是本身比较菜)。
仍是感受分工出现问题,每一个人只负责职责内的工做是最好的。要是能重来,我做为一个PM首先要保证文档是随着代码进度不断更新的,这样可以提升成员交流的效率,其实能节省下来很多时间。在实际开发过程当中,不少bug也是由于没有定义清楚接口和功能致使的,感受浪费了很多时间……
感受并无,有些私下决定的事并没能及时通知你们,这一点PM须要反省。
核心的功能必须实现(如资源的下载和上传),围绕着核心功能的小功能能够先放放(如资源的收藏和评论)。
并无,差很少能跑了就算出口了……
感受并无针对变动制定应急计划,这一点在计划中已经反省了,遇到变动的时候只有应急,没有计划。
中途有临时给一些成员添加过任务,他们都接受了而且完成得很漂亮,可是我以为意料以外的工做请求仍是应当越少越好。
因为计划性不是很强,因此对于变动也没有概念,这实际上是个很危险的事情。另外若是出现了变动,PM要明肯定义出“什么东西变了,什么东西没变”,这样成员们大概也有个底。
设计是在Alpha阶段第一周由PM完成的,软工团队项目是和结对项目无缝衔接的,所以时间还算合适。
有,好比课程id这一部分,到底是一个递增的整数,仍是教务上的课程码,这一点并没能达成一致。后来id是按照整数算的,可是又加了一个code字段,用以和爬取的资源信息进行衔接。
并无用到这些工具,测试驱动的话感受时间不是很够,UML感受用处也不是很大,不过单元测试在beta阶段应当尝试一下。
资源的上传,由于这里须要将文件从本地转移至服务器上,在发布以后出现的bug有“没法下载上传的文件”、“超过1M的文件上传失败”等bug。因为时间较紧,咱们只进行了简单的测试,没有想到“上传的文件也能够下载”这个问题;咱们文件的上传大小限制为10M,咱们前后尝试了上传1M如下和10M以上的文件,前者成功后者失败,觉得功能没有bug,却没有考虑到1M~10M中间可能出现的问题。
团队没有统一进行代码复审,只是PM在Alpha阶段结束以后浏览了一遍核心的view.py和interface.py两个文件。其中view.py中发现了未被调用的函数,这些有的是提早开发的Beta阶段的功能,有的是Alpha阶段废掉的函数。
代码规范较严格地遵照了,python部分大部分函数都在开头用注释标注了requires,modifies和effects,前端部分也遵照了npm的代码规范(不然编译都过不了……),只是没有规定变量的命名方式,这一点没有作到统一。
设计阶段是软件开发的地基,值得重视。要是能重来,除了增强代码规范外,还要对设计进行充分的考虑,尽量完善接口和数据库说明文档。
PM并无制定测试计划,由于当时PM认为测试是要依赖于开发的,因此更多留意了开发部分而忽视了测试部分。
在验收的时候,除了运行测试样例外,还进行了负载&压力测试,测试同窗还提供了一些优化建议。
功能测试使用java版本的selenium,负载测试采用jmeter和badboy实现。
咱们使用jmeter测试网站的性能,在alpha阶段后期进行了一次耗时两天的压力测试,模拟100个用户连续访问,请求响应的错误率为0,经过此次压力测试,咱们了解了网站的承受能力,固然此次测试也有须要改进的地方:
运行压力测试时要封闭其余用户登陆,开放环境下压力测试获得的最大用户量比网站是实际能承受的用户量略小。
只在alpha阶段快结束时进行了一次压力测试,测试的次数太少,鉴于两天的时间比较长,测试期间网站不能更新版本,从此打算每次测一两个小时,每周测一次,以追踪网站效能。beta阶段后期再进行一次较长时间的压力测试。
nginx默认的文件上传限制为1M,后来经过修改配置文件解决了这个问题。
除了要制定开发的计划,也要制定测试的计划,并且要增长压力测试的次数。
调查了一下各个同窗的意愿,最终状况是,前端是有过开发经验的两名同窗,测试是一名很细心、能力很强的同窗,然后端是对后端开发抱有极大兴趣的两名同窗。
互相帮助是常常的,好比前端的两名同窗会常常讨论一些技术问题,出了bug以后你们也会很积极地寻找缘由。以前Ajax出现问题的时候你们也都积极地思考解决方法,并在群里告知你们。
组里关系很融洽,至今没吵过架(捂脸)。有时候代码衔接出现问题或是任务分配不当的时候,成员们都就事论事,没有争吵,而是共同寻找解决的办法,这是令我很欣慰的。
要了解每一名成员,包括但不限于长处、短处、性格以及时间安排等等,分配给每一名同窗最适合它的工做是坠吼的,可是作到这一点很难很难……
我以为处于第一档次,由于没有一个较为完整的计划,管理经验不足,实际开发变动较多。
我认为处于创造阶段,团队中全部人的努力都是为了最终产品的质量,总体氛围很和谐,为了更好地达到预期的效果,小组成员会主动学一些技术,出现问题的时候群里也会有交流。
任务分配,Alpha阶段任务分配太模糊了,组员不知道该作什么,应当作成什么样,这是PM的责任。若是能处理好这一点,规划好要实现什么,交付的标准是什么,明确了方向组员才能投入更多的精力在开发上,而不是在揣测“咱们要作什么”上。