第0章設計工程_第1頁
第0章設計工程_第2頁
第0章設計工程_第3頁
第0章設計工程_第4頁
第0章設計工程_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、軟件工程軟件工程復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程2/71內容摘要內容摘要 軟件設計工程概述軟件設計工程概述 軟件設計原則軟件設計原則 軟件體系結構設計軟件體系結構設計 部件級設計技術部件級設計技術 設計規(guī)約與設計評審設計規(guī)約與設計評審復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程3/71內容摘要內容摘要 軟件設計原則軟件設計原則 軟件體系結構設計軟件體系結構設計 部件級設計技術部件級設計技術 設計規(guī)約與設計評審設計規(guī)約與設計評審復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程4/71軟件

2、設計工程概述軟件設計工程概述 軟件需求分析解決軟件需求分析解決“做什么做什么”的問題,軟的問題,軟件設計過程則解決件設計過程則解決“怎么做怎么做”的問題的問題 軟件設計是把軟件需求變換成軟件表示的軟件設計是把軟件需求變換成軟件表示的過程,它主要包含兩個階段:過程,它主要包含兩個階段:軟件體系結構設計階段和和部件級設計 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程5/71軟件設計的任務軟件設計的任務 使用一種設計方法,軟件分析模型中通過數據、使用一種設計方法,軟件分析模型中通過數據、功能和行為模型所展示的軟件需求的信息被傳功能和行為模型所展示的軟件需求的信息被傳

3、送給設計階段,產生數據送給設計階段,產生數據/類設計、體系結構類設計、體系結構設計、接口設計、部件級設計設計、接口設計、部件級設計 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程6/71 數據/類設計:將分析:將分析-類模型變換成類類模型變換成類的實現和軟件實現所需要的數據結構的實現和軟件實現所需要的數據結構 體系結構設計:體系結構設計定義了軟:體系結構設計定義了軟件的整體結構件的整體結構 接口設計:接口設計描述了軟件內部、:接口設計描述了軟件內部、軟件和協(xié)作系統(tǒng)之間以及軟件同人之間軟件和協(xié)作系統(tǒng)之間以及軟件同人之間如何通信如何通信 部件級設計:部件級設計將軟件

4、體系結:部件級設計將軟件體系結構的結構性元素變換為對軟件部件的過構的結構性元素變換為對軟件部件的過程性描述程性描述 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程7/711)數據)數據/類設計類設計 在類和由在類和由crc中定義的數據對象和關系以及數中定義的數據對象和關系以及數據字典中描述的詳細數據內容提供了數據設計據字典中描述的詳細數據內容提供了數據設計活動的基礎活動的基礎 數據設計的過程包括以下兩步數據設計的過程包括以下兩步 : 首先,為在需求分析階段所確定的數據對象選擇邏輯表示,需要對不同結構進行算法分析,以便選擇一個最有效的設計方案; 然后,確定對邏輯數

5、據結構所必需的那些操作的程序模塊,以便限制或確定各個數據設計決策的影響范圍。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程8/712)體系結構設計)體系結構設計 體系結構設計定義了軟件的整體結構,體系結構設計定義了軟件的整體結構,它由軟件部件、外部可見的屬性和它它由軟件部件、外部可見的屬性和它們之間的關系組成。們之間的關系組成。 體系結構設計表示可以從系統(tǒng)規(guī)約、體系結構設計表示可以從系統(tǒng)規(guī)約、分析模型和分析模型中定義的子系統(tǒng)分析模型和分析模型中定義的子系統(tǒng)的交互導出。的交互導出。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程9

6、/713)接口設計)接口設計 接口設計主要包括三個方面:接口設計主要包括三個方面:設計軟件模塊間的接口設計模塊和其他非人的信息生產者和消費者(比如外部實體)之間的接口設計人(用戶)和計算機間的接口 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程10/714)部件級設計)部件級設計 部件級設計將軟件體系結構的結構性部件級設計將軟件體系結構的結構性元素變換為對軟件部件的過程性描述。元素變換為對軟件部件的過程性描述。 從類為基礎的模型、流模型、行為模從類為基礎的模型、流模型、行為模型中得到的信息是部件設計的基礎。型中得到的信息是部件設計的基礎。 復旦大學計算機科學與工

