问题解答


问题 1
关于代码复审,复审者是否应该参与编码?如果复审者也参与编码的话,那么难免任务量较多,但如果不参与编码的话,工作分配的似乎不太均衡。

我们的团队项目在M1和M2阶段没有刻意去做Code Review,只有在发现bug后才会由大家一起来进行debug。这个过程中我们也发现了不严格按照代码规范来写代码会给调试bug带来诸多不便。有时一段代码连当时写代码的人都已经要花好长时间才能重新看懂,更不要说其他人了。

根据我的了解,一些大公司对Code Review的要求很严。每个程序员除了写代码,还要对相应的一段Code进行复审。据我的学长说他的代码第一次Code Review的反馈结果中绝大多数都是针对代码注释的,甚至连英文注释中的语法错误都指了出来。听起来很恐怖。

问题2.
关于敏捷开发,敏捷开发的过程似乎很混乱,它的需求似乎经常会改变,这样不就是没有设计好就开始写代码?那么难免遇到很大块的代码需要修改。

我们在M2阶段的开发中就遇到了这样的问题。之前原定的开发计划,由于学校服务器的原因而泡汤,只能放弃之前已经做了一半的讨论区开发的工作。

但是在开始写代码之前还是要有一个总体的设计,如果之后有改动,则要对相应的设计进行修改。

问题3
敏捷开发的过程在我看来仅适合一些小型的项目,大型项目中如果想应用的话会搞得一团糟,是不是呢?

通过询问一些正在实习的同学、学长,我发现目前的小型创业公司似乎都采用了敏捷开发的项目,一些大公司其实也把工作分为了一个个相对较小的项目组,每个项目组或多或少的都会应用到敏捷开发的一些思路。

问题4
单元测试要求对一切输入都有正确的输出,不能依赖自己的其他模块的代码,那么这难免会使我们倾向于把每一个模块都设计的很大,从而减少单元测试的压力……该如何避免这种情况?

这个问题现在看来似乎没有什么意义。因为在写代码的时候根本不会考虑到单元测试的问题……所以大家在写代码的时候基本都是按照应有的逻辑来写。做单元测试时也就只能正常做了。

问题5
结对编程,仅是指两个人共用一台电脑,一个人写,一个人看吗?两个人进行任务分配,每人完成自己的任务,也是一种互补的编程形式,这算不算结对编程呢?

对于结对编程的定义,书上已经说得很清楚,两个人进行任务分配,只能叫做“协作编程”,结对编程的重点在于两个人同时完成一份code,从而使得代码具有较高的正确率,减少一些不必要的错误。

新的问题


产生了一个新问题就是:在团队的开发效率开始变低时,作为PM应如何激励团队成员来保持开发热情?是否应制定一系列的奖惩措施?这个问题在企业中或许很容易解决,但是作为学生,同学间似乎很难去强行要求他人。

论文回顾


如今重新去阅读那些文档,我终于明白了,作为一个项目的开发者,你首先要对自己的项目感兴趣,之后才能做出漂亮的、有用的项目。如果自己都感到无聊,那么项目的质量也可想而知。

此外,开发者应该经常与用户进行交流,确切的知道用户需要什么,我们才能针对用户的需求进行改进。

当然,程序的健壮性更好有切实的保障。

我还从中看到了一句感觉很有意思的话:保持项目的简单性。设计达到完美的时候,不是无法再增加东西了,而是无法再减少东西了。

我觉得目前的很多产品都能从这句话中学到很多。

知识点


  • 需求: 在进行需求分析的过程中,我学会了分析目标用户、以及进行场景分析。通过问卷调查、投票等方式找到项目所要解决的核心问题。
  • 设计: 在设计阶段,我明白了API的重要性。
  • 实现: 在项目的实现阶段,我第一次通过github配置了milestonw、issues以及燃尽图
  • 测试: 在测试阶段,我对场景测试、测试矩阵有了大体的了解。
  • 发布: 在发布阶段,我了解了产品发布的流程。以及版本号的管理
  • 维护: 通过用户反馈,可以让我们了解到产品存在的bug并进行维护。

