问题解答


问题 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. MySQL基本简单操作02

    MySQL基本简单操作 先进入Mysql容器. [root@promote ~]# docker exec -it mysql /bin/bash root@30d60b852cf5:/# mysql ...

  2. Deuteronomy

    You should choose the right path when you can choose, and you should choose the right path even if y ...

  3. Beta冲刺(4/5)(麻瓜制造者)

    今日已完成 邓弘立:完成了商品管理(下架)和搜索功能 符天愉:完成了后台管理员界面的登录和其他视图的载入 江郑:昨天来决定跨域执行请求,后台参考一些意见以后,操作起来没有那么容易实现,和队友交流以后本 ...

  4. 深入理解Java的堆内存和线程内存

    我们都知道Java对象都是在堆中创建的(开启逃逸分析的情况除外),比如一个线程中有一段这样的代码: public class A{ public int xxx; } 通过A a = new A(); ...

  5. system函数的应用

    system函数的两个简单应用 1.调用cmd命令.例:(打开计算器) #include <stdlib.h> int main() { system("calc"); ...

  6. 写给spring版本的那些事儿

    1.远程调用rmi协议 Exception in thread "main" java.rmi.UnmarshalException: error unmarshalling re ...

  7. GUI练习3

    将阿里山的积分卡拉斯的发生的咖啡机啊圣考虑到发送到敬爱费卢卡斯加

  8. WPF之托盘图标的设定

    首先需要在项目中引用System.Windows.Forms,System.Drawing; using System; using System.Collections.Generic; using ...

  9. [android]android Task 任务 简介

    http://blog.csdn.net/guomeijuan916/article/details/8121468 关于Android中的组件和应用,之前涉及,大都是静态的概念.而当一个应用运行起来 ...

  10. easyUI tab页的显示与隐藏

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code 隐藏:tab_option = $('#tabid').tabs('getTab'," ...