自由行

2009-12-12

Windows NT Command Scripts实用程序

Filed under: 知识 — Tags: , — thomas @ 18:00

笔者由于工作需要,会写一些批处理程序,来代替一些需要交互才能完成的操作。

下面给出一个例子来说明:7zenv,供读者参考。

2009-12-09

一个形象的比喻

Filed under: 知识 — Tags: — thomas @ 10:24

“中国的城市像欧洲,中国的农村像非洲。”这是国外人士对中国城乡差别现状的一种形象描述,但也客观上反映了中国城乡差距的现实。

2009-12-07

配置无线网络连接

Filed under: 知识 — thomas @ 23:03

在淘宝上买了个TP LINK无线路由器。

首先使用有线连接笔记本电脑连无线路由器,外部连接小区宽带,比较顺利。
然后配置笔记本无线连接,Intel无线网络的安装程序。然后总是在装完驱动程序后中止,服务及应用没有安装。笔者尝试了多次,没有结果。最后使用Windows自带的无线网络连接向导配置成功,成功了。看来OS附带实用程序,对用户来说是很方便的。

很久没有用无线方式上网了。悦!

[转载]可以替代Microsoft Office Word的工具

Filed under: 应用软件, 转载 — Tags: , — thomas @ 09:18

ugmbbc发布于 2009-12-02 11:05:17
转自:http://cnbeta.com/articles/99066.htm

在我们的日常生活中Office套件中最常用可能就是Word,几乎垄断了这个市场,然而昂贵的售价令许多人望尘莫及。好在目前市场上有许多可以替 代Microsoft Office Word的免费软件和在线工具。用盗版的Microsoft Office Word不如用正版的免费软件,而且可以完美的兼容。

1.WPS

金山公司旗下的产品,可以说最好的产品之一了,号称更懂中文的办公软件。WPS对个人用户是免费的,而且是整套的办公软件。Anliu自然极力推荐,更不用说替代Microsoft Office Word。

2.OpenOffice.org

OpenOffice.org是一套跨平台的办公室软件套件,能在 Windows、Linux、MacOS X (X11)、和 Solaris 等操作系统上执行。它与各个主要的办公室软件套件兼容。OpenOffice.org 是自由软件,任何人都可以免费下载、使用、及推广它。包括Writer (文本文档)、Impress (演示文稿)、Calc (电子表格)、Draw (绘图)、Math (公式)和Base (数据库)六个模块,其中Writer模块就可以替代Word.

3.RedOffice

又是一款能与微软分庭抗礼的国产软件。无论是从性能上,还是从使用功能上,都与微软的Office不相上下,甚至在操作习惯上也十分接近微软的Office。RedOffice 办公软件包含了文字、表格、幻灯、绘图、公式和数据库六个组件。对个人版也是免费的。

4.永中Office

比较老牌的国产软件,经历了多个版本的演进,功能和操作有了很大的提升。最新的永中集成Office2009个人版SP1融入了大量互联网元素,强化互动体验,构建办公社区。当然个人版是免费的,永中也为智能机开发了手机Office,不过需要25元激活!

5.IBM Lotus Symphony

IBM Lotus Symphony 是一组集文字处理、电子表格和演示幻灯片于一身的免费办公套件。兼容Microsoft Office格式,具备丰富功能的生产力工具,直观的用户界面,并能与各种文档兼容。

6.Jarte

一个很小巧的软件,基于Word内核的软件,据其称是挖掘微软word强大的潜力,支持多种格式以及DOCX(word2007)。

7.AbiWord

小巧便携的软件,可以随盘携带。是一款免费的类似Microsoft Office Word软件。支持多种格式Microsoft Word,t, Open Document (OpenOffice.org), Office Open XML (MS Word 2007), RTF, HTML, Palm等等

8.EasyOffice

是一款与Microsoft Word及Excel兼容的软件组合。特色包括EastWord,符合您的文书处理需求; EasySpreadsheet,可创作基本或进阶的电子表格; EasyPresentation,包含动画图档; EasyBookkeeper,一套可做出基本的收入报表、平衡报表、支出报告等等的会计系统; Easy Contact Manager,有常联络清单、大批电子邮件和格式信件等等; EasySpeaker,英文语音模块,可为你阅读文件,并用电子邮件寄给你。官网貌似打不来,点此下载>>

9.NeoOffice (MAC Only)

一款专门为MAC用户设计的,是由其用户捐献所开发的。当然是免费为MAC用户提供

10.Bean (MAC Only)

同样是为MAC用户提供的,界面简洁,小巧容易上手。兼容MS Word, OpenOffice等等,有简体中文版哦!

以上是我搜集好长时间的成果,然而我发现这样的小巧的软件能够代替Word并且兼容的有很多,如果你有发现欢迎告诉我们,和大家一起分享。