7、程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程11/71軟件設計的目標軟件設計的目標 在進行軟件設計的過程中,我們要密切關在進行軟件設計的過程中,我們要密切關注軟件的質量因素。注軟件的質量因素。 mcglanghlin 軟件設計過程的目標:軟件設計過程的目標: 1)設計必須實現分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。2)設計必須是可讀、可理解的,使得將來易于編程、易于測試、易于維護。3)設計應從實現角度出發(fā),給出與數據、功能、行為相關的軟件全貌。復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程12/71衡量設計的技術標準衡量設計的技

8、術標準 1)設計出來的結構應是分層結構,從而建立設計出來的結構應是分層結構,從而建立軟件成份之間的控制。軟件成份之間的控制。2)設計應當模塊化,從邏輯上將軟件劃分為設計應當模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的部件。完成特定功能或子功能的部件。3)設計應當既包含數據抽象,也包含過程抽設計應當既包含數據抽象,也包含過程抽象。象。4)設計應當建立具有獨立功能特征的模塊。設計應當建立具有獨立功能特征的模塊。5)設計應當建立能夠降低模塊與外部環(huán)境之設計應當建立能夠降低模塊與外部環(huán)境之間復雜連接的接口。間復雜連接的接口。6)設計應能根據軟件需求分析獲取的信息,設計應能根據軟件需求分析獲取的信

9、息,建立可驅動、可重復的方法。建立可驅動、可重復的方法。復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程13/71軟件設計的過程軟件設計的過程 1)制定規(guī)范制定規(guī)范2)體系結構和接口設計體系結構和接口設計3)數據數據/類設計類設計4)部件級(過程)設計部件級(過程)設計5)編寫設計文檔編寫設計文檔6)設計評審設計評審復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程14/71內容摘要內容摘要 軟件設計工程概述軟件設計工程概述 軟件體系結構設計軟件體系結構設計 部件級設計技術部件級設計技術 設計規(guī)約與設計評審設計規(guī)約與設計評審復旦大學計算

10、機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程15/71抽象化與逐步求精抽象化與逐步求精 抽象,是在軟件設計的規(guī)模逐漸增,是在軟件設計的規(guī)模逐漸增大的情況下,控制復雜性的基本策大的情況下,控制復雜性的基本策略。略。 抽象的過程是從特殊到一般的過程,抽象的過程是從特殊到一般的過程,上層概念是下層概念的抽象,下層上層概念是下層概念的抽象,下層概念是上層概念的精化和細化。概念是上層概念的精化和細化。 軟件工程過程的每一步都是對較高軟件工程過程的每一步都是對較高一級抽象的解作一次具體化的描述一級抽象的解作一次具體化的描述 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工

11、程課程軟件工程課程16/71 軟件設計中主要抽象手段有:軟件設計中主要抽象手段有:過程抽象和和數據抽象 過程抽象(也稱功能抽象)是指任何一(也稱功能抽象)是指任何一個完成明確定義功能的操作都可被使用個完成明確定義功能的操作都可被使用者當作單個實體看待,盡管這個操作實者當作單個實體看待,盡管這個操作實際上是由一系列更低級的操作來完成的際上是由一系列更低級的操作來完成的 數據抽象是指定義數據類型和施加于該是指定義數據類型和施加于該類型對象的操作,并限定了對象的取值類型對象的操作,并限定了對象的取值范圍,只能通過這些操作修改和觀察數范圍,只能通過這些操作修改和觀察數據據復旦大學計算機科學與工程系復旦

12、大學計算機科學與工程系 軟件工程課程軟件工程課程17/71逐步求精逐步求精 逐步求精,把問題的求解過程分解成若干,把問題的求解過程分解成若干步驟或階段,每步都比上步更精化,更接步驟或階段,每步都比上步更精化,更接近問題的解法近問題的解法 抽象使得設計者能夠描述過程和數據而忽使得設計者能夠描述過程和數據而忽略低層的細節(jié),而略低層的細節(jié),而求精有助于設計者在設有助于設計者在設計過程中揭示低層的細節(jié)計過程中揭示低層的細節(jié) 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程18/71模塊化模塊化 模塊化,即把軟件按照規(guī)定原則,劃分為,即把軟件按照規(guī)定原則,劃分為一個個較小的

