第二次软件工程作业
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/zjlg/rjjc20 |
| ---- | ---- | ---- |
| 这个作业的目标 | 阅读课本,提出三个问题,可理解的或反对的 |
| 姓名-学号 | 王瑜-2018330301110 |
问题一:单元测试中如何确定最基本的单元?
原文:
单元测试应该测试程序中最基本的单元——如在C++/C#/Java中的类,在此基础上,可以测试一些系统中最基本的功能点。从面向对象的设计原理出发,系统中最基本的功能点也应该由一个类及其方法来实现。单元测试要测试API中的每一个方法及每一个参数。——摘自《构建之法》 第25页
我的思考:
看到单元测试后,我去查询了单元测试的含义。单元测试是代码作者自己的一段程序,可以验证一个模块功能是否可以运行。一个良好的单元测试可以提高软件质量,减少开发成本。
在大多数情况下,开发者会根据所使用语言来确定所调试的最小单元,例如在C++/C#/Java中的类,但是为什么不可以是其他级呢?C++是面向对象的语言,但有时在实践过程中,以类作为测试单位,复杂度高,可操作性较差,所以在部分情况下,也要考虑以函数作为单元测试的测试单位。单元测试主要是用于测试功能的,同时每一次修改错误后,都要再一次进行单元测试,所以工作量很大,因此简单高效才是最重要的。
问题二:如何界定过早的优化与修复bug?
原文:
一个工程师在写程序的时候,经常容易在某一个局部问题上陷进去,花大量时间对其进行优化,无视这个模块对全局的重要性,甚至还不知道这个“全局”是怎样的。这个毛病早就被归为“过早优化是一切罪恶的根源。”
——摘自《构建之法》 第49页
我的思考:
开发者在编写代码的时候,一定会出现bug,所以开发者会在修改后,会对代码测试,测试可以在前期修复bug,代码通过编译只是说明代码本身语法没有错误,但不能确定是否有语义的错误。工程师在修改这些错误时,也许会陷入这种怪圈,在修复bug后执着于这部分功能去优化,那么怎样可以改善这种情况呢?
问题三:结对编程是否只在特定情况下才有效?
原文:
每人在各自独立设计、实现软件的过程中不免要犯这样那样的错误。在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样,程序中的错误就会少很多,程序的初始质量会高很多,这样会省下很多以后修改、测试的时间。
——摘自《构建之法》 第79页
并不是所有项目都适合结对编程,下面是一些不适合使用的例子:
1.处于探索阶段的项目,需要深入地研究。
2.在做后期维护的时候,如果维护的技术含量不高,只需要做有效的复审即可,不必拘泥形式,硬拉一个人来结对唱二人转。
3.如果验证测试需要运行很长时间,两个人等待浪费时间。
4.如果团队的人员要在多个项目中工作,不能保证足够的结对编程时间,成员处于等待状态,影响效率。
5.如何最大限度地发挥“领航员"的作用
——摘自《构建之法》 第82页

我的思考:
结对编程的好处自然不必多说,且在编程史上成功的例子确实很多,但是这个方法个人觉得普适性不强,他的限制条件不少,两方水平不能差太多,否则较弱一方对另一方的意义并不大,并且容易出现“能者多劳”、一方偷懒的情况;且结对编程需要两人的默契,而这需要磨合,如果花费长期时间磨合,也许还不如一个人的效率高。
浙公网安备 33010602011771号