版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2023/10/23國防科技大學計算機學院1第八章軟件設計基礎
軟件設計是軟件工程的重要階段。軟件設計過程是對程序結構、數據結構和過程細節(jié)逐步求精、復審并編制文檔的過程。經過軟件工程師們多年的努力形成了一些軟件設計技術、質量評估標準和設計表示法并用于軟件工程實踐。本章討論與軟件設計有關的主要概念,介紹幾個具體的軟件設計方法。2023/10/23國防科技大學計算機學院28.1軟件設計過程軟件開發(fā)階段由設計、編碼和測試三個基本活動組成,其中“設計活動”是獲取高質量、低耗費、易維護軟件最重要的一個環(huán)節(jié)。需求分析階段獲得的需求規(guī)格說明書包括對欲實現系統(tǒng)的信息、功能和行為方面的描述,這是軟件設計的基礎。對此采用任一種軟件設計方法都將產生系統(tǒng)的總體結構設計(architecturaldesign)、系統(tǒng)的數據設計(datadesign)和系統(tǒng)的過程設計(proceduraldesign)(圖8.1)。第八章軟件設計基礎2023/10/23國防科技大學計算機學院3軟件設計過程不同的軟件設計方法會產生不同的設計形式。數據設計把信息描述轉換為實現軟件所要求的數據結構??傮w結構設計旨在確定程序各主要部件之間的關系。過程設計要完成每一部件的過程化描述。根據設計結果編制代碼。設計階段做的決策直接影響軟件質量,沒有良好的設計就沒有穩(wěn)定的系統(tǒng),也不會有易維護的軟件。統(tǒng)計表明:設計、編碼和測試這三個活動一般占用整個軟件開發(fā)費用(不包括維護階段)的75%以上。8.1軟件設計過程2023/10/23國防科技大學計算機學院4圖8.1開發(fā)階段的信息流8.1軟件設計過程2023/10/23國防科技大學計算機學院5軟件設計過程軟件設計也可看作將需求規(guī)格說明逐步轉換為軟件源代碼的過程。從工程管理的角度看,軟件設計可分為概要設計和詳細設計兩大步驟。概要設計是根據需求確定軟件和數據的總體框架詳細設計是將其進一步精化成軟件的算法表示和數據結構。概要設計和詳細設計由若干活動組成,除總體結構設計、數據結構設計和過程設計外,許多現代應用軟件,還包括一個獨立的界面設計活動。8.1軟件設計過程2023/10/23國防科技大學計算機學院68.2軟件設計基本概念軟件設計基本概念是過去三十年里陸續(xù)提出的。軟件設計者根據這組概念進行設計決策,如:劃分子部件的標準;從軟件的概念表示中分離出功能和數據結構的細節(jié);以統(tǒng)一的標準衡量軟件設計質量等等。第八章軟件設計基礎2023/10/23國防科技大學計算機學院78.2.1抽象與逐步求精抽象是管理、控制復雜性的基本策略。“抽象”是心理學概念,它要求人們將注意力集中在某一層次上考慮問題,而忽略那些低層次的細節(jié)。使用抽象技術便于人們用“問題域”的概念和術語描述問題,而無須過早地轉換為那些不熟悉的結構。軟件設計過程是,在不同抽象級別上考慮、處理問題的過程。(1)在最高抽象級別上,用面向問題域的語言敘述“問題”,概括“問題解”的形式。(2)不斷地具體化,不斷地用面向過程的語言描述問題。(3)在最低的抽象級別上給出可直接實現的“問題解”,即程序。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院8抽象與逐步求精軟件工程過程的每一步都是對較高一級抽象的解作一次較具體化的描述。在系統(tǒng)定義階段,軟件系統(tǒng)被描述為基于計算機的大系統(tǒng)的一個組成部分;在軟件規(guī)劃和需求分析階段,軟件用問題域約定的習慣用語表達;從概要設計過渡到詳細設計時,抽象級再一次降低;編碼完成后,達到了抽象的最低級。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院9抽象與逐步求精在由高級抽象到低級抽象的轉換過程中,伴隨著一連串的過程抽象和數據抽象。過程抽象把完成一個特定功能的動作序列抽象為一個過程名和參數表,通過指定過程名和實際參數調用此過程;數據抽象把一個數據對象的定義(或描述)抽象為一個數據類型名,用此類型名可定義多個具有相同性質的數據對象。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院10例8.1不同抽象級別的軟件形式例8.1考慮適用于低級CAD的圖形軟件包。抽象1
該CAD軟件系統(tǒng)配有能與作圖員進行可視化通訊的圖形界面。能用鼠標替代作圖板和直尺畫各種直線和曲線。能完成所有幾何計算及所有截面視圖和輔助視圖的設計。圖形設計的結果存在圖形文件中,圖形文件可包含幾何的、正文的和其他各種補充設計信息。在這一抽象級別上,問題的解用問題域本身的術語描述。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院11不同抽象級別軟件的形式抽象2
CAD軟件任務;用戶界面任務;創(chuàng)建二維圖形任務;顯示圖形任務;管理圖形文件任務;endCAD.在這一抽象級別上,給出了組成CAD軟件任務的所有子任務,術語與問題域有所不同,但仍然不是實現用的語言。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院12不同抽象級別軟件的形式抽象3例“創(chuàng)建二維圖形任務”
PROCEDURE創(chuàng)建二維圖形REPEATUNTIL<創(chuàng)建圖形任務終止>DOWHILE<出現與數字儀的交互時>數字儀接口任務;判斷作圖請求:線:畫線任務;圓:畫圓任務;
…
END;8.2軟件設計基本概念2023/10/23國防科技大學計算機學院13不同抽象級別軟件的形式DOWHILE<出現與鍵盤的交互時>鍵盤接口任務;選擇分析或計算:輔助視圖:輔助視圖任務;截面視圖:截面視圖任務;
…
END;ENDREPETITION;ENDPROCEDURE.在這一抽象級別上,給出了初步的過程性表示,此時所有術語都是面向軟件(比如采用dowhile結構)并且模塊結構也開始明朗。求精過程還可繼續(xù)下去,直至產生源代碼。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院14不同抽象級別軟件的形式數據抽象與過程抽象一樣,能使設計者按不同的詳細程度表示數據對象。例為CAD軟件定義drawing(圖)的數據對象:TYPEdrawingISSTRUCTUREDEFINEDnumberISSTRINGLENGTH(12);geometryDEFINED…
notesISSTRINGLENGTH(256);bomDEFINED…
ENDdrawingTYPE;drawing被表示為一種結構,各組成部件又可為某種數據抽象,如geometry和bom。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院15不同抽象級別軟件的形式抽象數據類型drawing定義完畢,即可用類型名直接說明數據對象,而不必涉及其內部構造的細節(jié),如,可用語句blueprintISINSTANCEOFdrawing;或schematicISINSTANCEOFdrawing;說明blueprint和schematic具有drawing的特性。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院16不同抽象級別軟件的形式在抽象數據類型的定義中可以附加一組操作的定義,用以確定在此類數據對象上可進行的操作。以抽象數據類型drawing為例,可以定義擦除(erase)、存儲(save)、分類(catalog)和拷貝(copy)等操作。若干程序設計語言(如Ada,Modula,CLU)都提供了對抽象數據類型的支持,Ada的程序包機制是對數據抽象和過程抽象的雙重支持。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院17不同抽象級別軟件的形式由N.Wirth提出的“逐步求精”概念,與“抽象”密切相關,是早期的自頂向下設計策略?!爸鸩角缶钡闹饕枷胧?針對某個功能的宏觀描述用逐步求精的方法不斷地分解,逐步確立過程細節(jié),直至該功能用程序語言描述的算法實現為止。求精的每一步都是用更為詳細的描述替代上一層次的抽象描述,在整個設計過程中產生的,具有不同詳細程度的各種描述組成系統(tǒng)的層次結構。層次結構的上一層是下一層的抽象,下一層是上一層的求精。在過程求精的同時,伴隨著數據求精,無論是過程還是數據,每個求精步都蘊含著某些設計決策,設計人員必須掌握一些基本的準則和各種可能的候選方法。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院188.2.2模塊化與信息隱藏模塊化的概念把軟件劃分為可獨立命名和編址的部件,每個部件稱為一個模塊,當把所有模塊組裝到一起時則獲得滿足問題需要的一個解。軟件總體結構體現了模塊化思想?!澳K化是軟件唯一能使程序獲得智能化管理的一個屬性”,
沒有模塊的程序控制路徑錯綜復雜,變量被遠距離引用等難于被人掌握。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院19模塊化與信息隱藏求解問題的過程假設函數C(X)定義了問題X已被覺察到的復雜性,函數E(X)定義了求解問題X所要求的工作量(按時間計),對于問題P1和P2,如果C(P1)>C(P2)(8.1a)則E(P1)>E(P2)(8.1b)C(P1+P2)>C(P1)+C(P2)(8.2)E(P1+P2)>E(P1)+E(P2)(8.3)解決一個復雜問題,比解決一個簡單問題耗費多。由P1、P2組合而成的問題復雜性,比單個問題復雜性的和更大。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院20模塊化與信息隱藏“分治法”一個復雜問題分割成若干個可管理的小問題后更易于求解。當模塊總數增加時,每個模塊的成本減少了,但模塊接口所需代價隨之增加。如果模塊數為M時將獲得最小開發(fā)成本,那么模塊數在M附近選擇,就能避免模塊分割過度和不足。這些問題涉及信息隱藏、內聚度與藕合度的概念。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院21模塊化與信息隱藏怎樣保證模塊數“在M附近”?依據什么標準劃分模塊?8.2軟件設計基本概念2023/10/23國防科技大學計算機學院221信息隱藏模塊獨立的概念模塊應該設計得使其所含信息(過程和數據)對于那些不需要這些信息的模塊不可訪問;每個模塊只完成一個相對獨立的特定功能;模塊之間僅僅交換那些為完成系統(tǒng)功能必須交換的信息,即模塊應該獨立。采用信息隱藏原理指導模塊設計優(yōu)點:支持模塊的并行開發(fā)減少軟件測試和軟件維護的工作量。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院232內聚度內聚度模塊內部各成分彼此結合的緊密程度。內聚度按其高低程度可分為七級,內聚度越高越好。低級內聚度(1)偶然性內聚(CoincidentalCohesion)。模塊內各成分為完成一組功能而組合在一起,它們相互之間即使有關系,也很松散。(2)邏輯性內聚(LogicalCohesion)模塊完成的諸任務邏輯上相關,如,一個模塊產生所有與類型無關的輸出。(3)時間性內聚(TemporalCohesion)模塊包含的諸任務必須在同一時間段內執(zhí)行,如一個初始化模塊。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院24模塊化與信息隱藏中級內聚度(1)過程性內聚(ProceduralCohesion)模塊具有過程性內聚度指,模塊內成分彼此相關,并且必須按特定的次序執(zhí)行;(2)通信性內聚(CommunicationalCohesion)
模塊中各成份都將對數據結構的同一區(qū)域進行操作,以達到通信的目的。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院25模塊化與信息隱藏高級內聚度(1)順序性內聚(SequentialCohesion)模塊內的各處理成份均與同一功能相關,且這些處理必須順序執(zhí)行,則稱順序內聚。(2)功能性內聚(FunctionalCohesion)模塊內所有成分形成一個整體,完成單個功能。設計軟件時,應該能夠識別內聚度的高低,并通過修改設計盡可能提高模塊內聚度,從而獲得較高的模塊獨立性8.2軟件設計基本概念2023/10/23國防科技大學計算機學院263耦合度耦合度軟件結構中模塊間關聯程度的一種度量。耦合的強弱取決于模塊間接口的復雜性、進入或調用模塊的位置以及通過界面?zhèn)魉蛿祿亩嗌俚?。設計軟件應追求盡可能松散耦合的系統(tǒng)。松散耦合系統(tǒng)中,任一模塊的設計、測試和維護都相對獨立。松散耦合系統(tǒng)模塊間聯系較少,錯誤在模塊間傳播的可能性隨之變小。模塊間的耦合程度直接影響系統(tǒng)的可理解性、可測試性、可靠性和可維護性。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院27模塊化與信息隱藏耦合度也分為七級:(1)非直接耦合(NodirectCoupling)兩模塊中任一個都不依賴對方能獨立工作,這類耦合度最低。(2)數據耦合(DataCoupling)兩模塊通過參數交換信息,信息僅限于數據。(3)控制耦合(ControlCoupling)傳遞的信息含有控制信息。控制耦合通常會增加系統(tǒng)的復雜性,適當分解模塊可望消除控制耦合。(4)特征耦合(StampCoupling)。介于數據耦合與控制耦合之間8.2軟件設計基本概念2023/10/23國防科技大學計算機學院28模塊化與信息隱藏(5)外部耦合(ExternalCoupling)當若干模塊均與同一個外部環(huán)境關聯,如,I/O處理使所有I/O模塊與特定的設備、格式和通信協議相關聯。外部耦合盡管需要,但應限制在少數幾個模塊上。(6)公共耦合(CommonCoupling)若干模塊通過全局的數據環(huán)境相互作用,全局數據環(huán)境中可能含有全局變量、公用區(qū)、內存公共復蓋區(qū)、任何存儲介質上的文件、物理設備等。(7)內容耦合(ContentCoupling)一個模塊使用另一模塊內部的數據或控制信息;一個模塊直接轉移到另一模塊內部等等。設計軟件時應盡量使用數據耦合,減少控制耦合,限制外部環(huán)境耦合和公共數據耦合,杜絕內容耦合。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院29模塊化與信息隱藏模塊化設計的思想適用于任何軟件系統(tǒng)的設計。當某些軟件系統(tǒng),如實時軟件和部分微處理機軟件,因不能容忍子程序調用引起的時間開銷而必須以整塊軟件的形式出現時,軟件設計仍然應該以模塊化設計的思想為指導,直至編碼時再改用代入式(in—line)方法。這樣,源程序中雖不含明顯的模塊,但模塊化設計所帶來的大部分益處卻已被系統(tǒng)獲得。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院308.2.3軟件總體結構設計軟件總體結構(softwarearchitecture)應該包括兩方面內容(1)由系統(tǒng)中所有過程性部件(即模塊)構成的層次結構,亦稱為程序結構;(2)輸入輸出數據結構。軟件總體結構設計的目標是產生一個模塊化的程序結構并明確各模塊之間的控制關系,此外還要通過定義界面,說明程序的輸入輸出數據流,進一步協調程序結構和數據結構。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院31軟件總體結構設計程序結構、數據結構是逐步求精、分而治之的結果。軟件設計從需求定義開始,逐步分層導出程序結構和數據結構,當需求定義中所述的每個部分最終都能由一個或幾個軟件元素實現時,整個求解過程即告結束。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院32
軟件總體結構設計依據任何一種軟件設計方法總能推導出一個軟件結構。模塊內聚度和耦合度是判斷結構好壞的主要標準。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院33軟件總體結構設計表示程序結構的工具類樹圖(Tree-likediagram)Warnier—Orr圖Jackson圖等8.2軟件設計基本概念2023/10/23國防科技大學計算機學院34程序結構的術語軟件的深度(Depth)和寬度(Width)分別說明控制的層數和跨度。模塊的“扇出率”(Fan—out)指,該模塊直接控制的其他模塊數。模塊的“扇入率”(Fan—in)指,能直接控制該模塊的模塊數。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院35程序結構的術語如果一個模塊控制另一模塊,稱前者為“主控”模塊,后者為“從屬”模塊。
軟件結構的可見域和連通域。模塊的可見域指,該模塊可直接或間接引用的一組模塊;模塊的連通域指,模塊可直接引用的模塊。軟件的總體結構應該在考慮每個模塊的細節(jié)前就確定下來。軟件設計方法鼓勵人們首先致力于軟件總體結構的設計,而后再進行詳細設計。每一種方法導出總體結構的具體方式不盡相同。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院368.2.4數據結構設計數據結構描述各數據分量之間的邏輯關系,數據結構一經確定,數據的組織形式、訪問方法、組合程度及處理策略基本上隨之確定,所以數據結構是影響軟件總體結構的重要因素,對數據結構的完整討論超出本書的范圍,但掌握標量、數組、鏈表和樹等典型的數據表示方法,并能根據實際需要靈活應用十分必要。數據結構與程序結構一樣,也可以在不同的抽象級別上表示。以棧為例,作為一個抽象數據類型,在概念級上只關心“先進后出”特性,而在實現級上則要考慮物理表示及內部工作的細節(jié),比如,用向量實現,或用鏈表實現等等。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院37數據結構設計數據結構對程序結構和過程復雜性有直接的影響,數據結構設計很重要,在很大程度上決定軟件的質量。無論采用哪一種軟件設計技術,沒有良好的數據結構,不可能導出良好的程序結構。數據設計是為在需求規(guī)格說明中定義的那些數據對象選擇合適的邏輯表示,并確定可能作用在這些邏輯結構上的所有操作(包括選用已存在的程序包)。數據抽象和信息隱藏兩個概念是數據設計的基礎。數據設計方案不是唯一的,有時需進行算法復雜性分析后才能從多種候選中找出最佳者。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院388.2.5軟件過程設計程序結構僅考慮軟件總體結構中模塊之間的控制分層關系,而不關心模塊內各處理元素和判斷元素的順序。過程設計緊跟在數據結構設計和程序結構設計之后,基本任務是描述這方面的信息。過程包括有關處理的精確說明,如事件的順序、確切的判斷位置、循環(huán)操作以及數據的組成等等。程序結構與軟件過程相互關聯,程序結構中任個模塊的所有從屬模塊必將被引用出現在該模塊的過程說明中。8.2軟件設計基本概念2023/10/23國防科技大學計算機學院39圖8.6模塊A的內部結構8.2軟件設計基本概念2023/10/23國防科技大學計算機學院40圖8.7過程的層次結構8.2軟件設計基本概念2023/10/23國防科技大學計算機學院418.3過程設計技術和工具8.3.1結構化程序設計過程設計的任務是描述算法的細節(jié),下面討論過程設計的技術和工具。結構化程序設計
E.W.Dijkstra提出,理由是GOTO語句對程序的可讀性、可測試性和可維護性帶來極大的危害,應該用更可維護的控制結構替代它。Bohm和Jacopini證明了僅用“順序”、“分枝”和“循環(huán)”三種基本的控制構件即能構造任何單入口單出口程序,這個結論奠定了結構程序設計的理論基礎。第八章軟件設計基礎2023/10/23國防科技大學計算機學院42過程設計技術和工具結構化程序設計定義采用自頂向下逐步求精的設計方法和單入口單出口的控制構件。自頂向下逐步求精的方法是人類解決復雜問題時常用的方法,采用這種先整體后局部,先抽象后具體的步驟開發(fā)的軟件具有較清晰的層次。僅使用單入口單出口的控制構件,程序有良好的結構特征,能降低程序的復雜性,增強程序的可讀性、可維護性和可驗證性,提高軟件的生產率。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院43過程設計技術和工具結構程序設計的思想,應該在軟件設計中體現出來,但這并不排除為效率或其他原因,對結構程序設計作一點修正。隨著面向對象、軟件重用等新的軟件開發(fā)方法和技術的發(fā)展,更現實、更有效的開發(fā)途徑可能是自頂向下和自底向上兩種方法的有機結合。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院448.3.2圖形表示法流程圖、盒圖是描述過程細節(jié)的工具。流程圖(也稱為程序框圖)是最常用的一種表示法,它能直觀地描述過程的控制流程,最便于初學者掌握。流程圖中方框表示處理步,菱形框表示判斷步,有向線段表示控制流。順序、分枝、循環(huán)三個基本控制構件用流程圖表達的形式如圖8.8所示。
8.3過程設計技術和工具2023/10/23國防科技大學計算機學院45圖形表示法Case結構是if—then—else結構的推廣,do—while循環(huán)與repeat循環(huán)的區(qū)別僅在于測試循環(huán)條件與執(zhí)行循環(huán)體的先后次序。嵌套使用這些控制結構能逐步形成更復雜的控制流程描述。如果對流程圖中每一構件用“邊框”圈起來,邊界之間不出現交叉,則說明所有構件都為單入口單出口,稱此程序為結構化程序(structuredprogram)。圖8.9為一個結構化程序的流程圖。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院46圖8.8流程圖構件8.3過程設計技術和工具2023/10/23國防科技大學計算機學院47圖8.9結構化程序的流程圖8.3過程設計技術和工具2023/10/23國防科技大學計算機學院48過程設計技術和工具由Nassi和Sheiderman提出的盒圖,也稱為N—S圖,它強迫程序員以結構化方式思考和解決問題,三種基本控制構件用盒圖表達的形式如圖8.10所示。圖8.10盒圖的構件圖8.9表示的過程用盒圖表示形如圖8.11。圖8.11盒圖盒圖的功能域(指分枝和循環(huán)結構的邊界)比流程圖更清晰,控制不能隨意轉移,并且數據的作用域容易確定。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院49圖8.10盒圖的構件8.3過程設計技術和工具2023/10/23國防科技大學計算機學院50圖8.11盒圖8.3過程設計技術和工具2023/10/23國防科技大學計算機學院518.3.3判定表當模塊中包含復雜的條件組合,并要根據這些條件選擇動作時,流程圖、盒圖及8.3.4節(jié)將介紹的過程設計語言(PDL)都有一定的缺陷,判定表能清晰地表示出復雜的條件組合與各種動作之間的對應關系。
一張判定表由四部分組成,左上部列出所有條件,左下部列出所有可能的動作,右部為一矩陣,說明條件與動作之間的對應關系,其每列可解釋為一條處理規(guī)則。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院52判定表例8.2簡化的賬單系統(tǒng)判定表問題描述:耗電記費系統(tǒng)可以采用固定價格收費和浮動價格收費兩種方式。若采用固定價格方式收費,對每月耗電100千瓦小時以下的用戶只征收最低標準費,超過100千瓦小時的用戶按價格表A收費;若采用浮動價格方式收費,則每月耗電100千瓦小時以下的用戶按價格表A收費,超過100千瓦小時的用戶按價格表B收費。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院53判定表采用下述步驟產生表8.1所示判定表:①列出與該過程(或模塊)有關的動作(共四項,分別為收取最低標準費、按價格表A收費、按價格表B收費,其他處理);②列出所有獨立條件(共四條,分別為固定價格方式、浮動價格方式、每月耗電少于100千瓦小時,每月耗電超過100千瓦小時);③根據問題處理描述,把條件組合與特定的動作聯系起來,刪去無意義的條件組合;④定義處理規(guī)則(共5條),即指明什么情況下做什么動作。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院54表8.1判定表8.3過程設計技術和工具2023/10/23國防科技大學計算機學院55判定表盡管判定表能夠簡潔無歧義地描述處理規(guī)則,但卻不能清晰地表示順序和循環(huán)結構。判定表常作為一種輔助設計工具與其他過程設計工具結合使用。
8.3過程設計技術和工具2023/10/23國防科技大學計算機學院568.3.4過程設計語言(PDL)PDL(ProcedureDesignLanguage)也稱為結構英語或偽碼,是所有正文形式的過程設計工具的統(tǒng)稱,目前有多種PDL。
PDL經常表現為一種“混雜”的形式,允許自然語言(如英語)的詞匯與某種結構化程序設計語言(如Pascal、Ada等)的語法結構交織在一起,目前大多數PDL描述不能直接編譯。
8.3過程設計技術和工具2023/10/23國防科技大學計算機學院57過程設計語言(PDL)①關鍵字采用固定語法并支持結構化構件、數據說明機制和模塊化;②處理部分采用自然語言描述;③允許說明簡單(標量、數組等)和復雜(鏈表、樹等)的數據結構;④子程序的定義與調用規(guī)則不受具體接口方式的影響。現今大多數PDL都以某種流行的高級程序設計語言作為基礎,例如Ada—PDL是Ada團體中廣為使用的設計工具。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院58過程設計語言(PDL)考察建立在通用結構化程序設計語言上的PDL原型?;境煞肿映绦蚨x界面描述數據說明塊結構分枝結構循環(huán)結構I/O結構8.3過程設計技術和工具2023/10/23國防科技大學計算機學院59過程設計語言(PDL)數據說明的常用形式TYPE<變量名>IS<限定詞1><限定詞2>此處<變量名>既可為過程的某個局部變量,亦可為多個過程共用的全局變量;<限定詞1>為某個特定關鍵字(例如,SCALAR,ARRAY,LIST,STRING,STRUCTURE等);<限定詞2>說明此處定義的變量在該過程或整個程序中應如何使用。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院60過程設計語言(PDL)PDL允許定義面向具體問題的抽象數據類型。如,在某編譯器的模塊設計時可能使用下面的數據說明:TYPEtable—1ISINSTANCEOFsymbol—able假定symbol—table是在另一處定義的抽象數據類型:TYPEsymbol—tableISSTRUCTUREDEFINED
…
該PDL的塊結構描述一個過程元素,即一個塊內的所有語句將作為一個整體執(zhí)行形式為BEGIN[<塊名>]<語句序列>END
8.3過程設計技術和工具2023/10/23國防科技大學計算機學院61過程設計語言(PDL)該PDL的分枝結構有if—then—else和case兩種形式IF<條件描述>THEN<塊結構或語句>ELSE<塊結構或語句>ENDIFCASEOF<情況變量名>WHEN<第1種情況>SELECT<塊結構或語句>;WHEN<第2種情況>SELECT<塊結構或語句>;
…
WHEN<最后一種情況>SELECT<塊結構或語句>;DEFAULT:<塊結構或語句>;ENDCASE8.3過程設計技術和工具2023/10/23國防科技大學計算機學院62過程設計語言(PDL)循環(huán)結構包括前測試循環(huán)、后測試循環(huán)和固定循環(huán)三類,表達形式分別為DOWHILE<條件描述><塊結構或語句>ENDWHILEREPEATUNTIL<條件描述><塊結構或語句>ENDREPDOFOR<循環(huán)變量>=<循環(huán)變量取值范圍,表達式或序列><塊結構或語句>ENDFOR除標準循環(huán)構件外,此PDL還提供了NEXT和EXIT兩種語句,旨在支持受限方式退出循環(huán)。EXIT將控制轉到其所在循環(huán)后的第一個語句,NEXT強迫本次循環(huán)結束,新一輪循環(huán)開始。若外層循環(huán)帶標號,EXIT和NEXT能實現從多層嵌套的內循環(huán)中直接跳出,而不必逐層退出。在該PDL中,子程序說明為PROCEDURE<子程序名><屬性表>INTERFACE<參數表><塊結構和/或語句序列>END8.3過程設計技術和工具2023/10/23國防科技大學計算機學院63過程設計語言(PDL)屬性表指明子程序的引用特性如,INTERNAL、EXTERNAL模式依賴于程序設計語言的實現輸入/輸出說明部分的形式READ/WRITETO<設備><I/O表>或ASK<詢問>ANSWER<響應選擇項>后一形式多用于人機交互的設計。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院64過程設計語言(PDL)PDL擴充多任務、并行處理、異常處理、進程同步等機制。使用某個PDL進行過程設計,應充分了解全部內容。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院658.3.5過程設計工具之比較比較前述種種設計工具之優(yōu)劣須基于這樣一個前提,即如果使用得當,任一種工具都將對過程設計提供寶貴的支持,反之即使是最好的工具亦可能產生難于理解的設計。衡量一個設計工具好壞的一般準則是看其所產生的過程描述是否易于理解、復審和維護,進而過程描述能否自然地轉換為代碼并保證設計與代碼完全一致。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院66設計工具屬性(1)模塊化(Modularity):支持模塊化軟件的開發(fā)并提供描述接口的機制(例如直接表示子程序和塊結構);(2)整體簡潔性(OverallSimplicity):設計表示相對易學、易用、易讀;(3)便于編輯(EaseofEditing):支持后續(xù)設計、測試乃至維護階段對過程設計進行的修改;(4)機器可讀性(MachineReadability):計算機輔助軟件工程(CASE)環(huán)境已被廣泛接受,一種設計表示法若能直接輸入并被CASE工具識別將帶來極大便利;8.3過程設計技術和工具2023/10/23國防科技大學計算機學院67過程設計工具之比較(5)可維護性(Maintainability):過程設計表示應支持各種軟件配置項的維護;(6)強制結構化(StructureEnforcement):過程設計工具應能強制設計人員采用結構化構件,有助于產生好的設計;(7)自動產生報告(AutomaticProcessing):設計人員通過分析詳細設計的結果往往能突發(fā)靈感,改進設計。若存在自動處理器,能產生有關設計的分析報告必將增強設計人員在這方面的能力;8.3過程設計技術和工具2023/10/23國防科技大學計算機學院68過程設計工具之比較(8)數據表示(DataRepresentation):詳細設計應具備表示局部與全局數據的能力;(9)邏輯驗證(LogicVerification):能自動驗證設計邏輯的正確性是軟件測試追求的最高目標,設計表示愈易于邏輯驗證其可測試性愈強;(10)可編碼能力(“Codeto”Ability):一種設計表示若能自然地轉換為代碼則能減少開發(fā)費用,降低出錯率。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院69過程設計工具之比較對照上述屬性,到底哪一種過程設計工具最好呢?回答將因人而異。一般認為,PDL較好地組合了這組特性。PDL還可直接嵌在源代碼中作為設計文檔和注釋,減少維護的困難;PDL描述可用一般正文編譯器或字處理軟件編輯;PDL自動處理器已經面世,并有可能開發(fā)出“代碼自動產生器”。然而,這并不意味著其他的設計工具一定弱于PDL,例如,流程圖和盒圖能直觀地表示控制流程;判定表因能精確地描述組合條件與動作之間的對應關系,特別適用于表格驅動一類軟件的開發(fā);其他一些設計工具也自有獨到之處。經驗表明,具體選擇過程設計工具時,人的因素可能比技術因素更具有影響力。8.3過程設計技術和工具2023/10/23國防科技大學計算機學院708.4設計規(guī)格說明與評審軟件設計階段的輸出主要是設計規(guī)格說明書,結構如表8.2所示,各條款的內容是在設計求精過程中逐步確定的。第八章軟件設計基礎2023/10/23國防科技大學計算機學院71設計規(guī)格說明與評審設計說明書第一節(jié)描述與設計活動有關的各個方面,該節(jié)中許多信息取自系統(tǒng)規(guī)格說明書和系統(tǒng)定義階段產生的其他文檔。第二節(jié)具體指明引用信息的出處。第三節(jié)設計描述是概要設計的產物,設計由信息驅動,即軟件總體結構主要受數據流程、數據結構的影響,需求分析時產生的DFD或其他某種形式的數據表示將在這一節(jié)中進一步精化,用于確定軟件結構。8.4設計規(guī)格說明與評審2023/10/23國防科技大學計算機學院72設計規(guī)格說明與評審第四節(jié)的模塊指
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 流程管理內部培訓
- 流程審批培訓課件
- 流程專項稽核培訓
- 活動策劃書書寫培訓
- 2024-2025學年江西省贛州市高一下學期期末考試歷史試題(解析版)
- 2026年醫(yī)生執(zhí)業(yè)技能考試診斷學測試題
- 2026年網絡社交媒體營銷網絡營銷策略題庫
- 2026年醫(yī)學基礎知識題庫與答案手冊
- 2026年稅務師考試稅法與會計處理題庫
- 2026年醫(yī)生臨床診斷技能操作測試題
- 2026年甘肅省公信科技有限公司面向社會招聘80人(第一批)筆試備考試題及答案解析
- 大雪冰凍災害應急預案(道路結冰、設施覆冰)
- 通信設備維護與保養(yǎng)指南
- 2026年幼兒教師公招考試試題及答案
- 易方達基金公司招聘筆試題
- 2026年陜西眉太麟法高速項目招聘(11人)備考題庫及答案1套
- 2026年中國航空傳媒有限責任公司市場化人才招聘備考題庫帶答案詳解
- 2026年交管12123學法減分復習考試題庫附答案(黃金題型)
- 雷火灸培訓課件
- 未來停車新設施-探索機械式停車設備市場
- 林木清理施工方案(3篇)
評論
0/150
提交評論