AsmL: 可執行的軟體規格 (轉)
AsmL是一種以抽象狀態機(Abstract State Machines, ASM)為基礎的規格語言。它由研究院的軟體工程基礎小組開發並維護,目前的版本是AsmL2(AsmL for ),此版本能夠嵌入Microsoft 和Microsoft .NET中,並可在.NET環境下編譯。你可以在以下地址找到它::namespace prefix = o ns = "urn:schemas-microsoft-com::office" />
AsmL透過規模最小的但是完整的方法建立一個操作的人類可讀(Human-readable)、機器可執行(Machine-executable)的模型,這種方法與任何給定的級別的抽象相關。這種用AsmL寫成的規格被稱為可執行規格(executable specification)。
可執行規格具有幾個非凡的特性:
首先,AsmL模型可以作為他們所描述的系統的模擬來執行。這意味著開發團隊甚至可以在沒有寫任何程式碼之前,就能夠檢查他們的設計與預期的有什麼不同。然而,AsmL模型並不僅僅是個原型系統或者參考實現,因為它完整地描述了所選設計級別的細節。換句話說,一個適當構建的AsmL模型能夠告訴我們,一個正確的實現必須(must)做什麼,可以(may)做什麼以及不能(must not)做什麼。
其次,AsmL模型能夠與它所描述的系統的實現並行執行,以檢查實現與規格是否相符。這不但可以檢查實現,同時可以保證規格及時。
第三,AsmL對演算法測試用例以及大部分用例中的模型檢查和有嚴格的要求。
如同傳統的軟體規格,可執行規格也描述軟體如何工作。但與傳統規格不同的是,可執行規格具有單一的、明確的含義。這個含義以抽象狀態機、系統發展的數學模型、執行時狀態的形勢呈現。
舉例來說,AsmL規格可以作為程式執行來模擬一個系統如何動作,或者檢查一個實現的行為是否與規格相符。然而,與傳統的程式不同,可執行規格有意保持最小規模。換句話講,雖然他們的描述很詳實,卻不冗長,所有的東西都是所選的詳細級別的一部分。
因此,與傳統的程式不同,可執行規格用來限定它們自身的和行為,是系統中所有正確實現所具有的共同的約束和行為。舉例來說,可執行規格並不限制操作的順序,除非順序具有重要的意義。而傳統程式卻將操作的命令序列作為實現時的關鍵決定。可以透過下面這個例子觀之:
var A = [3, 10, 5, 7, 1]
indices = {0, 1, 2, 3, 4}
Main()
step until fixpoint
choose i in indices, j in indices
where i < j and A(i) > A(j)
A(i) := A(j)
A(j) := A(i)
step
WriteLine(A) // prints [1, 3, 5, 7, 10]
這個可執行規格使用一個抽象狀態機透過single-s演算法實現In-place sorting。
機器執行一系列順序的步驟來A中的值。A中的元素由i和j表示,使得i小於j並且A(i)大於A(j)。交換持續進行,直到條件不成立,也就是說,整個序列按序排列為止。最後一步列印排列好的序列。每一步的機器狀態完全由那一步時的A序列的值決定。
規格的規模是最小的。首先,choose並沒有說如何選擇兩個索引,只是限定無論兩個索引如何選擇,必須滿足i < j並且A(i)>A(j)。因此,許多排序演算法,包括排序和氣泡排序,都與我們的規格是一致的。其次,這個例子也沒有說如何交換兩個元素,而是將如何實現有序的交換留給每一個實現去決定。
總的說來,AsmL規格對於團隊的設計決策交流來說是一種理想的方式。同時,程式經理、開發人員以及測試人員都可以使用AsmL規格來達到對設計的單一而統一的理解。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956464/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- matlab程式碼轉exe可執行軟體Matlab
- 軟體需求規格說明書
- 軟體行業的發展要尊重軟體工程的價值規律 (轉)行業軟體工程
- 如何將法律法規轉化為可執行模型? - brcommunity模型Unity
- 軟體需求規格說明文件(終)
- 軟體需求規格說明文件(初)
- window安裝msi檔案沒有可執行軟體
- 限制軟體執行的方法
- Linux可執行的檔案(轉)Linux
- 軟體需求規格說明書的編寫指南
- 軟體架構風格——規則架構架構
- 幽默:軟體行業的潛規則行業
- JVM可支援的最大執行緒數(轉)JVM執行緒
- AsmL例項研究(二) (轉)ASM
- 路由的中介軟體執行順序路由
- Vista中執行軟體的相容性測試(轉)
- win10執行軟體提示需要管理員許可權怎麼回事_win10系統怎麼跳過執行軟體需要管理員許可權Win10
- mysql 管理:mysql 執行許可權(轉)MySql
- ERP軟體執行維護市場的總盤子分析(轉)
- 軟體工程文件規範--前景文件(轉)軟體工程
- 編寫可以在所有WINDOWS平臺上執行的應用軟體 (轉)Windows
- 為什麼谷歌要執行嚴格的程式碼編寫規範谷歌
- Laravel 多箇中介軟體的執行順序Laravel
- 危險了,世界賴以執行的軟體
- 突破常規限制執行asp木馬(轉)
- 可悲的西安軟體行業 可憐軟體開發人員 無奈的“碼農”行業
- 如何在部落格園的文章/隨筆中新增可執行的js程式碼JS
- 不規則窗體的應用增加軟體的吸引力 (轉)
- Novell推出可替代微軟的桌面應用軟體包(轉)微軟
- 管道模式執行全域性中介軟體模式
- 使用多執行緒使軟體介面具有較好的響應性 (轉)執行緒
- 一個開源軟體許可證合規的經濟高效模式模式
- Laravel使用中介軟體進行許可權控制Laravel
- 執行軟體測試用例的幾個注意
- Windows XP 增加可執行檔案的搜尋路徑(轉)Windows
- win10軟體詢問是否執行怎麼辦 win10軟體詢問是否執行的解決方法Win10
- drools執行指定的規則
- drools執行完某個規則後終止別的規則執行