Terry的Blog
posts - 56, comments - 54, trackbacks - 0, articles - 4
:: :: ::
联系
::
聚合
::
管理
软件开发的评价标准(转载)
Posted on 2005-11-16 16:40
Terry的Blog
阅读(1108)
评论(1)
编辑
收藏
所属分类:
软件工程
三、注释与文档
首先讨论一个计算工作量的数学模型。
1.没有注释的情况下:
第一次开发工作量=代码行数×单位代码工作量
维护工作量=理解代码工作量+决定方案工作量+修改代码行数×单位代码工作量
2、有注释的情况下:
第一次开发工作量=代码行数×单位代码工作量+代码行数×注释率×单位注释工作量
维护工作量=基于注释理解代码工作量+决定方案工作量+修改代码行数×单位代码工作量+修改代码行数×注释率×单位注释工作量
增加注释之后,增机了注释的工作量,这些增加需要通过节约理解代码的工作量赚回来。
3、理解代码的工作量讨论
在没有注释的情况下:
理解代码工作量=代码总量×理解代码的效率
在有注释的情况下:
理解代码工作量=注释总量×理解注释的效率
又因为
注释总量=代码总量×注释率
因此,要想通过注释减少维护工作量,就要切实降低注释率,并且提高注释的效率。
4、这些数据的含义
注释率:软件的注释行数/软件的程序行数
有人像这样写代码
java代码:
//给i赋初始值
int
i=
10
;
//开始循环
for
(
int
j=
0
;j<i;j++
)
{
//输出j的值
System
.
out
.
println
(
j
)
;
}
//循环结束
这样的一比一注释,注释率就是1。一般来说,注释率大于1的程序,肯定是垃圾。因为写这个程序的人,根本不知道该注释哪些地方。
但是,并不是说注释率越低越好,因为注释少了之后,可能会影响理解注释的效率。
面对一次维护需求时:
理解注释的效率:需要阅读的注释行数/注释总数
如果一个维护者,在阅读了所有的注释之后,还没有理解程序,更不要说找到解决方案,那么他就必须去阅读代码。理解代码的工作量,就是没有注释时的工作量再加上被垃圾注释浪费掉的工作量。
这时的理解注释的效率,就是大于1的。写出这样的注释的人,不配做程序员。
切实提高理解注释的效率,是提高维护效率的根本。可以有以下手段:
1、结构化文档
2、HTML格式的合理的超链接
3、关键字索引(方便对于注释全文检索)
4、逻辑清晰的概要介绍
上面的这些公式都有一条:决定方案工作量。
这个工作量其实是可以合并的。以往的理解是,必须理解了现有的程序,才能决定维护的方案。但是我们可以假设,如果通过查询注释和文档,就能找到如何维护的答案,那么这样的维护就是最轻松的。
我们不假设所有的维护都能通过查询注释和文档,直接得到答案,但是如果有一个预先的合理的考虑,而写下了系统维护指南这样的文档,那么这样的文档,将是最有价值的。
另外一个手段,就是在每次维护之后,写下一个维护记录,大致格式是:
我的维护需求,我查询了哪些注释和文档,最后我在哪里找到了答案
这样的记录,将会为后来者提供极大的方便。
下面说一点题外话,因为在软件工程中,还存在这样的文档:
《功能需求描述》《概要设计》《详细设计》《.......》
我不理解为什么需要这样的文档,也不理解谁会来阅读这样的文档。为了模仿建筑工程,软件工程已经大大的扭曲了自己的本性。
注释与文档的本质,是为了便于软件的开发和维护,而不是在一道一道的工序之间作为“交接班”的说明。
如果一份文档,无法回答这两个问题,那么这份文档就是浪费了:
谁愿意写这样的文档?
评论
#
re: 软件开发的评价标准(转载)
回复
更多评论
2011-05-12 17:16 by
爱米
下面说一点题外话,因为在软件工程中,还存在这样的文档:
《功能需求描述》《概要设计》《详细设计》《.......》
我不理解为什么需要这样的文档,也不理解谁会来阅读这样的文档。为了模仿建筑工程,软件工程已经大大的扭曲了自己的本性。
——显然你肯定还没有参与大型的团队项目,所以有这样的疑问也不奇怪。
文档不仅仅是交接,而是思想的直接表达与传承方式。
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Powered by:
BlogJava
Copyright © Terry的Blog
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
(81)
eclipse(1)
Java应用服务器(4)
java语言(28)
linux
oracle(13)
web开发(7)
业界新闻(1)
其他(工具软件...)(4)
转载(22)
软件工程(1)
随笔档案
(56)
2010年8月 (1)
2006年10月 (2)
2006年6月 (2)
2006年5月 (2)
2006年4月 (5)
2006年3月 (5)
2006年2月 (1)
2006年1月 (2)
2005年12月 (19)
2005年11月 (17)
Blog
Cache介绍
良葛格學習筆記
花钱的年华
web sites
Ask Tom
Excite エキサイト 翻訳
IBM developerworks 中国: Java
infoq中文
java相关技术使用例子
swing, swt, POI, java2D, java3D, servlet, JavaMail
TIOBE Software - The Coding Standards Company
代码查询网站
全库网123查!
其他
上海政府网上办事项目
上海轨道交通论坛
中原(上海)领先指数报告
中房上海指数
软件下载
积分与排名
积分 - 130153
排名 - 469
最新评论
1. re: VB中动态生成Excel文件
wrwer
--rwer
2. re: 比较Oracle SQL中的IN & EXISTS
不知所云
--we
3. re: 日文编码与Unicode编码转换(未完)
–½Ý‚éŽÒ’B‚Ö‚Ì—U‚¢
--dsf
4. re: 字符串中的正则表达式特殊符号(转载)
111
--'
5. re: PL/SQL支持嵌套事务
但是
--的
阅读排行榜
1. 比较Oracle SQL中的IN & EXISTS(23009)
2. Calendar使用方法(转载)(12042)
3. HttpSessionListener的用法(6481)
4. Oracle提供的序号函数(6347)
5. 日文编码与Unicode编码转换(未完)(6272)