1. 程式人生 > >軟體工程之面向過程的軟體設計方法(二)

軟體工程之面向過程的軟體設計方法(二)

前言:

       本文承接上文,主要從設計基礎、系統結構設計、資料設計、檔案設計、過程設計五個方面來分別進行闡述。

設計基礎:

      自頂向下,逐步細化:

      將軟體的體系結構按自定向下的方式,對各個層次的過程細節和資料細節逐層細化。把一個大問題分解成若干個子過程,分解的時候從最底層開始,以此類推,直到不能分解或一個模組智慧完成一個單一的功能為止。

      軟體結構:

      軟體結構包括兩部分。一個是程式的模組結構,另一個是資料的結構。把一個問題分解成子問題,然後把子問題解決了就能把總的問題解決啦,這樣做,能大幅度提高效率,降低複雜性。那麼如何分解?分解成幾個?這要根據開發經驗和具體問題而言。

      程式結構:

      程式結構有兩個樹狀結構和網狀結構。樹狀結構層次清晰,概要設計要把樹狀結構設計出來。網狀結構沒有隸屬關係,各個模組的介面相對較複雜。

      結構圖:

      結構圖反映了程式中模組之間的層次呼叫關係。結構也也叫S-C圖。能清晰表達模組之間所劃分的層次。下面對一些基本概念做一些講解。模組的命名應該以主要功能作為模組名。模組之間存在呼叫關係和資訊傳遞,被呼叫模組一定要想呼叫模組返回查詢成功的資訊。有條件的呼叫關係(順序呼叫、迴圈呼叫)如何表示。 

                                     

                                     


程式的系統結構圖:

      介紹兩個概念。深度,深度表明問題的複雜性和規模大小。寬度是指任一層中模組數中寬度最多的是系統結構圖的寬度。要綜合考慮深度、寬度、扇入、扇出之間的關係。使程式的系統結構合理化。好的圖應該是類似於罈子狀。中間寬、兩端窄。

       模組化:能夠把一個大而複雜的軟體系統按照問題的功能域劃分成易於理解的比較單純的模組結構。劃分模組的時候要注意抽象,軟體系統進行模組設計時,可有不同的抽象層次。抽象層次並不是一步到位,而是逐步抽象的。抽象包括功能抽象和資料抽象。

       資訊隱蔽:

       資訊隱蔽是指在劃分模組的時候,定義層次的時候,如果模組中資料發生變化時,儘量不影響其他模組的使用。模組的獨立性是劃分模組的重要原則。模組一般具有三個基本屬性:功能、邏輯、狀態。模組獨立性衡量標準 高內聚,低耦合。

                      

                      

原則:儘量使用資料耦合,少用控制耦合,限制公共耦合,完全不用內容耦合。儘量做到高內聚,低耦合。

結構化設計方法:

        首先研究、分析和審查資料流圖。然後根據資料流圖(上一階段需求分析階段產生)決定問題的型別。資料處理問題的型別有兩種:一種是變換型,另一種是事務性。針對兩種不同的型別分別進行分析處理。在系統結構圖中的模組及模組之間的關係如圖所示。

                       

     變換型系統結構圖:

      大多數情況下采用變換型結構圖。變換型資料處理問題的工作過程大概分為三步。即取得資料、變換資料和給出資料、

                        

變換分析方法由以下四步組成:重畫資料流圖、區分有效輸入、有效輸出和中心變換部分、進行一級分解,設計上層模組、進行二級分解,設計輸入、輸入和中心變換部分的中、下層模組。

      事務性系統結構圖

      它接受一項事務,根據處理的特點和性質,選擇分派一個適當的處理單元,然後給出結果。事務分析與變換分析一樣,事務分析也是從分析資料流圖開始,自頂向下,逐步分解,建立系統到資料結構圖。

模組的作用範圍應在控制範圍之內。及可能減少高扇出結構,隨著深度增大扇入。

資料設計和檔案設計:

      資料設計的原則:

      1、用於軟體的系統化方法也適用於資料2、確定所有的資料結構和在每種資料結構上施加的操作。3、應當建立一個數據詞典並用它來

定義資料和軟體的設計4、低層資料設計的決策應推遲到設計過程的後期進行。5、資料結構的表示只限於那些必須直接使用該資料結構內資料的模組才能知道。6、應當建立一個存放有效資料結構及相關操作的庫。7、軟體設計和程式設計語言應當支援抽象資料型別的定義和實現。

以上原則適用於軟體工程的定義階段和開發階段。

檔案設計:

檔案的設計過程,主要分兩個階段。第一個階段是檔案的邏輯設計,主要在概要設計階段實施。第二個階段是檔案的物理設計。1、整理必須的資料元素2、分析資料間的關係3、確定檔案的邏輯設計。4、理解檔案的特性5、確定檔案的組織方式。6、確定檔案的儲存介質。7、確定檔案的記錄格式8、估算存取時間和儲存容量。

過程設計:

過程設計實際上就是詳細設計啦,在過程設計階段,要決定各個模組的實現演算法,並精確地表達這些演算法。詳細設計工具分為三類:圖形工具、表格工具、語言工具。

          程式流程圖:

          程式流程圖也稱為程式框圖,程式框圖使用五種基本控制結構。即順序型、選擇型、先判定迴圈、後判定迴圈、多情況選擇型。

        程式流程圖也稱為程式框圖,程式流程圖使用三種基本結構。  

                                         

    N-S圖:

 也叫盒圖。程式流程圖過草地考慮到了控制流,使得程式的結構並不是很好,盒圖看不到控制流五種基本控制結構由五種圖形構件表示。                  

問題分析圖(PAD)

          也設定了五種基本控制結構的圖形,並允許遞迴使用。問題分析圖設計的程式結構一定是結構化程式:描述清晰,可以表示程式邏輯結構的異同和便於記憶,很容易表示高階層次,可以描述資料結構,支援自頂向下、逐步求精的方法。因此建議大家用PAD圖和程式流程圖。

          

判定表:

          用於程式的靜態邏輯,在判定表中的條件部分給出的所有兩分支判斷的列表,動作部分給出相應的處理,要求將程式流程圖中的多分支結構改成兩分支判斷。

         PDL(Program Design Language)

          用於描述功能模組的演算法設計和加工細節的語言。是一種虛擬碼。可對其稍加改造,即可當做上機的程式碼。它可以提供全部結構化控制結構、資料說明和模組特徵。能對PDL正文進行結構分割,使之便得易於理解。但是不如圖形工具那麼直觀。