編譯原理簡(jiǎn)明教程(第3版)-課件 第12、13章 并行編譯技術(shù)、軟件構(gòu)造_第1頁(yè)
編譯原理簡(jiǎn)明教程(第3版)-課件 第12、13章 并行編譯技術(shù)、軟件構(gòu)造_第2頁(yè)
編譯原理簡(jiǎn)明教程(第3版)-課件 第12、13章 并行編譯技術(shù)、軟件構(gòu)造_第3頁(yè)
編譯原理簡(jiǎn)明教程(第3版)-課件 第12、13章 并行編譯技術(shù)、軟件構(gòu)造_第4頁(yè)
編譯原理簡(jiǎn)明教程(第3版)-課件 第12、13章 并行編譯技術(shù)、軟件構(gòu)造_第5頁(yè)
已閱讀5頁(yè),還剩51頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

免費(fèi)提供編譯原理16目錄第一章概述第二章形式語(yǔ)言理論基礎(chǔ)第三章自動(dòng)機(jī)理論基礎(chǔ)第四章詞法分析第五章語(yǔ)法分析—自頂向下分析方法第六章語(yǔ)法分析—自底向上分析方法第七章語(yǔ)義分析及中間代碼的生成第八章代碼優(yōu)化第九章目標(biāo)代碼的生成第十章符號(hào)表和出錯(cuò)處理第十一章

面向?qū)ο笳Z(yǔ)言的編譯第十二章并行編譯技術(shù)第十三章

軟件構(gòu)造22024/11/63學(xué)習(xí)目標(biāo)學(xué)習(xí)編譯程序的概念工作過(guò)程、體系結(jié)構(gòu)語(yǔ)言與編譯程序的關(guān)系了解開(kāi)發(fā)技術(shù)12并行編譯技術(shù)Parallelcompilationtechnology重點(diǎn):編譯程序的概念、編譯程序的結(jié)構(gòu)難點(diǎn):編譯程序的開(kāi)發(fā)技術(shù)

目錄12.1并行計(jì)算機(jī)及其編譯系統(tǒng)簡(jiǎn)介12.2并行程序設(shè)計(jì)模型12.3并行編譯系統(tǒng)的構(gòu)造12.4自動(dòng)并行化技術(shù)研究現(xiàn)狀12.5本章小結(jié)412.1并行計(jì)算機(jī)及其

編譯系統(tǒng)簡(jiǎn)介5為實(shí)現(xiàn)高性能并行計(jì)算,并行系統(tǒng)通常采用兩種形式:

①程序設(shè)計(jì)人員編寫常規(guī)的串行應(yīng)用程序,由編譯器將其轉(zhuǎn)換為并行目標(biāo)代碼執(zhí)行。

②按照某種并行語(yǔ)法規(guī)范編寫相應(yīng)的并行程序,由并行語(yǔ)言編譯器將其編譯轉(zhuǎn)換為并行目標(biāo)代碼執(zhí)行。本章在介紹并行編譯系統(tǒng)之前,先給出并行計(jì)算相關(guān)技術(shù)的一些介紹,然后再針對(duì)不同體系結(jié)構(gòu)的目標(biāo)機(jī)器介紹并行編譯系統(tǒng)實(shí)現(xiàn)的分類及結(jié)構(gòu)。12.1.1并行計(jì)算相關(guān)技術(shù)簡(jiǎn)介6并行性:在同一時(shí)刻或同一時(shí)間間隔內(nèi)完成兩種或兩種以上的任務(wù)。并行性有兩種含義:同時(shí)性和并發(fā)性。并行粒度:衡量軟件進(jìn)程所含計(jì)算量的尺度,一般用細(xì)、中、粗粒度來(lái)描述。時(shí)延:機(jī)器各子系統(tǒng)間通信開(kāi)銷的時(shí)間量度,如存儲(chǔ)時(shí)延和同步時(shí)延。

并行處理技術(shù)通過(guò)處理開(kāi)發(fā)過(guò)程中的并行事件,使并行性達(dá)到較高水平,涉及并行結(jié)構(gòu)、并行軟件和并行算法等多個(gè)方面,這些方面相互聯(lián)系,互為條件,互為保證。12.1.1并行計(jì)算相關(guān)技術(shù)簡(jiǎn)介7并行等級(jí)的分類:?

從計(jì)算機(jī)信息加工的步驟和階段的角度看:

存儲(chǔ)器操作并行

處理器操作步驟并行

處理器操作并行

指令、任務(wù)、作業(yè)并行?從開(kāi)發(fā)程序的大小和并行粒度的角度看:

作業(yè)級(jí)

任務(wù)級(jí)

例行程序或子程序級(jí)

循環(huán)和迭代級(jí)

語(yǔ)句和指令級(jí)粗粒度中粒度細(xì)粒度通信需求與調(diào)度開(kāi)銷并行程度12.1.1并行計(jì)算相關(guān)技術(shù)簡(jiǎn)介8并行處理:并行處理指的是在并行計(jì)算機(jī)上實(shí)現(xiàn)并行計(jì)算。

并行體系結(jié)構(gòu)(基礎(chǔ))并行軟件系統(tǒng)并行程序設(shè)計(jì)向量計(jì)算機(jī)共享存儲(chǔ)器并行計(jì)算機(jī)分布存儲(chǔ)器并行計(jì)算機(jī)并行系統(tǒng)軟件并行應(yīng)用軟件并行體系結(jié)構(gòu)并行系統(tǒng)軟件并行程序設(shè)計(jì)語(yǔ)言并行算法12.1.2并行編譯系統(tǒng)的分類及結(jié)構(gòu)9并行編譯系統(tǒng)的分類:

?不具有自動(dòng)并行化功能的系統(tǒng)

?具有自動(dòng)并行化功能的系統(tǒng)并行編譯系統(tǒng)的結(jié)構(gòu)向量編譯技術(shù)并行編譯技術(shù)

并行運(yùn)行庫(kù)技術(shù)并行編譯技術(shù)程序并行化技術(shù)依賴關(guān)系分析技術(shù)體系結(jié)構(gòu)內(nèi)在特性1012.1.2并行編譯系統(tǒng)的分類及結(jié)構(gòu)并行編譯技術(shù)可按以下兩種方法來(lái)分類:1112.2并行程序設(shè)計(jì)模型

如同匯編程序員必須熟悉機(jī)器指令集一樣,在了解并行體系結(jié)構(gòu)的基礎(chǔ)上才能更好地理解和掌握并行程序設(shè)計(jì)模型以及并行編譯系統(tǒng)。本節(jié)簡(jiǎn)要介紹并行計(jì)算機(jī)體系結(jié)構(gòu)的三種類型以及相應(yīng)并行編譯系統(tǒng)需要解決的問(wèn)題。12.2.1并行體系結(jié)構(gòu)分類及并行程序設(shè)計(jì)

并行計(jì)算機(jī)體系結(jié)構(gòu)大致可分為向量計(jì)算機(jī)、共享存儲(chǔ)器多處理機(jī)以及分布式存儲(chǔ)器并行計(jì)算機(jī)三類。12不同體系結(jié)構(gòu)不同程序并行設(shè)計(jì)方法12.2.2并行程序設(shè)計(jì)模型

