一、设想和目标
1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
我们的软件主要解决大学生寻找问题解答困难,又不好意思去向老师同学提问的问题;要解决的问题定义的比较清楚;对典型用户和典型场景有一定的描述,但是不够完整、清晰。
2. 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么?)
各模块已完成的工作如下:
模块 | 功能 |
---|---|
用户模块 | 登录、登出、注册、修改密码、重新绑定邮箱、修改 个人信息 |
问题模块 | 提问、查看、收藏、取消收藏 |
回答模块 | 回答、查看、采纳、推荐 |
评论模块 | 评论、查看、点赞、取消点赞 |
回复模块 | 回复、查看、点赞、取消点赞 |
全部完成了原定的目标
二、计划
1. 是否有充足的时间来做计划?
是,我们在冲刺前就制定好计划。
2. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
在计划阶段,对于不同的意见,我们采用在群内进行讨论,然后由组长做出决定采用哪个意见。
3. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
都完成了。
4. 有没有发现你做了一些事后看来没必要或没多大价值的事?、
学号 | 内容 |
---|---|
221701317 | 有不少地方为了按时完成,对代码的重用性缺少考虑了,不少代码可以重用 |
221701319 | 重复写一些可以复用的代码 |
221701328 | css样式分了很多文件其实没有必要,有很多样式可以重用 |
221701333 | 写了很多dao层代码,其实可以复用网上的dao层泛型接口 |
221701337 | 很多块元素不需要id但是都使用了id,导致css代码无法复用 |
221701338 | 有很多控件不需要自己写,可以使用bootstrap里的控件,既美观又方便 |
221701340 | 为了复用多写了方法,但并用不上 |
221701401 | 因为没有和前端沟通多设计了接口 |
5. 是否每一项任务都有清楚定义和衡量的交付件?
对主要的一些任务在之前有较为清楚的定义,对于一些在页面编写过程中的需要的小接口,则是由前端人员商量后交给后端一份接口的说明书。
6. 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
否,在冲刺中出现前端设计接口跟不上进度,导致开发速度下降。
当时忽略了前端设计接口不够的风险。
没有估计到的原因:对前端人员同时完成页面和接口设计的花费的时间低估了。
7. 在计划中有没有留下缓冲区,缓冲区有作用么?
有;在冲刺的最后两天,推荐算法的难度超出原定设想,使用了原定的缓存时间。
8. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
对缓冲区的设置,我们考虑将一半的缓存区分配到每个任务,避免有些问题影响整个项目的进度。
9. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
前端和后端的开发速度不同,在安排计划时应考虑到前端同时搭建页面和设计接口速度较慢,应该提前前端的工作。
三、资源
1. 我们有足够的资源来完成各项任务么?
缺乏较高性能的服务器来部署我们的系统和数据库,请求响应比较缓慢。
2. 各项任务所需的时间和其他资源是如何估计的,精度如何?
时间与人力资源的消耗由组长估计,组员根据自身情况提出意见,精度大体上满足要求。
3. 测试的时间,人力和软件/硬件资源是否足够? 对于那些不需要编程的资源 (美工设计/文案)是否低估难度?
测试需要的时间,人力和软件/硬件资源足够,alpha冲刺时对前端的工作(美工设计/文案)低估了难度。
4. 你有没有感到你做的事情可以让别人来做(更有效率)?
由于技术上优劣差别,技术比较强的组员做我的事情确实更有效率,但是人力上是不能满足的,还是得分工合作,在熟练之后做简单工作的效率的差别并不大。
5. 有什么经验教训? 如果历史重来一遍, 我们会做什么改进?
免费的数据库的网速太差,浪费了我们一些时间和人力来优化,结果也不一定优于好的数据库,硬件的支持也是必要的。
四、变更管理
1. 每个相关的员工都及时知道了变更的消息?
由于当前的网络发达,通过QQ电话或者其他的联系方式,可以及时的通知到对应的员工,并且详细的进行交接。
2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
根据这个功能在整个系统中的重要性,是否是我们所做项目的主体功能,是否可以提高项目的性能。
3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
做好各个接口的测试,并且进行整个项目的测试,将项目在服务器上运行起来,各个组员都在项目上进行测试,测试所有的功能,如若没有BUG出现,则该项目可以出口。
4. 对于可能的变更是否能制定应急计划?
当某些功能出现变更时,撰写接口的人员会及时的将接口说明书进行修改,并且发布新的版本的功能接口说明书。
5. 员工是否能够有效地处理意料之外的工作请求?
出现意料之外的工作请求时,负责人会跟组员进行沟通,然后驱动组员进行处理。
6. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
根据接口设计说明书进行代码的编写可以大大的提升效率。 项目的功能出现变更时,应当及时和对应的功能实现人员进行沟通,以防出现打出无用的代码,浪费较多的时间。
五、设计/实现
1. 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
大部分设计是在系统设计和数据库设计阶段由组员一起完成的,前后端接口的设计是在开发中完成的,由前端开发组员设计。前后端接口设计时间太迟,只由前端设计接口容易遗漏一些小地方,导致后期需要补充。
2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
接口设计时没有清楚说明数据的类型,前端拿到数据后解析方式不对出现bug,最后由前端反映到后端一起讨论解决。
3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
团队使用了单元测试的方式来帮助设计和实现,单元测试大大帮助了我们找到代码中的问题,减少了开发中许多不必要的麻烦。比较项目开始的UML文档与现在的设计细节上有很多不用,原因是我们设计UML的时候没有体会到一些开发上的难度和一些细节的不合理,UM文档需要更新一些细节方面。
4. 什么功能产生的Bug最多,为什么?在发布之后发现了什么重要的bug? 为什么我们在设计/开发的时候没有想到这些情况?
邮件验证的功能产生的bug最多,原因主要是我们没有考虑到邮箱系统的安全设计,邮件内容不够充实导致容易被认为垃圾邮件而拦截,从而产生bug。
5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
代码复审还是主要由自己复审自己编写的代码的形式。我们在IDE中使用了代码规范插件,基本执行了代码规范。
6. 我们学到了什么? 如果历史重来一遍, 我们会做什么改进?
接口设计一定要提前做好,不然容易出现任务无法并行进行的情况。如果历史再来一遍,我们一定会提前做好前后端接口设计。
六、测试/发布
1. 团队是否有一个测试计划?为什么没有?
团队提前有测试计划,只不过计划不够完善,测试的效率不高。
2. 是否进行了正式的验收测试?
是
3. 团队是否有测试工具来帮助测试?
有。Junit4
4. 团队是如何测量并跟踪软件的效能(Performance)的?压力测试(Stress Test)呢? 从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
团队采用JProfiler来跟踪代码,查看代码性能,从软件的实际运行结果看测试工作很有用,可以查看哪些部分消耗了大部分的性能,改进的话可以比较其他测试工具进行性能测试。
5. 在发布的过程中发现了哪些意外问题?
邮箱服务器发生错误无法发送邮件
6. 我们学到了什么? 如果重来一遍, 我们会做什么改进?
学到了更多对单元测试集成测试方法与工具,再来一遍的话我们会制定较为详细的测试计划弥补漏洞,并且采用更多的测试工具。
七、团队的角色,管理,合作
1. 团队的每个角色是如何确定的,是不是人尽其才?
通过各个人的学业状况和个人意向实际情况进行角色划分,主要分为前后端。
2. 团队成员之间有互相帮助么?
有,例如求助其他组员帮忙实现DAO层代码。
3. 当出现项目管理、合作方面的问题时,团队成员如何解决问题?
开一个及时的小会议,通过和组长沟通将问题解决。
八、总结:
1. 你觉得团队目前的状态属于 CMM/CMMI 中的哪个档次?
在CMMI二级,管理级。
2. 你觉得团队目前处于 萌芽/磨合/规范/创造 阶段的哪一个阶段?
规范阶段
3. 你觉得团队在这个里程碑相比前一个里程碑有什么改进?
成员之间的配合、默契提高了。
4. 你觉得目前最需要改进的一个方面是什么?
提高代码的质量
九、会议图片
我们采用群组内语音聊天的形式进行会议