版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
新工科建設(shè)·計(jì)算機(jī)類系列教材
免費(fèi)提供編譯原理學(xué)分:編譯原理簡明教程(第3版)馮秀芳
崔冬華
王會青
主編電子工業(yè)出版社
2024年出版課程教材6目錄第一章概述第二章形式語言理論基礎(chǔ)第三章自動機(jī)理論基礎(chǔ)第四章詞法分析第五章語法分析—自頂向下分析方法第六章語法分析—自底向上分析方法第七章語義分析及中間代碼的生成第八章代碼優(yōu)化第九章目標(biāo)代碼的生成第十章符號表和出錯處理第十一章
面向?qū)ο笳Z言的編譯第十二章
并行編譯技術(shù)第十三章軟件構(gòu)造學(xué)習(xí)目標(biāo)13軟件構(gòu)造重點(diǎn):模塊化軟件構(gòu)造,面向?qū)ο筌浖?gòu)難點(diǎn):編譯與軟件構(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è)計(jì)以及相應(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è)計(jì)和構(gòu)造API(ApplicationProgrammingInterface)是指應(yīng)用程序接口,是一些被預(yù)先定義的接口,或軟件系統(tǒng)的不同組成部分之間銜接的約定,一些函數(shù)和HTTP接口都屬于API。一個好的API應(yīng)具有如下特點(diǎn):用戶開發(fā)人員易學(xué)習(xí)易閱讀易使用易開發(fā)很少被誤用......13.1.1
API的設(shè)計(jì)和構(gòu)造要設(shè)計(jì)和構(gòu)造優(yōu)秀的API,需要做到以下幾點(diǎn):深入了解需求采用良好的設(shè)計(jì)思路避免極端意見有效的API評審提高API的可測試性保證API的向后兼容保持逐步改善把握API的生命周期一些具體的實(shí)施方案用例驅(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ā)生改變時(shí)改變其行為,通常作為條件、分支語句的代替,用于行為隨狀態(tài)的改變而改變的場景。備忘錄模式
在不破壞封裝的前提下,捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),在需要時(shí)將對象恢復(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í),可以先采用一個基本數(shù)據(jù)類型的數(shù)據(jù)從索引表中查出鍵值,然后再利用這一鍵值查找相應(yīng)的主數(shù)據(jù)。階梯訪問表表中的記錄對不同的數(shù)據(jù)范圍有效,而不適用于不同的數(shù)據(jù)點(diǎn)。13.1.3
基于復(fù)用的構(gòu)造技術(shù)軟件復(fù)用在不同的軟件開發(fā)過程中重復(fù)使用之前軟件產(chǎn)品中相同或相近的軟件或軟件模塊的過程??梢詮?fù)用的軟件產(chǎn)品:代碼(可執(zhí)行代碼、源代碼復(fù)用)、設(shè)計(jì)文件、測試數(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)過檢驗(yàn)的規(guī)范化程序或子程序的集合,如基礎(chǔ)數(shù)學(xué)函數(shù)、字符串處理、輸入/輸出處理及數(shù)據(jù)庫操作、密碼安全等,是最基本、最普通的軟件復(fù)用形式。模式設(shè)計(jì)與框架開發(fā)模式是程序員在設(shè)計(jì)一個軟件或系統(tǒng)時(shí)解決共同問題的最佳實(shí)踐的描述,是一種樣板,可以在很多不同場合解決類似或同樣的問題。在某些情況下,模式本身可能不足以開發(fā)一個完整的設(shè)計(jì),還需要為設(shè)計(jì)工作提供相關(guān)的架構(gòu)基礎(chǔ)設(shè)施,即框架?;A(chǔ)設(shè)施框架中間件框架:Tomcat、Apache等應(yīng)用框架:Android應(yīng)用框架和Web應(yīng)用框架Struts等13.2模塊化軟件構(gòu)造13.2.1模塊化設(shè)計(jì)理論模塊化設(shè)計(jì)是指在對一定范圍內(nèi)的不同功能或相同功能不同性能、不同規(guī)格的產(chǎn)品進(jìn)行功能分析的基礎(chǔ)上,劃分并設(shè)計(jì)出一系列功能模塊,通過模塊的選擇和組合構(gòu)成不同的產(chǎn)品,以滿足市場的不同需求的設(shè)計(jì)方法。模塊的獨(dú)立程度可以從兩個方面來進(jìn)行度量——內(nèi)聚性和耦合性。13.2模塊化軟件構(gòu)造偶然內(nèi)聚邏輯內(nèi)聚時(shí)間內(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è)計(jì)相應(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ī)制。有窮性
確切性
輸入項(xiàng)
輸出項(xiàng)
可行性
一種數(shù)據(jù)結(jié)構(gòu)對應(yīng)一種算法:計(jì)算樹高度的算法只對樹結(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ī)程序在正式使用前進(jìn)行檢測,以確保該程序能按預(yù)定的方式正確地運(yùn)行。軟件調(diào)試是指當(dāng)編寫的源程序在編譯過程中發(fā)現(xiàn)了語法錯誤、無法通過編譯或者測試出現(xiàn)錯誤后,開發(fā)人員要發(fā)現(xiàn)并找出可能出錯的語句并改正的過程。13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.1抽象與封裝抽象是指從眾多的事物中抽取出共同的、本質(zhì)的特征,舍棄其非本質(zhì)的特征,是共同特征的集合形式。封裝是指將對象運(yùn)行所需的資源(數(shù)據(jù)和方法)封裝在程序?qū)ο笾校梢钥闯墒且粋€保護(hù)屏障,必須通過嚴(yán)格的接口控制來實(shí)現(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è)計(jì)面向?qū)ο笤O(shè)計(jì)是指運(yùn)用面向?qū)ο蟮姆椒ㄟM(jìn)行系統(tǒng)設(shè)計(jì),其基本出發(fā)點(diǎn)是盡可能地按照人類認(rèn)識世界的方法和思維方式來分析和解決問題。對象是人們要進(jìn)行研究的任何事物,它不僅能表示看得見、摸得著的實(shí)物、在特定時(shí)間所發(fā)生的事、人或組織所起的作用,還能表示抽象的規(guī)則、計(jì)劃或性能說明。類是指具有相同或相似性質(zhì)對象的抽象。13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.2面向?qū)ο蟮脑O(shè)計(jì)類之間的關(guān)系繼承聚集和組合依賴關(guān)聯(lián)實(shí)現(xiàn)13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.2面向?qū)ο蟮脑O(shè)計(jì)面向?qū)ο蟮奶卣鲗ο笪ㄒ恍?、分類性、繼承性、多態(tài)性面向?qū)ο笤O(shè)計(jì)的基本原則單一職責(zé)原則開放封閉原則迪米特法則接口隔離原則依賴倒置原則組合/聚合復(fù)用原則里氏替換原則13.3面向?qū)ο蟮能浖?gòu)造技術(shù)13.3.2面向?qū)ο蟮脑O(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)符號統(tǒng)一建模語言(UnifiedModelingLanguage,UML)是一種為面向?qū)ο笙到y(tǒng)進(jìn)行說明、可視化和編制文檔的一種標(biāo)準(zhǔn)語言,它獨(dú)立于任何具體程序設(shè)計(jì)語言。需求分析階段:描述用戶的需求。系統(tǒng)分析階段:主要關(guān)心問題域中的主要概念,如對象、類以及它們之間的關(guān)系等,需要建立系統(tǒng)的靜態(tài)模型,可用類圖來描述。系統(tǒng)設(shè)計(jì)階段:為實(shí)現(xiàn)階段提供了更詳細(xì)的設(shè)計(jì)說明。編碼階段:把來自設(shè)計(jì)階段的類轉(zhuǎn)換成某種面向?qū)ο蟪绦蛟O(shè)計(jì)語言實(shí)現(xiàn)的代碼。測試階段:可使用類圖進(jìn)行單元測試,使用構(gòu)件圖、協(xié)作圖進(jìn)行集成測試,使用用例圖進(jìn)行確認(rèn)測試,以驗(yàn)證測試結(jié)果是否滿足用戶的需求。13.3面向?qū)ο蟮能浖?gòu)造技術(shù)12.3.3測試和調(diào)試的基本技術(shù)在面向?qū)ο蟮膯卧獪y試中不僅要發(fā)現(xiàn)類的所有操作中存在的問題,還要考查一個類與其他的類協(xié)同工作時(shí)可能出現(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年長租公寓物業(yè)租賃居間服務(wù)條款3篇
- 通風(fēng)除塵凈化課程設(shè)計(jì)
- 2025年雨傘租賃與廣告投放綜合服務(wù)合同3篇
- 2025年面粉產(chǎn)品包裝設(shè)計(jì)與印刷合同4篇
- 年度防霧涂料競爭策略分析報(bào)告
- 年度地震專用儀器戰(zhàn)略市場規(guī)劃報(bào)告
- 年度重組水蛭素單克隆抗體戰(zhàn)略市場規(guī)劃報(bào)告
- 硬件課程設(shè)計(jì)哪個簡單
- 植筋的施工方案
- 2025年度預(yù)制混凝土承臺基礎(chǔ)工程采購合同4篇
- 鋼筋桁架樓承板施工方案
- DL-T5434-2021電力建設(shè)工程監(jiān)理規(guī)范
- 2024年上海核工程研究設(shè)計(jì)院股份有限公司招聘筆試沖刺題(帶答案解析)
- 眼的解剖結(jié)構(gòu)與生理功能課件
- 2024年銀行考試-興業(yè)銀行筆試參考題庫含答案
- 泵站運(yùn)行管理現(xiàn)狀改善措施
- 2024屆武漢市部分學(xué)校中考一模數(shù)學(xué)試題含解析
- SYT 0447-2014《 埋地鋼制管道環(huán)氧煤瀝青防腐層技術(shù)標(biāo)準(zhǔn)》
- 浙教版七年級下冊科學(xué)全冊課件
- 弧度制及弧度制與角度制的換算
- 瓦楞紙箱計(jì)算公式測量方法
評論
0/150
提交評論