編譯原理簡明教程(第3版)-課件 第13章 軟件構(gòu)造_第1頁
編譯原理簡明教程(第3版)-課件 第13章 軟件構(gòu)造_第2頁
編譯原理簡明教程(第3版)-課件 第13章 軟件構(gòu)造_第3頁
編譯原理簡明教程(第3版)-課件 第13章 軟件構(gòu)造_第4頁
編譯原理簡明教程(第3版)-課件 第13章 軟件構(gòu)造_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

新工科建設(shè)·計算機(jī)類系列教材

免費提供編譯原理學(xué)分:編譯原理簡明教程(第3版)馮秀芳

崔冬華

王會青

主編電子工業(yè)出版社

2024年出版課程教材6目錄第一章概述第二章形式語言理論基礎(chǔ)第三章自動機(jī)理論基礎(chǔ)第四章詞法分析第五章語法分析—自頂向下分析方法第六章語法分析—自底向上分析方法第七章語義分析及中間代碼的生成第八章代碼優(yōu)化第九章目標(biāo)代碼的生成第十章符號表和出錯處理第十一章

面向?qū)ο笳Z言的編譯第十二章

并行編譯技術(shù)第十三章軟件構(gòu)造學(xué)習(xí)目標(biāo)13軟件構(gòu)造重點:模塊化軟件構(gòu)造,面向?qū)ο筌浖?gòu)難點:編譯與軟件構(gòu)造的聯(lián)系了解經(jīng)典的軟件構(gòu)造技術(shù)理解模塊化構(gòu)造理論、數(shù)據(jù)結(jié)構(gòu)算法、調(diào)試和測試程序與編譯系統(tǒng)的內(nèi)在聯(lián)系理解面向?qū)ο蟮能浖?gòu)造技術(shù),掌握抽象與封裝了解面向?qū)ο蟮脑O(shè)計以及相應(yīng)的測試、調(diào)試技術(shù)

目錄13.1軟件構(gòu)造技術(shù)13.2模塊化軟件構(gòu)造13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.1軟件構(gòu)造技術(shù)13.1.1

API的設(shè)計和構(gòu)造API(ApplicationProgrammingInterface)是指應(yīng)用程序接口,是一些被預(yù)先定義的接口,或軟件系統(tǒng)的不同組成部分之間銜接的約定,一些函數(shù)和HTTP接口都屬于API。一個好的API應(yīng)具有如下特點:用戶開發(fā)人員易學(xué)習(xí)易閱讀易使用易開發(fā)很少被誤用......13.1.1

API的設(shè)計和構(gòu)造要設(shè)計和構(gòu)造優(yōu)秀的API,需要做到以下幾點:深入了解需求采用良好的設(shè)計思路避免極端意見有效的API評審提高API的可測試性保證API的向后兼容保持逐步改善把握API的生命周期一些具體的實施方案用例驅(qū)動一致性簡單明了API盡可能少

支持持續(xù)改進(jìn)13.1.2

基于狀態(tài)和表驅(qū)動的構(gòu)造技術(shù)基于狀態(tài)的構(gòu)造技術(shù)基于自動機(jī)的編程

將程序看作一個有限狀態(tài)自動機(jī),側(cè)重于對“狀態(tài)”及“狀態(tài)轉(zhuǎn)換”的抽象和編程。狀態(tài)模式

狀態(tài)模式允許對象在內(nèi)部狀態(tài)發(fā)生改變時改變其行為,通常作為條件、分支語句的代替,用于行為隨狀態(tài)的改變而改變的場景。備忘錄模式

在不破壞封裝的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),在需要時將對象恢復(fù)到原先保存的狀態(tài),屬于行為型模式。13.1.2

基于狀態(tài)和表驅(qū)動的構(gòu)造技術(shù)基于表驅(qū)動的構(gòu)造技術(shù)將代碼中復(fù)雜的if-else和switch-case邏輯語句從代碼中分離出來,通過“查表”的方式完成選擇,從而提高代碼的可維護(hù)性。構(gòu)造技術(shù)核心思想直接訪問表通過訪問數(shù)組下標(biāo)的方式,在表中獲取需要的數(shù)據(jù)信息,它取代了更復(fù)雜的邏輯控制結(jié)構(gòu),無需經(jīng)過任何復(fù)雜的步驟就可以在表中找到所需信息。索引訪問表采用索引訪問表時,可以先采用一個基本數(shù)據(jù)類型的數(shù)據(jù)從索引表中查出鍵值,然后再利用這一鍵值查找相應(yīng)的主數(shù)據(jù)。階梯訪問表表中的記錄對不同的數(shù)據(jù)范圍有效,而不適用于不同的數(shù)據(jù)點。13.1.3

