事后诸葛亮分析报告
索引
一、设想和目标
我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
我们的的项目主要在于实现校园内部的二手交易,此项目针对校园内的学生所拥有的闲置物品进行出售和购买
我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?
经过连续几周的设计,我们的项目得到基本的完成实现,功能也基本具备,但是有一些扩展的功能如敏感词屏蔽和图片审查等功能由于时间的关系最后并没有实现
项目按照预计的时间交付,原计划达到的用户数量也是由于时间的关系以及宣传的力度不够最后并没有达到预期
用户量, 用户对重要功能的接受程度和我们事先的预想一致么? 我们离目标更近了么?
用户对于项目功能接受程度和我们事先的预想大致相同,离最后项目完善的目标也更加接近了
二、计划
**是否有充足的时间来做计划?**计划这个项目的时间是足够的,但是在设计程序的时候由于临近期末和其他课程的实验与课设,使得整个项目并没有完全的完善
团队在计划阶段是如何解决同事们对于计划的不同意见的?
当团队成员之间有不同的计划意见的时候,我们就会开一个小小的会议,咨询团队成员的意见,在会议的最后决定一个大家都可以接受的结果
你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
原计划的工作最后没有全部完成,因为时间的关系一些功能并没有得到实现
有没有发现你做了一些事后看来没必要或没多大价值的事?
没有。因为每一个二手交易平台的基本功能都是固定的,我们在设计我们的项目的时候也是依照一些主流的平台功能进行设计,所以并没有说事后看起来没必要或者没有多大价值的事情
是否每一项任务都有清楚定义和衡量的交付件?
我们每完成一个功能模块,都会在我们的Github中提交相应的代码和Issue等等以保证整个项目的推进,确保在队员之间进行任务交接的时候能够一个清晰的思路
是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
整个项目的制作并不是完全顺利的。我们在后期进行其他功能的设计开发的时候出现了之前注册功能无法实现的问题,这可能是因为团队在后期测试的时候并没有将注册功能开发的迭代添加进最新一次的测试,因此导致了我们并未能及时地发现之前的功能有Bug
在计划中有没有留下缓冲区,缓冲区有作用么?
在项目设计到第二周的时候由于提前完成目标,给第三周的设计带去了两天的缓冲时间,这使得在第三周的开发中更加充分的利用了这些时间,是开发更加高效
将来的计划会做什么修改?(例如:缓冲区的定义,加班)
缓冲区对我们而言主要意味着为阶段性任务预留更多的时间。加班是不可能加班的,这辈子都不可能加班的🙈
三、资源
我们有足够的资源来完成各项任务么?
人力资源:团队六人
开发资源:专业的开发工具
设备资源:六个人,六台电脑,一个奇迹
时间资源:我们一共有七周的时间来开发完整的项目
各项任务所需的时间和其他资源是如何估计的,精度如何?
根据任务复杂程度和所需新学知识的多少估计的,精度不算特别精确,但四舍五入一下也差不多了,更何况部分时间可以作为缓冲。
测试的时间、人力和软件/硬件资源是否足够?对于那些不需要编程的资源(美工设计/文案)是否低估难度?
测试的时间、人力和软件/硬件资源基本上是足够的,由于我们的项目中并没有很多的包含美工设计和文案,所以这方面难度并不是很大
你有没有感觉你做的事情可以让别人来做(更有效率)?
在进行项目规划分工的时候都是根据小组各成员的开发与测试能力来进行分工的,所以在实际执行的时候并没有出现谁的事情让另外一个人来做更有效率的情况。
四、变更管理
每个相关的员工都及时知道了变更的消息?
每位成员在自己提交完相关代码的时候都会在讨论群告知其他成员
我们采用了什么办法决定“推迟”和“必须实现”的功能?
“必须实现”功能是作为一个网站,尤其是购物网站最基本的功能,“推迟”的都是在基本功能之外为了提升用户体验而加入的额外功能,大多时候因为时间不够以及技术能力暂未达到而推迟,实现条件达成了之后会尽快完成。
项目的出口条件(Exit Criteria - 什么叫“做好了”) 有清晰的定义么?
实现了最初设计好的极大基本功能,通过一定的技术和场景测试之后,就可以初步上线。
对于可能的变更是否能指定应急计划?
出口前期开发组随时待命,以备出现的各种意外情况以及最新的需求变更。
员工是否能有效地处理意料之外的工作请求?
可以,基本上出现问题都在第一时间将工作重心移到处理当前事项中。
五、设计/实现
1.设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
- 项目的设计工作包括功能设计、前端页面的设计、整体框架设计、以及算法设计各部分的设计主要如下:
- 功能设计是根据能够收集到的信息,小组成员通过讨论,确定了主要功能以及项目的主要框架,并由组长整理成文档。因为是各模块成员一边讨论一边设计的,所以这样做能够帮助我们更好地统一意见。
- 前端页面的设计由黄浩楠进行设计,设计的时间是在进行前端开发以前和功能设计同步进行的,因为黄浩楠负责这次前端的开发,且有学习过一些页面设计的知识,所以适合前端页面的设计
- 整体框架设计,是由本团队其他负责后台的成员(黄春光、黄有权、邓盛永、王嘉杰)参与。
2.设计工作有没有碰到模棱两可的情况,团队是如何解决的?
- 有遇到过一些设计方面的问题,由于大家都各有自己的想法,而我们设计的是一个二手交易平台,所以有些需要讨论商议的问题
- 比如之前有提到过是否添加悬赏任务系统,有小组成员曾提出开发这一功能的来作为一个创新的亮点,但是后来我们还是决定不添加这个模块,一是开发能力的限制,二是开发时间并不充裕
3.团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
- 在设计过程中采用原型图来设计页面,采用 E-R 图来设计数据库实体,这些工具使得设计变得直观明了
- 在项目实施阶段采用燃尽图来统计进度,进度平稳
- UML虽然有考虑过使用,但由于项目时间较赶,所以没有使用
4.什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
发布商品功能,在上传图片之后并且发布在首页商品信息中显示不了上传的图片;发布之后发现付款功能缺失,原因在于在原本开发时提到的付款功能并没有考虑到相关接口的需求
5.代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
代码复审和测试同步进行,测试完成之后再相应的功能处打上断点,利用开发工具的功能更深一层测试相关功能
六、测试/发布
团队是否有一个测试计划?为什么没有?
项目在每一周的开发阶段都会有一个测试计划,当这一周的任务完成之后都会按照测试计划的内容开始进入相应的测试阶段
是否进行了正式的验收测试?
是的,针对各项功能都进行了测试
团队是否有测试工具来帮助测试?
我们的项目使用CONDING中的自动化测试和用例
团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
- 团队采用项目管理工具CONDING中签入统计和燃尽图来跟踪软件效能的,并进行定期会议汇报情况(七天冲刺一天一次会议,正常时间一周两次)
- 有用,改进了不少 bug ,至少让项目运行不乱,而且也让我们知道有哪些地方是瓶颈,哪里要改改进
- 压力测试主要由后台通过发送并发请求测试
- 应该改进的是总体测试,由于时间较紧,没有做到方方面面都测试,只测试了主要功能以及页面的效果
在发布的过程中发现了哪些意外问题?
发布的时候我们的团队才意识到我们并没有服务器来部署我们的项目,所以最后的发布方式只能是将整个项目目录上传到GitHub,其他人下拉到本地进行测试
七、团队的角色,管理,合作
1、团队的每个角色是如何确定的,是不是人尽其才?
每个成员的角色都是根据成员的个人能力来进行确定的,基本上可以做到人尽其才
2、团队成员之间有互相帮助么?
团队之间当某位成员在模块开发的过程中遇到了问题,会提出来,然后团队的其他成员共同商讨解决的方案。
3、当出现项目管理、合作方面的问题时,团队成员如何解决问题?
如果遇到类似情况的时候我们通常会聚集在一起开一个简短的会议,通过队内交流讨论一起解决分歧问题
八、总结
你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
已定义级
你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
磨合期
你觉得团队在这个里程碑相比前一个里程碑有什么改进?
团队成员之间的合作能力更上一层,开发思路更加的清晰
你觉得目前最需要改进的一个方面是什么?
加强团队之间的合作方式和本身开发能力的提升
对照敏捷开发的原则, 你觉得你们小组做得最好的是哪几个原则? 请列出具体的事例
- 有不懂的地方及时提出来团队成员共同帮忙解决
- Alpha冲刺阶段代码提交有条不紊,按照相应的开发流程有序进行
- 遇到Bug及时共同讨论,高效解决修正
代码管理的质量具体应该如何提高? 代码复审和代码规范的质量应该如何提高?
提升开发能力,完善代码具体规范,善于借助方便的代码管理规范工具
整个程序的架构如何具体提高? 如何通过重构等方法提高质量,如何衡量质量的提高?
提升开发能力,对程序架构有一个更深层次的学习,比较重构之后代码的健壮性;以及在用户场景测试的时候用户对于项目使用时的舒适度
其它软件工具的应用,应该如何提高?
搜寻相关资料,了解和熟悉各个软件工具的使用方法,并应用到项目中
项目管理有哪些具体的提高?
项目管理不管是在规划的时候还是开发过程中都要一直跟进,确保整个项目的紧凑。
项目跟踪用户数据方面,计划要提高什么地方?例如你们是如何知道每日/周活跃用户等数据的?
使用日志工具进行记录和查询用户登入登出情况
项目文档的质量如何提高?
因为很多项目文档是有相应的模板的,可能需要从网上搜寻一些优秀的项目文档进行借鉴和查询,来提高自己撰写相关文档的能力
对于人的领导和管理, 有什么具体可以改进的地方?
在PM的选择方面,选择更加有经验的人来担任的话可以对整个项目体系的管理有更清晰的目标
小组讨论照片
小组成员项目贡献分
姓名 | 角色 | 贡献分 | 可验证的贡献 |
---|---|---|---|
何智聪 | 后台开发,测试,撰写博客 | 21.7 | 测试项目,撰写博客,分配成员任务 |
黄浩楠 | PM、前端 | 20.4 | 进行前端界面的设计开发 |
黄有权 | 后台开发 | 20.2 | 进行后台与数据库的开发 |
黄春光 | 后台开发 | 20.1 | 进行后台与数据库的开发 |
邓盛永 | 后台开发 | 20.3 | 进行后台与数据库的开发 |
王嘉杰 | 后台开发 | 20.5 | 进行后台与数据库的开发 |