13、,相互獨立的但又相互關聯一個個較小的,相互獨立的但又相互關聯的部件,實際上是系統(tǒng)分解和抽象的過程。的部件,實際上是系統(tǒng)分解和抽象的過程。 模塊是數據說明、可執(zhí)行語句等程序對象是數據說明、可執(zhí)行語句等程序對象的集合,它是單獨命名的,并且可以通過的集合,它是單獨命名的,并且可以通過名字來訪問名字來訪問 例如,過程。函數、子程序、宏等 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程19/71 設設c(x)是描述問題是描述問題x 復雜性的函數,復雜性的函數,e(x)是解決問題是解決問題x 所需工作量所需工作量(按時間計算按時間計算)的的函數。對于兩個問題函數。對于兩個問

14、題p1 和和p2,如果,如果 c(p1)c(p2)(4.1a) 那么那么 e(p1)e(p2) (4.1b) 即問題越復雜,解決問題所需要的花費即問題越復雜,解決問題所需要的花費更多。更多。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程20/71 通過對人解決問題的實驗,又存在另一個有趣通過對人解決問題的實驗,又存在另一個有趣的規(guī)律:的規(guī)律: c(p1p2)c(p1)c(p2) (4.2) 方程式方程式(4.2)意味著意味著p1 和和p2 組合后的復雜性組合后的復雜性比單獨考慮每個問題時的復雜性要大。考慮方比單獨考慮每個問題時的復雜性要大。考慮方程式程式(4.

15、2)和方程式和方程式(4.1)隱含的條件,我們可隱含的條件,我們可以得出以得出 e(p1p2) e(p1)e(p2) (4.3) 不等式不等式(4.3)表達出了一個對于模塊化和軟件表達出了一個對于模塊化和軟件具有十分重要意義的結論(即,模塊化的論具有十分重要意義的結論(即,模塊化的論據):將復雜問題分解成可以管理的片斷會更據):將復雜問題分解成可以管理的片斷會更使解決問題更加容易。使解決問題更加容易。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程21/71 如果我們無限制地劃分軟件,開發(fā)它所需如果我們無限制地劃分軟件,開發(fā)它所需的工作量會變得小到可以忽略?!的

16、工作量會變得小到可以忽略?! 事實上,影響軟件開發(fā)的工作量的因素還事實上,影響軟件開發(fā)的工作量的因素還有很多,例如模塊接口費用等等有很多,例如模塊接口費用等等 上述不等式只能說明,當模塊的總數增加上述不等式只能說明,當模塊的總數增加時,單獨開發(fā)各個子模塊的工作量之和會時,單獨開發(fā)各個子模塊的工作量之和會有所減少有所減少 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程22/71 如果模塊是相互獨立的,當模塊變得越如果模塊是相互獨立的,當模塊變得越小,每個模塊花費的工作量越低;小,每個模塊花費的工作量越低; 但當模塊數增加時,模塊間的聯系也隨但當模塊數增加時,模塊間

17、的聯系也隨之增加,把這些模塊聯接起來的工作量之增加,把這些模塊聯接起來的工作量也隨之增加。也隨之增加。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程23/71信息隱藏信息隱藏 每個模塊的實現細節(jié)對于其它模塊來說應每個模塊的實現細節(jié)對于其它模塊來說應該是隱蔽的該是隱蔽的 塊中所包含的信息(包括數據和過程)不塊中所包含的信息(包括數據和過程)不允許其它不需要這些信息的模塊使用允許其它不需要這些信息的模塊使用 通過通過信息隱蔽,則可定義和實施對模塊的,則可定義和實施對模塊的過程細節(jié)和局部數據結構的存取限制過程細節(jié)和局部數據結構的存取限制 復旦大學計算機科學與工程系復

18、旦大學計算機科學與工程系 軟件工程課程軟件工程課程24/71模塊獨立模塊獨立 模塊獨立:模塊完成獨立的功能并且與:模塊完成獨立的功能并且與其他模塊的接口簡單,符合信息隱蔽和其他模塊的接口簡單,符合信息隱蔽和信息局部化原則,模塊間關聯和依賴程信息局部化原則,模塊間關聯和依賴程度盡可能小度盡可能小 模塊獨立的重要性模塊獨立的重要性 功能被劃分,并且接口被簡化,所以具有有效模塊化的軟件更易于開發(fā) 由于因設計和編碼修改引起的副作用受到局限,錯誤傳播被減小,并且模塊復用成為可能,所以獨立的模塊更易于維護和測試 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程25/71模塊獨

