第一次迭代总结和思考
第一次迭代上周结束了,总的来说相比较有一开始收获是非常大的。重新开始学习一种语言,熟悉相应的开发环境,掌握编码规则,都是不可多得的体验和收获。
设想和目标
- 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
- 我们软件很明确的定义,就是一个统计实时噪声数据并绘制区域噪声地图,同时提供给用户需要的信息,之后政府也可以根据噪声数据采取针对性的措施
- 典型用户:学生(目前只能局限在湖大这个群体范围)
- 典型场景:交通,住房等人的活动区域
- 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)?
- 原计划功能:用户可查看实时噪声分贝,实时噪声折线图显示,并在后台显示上传数据
- 实现情况:
- 实时噪声分贝功能已基本实现,数据上传也基本实现
- 折线图的绘制已经实现但未集成
- 查看所选择时间的噪声地图功能因为涉及的算法比较多,实现起来也很有难度,还未实现
- 交付和用户:软件功能的核心功能-噪声地图显示还未实现,暂时无法投入使用
- 用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?
- 暂未投入使用,用户实际接受成度未知
- 产品完成度一般,不过下一阶段目标已经明确,但是之后的压力较大
- 有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 由于我们的项目需要开发Android客户端,ios客户端和服务器网页,整体工作量比较大,又加上大家都是之前没有开发经验的,所以项目开发起来相对缓慢,并且大量工作重复机械(垃圾工程很多)。这就导致我们第一次迭代计划实现的功能较少,后续开发压力比较大。
- 如果历史重来一遍,我希望一开始就已经学会了相关的知识,不然边学边做太慢,这种过程非常痛苦。
计划
- 是否有充足的时间来做计划?
- 整个创新课程的团队项目时间不太长,计划的时间也不会太长。而且计划总是赶不上变化,最开始的计划也是根据进度不断调整。
- 团队在计划阶段是如何解决同事们对于计划的不同意见的?
- 计划阶段讨论很顺利,大家的意见都很统一。
- 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
- 第一次原计划的内容比较少,alpha版本的计划都超量完成了
- 有没有发现你做了一些事后看来没必要或没多大价值的事?
- 设计交互界面的过程中采用了好几种方式结果最后还是没有用上,结合之前的学长SIT项目的经验,结合了他们的数据库设计了一下上传数据的模块结果也没有太大作用。
- 是否每一项任务都有清楚定义和衡量的交付件?
- 小组聚在一起搞开发,所以已有问题就当场解决,所以比较清楚。
- 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
- 组内第一次迭代没有实现集成,都是各自做各自的模块,导致验收的时候很匆忙
- 风险的话就是各种线程的跳出,还有多个功能集合就会有一定的问题
- 在计划中有没有留下缓冲区,缓冲区有作用么?
- 留有缓冲区,第一次迭代差不多在验收前一个星期已经实现,这一周应该可以算做缓冲区。
- 缓冲区主要是针对第一次迭代的内容完成一定的集成,并开始学习有关后台开发和网络编程协议有关的内容
- 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
- 继续加强组内联系吧,多开会讨论,加强协作,继续加强修仙和爆肝
- 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 不做前端,因为另外一门课程的原因,需要我写一个后台程序,所以真不如第一次迭代开发的时候规划任务时选择后端开发
- 如果历史重来一遍,一定在创新课程开始之前就把相关知识学好!
资源
- 我们有足够的资源来完成各项任务么?
- 时间和资金的资源限制,alpha版本任务也基本实现
- 各项任务所需的时间和其他资源是如何估计的,精度如何?
- 时间主要是按任务量估计,时间按各自的安排估计
- 精度还不错,课本能保持高效且时间安排还比较合理
- 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
- 测试没有系统、详细的安排,做了简单的测试,没有花费很多时间
- 人力资源比较少,不太足够。
- 美工做的一般,各种文档的撰写基本由PM负责了,应该还是很难写的
- 你有没有感到你做的事情可以让别人来做(更有效率)?
- 没有,有问题大家就讨论,什么问题当场就解决了,不存在滞后的问题
- 有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
- 如果能重来,要把分工做的更加明确。
- 如果能重来,我要写web
- 如果能重来,我一定在加强熬夜力度
变更管理
- 每个相关的员工都及时知道了变更的消息?
- 我们组每周都会多次开会,在着手开发以后只要一有时间大家就都在公寓内咖啡店集中开发,所以沟通比较多。
- 我们采用了什么办法决定“推迟”和“必须实现”的功能?
- 在第一次迭代计划中有设置功能优先级
- 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
- 根据之前的原型设计和需求文档,基本功能和UI设计好了就算OK
- 对于可能的变更是否能制定应急计划?
- 没有提前制定应急计划,小组计划也没有出现大的意外
- 员工是否能够有效地处理意料之外的工作请求?
- 大家的及时调整都很棒,对于意外的发生也能做出迅速的反应
- 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 我们小组的沟通非常多,这样就能互相了解到相互的进度等,互相促进提高。
- 改进的话就是自己投入更多时间,把闲暇时间好好利用起来。
设计/实现
- 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
- 整个模式的设计是在项目初期,由pm和老师沟通商定的
- 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
- 开始时有一点模糊,后来大家一起讨论得以最终确定
- 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
- 网上大量的资源和相应的软件,所以绘图不是问题,主要是要理清之间的逻辑关系和相关的联系
- 腾讯敏捷开发平台帮助管理项目有巨大的便利性
- 这些工具都非常有效,帮助巨大。
- 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
- 文档更加丰富了,会在项目推进中,不断完善、更新文档
- 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
- 目前完成的功能比较少,所以bug还没怎么发现
- 还没有发布
- 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
- 代码复审主要是小组之间互相检查,而我们组在检查其他组时是分文件进行分工,各司其职
- 严格执行了代码规范。函数命名,成员命名,代码注释,代码组织等都严格查看了。
测试/发布
- 团队是否有一个测试计划?为什么没有?
- 没有一个完善的测试计划
- 受时间和资源的限制
- 是否进行了正式的验收测试?
- 我们组由边老师亲自进行了第一次验收,虽然结果不是很满意但是应该也算完成了
- 团队是否有测试工具来帮助测试?
- 暂未考虑
- 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
- 暂未考虑
- 在发布的过程中发现了哪些意外问题?
- 噪声地图显示功能未解决,暂时不考虑发布
- 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
- 因为还是第一次做项目,经验还不太够,测试方面暂时没有精力、时间考虑
团队的角色,管理,合作
- 团队的每个角色是如何确定的,是不是人尽其才?
- 小组比较民主,PM都是按照大家自己的意愿分配角色,
- 基本人尽其才。
- 团队成员之间有互相帮助么?
- 当然,两个客户端各分配两个人,这样更加便于沟通交流。
- 客户端也和服务器端正在加强协作沟通。
- 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
- 合作问题基本没有,大家都很包容体谅对方。
- 小组成员之间也互相帮助,我们是一个很有爱又可爱的集体~
- 百度谷歌大法好
总结
1.你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
应该属于可重复级(Repeatable)
2.你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
磨合基本完成,下一步就是规范和创造
3.你觉得团队在这个里程碑相比前一个里程碑有什么改进?
大家彼此更加熟悉,互相的配合会比之前更有效率.
4.你觉得目前最需要改进的一个方面是什么
迭代计划制定的不太合理,任务分配需要更加合理一些,现在后期开发压力比较大
5.对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例
我们组做的最好的我觉得就是小组沟通很多,每周都会多次开会,在着手开发以后只要一有时间大家就都在公寓内咖啡店集中开发。