第1楼 匿名人士 发表于 2009-12-02 11:08:04
替代个p,用免激活能升级绿色精简便携版不就成了
回复 支持(15) 反对(120)   举报
第2楼 匿名人士 发表于 2009-12-02 11:08:05
支持wps
回复 支持(445) 反对(23)   举报
第3楼 aki 发表于 2009-12-02 11:08:29
记事本
回复 支持(7) 反对(3)   举报
第4楼 匿名人士 发表于 2009-12-02 11:09:07
无奈系统自带dboffice
回复 支持(0) 反对(2)   举报
第5楼 匿名人士 发表于 2009-12-02 11:09:17
想当年WPS+五笔=电脑
回复 支持(123) 反对(3)   举报
第6楼 匿名人士 发表于 2009-12-02 11:09:35
没几个能坚持用的
回复 支持(21) 反对(4)   举报
第7楼 匿名人士 发表于 2009-12-02 11:10:33
nc文章
回复 支持(0) 反对(2)   举报
第8楼 匿名人士 发表于 2009-12-02 11:11:20
引用匿名人士发表于2009-12-02 11:08:04的评论:
替代个p,用免激活能升级绿色精简便携版不就成了
你Y天生就是个盗版的命,估计你都是你mother盗版来的
回复 支持(101) 反对(9)   举报
第9楼 匿名人士 发表于 2009-12-02 11:16:52
引用匿名人士发表于2009-12-02 11:08:04的评论:
替代个p,用免激活能升级绿色精简便携版不就成了
用D版还是低调点,不要说的那么理所当然
回复 支持(195) 反对(1)   举报
第10楼 匿名人士 发表于 2009-12-02 11:16:54
现在用wps了
回复 支持(6) 反对(1)   举报
第11楼 匿名人士 发表于 2009-12-02 11:20:18
引用匿名人士发表于2009-12-02 11:11:20的评论:
引用匿名人士发表于2009-12-02 11:08:04的评论:
替代个p,用免激活能升级绿色精简便携版不就成了

你Y天生就是个盗版的命,估计你都是你mother盗版来的

这句话太狠了,你T微软干活啊?
回复 支持(10) 反对(18)   举报
第12楼 匿名人士 发表于 2009-12-02 11:25:38
OpenOffice的中文支持一直不好,特别是在windows7下
回复 支持(20) 反对(1)   举报
第13楼 匿名人士 发表于 2009-12-02 11:26:05
现在已经不贵了啊,很便宜了。 这是哪个世界的老闻?
回复 支持(0) 反对(4)   举报
第14楼 匿名人士 发表于 2009-12-02 11:26:08
wps界面难看的要死(和ms office2007比)
回复 支持(9) 反对(22)   举报
第15楼 匿名人士 发表于 2009-12-02 11:26:24
用office的唯一原因是他有OneNotes,写了一堆笔记。。如果有兼容OneNotes的免费出现,我会用他。
回复 支持(30) 反对(4)   举报
第16楼 匿名人士 发表于 2009-12-02 11:29:11
在我们的日常生活中Office套件中最常用可能就是Word,几乎垄断了这个市场,然而昂贵的售价令许多人望尘莫及。好在目前市场上有许多可以替代Microsoft Office Word的盗版OFFICE。
回复 支持(2) 反对(3)   举报
第17楼 匿名人士 发表于 2009-12-02 11:32:25
引用匿名人士发表于2009-12-02 11:26:24的评论:
用office的唯一原因是他有OneNotes,写了一堆笔记。。如果有兼容OneNotes的免费出现,我会用他。
Evernote 多平台,互联网免费同步笔记软件。 支持OneNote导入。
回复 支持(22) 反对(0)   举报
第18楼 匿名人士 发表于 2009-12-02 11:33:03
引用匿名人士发表于2009-12-02 11:08:05的评论:
支持wps
我举报,经常崩溃!
回复 支持(1) 反对(23)   举报
第19楼 匿名人士 发表于 2009-12-02 11:34:49
个人支持永中office。
回复 支持(6) 反对(2)   举报
第20楼 匿名人士 发表于 2009-12-02 11:37:19
用office唯一值得使用的就是excel了!
回复 支持(4) 反对(3)   举报
第21楼 匿名人士 发表于 2009-12-02 11:38:59
我是来顶WPS的……
回复 支持(4) 反对(1)   举报
第22楼 匿名人士 发表于 2009-12-02 11:51:13
腾讯,你敢做QQoffice吗?
回复 支持(279) 反对(1)   举报
第23楼 匿名人士 发表于 2009-12-02 11:51:36
请问有没有兼容office2010数学公式的免费软件,想copy同学的作业,我又不想装2010,怎么办?
回复 支持(0) 反对(0)   举报
第24楼 匿名人士 发表于 2009-12-02 11:58:11
引用匿名人士发表于2009-12-02 11:51:36的评论:
请问有没有兼容office2010数学公式的免费软件,想copy同学的作业,我又不想装2010,怎么办?
回复23楼:让你同学用他的office2010将作业另存一份,格式为97~2003兼容
回复 支持(6) 反对(0)   举报
第25楼 匿名人士 发表于 2009-12-02 11:58:42
目前WPS+win7
回复 支持(5) 反对(0)   举报
第26楼 匿名人士 发表于 2009-12-02 11:58:42
引用匿名人士发表于2009-12-02 11:32:25的评论:
引用匿名人士发表于2009-12-02 11:26:24的评论:
用office的唯一原因是他有OneNotes,写了一堆笔记。。如果有兼容OneNotes的免费出现,我会用他。

Evernote 多平台,互联网免费同步笔记软件。 支持OneNote导入。