19、立模塊獨立 模塊的獨立性可以由兩項指標來衡量:模塊的獨立性可以由兩項指標來衡量:內聚度與與耦合度 內聚(cohesion)是一個模塊內部各個元是一個模塊內部各個元素彼此結合的緊密程度的度量素彼此結合的緊密程度的度量 耦合(coupling)是模塊之間的相對獨立性是模塊之間的相對獨立性(互相連接的緊密程度)的度量(互相連接的緊密程度)的度量 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程26/71內聚內聚 一般模塊的內聚性分為七種類型一般模塊的內聚性分為七種類型 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程27/71內聚內聚1)巧

20、合內聚(偶然內聚):將幾個模塊中沒有:將幾個模塊中沒有明確表現出獨立功能的相同程序代碼段獨立出明確表現出獨立功能的相同程序代碼段獨立出來建立的模塊稱為巧合內聚模塊。來建立的模塊稱為巧合內聚模塊。2)邏輯內聚 :指完成一組邏輯相關任務的模:指完成一組邏輯相關任務的模塊,調用該模塊時,由傳送給模塊的控制型參塊,調用該模塊時,由傳送給模塊的控制型參數來確定該模塊應執(zhí)行哪一種功能。數來確定該模塊應執(zhí)行哪一種功能。3)時間內聚:指一個模塊中的所有人物必須在:指一個模塊中的所有人物必須在同一時間段內執(zhí)行。例如初始化模塊和終止模同一時間段內執(zhí)行。例如初始化模塊和終止模塊。塊。復旦大學計算機科學與工程系復旦大

21、學計算機科學與工程系 軟件工程課程軟件工程課程28/71內聚內聚4)過程內聚 :指一個模塊完成多個任務,這:指一個模塊完成多個任務,這些任務必須按指定的過程(些任務必須按指定的過程(procedural)執(zhí)行。)執(zhí)行。5)通信內聚 :指一個模塊內所有處理元素都:指一個模塊內所有處理元素都集中在某個數據結構的一塊區(qū)域中。集中在某個數據結構的一塊區(qū)域中。6)順序內聚:指一個模塊完成多個功能,這些:指一個模塊完成多個功能,這些功能又必須順序執(zhí)行。功能又必須順序執(zhí)行。7)功能內聚 :指一個模塊中各個部分都是為:指一個模塊中各個部分都是為完成一項具體功能而協(xié)同工作,緊密聯系,不完成一項具體功能而協(xié)同工作

22、,緊密聯系,不可分割的??煞指畹摹偷┐髮W計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程29/71耦合耦合 一般模塊之間可能的耦合方式有七種類型一般模塊之間可能的耦合方式有七種類型 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程30/71耦合耦合1)內容耦合 :如果一個模塊直接訪問另一個模塊的內部:如果一個模塊直接訪問另一個模塊的內部數據;或者一個模塊不通過正常入口轉到另一模塊內部;數據;或者一個模塊不通過正常入口轉到另一模塊內部;或者兩個模塊有一部分程序代碼重迭;或者一個模塊有或者兩個模塊有一部分程序代碼重迭;或者一個模塊有多個入口,則

23、兩個模塊之間就發(fā)生了內容耦合。多個入口,則兩個模塊之間就發(fā)生了內容耦合。2)公共耦合 :若一組模塊都訪問同一個公共數據環(huán)境,:若一組模塊都訪問同一個公共數據環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數據環(huán)境可則它們之間的耦合就稱為公共耦合。公共的數據環(huán)境可以是全局數據結構、共享的通信區(qū)、內存的公共覆蓋區(qū)以是全局數據結構、共享的通信區(qū)、內存的公共覆蓋區(qū)等。等。3)外部耦合 :指模塊間通過軟件之外的環(huán)境聯結(如:指模塊間通過軟件之外的環(huán)境聯結(如i/o將模塊耦合到特定的設備、格式、通信協(xié)議上)時,將模塊耦合到特定的設備、格式、通信協(xié)議上)時,稱為外部耦合。稱為外部耦合。復旦大學計算機科學與工程系

