M1尸检报告
团队照片:
设想和目标
1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
解决”学霸“系统资料源的问题,我们会用爬虫爬取美国东海岸的学校计算机学院的网站以及中文关于计算机方面的网站。定义的很不清楚,比如存取格式,爬取文件种类等。
2. 是否有充足的时间来做计划?
有,我们集体讨论过两次关于整个工程构架方面的。
3. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
在集体讨论中,每个人提出自己的看法,然后我们讨论每种看法的可行性。在这个过程中我们交换了意见,消除了异议。
计划
1. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
都做完了。还有部分没做完的是因为把他们规划到了M2去做。对于M1要做的都做完了。
2. 有没有发现你做了一些事后看来没必要或没多大价值的事?
爬取的PDF、ppt等,在M1阶段其余的组没用到。导致白爬了。
3. 是否每一项任务都有清楚定义和衡量的交付件?
部分任务有清楚的定义。有些任务因为我们也是第一次做,很难衡量能做到什么程度,对于这些任务没有清楚地定义。至于交付件,主要是通过改代码实现的。
4. 是否项目的整个过程都按照计划进行?
基本都是按照计划进行的,就是项目起始时进展慢于计划。俗话说万事开头难。后续的都是按照计划进行的。
5. 在计划中有没有留下缓冲区,缓冲区有作用么?
没有留下缓冲区,因为给我们的总体时间就比较少,没有多余时间用在缓冲区。缓冲区可以提高软件质量,比如在缓冲区DEBUG,进行充分的测试,保证项目准时保证质量的完成。
6. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
接下来可能整个计划的节奏会加快。至于加班什么的,不太现实。我们也不可能把大部分精力都放在软工课上,平常别的课的压力也很大。
资源
1. 我们有足够的资源来完成各项任务么?
资源是自己找的,老师提供的很少很少。但是我们自己找到了不少,足够完成任务。
2. 各项任务所需的时间和其他资源是如何估计的,精度如何?
估计主要看任务的难度和任务人的效率。精度还可以,基本+-20%内。
3. 用户测试的时间,人力和软件/硬件资源是否足够?
部分测试在软件开发时就做了,但是总体的测试不够,因为服务器给的太晚了,我们之前没有做过大量数据的测试。直到有了服务器才开始全面测试。
4. 你有没有感到你做的事情可以让别人来做(更有效率)?
有的,每个人都有专攻,比如有些人文笔比我好,有些团队博客他来写会比我写效果好。
变更管理
1. 每个相关的员工都及时知道了变更的消息?
每次有最新消息,我都是第一时间群发邮件给组员的,我们还建立了一个QQ讨论群,以及定期也会集体讨论,所以每个人都知道变更信息的。
2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
根据需求,需求大的就无法推迟。老师要求的就必须实现。其他功能根据难易度和时间剩余情况决定优先级。
3. 项目的出口条件(Exit Criteria – 什么叫“做好了”)有清晰的定义么?
我们刚开始就是把网页存入本地文件夹,很明确的。后来他们又提出了别的需求,但是这个需求是在展示之后提到的,只能M2时候改了。
4. 对于可能的变更是否能制定应急计划?
应急计划主要是如果某个人的进度没有赶上,会要求其他组员加入这个任务,帮助这个组员赶上进度。
5. 员工是否能够有效地处理意料之外的工作请求?
组员当然有些不情愿,但是这个是一个团队的要求,而且我们的评分计划也是差不多评分,所以这是每个人的责任与义务。如果大家在这个层面达成共识,工作请求就不是问题。
设计/实现
1. 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
在团队作业开始第一周的前半周设计的,有PM和大家讨论完成。合适的时间,合适的人。
2. 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
有呀,有一些功能可做可不做,有一些解决方案多种多样,我们组内也有分歧,但是大家讨论完就可以解决出一个不错的方案。
3. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
这些用的比较少,因为时间比较短,我们是敏捷开发,文档什么的比如UML就不用画了,还有我们的功能也没有全面到画UML的程度。至于单元测试,肯定是做了的,每个人完成自己的任务时,提交前都测试了,然后提出自己的BUG。
4. 什么功能产生的Bug最多,为什么?
当然是爬取是对于HTTP请求时BUG比较多。因为可能那个网页可能不接受请求或者不让我们下载,或者要我们先登录。不同的网站不同的页面都不一样,所以BUG比较多。
5. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
大家基本都懂代码规范的,虽然有些代码改的比较乱,但是注释还是有的。
测试/发布
1. 团队是否有一个测试计划?为什么没有?
前期爬虫还没写出来,当然也用不着测试计划。后期服务器给的比较晚,马上就开始了测试,所以没有测试计划。
2. 是否进行了正式的验收测试?
在展示前,我们还录了视频,那时候做了个相当于验收测试。
3. 团队是否有测试工具来帮助测试?
很遗憾,没有。因为我们是用JAVA写的,像VS提供的很多测试工具我们就没法用。所以都是人工测试的。
4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
测试工作有用的,比如我们之前一直纠结多少个线程好的问题,经过大量的测试,我们定下了我们认为最佳的线程数。
5. 在发布的过程中发现了哪些意外问题?
发布后,需求有改变。这个问题呢,主要是没完全领会老师的意思,和下一组沟通有问题。