多平台?只支持Windows和Iphone,Linux下用不成。。。
回复 支持(0) 反对(1)   举报
第27楼 匿名人士 发表于 2009-12-02 12:02:40
引用匿名人士发表于2009-12-02 11:58:42的评论:
目前WPS+win7
俺也一样。主要是wps小。
回复 支持(5) 反对(0)   举报
第28楼 匿名人士 发表于 2009-12-02 12:03:34
引用匿名人士发表于2009-12-02 11:08:04的评论:
替代个p,用免激活能升级绿色精简便携版不就成了
你老婆偷人的时候,你也可以这么给她建议
回复 支持(8) 反对(0)   举报
第29楼 匿名人士 发表于 2009-12-02 12:05:09
引用匿名人士发表于2009-12-02 11:20:18的评论:
引用匿名人士发表于2009-12-02 11:11:20的评论:
引用匿名人士发表于2009-12-02 11:08:04的评论:
替代个p,用免激活能升级绿色精简便携版不就成了

你Y天生就是个盗版的命,估计你都是你mother盗版来的

这句话太狠了,你T微软干活啊?

他不替MS干活,他只不过有基本的是非观念,不会偷了别人的东西,还觉得自己好像在替天行道
回复 支持(49) 反对(1)   举报
第30楼 匿名人士 发表于 2009-12-02 12:09:40
wps用着呢 争取把电脑里的除系统外所有软件都换成免费软件 不用盗版(游戏除外 55555)
回复 支持(6) 反对(0)   举报
第31楼 tra 发表于 2009-12-02 12:14:18
Jarte ,AbiWord 也就能替代替代wordpad吧
回复 支持(0) 反对(0)   举报
第32楼 Mark 发表于 2009-12-02 12:20:16
现在Office2007才5块钱,你们还用盗版呀?我昨天去电脑城刚问的价。
回复 支持(3) 反对(3)   举报
第33楼 gigicn 发表于 2009-12-02 12:22:51
引用匿名人士发表于2009-12-02 11:11:20的评论:
引用匿名人士发表于2009-12-02 11:08:04的评论:
替代个p,用免激活能升级绿色精简便携版不就成了

你Y天生就是个盗版的命,估计你都是你mother盗版来的

就你身上没是shi-T.整天摆渡上下mp3,也没见你脸红过.一副道貌岸然的样子,让人作呕.
回复 支持(0) 反对(9)   举报
第34楼 匿名人士 发表于 2009-12-02 12:24:10
我想知道onenote的替代工具是什么
回复 支持(0) 反对(0)   举报
第35楼 匿名人士 发表于 2009-12-02 12:30:19
好东西就是好东西,永远不可能替代。
回复 支持(0) 反对(0)   举报
第36楼 疯哥 发表于 2009-12-02 12:32:49
“然而昂贵的售价令许多人望尘莫及”——一百多的学生版也望尘莫及?
回复 支持(2) 反对(0)   举报
第37楼 匿名人士 发表于 2009-12-02 12:41:49
引用gigic发表于2009-12-02 12:22:51的评论:
引用匿名人士发表于2009-12-02 11:11:20的评论:
引用匿名人士发表于2009-12-02 11:08:04的评论:
替代个p,用免激活能升级绿色精简便携版不就成了

你Y天生就是个盗版的命,估计你都是你mother盗版来的

就你身上没是shi-T.整天摆渡上下mp3,也没见你脸红过.一副道貌岸然的样子,让人作呕.

果然是只会用百度mp3的人才
回复 支持(11) 反对(0)   举报
第38楼 匿名人士 发表于 2009-12-02 12:42:56
2002年的时候开始用永中了~ linux windows都用 不错
回复 支持(1) 反对(0)   举报
第39楼 匿名人士 发表于 2009-12-02 12:44:45
引用匿名人士发表于2009-12-02 11:32:25的评论:
引用匿名人士发表于2009-12-02 11:26:24的评论:
用office的唯一原因是他有OneNotes,写了一堆笔记。。如果有兼容OneNotes的免费出现,我会用他。

Evernote 多平台,互联网免费同步笔记软件。 支持OneNote导入。

我骚性,俩都在用,哈哈
回复 支持(0) 反对(0)   举报
第40楼 匿名人士 发表于 2009-12-02 12:45:04
引用gigic发表于2009-12-02 12:22:51的评论:
引用匿名人士发表于2009-12-02 11:11:20的评论:
引用匿名人士发表于2009-12-02 11:08:04的评论:
替代个p,用免激活能升级绿色精简便携版不就成了

你Y天生就是个盗版的命,估计你都是你mother盗版来的

就你身上没是shi-T.整天摆渡上下mp3,也没见你脸红过.一副道貌岸然的样子,让人作呕.

