AsmL例項研究(二) (轉)

amyz發表於2007-08-14
AsmL例項研究(二) (轉)[@more@]

透過上面這個例子,我們可以瞭解到一些用AsmL描述的可規格的基本資訊。整體結構上,可執行規格與傳統的規格並沒有太大不同。它將對軟體邏輯的描述,用AsmL程式碼的形式,以特殊的符號(這裡是AsmL)標記之後,夾雜在文字說明之間,以便使閱讀它的人能夠輕易對模型及其實現產生一定的認識。可執行規格的優勢正在於對軟體邏輯的描述上,別忘了AsmL的目標是產生“人類可讀(Human-readable),機器可執行(Machine-executable)”的模型。

:namespace prefix = o ns = "urn:schemas--com::office" />

傳統的設計規格一般是在文字描述的過程中,輔以虛擬碼來描述某段的邏輯。因此Team中需要有個約定,在設計規格中採用何種格式的偽碼,以便大家都能夠看得懂。但是這樣的約定將難於使Team之外的人能夠輕易理解。在可執行規格中,AsmL充當了這種偽碼的角色,甚至比偽碼的效果更好。由於AsmL有一套類似語言的定義良好的規範,因此它很容易成為對模型的理解的基礎。而且由於AsmL並非Team的專屬物,因此以它來描述的規格很容易被Team之外的人所理解,只要他掌握了AsmL。

AsmL相比於虛擬碼真正的強悍之處在於,經過AsmL建模所得到的規格,比如前面這個DiningPhilosophers例子,已經是一個可以執行的模擬程式了。你完全可以執行它,來檢查設計是否完備,是否與預期的相符。在AsmL2.1.5.8中,即使是文件,也是可以透過AsmL的Word編譯執行的。當你編譯它時,以“AsmL”標記起來的文字被認為是AsmL程式碼,它們被從文件中剝離,然後經編譯成可執行的程式。同樣的,AsmL的Word外掛可以將Word版本的規格格式化成Xml格式,這樣你就可以將它新增到Visual Stadio的工程中。

AsmL2.1.5.8與其它的.NET語言之間也具有很好的互動性。看看前面的例子,你會注意到,前面的規格中缺少程式入口Main。正如你想象的,前面的規格是不能執行的。它可以被編譯成dll,從而被其他的專案引用。事實上,例子DiningPhilosophers是個程式,在這個例子的Main Form中引用了前面定義的Table類。還記得[EntryPoint] 這個attribute嗎?是的,用它標記過的方法是能夠在中的。在Main Form中,Table的這些方法被呼叫,來反映程式的執行情況。不妨試試這個例子程式,它可是個挺有意思的小程式呢!

本文旨在引介AsmL。由於作者也剛剛接觸AsmL不久,文中的錯誤與疏漏之處在所難免。如遇不明之處,相信能夠從研究院的相關網站上找到答案。如果您還不清楚AsmL是什麼,您可以參考作者之前的一篇文章《AsmL:可執行的軟體規格》


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-956489/,如需轉載,請註明出處,否則將追究法律責任。

相關文章