24、復旦大學計算機科學與工程系 軟件工程課程軟件工程課程31/71耦合耦合4)控制耦合:如果一個模塊傳送給另一個模塊:如果一個模塊傳送給另一個模塊的參數中包含了控制信息,該控制信息用于控的參數中包含了控制信息,該控制信息用于控制接收模塊中的執(zhí)行邏輯,則稱為控制耦合。制接收模塊中的執(zhí)行邏輯,則稱為控制耦合。5)標記耦合:兩個模塊之間通過參數表傳遞一:兩個模塊之間通過參數表傳遞一個數據結構的一部分(如某一數據結構的子結個數據結構的一部分(如某一數據結構的子結構),就是標記耦合。構),就是標記耦合。6)數據耦合:兩個模塊之間僅通過參數表傳遞:兩個模塊之間僅通過參數表傳遞簡單數據,則稱為數據耦合。簡單數據

25、,則稱為數據耦合。7)非直接耦合 :如果兩個模塊之間沒有直接:如果兩個模塊之間沒有直接關系,即它們中的任何一個都不依賴于另一個關系,即它們中的任何一個都不依賴于另一個而能獨立工作,這種耦合稱為非直接耦合。而能獨立工作,這種耦合稱為非直接耦合。復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程32/71 模塊之間的連接越緊密,聯系越多,耦模塊之間的連接越緊密,聯系越多,耦合性就越高,而其模塊獨立性就越弱合性就越高,而其模塊獨立性就越弱 一個模塊內部各個元素之間的聯系越緊一個模塊內部各個元素之間的聯系越緊密,則它的內聚性就越高密,則它的內聚性就越高 模塊獨立性比較強的模

26、塊應是模塊獨立性比較強的模塊應是高內聚低耦合的模塊的模塊 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程33/71內容摘要內容摘要 軟件設計工程概述軟件設計工程概述 軟件設計原則軟件設計原則 部件級設計技術部件級設計技術 設計規(guī)約與設計評審設計規(guī)約與設計評審復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程34/71軟件體系結構設計軟件體系結構設計 軟件體系結構關注系統(tǒng)的一個或多個結構,軟件體系結構關注系統(tǒng)的一個或多個結構,包含軟件構件、這些構件的對外可見的性包含軟件構件、這些構件的對外可見的性質以及它們之間的關系質以及它們之間的關系

27、 bass提出體系結構重要的三個關鍵理由:提出體系結構重要的三個關鍵理由: 方便利益相關人員的交流 有利于系統(tǒng)設計的前期決策 可傳遞的系統(tǒng)級抽象 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程35/71體系結構發(fā)展過程體系結構發(fā)展過程 常見的軟件體系結構常見的軟件體系結構單主機結構單主機結構c/s(client/server)結構)結構b/s(browser/server)結構)結構 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程36/71軟件體系結構的風格軟件體系結構的風格 絕大多數可以被歸類為相對小數量的體絕大多數可以被歸類為

28、相對小數量的體系結構風格之一系結構風格之一 每種風格描述一種系統(tǒng)范疇,范疇包括:每種風格描述一種系統(tǒng)范疇,范疇包括: 一些實現系統(tǒng)所需的功能的部件(如數據庫、計算模塊); 一組用來連接部件“通信、協(xié)調和合作”的“連接子”; 定義部件之間怎樣整合的系統(tǒng)約束; 使設計者能夠理解整個系統(tǒng)屬性并分析已知屬性的語義模型。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程37/71數據為中心體系結構數據為中心體系結構 一些數據(比如一個文件或者數據庫)保一些數據(比如一個文件或者數據庫)保存在整個結構的中心,并且被其他部件頻存在整個結構的中心,并且被其他部件頻繁地使用、添加、

29、刪除、或者修改繁地使用、添加、刪除、或者修改 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程38/71數據流風格的體系結構數據流風格的體系結構 這種結構適用于輸入數據被一系列的計算這種結構適用于輸入數據被一系列的計算或者處理部件變換成輸出數據?;蛘咛幚聿考儞Q成輸出數據。復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程39/71調用和返回風格的體系結構調用和返回風格的體系結構 這種風格使一個軟件設計者設計出非常容這種風格使一個軟件設計者設計出非常容易修改和擴充的體系結構。易修改和擴充的體系結構。 包含:包含:主程序/子程序風格體系結

30、構和和遠程過程調用風格的體系結構 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程40/71 在這里要了解幾個概念:在這里要了解幾個概念: 程序結構的深度程序結構的深度:程序結構的層次數稱為結構的深度。結構的深度在一定意義上反映了程序結構的規(guī)模和復雜程度。 程序結構的寬度程序結構的寬度:層次結構中同一層模塊的最大模塊個數稱為結構的寬度。 模塊的扇入和扇出模塊的扇入和扇出:扇出表示一個模塊直接調用(或控制)的其它模塊數目。扇入則定義為調用(或控制)一個給定模塊的模塊個數。多扇出意味著需要控制和協(xié)調許多下屬模塊。而多扇入的模塊通常是公用模塊。復旦大學計算機科學與工程系