他还有部分道德感,你已经什么都没有了
回复 支持(10) 反对(0)   举报
第41楼 匿名人士 发表于 2009-12-02 12:49:30
6.Jarte基于wordpad,而不是word,两者差远了。
回复 支持(0) 反对(0)   举报
第42楼 匿名人士 发表于 2009-12-02 13:05:39
引用Mark发表于2009-12-02 12:20:16的评论:
现在Office2007才5块钱,你们还用盗版呀?我昨天去电脑城刚问的价。
除非免費,不然還用D版
回复 支持(0) 反对(1)   举报
第43楼 匿名人士 发表于 2009-12-02 13:11:43
引用匿名人士发表于2009-12-02 11:26:24的评论:
用office的唯一原因是他有OneNotes,写了一堆笔记。。如果有兼容OneNotes的免费出现,我会用他。
是啊~OneNote实在是太好用了~Evernote灵活性明显不够OneNote好
回复 支持(1) 反对(0)   举报
第44楼 匿名人士 发表于 2009-12-02 13:26:10
ABI word试过~ 文明用语的,东西输进去再打开里面就成空的~
回复 支持(0) 反对(0)   举报
第45楼 匿名人士 发表于 2009-12-02 13:53:47
要这么多干什么,一个WPS就够了
回复 支持(2) 反对(0)   举报
第46楼 sxnlm 发表于 2009-12-02 14:03:28
用office的唯一原因是他有Access
回复 支持(1) 反对(0)   举报
第47楼 匿名人士 发表于 2009-12-02 14:08:19
引用匿名人士发表于2009-12-02 12:02:40的评论:
引用匿名人士发表于2009-12-02 11:58:42的评论:
目前WPS+win7

俺也一样。主要是wps小。

呵呵 一样
回复 支持(3) 反对(0)   举报
第48楼 色狼 发表于 2009-12-02 14:31:52
引用匿名人士发表于2009-12-02 11:25:38的评论:
OpenOffice的中文支持一直不好,特别是在windows7下
最主要的是doc格式是主流当就像世界都在用QQ的时候你用MSN,雅虎通就自己和自己聊天吧
回复 支持(0) 反对(1)   举报
第49楼 匿名人士 发表于 2009-12-02 14:37:11
引用匿名人士发表于2009-12-02 11:58:11的评论:
引用匿名人士发表于2009-12-02 11:51:36的评论:
请问有没有兼容office2010数学公式的免费软件,想copy同学的作业,我又不想装2010,怎么办?

回复23楼:让你同学用他的office2010将作业另存一份,格式为97~2003兼容

微软网站有兼容包下,2003下装个兼容包就能打开07的文档了
回复 支持(1) 反对(0)   举报
第50楼 匿名人士 发表于 2009-12-02 15:01:47
google doc不算么?
回复 支持(2) 反对(0)   举报
第51楼 匿名人士 发表于 2009-12-02 15:03:34
REDOFFICE功能不错, 就是速度曼
回复 支持(0) 反对(0)   举报
第52楼 匿名人士 发表于 2009-12-02 15:20:01
引用匿名人士发表于2009-12-02 11:58:42的评论:
目前WPS+win7
我也是,当然写论文的时候我还是会用office,复杂格式排版有时还是存在兼容问题
回复 支持(0) 反对(1)   举报
第53楼 匿名人士 发表于 2009-12-02 15:50:45
然而昂贵的售价令许多人望尘莫及,这里应该是“望而却步”,作者没文化
回复 支持(2) 反对(0)   举报
第54楼 匿名人士 发表于 2009-12-02 16:38:02
居然没说google docs
回复 支持(0) 反对(0)   举报
第55楼 匿名人士 发表于 2009-12-02 17:13:52
引用匿名人士发表于2009-12-02 11:33:03的评论:
引用匿名人士发表于2009-12-02 11:08:05的评论:
支持wps

我举报,经常崩溃!

一直在用没有崩溃过估计是你的系统有问题
回复 支持(1) 反对(0)   举报
第56楼 匿名人士 发表于 2009-12-02 18:13:51
当然是OOo
回复 支持(1) 反对(0)   举报
第57楼 匿名人士 发表于 2009-12-02 18:58:11
支持openoffice
回复 支持(1) 反对(0)   举报
第58楼 匿名人士 发表于 2009-12-02 19:14:17
可替代没的说,但是没人敢说完美兼容吧??
回复 支持(0) 反对(0)   举报
第59楼 匿名人士 发表于 2009-12-02 19:17:22
用OpenOffice代替微软的Office 2007已久,虽然界面比不上微软的,但功能上还不错。
回复 支持(0) 反对(0)   举报
第60楼 匿名人士 发表于 2009-12-02 19:30:11
替代可以,兼容难。尤其是MS Office2007以后的格式,我用wps和open office都不能完全兼容,而显示效果也不太好。
回复 支持(1) 反对(0)   举报
第61楼 匿名人士 发表于 2009-12-02 19:51:09
在用WPS,感觉从word换成wps没后悔
回复 支持(1) 反对(0)   举报
第62楼 匿名人士 发表于 2009-12-02 20:39:33
Access 有替代的吗?目前wps+盗版的ACCESS
回复 支持(1) 反对(0)   举报
第63楼 匿名人士 发表于 2009-12-02 20:54:39
都不稳定,wps还好点
回复 支持(0) 反对(0)   举报
第64楼 匿名人士 发表于 2009-12-02 22:42:19
引用匿名人士发表于2009-12-02 11:51:13的评论:
腾讯,你敢做QQoffice吗?
坐等腾讯Qffice
回复 支持(0) 反对(0)   举报
第65楼 匿名人士 发表于 2009-12-03 00:25:26
继续白office2010
回复 支持(0) 反对(0)   举报
第66楼 匿名人士 发表于 2009-12-03 05:38:44
除了wps, 每一个称得上好用的
回复 支持(0) 反对(0)   举报
第67楼 匿名人士 发表于 2009-12-03 07:47:03
一样支持WPS
回复 支持(0) 反对(0)   举报
第68楼 匿名人士 发表于 2009-12-03 08:53:54
如果我的文档是加密的docx格式,我会用wps!为了防止强力破解密码。
回复 支持(0) 反对(0)   举报
第69楼 匿名人士 发表于 2009-12-04 09:40:37
俺几乎不用 微软word了 使用 WPS
回复 支持(0) 反对(0)   举报
第70楼 dedoli 发表于 2009-12-05 10:19:20
用wps的飘过
回复 支持(0) 反对(0)   举报
第71楼 dedoli 发表于 2009-12-05 10:20:39
引用匿名人士发表于2009-12-02 11:33:03的评论:
引用匿名人士发表于2009-12-02 11:08:05的评论:
支持wps

