Terry的Blog
posts - 56, comments - 54, trackbacks - 0, articles - 4
:: :: ::
聯系
::
聚合
::
管理
軟件開發的評價標準(轉載)
Posted on 2005-11-16 16:40
Terry的Blog
閱讀(1117)
評論(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查!
其他
上海政府網上辦事項目
上海軌道交通論壇
中原(上海)領先指數報告
中房上海指數
軟件下載
積分與排名
積分 - 130757
排名 - 470
最新評論
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(23029)
2.?Calendar使用方法(轉載)(12047)
3.?HttpSessionListener的用法(6487)
4.?Oracle提供的序號函數(6364)
5.?日文編碼與Unicode編碼轉換(未完)(6287)
主站蜘蛛池模板:
日本精品人妻无码免费大全
|
国产免费黄色大片
|
亚洲中文字幕久久精品无码A
|
亚洲色爱图小说专区
|
91免费福利视频
|
久久丫精品国产亚洲av
|
国产美女被遭强高潮免费网站
|
亚洲乱码精品久久久久..
|
无码AV片在线观看免费
|
亚洲一区中文字幕在线观看
|
免费在线一级毛片
|
亚洲综合免费视频
|
fc2免费人成在线
|
久久综合久久综合亚洲
|
国产亚洲人成无码网在线观看
|
九九综合VA免费看
|
亚洲国产成人久久综合一区
|
免费人成在线观看网站视频
|
51视频精品全部免费最新
|
女人裸身j部免费视频无遮挡
|
午夜视频免费成人
|
嫩草在线视频www免费观看
|
亚洲成aⅴ人片久青草影院按摩
|
日本阿v免费费视频完整版
|
亚洲高清免费视频
|
亚洲AV日韩AV一区二区三曲
|
亚洲精品美女在线观看播放
|
在线永久免费观看黄网站
|
99久久久国产精品免费蜜臀
|
免费毛片毛片网址
|
亚洲色少妇熟女11p
|
亚洲精品无码久久久久久久
|
亚洲一区二区三区AV无码
|
免费永久在线观看黄网站
|
国语成本人片免费av无码
|
日韩免费无码视频一区二区三区
|
亚洲日产2021三区在线
|
亚洲精品亚洲人成在线观看
|
免费a级毛片在线观看
|
好爽…又高潮了毛片免费看
|
91高清免费国产自产拍2021
|