程式設計規範 質量保證

2021-07-13 02:29:37 字數 3136 閱讀 4669

(1)正確性,指程式要實現設計要求的功能。

(2)穩定性、安全性,指程式穩定、可靠、安全。

(3)可測試性,指程式要具有良好的可測試性。

(4)規範/可讀性,指程式書寫風格、命名規則等要符合規範。

(5)全域性效率,指軟體系統的整體效率。

(6)區域性效率,指某個模組/子模組/函式的本身效率。

(7)個人表達方式/個人方便性,指個人程式設計習慣。

說明:若模組封裝的較好,那麼一般不會發生非法引用他人的空間。

說明:在實際程式設計過程中,稍不留心就會出現在乙個模組中釋放了某個記憶體塊(如c語言指標),而另一模組在隨後的某個時刻又使用了它。要防止這種情況發生。

說明:分配的記憶體不釋放以及檔案控制代碼不關閉,是較常見的錯誤,而且稍不注意就有可能發生。這類錯誤往往會引起很嚴重後果,且難以定位。

示例:下函式在退出之前,沒有把分配的記憶體釋放。

typedef unsigned charbyte;

int example_fun( bytegt_len, byte *gt_code )

... // other program code

}應改為如下。

int example_fun( bytegt_len, byte *gt_code )

... // other program code

}示例:假設某軟體系統最多可由10個使用者同時使用,使用者號為1-10,那麼如下程式存在問題。

#define max_usr_num10

unsigned charusr_login_***[max_usr_num]= "";

void set_usr_login_***(unsigned char usr_no )

}當usr_no為10時,將使用usr_login_***越界。可採用如下方式解決。

voidset_usr_login_***( unsigned char usr_no )

}說明:使用不一致的資料,容易使系統進入混亂狀態和不可知狀態。

說明:程式設計時,不能隨心所欲地更改不屬於自己模組的有關設定如常量、陣列的大小等。

示例:在b型機的各模組與作業系統的介面函式中,有乙個要由各模組負責編寫的初始化過程,此過程在軟體系統載入完成後,由作業系統傳送的初始化訊息來排程。因此就涉及到初始化訊息的型別與訊息傳送的順序問題,特別是訊息順序,若沒搞清楚就開始程式設計,很容易引起嚴重後果。以下示例引自b型曾出現過的實際**,其中使用了fid_fetch_data與fid_initial初始化訊息型別,注意b型機的系統是在fid_fetch_data之前傳送fid_initial的。

midalarm_module_list[max_alarm_mid];

int farsys_alarm_proc( fid function_id, int handle )}}

... // program code

break;

case fid_fetch_data:

... // program code

get_alarm_module( );  // 初始化alarm_module_list

break;

... // program code}}

由於fid_initial是在fid_fetch_data之前執行的,而初始化alarm_module_list是在fid_fetch_data中進行的,故在fid_initial中(**)處引用alarm_module_list變數時,它還沒有被初始化。這是個嚴重錯誤。

應如下改正:要麼把get_alarm_module函式放在fid_initial中(**)之前;要麼就必須考慮(**)處的判斷語句是否可以用(不使用alarm_module_list變數的)其它方式替代,或者是否可以取消此判斷語句。

說明:此類錯誤一般是由於把「<=」誤寫成「<」或「>=」誤寫成「>」等造成的,由此引起的後果,很多情況下是很嚴重的,所以程式設計時,一定要在這些地方小心。當編完程式後,應對這些操作符進行徹底檢查。

說明:形式相近的操作符最容易引起誤用,如c/c++中的「=」與「==」、「|」與「||」、「&」與「&&」等,若拼寫錯了,編譯器不一定能夠檢查出來。

示例:如把「&」寫成「&&」,或反之。

ret_*** = (pmsg->ret_***& return_mask); 

被寫為:

ret_*** =(pmsg->ret_*** && return_mask);

rpt_*** =(valid_task_no( taskno ) && data_not_zero( stat_data ));

被寫為:

rpt_*** =(valid_task_no( taskno ) & data_not_zero( stat_data ));

說明:goto語句會破壞程式的結構性,所以除非確實需要,最好不使用goto語句。

說明:程式中嵌入式彙編,一般都對可移植性有較大的影響。

說明:對不同產品中的某個功能相同的模組,若能做到其核心部分完全或基本一致,那麼無論對產品的測試、維護,還是對以後產品的公升級都會有很大幫助。

示例:如下程式將造成變數下溢。

unsigned char size ;

while (size-- >=0) // 將出現下溢

當size等於0時,再減1不會小於0,而是0xff,故程式是乙個死迴圈。應如下修改。

char size; // 從unsigned char 改為char

while (size-- >=0)

示例:如c語言中字元型變數,有效值範圍為-128到127。故以下表示式的計算存在一定風險。

char chr = 127;

int sum = 200;

chr += 1; // 127為chr的邊界值,再加1將使chr上溢到-128,而不是128。

sum += chr; // 故sum的結果不是328,而是72。

若chr與sum為同一種型別,或表示式按如下方式書寫,可能會好些。

sum = sum + chr + 1;

(1)充分了解應用介面、使用環境及使用時注意事項。

(2)不能過分相信其正確性。

(3)除非必要,不要使用不熟悉的第三方工具包與控制項。

說明:使用工具包與控制項,可加快程式開發速度,節省時間,但使用之前一定對它有較充分的了解,同時第三方工具包與控制項也有可能存在問題。

華為C語言程式設計規範 質量保證

8 1 在軟體設計過程中構築軟體質量。8 2 質量保證優先原則 1 正確性,指程式要實現設計要求的功能。2 穩定性 安全性,指程式穩定 可靠 安全。3 可測試性,指程式要具有良好的可測試性。4 規範 可讀性,指程式書寫風格 命名規則等要符合規範。5 全域性效率,指軟體系統的整體效率。6 區域性效率,...

軟體專案質量保證 編碼規範

一 編碼規範的作用 二 編碼規範不是 物神 三 編寫編碼規範的一些建議 四 編碼規範參考 作為軟體開發者,我們可以開發低等級的軟體,但不能開發低質量的軟體。所以,如何實施質量保證,是我們關注的主要問題之一,而編碼規範則是實施質量保證的第一步。編碼規範已經成為乙個老生常談的問題,幾乎每個專案,每家公司...

軟體專案質量保證 編碼規範

目錄 一 編碼規範的作用 二 編碼規範不是 物神 三 編寫編碼規範的一些建議 四 編碼規範參考 作為軟體開發者,我們可以開發低等級的軟體,但不能開發低質量的軟體。所以,如何實施質量保證,是我們關注的主要問題之一,而編碼規範則是實施質量保證的第一步。編碼規範已經成為乙個老生常談的問題,幾乎每個專案,每...