91久久久久久久久_欧美日韩中文_在线观看中文字幕亚洲_夜夜骑首页_精品久久伊人_天天色天天射天天操

東坡下載:內(nèi)容最豐富最安全的下載站!

首頁(yè)最新資訊 → 如何評(píng)價(jià)軟件寫(xiě)的好還是壞?

如何評(píng)價(jià)軟件寫(xiě)的好還是壞?

相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站時(shí)間:2012/1/16 16:35:13字體大小:A-A+

作者:點(diǎn)擊:181次評(píng)論:0次標(biāo)簽:

軟件自身是一種固化的思維,因此從本質(zhì)上來(lái)看,軟件是不可度量的。

但這并不意味著軟件不需要度量,而只是說(shuō)軟件中的度量大多都有一定限度。

應(yīng)用各種度量數(shù)據(jù)的時(shí)候一旦跨過(guò)這種限度,結(jié)果就會(huì)適得其反。

 

在這篇文章里,我們將考查一下現(xiàn)有的,對(duì)軟件進(jìn)行度量的方法(注意:這篇里主要考察別人的方法,不是我自己的)。

可能不全面,不足的地方歡迎大家進(jìn)行補(bǔ)充。

對(duì)軟件“直觀可見(jiàn)的質(zhì)量屬性”的度量比較簡(jiǎn)單,比如:Bug率,性能等,這里就不提了。

這里主要關(guān)注的是軟件的內(nèi)在的,不直觀可見(jiàn)的質(zhì)量屬性。

 

  • 圈復(fù)雜度

 

圈復(fù)雜度主要用于度量函數(shù)或方法,從《代碼大全》中可以找到圈復(fù)雜度的描述。

關(guān)于圈復(fù)雜度:Tom McCabe曾經(jīng)建議使用下面的方法來(lái)度量復(fù)雜度。在這一方法中為了計(jì)算復(fù)雜度首先要計(jì)算子程序中的決策點(diǎn)(decision points),規(guī)則如下:

 

    1. 從函數(shù)第一行一致往下通過(guò)程序
    2.  一旦遇到以下關(guān)鍵字或者同類(lèi)的詞就加1:if,while,repeat,for,and,or
    3.  給case語(yǔ)句中的每一種情況加1                           --Steve McConell 《代碼大全》

 

很多靜態(tài)分析工具都直接提供對(duì)圈復(fù)雜度的度量,而圈復(fù)雜度本身歧義性很小,是非常難得的指標(biāo),高于15的代碼基本很難看懂。

但圈復(fù)雜度更適合用于度量編碼的結(jié)果,對(duì)高層設(shè)計(jì)則不太適用。

 

  • 響應(yīng)集

 

  響應(yīng)集是指類(lèi)的各個(gè)方法直接調(diào)用的函數(shù)數(shù)目。響應(yīng)集無(wú)疑的應(yīng)該盡可能的小,根據(jù)得墨忒耳法則:某個(gè)對(duì)象的任何方法都應(yīng)該只調(diào)用屬于以下情形的方法。

         

class Demeter
{
private:
A* a;
int func();
public:
//...
void example(B& b);
void Demeter::example(B& b)
{
C c;
int f = func(); //<---- 類(lèi)自己的方法
b.invert(); //<----傳入?yún)?shù)的方法,當(dāng)然參數(shù)本身也可能是函數(shù)
a = new A();
a->setActive();// <---創(chuàng)建的對(duì)象所擁有的方法
c.print(); // <---創(chuàng)建的,并歸自己所有的對(duì)象的方法
}
};



         ---摘自《程序員修煉之道》

 

  • 關(guān)系內(nèi)聚性(H)

 

在度量包時(shí)可以用包內(nèi)部類(lèi)的數(shù)目除以包內(nèi)類(lèi)的總數(shù),其比值用來(lái)表示包得內(nèi)聚性。如果用R表示包內(nèi)部得類(lèi)關(guān)系數(shù)目,用N表示包內(nèi)類(lèi)總數(shù)。那么:

H = (R+1)/N

  • 不穩(wěn)定性(I)

不穩(wěn)定性由輸入耦合度(Ca)與輸出耦合度(Ce)計(jì)算而來(lái)。

包得輸入耦合度是指處于包外部,但依賴(lài)于包內(nèi)類(lèi)的數(shù)目。

包得輸出耦合度是指包內(nèi)部的依賴(lài)于包外部類(lèi)的類(lèi)數(shù)目。

這樣I = Ce / (Ca+ Ce)

 

  • 抽象性(A)

 

包的抽象性用抽象類(lèi)的數(shù)目和包中所有類(lèi)的數(shù)目進(jìn)行計(jì)算。

假如說(shuō)包中類(lèi)的總數(shù)是Nc, 抽象類(lèi)的數(shù)目是Na ,那么抽象度A = Na/Nc

 

關(guān)系內(nèi)聚性(H),不穩(wěn)定性(H),抽象性(H)的進(jìn)一步說(shuō)明,請(qǐng)參見(jiàn)《敏捷軟件開(kāi)發(fā):原則,模式與實(shí)踐》一書(shū)。

 

這些度量指標(biāo)無(wú)疑是有意義的,都可以用來(lái)評(píng)價(jià)軟件寫(xiě)的好還是壞,但卻不解決這樣一個(gè)問(wèn)題:
如果一個(gè)方案在關(guān)系內(nèi)聚性(H),不穩(wěn)定性(H),抽象性(H)上都有好的表現(xiàn),復(fù)雜度有沒(méi)有提高?如果說(shuō)復(fù)雜度因此而提高了,那么這種額外支出的復(fù)雜度值不值得?

如果我們認(rèn)為復(fù)雜度是軟件的根本問(wèn)題,那么在滿(mǎn)足需求的前提下,使軟件簡(jiǎn)單化就是最關(guān)鍵的使命(比靈活性等重要)。既如此,究竟應(yīng)該如何度量軟件的復(fù)雜度呢?

這是一個(gè)需要進(jìn)一步展開(kāi)的話(huà)題,我完善后會(huì)進(jìn)一步和大家分享。

相關(guān)評(píng)論

閱讀本文后您有什么感想? 已有 人給出評(píng)價(jià)!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過(guò)難過(guò)
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無(wú)聊無(wú)聊
熱門(mén)評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱(chēng):
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)

本類(lèi)常用軟件

主站蜘蛛池模板: 欧美在线小视频 | 成年人视频网站 | 日韩午夜在线观看 | 日韩欧美精品在线 | 一区二区三区视频在线播放 | 日本乱子伦 | 国产小视频在线 | 欧美又大又硬又粗bbbbb | 交换多p群乱高h文 | 伊人网av | 免费看黄色录像 | 欧美性一区二区 | 免费播放av | 五月综合色 | 亚洲精品字幕在线观看 | 国产精品一线 | 一本到av | 国产乱码一区二区三区 | 天堂影院av| 国产一级一片免费播放放a 免费国产视频 | 天堂资源av | 亚洲一区在线观看视频 | 99视频网 | 色综合天天综合网国产成人网 | 四虎黄色片 | 国产天堂网 | 91精品国产日韩91久久久久久 | 欧美精品第一页 | 一级片在线视频 | www.成人| 国产欧美成人 | 精品欧美一区二区三区久久久 | av在线播放网站 | av基地网| 黄色1级片 | 国产成人免费在线视频 | av黄色网址 | 成人欧美一区二区三区白人 | 欧美黄色片在线观看 | 日韩av一级片 | 久久精品播放 |