M1阶段事后总结
- 设想和目标
1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
我们组要爬取网上的内容供下一组使用,定义的不太清楚,因为用户只有下一个团队所以没有进行详细的需求分析,而且和下一个团队做的交流也有限,没有及时得到下个团队的需求反馈。
2. 是否有充足的时间来做计划?
有时间,我们组在展开工作之前总共开了两次很长会,进行了大量的讨论。
3. 团队在计划阶段是如何解决同事们对于计划的不同意见的?
我们会协商讨论,直到计划得到大家的认可。
- 计划
1. 你原计划的工作是否最后都做完了? 如果有没做完的,为什么?
学长遗留下来的诸多bug均已经修复,而且所有几个新增功能都做完了,但有些功能模块没做好,仍有BUG需要改。因为剩下的时间不太够了。
2. 有没有发现你做了一些事后看来没必要或没多大价值的事?
有。比如选择存储路径的功能我们做了之后又删掉,因为我们一开始对总体规划不够,而且与下一个组沟通欠佳。
3. 是否每一项任务都有清楚定义和衡量的交付件?
有些有,比如爬虫爬取数据量的要求(十万级页面)、过滤无关页面的准确率这些都能从已经存在的一些爬虫软件中获得清楚定义和衡量的交付件;而有些没有,因为一些新增功能的评判我们大家都不知道做到多少才叫“好”。有些情况下,大家对细节过早地进行讨论,花了很多时间。不如等到后来再讨论。
4. 是否项目的整个过程都按照计划进行?
基本上是,一是大家比较自觉,团队凝聚力比较强,二是PM与DEV之间,DEV相互之间都会互相督促。
5. 在计划中有没有留下缓冲区,缓冲区有作用么?
没有,因为展开工作之前我们已经开了两次长会,充分考虑了各个功能的完成时间,功能我们觉得自己可以按时写完,而且事实上我们也实现了所有预计的功能。
6. 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
首先我们要留下缓冲区,以备进度完成情况不好。
然后是要在动手开发前做更多的计划,避免开发过程中做无用功。
- 资源
1. 我们有足够的资源来完成各项任务么?
有。
2. 各项任务所需的时间和其他资源是如何估计的,精度如何?
开始精度很粗略,后来随着项目任务的加重,大家只顾得上干活,没时间考虑精度问题。
3. 用户测试的时间,人力和软件/硬件资源是否足够?
足够。有三个测试分别从不同的方面做黑盒测试,充分模拟了用户的情况。
- 变更管理
1. 每个相关的员工都及时知道了变更的消息?
我们QQ群会经常聊天以沟通最新的变化或进展,同时出现重大的bug的时候会召集成员进行面对面的交流。
2. 我们采用了什么办法决定“推迟”和“必须实现”的功能?
综合1、紧急程度(讨论协商定) 2、时间剩余 3、人员能力 来讨论哪些功能必须做哪些可以推迟。
3. 对于可能的变更是否能制定应急计划?
一般不能,直接告诉具体负责人要做哪些变更,没有应急计划。
4. 员工是否能够有效地处理意料之外的工作请求?
能,新的意外的工作请求会发到群里讨论分配给新的人做或延长原负责人的规定时间。
- 设计/实现
1. 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML, 或者其他工具来帮助设计和实现?这些工具有效么?
使用了单元测试,我们会对不同的小模块进行测试,看他是否已经完善没有bug且符合规格,前者是比较有效的(无法下载pdf功能),但是我们没有做UML的测试。
2. 什么功能产生的Bug最多,为什么?
url爬取识别过程的BUG最多。因为这是我们最难的核心功能,总不同的URL有不同的形式,容易出现各种BUG。
3. 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
这个是从头到尾一直在进行的,测试人员和开发者A,B,C会对开发者D写的代码进行审核,因为首先复审是测试分内的事,而A,B,C一是要二次检查D的代码是否有一些幼稚的错误,二是确定D写的代码有没有对整体代码架构造成不良的影响,确保整体代码保持一个高内聚、低耦合的特质。
- 测试/发布
1. 团队是否有一个测试计划?为什么没有?
我们有测试计划,而且测试的效果比较好。
2. 是否进行了正式的验收测试?
进行了,发现了bug,于是又清空了数据库并修改了bug。
3. 团队是否有测试工具来帮助测试?
单元测试使用了Junit工具。
4. 团队是如何测量并跟踪软件的效能的?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
TFS 还是很有用的,至于改进,有这样一些建议:
(a)输入Bug 还是步骤比较多,很多需要手动重复填写的字段。
(b)不是所有的Bug 或 task 都记录在TFS中。
5. 在发布的过程中发现了哪些意外问题?
比如,由于我们采用的是google pagerank算法,他是根据网页之间相互的超链接计算每个网页的热度,录视频的时候由于时间不够,所以爬取了很少url,我们发现热度排序功能的算法在抓取数据量不大时迭代次数较少,不能很好地将网页都按热度排序,算法适用性低。
- 两个问题:
1) 对比敏捷的原则, 你觉得你们小组做得最好的是什么?
我们觉得我们小组做的最好的地方是敏捷原则中的“拥抱变化”。
每当有新的问题出现时,我们都可以最迅速地解决。
在代码刚拿到手我们大概读了一遍后,我们发现整个项目与我们想象的完全不同:代码质量没想象中的好,功能实现差的很多,没想到的还有要学服务器、数据库还有TFS得使用。但是我们通过1次网上讨论,两次全员会议和多次部分人员会议迅速地制定了下一步地方向。
开发过程中,我们又遇到很多没想到的新问题:1最开始测试的时候,发现怎么爬都爬不到pdf文件,即使爬到的pdf也只是数据库中的坏项,最后发现是学长保存pdf文件的bug2由于是多线程程序,新增的热度排序功能实现起来难度很大,BUG很多、3临展示发现选择本地文件功能没用、4临展示下一组告诉我们数据库有问题
可我们都通过及时地内部讨论、变更计划、重新规划计划完成了最终的ALPHA版本,这是我们小组最棒最自豪的地方。
2) 什么是在下个阶段 M2 要改进的地方?越具体越好。
下一阶段我们必须改进的是要做好整体地规划:
在这一阶段,我们需求讨论阶段做了大约两天,讨论出结果后以为可以开始干活了,可是之后进行过程中发现事实不是如此。或者是做的功能多余,或者是做完已有功能后不知道下一阶段干什么,导致软件开发过程中走了很多弯路。
因此,我们下一阶段必须在整体地架构上多费功夫。这个不是会不会的问题,而是用心不用心的问题。我们要花大约3天的时间来仔细地探讨我们得需求,尽可能多地罗列,然后为每个需求得重要性、可行性进行评估,得出实现每个需求的性价比。然后结合我们可以开发的时间,来确定最终需求。同时留出缓冲区时间,以防止意外需求或某些不可控因素干扰进程。这样我们就可以保证我们的需求对症下药、药到病除,以最少地精力达到最好的效果。
会议讨论图片记录:
M1阶段事后总结的更多相关文章
- M1阶段事后分析
M1阶段的开发结束了,在周四的课上我们组也进行了alpha阶段的汇报.我们的努力得到了应有的回报,下面我们将针对M1阶段产生的一些问题进行分析和反思. 一.设想和目标 1.我们的app更像是一款针对北 ...
- 事后分析报告(M1阶段)
我们的项目是自选项目,一款名为备忘录锁屏MemoryDebris的软件. 因为我们组成员在此之前都没有接触过安卓开发,于是在第一阶段花了很大的时间和精力学习安卓.又花费了较长一段时间设计软件与研究安卓 ...
- M2阶段事后总结报告
会议照片: 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 开发一个快捷方便的记事本App.从用户体验角度出发,在一般记事本App的基础上进行创新 ...
- M2阶段事后总结
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?我们的主要任务是将35w+个符合条件的网页,问答,文章放入数据库:爬取功能定义为以下几种:通用型爬取 ...
- [Alpha阶段]事后分析博客
目录 Alpha阶段事后分析博客 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 讨论照片 Alpha阶段事后分析博客 作业要求:Alpha阶段事后分析 设想和 ...
- M1阶段个人总结
经过4周的开发,我们团队的第一阶段已经结束了. 这一个月来我由于其他事情较多,所以开发的工作主要交给了另外的三名同学. 我主要负责制定代码规范和工程结构,通过github来跟进项目进度,提供一些技术支 ...
- 团队项目M1阶段个人反思
郑培蕾: 作为项目的PM,我前期的工作还是有很大的缺陷的,因为没有在开发之前对项目进行一个合理的评估,所以后来分配任务的时候就很不科学, 而且任务分配的比较粗糙,没有细化到每个人每天应该做什么,这就导 ...
- 团队Beta阶段事后分析
团队Beta阶段事后分析 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件要解决用户的休闲娱乐问题,为用户提供好玩的模拟经营类的游戏,游戏主题 ...
- [Gamma阶段]事后分析博客
目录 Gamma阶段事后分析博客 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结 讨论照片 Gamma阶段事后分析博客 作业要求:Gamma阶段事后分析 设想和 ...
随机推荐
- October 18th 2017 Week 42nd Wednesday
Only someone who is well-prepared has the opportunity to improvise. 只有准备充分的人才能够尽兴表演. From the first ...
- Debian apt-get 用法
(说明:sudo--使用超级管理员权限进行apt-get ; packagename--代表安装的软件包名) sudo apt-get update —— 在修改/etc/apt/sources.li ...
- es5与es6继承思考
es5与es6继承思考 es6继承 class Father{ constructor(name){ this.name = name; } getName(){ console.log(this.n ...
- MYSQL一次千万级连表查询优化(二) 作为一的讲解思路
这里摘自网上,仅供自己学习之用,再次鸣谢 概述: 交代一下背景,这算是一次项目经验吧,属于公司一个已上线平台的功能,这算是离职人员挖下的坑,随着数据越来越多,原本的SQL查询变得越来越慢,用户体验特别 ...
- Metabase在Windows下的开发环境配置
Metabase在Windows下的开发环境配置 */--> pre.src {background-color: #292b2e; color: #b2b2b2;} Metabase在Wind ...
- openresty火焰图安装
1.下载systemtap安装包并安装 从https://sourceware.org/systemtap/ftp/releases/下载最新版的systemtap.tar.gz压缩包 我安装的时候, ...
- SpringBoot实用技巧札记
目录 如何手工设置SpringBoot内嵌的Tomcat启动端口号(port) 如何解决Eclipse.Properties中文乱码的问题 如何手工设置SpringBoot内嵌的Tomcat启动端口号 ...
- mysql中查看一个字段中,有几个逗号
利用replace.length的内置函数
- STS-新建spring mvc项目
引入响应的jar包解决报错: 由于国内的网络限制,下载会较慢.使用之前可自行更换maven的镜像路径,越近越好.
- [Usaco2005 Open]Disease Manangement 疾病管理 BZOJ1688
分析: 这个题的状压DP还是比较裸的,考虑将疾病状压,得到DP方程:F[S]为疾病状态为S时的最多奶牛数量,F[S]=max{f[s]+1}; 记得预处理出每个状态下疾病数是多少... 附上代码: # ...