我举报,经常崩溃!

确实经常崩溃
回复 支持(0) 反对(0)   举报
第72楼 dedoli 发表于 2009-12-05 10:21:39
引用匿名人士发表于2009-12-02 11:37:19的评论:
用office唯一值得使用的就是excel了!
还有access
回复 支持(0) 反对(0)   举报
第73楼 dedoli 发表于 2009-12-05 10:23:46
引用sxnlm发表于2009-12-02 14:03:28的评论:
用office的唯一原因是他有Access
对啊,我也是wps+access。。。
回复 支持(0) 反对(0)   举报
第74楼 dedoli 发表于 2009-12-05 10:25:01
引用匿名人士发表于2009-12-02 20:39:33的评论:
Access 有替代的吗?目前wps+盗版的ACCESS
我也是啊
回复 支持(0) 反对(0)   举报
第75楼 匿名人士 发表于 2009-12-06 22:17:14
永中Office2009,确实不错,装上它后就卸了盗版的ms office了
回复 支持(0) 反对(0)   举报

2009-12-06

软件度量-面向对象的软件

Filed under: SoftWare Development, Software Engineering — Tags: , , — thomas @ 13:00

新范围,老问题

在之前的软件度量的讨论中,我们了解了SLOC的有一些优点,也有很多问题。那么在采用面向对象的程序设计语言的项目中,我们应该如何来衡量软件的大小呢?SLOC是能作为面向对象软件的度量呢?下面就笔者的项目经历来讨论这个问题。
说 到度量,笔者想起来一个有趣的例子,就是建筑中来如何衡量建筑项目的大小。在钢筋混凝土结构出现之前,是砖结构的,瓦匠们经常会说,我盖的房子用了多少 砖。砖作为建筑物的基本单元,砖的数目反映建筑的大小是比较直观的,所以这个尺度也很普遍。要想在理论上探讨软件度量,我们有必要对软件的结构进行分析, 找出结构上的规律,包括结构与开发代价之间的关系。这样对于我们评估开发代价,掌握项目的发展变化,提供重要的参考。

软件结构分析

作为面向对象的软件,什么是基本单元呢?当然是类。类本身不能执行,在程序中运行的只能是类的实例,但是类确实源代码的组织形式和结构单元。那么我们是否能用类、类的实例的数量来衡量软件的大小呢?
当然是可以的。

类、成员变量、成员函数

首先作为基本的结构单元,类包含了成员变量和成员函数,成员变量的类型和数目决定了实例的在内存中大小;成员函数的数目能反映运算的规模。作为程序而言,无非就是在内存中数据和能够完成的特定运算的指令的集合。一般而言,程序功能越丰富,需要的类的数量,类的大小都增加。

全局变量、全局函数

尽管在在面向对象设计中,代码主要是类和对象,但是大多数面向对象的程序设计语言也支持全局变量、全局函数。从语用的角度,对于程序级别的数据存储使用全局变量是很方便的。
工 具函数,比如用来dump或者log的函数,使用工具函数有几种方式来处理。一是封装成工具类,工具函数作为静态函数;二是直接声明为全局函数,供其它模 块直接调用。从编译器处理的实质来看,是一样的。不过在工具类中可以实现丰富的访问控制。笔者个人不反对使用全局函数,因为这样比较简单。
在笔者经历过的项目和笔者自己开发的程序中,也使用了一些全局变量、全局函数。在度量软件大小时,我们也需要考虑全局变量和函数的数目。

实例分析

目 前的大多数IDE都能很好的支持对类的解析,这样我们能容易比较两个不同项目的类的数目。不过对于总的成员变量的数目和成员函数的数目,就不是那么直观 了。笔者个人发现Source Insight在Project Report方面,提供的统计比较全面。下面以一个将比较两个软件,他们都是某一Symbian手机上Camera软件。前者是笔者参与的项目,后者是笔 者为精益软件开发实践项目。其中选择这个项目也考虑到:软件功能相同,设计和实现不同,这样容易发现规律。
注意:成员变量、成员函数在不同的面向 对象设计的方法学,叫法不同。下面的数据由Source Insight v3.50产生,其中类、成员变量和成员函数分别对应表中的Classes、Structure Members和Methods。而Varibles指的是全局变量,Functions指的是全局函数。