31、復旦大學計算機科學與工程系 軟件工程課程軟件工程課程41/71面向對象風格的體系結構面向對象風格的體系結構 系統(tǒng)部件封裝數據和操作數據的系統(tǒng)部件封裝數據和操作數據的方法。方法。 部件之間的交互和協(xié)調通過消息部件之間的交互和協(xié)調通過消息來傳遞。來傳遞。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程42/71層次式風格的體系結構層次式風格的體系結構 在這種結構中,定義不同的層次,每層都在這種結構中,定義不同的層次,每層都完成了相對外層更靠近機器指令的操作完成了相對外層更靠近機器指令的操作復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程

32、43/71評估可選的體系結構評估可選的體系結構 對于同一個軟件需求,由于各種設計方法對于同一個軟件需求,由于各種設計方法的原理不同,會導出不同的軟件結構。的原理不同,會導出不同的軟件結構。 同一問題的不同軟件結構:同一問題的不同軟件結構:復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程44/71atam(architecture trade-off analysis method) 1)定義應用場景(定義應用場景(scenarios):通過):通過use case圖來從用戶的角度表現系統(tǒng)。圖來從用戶的角度表現系統(tǒng)。2)得出需求、約束和環(huán)境描述:這是需求工程得出需求

33、、約束和環(huán)境描述:這是需求工程的一部分,用以確定所有客戶方關心的問題都的一部分,用以確定所有客戶方關心的問題都被列出。被列出。3)描述能處理上述情境和需求的體系結構風格。描述能處理上述情境和需求的體系結構風格。4)單獨地評價系統(tǒng)的各項性能。針對體系結構單獨地評價系統(tǒng)的各項性能。針對體系結構設計的性能包括:可靠性,性能、安全性,可設計的性能包括:可靠性,性能、安全性,可維護性,靈活性,可測試性,可移植性,可重維護性,靈活性,可測試性,可移植性,可重用性和互操作性等。用性和互操作性等。復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程45/71atam(architec

34、ture trade-off analysis method)5)針對不同的架構形式,評價第針對不同的架構形式,評價第4步提到的這些性能的敏步提到的這些性能的敏感程度。可以通過這樣的方法來評價:在整個架構中做感程度。可以通過這樣的方法來評價:在整個架構中做一些小的變更,分析并確定上訴性能有沒有很敏感的變一些小的變更,分析并確定上訴性能有沒有很敏感的變化。那些在體系結構改動中受到較大影響的性能被稱為化。那些在體系結構改動中受到較大影響的性能被稱為敏感點(敏感點(sensitive point)。)。6)通過第通過第5步的敏感度分析來評價第三步中提出的那些體步的敏感度分析來評價第三步中提出的那些體

35、系結構。系結構。sei描述的方法如下:當一個架構的敏感點被描述的方法如下:當一個架構的敏感點被確定,我們需要找到在系統(tǒng)中最需要權衡利弊的因素確定,我們需要找到在系統(tǒng)中最需要權衡利弊的因素(trade-off point)。權衡因素就是指改變架構中的)。權衡因素就是指改變架構中的這項內容系統(tǒng)的很多性能就會發(fā)生敏感的變化。比如說,這項內容系統(tǒng)的很多性能就會發(fā)生敏感的變化。比如說,一個一個client-server結構的系統(tǒng)的表現性能和系統(tǒng)中結構的系統(tǒng)的表現性能和系統(tǒng)中server的數量是息息相關的(比如增加的數量是息息相關的(比如增加server的數量,的數量,一定程度上系統(tǒng)的表現性能就會提高)一

36、定程度上系統(tǒng)的表現性能就會提高)這樣的話,這樣的話,server的數量就是這個架構中的平衡點。的數量就是這個架構中的平衡點。復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程46/71 在進行軟件體系結構設計時,可以參考如下規(guī)在進行軟件體系結構設計時,可以參考如下規(guī)則:則: (1) 改進軟件結構提高模塊獨立性(2)模塊適當的深度、寬度、扇出和扇入(3)模塊判斷作用范圍應在其控制作用范圍內(4)力爭降低模塊接口的復雜度(5)設計單入口單出口的模塊(6)模塊功能應該是可以預測的模塊大小適中(7)一般一個模塊包含的語句在3050條左右較好。(8)一個設計好的軟件結構,通常

