軟體工程理論與實踐 Homework 四 1

2021-10-24 19:32:02 字數 1422 閱讀 8862

先了解一下形式化方法的定義:

,同時通過這些命題來進行推理和驗證。形式化方法的出發點就是數學邏輯方法

形式化方法在系統軟體開發領域也取得了許多成果。這方面最重要的成果之一是compcert編譯器。編譯器顯然是最重要的系統軟體,目前正在執行的絕大多數程式都是編譯器生成的。但是,常用編譯器都沒經過驗證,並不保證目標**與源**語義一致。2023年法國研究者發布了經過驗證的優化編譯器compcert,後不斷增加功能。目前版本能處理ansi c幾乎所有特徵和一些c99擴充,能生成powerpc、arm和x86**,支援64位系統結構、分別編譯和連線,能生成dwarf除錯資訊和語法錯誤的解釋等。compcert基於計算機輔助證明系統coq開發,嚴格證明了目標**與源程式的等價性。x. yang等人的**finding and understanding bugs in c compilers(pldi 2011)報告了他們用6年時間檢查各種在用編譯器(包括vc、gcc等)錯誤的工作,只有當時版本的compcert驗證過的部分沒發現錯誤,其他廣泛使用的編譯器都發現了錯誤。

近年的另一有趣工作是2023年mit學者開發的經過驗證的檔案系統fscq(sosp 2015),可以保證在使用中任何時候系統崩潰,系統重新boot都能正確恢復,不會丟失資料(稱為crash safety)。常規的檔案系統並沒有這種保證。

美國國防部的hacms專案(high-assurancecyber military systems,高可信軍事網路系統)的目標是開發高可信、黑客無法入侵的軍用系統。該項目的乙個成果是乙個無人機控制系統,開發成功後組織白帽黑客攻擊,沒被攻破。該系統的基礎是經過形式化驗證的os核心sel4,在該核心上用isabelle形式化工具開發和驗證整個系統。hacms專案的另一成果是邵中領導開發的經過驗證的支援多核cpu的作業系統核心certikos(osdi』16)。

顯然,上面這些例子中提到的軟體都是非常重要而且比較難完成的。這些工作通過形式化方法來完成,說明形式化方法確實能用於做軟體,而且能做出最高質量的重要軟體

可以了解到,目前軟體形式化開發還處在起步階段,許多問題尚未研究。有人質疑它是否能夠嚴格保證由證明正確的部分構造出的系統仍然正確,即使這些部分是基於不同方法構造出來的。作為與常規方式不同的另一種軟體質量保證手段,形式化方法將怎樣與常規開發方法相互作用?雖然現在關於形式化方法的很多事情都還不清楚。但無論如何,使用形式化方法開發、驗證軟體這方面工作已經取得了實質性進展,並已開始在實際領域發揮作用

形式化方法在軟體工程領域的應用現在雖然還比較少,但是這種形式化開發方法已經逐步地進入了軟體開發的領域。我們也應該及時學習一下這些新的方法,因為有的軟體規範標準提到,其最高端別的質量保證都要求形式化方法,雖然目前有些作為選擇性要求,但只是因為目前運用這種方法撰寫時還缺乏實踐基礎。但是相信這種方法的前途不可限量。相信以後我們還可以看到更多運用形式化方法開發、驗證的軟體。

軟體工程理論與實踐 (筆記)

1 待開發系統的應用領域,即專案的應用範圍。2 使用者的要求。3 軟體開發人員的喜好和能力。4 系統的可移植性要求。5 演算法和資料結構的複雜性。答 對識別符號進行命名時,要注意以下幾點。1 按照識別符號的實際意義命名,使其名稱具有直觀性,能夠體現識別符號的語義。這樣可以幫助開發人員對識別符號進行理...

軟體工程 理論 方法與實踐

第一章 概述 軟體是電腦程式 規程以及計算機系統可能需要的相關文件和資料。軟體一般分為通用和定製軟體。軟體的特性 1 軟體是複雜的 2 軟體是不可見的 3 軟體是不斷變化的 4 大多數軟體是定製的,而不是通過已有的構件組裝的。軟體工程師為了經濟的獲得能夠在實際機器上高效執行的可靠軟體而建立和使用的一...

軟體工程理論方法與實踐

第一章 概述 軟體是人類思維的傑作,並成為人類現代生活的催化劑。今天軟體遍布整個世界,在生物工程 現代通訊 宇宙探索 商務處理 工業控制等方面發揮出巨大的威力,並推動了商業 科學和工程領域的跨越式發展,對整個社會的經濟和文化產生了深遠的影響。軟體工程師為了解決開發成本效益和軟體質量的問題而產生的。軟...