项目名称 Camera XqCap4
NameSpaces 2 0
Classes
230
102
Structures 14 2
Type Definitions 8 2
Enumerations 92 16
Constants 348 89
Enum Constants 619 92
Variables 277
44
Functions
45
72
Methods
2383
1024
Macros 42 28
Function Prototypes 159 82
Method Prototypes 2508 1041
Structure Members
1248
386
Custom Tags 4 4

由于时间的关系,XqCap4并没有全部完成,有一些功能和特征没有实现,粗略评估是差30%左右,所以对于重要数据的比值,将按1.3纠正。
类数:230 / (102 * 1.3)= 1.74
成员变量数:1248 / (386 * 1.3) = 2.49
成员函数数:2383 / (1024 * 1.3) = 1.79
全局变量:277 / (44 * 1.3)= 4.84
全局函数:45 / (72 * 1.3)= 0.48
按相同权重,计算平均值 (1.74 + 2.49 + 1.79 + 4.84 + 0.48)/ 5 = 2.196
那么我们对于两个项目之间的大小就有了较直观的认识。前者要比后者大1倍左右。因为笔者对两个项目都比较了解,后面我们将对两者的主要特点对比分析,解释软件大小相关的因素。

模块

在这里,我们仍然对SLOC进行了统计。(注:以下数据来自于Practiline Source Code Line Counter)

项目名称 Camera XqCap4
File Count 337 167
Max Line Count 1984 1547
Total Lines 87631 23428
Nominal Lines 87631 23428
Source Code Lines 51719
17988
Source Code Lines (%) 59.02% 76.78%
Comment Lines
19559
1363
Comment Lines (%) 22.32% 5.82%
Blank Lines 14444
3810
Blank Lines (%) 16.48% 16.26%
Mixed Lines 1909 267
Mixed Lines (%) 2.18% 1.14%

在Source Code Lines上比值为:51719 / (17988 * 1.3) = 2.21,前者也差不多是后者的两倍。对于注释代码比率,前者达到了22.32%,前者的注释应该说是很丰富的,相比之下后者就少的可怜了。不过在后者中 使用了自文档化的编码方式,代码可读性非常好,而前者注释虽多,在类继承体系、类之间的关联方面,很难看懂。当然这也是笔者个人判断,需要研究者自己来评 判。对可读性的讨论,超出本片的范围。在空行率方面两者相差无几,可以推断:代码中小函数或者复合语句比较多,通常为了在视觉上容易分辨代码,往往在符合 语句,函数之间加空格加以间隔。

比较方法

在软件开发实践中,我们会发现对于不同的功能,代码的数目差异是巨大的。因为不同的功 能,涉及到算法、交互等方面的复杂可能相差好几个数量级。比如:编码与解码,通常编码比解码多很多倍。所以,功能点如果相同更容易发现软件大小的影响因 素。比如,不同的架构设计,使用不同的库和框架等等。
在这两个项目中,架构设计的都一些特点。

  • 都采取与配置/设置为中心的方式。前者用叫setting,后者叫config,同为CCoeStatic子类。但是后者只是中转类,即本身并不读取设置和更改设置,只做存储设置,设置的读取和更改放在专门的类;
  • 都采取了setting/configuration observer模式,但是前者只是用了几个observer。而具体的设置项的改变则有某一个控制器类派发,这样导致派发途径上经过的类都有相关的处理,是非繁琐。
  • 对于拍摄/录制,前者类继承体系复杂,后者拍摄和视频由独立的类负责,拍照和视频本身UI/实体类完全分离,功能相对封闭。在针对不同类型的拍摄,比如:Normal、Touch等拍摄模式时,使用了设计模式中的状态模式来解耦,效果很好。
上述这些不同,决定了类的数量,以及实现时代码的数量。这样说明:一个好的设计可以减少软件的尺寸,降低软件的复杂行,从而降低了软件的维护成本。

重构

对 代码的重构,主要是针对代码的结构的变化,对可维护性、可扩张性方面有直观的改善。不过笔者的经验表明,重构通常也能很好的减少软件的大小。比如通常我们 会为了提高函数的复用性而使用Extract method,因为复用度提高意味着冗余代码的减少,软件尺寸自然也就减少了。另外,把相似的派生类的方法提升到基类中,也是基于复用的原因而减少尺寸。 当然,并非所有的重构都会显著改善软件的大小。比如用状态模式取代类继承体系,它可能是把与状态有关的函数的实现代码,转移到状态类中,甚至方法数目会略 有增加。笔者建议读者不要计较软件大小方面的得失,坚定不移的重构已有代码,改善软件设计。

增量式开发

开 发者通常改动代码是因为增加新的功能,笔者个人的体会,增加功能前后软件大小的变化值得关注。如果功能很简单,但是软件尺寸变化很大,开发者有必要检查自 己的设计,肯定是什么地方很糟糕。当然更多的是,有一些地方是改变,同时也有一些成员变量、成员函数是新增加的。在规模比较大的软件中,常常会需要增加同 类型功能。比如增加一个设置,增加了一个类,50行代码;而再增加一个设置,增加了好几个类,数百行代码。这就提示设计上有差错了。

总而言之

