《軟件架構理論與實踐》 —3.4 其他建模方法
3.4 其他建模方法
3.4.1 文本語言建模方法
文本語言建模即通過文本文件描繪架構[69-70]。文本文件通常需要符合某些特殊的句法格式,就像.c和.java文件分別需要符合C語言和Java語言規范一樣。(當然,架構決策也可以用自然語言進行文檔化,這種情況下建模需要受到該語言的語法和拼寫規則等的限制。)
針對只由一個組件—Web瀏覽器構成的Web客戶機,圖3-25和圖3-26顯示了兩種對其架構進行描述的方法。其中圖3-25使用了xADL本身的XML文本建模,圖3-26使用了xADLite文本建模。這是一個應用不同文本建模方法來描述同一模型的例子。使用XML文本建模方法具有易讀性和易操作性,并且可以用XML工具進行句法驗證。而xADLite文本建模方法在描述同一模型時,在閱讀性方面做了優化。
圖3-25 XML文本建模方法
使用文本語言建模有如下優勢:它可以在單個文檔中描述整體架構,并且存在眾多文本編輯器以方便用戶與文本文檔的交互。由于對結構化文本的語法分析、處理和編輯等相關技術的研究已經持續數年,當使用一種元語言(如BNF(Backus-Naur Form))來定義文本的句法時,許多工具能夠生成程序庫來對使用該語言的文本文檔進行句法分析和檢查。許多編輯器附帶額外的開發支持工具,如當用戶輸入時可實現自動補全或語法檢查等。
圖3-26 xADLite文本建模方法
然而文本語言建模也有如下問題:文本符號可以很好地描述線性和層次結構(例如在C語言和Java語言中,線性順序可用從上至下的行表示,層次結構可用括號和縮進表示),然而用文本語言建模方法表示類圖結構不易理解。另外,文本編輯器通常限于顯示連續滿屏的文本,很難以其他方式組織文本(也有一些環境允許代碼折疊,使得用戶可以將某個文本塊限制在一行之內)。
文本語言建模方法不僅要能夠描繪模型,也要方便用戶與模型之間的互動,如編輯、修改等,一般來說可使用一個普通的文本編輯器或字處理器,也可使用專門的工具或平臺。為了使文本更易閱讀和理解,原始的方法是使用分隔符、空白符和換行符等使得程序結構更加突出。另外還有一些裝飾方法,如可以使用不同的字形、字體和顏色(例如,關鍵字用粗體表示,評論用斜體表示,不同字體大小表示不同的嵌套等級等),還可以使用表格或提綱。文本語言建模方法中一些先進的機制有語法高亮顯示、文本的靜態檢查、自動補全、代碼折疊等。
1.語法高亮顯示
語法高亮顯示是文本編輯器在顯示文本尤其是顯示源代碼時的重要特性之一,它根據不同類型顯示不同的顏色和字體[69]。這一特性使得編寫結構化語言如程序語言或標記語言時,其結構錯誤和語法錯誤能夠明顯區分開來。高亮不會影響文本本身的含義,它僅僅方便相關人員的閱讀和編輯。
2. 文本的靜態檢查
靜態程序分析是指在不實際執行程序的情況下對計算機軟件進行分析(在執行程序過程中的分析被稱為動態分析)[70]。大多數情況下是通過源代碼進行分析,然而在某些情況下也會根據目標代碼進行分析。該術語通常指自動化工具的分析,人工分析被稱為程序理解或代碼審查。
3. 自動補全
許多工具,如Web瀏覽器、電子郵件程序、搜索引擎接口、源代碼編輯器、數據庫查詢工具、文字處理軟件、命令行解釋器等,都提供自動補全這一功能。一般的文本編輯器也逐漸集成這一功能。自動補全需要程序在用戶沒有完全輸入時已能夠預測用戶想要輸入的單詞或短語。當可以根據輸入記錄來預測當前輸入的詞語時,這一特性是非常有效的,如只有有限個可用的或常用的短語(常出現在電子郵件程序、Web瀏覽器或命令行的解釋器等情況中),或輸入的文本是高度結構化并易于預測的語言(例如在源代碼編輯器中)。文本編輯器可根據一種或多種語言的單詞列表進行預測。許多自動補全程序在用戶輸入某個單詞若干次后會自動學習。許多自動補全的程序都能夠在學習新單詞后(如用戶寫了幾次之后),基于個人用戶的學習習慣提出其他建議。自動補全或單詞預測均可加快書寫速度,非常適合使用環境中的人機交互。
4.代碼折疊
代碼折疊是文本編輯器、源代碼編輯器以及集成開發環境(IDE)的一個特殊功能,允許用戶選擇性地隱藏和顯示當前編輯的文件的某些部分。它允許用戶在任意時刻管理大量文本的同時只需要關注那些相關文本。這一特性有利于開發人員管理源代碼文件。區別于文本折疊,代碼折疊還需要遵循相關標記語言或程序語言的句法。
軟件開發 架構設計 軟件
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。