项目团队:小豆芽
开发周期:11.5-12.2(Alpha版本)
设想和目标
1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
- 解决问题:当前电商平台卖家买家角色固化,买家在没有寻求到心仪商品时无法记录并告知他人,卖家出售商品无法确认是否有市场有需求;
- 软件定义:基于微信小程序,实现一款可以个性化发布心愿或商品,借助圈子个性化营销的电商小程序;
- 典型用户:热爱线上购物的小伙伴;
- 典型场景:肥宅的家中;
2. 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)
目前来看Alpha版本的计划基本完成。
- 预期实现功能:首页浏览商品,点击相应商品可以查看其详情/评论,以及可以选择加入购物车/关注卖家/直接购买三个功能,搜索栏可以搜索商品,发布模块实现发布心愿/商品,心愿单界面对已发布心愿的修改或删除,“我的”模块是修改用户昵称头像,绑定邮箱手机号,填写收货地址,查看购物车和交易记录等。
- 验收交付:在第一阶段验收成果,以上功能基本实现,遗留的问题就是微信支付的接口个人小程序无法调用,这是技术之外的又一大难题。
- 用户数量 这一指标不在本次计划范围之内,用户反馈模块还未知;
3. 用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?
- 在这一阶段不考虑上线,接受程度还未知,不过这一模块的开发目标还是更近了。
4. 有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 在确认需求阶段不仅要有创新有难度,还要做好任务难度衡量,因为比较特殊的是这个项目创新需求是团队自己来提,很容易导致任务难度不在能力范围之内,比如微信支付功能,在后续开发时才知道个人无法调用,实现困难。
- 会在之后遇到类似情况吸取教训,历史不会重来一遍,不后悔选择这个项目,遇到问题和团队一起想办法去解决就OK。
计划
1. 是否有充足的时间来做计划?
- 按照课程流程来说,4-6周做出项目整体计划的完善与原型制作,时间还是充足的;后期开发按照计划来进 行,有改动也是酌情而定;
2. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
- 团队有不同意见很正常,原型计划阶段是开会大家轮流在黑板上画出自己的简单构思,大家觉得可行的办法记录下来最后一起汇总,这一阶段不同意见还不是很大的冲突。
- 数据库设计阶段因为不同意见难以调和确实有点小冲突,哈哈哈哈不过也是很有趣了,既然你不让我我不让你最终决定:找老师!在老师指导下发现有些功能单独做出表会提高检索效率,有些不必太过精细。准备阶段就这样结束,之后就是开发了。
3. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
- 目前这一阶段计划的工作除了微信支付这个小意外,其余基本完成,后期会讨论是否去掉这一功能,毕竟可行性的确受硬性条件限制(没有公司也没有钱)
4. 有没有发现你做了一些事后看来没必要或没多大价值的事?
- 这个只不过有些不熟悉走了太多弯路浪费时间(比如备案)。
5. 是否每一项任务都有清楚定义和衡量的交付件?
- 是,小程序拥有清晰的框架,这一阶段基本一个界面对应前端一个文件夹和后台一个jsp。
6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
- 计划自然赶不上变化,因为备案原因,一开始只能用ip访问实现一些小功能,发布上传图片必须要域名通过,所以和团队暂时搁置了这部分,开始其他功能界面开发,险就险在验收前五天终于完成备案,开始突击发布模块和整合所有功能。
7. 在计划中有没有留下缓冲区,缓冲区有作用么?
- 缓冲区的话。。周天验收,计划周五通宵完成所有剩余模块,周六这个缓冲区测试bug,小修改什么的,不然在deadline最后一天来完成心里压力也是有点大。有用是有用,就是通宵才发现以后还是好好养生吧
8. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
- 之后项目注重于算法和美工,所以和前期不一样,每周都要有个deadline吧,不然算法这块真不是最后突击就有用的,而且希望能避免刷夜,真扛不住扛不住。
9.我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 整个项目发展到现在,收获最大的就是真切感受到了一个软件的生命周期是怎样运转的,coding是重要,但是前期的充足准备更能让开发事半功倍。重来一次,会在需求讨论时候多方面考虑。
资源
1. 我们有足够的资源来完成各项任务么?
- 可以完成任务,但还没有到充足的程度,时间比较紧张,没钱也是硬伤。。。
2. 各项任务所需的时间和其他资源是如何估计的,精度如何?
- 时间安排大致按照计划,有些模块难度较大会延长时间,都是看情况而定,精度不高。
3. 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
- 测试的时间不太多,完成每一功能自己会先测试,最终汇总再次测试,但是因为考虑的方面不太全,这次验收来看还是有遗漏。
- 人力资源还是可以的,软件/硬件这部分,服务器也是学生价,被吐槽无数次。
- 前期原型设计和过程中的文案,难度可以接受,只不过就是投入时间很重要。
4. 你有没有感到你做的事情可以让别人来做(更有效率)?
- 分工还是较为合理的,每一阶段每个人都有不同的任务,开发阶段也不能只靠代码能力强的同学。
5. 有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 美工文档方面还是要精细注重的,接下来这一阶段希望整体更加规范。
变更管理
1. 每个相关的员工(组员)都及时知道了变更的消息?
- 是的,每一次变更或讨论都会在群里通知。
2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
- 按照迭代计划优先级以及实际情况实现可行性。
3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
- 能够达到迭代计划里的预期功能即可。
4. 对于可能的变更是否能制定应急计划?
- 在微信支付无法实现的情况下选择调整优先级先做下一功能块,应急计划还是视情况来定的。
5. 员工(组员)是否能够有效地处理意料之外的工作请求?
- 可以,在测试的时候需要更多测试数据,后台同学能够及时处理好向数据库再次添加数据。
6. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 开发阶段沟通很重要,所以这几周面对面沟通编程时间强度加大。再有一次仍会如此。
设计/实现
1. 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
- 设计阶段在最初4-6周,PM完成框架汇总大家意见,可以改进的地方队友再进行修改。时间人员分配较为合适。
2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
- 功能块细分的时候意见不统一会再次沟通。
3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
- 运用UML,让每一个功能块细化,自然也是在改进,因为项目进行中不同的小意外与实现度加大,UML也是要修改的。
4. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
- 发布信息模块,因为不同其他只是向服务器请求数据,这块需要上传数据,因为不太熟悉还有时间问题,bug较多,这一阶段还未发布上线。
5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
- 小组之间相互检查代码,还没有严格执行代码规范。
6. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 没有哪一阶段是不重要的,原型设计与代码规范要注重。
测试/发布
1. 团队是否有一个测试计划?为什么没有?
- 目前还没有,会在项目coding结束后集体进入测试,形成测试文档。
2. 是否进行了正式的验收测试?
- 是,这是由课程老师安排助教来进行的。
3. 团队是否有测试工具来帮助测试?
- 目前还没有。
4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
- 目前还没有。
5. 在发布的过程中发现了哪些意外问题?
- 目前还没有。
6. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 测试阶段更要注重细节,今后会投入更多测试检查时间。
团队的角色,管理,合作
1. 团队的每个角色是如何确定的,是不是人尽其才?
- 按照每个人的意愿分配,完成效果也很好。
2. 团队成员之间有互相帮助么?
- 有,每一次开会编程遇到问题都是互相帮助解决的。
3. 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
- 开会前期每个人会把问题都提出来,面对面沟通最高效。
- 我感谢项目组每个小伙伴,每个人都在努力做好这个项目,才能让项目进展到现在,也感谢队友 张鑫平 对的帮助,因为前端开发遇到难题在其讲解下才明白问题出在哪里,该怎么解决。
4. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 团队精神很重要,目前团队氛围也很好。接下来会一起攻克剩余的难点。
总结:
你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
- 应该是处于CMM初始级。
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
- 磨合向规范转型。
你觉得团队在这个里程碑相比前一个里程碑有什么改进?
- 沟通交流更多,合作效率提高。
你觉得目前最需要改进的一个方面是什么?
- 开发的代码规范性问题。
对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例。
-
不论团队内外,传递信息效果最好和效率最高的方式是面对面的交谈。
- 这也是目前开发阶段我们一直遵守的原则,面对面交谈与开发减少不必要的模棱两可之处,及时发现问题并解决。
-
可工作的软件是进度的首要度量标准。
- 最基本的测试就是打开小程序看运行情况,能不能和数据库进行增删改查的操作是这一阶段最主要的工作。
最后这个照片环节,虽然开发阶段偷偷收集了队友大量黑照做表情包,哈哈哈哈但通宵战友情不能这么被出卖,那就酱啦。