




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、課程名稱:軟件工程課程名稱:軟件工程 第第13講講班班 級:級:日日 期:期:教教 室:室:教學題目:第教學題目:第8章章 軟件設計基礎。軟件設計基礎。8.1.18.1.3教學目的:理解軟件設計過程、抽象與逐步求精、教學目的:理解軟件設計過程、抽象與逐步求精、模塊化與信息隱藏等概念。模塊化與信息隱藏等概念。 教學重點:幾個軟件設計的基本概念。教學重點:幾個軟件設計的基本概念。教學難點:教學難點: 模塊劃分與軟件損耗的關系。模塊劃分與軟件損耗的關系。教教 具:多媒體教室、電子教案具:多媒體教室、電子教案作作 業:業:l軟件設計階段的工作是以需求分析階段的成果軟件設計階段的工作是以需求分析階段的成
2、果為前提和基礎的,即經過系統分析小組簽字認為前提和基礎的,即經過系統分析小組簽字認可的需求規格說明書及有關技術文檔。經過軟可的需求規格說明書及有關技術文檔。經過軟件工程師們多年的努力,一些軟件設計技術、件工程師們多年的努力,一些軟件設計技術、質量評估標準和設計表示法逐步形成并用于軟質量評估標準和設計表示法逐步形成并用于軟件工程實踐。件工程實踐。l軟件設計是軟件工程的重要階段。軟件設計過軟件設計是軟件工程的重要階段。軟件設計過程是對程序結構、數據結構和過程細節逐步求程是對程序結構、數據結構和過程細節逐步求精、復審并編制文檔的過程,本章討論與軟件精、復審并編制文檔的過程,本章討論與軟件設計有關的主
3、要概念。設計有關的主要概念。l一般認為,軟件開發階段由設計、編碼和測試一般認為,軟件開發階段由設計、編碼和測試三個基本活動組成,其中三個基本活動組成,其中“設計設計”活動是獲取活動是獲取高質量、低耗費、易維護軟件的一個最重要環高質量、低耗費、易維護軟件的一個最重要環節。節。l需求分析階段獲得的需求規格說明書包括對將需求分析階段獲得的需求規格說明書包括對將要實現的系統在信息、功能和行為等各個方面要實現的系統在信息、功能和行為等各個方面的描述,這是軟件設計的基礎。對此不論采用的描述,這是軟件設計的基礎。對此不論采用何種軟件設計方法都將產生何種軟件設計方法都將產生: 系統的總體結構設計(系統的總體結
4、構設計(architectural design);); 系統的數據設計(系統的數據設計(data design);); 系統的過程設計(系統的過程設計(procedural design)。)。圖圖8-1-1 開發階段的信息流開發階段的信息流程序程序模塊模塊總體結構設計總體結構設計設計設計編碼編碼信息描述信息描述功能描述功能描述行為描述行為描述其他需求其他需求過程設計過程設計數據設計數據設計集成并確認集成并確認的軟件的軟件測試測試l軟件設計也可看作將需求規格說明逐步轉換為軟件設計也可看作將需求規格說明逐步轉換為軟件源代碼的過程。軟件源代碼的過程。l從工程管理的角度軟件設計可分為概要從工程管理
5、的角度軟件設計可分為概要(preliminary)設計和詳細()設計和詳細(detail)設計兩)設計兩大步驟。大步驟。l概要設計是根據需求確定軟件和數據的總體框概要設計是根據需求確定軟件和數據的總體框架,詳細設計是將其進一步精化成軟件的算法架,詳細設計是將其進一步精化成軟件的算法表示和數據結構。表示和數據結構。l而在技術上,概要設計和詳細設計又由若干活而在技術上,概要設計和詳細設計又由若干活動組成,除總體結構設計、數據結構設計和過動組成,除總體結構設計、數據結構設計和過程設計外,許多現代應用軟件,還包括一個獨程設計外,許多現代應用軟件,還包括一個獨立的界面設計活動。立的界面設計活動。l抽象是
6、控制復雜性的基本策略。抽象是控制復雜性的基本策略。“抽象抽象” 要求要求人們將注意力集中在某一層次上考慮問題,而人們將注意力集中在某一層次上考慮問題,而忽略那些低層次的細節。忽略那些低層次的細節。l軟件設計過程應當是在不同抽象級別上考慮和軟件設計過程應當是在不同抽象級別上考慮和處理問題的過程。最初,應在最高抽象級別上,處理問題的過程。最初,應在最高抽象級別上,用面向問題域的語言敘述用面向問題域的語言敘述“問題問題”,概括,概括“問問題解題解”的形式,而后不斷地具體化,不斷地用的形式,而后不斷地具體化,不斷地用面向過程的語言描述問題,最后,在最低的抽面向過程的語言描述問題,最后,在最低的抽象級別
7、上給出可直接實現的象級別上給出可直接實現的“問題解問題解”,即程,即程序。序。l軟件工程過程的每一步都是對較高一級抽象的解作一軟件工程過程的每一步都是對較高一級抽象的解作一次進一步具體化的描述。次進一步具體化的描述。v在系統定義階段,軟件系統被描述為基于計算機的大在系統定義階段,軟件系統被描述為基于計算機的大系統的一個組成部分;系統的一個組成部分;v在軟件規劃和需求分析階段,軟件用問題域約定的習在軟件規劃和需求分析階段,軟件用問題域約定的習慣用語表達;慣用語表達;v從概要設計過渡到詳細設計時,抽象級再一次降低;從概要設計過渡到詳細設計時,抽象級再一次降低;v編碼完成后達到了抽象的最低級。編碼完
8、成后達到了抽象的最低級。v在上述由高級抽象到低級抽象的轉換過程中,伴隨著在上述由高級抽象到低級抽象的轉換過程中,伴隨著一連串的過程抽象和數據抽象。一連串的過程抽象和數據抽象。v過程抽象把完成一個特定功能的動作序列抽象為一個過程抽象把完成一個特定功能的動作序列抽象為一個過程名和參數表;過程名和參數表;v數據抽象把一個數據對象的定義(或描述)抽象為一數據抽象把一個數據對象的定義(或描述)抽象為一個數據類型名。個數據類型名。l抽象抽象 該該CAD軟件系統配有能與繪圖員進行軟件系統配有能與繪圖員進行可視化通信的圖形界面,能用鼠標代替繪圖工可視化通信的圖形界面,能用鼠標代替繪圖工具,畫各種直線和曲線;能
9、完成所有幾何計算具,畫各種直線和曲線;能完成所有幾何計算以及所有截面視圖和輔助視圖的設計。圖形設以及所有截面視圖和輔助視圖的設計。圖形設計的結果存在圖形文件中,圖形文件可包含幾計的結果存在圖形文件中,圖形文件可包含幾何的、正文的和其他各種補充設計信息。何的、正文的和其他各種補充設計信息。 顯而易見,在這一抽象級別上,用問題域本身顯而易見,在這一抽象級別上,用問題域本身的術語來描述問題的解。的術語來描述問題的解。l抽象抽象 CAD軟件任務;軟件任務; 用戶界面子任務;用戶界面子任務; 創建二維圖形子任務;創建二維圖形子任務; 顯示圖形子任務;顯示圖形子任務; 管理圖形文件子任務;管理圖形文件子任
10、務; end CAD. 在這一抽象級別上,給出了組成在這一抽象級別上,給出了組成CAD軟件任務軟件任務的所有主要子任務,盡管術語已與問題域有所的所有主要子任務,盡管術語已與問題域有所不同,但仍然不是實現所用的語言。不同,但仍然不是實現所用的語言。l抽象抽象(僅以(僅以“創建二維圖形子任務創建二維圖形子任務”為例)為例) PROCEDURE 創建二維圖形創建二維圖形 REPEAT UNTIL DO WHILE 數字儀接口任務;數字儀接口任務; 判斷作圖請求:判斷作圖請求: 線:畫線任務;線:畫線任務; 圓:畫圓任務;圓:畫圓任務; END; DO WHILE 鍵盤接口任務;鍵盤接口任務; 選擇分
11、析或計算:選擇分析或計算: 輔助視圖:輔助視圖任務;輔助視圖:輔助視圖任務; 截面視圖:截面視圖任務;截面視圖:截面視圖任務; END; END REPEAT;END PROCEDURE.l在這一抽象級別上,給出了初步的在這一抽象級別上,給出了初步的過程性表示,此時所有術語都是面過程性表示,此時所有術語都是面向軟件(比如采用向軟件(比如采用do while結構)結構)并且模塊結構也開始明朗。求精過并且模塊結構也開始明朗。求精過程還可繼續下去,直至產生源代碼。程還可繼續下去,直至產生源代碼。l數據抽象與過程抽象一樣,能使設計者按不同數據抽象與過程抽象一樣,能使設計者按不同的詳細程度表示數據對象。
12、的詳細程度表示數據對象。l仍以仍以CAD軟件為例,我們可定義一個稱為軟件為例,我們可定義一個稱為drawing(圖)的數據對象:(圖)的數據對象:TYPE drawing IS STRUCTURE DEFINED number IS STRING LENTH(12); geometry DEFINED notes IS STRING LENTH(256); bom DEFINEDEND drawing TYPE;l在此,在此,drawing被表示為一種結構,其各個組被表示為一種結構,其各個組成 部 件 本 身 又 可 為 某 種 數 據 抽 象 , 比 如成 部 件 本 身 又 可 為 某 種
13、 數 據 抽 象 , 比 如geometry(幾何圖形)和(幾何圖形)和bom。l一旦抽象數據類型一旦抽象數據類型drawing定義完畢,即可用定義完畢,即可用類型名直接說明數據對象,而不必涉及其內部類型名直接說明數據對象,而不必涉及其內部構造的細節,例如,可用語句構造的細節,例如,可用語句: blueprint IS INSTANCE OF drawing; 或或 schematic IS INSTANCE OF drawing; 說明說明blueprint和和schematic具有具有drawing的一切的一切特性。特性。blueprint藍圖,藍圖,schematic簡(略)圖。簡(略)
14、圖。l在抽象數據類型的定義中可以附加一組操作的在抽象數據類型的定義中可以附加一組操作的定義,用以確定在此類數據對象上可進行的操定義,用以確定在此類數據對象上可進行的操作。以抽象數據類型作。以抽象數據類型drawing為例,可以定義為例,可以定義擦除(擦除(erase)、存儲()、存儲(save)、分類()、分類(catalog)和拷貝(和拷貝(copy)等操作。)等操作。l許多程序設計語言都提供了對抽象數據類型的許多程序設計語言都提供了對抽象數據類型的支持,支持,Ada 的程序包機制是對數據抽象和過程的程序包機制是對數據抽象和過程抽象的雙重支持抽象的雙重支持 l關于關于“逐步求精逐步求精”,N
15、.Wirth曾經做過如下說曾經做過如下說明:明: “我們對付復雜問題的重要辦法是抽象,因此,我們對付復雜問題的重要辦法是抽象,因此,對一個復雜的問題不應該立即用計算機指令、對一個復雜的問題不應該立即用計算機指令、數字和邏輯符號來表示,而應該用較自然的抽數字和邏輯符號來表示,而應該用較自然的抽象語言來表示,從而得出抽象程序。抽象程序象語言來表示,從而得出抽象程序。抽象程序對抽象的數據進行某些特定的運算并用某些合對抽象的數據進行某些特定的運算并用某些合適的記號(可能是自然語言)來表示。對抽象適的記號(可能是自然語言)來表示。對抽象程序做進一步分解,進入下一個抽象層次,重程序做進一步分解,進入下一個
16、抽象層次,重復這一精化過程直到程序能被計算機接受為止。復這一精化過程直到程序能被計算機接受為止。這時的程序可能是用某種高級語言或機器指令這時的程序可能是用某種高級語言或機器指令書寫的。書寫的。”l因為求精的每一步都是用更為詳細的描述替代因為求精的每一步都是用更為詳細的描述替代上一層次的抽象描述,所以在整個設計過程中上一層次的抽象描述,所以在整個設計過程中產生的,具有不同詳細程度的各種描述,組成產生的,具有不同詳細程度的各種描述,組成了系統的層次結構。層次結構的上一層是下一了系統的層次結構。層次結構的上一層是下一層的抽象,下一層是上一層的求精。層的抽象,下一層是上一層的求精。l在過程求精的同時自
17、然伴隨著數據的求精,無在過程求精的同時自然伴隨著數據的求精,無論是過程還是數據,每一步細化都蘊涵著某些論是過程還是數據,每一步細化都蘊涵著某些設計決策,因此設計人員必須掌握一些基本的設計決策,因此設計人員必須掌握一些基本的準則,比較各種可能的候選方案。準則,比較各種可能的候選方案。 l軟件總體結構(下一節討論)體現了模軟件總體結構(下一節討論)體現了模塊化思想,即把軟件劃分為可獨立命名塊化思想,即把軟件劃分為可獨立命名和編制的部件,每個部件稱為一個模塊,和編制的部件,每個部件稱為一個模塊,當把所有模塊組裝到一起時,便可獲得當把所有模塊組裝到一起時,便可獲得滿足問題需要的一個解。滿足問題需要的一
18、個解。l“模塊化是唯一對軟件中的程序進行智模塊化是唯一對軟件中的程序進行智能化管理的一個屬性能化管理的一個屬性”。假設:假設:函數函數C(X)問題問題X的復雜性;的復雜性;函數函數E(X)求解問題求解問題X需要花費的工作量(時間);需要花費的工作量(時間);對于問題對于問題P1和和P2,如果,如果 : C(P1)C(P2) 則有則有 : E(P1)E(P2) l結論:解決一個復雜問題總比解決一個簡單問題耗費結論:解決一個復雜問題總比解決一個簡單問題耗費l 更多的工作量。更多的工作量。 同時同時 有:有:C(P1+P2)C(P1)+C(P2) l結論:由結論:由P1、P2組合而成的問題的復雜性往
19、往比考慮組合而成的問題的復雜性往往比考慮l 單個問題復雜性的和更大。單個問題復雜性的和更大。 于是有:于是有: E(P1+P2)E(P1)+E(P2)圖圖8-1-2 模塊與軟件耗費模塊與軟件耗費最小成本最小成本區域區域MO軟件總成本軟件總成本用于接口的成本用于接口的成本每個模塊成本之和每個模塊成本之和模塊總數模塊總數成本或成本或工作量工作量l信息隱蔽原理告訴我們,模塊應該設計得使其信息隱蔽原理告訴我們,模塊應該設計得使其所含信息(過程和數據)對于那些不需要這些所含信息(過程和數據)對于那些不需要這些信息的模塊不可訪問;每個模塊只完成一個相信息的模塊不可訪問;每個模塊只完成一個相對獨立的特定功能
20、;模塊之間僅僅交換那些為對獨立的特定功能;模塊之間僅僅交換那些為完成系統功能必須交換的信息,即模塊應該獨完成系統功能必須交換的信息,即模塊應該獨立。顯然,模塊獨立的概念是模塊化、抽象、立。顯然,模塊獨立的概念是模塊化、抽象、信息隱蔽和局部化等諸多概念的直接結果。信息隱蔽和局部化等諸多概念的直接結果。l它不僅支持模塊的并行開發,而且還可它不僅支持模塊的并行開發,而且還可減少測試和后期維護的工作量。因為測減少測試和后期維護的工作量。因為測試和維護階段不可避免地要修改設計和試和維護階段不可避免地要修改設計和代碼,模塊對大多數數據和過程處理細代碼,模塊對大多數數據和過程處理細節的隱蔽可以減少錯誤向外傳
21、播。此外,節的隱蔽可以減少錯誤向外傳播。此外,整個系統欲擴充功能亦只需整個系統欲擴充功能亦只需“插入插入”新新模塊,原有的多數模塊無須改動。模塊,原有的多數模塊無須改動。l內聚度是前述信息隱蔽和局部化概內聚度是前述信息隱蔽和局部化概念的自然擴展,它標志一個模塊內念的自然擴展,它標志一個模塊內部各成分彼此結合的緊密程度。部各成分彼此結合的緊密程度。 l內聚度按其高低程度可分為七級,內聚度按其高低程度可分為七級,內聚度越高越好。內聚度越高越好。l偶然性內聚(偶然性內聚(coincidental cohesion)。是指一個模塊)。是指一個模塊內各成分為完成一組功能而組合在一起,它們相互之內各成分為
22、完成一組功能而組合在一起,它們相互之間即使有關系,也很松散。常見的偶然性內聚情形是,間即使有關系,也很松散。常見的偶然性內聚情形是,當程序員寫完一個程序后發現有一組語句多處出現,當程序員寫完一個程序后發現有一組語句多處出現,于是為節省內存便將這組語句單獨組成一個模塊。于是為節省內存便將這組語句單獨組成一個模塊。XYZWl如果一個模塊完成的諸任務邏輯上相關,則稱如果一個模塊完成的諸任務邏輯上相關,則稱之為邏輯性內聚(之為邏輯性內聚(logical cohesion)l例如:一個模塊產生所有與類型無關的輸出,例如:一個模塊產生所有與類型無關的輸出,即為邏輯性內聚。即為邏輯性內聚。l又如:模塊又如:
23、模塊X、Y分別調用分別調用A、B,A、B相似,相似,將其合并為模塊將其合并為模塊AB,模塊,模塊AB即為邏輯性內聚。即為邏輯性內聚。XYSABXYSABl如果一個模塊包含的諸任務必須在同一如果一個模塊包含的諸任務必須在同一時間段內執行(例如一個初始化模塊),時間段內執行(例如一個初始化模塊),則稱之為時間性內聚(則稱之為時間性內聚(temporal cohesion)。)。l以上三種內聚形式通常認為是低級內聚。以上三種內聚形式通常認為是低級內聚。l過程性內聚(過程性內聚(procedural cohesion) l模塊的過程性內聚度是指,模塊內成分模塊的過程性內聚度是指,模塊內成分彼此相關,并
24、且必須按特定的次序執行;彼此相關,并且必須按特定的次序執行;l過程內聚模塊的各組成功能由控制流聯過程內聚模塊的各組成功能由控制流聯結在一起。結在一起。l通信性內聚(通信性內聚(communicational cohesion)。)。 l模塊的通信性內聚度是指,模塊中各成分都模塊的通信性內聚度是指,模塊中各成分都將對數據結構的同一區域進行操作,以達到將對數據結構的同一區域進行操作,以達到通信的目的。通信的目的。l例如,模塊例如,模塊A的處理單元是由同一數據文件的處理單元是由同一數據文件的數據產生不同的表格的數據產生不同的表格模塊模塊A從文件從文件FILE讀出數據讀出數據1. 由數據產生報表一由數
25、據產生報表一2. 由數據產生報表二由數據產生報表二l順序性內聚(順序性內聚(sequential cohesion) 。l如果一個模塊內的各處理成分均與同一如果一個模塊內的各處理成分均與同一功能相關,且這些處理必須順序執行,功能相關,且這些處理必須順序執行,則稱順序內聚;則稱順序內聚; 通常,一個處理成分的通常,一個處理成分的輸出是另一個處理成分的輸入。例如:輸出是另一個處理成分的輸入。例如:1. 輸入系數輸入系數2. 求方程的根求方程的根3. 打印方程的根打印方程的根求一元二次方程求一元二次方程根的模塊根的模塊l功能性內聚(功能性內聚(functional cohesion)。)。l如果模塊
26、內所有成分形成一個整體,完如果模塊內所有成分形成一個整體,完成單個功能,則稱功能內聚,功能內聚成單個功能,則稱功能內聚,功能內聚是最高程度的內聚形式。是最高程度的內聚形式。l例如,一個模塊僅完成一個矩陣的輸出,例如,一個模塊僅完成一個矩陣的輸出,就是一個具有功能性內聚的模塊。就是一個具有功能性內聚的模塊。q設計軟件時,應該能夠識別內聚度的高設計軟件時,應該能夠識別內聚度的高低,并通過修改設計盡可能提高模塊內低,并通過修改設計盡可能提高模塊內聚度,從而獲得較高的模塊獨立性。聚度,從而獲得較高的模塊獨立性。l耦合度是對軟件結構中模塊間關聯程度的一種度量。耦合度是對軟件結構中模塊間關聯程度的一種度量
27、。l耦合的強弱取決于模塊間接口的復雜性、進入或調耦合的強弱取決于模塊間接口的復雜性、進入或調用模塊的位置以及通過界面傳送數據的多少等。用模塊的位置以及通過界面傳送數據的多少等。l與內聚度正好相反,在設計軟件時應追求盡可能松與內聚度正好相反,在設計軟件時應追求盡可能松散耦合的系統。因為對這類系統中任一模塊的設計、散耦合的系統。因為對這類系統中任一模塊的設計、測試和維護相對獨立。由于模塊間聯系較少,錯誤測試和維護相對獨立。由于模塊間聯系較少,錯誤在模塊間傳播的可能性也隨之變小。在模塊間傳播的可能性也隨之變小。l模塊間的耦合程度直接影響系統的可理解性、可測模塊間的耦合程度直接影響系統的可理解性、可測
28、試性、可靠性和可維護性。試性、可靠性和可維護性。l耦合度也可以分為七級耦合度也可以分為七級l耦合度也可以分為七級:耦合度也可以分為七級:l如果兩模塊中任一個都不依賴于對方能如果兩模塊中任一個都不依賴于對方能獨立工作,則稱這兩模塊為(獨立工作,則稱這兩模塊為(nodirect coupling),這類耦合度最低。例如:),這類耦合度最低。例如: XYAB無關系無關系l數據耦合(數據耦合(data coupling) l如果兩模塊間通過參數交換信息,而信如果兩模塊間通過參數交換信息,而信息僅限于數據,則稱這兩模塊為數據耦息僅限于數據,則稱這兩模塊為數據耦合。一般軟件系統中都存在數據耦合,合。一般軟
29、件系統中都存在數據耦合,它是完成大多數功能所必需的。例如:它是完成大多數功能所必需的。例如:AB通過參數通過參數傳遞數據傳遞數據l特征耦合(特征耦合(stamp coupling)。)。l介于數據耦合和控制耦合之間的是特征耦合介于數據耦合和控制耦合之間的是特征耦合(stamp coupling)。例如,傳遞了求平均成)。例如,傳遞了求平均成績以外的參數:績以外的參數:producereport cardscalculateaverage printreport cardstudengt recordaverragestudengt recordaverragel控制耦合(控制耦合(contro
30、l coupling)。)。l如果兩模塊間通過參數交換信息,此時如果兩模塊間通過參數交換信息,此時若傳遞的信息中含有控制信息,則耦合若傳遞的信息中含有控制信息,則耦合度上升為控制耦合。控制耦合通常會增度上升為控制耦合。控制耦合通常會增加系統的復雜性,有時適當分解模塊可加系統的復雜性,有時適當分解模塊可消除控制耦合。消除控制耦合。l外部耦合(外部耦合(external coupling)。)。l當若干模塊均與同一個外部環境關聯當若干模塊均與同一個外部環境關聯(例如,(例如,I/O處理使所有處理使所有I/O模塊與特定模塊與特定的設備、格式和通信協議相關聯),它的設備、格式和通信協議相關聯),它們之
31、間便存在外部耦合。外部耦合盡管們之間便存在外部耦合。外部耦合盡管需要,但應限制在少數幾個模塊上。需要,但應限制在少數幾個模塊上。l公共耦合(公共耦合(common coupling)l當若干模塊通過全局的數據環境相互作當若干模塊通過全局的數據環境相互作用時,它們之間存在公共耦合。全局數用時,它們之間存在公共耦合。全局數據環境中可能含有全局變量、公用區、據環境中可能含有全局變量、公用區、內存公共覆蓋區、任何存儲介質上的文內存公共覆蓋區、任何存儲介質上的文件、物理設備等。件、物理設備等。l內容耦合(內容耦合(content coupling)。)。l最高耦合度是內容耦合,出現內容耦合最高耦合度是內
32、容耦合,出現內容耦合的情形包括:當一個模塊使用另一個模的情形包括:當一個模塊使用另一個模塊內部的數據或控制信息;一個模塊直塊內部的數據或控制信息;一個模塊直接轉移到另一個模塊內部,等等。接轉移到另一個模塊內部,等等。l一般來說,設計軟件時應盡量使用數據耦合,一般來說,設計軟件時應盡量使用數據耦合,減少控制耦合,限制外部環境耦合和公共數據減少控制耦合,限制外部環境耦合和公共數據耦合,杜絕內容耦合。耦合,杜絕內容耦合。l值得指出,模塊化設計的思想適用于任何軟件值得指出,模塊化設計的思想適用于任何軟件系統的設計。當某些軟件系統(如實時軟件系統的設計。當某些軟件系統(如實時軟件等),因不能容忍子程序調
33、用引起的時間開銷等),因不能容忍子程序調用引起的時間開銷而必須以整塊軟件的形式出現時,軟件設計仍而必須以整塊軟件的形式出現時,軟件設計仍然應該以模塊化設計的思想為指導,直至編碼然應該以模塊化設計的思想為指導,直至編碼時再改用代入式(時再改用代入式(in line)方法。這樣,源)方法。這樣,源程序中雖不含明顯的模塊,但模塊化設計所帶程序中雖不含明顯的模塊,但模塊化設計所帶來的大部分益處卻已被系統獲得。來的大部分益處卻已被系統獲得。課程名稱:軟件工程課程名稱:軟件工程 第第14講講班班 級:級:日日 期:期:教教 室:室:教學題目:教學題目:8.1.48.1.6,8.2,8.3教學目的:理解軟件
34、設計的概念,掌握幾種設計教學目的:理解軟件設計的概念,掌握幾種設計 技術和工具,了解設計規格說明和評審。技術和工具,了解設計規格說明和評審。 教學重點:幾種設計技術和工具。教學重點:幾種設計技術和工具。教學難點:教學難點: 判定表。判定表。教教 具:多媒體教室、電子教案具:多媒體教室、電子教案作作 業:業:l軟件總體結構(軟件總體結構(software architecture)應該包)應該包括兩方面內容:括兩方面內容: 1) 由系統中所有過程性部件(即模塊)由系統中所有過程性部件(即模塊) 構成的層次結構,即程序結構;構成的層次結構,即程序結構; 2) 對應于程序結構的輸入輸出數據結構。對應
35、于程序結構的輸入輸出數據結構。l軟件總體結構設計的目標就是產生一個模塊化軟件總體結構設計的目標就是產生一個模塊化的程序結構并明確各模塊之間的控制關系,此的程序結構并明確各模塊之間的控制關系,此外還要通過定義界面,說明程序的輸入輸出數外還要通過定義界面,說明程序的輸入輸出數據流,進一步協調程序結構和數據結構。據流,進一步協調程序結構和數據結構。l軟件總體結構(軟件總體結構(software architecture)應該包)應該包括兩方面內容:括兩方面內容: 1) 由系統中所有過程性部件(即模塊)由系統中所有過程性部件(即模塊) 構成的層次結構,即程序結構;構成的層次結構,即程序結構; 2) 對
36、應于程序結構的輸入輸出數據結構。對應于程序結構的輸入輸出數據結構。l軟件總體結構設計的目標就是產生一個模塊化軟件總體結構設計的目標就是產生一個模塊化的程序結構并明確各模塊之間的控制關系,此的程序結構并明確各模塊之間的控制關系,此外還要通過定義界面,說明程序的輸入輸出數外還要通過定義界面,說明程序的輸入輸出數據流,進一步協調程序結構和數據結構。據流,進一步協調程序結構和數據結構。圖圖8-1-3 8-1-3 結構演變結構演變軟件軟件“解解”S1S4S2待解問題待解問題S3P1 P2P4P3圖圖8-1-4 對應于同一問題的各種軟件結構對應于同一問題的各種軟件結構問題問題P結構結構1結構結構2結構結構
37、3M1M2M3M4M1M2M3M4M1M2M3M4MMMl類樹圖(類樹圖(tree like diagram)lWarnier Orr圖圖lJackson圖圖v最常見的是如圖最常見的是如圖8-1-5所示的類樹圖。為所示的類樹圖。為便于討論,下面定義幾個有關的術語和便于討論,下面定義幾個有關的術語和度量。度量。圖圖8-1-5 有關程序結構的術語有關程序結構的術語Mabcdemfgihopqrntjks扇出扇出扇入扇入寬度寬度深度深度l一個軟件的深度(一個軟件的深度(depth) 控制的層數;控制的層數;l一個軟件的寬度(一個軟件的寬度(width) 其控制的層其控制的層數和跨度;數和跨度;l一個
38、模塊的一個模塊的“扇出數扇出數”(fan out) 該模塊直接控制的其他模塊數;該模塊直接控制的其他模塊數;l一個模塊的一個模塊的“扇入數扇入數”(fan in)指能)指能直接控制該模塊的模塊數。直接控制該模塊的模塊數。l如果一個模塊控制另一個模塊,稱前者為如果一個模塊控制另一個模塊,稱前者為“主控主控”模塊,后者為模塊,后者為“從屬從屬”模塊。在圖模塊。在圖8-1-5中模塊中模塊M主控模塊主控模塊a、b、c,模塊,模塊d從屬從屬模塊模塊a,因此也從屬,因此也從屬M。l此外,軟件結構中還有兩個重要的特性,即此外,軟件結構中還有兩個重要的特性,即可見域和連通域。可見域和連通域。v模塊的可見域模塊
39、的可見域該模塊可直接或間接引用該模塊可直接或間接引用 的一組模塊;的一組模塊;v模塊的連通域模塊的連通域僅包括該模塊可直接引用僅包括該模塊可直接引用 的模塊。的模塊。l數據結構描述各數據分量之間的邏輯關系,數數據結構描述各數據分量之間的邏輯關系,數據結構一經確定,數據的組織形式、訪問方法、據結構一經確定,數據的組織形式、訪問方法、組合程度及處理策略等隨之而定,所以數據結組合程度及處理策略等隨之而定,所以數據結構是影響軟件總體結構的重要因素。構是影響軟件總體結構的重要因素。l數據結構與程序結構一樣,也可以在不同的抽數據結構與程序結構一樣,也可以在不同的抽象級別上表示。以棧為例,作為一個抽象數據象
40、級別上表示。以棧為例,作為一個抽象數據類型,在概念級上只關心類型,在概念級上只關心“先進后出先進后出”特性,特性,而在實現級上則要考慮物理表示及內部工作的而在實現級上則要考慮物理表示及內部工作的細節,比如,用向量實現,或用鏈表實現等。細節,比如,用向量實現,或用鏈表實現等。l數據結構對程序結構和過程復雜性有直接的影響,從數據結構對程序結構和過程復雜性有直接的影響,從而在很大程度上決定了軟件的質量。而在很大程度上決定了軟件的質量。l數據設計的目標是為在需求規格說明中定義的那些數數據設計的目標是為在需求規格說明中定義的那些數據對象選擇合適的邏輯表示,并確定可能作用在這些據對象選擇合適的邏輯表示,并
41、確定可能作用在這些邏輯結構上的所有操作(包括選用已存在的程序包)。邏輯結構上的所有操作(包括選用已存在的程序包)。l數據抽象和信息隱蔽兩個概念是數據設計的基礎。數據抽象和信息隱蔽兩個概念是數據設計的基礎。l通常,數據設計方案不是唯一的,有時需進行算法復通常,數據設計方案不是唯一的,有時需進行算法復雜性分析、綜合各種因素之后才能從多種候選方案中雜性分析、綜合各種因素之后才能從多種候選方案中篩選出最佳的設計方案。篩選出最佳的設計方案。l過程設計緊跟在數據結構和程序結構設計之后,過程設計緊跟在數據結構和程序結構設計之后,其基本任務是描述模塊內各處理元素和判斷元其基本任務是描述模塊內各處理元素和判斷元
42、素的順序,圖素的順序,圖8-1-6展示了模塊展示了模塊B的內部過程。的內部過程。過程說明過程說明圖圖8-1-6 模塊模塊B的內部結構的內部結構模塊模塊B模塊模塊B程序結構程序結構l所謂過程,應包括有關處理的精確說明,諸如所謂過程,應包括有關處理的精確說明,諸如事件的順序、判斷的位置和條件、循環操作以事件的順序、判斷的位置和條件、循環操作以及數據的組成,內部變量和外部變量的引用問及數據的組成,內部變量和外部變量的引用問題等等。題等等。l過程設計也應遵循過程設計也應遵循“自上而下,逐步求精自上而下,逐步求精”的的原則和單入口單出口的結構化設計思想。原則和單入口單出口的結構化設計思想。l過程設計的任
43、務是描述算法的細節。結構化程過程設計的任務是描述算法的細節。結構化程序流程圖、盒圖(序流程圖、盒圖(N-S圖)、判定表和判定樹,圖)、判定表和判定樹,以及過程設計語言(以及過程設計語言(PDL)、)、PAD圖等是人們圖等是人們經常使用的工具。經常使用的工具。l結構化程序設計定義:是程序設計技術,它采用自頂結構化程序設計定義:是程序設計技術,它采用自頂向下逐步求精的設計方法和單入口單出口的控制構件。向下逐步求精的設計方法和單入口單出口的控制構件。 l結構化程序設計的思想,應該在軟件設計中體現出來,結構化程序設計的思想,應該在軟件設計中體現出來,但這并不排除為效率或其他原因對結構化程序設計作但這并
44、不排除為效率或其他原因對結構化程序設計作一點修正。隨著面向對象、軟件重用等新的軟件開發一點修正。隨著面向對象、軟件重用等新的軟件開發方法和技術的發展,更現實、更有效的開發途徑可能方法和技術的發展,更現實、更有效的開發途徑可能是自頂向下和自底向上兩種方法有機地結合。是自頂向下和自底向上兩種方法有機地結合。1流程圖(也稱為程序框圖)是最常用的一種流程圖(也稱為程序框圖)是最常用的一種表示法,表示法, “順序順序”、“分支分支”和和“循環循環”三個三個基本控制構件用流程圖表達的形式如圖基本控制構件用流程圖表達的形式如圖8-2-1所所示。示。F第二個任務第二個任務順序結構順序結構then部分部分els
45、e部分部分do while循循環環第一個任務第一個任務T分支條件分支條件If then else結結構構循環條件循環條件循環體循環體TF圖圖8-2-1 流程圖構件流程圖構件 2盒圖也稱為盒圖也稱為N-S圖或圖或Chapin圖。這種表達方圖。這種表達方式取消了流程線,它強迫程序員以結構化方式式取消了流程線,它強迫程序員以結構化方式思考和解決問題。思考和解決問題。第一個任務第一個任務第二個任務第二個任務第三個任務第三個任務順序結構順序結構else部分部分then部分部分條件條件FTif-then-else結構結構do-while部分部分循環條件循環條件循環結構循環結構圖圖8-2-3 盒圖的構件盒圖
46、的構件l當模塊中包含復雜的條件組合,并要根據這當模塊中包含復雜的條件組合,并要根據這些條件的組合選擇動作時,只有判定表和判些條件的組合選擇動作時,只有判定表和判定樹能夠清晰地表達出復雜的條件組合與各定樹能夠清晰地表達出復雜的條件組合與各種動作之間的對應關系。種動作之間的對應關系。 l判定表由四部分組成:判定表由四部分組成:l左上部左上部列出所有條件;列出所有條件;l左下部左下部列出所有可能的動作;列出所有可能的動作;l右上部右上部所有可能的條件組合(矩陣);所有可能的條件組合(矩陣);l右下部右下部條件組合與動作之間的對應關系。條件組合與動作之間的對應關系。l判定表的每一列可解釋為一條處理規則
47、。判定表的每一列可解釋為一條處理規則。【例【例8.2】問題處理描述:耗電記費系統可】問題處理描述:耗電記費系統可以采用固定價格收費、浮動價格收費和其以采用固定價格收費、浮動價格收費和其他方式收費三種方式。若采用固定價格方他方式收費三種方式。若采用固定價格方式收費,對每月耗電式收費,對每月耗電100kWh以下的用戶以下的用戶只征收最低標準費,超過只征收最低標準費,超過100kWh的用戶的用戶按價格表按價格表A收費;若采用浮動價格方式收收費;若采用浮動價格方式收費,則每月耗電費,則每月耗電100kWh以下的用戶按價以下的用戶按價格格A收費,超過收費,超過100kWh的用戶按價格的用戶按價格B收費。
48、收費。規規 則則12345 固定價格方式固定價格方式 浮動價格方式浮動價格方式 耗電耗電100kW.h 耗電耗電100kW.h TFTFTFFTFTTFFTFTFF 收取最低標準費收取最低標準費 按價格表按價格表A收費收費 按價格表按價格表B收費收費 其他處理其他處理 條件條件動作動作 耗電耗電100kWh 收取最低標準費收取最低標準費 固定方式固定方式 耗電耗電100kWh 按價格表按價格表A收費收費 耗電耗電100kWh 按價格表按價格表A收費收費耗電收費耗電收費 浮動方式浮動方式 耗電耗電100kWh 按價格表按價格表B收費收費 其他方式其他方式 其他處理其他處理圖圖8-2-5 用判定樹
49、表示計算耗電收費的算法用判定樹表示計算耗電收費的算法 l判定樹的優點:形式簡單,直觀明了,易于判定樹的優點:形式簡單,直觀明了,易于掌握。掌握。l判定樹的缺點:判定樹的缺點:l存在著數據冗余的問題,相同的數據元素存在著數據冗余的問題,相同的數據元素往往要重復多次,而且越接近樹的葉端重復往往要重復多次,而且越接近樹的葉端重復的次數越多。的次數越多。l 判定樹要求對條件進行層次劃分,若條件判定樹要求對條件進行層次劃分,若條件所處層次不對,可能會導致增加判定樹的復所處層次不對,可能會導致增加判定樹的復雜性。雜性。lPDL(Procedure Design Language)也)也稱為結構英語或偽碼,
50、是所有正文形式稱為結構英語或偽碼,是所有正文形式的過程設計工具的統稱。的過程設計工具的統稱。lPDL經常表現為一種經常表現為一種“混雜混雜”的形式,的形式,允許自然語言(如英語)的詞匯與某種允許自然語言(如英語)的詞匯與某種結構化程序設計語言(如結構化程序設計語言(如Pascal、C、Ada等)的語法結構交織在一起等)的語法結構交織在一起lPDL應具有下述特點:應具有下述特點: 1關鍵字采用固定語法并支持結構化構件、關鍵字采用固定語法并支持結構化構件、數據說明機制和模塊化;數據說明機制和模塊化; 2處理部分采用自然語言描述;處理部分采用自然語言描述; 3允許說明簡單(標量、數組等)和復雜允許說
51、明簡單(標量、數組等)和復雜(鏈表、樹等)的數據結構;(鏈表、樹等)的數據結構; 4子程序的定義與調用規則不受具體接口子程序的定義與調用規則不受具體接口方式的影響。方式的影響。l考察一個考察一個PDL的原型,它可以建立在任意一個通的原型,它可以建立在任意一個通用的結構化程序設計語言之上。基本成分包括:用的結構化程序設計語言之上。基本成分包括:子程序定義、界面描述、數據說明、塊結構、分子程序定義、界面描述、數據說明、塊結構、分支結構、循環結構和支結構、循環結構和I/O結構。結構。數據說明的形式為:數據說明的形式為: TYPE IS 其中:其中:局部變量或全局變量;局部變量或全局變量;某個特定關鍵
52、字(例如,某個特定關鍵字(例如,SCALAR,ARRAY,LIST,STRING,STRUTURE等);等);說明此處定義的變量在該過程或整說明此處定義的變量在該過程或整個程序中應如何使用。個程序中應如何使用。l可進行抽象數據類型的定義,例如可進行抽象數據類型的定義,例如 :TYPE table_1 IS INSTACE OF symbol_table 而而symbol_table在另一處已定義如下:在另一處已定義如下:TYPE symbol_table IS STRUCTURE DEFINEDl該該PDL的塊結構描述一個過程元素,即一個塊的塊結構描述一個過程元素,即一個塊內的所有語句將作為一
53、個整體執行,形式為內的所有語句將作為一個整體執行,形式為 BEGIN END該該PDL的分支結構有的分支結構有if-then-else和和case兩種形式,兩種形式,分別為分別為 IF THEN ELSE ENDIFCASE OF WHEN SELECT WHEN SELECT WHEN SELECT DEFAULT:ENDCASE循環結構包括三類,表達形式分別為循環結構包括三類,表達形式分別為 :DO WHILE ENDWHILEREPEAT UNTIL ENDREPEATDOFOR = ENDFORl此此PDL還提供了還提供了NEXT和和EXIT兩種語句:兩種語句:l EXIT語句,退出本
54、層循環;語句,退出本層循環;l NEXT語句強迫本次循環結束,新一輪循環開語句強迫本次循環結束,新一輪循環開始。始。l在該在該PDL中,子程序說明為:中,子程序說明為:l PROCEDURE l INTERFACE l l ENDl 其中屬性表指明該子程序的引用特性(比如,是其中屬性表指明該子程序的引用特性(比如,是INTERNAL還是還是EXTERNAL模式)和其他依賴于模式)和其他依賴于實現(即程序設計語言)的特性。實現(即程序設計語言)的特性。l輸入輸入/輸出說明部分常用的形式有輸出說明部分常用的形式有 READ/WRITE TO 或或 ASK ANSWER 后一種形式多用于人機交互部分
55、的設計。后一種形式多用于人機交互部分的設計。l軟件設計階段的輸出主要是設計規格說明書:軟件設計階段的輸出主要是設計規格說明書:第一節:描述與設計活動有關的各個方面,該節第一節:描述與設計活動有關的各個方面,該節中許多信息取自系統規格說明書和系統定義階中許多信息取自系統規格說明書和系統定義階段產生的其他文檔。段產生的其他文檔。第二節:具體指明引用信息的出處。第二節:具體指明引用信息的出處。第三節:設計描述,是概要設計的產物,此時設第三節:設計描述,是概要設計的產物,此時設計由信息驅動,即軟件總體結構主要受數據流計由信息驅動,即軟件總體結構主要受數據流程、數據結構的影響,需求分析時產生的程、數據結
56、構的影響,需求分析時產生的DFD或其他某種形式的數據表示將在這一節中進一或其他某種形式的數據表示將在這一節中進一步精化,用于確定軟件結構。當信息流程確定步精化,用于確定軟件結構。當信息流程確定后,界面亦可作為整個軟件的一部分進行描述。后,界面亦可作為整個軟件的一部分進行描述。第四、五兩節是概要設計向詳細設計過渡后形成的。第四、五兩節是概要設計向詳細設計過渡后形成的。第四節:模塊指軟件中可單獨編址的部件,如函數和第四節:模塊指軟件中可單獨編址的部件,如函數和過程,最初用自然語言描述它們的功能,隨后采用過程,最初用自然語言描述它們的功能,隨后采用某種過程設計工具將這些自然語言描述轉換為結構某種過程
57、設計工具將這些自然語言描述轉換為結構化描述。化描述。第五節:主要描述數據組織結構,包括輔存的文件結第五節:主要描述數據組織結構,包括輔存的文件結構、全局數據(例如構、全局數據(例如FORTRAN公共區)的賦值以公共區)的賦值以及這些文件與全局數據的交叉訪問關系。及這些文件與全局數據的交叉訪問關系。第六節:是與需求規格說明書的交叉訪問表,根據交叉第六節:是與需求規格說明書的交叉訪問表,根據交叉訪問表可斷定設計是否滿足所有需求,這對于完成某訪問表可斷定設計是否滿足所有需求,這對于完成某個具體需求的模塊來說十分重要。個具體需求的模塊來說十分重要。第七節:是測試的初步計劃。一旦軟件結構和模塊間界第七節:是測試的初步計劃
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 珠寶首飾行業直播營銷實戰技巧考核試卷
- 寵物友好郵輪旅行船上寵物友好住宿條件考核試卷
- 稻谷種植新型農業經營主體培育考核試卷
- 玩具初創企業融資渠道考核試卷
- 禮儀用品行業市場營銷策劃考核試卷
- 紡紗企業的技術引進與轉化考核試卷
- 石棉水泥制品的安全生產事故案例分析考核試卷
- 電信服務在農業現代化中的作用考核試卷
- 稻谷加工產業鏈中游企業發展戰略考核試卷
- 武漢大學《超分子藥物》2023-2024學年第二學期期末試卷
- imo中的問題定理與方法
- 新能源汽車運用與維修專業人才培養方案
- 浙江公路技師學院教師招聘考試真題2022
- 氨吹脫塔單元設計示例
- 中國移動-安全-L3
- 骨齡評測方法課件
- GB/T 42314-2023電化學儲能電站危險源辨識技術導則
- 人教小學數學五年級下冊綜合與實踐《怎樣通知最快》示范公開課教學課件
- 海陸熱力性質差異的說課課件
- 科學院大學博士入學復試匯報個人介紹PPT模板
- 迎春杯2023年-2023年中高年級初賽復賽試題真題整理
評論
0/150
提交評論