第三篇——軟件工程之結構化設計方法


   軟件工程有很大的一個章節介紹結構化分析方法。對於結構化分析,我認為它是整體和細節的橋梁,把一個軟件整體分成幾個塊,不同的塊負責不同的內容,比如數據輸入,數據處理,數據輸出;然后在塊的基礎上敲定細節,需要讀入哪些數據,數據的類型,怎么讀入數據,數據輸入后的計算、查詢、添加、刪除、修改,數據輸出的格式等等。一個軟件可能是一個很大的工程,但是它也是由許多小部件搭建起來的,如何確定這些小部件,這時候就需要用到結構化分析方法。對於結構化的具體知識,結合書上的內容,做了一個整理。可能不完善,但是對於基本概念的掌握很有幫助。

  結構化分析方法是在模塊化,自頂向下逐步細化及結構化程序設計基礎之上發展起來的,可以分為兩類:一類是根據系統系統的數據流進行設計,還有一類是根據系統的數據結構進行設計。

   軟件設計的5個原則:

1 分而治之:將大型復雜的問題分解成許多容易的小問題,軟件的體系設計,模塊化設計都是分而治之的具體策略。

2 模塊獨立性:指軟件系統中每個模塊只設計軟件要求的具體子功能,與軟件系統中其他模塊的借口是簡單的。耦合性越高,模塊獨立性越若弱。

3 提高抽象層次:抽象是指護士一個主題中與當前目標無關的方面,以便更注意與當前目標有關的方面。軟件設計時,盡量提高軟件的抽象層次,按抽象級別從高到低進行軟件設計,將軟件的體系結構,按自頂向下方式,對各個層次的過程細節和數據細節逐層細化,直到用程序設計的語句能夠實現為止。當然實現這個過程需要我們對軟件的接口,模塊的運行等等有足夠的熟悉。

4 復用性設計:指在構造新的軟件的時候,不必從零做起,可以直接使用已有的軟構件即可組裝成新的系統。

5 靈活性設計:引入靈活性的方法有,降低耦合並提高內聚(易於提高替換功能);建立抽象(創建有多態操作的接口和父類);不要將代碼寫死(消除代碼中的常數);拋出異常(由操作的調用者處理異常);使用並創建可復用的代碼。

   模塊結構及表示:

   一個軟件系統需要很多模塊(包括程序設計中的函數和子程序)組成,稱不能再分解的模塊為原子模塊。如果一個軟件系統的全部實際加工(數據處理或計算)都有原子模塊來完成,而其他所有非原子模塊僅僅執行控制或協調功能,這樣的系統就是完全因子分解的系統,但是大多數系統做不到完全因子分解。

模塊一般分為四類:傳入模塊、傳出模塊、變換模塊(從上級調用模塊取得數據,進行特定的處理,轉換成其他形式,再將加工結果返回給調用模塊)、協調模塊。

   傳入模塊:取得輸入數據,經過某些處理,再將其傳送給其他模塊;

 傳出模塊:輸出數據,在輸出之前可能進行某些處理,數據可能被傳輸到系統的外部,也可能會輸出到其他模塊進行進一步的處理,但最終目的是輸出到系統的外部;

 變換模塊:也叫加工模塊,從上級調用模塊取得數據,進行特定的數據處理,轉換成其他形式,再將加工結果返回給調用模塊;

 協調模塊:通過調用,協調和管理其他模塊來完成特定的功能;

模塊的結構有樹狀結構和網狀結構。

 在樹狀結構中,位於最上層的根部是頂層模塊,它是程序的主模塊,與其聯系的有若干下屬模塊,各下屬模塊還可以進一步引出更下一層的下屬模塊;

 網狀結構則完全不同,在網狀結構中,任意兩個模塊之間都可以有調用關系,任何兩個模塊都是平等的,沒有從屬關系;

結構圖(SC):清楚地反映軟件模塊之間的層次調用關系和聯系,它不僅嚴格地定義了各個模塊的名字,功能和接口,而且還集中地反映了設計思想。

 在結構圖中,兩個模塊之間用單向箭頭聯結。箭頭從調用模塊指向被調用模塊,表示調用模塊調用了被調用模塊,但是被調用模塊執行完成后,控制又返回到調用模塊;為了表示在模塊之間傳遞的數據或者控制信息,在聯合模塊的箭頭旁邊給出短箭頭,並且用尾端帶有空心圓的短箭頭表示數據信息,用尾端帶有實心圓的短箭頭表示控制信息。通常在短箭頭的附近應注有信息的名字。當模塊A有條件地調用另一個模塊B時,在模塊A的箭頭尾部標以一個菱形符號。當一個模塊A反復地調用模塊C和模塊D時,在調用箭頭尾部則標以一個弧形符號。

 在多層次的結構圖中,模塊結構的層次數成為結構圖的深度。結構圖的深度在一定意義上反映了程序結構的規模和復雜程度。對於中等規模程度的程序,其結構圖的深度約為10左右。結構圖中同一層模塊的最大模塊數稱為結構圖的寬度。模塊的扇入和扇出:扇出表示一個模塊直接調用或控制下屬模塊的數目,扇入則定義為調用或控制一個給定模塊的調用模塊的數目。多扇入的模塊通常是公用模塊。

 在軟件工程這門課程中,結構化是比較實用的一章,掌握結構化設計的方法,對於我們在軟件編程中有流程指導作用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM