项目 内容
这个作业属于哪个课程 2023年北航敏捷软件工程
这个作业的要求在哪里 个人作业-阅读和提问
我在这个课程的目标是 1. 掌握撰写清晰简洁的博客的能力 2. 体验完整的项目开发的流程 3. 熟练使用git协作开发
这个作业在哪个具体方面帮助我实现目标 掌握撰写清晰简洁的博客的能力

第一问

条目 内容
提问 TDD(测试驱动开发)对于敏捷项目的开发有何突出的地方?
上下文 第6章 6.5节 P120 “问:那比较有名的最佳实践是什么?答:那就太多了,例如TDD就是一个最佳实践。很多程序员老大哥都喜欢它。”
提问原因 与平常经验不一致

查阅资料:

  • 书中提到传统的开发过程为先根据需求编写代码并进行单元测试,但是TDD却它要求在编写某个功能的代码之前先编写好测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。
  • 在知乎、csdn上搜索发现TDD方式在项目开发中比较常见。

如上,TDD模式以测试引领开发过程,这与我接触到的开发方式有较大出入,在我参与的数据库项目和web项目中均采用了需求-设计-编写代码-测试-发布的环节,按部就班,逐步完善用户需求。
在我的理解中,以测试驱动开发应该要求单元测试能够覆盖用户的所有需求,那这样前期对于测试模块的设计的时间成本较大,会不会对整体项目开发的时间造成一定影响呢?而且代码编写的目的也相应从“实现设计文档中的全部功能”转为了“通过所有的测试点”,这对于项目开发有什么帮助么?开发人员会不会为了敏捷而牺牲代码架构的设计和可扩展性呢?我没有体验过TDD模式,不能理解该模式对于项目的开发有什么帮助。

第二问

条目 内容
提问 在敏捷开发中,团队文档应该如何规范、简明地撰写,便于对项目进行跟踪?
上下文 第7章 7.2节 P129 “团队成员之间的交流要简明,不必为了交接而高出许多文档。”
提问原因 自己的假设和作者的不同

查阅资料:

  • 除了项目开发时的各种设计、功能记录文档,在敏捷开发时每日例会的讨论记录必不可少。

我认为在项目开发中,对于小组讨论的记录跟踪是非常必要的,尤其是像敏捷开发这种高强度的团队作业,对于每次例会的总结记录能够帮助团队成员快速了解项目进度及后期安排。那这方面的文档需求应当是简洁、清晰。
但是在我参与过的实际的开发中,我们的会议记录文档仅仅记录了“谁在什么时候完成了某个函数的编写”这类信息。事实上这样的记录几乎没有价值。因为在开始写代码前每个人就已经分配好要完成哪部分的代码,队员对彼此之间的工作不甚了解,如此记录并不能直观的给出具体的进度,相反会显得文档十分臃肿。
在本次敏捷开发中,这实在是不可取的。我对于这类记录文档应该涵盖的内容以及一个良好的格式有疑惑,希望能够在软件工程课中学习到良好的文档规范。

第三问

条目 内容
提问 频繁的重构是否必要?有这个时间为什么不设计一个可扩展性强的设计架构满足可能的需求?
上下文 第6章 6.4节 P117 表6.2 “计划如果没有变化快,那就别做详细的设计,做频繁的增量开发、重构和频繁的发布。”
提问原因 与个人认知不同

查阅资料:

  • 频繁的重构削弱了代码的可读性,同时可能引入新的bug,增大了开发、测试与后期维护的难度,而且需要重新测试、上线;
  • 每一次的重构都需要兼顾到之前迭代开发所新增的功能;
  • 同时重构的版本还很难使用敏捷的方式快速迭代,用户往往熟悉了旧版本的交互,可能出现用户认为新版本不如老版本的情况。

在我看来,重构是一件比较痛苦与无奈的事,只有在我的代码结构过于臃肿、不便于维护时才会考虑。
但是作者这里提到的极限编程说:“频繁增量开发与重构”,这是我非常不能理解的。假如在一开始的设计阶段就多花点时间考虑好各个部分的扩展性,并预留好相应的接口,是否就能尽量避免频繁的重构呢?换个角度考虑,在用户频繁更改需求的背后,是否说明了我们正在开发的项目没有抓住用户的核心需求,产品的设计本身就不合理呢?

第四问

条目 内容
提问 在结队编程中,若两人特长不一样,此时轮换“驾驶员/领航员”角色是否有必要?
上下文 第4章 4.5.4节 P81 “驾驶员和领航员不断轮换角色。”
提问原因 不认同作者的观点

结对编程为了避免“牛仔式编程”和互相督促,强调“驾驶员和领航员不断互换角色”。我的问题是假如结队的两人各有所长,假如队员A十分擅长编码,队员B比较有大局观,两人合作确实事半功倍,那这样子是否还有必要交换角色呢?若是继续A写B看,也能满足项目的需求,同时避免“牛仔式编程”,完成项目岂不是多快好省?不是很理解“结对编程”的目的。

第五问

条目 内容
提问 单元测试是否应该代码作者一人完成?
上下文 第2章 2.1.2节 P25 “单元测试必须由最熟悉代码的人(程序的作者)来写。代码作者最了解代码的目的、特点和实现的局限性。所以,写单元测试没有比作者更适合的人选了。”
提问原因 不认同作者的观点