影响的因素软件大小的变化是多方面的,软件大小一般不是约束条件,开发者不应该对此顾虑。开发者应该根据功能需要来编写代码,按照通过重构保持代码的灵活性,从而更容易修改、扩展。

2009-12-02

软件度量-SLOC

Filed under: SoftWare Development, Software Engineering — Tags: — thomas @ 21:39

软件度量-SLOC(源代码行数)

摘自:http://en.wikipedia.org/wiki/Source_lines_of_code
中英同步翻译,不足之处请各位指正。

Utility 功效
Advantages 优点
1. Scope for Automation of Counting: Since Line of Code is a physical entity; manual counting effort can be easily eliminated by automating the counting process. Small utilities may be developed for counting the LOC in a program. However, a code counting utility developed for a specific language cannot be used for other languages due to the syntactical and structural differences among languages. 1.自动统计行数的范围:因为代码行是一个物理实体;手工计算的代价能由自动统计处理来消除。可以在程序中开发一个一些小工具来统计LOC。然而,针对特定语言开发的代码统计工具并不能用于其它语言,因为语法和结构不同。
2. An Intuitive Metric: Line of Code serves as an intuitive metric for measuring the size of software due to the fact that it can be seen and the effect of it can be visualized. Function points are said to be more of an objective metric which cannot be imagined as being a physical entity, it exists only in the logical space. This way, LOC comes in handy to express the size of software among programmers with low levels of experience. 2.一个直观的度量:代码的函数作为一个直观的度量来衡量软件的大小,那是缘于这样的事实:LOC可以很明确并且它的效果能被可视化。因此,在经验水平低的程序员之间,LOC很顺手地表示软件的尺寸。
Disadvantages 缺点
1. Lack of Accountability: Lines of code measure suffers from some fundamental problems. Some think it isn’t useful to measure the productivity of a project using only results from the coding phase, which usually accounts for only 30% to 35% of the overall effort. 1.缺乏可说明性:LOC测量遭遇到一些基本的问题。一些观点认为它在测量项目的生产率上没有用处,就算是在编码阶段,该阶段只占总成本的30%~35%。
2. Lack of Cohesion with Functionality: Though experiments have repeatedly confirmed that effort is highly correlated with LOC, functionality is less well correlated with LOC. That is, skilled developers may be able to develop the same functionality with far less code, so one program with less LOC may exhibit more functionality than another similar program. In particular, LOC is a poor productivity measure of individuals, because a developer who develops only a few lines may still be more productive than a developer creating more lines of code. 2.缺乏对功能的内聚度:实验已经反复证明了代价与LOC高度相关,功能却不那么相关。那就是说,熟练的开发者可以用少很多的代码来实现统一的功能,所以 一个LOC更少的程序可以展示更多功能比其它的类似的程序。在特定情况下,对于个体来说,LOC是低劣的生产率测量,因为一个开发者只用仅仅少数行就可以 比写更多函数的开发者更有生产效率。
3. Adverse Impact on Estimation: Because of the fact presented under point (a), estimates based on lines of code can adversely go wrong, in all possibility. 3.对评估的负面影响:因为上述的揭示出的事实,基于LOC的评估可能反而走向错误,在所有的可能情形。
4. Developer¡¯s Experience: Implementation of a specific logic differs based on the level of experience of the developer. Hence, number of lines of code differs from person to person. An experienced developer may implement certain functionality in fewer lines of code than another developer of relatively less experience does, though they use the same language. 4.开发者的经验:特定逻辑的实现会因为开发者经验水平的不同而不同。因此,LOC的数目也因人而异。一个有经验的开发者可以用更少的LOC来实现一定的功能,而经验少的开发者用的LOC更多,尽管他们使用同样的语言。
5. Difference in Languages: Consider two applications that provide the same functionality (screens, reports, databases). One of the applications is written in C++ and the other application written in a language like COBOL. The number of function points would be exactly the same, but aspects of the application would be different. The lines of code needed to develop the application would certainly not be the same. As a consequence, the amount of effort required to develop the application would be different (hours per function point). Unlike Lines of Code, the number of Function Points will remain constant. 语言之间的差异:考虑两个应用程序提供同样的功能(屏幕,报告,数据库)。一个应用程序用C++来写而另一个用像COBOL一样的语言来写。它们的功能点 完全相同,但是应用程序的某些方面则不同。开发应用程序所需要LOC一定是不同的。作为结论,开发应用程序需要的代价的大小可以是不同(每个功能点的小时 数)。与LOC不同,功能点的数量是不变的。
6. Advent of GUI Tools: With the advent of GUI-based programming languages and tools such as Visual Basic, programmers can write relatively little code and achieve high levels of functionality. For example, instead of writing a program to create a window and draw a button, a user with a GUI tool can use drag-and-drop and other mouse operations to place components on a workspace. Code that is automatically generated by a GUI tool is not usually taken into consideration when using LOC methods of measurement. This results in variation between languages; the same task that can be done in a single line of code (or no code at all) in one language may require several lines of code in another. 6.GUI工具的出现:有了基于GUI的程序设计语言和像Visual Base这样的工具,程序员能写相对少量的代码就能达到高水平的功能。例如,不用写程序来创建窗口和绘制,GUI工具能用drag-and-drop的方 式和其它鼠标操作来把组件放到工作区中。由GUI工具自动生成的代码通常不在LOC测量方法的考虑之列。这一点在不同语言之间也不同,同样的任务,在一种 语言可以由一行代码(或者跟不用)来做,而在另一种语言中可能要几行。
7. Problems with Multiple Languages: In today¡¯s software scenario, software is often developed in more than one language. Very often, a number of languages are employed depending on the complexity and requirements. Tracking and reporting of productivity and defect rates poses a serious problem in this case since defects cannot be attributed to a particular language subsequent to integration of the system. Function Point stands out to be the best measure of size in this case. 7.多语言问题:在先进的软件情景中,软件通常由好几种语言开发。很多,使用哪些语言取决于复杂性和需求。在这种情况下,生产率和缺陷率的跟踪和报告提出 一个严肃的问题,因为缺陷不能归咎于系统集成后的特定的语言序列。在这种情况下,功能点显然是最好的软件尺寸的度量。
8. Lack of Counting Standards: There is no standard definition of what a line of code is. Do comments count? Are data declarations included? What happens if a statement extends over several lines? ¨C These are the questions that often arise. Though organizations like SEI and IEEE have published some guidelines in an attempt to standardize counting, it is difficult to put these into practice especially in the face of newer and newer languages being introduced every year. 8.缺乏统计的标准:在什么是一行代码的问题上并没有一个标准定义。把注释也统计吗?数据声明呢?如果一个语句太长了有好几行怎么办?这些问题经常出现。 尽管一些组织,如:SEI和IEEE颁布了几个指导书来试着统一LOC计数标准,在面对每年都有新之又新的语言出现的情况下,很难实际操作。
9. Psychology: A programmer whose productivity is being measured in lines of code will have an incentive to write unnecessarily verbose code. The more management is focusing on lines of code, the more incentive the programmer has to expand his code with unneeded complexity. This is undesirable since increased complexity can lead to increased cost of maintenance and increased effort required for bug fixing. 9.心理:如果程序员的生产率由LOC来衡量,将刺激他们写不需要的冗余代码。越是专注于LOC来管理,越是会刺激程序员用不必要的复杂性扩充代码。这是不期望的,因为增长的复杂性将导致维护成本增加并且bug修复的代价也会增加。
In the PBS documentary Triumph of the Nerds, Microsoft executive Steve Ballmer criticized the use of counting lines of code: 在PBS纪录片中“Triumph of the Nerds”,微软首席执行官Steve Ballmer批评了对LOC计数的使用:
In IBM there’s a religion in software that says you have to count K-LOCs, and a K-LOC is a thousand line of code. How big a project is it? Oh, it’s sort of a 10K-LOC project. This is a 20K-LOCer. And this is 50K-LOCs. And IBM wanted to sort of make it the religion about how we got paid. How much money we made off OS/2, how much they did. How many K-LOCs did you do? And we kept trying to convince them – hey, if we have – a developer’s got a good idea and he can get something done in 4K-LOCs instead of 20K-LOCs, should we make less money? Because he’s made something smaller and faster, less K-LOC. K-LOCs, K-LOCs, that’s the methodology. Ugh! Anyway, that always makes my back just crinkle up at the thought of the whole thing. 在IBM,有一个软件方面的教条,说你们必须统计K-LOC。一个项目多大?噢,它是一种10K-LOC的项目,这是一个20K-LOC的,而这是一个 50K-LOC的。并且IBM想按照这个标准来安排对我们的支付我们。多少钱我们在OS/2做的,多少钱是他们做的。多少K-LOC是你们做的?还有,我 们坚持试图说服他们-嘿,如果我们有一个开发人员想出了一个好主意并且它能用4K-LOC而不是20K-LOC来完成什么事,我们是不是应该得到更少的钱 呢?因为它使某件事更小更快,更少的K-LOC,K-LOC,K-LOC,那就是他们的方法学。哈!无论如何,总是在考虑整件事时,搞得我背都皱起来。
Related terms 相关术语
* KLOC: 1,000 lines of code
* KDLOC: 1,000 delivered lines of code
* KSLOC: 1,000 source lines of code
* MLOC: 1,000,000 lines of code
* GLOC: 1,000,000,000 lines of code
* KLOC: 1,000 代码行
* KDLOC: 1,000 已提交的代码行
* KSLOC: 1,000 源代码行
* MLOC: 1,000,000 代码行
* GLOC: 1,000,000,000 代码行

有不少软件开发组织,比如笔者所在的组织,在如何度量软件的大小时,就曾经用过SLOC,甚至打算通过LOC和KLOC的bug数来进行奖惩,后来被“自然”抵制了。再后来,随着功能的稳定,代码行数的稳定,这个问题就淡出了人们的视线。

如何度量软件大小,如何评估代价和开发者的生产力,靠SLOC是不够的。作为软件项目的管理者、实践者,应该认真的研究这个问题,根据实际的项目类型,程 序设计语言…等等来度量软件大小,评估代价和开发者的生产力,是项目管理在进度控制,成本和质量管理方面更准确。

那么我们应该如何来衡量软件大小呢?之后将专门设篇幅并结合实例对这个问题做一个探讨。

Powered by WordPress