用TLA+定義系統(tǒng):TLA+語言與工具在軟硬件設(shè)計中的應(yīng)用
定 價:139 元
- 作者:[美] 萊斯利·蘭伯特(Leslie Lamport) 著,董路明,賀志平 譯
- 出版時間:2021/4/1
- ISBN:9787111678229
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP311.11
- 頁碼:328
- 紙張:膠版紙
- 版次:1
- 開本:16開
本書是作者針對分布式并發(fā)計算系統(tǒng)超過25年的研究成果的總結(jié)。在本書中,作者提出用基于動作的時態(tài)邏輯(TLA)來為復(fù)雜信息系統(tǒng)的行為建立數(shù)學(xué)模型,進(jìn)而使用嚴(yán)格的數(shù)學(xué)證明與檢驗的方法來驗證系統(tǒng)行為的正確性。為此,作者發(fā)明了建模語言TLA+以及模型檢查工具TLC。本書結(jié)合若干案例,深入淺出地描述了從數(shù)學(xué)原理到系統(tǒng)建模的哲學(xué)思想,以及從建模語言的工程實踐到模型驗證工具的運用技巧等內(nèi)容。
本書將指導(dǎo)你如何使用TLA+語言編寫計算機系統(tǒng)規(guī)約。全書篇幅比較長,但大多數(shù)人只需要閱讀第一部分的內(nèi)容就夠了,這部分包含了大多數(shù)工程師需要了解的與編寫規(guī)約有關(guān)的知識,至于學(xué)習(xí)它所需要的背景知識,只要求具備工程學(xué)或計算機科學(xué)的本科生所應(yīng)掌握的數(shù)學(xué)和計算機知識即可。第二部分將為需要進(jìn)階的讀者提供更深入的內(nèi)容。本書的其余部分是參考手冊——第三部分介紹TLA+工具,第四部分介紹TLA+語言本身。 TLA官網(wǎng)http://lamport.org有可供下載的配套資源,包括TLA+工具、練習(xí)、參考資料和勘誤清單。你也可以在搜索引擎上輸入uidlamporttlahomepage來找到上述頁面,但請不要把這個字符串放到互聯(lián)網(wǎng)上共享。 何為規(guī)約 寫作是發(fā)現(xiàn)你的想法有多么草率的根本方法。 ——Guindon 規(guī)約是“系統(tǒng)應(yīng)該做什么”的書面定義。定義一個系統(tǒng)有助于我們更好地理解它。在構(gòu)建系統(tǒng)之前最好先理解該系統(tǒng),因此在實現(xiàn)之前先編寫系統(tǒng)規(guī)約是個好主意。 本書講述了系統(tǒng)的行為屬性,也可稱之為功能屬性或邏輯屬性。這些屬性定義系統(tǒng)應(yīng)該做什么。當(dāng)然系統(tǒng)還有其他我們這里不考慮的重要屬性,比如性能屬性。最差情況下的性能通?梢员硎緸樾袨閷傩裕诘9章我們講述了如何定義系統(tǒng)在一定時間內(nèi)的行為,不過,本書暫時不考慮如何定義平均性能。 我們編寫規(guī)約的基本工具是數(shù)學(xué)。數(shù)學(xué)是一門嚴(yán)謹(jǐn)?shù)恼Z言,比自然語言(例如英語或中文)更為精準(zhǔn)。在工程實踐中,不精準(zhǔn)就很容易出錯,因此科學(xué)和工程學(xué)通常采用數(shù)學(xué)作為基本語言。 本書用到的數(shù)學(xué)語言會比你一直使用的數(shù)學(xué)語言更形式化一些。相對于形式化數(shù)學(xué),大多數(shù)數(shù)學(xué)家和科學(xué)家在寫作中使用的數(shù)學(xué)表達(dá)方式并不十分精準(zhǔn),應(yīng)用于小范圍還勉強可以,應(yīng)用于大范圍則不佳。在非形式化數(shù)學(xué)語言中,每個方程都是一個精確的斷言,但你必須閱讀方程前后的解釋性文字才能理解方程之間的關(guān)系以及定理的確切含義。邏輯學(xué)家已經(jīng)研究出了消除這些解釋性文字并使數(shù)學(xué)更形式化、更精準(zhǔn)完備的方法。 大多數(shù)數(shù)學(xué)家和科學(xué)家可能認(rèn)為形式化數(shù)學(xué)又長又乏味,這是不對的,普通數(shù)學(xué)也可以用一種精準(zhǔn)完備的形式化語言來簡潔表達(dá)。例如在第11章關(guān)于微分方程的Diffeential-Equations模塊中,只需要用20多行就可以定義任意微分方程的解。不過很少有規(guī)約需要用到如此深奧的數(shù)學(xué)知識,大多數(shù)時候只需要簡單應(yīng)用一些基礎(chǔ)數(shù)學(xué)概念即可。 為何是TLA+ 我們通過描述在執(zhí)行過程中可能會發(fā)生的行為來定義系統(tǒng)。1977年,AmirPnueli引入了時態(tài)邏輯(temporallogic)來描述系統(tǒng)行為。從理論上講,系統(tǒng)可以用單個時態(tài)邏輯公式表示,但在實際運用上卻有些問題:它雖然能很理想地描述系統(tǒng)的某些屬性,但在描述其他屬性上卻不太方便。因此,我們通常將它與更傳統(tǒng)的系統(tǒng)表示方式結(jié)合在一起來定義系統(tǒng)。 也可稱為時序邏輯或時間邏輯,在本書中為了術(shù)語統(tǒng)一,均譯為時態(tài)邏輯!g者注 在20世紀(jì)80年代后期,我發(fā)明了TLA,即基于動作(Action)的時態(tài)邏輯——這是Pnueli初始邏輯的簡單變體。TLA使得用單個公式表示系統(tǒng)變得切實可行。TLA規(guī)約的大部分由普通的、非時態(tài)邏輯的數(shù)學(xué)公式組成,時態(tài)邏輯僅在其擅長描述的屬性中引入并發(fā)揮作用。TLA還給出了一種很友好的系統(tǒng)推理模式,這種模式被稱為斷言式推理(assertionalreasoning),其在實踐中被證明是最有效的。不過,本書僅涉及規(guī)約本身,較少引入數(shù)學(xué)證明。 TLA+版本2對證明做了大量改進(jìn),參見19.7節(jié)。——譯者注 時態(tài)邏輯使用了一套基本邏輯來表示普通數(shù)學(xué),還有許多其他方法也可以使普通數(shù)學(xué)形式化。大多數(shù)計算機科學(xué)家都喜歡使用與他們熟悉的編程語言近似的語言,相反,我選擇了大多數(shù)數(shù)學(xué)家更喜歡的方法,邏輯學(xué)家將其稱為一階邏輯和集合論。 TLA為描述系統(tǒng)提供了數(shù)學(xué)基礎(chǔ)。要編寫規(guī)約,我們需要在此基礎(chǔ)上構(gòu)建完整的語言體系。我最初認(rèn)為該語言應(yīng)該是某種抽象的編程語言,其語義將基于TLA。一開始我不知道用哪種編程語言結(jié)構(gòu)最好,于是決定直接用TLA編寫規(guī)約,計劃在需要時再引入編程語言。令我驚訝的是,到后來我發(fā)現(xiàn)不需要了,我所需的就是一種編寫數(shù)學(xué)公式的健壯語言。 盡管數(shù)學(xué)家已經(jīng)發(fā)展了編寫公式的科學(xué),但他們還沒有將其轉(zhuǎn)化為工程學(xué)科,他們?yōu)樾∫?guī)模的數(shù)學(xué)模型開發(fā)了符號語言,但對于大型應(yīng)用還沒有好的方法,因為真實系統(tǒng)的規(guī)約可能長達(dá)數(shù)十頁甚至數(shù)百頁。數(shù)學(xué)家知道如何編寫20行的公式,但對長達(dá)20頁的公式卻束手無策。因此,我不得不在語言中引入書寫長公式的符號方法,這些方法的形成得益于我從編程語言中學(xué)到的將大型規(guī)約模塊化的思路。 我將這種語言稱為TLA+。在編寫不同離散系統(tǒng)的規(guī)約時,我不斷對TLA+進(jìn)行提煉和改進(jìn),直到后來TLA+趨于穩(wěn)定。我發(fā)現(xiàn)TLA+可以很好地定義從應(yīng)用程序接口(API)到分布式系統(tǒng)的各種系統(tǒng)。它可以用來為幾乎任何類型的離散系統(tǒng)編寫精準(zhǔn)的形式化定義,尤其適合描述異步系統(tǒng),即組件運行不嚴(yán)格遵循鎖步操作(lock-step)的系統(tǒng)。 關(guān)于本書 本書的第一部分包括第1~7章,是本書的核心,需要從頭到尾閱讀。它描述了如何定義稱為安全屬性的一類屬