并行程序設(shè)計(jì)模型是指在特定計(jì)算機(jī)硬件體系結(jié)構(gòu)上實(shí)現(xiàn)并行算法的方式。131.數(shù)據(jù)并行模型?核心特征:以數(shù)據(jù)為中心,通過(guò)對(duì)數(shù)據(jù)的劃分和并行處理來(lái)解決問(wèn)題。?編程方式:提供全局地址空間,編程者只需指明并行操作和對(duì)象,無(wú)需關(guān)心并行執(zhí)行的具體方式。?適用場(chǎng)景:適用于數(shù)據(jù)并行問(wèn)題,如數(shù)組運(yùn)算。?實(shí)現(xiàn)方式:可以在SIMD(單指令流多數(shù)據(jù)流)計(jì)算模型和SPMD(單程序流多數(shù)據(jù)流)計(jì)算模型上實(shí)現(xiàn)。?優(yōu)勢(shì):編程相對(duì)簡(jiǎn)單,表達(dá)簡(jiǎn)潔。?局限:僅適用于數(shù)據(jù)并行問(wèn)題12.2.2并行程序設(shè)計(jì)模型142.消息傳遞模型?核心特征:用戶必須通過(guò)顯式發(fā)送和接收消息來(lái)實(shí)現(xiàn)處理機(jī)間的數(shù)據(jù)交換。?編程方式:每個(gè)并行實(shí)體有獨(dú)立地址空間,遠(yuǎn)程訪問(wèn)必須通過(guò)顯式消息傳遞實(shí)現(xiàn)。?適用場(chǎng)景:適合開(kāi)發(fā)大粒度的并行性,如分布式內(nèi)存的并行機(jī)。?實(shí)現(xiàn)方式:以消息傳遞庫(kù)的形式實(shí)現(xiàn),用戶使用現(xiàn)有編程語(yǔ)言調(diào)用庫(kù)函數(shù)進(jìn)行消息傳遞。?優(yōu)勢(shì):靈活,可以解決廣泛的問(wèn)題。?局限:增加了編程者的負(fù)擔(dān),編程級(jí)別較低。12.2.2并行程序設(shè)計(jì)模型153.共享存儲(chǔ)模型?核心特征:進(jìn)程通過(guò)讀/寫共享存儲(chǔ)器中的公共變量相互通信。?編程方式:具有單一全局名字空間,數(shù)據(jù)為所有處理機(jī)所共享,進(jìn)程間通信通過(guò)對(duì)全局變量的存取實(shí)現(xiàn)。?適用場(chǎng)景:適合多線程和異步處理。?實(shí)現(xiàn)方式:常用的共享存儲(chǔ)器編程標(biāo)準(zhǔn)包括線程庫(kù)標(biāo)準(zhǔn)和OpenMP標(biāo)準(zhǔn)。?優(yōu)勢(shì):提供了簡(jiǎn)單的編程模式。?局限:可擴(kuò)展性較差,存儲(chǔ)器帶寬可能成為瓶頸。12.2.2并行程序設(shè)計(jì)模型1612.3并行編譯系統(tǒng)的構(gòu)造17源代碼程序分析程序優(yōu)化并行代碼生成12.3.1并行編譯系統(tǒng)的構(gòu)造簡(jiǎn)介1812.3.2程序分析程序分析是并行編譯系統(tǒng)的主要組成部分之一,目的是找出可以在不同節(jié)點(diǎn)上并行執(zhí)行的計(jì)算。程序分析是否深入透徹,直接關(guān)系到并行轉(zhuǎn)換后程序的執(zhí)行效率。19為保持程序語(yǔ)義所絕對(duì)需要的固有次序依賴關(guān)系數(shù)據(jù)依賴關(guān)系控制依賴關(guān)系數(shù)據(jù)依賴關(guān)系控制依賴關(guān)系12.3.2程序分析20依賴關(guān)系分析:分析計(jì)算程序中所有語(yǔ)句之間的依賴關(guān)系依賴關(guān)系的分析問(wèn)題線性丟番圖方程的求解問(wèn)題12.3.2程序分析21?

精確測(cè)試算法:實(shí)際求出方程組的整數(shù)通解,并檢查是否有滿足所有約束條件的解。適用于依賴關(guān)系存在時(shí),可以給出相關(guān)迭代對(duì)集合和依賴距離向量,但不能處理復(fù)雜情況。?近似測(cè)試算法:檢查方程組是否有整數(shù)解,然后測(cè)試方程組滿足約束條件的實(shí)數(shù)解存在的某些必要條件。如果必要條件不滿足,則不存在依賴關(guān)系;否則,假設(shè)依賴關(guān)系存在。這種方法是保守的,可以保證程序的正確性,但可能因保守假設(shè)而損失一些并行性。依賴關(guān)系的測(cè)試:構(gòu)造依賴距離向量或依賴方向向量的全集。此全集可以表達(dá)對(duì)同一數(shù)組變量任意下標(biāo)引用對(duì)之間可能存在的依賴關(guān)系。12.3.3程序優(yōu)化程序優(yōu)化是指對(duì)解決同一問(wèn)題的幾個(gè)不同的程序進(jìn)行比較、修改、調(diào)整或重新編寫程序,把一般程序變換為語(yǔ)句最少、占用內(nèi)存最少、處理速度最快、外部設(shè)備分時(shí)使用效率最高的最優(yōu)程序。22?

代碼向量化:把標(biāo)量程序由一種可向量化循環(huán)完成的操作變換成向量操作。?

代碼并行化:將串行程序的可并行化部分展開(kāi)成多線程,以同時(shí)供多臺(tái)處理機(jī)并行執(zhí)行,其目的是減少總的執(zhí)行時(shí)間。12.3.4并行代碼生成23