37、頂層扇出比較高,中層扇出比較少,底層有高扇入。復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程47/71內容摘要內容摘要 軟件設計工程概述軟件設計工程概述 軟件設計原則軟件設計原則 軟件體系結構設計軟件體系結構設計 設計規(guī)約與設計評審設計規(guī)約與設計評審復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程48/71部件級設計技術部件級設計技術 在結構化分析和設計方法時部件往往被稱在結構化分析和設計方法時部件往往被稱為為模塊 在面向對象分析和設計時部件被稱為類,在面向對象分析和設計時部件被稱為類,在基于構件的開發(fā)方法中,部件被稱為在基于構件的

38、開發(fā)方法中,部件被稱為構件。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程49/71部件級設計技術部件級設計技術 在部件級設計階段,主要完成如下工作:在部件級設計階段,主要完成如下工作:(1)為每個部件確定采用的算法,選擇某種適當的工具表達算法的過程,編寫部件的詳細過程性描述; (2)確定每一部件內部使用的數據結構; (3)在部件級設計結束時,應該把上述結果寫入部件級設計說明書,并且通過復審形成正式文檔,作為下一階段(編碼階段)的工作依據。 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程50/71結構化程序設計方法結構化程序設計

39、方法 一種較為流行的定義是:一種較為流行的定義是:“如果一個程序如果一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這三的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本控制結構進行連結,并且每個代碼種基本控制結構進行連結,并且每個代碼塊只有一個入口和一個出口,則稱這個程塊只有一個入口和一個出口,則稱這個程序是結構化的序是結構化的”。 隨著面向對象和軟件復用等新的軟件開發(fā)隨著面向對象和軟件復用等新的軟件開發(fā)方法和技術的發(fā)展,更現實、更有效的開方法和技術的發(fā)展,更現實、更有效的開發(fā)途徑可能是自頂向下和自底向上兩種方發(fā)途徑可能是自頂向下和自底向上兩種方法有機的結合。法有機的結合。 復旦大學計算機科學與工程系復旦大

40、學計算機科學與工程系 軟件工程課程軟件工程課程51/71圖形表示法圖形表示法 程序流程圖 n-s圖 pad 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程52/71程序流程圖程序流程圖 程序流程圖獨立于任何一種程序設計語言,程序流程圖獨立于任何一種程序設計語言,比較直觀、清晰、易于學習掌握比較直觀、清晰、易于學習掌握 為使用流程圖描述結構化程序,必須限制為使用流程圖描述結構化程序,必須限制流程圖只能使用五種基本控制結構流程圖只能使用五種基本控制結構 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程53/71控制結構相互組合和嵌套的實

41、例控制結構相互組合和嵌套的實例 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程54/71n-s圖圖 nassi和和shneiderman 提出了一種符合提出了一種符合結構化程序設計原則的圖形描述工具,叫結構化程序設計原則的圖形描述工具,叫做盒圖,也叫做做盒圖,也叫做n-s圖圖 五種基本控制結構五種基本控制結構 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程55/71控制結構相互組合和嵌套的實例控制結構相互組合和嵌套的實例復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程56/71pad pad是是pro

42、blem analysis diagram的縮的縮寫寫 ,由程序流程圖演化而來,由程序流程圖演化而來 五種基本控制結構五種基本控制結構 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程57/71pad實例實例 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程58/71判定表判定表 當算法中包含多重嵌套的條件選擇時,用當算法中包含多重嵌套的條件選擇時,用程序流程圖、程序流程圖、n-s圖或圖或pad都不易清楚地都不易清楚地描述。描述。 然而,然而,判定表卻能清晰地表達復雜的條件卻能清晰地表達復雜的條件組合與應做動作之間的對應關系。組合與應

43、做動作之間的對應關系。 圖圖4-11的例子的例子 ,把多分支判斷改為兩分,把多分支判斷改為兩分支判斷支判斷 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程59/71不包含多分支結構的流程圖實例不包含多分支結構的流程圖實例 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程60/71反映程序邏輯的判定表反映程序邏輯的判定表 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程61/71 判定表的優(yōu)點是能夠簡潔,無二義性地判定表的優(yōu)點是能夠簡潔,無二義性地描述所有的處理規(guī)則。描述所有的處理規(guī)則。 但判定表表示的是

