现代软件工程 - 代码量等于树叶量

本文探讨了软件工程课程中选题评价的标准,指出代码量并非唯一考量因素,强调解决问题的能力和代码质量的重要性。同时,讨论了测试人员评价标准的多样性,以及在项目开发中后期代码量与问题之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我 2008年在清华大学上<现代软件工程> 的时候,  和同学讨论了代码量的问题。 同学说,许多相似课程都有“代码量”的要求,就是说软件工程的项目选题如果没有到一定量的代码,就不能算合格的选题。  老师助教专门花时间分析学生的代码是否够 “量”。 我对教学没什么经验,我认为 -

软件工程课上写的软件只要解决实际问题,就至少是及格的选题。

我后来顺口胡诌了一段:

清华园有两棵果树,春天长芽,抽条,夏天开花,秋天结果。清华软件科学试验班的同学去采摘,发现果树A 的果实比果树B 的果实多很多,并且好吃。于是同学们都在果树A上采摘,并在果树A下面合影留念。 果树B 很委屈,它在秋风中摇晃树叶, 说 – 可是我的树叶量是它的三倍!清华的同学没听懂果树B 在飒飒秋风中的抱怨,背着果实走了。 冬天来了,树叶落了一地,同学们又来打扫果园,一个同学说,我k!这棵树怎么这么多叶子!

 

代码量等于树叶量,当作如是观。 

测试人员的 "量" 如何度量和评价呢?  能否用发现的 bug  的数量来看?  我在 <移山之道> 里写了一个故事,  专家也有很多论述, 例如:

http://www.kaner.com/pdfs/bugcount.pdf  

  

I don’t have a silver bullet for personnel measurement. When I compare the quality of testers, I spend a lot of time looking at the quality of their work. I read bug reports. I
talk with them. I talk with people that they work with. I pay attention to promises they make, and whether they keep them. These don’t lend themselves to quick and easy number crunching, although you can (perhaps with difficulty) do comparative ranking of testers based on this detailed qualitative look.
If you really need a simple number to use to rank your testers, use a random number generator. It is fairer than bug counting, it probably creates less political infighting,
and it might be more accurate. 

 

很多开发人员还以自己写了多少代码为骄傲,枝叶繁茂, 是不错, 但是这些代码是否能有机地结合起来, 解决客户的问题?

项目开发中后期,Dev lead用工具一统计,乖乖,足足xx万行代码,xx千个存储过程,可是每到给客户演示时,却不时出现程序的各个功能相互不配合,不能自圆其说的尴尬场景,Dev lead很郁闷,想想自己可是没少加班啊,代码量也有,可是问题究竟出在什么方面呢?

<回答在这里>

 

通过例子介绍使用方法如下: 1.差异统计 统计某一个版本的代码包相对于一个原始的基线代码包,变动的代码量 以及变动的代码量中各语言非空非注释行(NBNC)的结果 diffcount 缺省执行的就是差异统计,直接跟上两个代码包的目录即可 在diffcount目录下执行: diffcount test\sp1 test\sp2 实际使用中,可能会有文件名和目录名大小写不一致的情况,如果希望忽略 文件名大小写的差异,需要使用 --ignore-case 参数,否则两个一样的文件 一个会算作删除,一个会算作新增 G:\diffcount>diffcount test\sp1 test\sp2 Diffcount [test\sp1] and [test\sp2] result: LANG ADD MOD DEL A&M BLK CMT NBNC RATE ----------------------------------------------------------------------- C 44 7 26 51 8 11 35 1.00 Pascal 0 0 25 0 0 0 0 0.23 Java 7 4 11 11 0 3 9 0.41 Config 31 4 0 35 1 0 34 0.12 XML 126 0 0 126 2 0 124 0.12 ----------------------------------------------------------------------- Convert all NBNC lines to standard C Total: 57.65 (standard C lines) ADD MOD DEL A&M BLK CMT NBNC RATE 的 含义分别为: 新增、修改、删除、新增+修改、空行、注释、非空非注释行、标准C折算率 2.代码统计: 如果需要,可以把diffcount当作普通的代码行统计工具,统计一个代码包 代码统计使用 -c (或者--count-only)参数, 在diffcount目录下执行 diffcount -c test\count 执行结果如下: G:\diffcount>diffcount -c test\count Counting package [test\count] result: LANG TOTAL BLK CMT NBNC RATE ----------------------------------------------------------------------- C 203 46 61 101 1.00 C++ 57 7 25 25 0.42 Pascal 117 24 17 79 0.23 Java 71 7 24 40 0.41 ASM 129 34 12 85 2.50 C# 18 1 1 17 0.20 Basic 447 140 20 295 0.21 Perl 97 4 26 74 0.16 TCL/TK 91 12 26 54 0.50 Config 116 13 0 103 0.12 XML 126 2 0 124 0.12 ----------------------------------------------------------------------- Convert
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值