并行代碼生成:將優(yōu)化后的中間形式的代碼轉(zhuǎn)換成可執(zhí)行的具體的機(jī)器目標(biāo)代碼。并行語(yǔ)義的識(shí)別和處理向量化編譯器的并行代碼生成

?

向量循環(huán)的組織:并行編譯器自動(dòng)尋找并向量化源程序中的循環(huán)。

?

寄存器分配:減少不必要的訪存操作,加快程序執(zhí)行速度。

?

流水線調(diào)度:重排代碼序列,優(yōu)化向量操作指令,提高功能部件的執(zhí)行效率。

12.3.4并行代碼生成24共享存儲(chǔ)器多處理機(jī)的并行代碼生成

?預(yù)編譯器:處理并行語(yǔ)言、并行制導(dǎo)命令的語(yǔ)法語(yǔ)義分析,實(shí)現(xiàn)并行制導(dǎo)命令功能的程序改寫和并行庫(kù)調(diào)用。

?棧式存儲(chǔ)分配:實(shí)現(xiàn)程序副本的可再入,每個(gè)任務(wù)調(diào)用時(shí)獲得自己的私有變量空間。分布存儲(chǔ)器大規(guī)模并行機(jī)的并行代碼生成

?

數(shù)據(jù)分布:提高數(shù)據(jù)局部性和并行性,減少通訊開(kāi)銷。

?

任務(wù)劃分:將源程序任務(wù)劃分為可并行的子任務(wù),并分配到多個(gè)處理機(jī)上執(zhí)行。

?

同步與通信:處理并行任務(wù)之間的數(shù)據(jù)交換,包括確定同步與通信點(diǎn)、插入并行庫(kù)子程序調(diào)用以及通信優(yōu)化

12.4自動(dòng)并行化技術(shù)研究現(xiàn)狀

自動(dòng)并行編譯系統(tǒng)研究的難點(diǎn)主要有以下幾個(gè)方面:25①程序并行性的挖掘②合理的數(shù)據(jù)分布③通信優(yōu)化

本節(jié)介紹幾個(gè)典型的自動(dòng)并行化系統(tǒng)以及自動(dòng)并行化編譯的近期發(fā)展。12.4.1比較典型的自動(dòng)并行化系統(tǒng)簡(jiǎn)介261.VAST系統(tǒng)-循環(huán)以外部分的檢查-循環(huán)并行部分和循環(huán)以外并行部分向大粒度并行塊的合并-微任務(wù)偽指令的插入2.KAP系統(tǒng)-循環(huán)結(jié)構(gòu)變換-增大并行粒度-降低同步頻度和過(guò)程的分支-過(guò)程的在線展開(kāi)-并行循環(huán)和循環(huán)以外并行部分的檢查-微任務(wù)偽指令的插入3.PFC(ParallelFortranConverter)

將Fortran77代碼變換成Fortran90代碼,開(kāi)發(fā)循環(huán)級(jí)的并行性4.FORGE90系統(tǒng)

根據(jù)用戶的提示進(jìn)行并行化作業(yè),用戶根據(jù)系統(tǒng)分析所得到的信息進(jìn)行理解和判斷5.CAPTools系統(tǒng)

將串行Fortran77程序并行化,產(chǎn)生插入了通信調(diào)用的并行程序12.4.1比較典型的自動(dòng)并行化系統(tǒng)簡(jiǎn)介276.SUIF系統(tǒng)

自動(dòng)生成并行源程序代碼,涵蓋相關(guān)性分析、指針?lè)治觥⒎謮K、預(yù)取、程序變換、過(guò)程間分析等技術(shù)7.FPT(Fortran-PTranslator)

將Fortran-P程序轉(zhuǎn)換為MPP系統(tǒng)上高效運(yùn)行的并行程序8.PTRAN系統(tǒng)

自動(dòng)并行化串行Fortran程序,開(kāi)發(fā)循環(huán)級(jí)和任務(wù)級(jí)并行性9.AFT系統(tǒng)

自動(dòng)分析標(biāo)準(zhǔn)Fortran程序,改寫為并行向量程序10.KD-PASTE系統(tǒng)

