




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件工程軟件工程復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程2/71內(nèi)容摘要內(nèi)容摘要 軟件設(shè)計(jì)工程概述軟件設(shè)計(jì)工程概述 軟件設(shè)計(jì)原則軟件設(shè)計(jì)原則 軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì) 部件級(jí)設(shè)計(jì)技術(shù)部件級(jí)設(shè)計(jì)技術(shù) 設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程3/71內(nèi)容摘要內(nèi)容摘要 軟件設(shè)計(jì)原則軟件設(shè)計(jì)原則 軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì) 部件級(jí)設(shè)計(jì)技術(shù)部件級(jí)設(shè)計(jì)技術(shù) 設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程4/71軟件
2、設(shè)計(jì)工程概述軟件設(shè)計(jì)工程概述 軟件需求分析解決軟件需求分析解決“做什么做什么”的問題,軟的問題,軟件設(shè)計(jì)過程則解決件設(shè)計(jì)過程則解決“怎么做怎么做”的問題的問題 軟件設(shè)計(jì)是把軟件需求變換成軟件表示的軟件設(shè)計(jì)是把軟件需求變換成軟件表示的過程,它主要包含兩個(gè)階段:過程,它主要包含兩個(gè)階段:軟件體系結(jié)構(gòu)設(shè)計(jì)階段和和部件級(jí)設(shè)計(jì) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程5/71軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù) 使用一種設(shè)計(jì)方法,軟件分析模型中通過數(shù)據(jù)、使用一種設(shè)計(jì)方法,軟件分析模型中通過數(shù)據(jù)、功能和行為模型所展示的軟件需求的信息被傳功能和行為模型所展示的軟件需求的信息被傳
3、送給設(shè)計(jì)階段,產(chǎn)生數(shù)據(jù)送給設(shè)計(jì)階段,產(chǎn)生數(shù)據(jù)/類設(shè)計(jì)、體系結(jié)構(gòu)類設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、部件級(jí)設(shè)計(jì)設(shè)計(jì)、接口設(shè)計(jì)、部件級(jí)設(shè)計(jì) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程6/71 數(shù)據(jù)/類設(shè)計(jì):將分析:將分析-類模型變換成類類模型變換成類的實(shí)現(xiàn)和軟件實(shí)現(xiàn)所需要的數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)和軟件實(shí)現(xiàn)所需要的數(shù)據(jù)結(jié)構(gòu) 體系結(jié)構(gòu)設(shè)計(jì):體系結(jié)構(gòu)設(shè)計(jì)定義了軟:體系結(jié)構(gòu)設(shè)計(jì)定義了軟件的整體結(jié)構(gòu)件的整體結(jié)構(gòu) 接口設(shè)計(jì):接口設(shè)計(jì)描述了軟件內(nèi)部、:接口設(shè)計(jì)描述了軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件同人之間軟件和協(xié)作系統(tǒng)之間以及軟件同人之間如何通信如何通信 部件級(jí)設(shè)計(jì):部件級(jí)設(shè)計(jì)將軟件
4、體系結(jié):部件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性元素變換為對(duì)軟件部件的過構(gòu)的結(jié)構(gòu)性元素變換為對(duì)軟件部件的過程性描述程性描述 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程7/711)數(shù)據(jù))數(shù)據(jù)/類設(shè)計(jì)類設(shè)計(jì) 在類和由在類和由crc中定義的數(shù)據(jù)對(duì)象和關(guān)系以及數(shù)中定義的數(shù)據(jù)對(duì)象和關(guān)系以及數(shù)據(jù)字典中描述的詳細(xì)數(shù)據(jù)內(nèi)容提供了數(shù)據(jù)設(shè)計(jì)據(jù)字典中描述的詳細(xì)數(shù)據(jù)內(nèi)容提供了數(shù)據(jù)設(shè)計(jì)活動(dòng)的基礎(chǔ)活動(dòng)的基礎(chǔ) 數(shù)據(jù)設(shè)計(jì)的過程包括以下兩步數(shù)據(jù)設(shè)計(jì)的過程包括以下兩步 : 首先,為在需求分析階段所確定的數(shù)據(jù)對(duì)象選擇邏輯表示,需要對(duì)不同結(jié)構(gòu)進(jìn)行算法分析,以便選擇一個(gè)最有效的設(shè)計(jì)方案; 然后,確定對(duì)邏輯數(shù)
5、據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊,以便限制或確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程8/712)體系結(jié)構(gòu)設(shè)計(jì))體系結(jié)構(gòu)設(shè)計(jì) 體系結(jié)構(gòu)設(shè)計(jì)定義了軟件的整體結(jié)構(gòu),體系結(jié)構(gòu)設(shè)計(jì)定義了軟件的整體結(jié)構(gòu),它由軟件部件、外部可見的屬性和它它由軟件部件、外部可見的屬性和它們之間的關(guān)系組成。們之間的關(guān)系組成。 體系結(jié)構(gòu)設(shè)計(jì)表示可以從系統(tǒng)規(guī)約、體系結(jié)構(gòu)設(shè)計(jì)表示可以從系統(tǒng)規(guī)約、分析模型和分析模型中定義的子系統(tǒng)分析模型和分析模型中定義的子系統(tǒng)的交互導(dǎo)出。的交互導(dǎo)出。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程9
6、/713)接口設(shè)計(jì))接口設(shè)計(jì) 接口設(shè)計(jì)主要包括三個(gè)方面:接口設(shè)計(jì)主要包括三個(gè)方面:設(shè)計(jì)軟件模塊間的接口設(shè)計(jì)模塊和其他非人的信息生產(chǎn)者和消費(fèi)者(比如外部實(shí)體)之間的接口設(shè)計(jì)人(用戶)和計(jì)算機(jī)間的接口 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程10/714)部件級(jí)設(shè)計(jì))部件級(jí)設(shè)計(jì) 部件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性部件級(jí)設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性元素變換為對(duì)軟件部件的過程性描述。元素變換為對(duì)軟件部件的過程性描述。 從類為基礎(chǔ)的模型、流模型、行為模從類為基礎(chǔ)的模型、流模型、行為模型中得到的信息是部件設(shè)計(jì)的基礎(chǔ)。型中得到的信息是部件設(shè)計(jì)的基礎(chǔ)。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工
7、程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程11/71軟件設(shè)計(jì)的目標(biāo)軟件設(shè)計(jì)的目標(biāo) 在進(jìn)行軟件設(shè)計(jì)的過程中,我們要密切關(guān)在進(jìn)行軟件設(shè)計(jì)的過程中,我們要密切關(guān)注軟件的質(zhì)量因素。注軟件的質(zhì)量因素。 mcglanghlin 軟件設(shè)計(jì)過程的目標(biāo):軟件設(shè)計(jì)過程的目標(biāo): 1)設(shè)計(jì)必須實(shí)現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。2)設(shè)計(jì)必須是可讀、可理解的,使得將來易于編程、易于測(cè)試、易于維護(hù)。3)設(shè)計(jì)應(yīng)從實(shí)現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、行為相關(guān)的軟件全貌。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程12/71衡量設(shè)計(jì)的技術(shù)標(biāo)準(zhǔn)衡量設(shè)計(jì)的技
8、術(shù)標(biāo)準(zhǔn) 1)設(shè)計(jì)出來的結(jié)構(gòu)應(yīng)是分層結(jié)構(gòu),從而建立設(shè)計(jì)出來的結(jié)構(gòu)應(yīng)是分層結(jié)構(gòu),從而建立軟件成份之間的控制。軟件成份之間的控制。2)設(shè)計(jì)應(yīng)當(dāng)模塊化,從邏輯上將軟件劃分為設(shè)計(jì)應(yīng)當(dāng)模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的部件。完成特定功能或子功能的部件。3)設(shè)計(jì)應(yīng)當(dāng)既包含數(shù)據(jù)抽象,也包含過程抽設(shè)計(jì)應(yīng)當(dāng)既包含數(shù)據(jù)抽象,也包含過程抽象。象。4)設(shè)計(jì)應(yīng)當(dāng)建立具有獨(dú)立功能特征的模塊。設(shè)計(jì)應(yīng)當(dāng)建立具有獨(dú)立功能特征的模塊。5)設(shè)計(jì)應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之設(shè)計(jì)應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間復(fù)雜連接的接口。間復(fù)雜連接的接口。6)設(shè)計(jì)應(yīng)能根據(jù)軟件需求分析獲取的信息,設(shè)計(jì)應(yīng)能根據(jù)軟件需求分析獲取的信
9、息,建立可驅(qū)動(dòng)、可重復(fù)的方法。建立可驅(qū)動(dòng)、可重復(fù)的方法。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程13/71軟件設(shè)計(jì)的過程軟件設(shè)計(jì)的過程 1)制定規(guī)范制定規(guī)范2)體系結(jié)構(gòu)和接口設(shè)計(jì)體系結(jié)構(gòu)和接口設(shè)計(jì)3)數(shù)據(jù)數(shù)據(jù)/類設(shè)計(jì)類設(shè)計(jì)4)部件級(jí)(過程)設(shè)計(jì)部件級(jí)(過程)設(shè)計(jì)5)編寫設(shè)計(jì)文檔編寫設(shè)計(jì)文檔6)設(shè)計(jì)評(píng)審設(shè)計(jì)評(píng)審復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程14/71內(nèi)容摘要內(nèi)容摘要 軟件設(shè)計(jì)工程概述軟件設(shè)計(jì)工程概述 軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì) 部件級(jí)設(shè)計(jì)技術(shù)部件級(jí)設(shè)計(jì)技術(shù) 設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審復(fù)旦大學(xué)計(jì)算
10、機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程15/71抽象化與逐步求精抽象化與逐步求精 抽象,是在軟件設(shè)計(jì)的規(guī)模逐漸增,是在軟件設(shè)計(jì)的規(guī)模逐漸增大的情況下,控制復(fù)雜性的基本策大的情況下,控制復(fù)雜性的基本策略。略。 抽象的過程是從特殊到一般的過程,抽象的過程是從特殊到一般的過程,上層概念是下層概念的抽象,下層上層概念是下層概念的抽象,下層概念是上層概念的精化和細(xì)化。概念是上層概念的精化和細(xì)化。 軟件工程過程的每一步都是對(duì)較高軟件工程過程的每一步都是對(duì)較高一級(jí)抽象的解作一次具體化的描述一級(jí)抽象的解作一次具體化的描述 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工
11、程課程軟件工程課程16/71 軟件設(shè)計(jì)中主要抽象手段有:軟件設(shè)計(jì)中主要抽象手段有:過程抽象和和數(shù)據(jù)抽象 過程抽象(也稱功能抽象)是指任何一(也稱功能抽象)是指任何一個(gè)完成明確定義功能的操作都可被使用個(gè)完成明確定義功能的操作都可被使用者當(dāng)作單個(gè)實(shí)體看待,盡管這個(gè)操作實(shí)者當(dāng)作單個(gè)實(shí)體看待,盡管這個(gè)操作實(shí)際上是由一系列更低級(jí)的操作來完成的際上是由一系列更低級(jí)的操作來完成的 數(shù)據(jù)抽象是指定義數(shù)據(jù)類型和施加于該是指定義數(shù)據(jù)類型和施加于該類型對(duì)象的操作,并限定了對(duì)象的取值類型對(duì)象的操作,并限定了對(duì)象的取值范圍,只能通過這些操作修改和觀察數(shù)范圍,只能通過這些操作修改和觀察數(shù)據(jù)據(jù)復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦
12、大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程17/71逐步求精逐步求精 逐步求精,把問題的求解過程分解成若干,把問題的求解過程分解成若干步驟或階段,每步都比上步更精化,更接步驟或階段,每步都比上步更精化,更接近問題的解法近問題的解法 抽象使得設(shè)計(jì)者能夠描述過程和數(shù)據(jù)而忽使得設(shè)計(jì)者能夠描述過程和數(shù)據(jù)而忽略低層的細(xì)節(jié),而略低層的細(xì)節(jié),而求精有助于設(shè)計(jì)者在設(shè)有助于設(shè)計(jì)者在設(shè)計(jì)過程中揭示低層的細(xì)節(jié)計(jì)過程中揭示低層的細(xì)節(jié) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程18/71模塊化模塊化 模塊化,即把軟件按照規(guī)定原則,劃分為,即把軟件按照規(guī)定原則,劃分為一個(gè)個(gè)較小的
13、,相互獨(dú)立的但又相互關(guān)聯(lián)一個(gè)個(gè)較小的,相互獨(dú)立的但又相互關(guān)聯(lián)的部件,實(shí)際上是系統(tǒng)分解和抽象的過程。的部件,實(shí)際上是系統(tǒng)分解和抽象的過程。 模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο笫菙?shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,它是單?dú)命名的,并且可以通過的集合,它是單獨(dú)命名的,并且可以通過名字來訪問名字來訪問 例如,過程。函數(shù)、子程序、宏等 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程19/71 設(shè)設(shè)c(x)是描述問題是描述問題x 復(fù)雜性的函數(shù),復(fù)雜性的函數(shù),e(x)是解決問題是解決問題x 所需工作量所需工作量(按時(shí)間計(jì)算按時(shí)間計(jì)算)的的函數(shù)。對(duì)于兩個(gè)問題函數(shù)。對(duì)于兩個(gè)問
14、題p1 和和p2,如果,如果 c(p1)c(p2)(4.1a) 那么那么 e(p1)e(p2) (4.1b) 即問題越復(fù)雜,解決問題所需要的花費(fèi)即問題越復(fù)雜,解決問題所需要的花費(fèi)更多。更多。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程20/71 通過對(duì)人解決問題的實(shí)驗(yàn),又存在另一個(gè)有趣通過對(duì)人解決問題的實(shí)驗(yàn),又存在另一個(gè)有趣的規(guī)律:的規(guī)律: c(p1p2)c(p1)c(p2) (4.2) 方程式方程式(4.2)意味著意味著p1 和和p2 組合后的復(fù)雜性組合后的復(fù)雜性比單獨(dú)考慮每個(gè)問題時(shí)的復(fù)雜性要大??紤]方比單獨(dú)考慮每個(gè)問題時(shí)的復(fù)雜性要大。考慮方程式程式(4.
15、2)和方程式和方程式(4.1)隱含的條件,我們可隱含的條件,我們可以得出以得出 e(p1p2) e(p1)e(p2) (4.3) 不等式不等式(4.3)表達(dá)出了一個(gè)對(duì)于模塊化和軟件表達(dá)出了一個(gè)對(duì)于模塊化和軟件具有十分重要意義的結(jié)論(即,模塊化的論具有十分重要意義的結(jié)論(即,模塊化的論據(jù)):將復(fù)雜問題分解成可以管理的片斷會(huì)更據(jù)):將復(fù)雜問題分解成可以管理的片斷會(huì)更使解決問題更加容易。使解決問題更加容易。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程21/71 如果我們無限制地劃分軟件,開發(fā)它所需如果我們無限制地劃分軟件,開發(fā)它所需的工作量會(huì)變得小到可以忽略?!的
16、工作量會(huì)變得小到可以忽略?! 事實(shí)上,影響軟件開發(fā)的工作量的因素還事實(shí)上,影響軟件開發(fā)的工作量的因素還有很多,例如模塊接口費(fèi)用等等有很多,例如模塊接口費(fèi)用等等 上述不等式只能說明,當(dāng)模塊的總數(shù)增加上述不等式只能說明,當(dāng)模塊的總數(shù)增加時(shí),單獨(dú)開發(fā)各個(gè)子模塊的工作量之和會(huì)時(shí),單獨(dú)開發(fā)各個(gè)子模塊的工作量之和會(huì)有所減少有所減少 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程22/71 如果模塊是相互獨(dú)立的,當(dāng)模塊變得越如果模塊是相互獨(dú)立的,當(dāng)模塊變得越小,每個(gè)模塊花費(fèi)的工作量越低;小,每個(gè)模塊花費(fèi)的工作量越低; 但當(dāng)模塊數(shù)增加時(shí),模塊間的聯(lián)系也隨但當(dāng)模塊數(shù)增加時(shí),模塊間
17、的聯(lián)系也隨之增加,把這些模塊聯(lián)接起來的工作量之增加,把這些模塊聯(lián)接起來的工作量也隨之增加。也隨之增加。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程23/71信息隱藏信息隱藏 每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其它模塊來說應(yīng)每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其它模塊來說應(yīng)該是隱蔽的該是隱蔽的 塊中所包含的信息(包括數(shù)據(jù)和過程)不塊中所包含的信息(包括數(shù)據(jù)和過程)不允許其它不需要這些信息的模塊使用允許其它不需要這些信息的模塊使用 通過通過信息隱蔽,則可定義和實(shí)施對(duì)模塊的,則可定義和實(shí)施對(duì)模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)
18、旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程24/71模塊獨(dú)立模塊獨(dú)立 模塊獨(dú)立:模塊完成獨(dú)立的功能并且與:模塊完成獨(dú)立的功能并且與其他模塊的接口簡(jiǎn)單,符合信息隱蔽和其他模塊的接口簡(jiǎn)單,符合信息隱蔽和信息局部化原則,模塊間關(guān)聯(lián)和依賴程信息局部化原則,模塊間關(guān)聯(lián)和依賴程度盡可能小度盡可能小 模塊獨(dú)立的重要性模塊獨(dú)立的重要性 功能被劃分,并且接口被簡(jiǎn)化,所以具有有效模塊化的軟件更易于開發(fā) 由于因設(shè)計(jì)和編碼修改引起的副作用受到局限,錯(cuò)誤傳播被減小,并且模塊復(fù)用成為可能,所以獨(dú)立的模塊更易于維護(hù)和測(cè)試 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程25/71模塊獨(dú)
19、立模塊獨(dú)立 模塊的獨(dú)立性可以由兩項(xiàng)指標(biāo)來衡量:模塊的獨(dú)立性可以由兩項(xiàng)指標(biāo)來衡量:內(nèi)聚度與與耦合度 內(nèi)聚(cohesion)是一個(gè)模塊內(nèi)部各個(gè)元是一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量素彼此結(jié)合的緊密程度的度量 耦合(coupling)是模塊之間的相對(duì)獨(dú)立性是模塊之間的相對(duì)獨(dú)立性(互相連接的緊密程度)的度量(互相連接的緊密程度)的度量 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程26/71內(nèi)聚內(nèi)聚 一般模塊的內(nèi)聚性分為七種類型一般模塊的內(nèi)聚性分為七種類型 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程27/71內(nèi)聚內(nèi)聚1)巧
20、合內(nèi)聚(偶然內(nèi)聚):將幾個(gè)模塊中沒有:將幾個(gè)模塊中沒有明確表現(xiàn)出獨(dú)立功能的相同程序代碼段獨(dú)立出明確表現(xiàn)出獨(dú)立功能的相同程序代碼段獨(dú)立出來建立的模塊稱為巧合內(nèi)聚模塊。來建立的模塊稱為巧合內(nèi)聚模塊。2)邏輯內(nèi)聚 :指完成一組邏輯相關(guān)任務(wù)的模:指完成一組邏輯相關(guān)任務(wù)的模塊,調(diào)用該模塊時(shí),由傳送給模塊的控制型參塊,調(diào)用該模塊時(shí),由傳送給模塊的控制型參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。3)時(shí)間內(nèi)聚:指一個(gè)模塊中的所有人物必須在:指一個(gè)模塊中的所有人物必須在同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。塊。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大
21、學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程28/71內(nèi)聚內(nèi)聚4)過程內(nèi)聚 :指一個(gè)模塊完成多個(gè)任務(wù),這:指一個(gè)模塊完成多個(gè)任務(wù),這些任務(wù)必須按指定的過程(些任務(wù)必須按指定的過程(procedural)執(zhí)行。)執(zhí)行。5)通信內(nèi)聚 :指一個(gè)模塊內(nèi)所有處理元素都:指一個(gè)模塊內(nèi)所有處理元素都集中在某個(gè)數(shù)據(jù)結(jié)構(gòu)的一塊區(qū)域中。集中在某個(gè)數(shù)據(jù)結(jié)構(gòu)的一塊區(qū)域中。6)順序內(nèi)聚:指一個(gè)模塊完成多個(gè)功能,這些:指一個(gè)模塊完成多個(gè)功能,這些功能又必須順序執(zhí)行。功能又必須順序執(zhí)行。7)功能內(nèi)聚 :指一個(gè)模塊中各個(gè)部分都是為:指一個(gè)模塊中各個(gè)部分都是為完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不完成一項(xiàng)具體功能而協(xié)同工作
22、,緊密聯(lián)系,不可分割的??煞指畹?。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程29/71耦合耦合 一般模塊之間可能的耦合方式有七種類型一般模塊之間可能的耦合方式有七種類型 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程30/71耦合耦合1)內(nèi)容耦合 :如果一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部:如果一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);或者一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;數(shù)據(jù);或者一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;或者兩個(gè)模塊有一部分程序代碼重迭;或者一個(gè)模塊有或者兩個(gè)模塊有一部分程序代碼重迭;或者一個(gè)模塊有多個(gè)入口,則
23、兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合。多個(gè)入口,則兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合。2)公共耦合 :若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,:若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。等。3)外部耦合 :指模塊間通過軟件之外的環(huán)境聯(lián)結(jié)(如:指模塊間通過軟件之外的環(huán)境聯(lián)結(jié)(如i/o將模塊耦合到特定的設(shè)備、格式、通信協(xié)議上)時(shí),將模塊耦合到特定的設(shè)備、格式、通信協(xié)議上)時(shí),稱為外部耦合。稱為外部耦合。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系
24、復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程31/71耦合耦合4)控制耦合:如果一個(gè)模塊傳送給另一個(gè)模塊:如果一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)中包含了控制信息,該控制信息用于控的參數(shù)中包含了控制信息,該控制信息用于控制接收模塊中的執(zhí)行邏輯,則稱為控制耦合。制接收模塊中的執(zhí)行邏輯,則稱為控制耦合。5)標(biāo)記耦合:兩個(gè)模塊之間通過參數(shù)表傳遞一:兩個(gè)模塊之間通過參數(shù)表傳遞一個(gè)數(shù)據(jù)結(jié)構(gòu)的一部分(如某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)個(gè)數(shù)據(jù)結(jié)構(gòu)的一部分(如某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)),就是標(biāo)記耦合。構(gòu)),就是標(biāo)記耦合。6)數(shù)據(jù)耦合:兩個(gè)模塊之間僅通過參數(shù)表傳遞:兩個(gè)模塊之間僅通過參數(shù)表傳遞簡(jiǎn)單數(shù)據(jù),則稱為數(shù)據(jù)耦合。簡(jiǎn)單數(shù)據(jù)
25、,則稱為數(shù)據(jù)耦合。7)非直接耦合 :如果兩個(gè)模塊之間沒有直接:如果兩個(gè)模塊之間沒有直接關(guān)系,即它們中的任何一個(gè)都不依賴于另一個(gè)關(guān)系,即它們中的任何一個(gè)都不依賴于另一個(gè)而能獨(dú)立工作,這種耦合稱為非直接耦合。而能獨(dú)立工作,這種耦合稱為非直接耦合。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程32/71 模塊之間的連接越緊密,聯(lián)系越多,耦模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其模塊獨(dú)立性就越弱合性就越高,而其模塊獨(dú)立性就越弱 一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高密,則它的內(nèi)聚性就越高 模塊獨(dú)立性比較強(qiáng)的模
26、塊應(yīng)是模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)是高內(nèi)聚低耦合的模塊的模塊 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程33/71內(nèi)容摘要內(nèi)容摘要 軟件設(shè)計(jì)工程概述軟件設(shè)計(jì)工程概述 軟件設(shè)計(jì)原則軟件設(shè)計(jì)原則 部件級(jí)設(shè)計(jì)技術(shù)部件級(jí)設(shè)計(jì)技術(shù) 設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程34/71軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì) 軟件體系結(jié)構(gòu)關(guān)注系統(tǒng)的一個(gè)或多個(gè)結(jié)構(gòu),軟件體系結(jié)構(gòu)關(guān)注系統(tǒng)的一個(gè)或多個(gè)結(jié)構(gòu),包含軟件構(gòu)件、這些構(gòu)件的對(duì)外可見的性包含軟件構(gòu)件、這些構(gòu)件的對(duì)外可見的性質(zhì)以及它們之間的關(guān)系質(zhì)以及它們之間的關(guān)系
27、 bass提出體系結(jié)構(gòu)重要的三個(gè)關(guān)鍵理由:提出體系結(jié)構(gòu)重要的三個(gè)關(guān)鍵理由: 方便利益相關(guān)人員的交流 有利于系統(tǒng)設(shè)計(jì)的前期決策 可傳遞的系統(tǒng)級(jí)抽象 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程35/71體系結(jié)構(gòu)發(fā)展過程體系結(jié)構(gòu)發(fā)展過程 常見的軟件體系結(jié)構(gòu)常見的軟件體系結(jié)構(gòu)單主機(jī)結(jié)構(gòu)單主機(jī)結(jié)構(gòu)c/s(client/server)結(jié)構(gòu))結(jié)構(gòu)b/s(browser/server)結(jié)構(gòu))結(jié)構(gòu) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程36/71軟件體系結(jié)構(gòu)的風(fēng)格軟件體系結(jié)構(gòu)的風(fēng)格 絕大多數(shù)可以被歸類為相對(duì)小數(shù)量的體絕大多數(shù)可以被歸類為
28、相對(duì)小數(shù)量的體系結(jié)構(gòu)風(fēng)格之一系結(jié)構(gòu)風(fēng)格之一 每種風(fēng)格描述一種系統(tǒng)范疇,范疇包括:每種風(fēng)格描述一種系統(tǒng)范疇,范疇包括: 一些實(shí)現(xiàn)系統(tǒng)所需的功能的部件(如數(shù)據(jù)庫、計(jì)算模塊); 一組用來連接部件“通信、協(xié)調(diào)和合作”的“連接子”; 定義部件之間怎樣整合的系統(tǒng)約束; 使設(shè)計(jì)者能夠理解整個(gè)系統(tǒng)屬性并分析已知屬性的語義模型。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程37/71數(shù)據(jù)為中心體系結(jié)構(gòu)數(shù)據(jù)為中心體系結(jié)構(gòu) 一些數(shù)據(jù)(比如一個(gè)文件或者數(shù)據(jù)庫)保一些數(shù)據(jù)(比如一個(gè)文件或者數(shù)據(jù)庫)保存在整個(gè)結(jié)構(gòu)的中心,并且被其他部件頻存在整個(gè)結(jié)構(gòu)的中心,并且被其他部件頻繁地使用、添加、
29、刪除、或者修改繁地使用、添加、刪除、或者修改 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程38/71數(shù)據(jù)流風(fēng)格的體系結(jié)構(gòu)數(shù)據(jù)流風(fēng)格的體系結(jié)構(gòu) 這種結(jié)構(gòu)適用于輸入數(shù)據(jù)被一系列的計(jì)算這種結(jié)構(gòu)適用于輸入數(shù)據(jù)被一系列的計(jì)算或者處理部件變換成輸出數(shù)據(jù)?;蛘咛幚聿考儞Q成輸出數(shù)據(jù)。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程39/71調(diào)用和返回風(fēng)格的體系結(jié)構(gòu)調(diào)用和返回風(fēng)格的體系結(jié)構(gòu) 這種風(fēng)格使一個(gè)軟件設(shè)計(jì)者設(shè)計(jì)出非常容這種風(fēng)格使一個(gè)軟件設(shè)計(jì)者設(shè)計(jì)出非常容易修改和擴(kuò)充的體系結(jié)構(gòu)。易修改和擴(kuò)充的體系結(jié)構(gòu)。 包含:包含:主程序/子程序風(fēng)格體系結(jié)
30、構(gòu)和和遠(yuǎn)程過程調(diào)用風(fēng)格的體系結(jié)構(gòu) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程40/71 在這里要了解幾個(gè)概念:在這里要了解幾個(gè)概念: 程序結(jié)構(gòu)的深度程序結(jié)構(gòu)的深度:程序結(jié)構(gòu)的層次數(shù)稱為結(jié)構(gòu)的深度。結(jié)構(gòu)的深度在一定意義上反映了程序結(jié)構(gòu)的規(guī)模和復(fù)雜程度。 程序結(jié)構(gòu)的寬度程序結(jié)構(gòu)的寬度:層次結(jié)構(gòu)中同一層模塊的最大模塊個(gè)數(shù)稱為結(jié)構(gòu)的寬度。 模塊的扇入和扇出模塊的扇入和扇出:扇出表示一個(gè)模塊直接調(diào)用(或控制)的其它模塊數(shù)目。扇入則定義為調(diào)用(或控制)一個(gè)給定模塊的模塊個(gè)數(shù)。多扇出意味著需要控制和協(xié)調(diào)許多下屬模塊。而多扇入的模塊通常是公用模塊。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系
31、復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程41/71面向?qū)ο箫L(fēng)格的體系結(jié)構(gòu)面向?qū)ο箫L(fēng)格的體系結(jié)構(gòu) 系統(tǒng)部件封裝數(shù)據(jù)和操作數(shù)據(jù)的系統(tǒng)部件封裝數(shù)據(jù)和操作數(shù)據(jù)的方法。方法。 部件之間的交互和協(xié)調(diào)通過消息部件之間的交互和協(xié)調(diào)通過消息來傳遞。來傳遞。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程42/71層次式風(fēng)格的體系結(jié)構(gòu)層次式風(fēng)格的體系結(jié)構(gòu) 在這種結(jié)構(gòu)中,定義不同的層次,每層都在這種結(jié)構(gòu)中,定義不同的層次,每層都完成了相對(duì)外層更靠近機(jī)器指令的操作完成了相對(duì)外層更靠近機(jī)器指令的操作復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程
32、43/71評(píng)估可選的體系結(jié)構(gòu)評(píng)估可選的體系結(jié)構(gòu) 對(duì)于同一個(gè)軟件需求,由于各種設(shè)計(jì)方法對(duì)于同一個(gè)軟件需求,由于各種設(shè)計(jì)方法的原理不同,會(huì)導(dǎo)出不同的軟件結(jié)構(gòu)。的原理不同,會(huì)導(dǎo)出不同的軟件結(jié)構(gòu)。 同一問題的不同軟件結(jié)構(gòu):同一問題的不同軟件結(jié)構(gòu):復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程44/71atam(architecture trade-off analysis method) 1)定義應(yīng)用場(chǎng)景(定義應(yīng)用場(chǎng)景(scenarios):通過):通過use case圖來從用戶的角度表現(xiàn)系統(tǒng)。圖來從用戶的角度表現(xiàn)系統(tǒng)。2)得出需求、約束和環(huán)境描述:這是需求工程得出需求
33、、約束和環(huán)境描述:這是需求工程的一部分,用以確定所有客戶方關(guān)心的問題都的一部分,用以確定所有客戶方關(guān)心的問題都被列出。被列出。3)描述能處理上述情境和需求的體系結(jié)構(gòu)風(fēng)格。描述能處理上述情境和需求的體系結(jié)構(gòu)風(fēng)格。4)單獨(dú)地評(píng)價(jià)系統(tǒng)的各項(xiàng)性能。針對(duì)體系結(jié)構(gòu)單獨(dú)地評(píng)價(jià)系統(tǒng)的各項(xiàng)性能。針對(duì)體系結(jié)構(gòu)設(shè)計(jì)的性能包括:可靠性,性能、安全性,可設(shè)計(jì)的性能包括:可靠性,性能、安全性,可維護(hù)性,靈活性,可測(cè)試性,可移植性,可重維護(hù)性,靈活性,可測(cè)試性,可移植性,可重用性和互操作性等。用性和互操作性等。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程45/71atam(architec
34、ture trade-off analysis method)5)針對(duì)不同的架構(gòu)形式,評(píng)價(jià)第針對(duì)不同的架構(gòu)形式,評(píng)價(jià)第4步提到的這些性能的敏步提到的這些性能的敏感程度。可以通過這樣的方法來評(píng)價(jià):在整個(gè)架構(gòu)中做感程度??梢酝ㄟ^這樣的方法來評(píng)價(jià):在整個(gè)架構(gòu)中做一些小的變更,分析并確定上訴性能有沒有很敏感的變一些小的變更,分析并確定上訴性能有沒有很敏感的變化。那些在體系結(jié)構(gòu)改動(dòng)中受到較大影響的性能被稱為化。那些在體系結(jié)構(gòu)改動(dòng)中受到較大影響的性能被稱為敏感點(diǎn)(敏感點(diǎn)(sensitive point)。)。6)通過第通過第5步的敏感度分析來評(píng)價(jià)第三步中提出的那些體步的敏感度分析來評(píng)價(jià)第三步中提出的那些體
35、系結(jié)構(gòu)。系結(jié)構(gòu)。sei描述的方法如下:當(dāng)一個(gè)架構(gòu)的敏感點(diǎn)被描述的方法如下:當(dāng)一個(gè)架構(gòu)的敏感點(diǎn)被確定,我們需要找到在系統(tǒng)中最需要權(quán)衡利弊的因素確定,我們需要找到在系統(tǒng)中最需要權(quán)衡利弊的因素(trade-off point)。權(quán)衡因素就是指改變架構(gòu)中的)。權(quán)衡因素就是指改變架構(gòu)中的這項(xiàng)內(nèi)容系統(tǒng)的很多性能就會(huì)發(fā)生敏感的變化。比如說,這項(xiàng)內(nèi)容系統(tǒng)的很多性能就會(huì)發(fā)生敏感的變化。比如說,一個(gè)一個(gè)client-server結(jié)構(gòu)的系統(tǒng)的表現(xiàn)性能和系統(tǒng)中結(jié)構(gòu)的系統(tǒng)的表現(xiàn)性能和系統(tǒng)中server的數(shù)量是息息相關(guān)的(比如增加的數(shù)量是息息相關(guān)的(比如增加server的數(shù)量,的數(shù)量,一定程度上系統(tǒng)的表現(xiàn)性能就會(huì)提高)一
36、定程度上系統(tǒng)的表現(xiàn)性能就會(huì)提高)這樣的話,這樣的話,server的數(shù)量就是這個(gè)架構(gòu)中的平衡點(diǎn)。的數(shù)量就是這個(gè)架構(gòu)中的平衡點(diǎn)。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程46/71 在進(jìn)行軟件體系結(jié)構(gòu)設(shè)計(jì)時(shí),可以參考如下規(guī)在進(jìn)行軟件體系結(jié)構(gòu)設(shè)計(jì)時(shí),可以參考如下規(guī)則:則: (1) 改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性(2)模塊適當(dāng)?shù)纳疃?、寬度、扇出和扇?3)模塊判斷作用范圍應(yīng)在其控制作用范圍內(nèi)(4)力爭(zhēng)降低模塊接口的復(fù)雜度(5)設(shè)計(jì)單入口單出口的模塊(6)模塊功能應(yīng)該是可以預(yù)測(cè)的模塊大小適中(7)一般一個(gè)模塊包含的語句在3050條左右較好。(8)一個(gè)設(shè)計(jì)好的軟件結(jié)構(gòu),通常
37、頂層扇出比較高,中層扇出比較少,底層有高扇入。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程47/71內(nèi)容摘要內(nèi)容摘要 軟件設(shè)計(jì)工程概述軟件設(shè)計(jì)工程概述 軟件設(shè)計(jì)原則軟件設(shè)計(jì)原則 軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì) 設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審設(shè)計(jì)規(guī)約與設(shè)計(jì)評(píng)審復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程48/71部件級(jí)設(shè)計(jì)技術(shù)部件級(jí)設(shè)計(jì)技術(shù) 在結(jié)構(gòu)化分析和設(shè)計(jì)方法時(shí)部件往往被稱在結(jié)構(gòu)化分析和設(shè)計(jì)方法時(shí)部件往往被稱為為模塊 在面向?qū)ο蠓治龊驮O(shè)計(jì)時(shí)部件被稱為類,在面向?qū)ο蠓治龊驮O(shè)計(jì)時(shí)部件被稱為類,在基于構(gòu)件的開發(fā)方法中,部件被稱為在基于構(gòu)件的
38、開發(fā)方法中,部件被稱為構(gòu)件。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程49/71部件級(jí)設(shè)計(jì)技術(shù)部件級(jí)設(shè)計(jì)技術(shù) 在部件級(jí)設(shè)計(jì)階段,主要完成如下工作:在部件級(jí)設(shè)計(jì)階段,主要完成如下工作:(1)為每個(gè)部件確定采用的算法,選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過程,編寫部件的詳細(xì)過程性描述; (2)確定每一部件內(nèi)部使用的數(shù)據(jù)結(jié)構(gòu); (3)在部件級(jí)設(shè)計(jì)結(jié)束時(shí),應(yīng)該把上述結(jié)果寫入部件級(jí)設(shè)計(jì)說明書,并且通過復(fù)審形成正式文檔,作為下一階段(編碼階段)的工作依據(jù)。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程50/71結(jié)構(gòu)化程序設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)
39、方法 一種較為流行的定義是:一種較為流行的定義是:“如果一個(gè)程序如果一個(gè)程序的代碼塊僅僅通過順序、選擇和循環(huán)這三的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本控制結(jié)構(gòu)進(jìn)行連結(jié),并且每個(gè)代碼種基本控制結(jié)構(gòu)進(jìn)行連結(jié),并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱這個(gè)程塊只有一個(gè)入口和一個(gè)出口,則稱這個(gè)程序是結(jié)構(gòu)化的序是結(jié)構(gòu)化的”。 隨著面向?qū)ο蠛蛙浖?fù)用等新的軟件開發(fā)隨著面向?qū)ο蠛蛙浖?fù)用等新的軟件開發(fā)方法和技術(shù)的發(fā)展,更現(xiàn)實(shí)、更有效的開方法和技術(shù)的發(fā)展,更現(xiàn)實(shí)、更有效的開發(fā)途徑可能是自頂向下和自底向上兩種方發(fā)途徑可能是自頂向下和自底向上兩種方法有機(jī)的結(jié)合。法有機(jī)的結(jié)合。 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大
40、學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程51/71圖形表示法圖形表示法 程序流程圖 n-s圖 pad 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程52/71程序流程圖程序流程圖 程序流程圖獨(dú)立于任何一種程序設(shè)計(jì)語言,程序流程圖獨(dú)立于任何一種程序設(shè)計(jì)語言,比較直觀、清晰、易于學(xué)習(xí)掌握比較直觀、清晰、易于學(xué)習(xí)掌握 為使用流程圖描述結(jié)構(gòu)化程序,必須限制為使用流程圖描述結(jié)構(gòu)化程序,必須限制流程圖只能使用五種基本控制結(jié)構(gòu)流程圖只能使用五種基本控制結(jié)構(gòu) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程53/71控制結(jié)構(gòu)相互組合和嵌套的實(shí)
41、例控制結(jié)構(gòu)相互組合和嵌套的實(shí)例 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程54/71n-s圖圖 nassi和和shneiderman 提出了一種符合提出了一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具,叫結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具,叫做盒圖,也叫做做盒圖,也叫做n-s圖圖 五種基本控制結(jié)構(gòu)五種基本控制結(jié)構(gòu) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程55/71控制結(jié)構(gòu)相互組合和嵌套的實(shí)例控制結(jié)構(gòu)相互組合和嵌套的實(shí)例復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程56/71pad pad是是pro
42、blem analysis diagram的縮的縮寫寫 ,由程序流程圖演化而來,由程序流程圖演化而來 五種基本控制結(jié)構(gòu)五種基本控制結(jié)構(gòu) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程57/71pad實(shí)例實(shí)例 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程58/71判定表判定表 當(dāng)算法中包含多重嵌套的條件選擇時(shí),用當(dāng)算法中包含多重嵌套的條件選擇時(shí),用程序流程圖、程序流程圖、n-s圖或圖或pad都不易清楚地都不易清楚地描述。描述。 然而,然而,判定表卻能清晰地表達(dá)復(fù)雜的條件卻能清晰地表達(dá)復(fù)雜的條件組合與應(yīng)做動(dòng)作之間的對(duì)應(yīng)關(guān)系。組合與應(yīng)
43、做動(dòng)作之間的對(duì)應(yīng)關(guān)系。 圖圖4-11的例子的例子 ,把多分支判斷改為兩分,把多分支判斷改為兩分支判斷支判斷 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程59/71不包含多分支結(jié)構(gòu)的流程圖實(shí)例不包含多分支結(jié)構(gòu)的流程圖實(shí)例 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程60/71反映程序邏輯的判定表反映程序邏輯的判定表 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程61/71 判定表的優(yōu)點(diǎn)是能夠簡(jiǎn)潔,無二義性地判定表的優(yōu)點(diǎn)是能夠簡(jiǎn)潔,無二義性地描述所有的處理規(guī)則。描述所有的處理規(guī)則。 但判定表表示的是
44、靜態(tài)邏輯,是在某種但判定表表示的是靜態(tài)邏輯,是在某種條件取值組合情況下可能的結(jié)果,它不條件取值組合情況下可能的結(jié)果,它不能表達(dá)加工的順序,也不能表達(dá)循環(huán)結(jié)能表達(dá)加工的順序,也不能表達(dá)循環(huán)結(jié)構(gòu)構(gòu) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程62/71設(shè)計(jì)性語言設(shè)計(jì)性語言pdl pdl(program design language)是一是一種用于描述功能部件的算法設(shè)計(jì)和處理種用于描述功能部件的算法設(shè)計(jì)和處理細(xì)節(jié)的語言,稱為細(xì)節(jié)的語言,稱為設(shè)計(jì)性語言。 它是一種偽碼。一般地,偽碼的語法規(guī)它是一種偽碼。一般地,偽碼的語法規(guī)則分為則分為“外語法外語法”和和“內(nèi)語法內(nèi)語
45、法” 外語法應(yīng)當(dāng)符合一般程序設(shè)計(jì)語言常用語句的語法規(guī)則; 內(nèi)語法可以用英語中一些簡(jiǎn)單的句子、短語和通用的數(shù)學(xué)符號(hào),來描述程序應(yīng)執(zhí)行的功能 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程63/71pdl的使用實(shí)例的使用實(shí)例 procedure spellcheck is 查找錯(cuò)拼的單詞查找錯(cuò)拼的單詞 begin split document into single words 把整個(gè)文檔分離成單詞把整個(gè)文檔分離成單詞 lood up words in dictionary 在字典中查這些單詞在字典中查這些單詞 display words which are not
46、 in dictionary 顯示字典中查不到的單顯示字典中查不到的單詞詞 create a new dictionary 造一新字典造一新字典 end spellcheck復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程64/71pdl特點(diǎn)特點(diǎn)1.有固定的關(guān)鍵字外語法,提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)有固定的關(guān)鍵字外語法,提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和部件特征。屬于外語法的關(guān)鍵字是有限的詞匯據(jù)說明和部件特征。屬于外語法的關(guān)鍵字是有限的詞匯集,它們能對(duì)集,它們能對(duì)pdl正文進(jìn)行結(jié)構(gòu)分割,使之變得易于理正文進(jìn)行結(jié)構(gòu)分割,使之變得易于理解。為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律
47、大寫,其它單詞解。為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞一律小寫。一律小寫。2.內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯(cuò),以利于人們可把只要寫清楚就可以,不必考慮語法錯(cuò),以利于人們可把主要精力放在描述算法的邏輯上。主要精力放在描述算法的邏輯上。3.有數(shù)據(jù)說明機(jī)制,包括簡(jiǎn)單的(如標(biāo)量和數(shù)組)與復(fù)雜有數(shù)據(jù)說明機(jī)制,包括簡(jiǎn)單的(如標(biāo)量和數(shù)組)與復(fù)雜的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu)。的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu)。4.有子程序定義與調(diào)用機(jī)制,用以表達(dá)各種方式的接口說有子程序定義與調(diào)用機(jī)制,用以表達(dá)各種方
48、式的接口說明。明。復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程65/71內(nèi)容摘要內(nèi)容摘要 軟件設(shè)計(jì)工程概述軟件設(shè)計(jì)工程概述 軟件設(shè)計(jì)原則軟件設(shè)計(jì)原則 軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì) 部件級(jí)設(shè)計(jì)技術(shù)部件級(jí)設(shè)計(jì)技術(shù) 復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系 軟件工程課程軟件工程課程66/71設(shè)計(jì)規(guī)約設(shè)計(jì)規(guī)約 . 工作范圍工作范圍a. 系統(tǒng)目標(biāo)系統(tǒng)目標(biāo) b. 運(yùn)行環(huán)境運(yùn)行環(huán)境c. 主要軟件需求主要軟件需求d. 設(shè)計(jì)約束設(shè)計(jì)約束限制限制. 體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)a. 數(shù)據(jù)流與控制流復(fù)審數(shù)據(jù)流與控制流復(fù)審 b. 導(dǎo)出的程序結(jié)構(gòu)導(dǎo)出的程序結(jié)構(gòu)c. 功能與程序交叉索引功能與程序交叉索引 . 數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)a. 數(shù)據(jù)對(duì)象與形成的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)對(duì)象與形成的數(shù)據(jù)結(jié)構(gòu) b. 文件和數(shù)據(jù)庫結(jié)構(gòu)文件和數(shù)據(jù)庫結(jié)構(gòu) 文件的邏輯結(jié)構(gòu)文件的邏輯結(jié)構(gòu) 文件邏輯記錄描述文件邏輯記錄描述 訪問方式訪問方式 c. 全局?jǐn)?shù)據(jù)全局?jǐn)?shù)據(jù)d. 文件文件數(shù)據(jù)與程序交叉索引數(shù)據(jù)與程序交叉索引 . 接口設(shè)計(jì)接口設(shè)計(jì)a. 人機(jī)界面規(guī)格說明人機(jī)界面規(guī)格說明 b. 人機(jī)界面設(shè)計(jì)規(guī)則人機(jī)界面設(shè)計(jì)規(guī)則 c. 外部接口設(shè)計(jì)外部接口設(shè)計(jì) 外部數(shù)據(jù)接口外部數(shù)據(jù)接口 外部系統(tǒng)或設(shè)備接口外部系統(tǒng)或設(shè)備接口 d. 內(nèi)部接口設(shè)計(jì)規(guī)則內(nèi)部接口設(shè)計(jì)規(guī)則復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與工程系復(fù)旦大學(xué)計(jì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年綠色照明項(xiàng)目合作計(jì)劃書
- 2025年絲絹紡織及精加工產(chǎn)品項(xiàng)目建議書
- 五年級(jí)數(shù)學(xué)(小數(shù)乘除法)計(jì)算題專項(xiàng)練習(xí)及答案
- 三年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)及答案集錦
- 右肺低分化腺癌護(hù)理查房
- 陜西青年職業(yè)學(xué)院《藥學(xué)專業(yè)創(chuàng)新創(chuàng)業(yè)拓展》2023-2024學(xué)年第二學(xué)期期末試卷
- 集寧師范學(xué)院《物流管理前沿講座》2023-2024學(xué)年第一學(xué)期期末試卷
- 集美大學(xué)誠(chéng)毅學(xué)院《英語視聽說(四)》2023-2024學(xué)年第二學(xué)期期末試卷
- 青島工學(xué)院《機(jī)能實(shí)驗(yàn)學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 青島幼兒師范高等??茖W(xué)校《建筑給水排水》2023-2024學(xué)年第一學(xué)期期末試卷
- 高中音樂鑒賞 第一單元 學(xué)會(huì)聆聽 第一節(jié)《音樂要素及音樂語言》
- 當(dāng)代文學(xué)第一章1949-1966年的文學(xué)思潮
- GB/T 25254-2022工業(yè)用聚四亞甲基醚二醇(PTMEG)
- GB/T 24456-2009高密度聚乙烯硅芯管
- GB 6222-2005工業(yè)企業(yè)煤氣安全規(guī)程
- 中國(guó)藥典2015年版
- PLM解決方案與NX培訓(xùn)教材課件
- 《液壓與氣動(dòng)技術(shù)項(xiàng)目教程》高職配套教學(xué)課件
- 【課件】第3課 象外之境-中國(guó)傳統(tǒng)山水畫 課件-2022-2023學(xué)年高中美術(shù)人教版(2019)美術(shù)鑒賞
- 英語滬教版小學(xué)五年級(jí)下冊(cè)Unit6優(yōu)質(zhì)課課件1
- 誤吸的護(hù)理應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論