44、靜態(tài)邏輯,是在某種但判定表表示的是靜態(tài)邏輯,是在某種條件取值組合情況下可能的結果,它不條件取值組合情況下可能的結果,它不能表達加工的順序,也不能表達循環(huán)結能表達加工的順序,也不能表達循環(huán)結構構 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程62/71設計性語言設計性語言pdl pdl(program design language)是一是一種用于描述功能部件的算法設計和處理種用于描述功能部件的算法設計和處理細節(jié)的語言,稱為細節(jié)的語言,稱為設計性語言。 它是一種偽碼。一般地,偽碼的語法規(guī)它是一種偽碼。一般地,偽碼的語法規(guī)則分為則分為“外語法外語法”和和“內語法內語

45、法” 外語法應當符合一般程序設計語言常用語句的語法規(guī)則; 內語法可以用英語中一些簡單的句子、短語和通用的數學符號,來描述程序應執(zhí)行的功能 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程63/71pdl的使用實例的使用實例 procedure spellcheck is 查找錯拼的單詞查找錯拼的單詞 begin split document into single words 把整個文檔分離成單詞把整個文檔分離成單詞 lood up words in dictionary 在字典中查這些單詞在字典中查這些單詞 display words which are not

46、 in dictionary 顯示字典中查不到的單顯示字典中查不到的單詞詞 create a new dictionary 造一新字典造一新字典 end spellcheck復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程64/71pdl特點特點1.有固定的關鍵字外語法,提供全部結構化控制結構、數有固定的關鍵字外語法,提供全部結構化控制結構、數據說明和部件特征。屬于外語法的關鍵字是有限的詞匯據說明和部件特征。屬于外語法的關鍵字是有限的詞匯集,它們能對集,它們能對pdl正文進行結構分割,使之變得易于理正文進行結構分割,使之變得易于理解。為了區(qū)別關鍵字,規(guī)定關鍵字一律

47、大寫,其它單詞解。為了區(qū)別關鍵字,規(guī)定關鍵字一律大寫,其它單詞一律小寫。一律小寫。2.內語法使用自然語言來描述處理特性。內語法比較靈活,內語法使用自然語言來描述處理特性。內語法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。主要精力放在描述算法的邏輯上。3.有數據說明機制,包括簡單的(如標量和數組)與復雜有數據說明機制,包括簡單的(如標量和數組)與復雜的(如鏈表和層次結構)的數據結構。的(如鏈表和層次結構)的數據結構。4.有子程序定義與調用機制,用以表達各種方式的接口說有子程序定義與調用機制,用以表達各種方

48、式的接口說明。明。復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程65/71內容摘要內容摘要 軟件設計工程概述軟件設計工程概述 軟件設計原則軟件設計原則 軟件體系結構設計軟件體系結構設計 部件級設計技術部件級設計技術 復旦大學計算機科學與工程系復旦大學計算機科學與工程系 軟件工程課程軟件工程課程66/71設計規(guī)約設計規(guī)約 . 工作范圍工作范圍a. 系統(tǒng)目標系統(tǒng)目標 b. 運行環(huán)境運行環(huán)境c. 主要軟件需求主要軟件需求d. 設計約束設計約束限制限制. 體系結構設計體系結構設計a. 數據流與控制流復審數據流與控制流復審 b. 導出的程序結構導出的程序結構c. 功能與程序交叉索引功能與程序交叉索引 . 數據設計數據設計a. 數據對象與形成的數據結構數據對象與形成的數據結構 b. 文件和數據庫結構文件和數據庫結構 文件的邏輯結構文件的邏輯結構 文件邏輯記錄描述文件邏輯記錄描述 訪問方式訪問方式 c. 全局數據全局數據d. 文件文件數據與程序交叉索引數據與程序交叉索引 . 接口設計接口設計a. 人機界面規(guī)格說明人機界面規(guī)格說明 b. 人機界面設計規(guī)則人機界面設計規(guī)則 c. 外部接口設計外部接口設計 外部數據接口外部數據接口 外部系統(tǒng)或設備接口外部系統(tǒng)或設備接口 d. 內部接口設計規(guī)則內部接口設計規(guī)則復旦大學計算機科學與工程系復旦大學計

溫馨提示

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

評論

0/150

提交評論