基于復(fù)用的構(gòu)造技術(shù)軟件復(fù)用在不同的軟件開發(fā)過程中重復(fù)使用之前軟件產(chǎn)品中相同或相近的軟件或軟件模塊的過程??梢詮?fù)用的軟件產(chǎn)品:代碼(可執(zhí)行代碼、源代碼復(fù)用)、設(shè)計文件、測試數(shù)據(jù)和需求規(guī)格書等。基于復(fù)用的軟件開發(fā)改善了傳統(tǒng)的軟件開發(fā)過程和技術(shù),但仍要把用戶需求轉(zhuǎn)換為需求規(guī)格說明書,不同的是要按照可復(fù)用構(gòu)件及當(dāng)前開發(fā)任務(wù)中的用戶需求修改說明書,需明確:必須有可復(fù)用的軟構(gòu)件;被復(fù)用的軟構(gòu)件必須是有用的;相關(guān)人員需要明確如何使用被復(fù)用的軟構(gòu)件。13.1.3

基于復(fù)用的構(gòu)造技術(shù)程序庫一些經(jīng)常使用的、經(jīng)過檢驗的規(guī)范化程序或子程序的集合,如基礎(chǔ)數(shù)學(xué)函數(shù)、字符串處理、輸入/輸出處理及數(shù)據(jù)庫操作、密碼安全等,是最基本、最普通的軟件復(fù)用形式。模式設(shè)計與框架開發(fā)模式是程序員在設(shè)計一個軟件或系統(tǒng)時解決共同問題的最佳實踐的描述,是一種樣板,可以在很多不同場合解決類似或同樣的問題。在某些情況下,模式本身可能不足以開發(fā)一個完整的設(shè)計,還需要為設(shè)計工作提供相關(guān)的架構(gòu)基礎(chǔ)設(shè)施,即框架。基礎(chǔ)設(shè)施框架中間件框架:Tomcat、Apache等應(yīng)用框架:Android應(yīng)用框架和Web應(yīng)用框架Struts等13.2模塊化軟件構(gòu)造13.2.1模塊化設(shè)計理論模塊化設(shè)計是指在對一定范圍內(nèi)的不同功能或相同功能不同性能、不同規(guī)格的產(chǎn)品進(jìn)行功能分析的基礎(chǔ)上,劃分并設(shè)計出一系列功能模塊,通過模塊的選擇和組合構(gòu)成不同的產(chǎn)品,以滿足市場的不同需求的設(shè)計方法。模塊的獨立程度可以從兩個方面來進(jìn)行度量——內(nèi)聚性和耦合性。13.2模塊化軟件構(gòu)造偶然內(nèi)聚邏輯內(nèi)聚時間內(nèi)聚過程內(nèi)聚通信內(nèi)聚外部耦合控制耦合標(biāo)記耦合數(shù)據(jù)耦合無直接耦合內(nèi)聚性耦合性盡量使用順序內(nèi)聚功能內(nèi)聚低內(nèi)聚中內(nèi)聚高內(nèi)聚公共環(huán)境耦合內(nèi)容耦合限制完全不用減少使用13.2模塊化軟件構(gòu)造13.2.2數(shù)據(jù)結(jié)構(gòu)與算法數(shù)據(jù)結(jié)構(gòu)是帶有結(jié)構(gòu)特性的數(shù)據(jù)元素的集合,它研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)和物理結(jié)構(gòu)以及它們之間的相互關(guān)系,并對這種結(jié)構(gòu)定義相適應(yīng)的操作,設(shè)計相應(yīng)的算法,確保經(jīng)過這些操作得到的新數(shù)據(jù)結(jié)構(gòu)仍然保持原有的結(jié)構(gòu)類型。數(shù)據(jù)結(jié)構(gòu)邏輯結(jié)構(gòu):集合、線性結(jié)構(gòu)、樹形結(jié)構(gòu)、圖形結(jié)構(gòu)物理結(jié)構(gòu):順序、鏈接、索引、散列等13.2模塊化軟件構(gòu)造13.2.2數(shù)據(jù)結(jié)構(gòu)與算法算法是指問題解決方案的準(zhǔn)確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機(jī)制。有窮性

確切性

輸入項

輸出項

可行性

一種數(shù)據(jù)結(jié)構(gòu)對應(yīng)一種算法:計算樹高度的算法只對樹結(jié)構(gòu)有意義。一種數(shù)據(jù)結(jié)構(gòu)對應(yīng)多種算法:如果數(shù)據(jù)結(jié)構(gòu)是數(shù)組的形式,那么支持的算法包括排序算法、查找算法、圖類算法等。多種數(shù)據(jù)結(jié)構(gòu)對應(yīng)一種算法:折半查找支持的基本數(shù)據(jù)結(jié)構(gòu)有數(shù)組、二叉樹和鏈表。多種數(shù)據(jù)結(jié)構(gòu)對應(yīng)多種算法:遍歷類、查找類算法及求最大值均支持?jǐn)?shù)組和二叉樹這兩種數(shù)據(jù)結(jié)構(gòu)。13.2模塊化軟件構(gòu)造13.2.3軟件測試與軟件調(diào)試軟件測試是指對一個完成了全部或部分功能的計算機(jī)程序在正式使用前進(jìn)行檢測,以確保該程序能按預(yù)定的方式正確地運行。軟件調(diào)試是指當(dāng)編寫的源程序在編譯過程中發(fā)現(xiàn)了語法錯誤、無法通過編譯或者測試出現(xiàn)錯誤后,開發(fā)人員要發(fā)現(xiàn)并找出可能出錯的語句并改正的過程。13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.1抽象與封裝抽象是指從眾多的事物中抽取出共同的、本質(zhì)的特征,舍棄其非本質(zhì)的特征,是共同特征的集合形式。封裝是指將對象運行所需的資源(數(shù)據(jù)和方法)封裝在程序?qū)ο笾?,可以看成是一個保護(hù)屏障,必須通過嚴(yán)格的接口控制來實現(xiàn)對代碼和數(shù)據(jù)的訪問,防止該對象的代碼和數(shù)據(jù)被外部對象隨機(jī)訪問。抽象數(shù)據(jù)類型是將數(shù)據(jù)對象、數(shù)據(jù)對象之間的關(guān)系和數(shù)據(jù)對象的基本操作封裝在一起的一種表達(dá)方式。

抽象數(shù)據(jù)類型可以用三元組來表示:

抽象數(shù)據(jù)類型

=(D,S,P)D表示數(shù)據(jù)對象,S表示數(shù)據(jù)對象上的關(guān)系,P表示數(shù)據(jù)對象的基本操作。13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.2面向?qū)ο蟮脑O(shè)計面向?qū)ο笤O(shè)計是指運用面向?qū)ο蟮姆椒ㄟM(jìn)行系統(tǒng)設(shè)計,其基本出發(fā)點是盡可能地按照人類認(rèn)識世界的方法和思維方式來分析和解決問題。對象是人們要進(jìn)行研究的任何事物,它不僅能表示看得見、摸得著的實物、在特定時間所發(fā)生的事、人或組織所起的作用,還能表示抽象的規(guī)則、計劃或性能說明。類是指具有相同或相似性質(zhì)對象的抽象。13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.2面向?qū)ο蟮脑O(shè)計類之間的關(guān)系繼承聚集和組合依賴關(guān)聯(lián)實現(xiàn)13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.2面向?qū)ο蟮脑O(shè)計面向?qū)ο蟮奶卣鲗ο笪ㄒ恍?、分類性、繼承性、多態(tài)性面向?qū)ο笤O(shè)計的基本原則單一職責(zé)原則開放封閉原則迪米特法則接口隔離原則依賴倒置原則組合/聚合復(fù)用原則里氏替換原則13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.2面向?qū)ο蟮脑O(shè)計面向?qū)ο蟮脑O(shè)計符號統(tǒng)一建模語言(UnifiedModelingLanguage,UML)是一種為面向?qū)ο笙到y(tǒng)進(jìn)行說明、可視化和編制文檔的一種標(biāo)準(zhǔn)語言,它獨立于任何具體程序設(shè)計語言。需求分析階段:描述用戶的需求。系統(tǒng)分析階段:主要關(guān)心問題域中的主要概念,如對象、類以及它們之間的關(guān)系等,需要建立系統(tǒng)的靜態(tài)模型,可用類圖來描述。系統(tǒng)設(shè)計階段:為實現(xiàn)階段提供了更詳細(xì)的設(shè)計說明。編碼階段:把來自設(shè)計階段的類轉(zhuǎn)換成某種面向?qū)ο蟪绦蛟O(shè)計語言實現(xiàn)的代碼。測試階段:可使用類圖進(jìn)行單元測試,使用構(gòu)件圖、協(xié)作圖進(jìn)行集成測試,使用用例圖進(jìn)行確認(rèn)測試,以驗證測試結(jié)果是否滿足用戶的需求。13.3面向?qū)ο蟮能浖?gòu)造技術(shù)12.3.3測試和調(diào)試的基本技術(shù)在面向?qū)ο蟮膯卧獪y試中不僅要發(fā)現(xiàn)類的所有操作中存在的問題,還要考查一個類與其他的類協(xié)同工作時可能出現(xiàn)的錯誤。面向?qū)ο筌浖募蓽y試需要在整個程序經(jīng)一定的編譯技術(shù)編譯完成后進(jìn)行,面向?qū)ο蟪绦蚓哂袆討B(tài)特性,程序的控制流無法確定,只能對編譯完成的程序做基于黑盒子的集成測試。面向?qū)ο筌浖拇_認(rèn)測試與系統(tǒng)測試忽略類連接的細(xì)節(jié),主要采用傳統(tǒng)的黑盒測試對面向?qū)ο蠓治鲭A段

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論