![軟件系統(tǒng)設計概述_第1頁](http://file4.renrendoc.com/view10/M02/17/02/wKhkGWV5TKGAL137AACr5o5pkEA905.jpg)
![軟件系統(tǒng)設計概述_第2頁](http://file4.renrendoc.com/view10/M02/17/02/wKhkGWV5TKGAL137AACr5o5pkEA9052.jpg)
![軟件系統(tǒng)設計概述_第3頁](http://file4.renrendoc.com/view10/M02/17/02/wKhkGWV5TKGAL137AACr5o5pkEA9053.jpg)
![軟件系統(tǒng)設計概述_第4頁](http://file4.renrendoc.com/view10/M02/17/02/wKhkGWV5TKGAL137AACr5o5pkEA9054.jpg)
![軟件系統(tǒng)設計概述_第5頁](http://file4.renrendoc.com/view10/M02/17/02/wKhkGWV5TKGAL137AACr5o5pkEA9055.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件系統(tǒng)設計概述楊福林目錄軟件設計的概述軟件設計的基本原理模塊設計概要設計概述結(jié)構(gòu)化設計方法JACKSON設計方法數(shù)據(jù)設計和文件設計過程設計(詳細設計)設計的評審軟件設計的目標和任務軟件設計重要性軟件設計方法軟件設計階段軟件設計的概述討論要點(1)如何將需求分析模型轉(zhuǎn)換為軟件設計?(2)作為軟件工程師在軟件設計方面應使用哪些基本原則和概念?軟件設計的概述
一.軟件設計的目標軟件需求:解決“做什么”軟件設計:解決“怎么做”二.軟件設計的任務
問題結(jié)構(gòu)(軟件需求)軟件結(jié)構(gòu)從軟件需求規(guī)格說明書出發(fā),形成軟件的具體設計方案。映射軟件設計的目標和任務數(shù)據(jù)設計側(cè)重于數(shù)據(jù)結(jié)構(gòu)的定義。系統(tǒng)結(jié)構(gòu)設計,包括接口設計和體系結(jié)構(gòu)設計,定義軟件系統(tǒng)各主要成份之間的關(guān)系。過程設計則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性描述。在編碼步驟,根據(jù)這種過程性描述,生成源程序代碼,然后通過測試最終得到完整有效的軟件。軟件設計的目標和任務軟件的開發(fā)階段軟件設計的重要性為什么軟件設計很重要?軟件設計是開發(fā)階段中最重要的步驟,它是軟件開發(fā)過程中質(zhì)量得以保證的關(guān)鍵步驟。設計提供了軟件的表示,使得軟件的質(zhì)量評價成為可能。同時,軟件設計又是將用戶要求準確地轉(zhuǎn)化成為最終的軟件產(chǎn)品的唯一途徑。另一方面,軟件設計是后續(xù)開發(fā)步驟及軟件維護工作的基礎。如果沒有設計,只能建立一個不穩(wěn)定的系統(tǒng)。軟件設計的重要性
只要出現(xiàn)一些小小的變動,就會使得軟件垮掉,而且難于測試。軟件設計方法結(jié)構(gòu)化設計方法(SD)面向數(shù)據(jù)結(jié)構(gòu)的設計方法(JSD方法)面向?qū)ο蟮脑O計方法(OOD)軟件設計的階段軟件設計的階段(1)概要設計(總體設計)確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)之間的相互關(guān)系。(2)詳細設計(過程設計,模塊設計)
確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模塊程序過程的詳細文檔。軟件設計的概述軟件設計的基礎模塊設計基礎概要設計概述結(jié)構(gòu)化設計方法JACKSON設計方法數(shù)據(jù)設計和文件設計過程設計(詳細設計)設計的評審目錄軟件設計基礎
軟件體系結(jié)構(gòu)程序結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)軟件過程
自頂向下,逐步細化模塊化抽象化信息隱蔽一.軟件體系結(jié)構(gòu)軟件結(jié)構(gòu)包括兩部分:程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)軟件的體系結(jié)構(gòu)通過一個劃分過程來完成。該劃分過程從需求分析確立的目標系統(tǒng)的模型出發(fā),對整個問題進行分割,使其每個部分用一個或幾個軟件成份加以解決,整個問題就解決了.軟件設計基礎軟件設計基礎一.軟件體系結(jié)構(gòu)二.程序結(jié)構(gòu)
程序結(jié)構(gòu)(控制層次)表明了程序各個部件(模塊)的組織情況。
軟件設計基礎三.數(shù)據(jù)結(jié)構(gòu)軟件設計基礎數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的各個元素之間的邏輯關(guān)系的一種表示。數(shù)據(jù)結(jié)構(gòu)設計應確定數(shù)據(jù)的組織、存取方式、相關(guān)程度以及信息的不同處理方法。數(shù)據(jù)結(jié)構(gòu)的組織方法和復雜程度可以靈活多樣,但典型的數(shù)據(jù)結(jié)構(gòu)種類是有限的,它們是構(gòu)成一些更復雜結(jié)構(gòu)的基本構(gòu)件塊。三.數(shù)據(jù)結(jié)構(gòu)軟件設計基礎
四.軟件過程軟件過程則著重描述各個模塊的處理細節(jié)。軟件過程必須提供精確的處理說明,包括事件的順序、正確的判定點、重復的操作等等。軟件設計基礎軟件設計基礎四.軟件過程五.自頂向下,逐步細化
將軟件的體系結(jié)構(gòu)按自頂向下方式,對各個層次的過程細節(jié)和數(shù)據(jù)細節(jié)逐層細化,直到用程序設計語言的語句能夠?qū)崿F(xiàn)為止,從而最后確立整個的體系結(jié)構(gòu)。軟件設計基礎六.模塊化(Modularity)軟件系統(tǒng)的模塊化是指整個軟件被劃分成若干單獨命名和可編址的部分,稱之為模塊。這些模塊可以被組裝起來以滿足整個問題的需求。把問題/子問題的分解與軟件開發(fā)中的系統(tǒng)/子系統(tǒng)或系統(tǒng)/模塊對應起來,就能夠把一個大而復雜的軟件系統(tǒng)劃分成易于理解的比較單純的模塊結(jié)構(gòu)。軟件設計基礎模塊化是軟件設計的一個基本準則
高層模塊從整體上把握問題,隱蔽細節(jié)復雜問題較小問題
分解
可減小解題所需的總的工作分解軟件設計基礎模塊化和軟件成本圖成本或工作量模塊數(shù)量軟件總成本集成成本成本/模塊M最小成本區(qū)域軟件設計基礎七.抽象化軟件系統(tǒng)進行模塊設計時,可有不同的抽象層次。在最高的抽象層次上,可以使用問題所處環(huán)境的語言概括地描述問題的解法。在較低的抽象層次上,則采用過程化的方法。軟件設計基礎(1)過程的抽象
在軟件工程中,從系統(tǒng)定義到實現(xiàn),每進展一步都可以看做是對軟件解決方法的抽象化過程的一次細化。在軟件需求分析階段,用“問題所處環(huán)境的、為大家所熟悉的術(shù)語”來描述軟件的解決方法。在從概要設計到詳細設計的過程中,抽象化的層次逐次降低。產(chǎn)生源程序時到達最低抽象層次。軟件設計基礎(2)數(shù)據(jù)抽象
在不同層次上描述數(shù)據(jù)對象的細節(jié),定義與該數(shù)據(jù)對象相關(guān)的操作。
例如,在CAD軟件中,定義一個叫做drawing的數(shù)據(jù)對象。可將drawing規(guī)定為一個抽象數(shù)據(jù)類型,定義它的內(nèi)部細節(jié)為:TYPEdrawingISSTRUCTUREDEFIND
numberISSTRINGLENGTH(12);
geometryDEFIND……notesISSTRINGLENGTH(256);
BOMDEFIND……ENDdrawingTYPE;軟件設計基礎數(shù)據(jù)抽象drawing本身由另外一些數(shù)據(jù)抽象,如geometry、BOM(billofmaterials)構(gòu)成定義drawing的抽象數(shù)據(jù)類型之后,可引用它來定義其它數(shù)據(jù)對象,而不必涉及drawing的內(nèi)部細節(jié)例如,定義:
blue-printISINSTANCEOFdrawing;
軟件設計基礎七.信息隱蔽由parnas方法提倡的信息隱蔽是指,每個模塊的實現(xiàn)細節(jié)對于其它模塊來說是隱蔽的。也就是說,模塊中所包含的信息(包括數(shù)據(jù)和過程)不允許其它不需要這些信息的模塊使用。獨立的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。軟件設計基礎信息隱蔽的目的:
提高模塊的獨立性,減少修改或維護時的影響面。軟件設計基礎軟件設計的概述軟件設計的基礎模塊設計基礎概要設計概述結(jié)構(gòu)化設計方法JACKSON開發(fā)方法數(shù)據(jù)設計和文件設計過程設計(詳細設計)設計的評審目錄模塊設計基礎一.模塊(Module) “模塊”,一般具有如下三個基本屬性:功能:描述該模塊實現(xiàn)什么功能邏輯:描述模塊內(nèi)部怎么做狀態(tài):該模塊使用時的環(huán)境和條件在描述一個模塊時,還必須按模塊的外部特性與內(nèi)部特性分別描述模塊的外部特性模塊的模塊名、參數(shù)表、其中的輸入?yún)?shù)和輸出參數(shù),以及給程序以至整個系統(tǒng)造成的影響模塊的內(nèi)部特性完成其功能的程序代碼和僅供該模塊內(nèi)部使用的數(shù)據(jù)模塊設計基礎二.模塊獨立性模塊獨立性,是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能,而與軟件系統(tǒng)中其它的模塊的接口是簡單的.例如,若一個模塊只具有單一的功能且與其它模塊沒有太多的聯(lián)系,則稱此模塊具有模塊獨立性
一般采用兩個準則度量模塊獨立性。即模塊間耦合和模塊內(nèi)聚模塊設計基礎
耦合是模塊之間的互相連接的緊密程度的度量。
內(nèi)聚是模塊功能強度(一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度)的度量。模塊獨立性比較強的模塊應是高內(nèi)聚低耦合的模塊。模塊設計基礎三.模塊間的耦合模塊設計基礎
非直接耦合(NondirectCoupling)
兩個模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的。非直接耦合的模塊獨立性最強。數(shù)據(jù)耦合(DataCoupling)
(Onlydataarepassed.Itiseasytotracedataandmakechanges.)一個模塊訪問另一個模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的。標記耦合(StampCoupling)
一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。模塊設計基礎控制耦合
(ControlCoupling)
如果一個模塊通過傳送開關(guān)、標志、名字等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合。模塊設計基礎外部耦合(ExternalCoupling)
一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。公共耦合(CommonCoupling)(Dataareaccessiblefromacommondatastore)若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。模塊設計基礎公共耦合的復雜程度隨耦合模塊的個數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。模塊設計基礎公共耦合
(Commoncoupling):Global:V1V2A:……………………A1=V1+V2……………………B:……………………V1=B1……………………Global:V1V2A:……………………V1++……………………B:……………………V2=B1+V1……………………問題:
公共部分的改動將影響所有調(diào)用它的模塊;
公共部分的數(shù)據(jù)存取無法控制;
復雜程度隨耦合模塊的個數(shù)增加而增加。內(nèi)容耦合(ContentCoupling)
如果發(fā)生下列情形,兩個模塊之間就發(fā)生了內(nèi)容耦合:
(1)一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù);
(2)一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;
(3)兩個模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中);
(4)一個模塊有多個入口。模塊設計基礎……ABCDA:……………………gotoC1……………………C:……………………C1:…………例1:A訪問C的內(nèi)部數(shù)據(jù)或不通過正常入口而轉(zhuǎn)入C的內(nèi)部。例2:部分代碼重疊(常出現(xiàn)在匯編程序中)B
A例3:一個模塊有多個入口(功能)A:………………………………entry1:………………………………entry2:………………………………
c
模塊設計基礎內(nèi)容耦合圖
模塊設計基礎實際上,模塊之間是混合式的耦合原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。
c
四.模塊內(nèi)聚模塊設計基礎功能內(nèi)聚(FunctionalCohesion)
一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。模塊設計基礎信息內(nèi)聚(InformationalCohesion)
這種模塊完成多個功能,各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是基于同一個數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚的模塊。模塊設計基礎模塊設計基礎信息內(nèi)聚示例圖信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的隱蔽。即把某個數(shù)據(jù)結(jié)構(gòu)、資源或設備隱蔽在一個模塊內(nèi),不為別的模塊所知曉。模塊設計基礎通信內(nèi)聚(CommunicationCohesion)
如果一個模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同作廢說明
- 草皮購銷合同
- 勞務外包承包合同
- 2025上海市物業(yè)維修工程委托審價合同(合同版本)
- 2025《房屋租賃合同》補充合同樣本
- 建筑工程項目競標與投標
- 2025年食品、飲料、煙草專用生產(chǎn)設備零件項目規(guī)劃申請報告模板
- 2025農(nóng)村房屋建筑施工承包合同(自用)
- 2025年酸奶菌項目申請報告
- 2025年導電銀漿項目立項申請報告模板
- 2025年度新能源汽車充電站運營權(quán)轉(zhuǎn)讓合同樣本4篇
- 第5課 隋唐時期的民族交往與交融 課件(23張) 2024-2025學年統(tǒng)編版七年級歷史下冊
- 2024年全國職業(yè)院校技能大賽高職組(生產(chǎn)事故應急救援賽項)考試題庫(含答案)
- 2024年江蘇農(nóng)牧科技職業(yè)學院高職單招語文歷年參考題庫含答案解析
- 廣聯(lián)達智慧工地合同范例
- 老年上消化道出血急診診療專家共識2024
- 廣東省廣州黃埔區(qū)2023-2024學年八年級上學期期末物理試卷(含答案)
- 醫(yī)院護理10s管理
- 人教版一年級下冊數(shù)學第五單元認識人民幣練習
- 學校安全工作計劃及行事歷
- 《GMP基礎知識培訓》課件
評論
0/150
提交評論