簡介
對軟體所應滿足的要求,以可驗證的方式作出完全、精確陳述的檔案。“規格說明”一詞與其他工業產品的“規格說明書”有相似的含義。不過,在軟體領域中,它已成為一個特定的技術用語。軟體產品與使用環境之間的關係,軟體產品內部各組成部分之間的接口往往十分複雜,並且在發展過程中軟體產品要經歷多次變換,以各種不同形式出現於不同的階段。因此,對軟體的各組成部分之間、各發展階段之間的接口關係應當規定得十分準確。軟體規格說明須用某種語言書寫。自然語言的陳述中常存在歧義性,易引起誤解。因而,最好使用人工語言或者人工語言與自然語言的混合形式書寫軟體的規格說明。這種語言就叫作規格說明語言。大型軟體的規格說明往往十分冗長,因而希望這種語言易於用計算機處理,以便能用機器檢查軟體規格說明中有無遺漏或自相矛盾的地方。軟體規格說明的內容可根據不同場合的需要而有所側重。
功能規格說明
對軟體所應具備的功能作出規定;
性能規格說明
對軟體所應具備的性能,如計算精度、回響速度和占用存儲空間的大小等作出規定;
接口規定說明
對軟體與其環境之間、軟體各組成部分之間的接口關係作出規定;
設計規格說明
對軟體的設計加以說明。典型的內容包括使用的算法、控制邏輯、數據結構、模組間接口關係,以及輸入-輸出格式等。
說明標準
軟體規格說明的使用者包括用戶、設計人員、程式設計師、管理人員等, 涉及產品鑑定、質量保證、配置管理、軟體維護、人員培訓、市場分析、軟體著作權等諸多問題。可以把軟體規格說明看成是一個具有概述、圖示、例子等多視角的信息庫。它既是用戶和開發者的一份協定, 又是指導軟一件開發、測試和維護的依據。
標準化的軟體規格說明以統一的形式為各類相關人員提供各自所需要的信息。實踐表明,廣泛推行軟體規格說明標準有助於提高軟體開發的效率和質量。軟體工程只有在廣泛採用各種標準化技術以後方能成為一門真正的工程學科。
但是涉及軟體規格說明的標準太多了, 以至於讓人無所適從。閉由靜態和動態的觀點可知軟體規格說明的標準化工作應從產品和過程兩方面展開。根據軟體開發的特點, 軟體規格說明標準應加大軟體過程標準化的比重。但是, 目前關於軟體柳格說明的標準往往主要是軟體產品“ 了的標準。近年來新提出的軟體過程模型(和快速原型模型、增量開發模型、面向對象噴泉開發模型) 的標準化工作則顯得很薄弱。
關於軟體規格說明的國際或國家標準址一用範圍廣, 具有較高的理論價值。相比之下, 根據~ 套用領域的特點, 結合具體開發方法而制定的軟體規格說明標準則具有更好的實用性。因而,國外許多大公司都制定有自己的軟體規格說明標準。我國一些部門和單位也進行過類似的工氣作。開發這種具體部門運用的軟體規格說明標準要考慮以下問題。
1滿足軟體規格說明國家標準的要求, 可以補充國家標準未涉及的內容, 但不能違背軟體工程原理。
2針對不同使用者, 提供所需要的信息。例如, 為用戶提供一個相當於用戶使用手冊的規格說明, 為開發者提供一個相當於設計任務書的規格說明。
3容易使用和更改。
4有衡量軟體規格說明質量的客觀性手段。
5結合套用領域的特點及具體的開發方法, 綜合使用標準的代價( 如在維護一致性上的時間) 和收益( 如可靠性、維護性的提高)。
軟體規格說明方法
目前, 對軟體規格說明認識的深度遠不如軟體設計和程式開發。所以, 儘管大多數人認為軟體規格說明應與軟體設計和實現充分分離, 但是軟體規格說明中的許多觀點不可避免地繼承了軟體設計和實現的經驗。軟體規格說明方法研究的問題是如何產生軟體規格說明。可以從空間和時間兩方面來考察軟體規格說明。
1從空間的角度考察
從空間的角度觀察, 廣義上來說, 軟體規格說明描述的是整個軟體系統; 狹義來說, 軟體規格說明描述的是軟體系統的組成部件。
軟體規格說明方法主要提供分解和精化的手段。例如, 結構化分析設計方法和逐步求精法均提供了這種手段。反過來, 軟體規格說明方法還要提供抽象的手段。在產生軟體規格說明的過程中需要對其組成部件進行抽象. 否則, 如果每一個組成部件都以自己特有的行為方式運轉, 不同的組成部件交織在一起, 那么軟體規格說明可能同軟體實現一樣複雜。這樣也就失去了軟體規格說明存在的意義。過程抽象和數據抽象是兩種有用的抽象方法。過程抽象把一組輸人映射到一組輸出上, 包含了數據抽象, 並通過數據抽象的行為來定義。數據抽象提供了一組數據以及施加在這組數據上的操作。儘管這些操作也可視為一種過程抽象, 但是把數據抽象當作一個整體更能體現出它和現實世界實體的對應關係。
2從時間的角度考察
從時間的角度來觀察, 廣義來說, 軟體規格說明方法適用於整個軟體生命周期; 狹義上來說, 軟體規格說明方法僅適用於軟體生命周期的特定階段。
在軟體生命周期的某些階段採用軟體規格說明方法往往要等到以後的階段中方顯示出它的促進作用。例如, 軟體設計規格說明劃分了軟體模組使用者和實現者的責任, 避免了編碼階段可能出現的混亂。所以, 研究軟體規格說明方法既要考慮到特定開發階段的特點, 又要聯繫整個軟體生命周期, 統籌規劃。軟體工程的傳統觀點認為軟體規格說明方法僅針對於開發前期的需求分析和軟體設計。目前, 軟體過程是一個很活躍的研究領域。把軟體生命周期分解成一系列軟體過程便形成了軟體過程模型, 不同的分解方法對應於不同的過程模型。研究軟體規格說明方法同軟體過程結合起來更有利於改進整體的效果。這樣就擴充了軟體規格說明的傳統觀點。困擴充後的軟體規格說明方法要包括:
① 源規格說明
② 目標規格說明
③ 從源規格說明開發出目標規格說明的方法
④ 驗證源規格說明到目標規格說明的更換是否正確的方法。
套用領域和程式是軟體規格說明抽象層次的兩個極端。以下分別從這兩個極端考察軟體規格說明。
( 1) 從套用領域考察
軟體開發的起點是根據用戶需求產生軟體需求規格說明。這是軟體規格說明方法中的一個難點。套用領域包含著動態與靜態、數據流與控制流、決策與計算、串列處理與並行處理等多種差別。我們可以從具體套用領域出發,探索適合特定套用領域的軟體規格說明方法。於是,“ 需求工程” 這一概念便應運而生。商業上的套用總是顯得迫不及待。各種各樣的套用生成器a( 即ilc at io n ge en ar ot sr ) 紛紛推出. 這種工具通過分析套用領域的特點, 開發出專用問題描述語言, 並提供解決該語言所能描述問題的算法。當前套用生成器主要包括報表生成器, 螢幕視窗選單生成器, 查詢語言等。
(2 ) 從程式出發考察程式是軟體在最低抽象層次的上的描述。開發軟體規格說明不能不考慮在計算機上實現的可能性。大多數高級語言( 如F O R T R A N、P as ed ) 均是基於過程的計算模型。這種模型反映了計算機硬體的處理機制。現代提出的新型計算模型則偏重於反映人們思考方式的特點。例如, 函式模型, 邏輯模型, 面向對象模型等。由此可見, 程式設計語言正吸取著軟體規格說明中的精華, 使自身抽象層次不斷提高。第四代語言(4 G L ) 在一定程度上提高了軟體開發效率, 已被廣泛套用於各種決策支持系統, 計算機輔助軟體開發環境、專家系統、資料庫等。但現有的第四代語言工具往往具有通用性不強、抽象層次不高等缺點, 所以, 不適合作為軟體規格說明語言。
軟體維護和重用應在比程式更高的層次上進行。從原有的程式出發, 反向推導出軟體規格說明是逆向工程的主要工作。這方面的研究也有利於加深對軟體規格說明方法的理解。
表示方式
軟體開發人員和用戶之間以及軟體開發人員內部之間的交流在相當程度上決定了軟體規格說明的質量。表示方式就是這種交流的媒介。這是關於軟體規格說明的爭論較多的話題。目前認為, 軟體規格說明表示方式要:
①適用於不同的套用領域
② 有良好的數學基礎
③ 允許表示軟體規格說明的不同側面以及把它們組合成一個完整的軟體規格說明
④能保留待定的問題, 表示方式不強迫做出不願或不能做出的設計決定等。形式化軟體規格說明和圖形軟體規格說明是當前的兩個十分活躍的領域。
1形式化軟體規格說明
形式化軟體規格說明有精確定義的語法和語義, 可進行一致性、完整性檢查, 有利於程式自動化生成, 倍受學術界推崇. 目前, 已研製出許多形式化規格說明語言。這些形式化軟體規格說明語言按語義學方法可以分以下兩類:
( 1 ) 面向模型的語言。這類形式化軟體規格說明語言可根據數學結構(如集合、序列、函式) 描述系統的行為模型。在串列系統中有VDM 語言、Z 語言, 在並行系統和分散式系統中有PetriNets 、CCS、CSP。
(2 ) 面向特性的語言。這類形式化軟體規格說明語言允許描述系統行為的最小約束, 又可分為兩種: ① 公理類語言, 用一階邏輯描述關於抽象數據類型操作的前後斷言. 包括Larch、Anna 。② 代數類語言, 基於多序代數, 用代數實體的等量關係描述系統的行為特徵, 在串列系統中有Clear、Act One。在並行和分散式系統中, 面向特性的語言有Temporal Logic、LOTOS。
上述這些形式化規格說明語言均側重於功能描述。在非功能規格說明的形式化方面的研究很不充分。
在充分肯定形式化軟體規格說明的同時, 我們還應認識到: 非形式化的表示方式中也含有形式化的成分, 形式化的表示方式中又包含著非形式化的理解。只有形成了對軟體系統深人的理解, 方能使用形式化描述方法。形式化軟體規格說明不能完全代替非形式化軟體規格說明。形式化軟體規格說明與非形式化軟體規格說明要互相補充清潔屋技術就同時採用非形式化和形式化兩種軟體規格說明表示方式。
2圖形軟體規格說明
正文軟體規格說明包含了大量字元流信息, 以至於讓人難以形成整體的結構框架。圖形比正文有著更多的視覺效果, 如形狀、大小、方向、距離、位置等, 在計算機語言中採用圖形並非近年才有。六十年代出現的流程圖便是早期的圖形語言。用圖形描述軟體規格說明可以做得比正文更好。Jho n 5M和K ar l GB曾提出一種軟體的圖形設計風範。該方法在一種元模型的基礎上用圖形描述解決了軟體開發中的分析、設計、編碼、維護和文檔管理等問題。
許多軟體規格說明方法都引人了一些圖形和符號。圖形規格說明要使用廣泛接受的圖形規範。
圖形軟體規格說明不可能象使用正文語言那樣隨意表達語義。所以圖形軟體規格說明至少是半形式化的表示方式。實現圖形軟體規格說明的硬體障礙正逐漸消失, 商品化的圖形工作站已擁有十分強大的功能, 這更激發了研究圖形軟體規格說明的興趣。
Petri網是一種系統的數學和圖形描述和分析工具。與其它系統模型相比,Petri網的主要特點是: 可確切表示某種事件集合中的因果關係和獨立性, 包括並發關係; 適合描述非順序功能的系統; 易在不同抽象層次上用同樣的描述語言表示系統; 易驗證系統的性質及正確性。正由於這些特點, 目前Petri網已成為計算機科學中的一個重要研究課題和工具。基於Petri網的圖形軟體規格說明可望能有所作為。
關於圖形軟體規格說明其它方面的研究工作是: 圖形肖像和圖形辭彙的定義, 圖形語法和語義, 人機互動模式, 專用圖形軟體規格說明語言和環境等。