书上说单元测试最好由作者来写。但是根据我本人写代码的经验,作者对于自己写的代码往往会有一种“这里的逻辑这么简单,我怎么会错?”的盲目自信,这种自信可能导致在编写单元测试时忽视掉一些代码路径,使测试不够全面,最终交付的产品有问题。
而对于其他人而言,他们能够从旁观者的角度看代码,在从零开始理解代码逻辑的基础上更大概率想到一些刁钻的、边界的测试数据,从而对单元测试、压力测试有所帮助。就好像在面向对象OO这门课中的相互hack环节,针对同样的代码需求,先想想自己的实现逻辑,再看看别人的代码,就容易找到别人逻辑的漏洞,从而构造出针对性的代码hack掉Ta。
诚然,作者对自己写的代码更加熟悉,编写单元测试更加迅捷。但是适当引用他人的视角是不是会测试数据更加全面,覆盖性更强呢?

阅读《构建之法》并提问相关推荐

  1. 阅读构建之法10、11、12章

    第10章 典型用户和场景 问题:在10.1.3中怎么才可以准确的定义用户典型呢, 还有如何去验证定义的典型用户是正确的 第11章 问题:在11.2.3节构建大师具体需要做额外的那些事呢 第12章 问题 ...

  2. 《构建之法》阅读与提问

    <构建之法>阅读与提问 项目 内容 这个作业属于哪个课程 2023年北航敏捷软件工程社区-CSDN社区云 这个作业的要求在哪里 个人作业-阅读和提问-CSDN社区 我在这个课程的目标是 学 ...

  3. 2022软工出发-阅读和调研-构建之法与CICD与版本管理

    项目 内容 这个作业属于哪个课程 2022春季软件工程(罗杰 任健) 这个作业的要求在哪里 个人阅读作业 我在这个课程的目标是 学习软工的项目合作管理知识,提升软件开发技术 这个作业在哪个具体方面帮助 ...

  4. 《构建之法》阅读以及工具调研

    <构建之法>阅读以及工具调研 项目 内容 这个作业属于哪个课程 2022年北航敏捷软件工程社区 这个作业的要求在哪里 传送门 我在这个课程的目标是 1. 提升自身在技术硬实力上的竞争力 2 ...

  5. 构建之法阅读笔记05

    这周时间,我阅读了构建之法的第九.十.十一章节. 在第九章中,邹欣老师给我们讲述了在我们的软件团队里除了能写代码.测试代码和画图做设计的成员,还有一类角色,不做上面这些事情但也很重要,我们叫他们项目经 ...

  6. 构建之法阅读笔记03

    又到了一周的结尾,时间过得真快.这一周,阅读了<构建之法>关于团队和流程的部分.正好,这周我们用的就是结对开发的模式.算是理论加上实践吧. 和以往的单独编程不同的是,团队开发增加了与同学的 ...

  7. 第三次作业:阅读《构建之法》1-5章有感

    这个作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2178 阅读<构建之法>1-5章有感 第1章:概论 ...

  8. 构建之法阅读笔记之速读篇

    新学期开始,我们开设了软件工程课程,在老师的指导下,我从网上找到了<构建之法>这本书,随着课堂上老师的讲解以及书籍的快速阅读,我对软件工程有了很多的了解.之前我们的编程只能算是基础,远远没 ...

  9. 《构建之法》阅读笔记02

    今天我阅读了<构建之法>4-6章.有许多的感悟. 以前编程序总喜欢乱命名变量,觉得自己看的懂就行了.但读完构建之法第四章.我知道了程序是给别人看的,然后那只是程序比较简单而已.如果一个程序 ...

  10. 《构建之法》阅读笔记01

    本周阅读了<构建之法>的第一章<概论>以及第四章<两人合作>. <概论>旨在说明软件工程的概念.  作为一个程序员,几乎没有谁不知道"程序=算 ...

最新文章

  1. 从web三层架构解析软件错误
  2. mysql-interview
  3. 快速构建Windows 8风格应用14-ShareContract概述及原理
  4. opencv python 官方文档里的“sa”关键字是什么意思?(see also)
  5. Logger.getLogger和 LogFactory.getLog
  6. SDK目录结构和adb工具及命令介绍
  7. sublime重装后碰到Unable to read Packages
  8. html人物动画效果图,9款用HTML5/CSS3制作的动物、人物动画
  9. 基于51单片机三路温湿度语音LCD1602液晶显示报警
  10. 英语语法篇 - 动词的分类和形式
  11. edk2+vs2019环境搭建
  12. java设计五子棋_JAVA课程设计+五子棋(团队博客)
  13. 51单片机LED模拟交通灯
  14. 单纯性搜索算法 matlab函数,matlab : Nelder mead simplex 单纯形直接搜索算法;
  15. 利用tshark对网络数据包做进一步的分析
  16. 分享12个Kindle书籍资源地址,你想要的这里都有
  17. python 模拟微信浏览器请求_如何用Python模拟登录微信,抓取所有好友个人信息!微信后台很强...
  18. 漏洞介绍及修复建议(漏洞汇总,建议收藏后期会不断更新)
  19. 2021城阳一中高考成绩查询,城阳一中2017届高考录取喜报
  20. vs 2017创建setup项目

热门文章

  1. 逻辑斯蒂回归(Logistic)
  2. 海明校验码原理以及作用机制的介绍
  3. python软件使用_8家使用Python的世界一流软件公司
  4. 五、函数与lambda表达式
  5. Vdbench工具的安装及使用
  6. 【vue】弹性布局和九宫格
  7. 美国联邦法庭力挺FCC“网络中立”规则
  8. UnityShader 的UnityWorldSpaceLightDir()和_WorldSpaceLightPos0获得的光照方向与实际方向相反
  9. 【PSO】基本PSO算法
  10. 拉格朗日乘子法 (Lagrange multipliers)