问题解答


问题 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. [转]extern "C"的作用

    extern "C"的主要作用就是为了能够正确实现C++代码调用其它C语言代码. 加上extern “C”后,会指示编译器将这部分代码按C语言进行编译,而不是C++的.这是因为C+ ...

  2. Shell的基础介绍和案例

    一.shell脚本基础 1.第一个脚本 vim  first.sh 分别使用三种方法可以执行脚本:   ./first.sh (需要有可执行的权限)   sh    first.sh   .  fir ...

  3. zabbix监控VMware6.7

    1.登录VMwareweb页面 管理--高级配置启用:Config.HostAgent.plugins.solo.enableMob 2.测试(记住这个UUID) https://10.155.0.8 ...

  4. linux运行apache出现403错误

    1.文档权限问题,这是linux操作系统下经常会遇到的问题,需要使用chmod的指令把网站所在目录的权限提升到755.2.SElinux,开启它也会导致403错误的产生. 查看SELinux状态:1. ...

  5. CefSharp的一些初始化操作

    if (!CefSharp.Cef.IsInitialized) { var setting = new CefSharp.CefSettings { Locale = "zh-CN&quo ...

  6. File类_常见的方法(获取目录内容)

    获取当前目录下的文件以及文件夹,包含隐藏文件 调用list方法的File对象中封装的必须是目录否则会发生空指针异常,如果封装的是系统级的目录也会发生空指针异常(因为数组根本就没有创建成功) 如果目录存 ...

  7. BZOJ1024:[SCOI2009]生日快乐(DFS)

    Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕. 现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的 ...

  8. 帝国CMS 列表模板页面 list.var 内容截取

    每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code list.var 中没有好的办法,只能用程序代码来实现.将整个HTML以一个变量来拼接.如下: ...

  9. Shell获取指定时间

    时区基本知识 相差一个时区(经度15度)时间相差一小时.简单计算口诀:1.同一个时区的相差时间用减法,2.不同时区的相差时间用加法.3东加西减.例如一,东八区是8点,问东1区几点.根据上面口诀1,算: ...

  10. BMP280 driver对接单片机I2C或者SPI总线接口

    1:登录github网站搜BMP280,找到 BoschSensortec/BMP280_driver 2:gitclone或者download zip都可以,把驱动下载到本地,记得fork哦! 3: ...