自然語言
自然語言是日常使用的中文或英文等,這是最自然的描述需求規格說明的語言。它的優點是閱讀和編寫都不需要經過專門訓練,可以表示任何領域的需求。但不足之處是由於自然語言的語義具有二義性,在自然語言中經常使用代名詞和定性表示的詞,如顯著、迅速等,這使得它描述的內容會產生二義性,並造成軟體需求理解上的錯誤。例如,一個用自然語言表達的含糊的需求如下:
將出差信息和出錯信息寫入出差檔案或出錯檔案中。
這個需求可以理解為:
1)出差信息和出錯信息兩者同時寫入出差檔案中或同時寫入出錯檔案中。
2)出差信息寫入出差檔案中,而出錯信息寫入出錯檔案中。
又如:“操作員標識由操作員姓名和密碼組成,密碼由6位數字構成。當操作員登錄系統時,它被存放在註冊檔案中。”
形式化需求描述語言
形式語言是基於數學方法而提出的一種抽象描述語言,該語言具有嚴格的語法和語義。通常把描述需求的形式語言稱為形式化需求描述語言。該語言的優點是能排除自然語言中的二義性,從而減少需求規格說明中的錯誤。由於這種語言的語法和語義被嚴格定義,故能對形式化需求描述進行語法和語義分析,以證明需求規格說明的正確性等。此外,形式化的需求描述能由計算機自動處理,如可以解釋執行形式化的需求規格說明,生成可執行的程式代碼,以及研製有效地編輯或理解形式化需求規格說明的工具或環境等。
形式化需求描述語言的不足是概念符號過於抽象,需要具有較好的數學基礎和經過嚴格的專門訓練後才能掌握和使用,而且可能增加軟體開發費用。形式化需求描述語言的典型代表有VDM、Z方法和B方法等。
結構化語言
結構化語言是介於自然語言和形式語言之間的語言,是一種語法結構受到一定限制、語句內容支持結構化的描述語言,亦稱為半形式語言。結構化語言的優點與自然語言較為接近,易於閱讀和理解。由於其文法和辭彙受到一定的限制,用它描述軟體的需求規格說明可以為需求信息的一致性和完整性檢驗提供準則,從而部分地排除了需求規格說明中存在的二義性。此外,研製關於結構化語言的支持工具也相對容易。結構化語言的不足之處是語言本身仍存在語義方面的含糊性,仍然會隱含著錯誤的根源。不過,結構化語言是目前最現實的一種需求規格說明的描述語言。結構化語言的典型代表有偽語言(pseudo language)、PSI。和RSL等。
偽語言
偽語言是將過程型程式設計語言中的if—then—else、case(選擇)和do while(循環)作為控制結構、其他部分利用自然語言表示的語言。該語言通常可用於表示順序過程,並可表示程式的算法。也稱為程式描述語言(Program Description Language,PDI。)。在偽語言中除控制結構外,語法基本與自然語言類似,但不使用修飾語、複合語句、腳註等,目的是明確地描述需求規格說明。
PSL
PSL(Problem Statement Language)是美國密西根大學在開發ISDOS(Information System Design and Optimization System)項目中提出的需求描述語言。該語言是基於實體關聯模型的語言,主要以數據流、數據結構和功能結構等功能需求為描述對象。
RSL
RSL(Requirement Statement Language)是美國TRW公司開發出來的需求描述語言,並已在美國軍事系統的開發中使用。該語言以飛彈防衛系統一類的實時系統的功能需求和性能需求為描述對象。類似於PSL,RSL也是以實體關聯模型為基礎的。在分析方面,主要用REVS(Requirement Engineering and Validation System)進行處理。在RSL中,寫出的規格說明被變換成稱為R-NET的圖,並且能看到易於理解的、從輸入到輸出的路徑和條件。