M1/M2阶段总结的更多相关文章

  1. 【个人阅读】软件工程M1/M2阶段总结

    这次作业是好久以前布置的,由于学期末课程设计任务比较重,我在完善M2阶段的代码的同时又忙于数据库的实现和编译器的实现,一度感觉忙得透不过气来....到这些都基本完成的时候,会看自己以前的阅读心得,觉得 ...

  2. 【个人阅读】M1/M2阶段总结

    1.以前博客的链接 http://www.cnblogs.com/zyctsl/p/4028006.html http://www.cnblogs.com/zyctsl/p/4094011.html ...

  3. M1/M2项目阶段总结

    1.M1/M2总结 我们这学期完成了学霸项目. 在M1阶段,我们首先进行了分工,完成了一个系统的计划,然后是对学长代码的移植和优化.在优化代码的过程中,我们遇到了不少问题,比如一些代码的冗余以及指向性 ...

  4. M1/M2个人总结

    软件工程整个学期结束了,很开心学了这门课,在学到知识的同时也提高了自己的动手实践的能力,感觉自己在整个软件工程的各个环节中都能有所把握,可以将学到的知识运用到设计.实践更多的项目中去. M1阶段个人总 ...

  5. 软件工程M1/M2总结

    也不分M1/M2了,就从头到尾的梳理一下这学期的软工课吧. 第一节课,老师就稀里哗啦说了一下这学期要怎么搞,什么个人项目啦,结对项目啦,团队项目一二啦,还要组队啊什么的,然后风风火火的组队. 个人项目 ...

  6. 个人阅读作业——软件工程M1/M2的总结

    临近学期末,本学期的软件工程课也已经结束了,在此我对软件工程课中,我们团队M1和M2开发阶段中,我做的工作做一个总结 我是DEV,主要工作是等着上级给我分配任务,但是很多时候如果这个活我不干,其他人就 ...

  7. 【个人阅读】软件工程M1/M2做一个总结

    1.以前博客链接 http://www.cnblogs.com/penglinjiang/p/4027850.html http://www.cnblogs.com/penglinjiang/p/40 ...

  8. “北航学堂”M2阶段postmortem

    “北航学堂”M2阶段postmortem 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 这个问题我们在M1阶段的时候就已经探讨的比较明确了,就是 ...

  9. sixsix团队M2阶段Postmortem

    设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 要解决的问题:目前外卖网站比较多,用户很难快速找到合适的外卖,我们集合各个网站的外卖信息,为用户提 ...

随机推荐

  1. KVM网络桥接模式解说

    在上一篇博客中,我画了一张图来解说桥接模式下kvm的网络是什么样子的.那今天我就仔细来解释一下这方面的内容,让大家学会配置桥接网络. 还是这样的一张图,我们知道bridge就是桥接网卡的名称.让虚拟机 ...

  2. jQ 移动端返回顶部代码整理

    //返回顶部 $('#btn-scroll').on('touchend',function(){ var T = $(window).scrollTop(); var t = setInterval ...

  3. oracle的order by排序中空字符串处理方法

    1.缺省处理 Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前 2.使用nvl函数 nvl函数可以将输入参数为空时转换为一特定值,如 ...

  4. 使用KVM虚拟机遇到的问题(持续更新)

    1.qemu-kvm.kvm.qemu 和 qemu-system-x86_64四种命令的差别 qemu 和 qemu-system-x86_64:启动qemu虚拟机的命令,x86_64为64位系统时 ...

  5. 解决eclipse中Tomcat服务器的server location选项不能修改的问题

    在Eclipse菜单栏中选择window — show view — server 可以看到服务的面板,服务面板中可看到已配置的Tomcat以及Tomcat下的项目 双击tomca进入设置界面,如果看 ...

  6. Discrete Logging ZOJ - 1898 (模板题大小步算法)

    就是求Ax三B(mod C)当C为素数时 #include<cstdio> #include<cstring> #include<cmath> #include&l ...

  7. windos 系统文件包含

    解决VS2013找不到windows.h文件方法 右键属性管理器添加 包含路径(依据sdk安装目录,我的是64位系统) C:\Program Files (x86)\Microsoft SDKs\Wi ...

  8. Luogu P4779 【模板】单源最短路径(标准版)(Dijkstra+堆优化模板)

    qwq dij其实和prim挺像的,prim是找权值最小点,dij是找边, 用一个优先队列就可以在加入边的时候直接排序,避免了每次遍历更新min priority_queue <pair< ...

  9. MySQL(十三)事务处理和字符集

    一.事务处理 事务处理(transaction processing):是一种机制,用来维护数据库的完整性,管理必须成批执行的MySQL操作,以保证数据库不包含不完整的操作结果. 这样可以保证一组操作 ...

  10. kubernetes 集群机器重启后磁盘盘符变化

    1.[root@pserver78 ~]# kubectl -n rook-ceph exec -it rook-ceph-tools-c95b8496b-g4stp -- ceph osd tree ...