提高YH仿真系列機(jī)的運(yùn)行效率,產(chǎn)生兩種并行代碼形式12.4.1比較典型的自動(dòng)并行化系統(tǒng)簡(jiǎn)介28并行化系統(tǒng)挑戰(zhàn)?早期系統(tǒng):如KAP和VAST,面臨過(guò)程調(diào)用語(yǔ)句和符號(hào)量的問(wèn)題,限制了并行化能力。?后期系統(tǒng):如AFT和SUIF,采用新技術(shù)提高了并行化能力,但仍有程序的自動(dòng)并行化效果與手工并行化有差距。?交互式系統(tǒng):如FORGE90和CAPTools,允許用戶參與并行化過(guò)程,提高了并行化效果,但自動(dòng)并行化能力有限。2912.4.2自動(dòng)并行化編譯系統(tǒng)發(fā)展簡(jiǎn)介1.

向量并行?

向量運(yùn)算硬件最早出現(xiàn)在向量機(jī),現(xiàn)在大部分處理器都已集成SIMD擴(kuò)展。?

SIMD擴(kuò)展指令能夠?qū)崿F(xiàn)向量并行,是目前程序并行的重要方式之一。2.核級(jí)并行?

核級(jí)并行指在同一結(jié)點(diǎn)內(nèi)共享存儲(chǔ)系統(tǒng)的多個(gè)計(jì)算單元之間的并行。?

OpenMP是實(shí)現(xiàn)核級(jí)并行的主要并行編程模型和工業(yè)標(biāo)準(zhǔn)。3.結(jié)點(diǎn)級(jí)并行?

結(jié)點(diǎn)級(jí)并行的主要特征是計(jì)算節(jié)點(diǎn)之間不共享存儲(chǔ)系統(tǒng),必須通過(guò)互聯(lián)網(wǎng)絡(luò)進(jìn)行通信和數(shù)據(jù)傳輸。?

分布式存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)結(jié)點(diǎn)級(jí)并行性的自動(dòng)發(fā)掘時(shí),情況變得更為復(fù)雜。4.異構(gòu)并行?

異構(gòu)并行主要出現(xiàn)在結(jié)點(diǎn)內(nèi),指令集不同、存儲(chǔ)空間相互獨(dú)立。?

異構(gòu)編程模型快速發(fā)展,出現(xiàn)了大量關(guān)于異構(gòu)并行編程模型的研究,如OpenACC、OpenMP4.x、CUDA、OpenCL等。30總結(jié)

本章首先從并行計(jì)算相關(guān)技術(shù)、并行編譯系統(tǒng)的分類和結(jié)構(gòu)以及并行編譯系統(tǒng)做了簡(jiǎn)單介紹,然后從并行程序設(shè)計(jì)模型和并行編譯系統(tǒng)的構(gòu)造兩個(gè)方面分別介紹并行編譯技術(shù),最后簡(jiǎn)單介紹自動(dòng)并行化技術(shù)的研究現(xiàn)狀及未來(lái)發(fā)展。THANKS31THANKS新工科建設(shè)·計(jì)算機(jī)類系列教材

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

崔冬華

王會(huì)青

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

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

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

并行編譯技術(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)試和測(cè)試程序與編譯系統(tǒng)的內(nèi)在聯(lián)系理解面向?qū)ο蟮能浖?gòu)造技術(shù),掌握抽象與封裝了解面向?qū)ο蟮脑O(shè)計(jì)以及相應(yīng)的測(cè)試、調(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。一個(gè)好的API應(yīng)具有如下特點(diǎn):用戶開(kāi)發(fā)人員易學(xué)習(xí)易閱讀易使用易開(kāi)發(fā)很少被誤用......13.1.1

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

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

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

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

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

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

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

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

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

確切性

輸入項(xiàng)

輸出項(xiàng)

可行性

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

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

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

=(D,S,P)D表示數(shù)據(jù)對(duì)象,S表示數(shù)據(jù)對(duì)象上的關(guān)系,P表示數(shù)據(jù)對(duì)象的基本操作。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)識(shí)世界的方法和思維方式來(lái)分析和解決問(wèn)題。對(duì)象是人們要進(jìn)行研究的任何事物,它不僅能表示看得見(jiàn)、摸得著的實(shí)物、在特定時(shí)間所發(fā)生的事、人或組織所起的作用,還能表示抽象的規(guī)則、計(jì)劃或性能說(shuō)明。類是指具有相同或相似性質(zhì)對(duì)象的抽象。13.3

溫馨提示

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

評(píng)論

0/150

提交評(píng)論