版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第8講 設(shè)計概念與原理,需求模型翻譯到軟件設(shè)計,,,,,,,,,,,,,需求分析模型,,,,,,,,設(shè)計模型,數(shù)據(jù)對象描述,處理規(guī)格說明,控制規(guī)格說明,E-R,DFD,STD,DD,翻譯分析模型到軟件設(shè)計,數(shù)據(jù)設(shè)計將分析時創(chuàng)建的信息域模型變換為軟件所需的數(shù)據(jù)結(jié)構(gòu),側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義。體系結(jié)構(gòu)設(shè)計定義軟件系統(tǒng)各主要結(jié)構(gòu)構(gòu)件之間的關(guān)系。過程設(shè)計則是把結(jié)構(gòu)構(gòu)件轉(zhuǎn)換成軟件的過程性描述。在編碼步驟,根據(jù)這種過程性描述,生成源程序代碼,然后通
2、過測試最終得到完整有效的軟件。接口設(shè)計是建立軟件內(nèi)部的關(guān)系以及軟件人-機(jī)之間的交互機(jī)制。,1.設(shè)計過程,從項(xiàng)目管理的角度來看,軟件設(shè)計分兩步完成。概要設(shè)計,將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件體系結(jié)構(gòu)。詳細(xì)設(shè)計,即過程設(shè)計。通過對體系結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。,概要設(shè)計,從回答“做什么”到回答“怎樣做”劃分出組成系統(tǒng)的物理元素——程序、文件、數(shù)據(jù)庫、過程和文檔等等每個元素還是黑盒子---“全局高度,抽象層次
3、”體系結(jié)構(gòu)設(shè)計,體系結(jié)構(gòu)設(shè)計,文學(xué)中有科學(xué),音樂中有數(shù)學(xué),漫畫中有現(xiàn)代數(shù)學(xué)的拓?fù)鋵W(xué)。漫畫家可以“幾筆”就把一個人畫出來,不管怎么美化或丑化,就是活像。為什么?因?yàn)槟恰皫坠P”不是別的,而是拓?fù)鋵W(xué)中的特征不變量,這是事物最本質(zhì)的東西。 ——楊叔子,(1)體系結(jié)構(gòu)是對復(fù)雜事物的一種抽象。,(2)體系結(jié)構(gòu)在一定的時間內(nèi)保持穩(wěn)定。,體系
4、結(jié)構(gòu)設(shè)計,2.設(shè)計基本原理,1.模塊化:Modularity模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,是單?dú)命名的并且可以通過名字來訪問,例如過程、函數(shù)、子程序、宏、modula等。軟件被劃分成獨(dú)立命名和可獨(dú)立訪問的被稱作模塊的構(gòu)件,每個構(gòu)件完成一個子功能,它們集成到一起滿足問題需求。,模塊化,模塊化論據(jù):C(x)定義為問題x的復(fù)雜性E(x)定義為解決問題x所需要的工作量對p1和p2兩個問題, 若 C(p1) >
5、; C(p2),則 E(p1) > E(p2)C(p1 + p2) > C(p1) + C(p2)E(p1 + p2) > E(p1) + E(p2)不要過度模塊化!每個模塊的簡單性將被集成的復(fù)雜性所掩蓋。,模塊化,模塊化和軟件本如何確定地預(yù)測最小成本區(qū)?,,,,,成本 / 模塊,接口成本,軟件總成本,設(shè)計基本原理,2.抽象 Abstraction:忽略細(xì)節(jié),分層理解問題,自頂向下層層細(xì)化,包括對過程、數(shù)據(jù)和
6、控制的抽象。過程抽象:一個命名的指令序列,具有特定和有限的功能。數(shù)據(jù)抽象是命名的數(shù)據(jù)集合,描述一個數(shù)據(jù)對象??刂瞥橄箅[含了不必說明的內(nèi)部細(xì)節(jié)的程序控制機(jī)制。是實(shí)現(xiàn)模塊化的手段之一。,設(shè)計基本原理,3.求精Refinement自頂向下的設(shè)計策略。,walk to door;reach for knob;Switch the knob;open door;walk through;close door.,設(shè)計基本原理,4
7、.信息隱藏 information hiding 信息隱藏:在設(shè)計和確定模塊時,使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不可訪問的。每個客戶只能通過接口來了解該模塊,而所有的實(shí)現(xiàn)都隱藏起來。,信息隱藏,,“信息隱藏”,更準(zhǔn)確地描述應(yīng)是“細(xì)節(jié)隱藏”,因?yàn)殡[藏的不是信息,而是實(shí)現(xiàn)的細(xì)節(jié)。,3、模塊化設(shè)計,模塊獨(dú)立性度量標(biāo)準(zhǔn):內(nèi)聚 cohesion 和耦合 coupling內(nèi)聚是一個模塊內(nèi)部的交互程度;耦
8、合是模塊之間交互的程度。功能獨(dú)立性是良好設(shè)計的關(guān)鍵,設(shè)計又是軟件質(zhì)量的關(guān)鍵。,耦合,耦合(couple)是度量系統(tǒng)中模塊之間的交互程度。Goal: 模塊之間盡可能獨(dú)立耦合從低到高依次為:非直接耦合(最好),數(shù)據(jù)耦合,標(biāo)記耦合,控制耦合,外部耦合,公共耦合和內(nèi)容耦合(最差)。,耦合,內(nèi)容耦合 content coupling如果兩個模塊中的一個直接引用了另一個模塊的內(nèi)容,則它們之間是內(nèi)容耦合。One module
9、modifies another.,例1:A訪問C的內(nèi)部數(shù)據(jù)或不通過正常入口而轉(zhuǎn)入C的內(nèi)部。,耦合,例2:部分代碼重疊(常出現(xiàn)在匯編程序中),例3:一個模塊有多個入口(功能),耦合,公共耦合 common coupling 如果兩個模塊都可以存取相同的全局?jǐn)?shù)據(jù),則它們之間是公共耦合。a common data store.,耦合,公共耦合存在的問題: 公共部分的改動將影響所有調(diào)用它的模塊; 公共部分的數(shù)據(jù)存取無法控制; 復(fù)雜
10、程度隨耦合模塊的個數(shù)增加而增加。解決方法:通過使用信息隱藏來避免公共耦合。,耦合,控制耦合 control coupling 如果兩個模塊中的一個模塊給另一個模塊傳遞控制信息,則它們具有控制耦合。One module passes parameters to control the activity of another module.,特點(diǎn):接口單一,但仍然影響被控模塊的內(nèi)部邏輯。,耦合,標(biāo)記耦合 stamp coupling
11、如果兩個模塊都要使用同一數(shù)據(jù)結(jié)構(gòu)的一部分,不是采用全局公共數(shù)據(jù)區(qū)共享,而是通過模塊結(jié)構(gòu)傳遞數(shù)據(jù)結(jié)構(gòu)的一部分,則它們之間為標(biāo)記耦合。數(shù)據(jù)耦合 data coupling被調(diào)用模塊的輸入與輸出是簡單的參數(shù)或者是數(shù)據(jù)結(jié)構(gòu)(該數(shù)據(jù)結(jié)構(gòu)中的所有元素為被調(diào)用的模塊使用),則它們之間為數(shù)據(jù)耦合。非直接耦合 no direct coupling 兩個模塊之間沒有聯(lián)系,則它們之間為非直接耦合。,耦合,實(shí)現(xiàn)低耦合,采取下列措施:耦合方式采用非
12、直接耦合,不采用內(nèi)容耦合。傳遞信息類型盡量使用數(shù)據(jù)耦合,少采用控制耦合,外部耦合和公共耦合限制使用。耦合數(shù)量模塊間相互調(diào)用時,傳遞參數(shù)最好只有一個。原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。,內(nèi)聚,內(nèi)聚:cohesion.Goal: 盡可能高內(nèi)聚.內(nèi)聚級別: 偶然內(nèi)聚 邏輯內(nèi)聚 時間內(nèi)聚 過程內(nèi)聚
13、 通信內(nèi)聚 順序內(nèi)聚 功能內(nèi)聚,低內(nèi)聚,偶然內(nèi)聚(Coincidental cohesion): 指一個模塊內(nèi)的各處理元素之間沒有任何聯(lián)系。例: read disk file; calculate current values; produce user output; …嚴(yán)重的缺點(diǎn):產(chǎn)品的可維護(hù)性退化
14、;模塊是不可復(fù)用的,增加軟件成本。解決途徑:將模塊分成更小的模塊,每個小模塊執(zhí)行一個操作。,低內(nèi)聚,邏輯內(nèi)聚(Logical cohesion):邏輯上相關(guān)的功能或數(shù)據(jù)放在一個模塊中。問題:接口難于理解;完成多個操作的代碼互相糾纏在一起,導(dǎo)致嚴(yán)重的維護(hù)問題。,低內(nèi)聚,時間內(nèi)聚(Temporal cohesion): 如果一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行。例如:系統(tǒng)的初始化 open old master
15、 file; new master file, transaction file and print file; initialize sales region table; read first transaction record and first old master file record;問題:不同的功能混在一個模塊中,有時共用
16、部分編碼,使局部功能的修改牽動全局。,中內(nèi)聚,過程內(nèi)聚 (Procedural cohesion): Functions are grouped together in a module to ensure a certain order of performance.例子:Read part number from database and update repair record on maintenance file.,中內(nèi)聚
17、,通信內(nèi)聚(Communicational cohesion):All the functions in a module operate on or produce the same data set. 例如:從數(shù)據(jù)庫的操作 —— 可能破壞獨(dú)立性。,高內(nèi)聚,順序內(nèi)聚 (Sequential cohesion):一個處理元素的輸出數(shù)據(jù)作為下一個處理元素的輸入數(shù)據(jù)。 功能內(nèi)聚 (Functional cohesion):模塊內(nèi)的所有
18、處理元素屬于一個整體,完成一個單一的功能。 原則:在實(shí)際工作中,確定內(nèi)聚的精確級別是不必要的,重要的是力爭高內(nèi)聚和識別低內(nèi)聚,可以使得設(shè)計的軟件具有較高的功能獨(dú)立性。,封閉——開放,如果一個模塊可以作為一個獨(dú)立體被其它程序引用,則稱模塊具有封閉性。如果一個模塊可以被擴(kuò)充,則稱模塊具有開放性。,可復(fù)用性——可擴(kuò)充性,小結(jié),軟件設(shè)計的重要性設(shè)計過程設(shè)計的基本原理抽象、細(xì)化、模塊化、體系結(jié)構(gòu)、控制層次、數(shù)據(jù)結(jié)構(gòu)、軟件過程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- [教育]趙良軟件工程軟件測試
- [教育]趙良軟件工程軟件維護(hù)
- [教育]趙良軟件工程2軟件過程模型
- [教育]趙良軟件工程面向數(shù)據(jù)流的分析方法
- 軟件工程本科論文寫作規(guī)范-結(jié)構(gòu)化方法
- 軟件工程導(dǎo)論第五課結(jié)構(gòu)化分析
- 軟件工程軟件體系結(jié)構(gòu)
- 結(jié)構(gòu)化網(wǎng)格和非結(jié)構(gòu)化網(wǎng)格
- 工程教育認(rèn)證下的軟件工程課程實(shí)施和評價設(shè)計
- 外文翻譯---軟件和軟件工程
- 外文翻譯---軟件和軟件工程
- 軟件工程試題和答案
- 軟件體系結(jié)構(gòu)試題庫軟件工程試題和答案
- 軟件工程化研究.pdf
- 形式概念分析在軟件工程中的運(yùn)用
- 軟件工程
- 結(jié)構(gòu)化軟件開發(fā)研究與畢業(yè)設(shè)計
- 軟件工程課程設(shè)計
- 《軟件工程》課程設(shè)計
- 軟件工程課程設(shè)計
評論
0/150
提交評論