版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件設(shè)計(jì)基礎(chǔ)第1頁,共82頁,2023年,2月20日,星期日1提綱概述軟件設(shè)計(jì)的目標(biāo)衡量設(shè)計(jì)的技術(shù)標(biāo)準(zhǔn)設(shè)計(jì)過程設(shè)計(jì)原則:(抽象、逐級求精、模塊化、信息隱藏、模塊獨(dú)立)軟件體系結(jié)構(gòu)設(shè)計(jì)部件級設(shè)計(jì)設(shè)計(jì)規(guī)約與評審第2頁,共82頁,2023年,2月20日,星期日2軟件設(shè)計(jì)概述軟件需求分析解決“做什么”的問題,軟件設(shè)計(jì)過程則解決“怎么做”的問題。軟件設(shè)計(jì)是把軟件需求變換成軟件表示的過程,主要包括兩個(gè)階段:概要設(shè)計(jì)(軟件體系結(jié)構(gòu)設(shè)計(jì)階段)和詳細(xì)設(shè)計(jì)(部件級設(shè)計(jì)階段)第3頁,共82頁,2023年,2月20日,星期日3還要加上接口設(shè)計(jì)、界面設(shè)計(jì)(人機(jī)接口設(shè)計(jì))第4頁,共82頁,2023年,2月20日,星期日4需求規(guī)格說明書設(shè)計(jì)文檔編碼在搞清楚做什么、怎么做后才能進(jìn)行!第5頁,共82頁,2023年,2月20日,星期日5軟件設(shè)計(jì)是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。第6頁,共82頁,2023年,2月20日,星期日6軟件設(shè)計(jì)的任務(wù)使用一種設(shè)計(jì)方法,軟件分析模型中通過數(shù)據(jù)、功能和行為模型所展示的軟件需求的信息被傳送給設(shè)計(jì)階段,產(chǎn)生數(shù)據(jù)/類設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、構(gòu)件級設(shè)計(jì)第7頁,共82頁,2023年,2月20日,星期日7還要加上接口設(shè)計(jì)、界面設(shè)計(jì)(人機(jī)接口設(shè)計(jì))第8頁,共82頁,2023年,2月20日,星期日8分析模型設(shè)計(jì)模型基于類的元素
分析模型
用例文本用例圖活動圖泳道圖
數(shù)據(jù)流圖控制流圖處理說明
面向流的元素
行為元素基于場景的元素
類圖分析包數(shù)據(jù)字典協(xié)作圖
狀態(tài)圖序列圖數(shù)據(jù)/類設(shè)計(jì)
接口設(shè)計(jì)-
構(gòu)件級設(shè)計(jì)設(shè)計(jì)模型體系結(jié)構(gòu)設(shè)計(jì)設(shè)計(jì)的原料從哪里來?第9頁,共82頁,2023年,2月20日,星期日9數(shù)據(jù)/類設(shè)計(jì):將分析-類模型變成類的實(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ì):接口設(shè)計(jì)描述了軟件內(nèi)部、軟件和協(xié)作系統(tǒng)之間以及軟件同人之間如何通信構(gòu)件級設(shè)計(jì):構(gòu)件級設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性元素變換為對軟件部件的過程性描述第10頁,共82頁,2023年,2月20日,星期日10(1)數(shù)據(jù)/類設(shè)計(jì)在類和由CRC中定義的數(shù)據(jù)對象和關(guān)系以及數(shù)據(jù)字典中描述的詳細(xì)數(shù)據(jù)內(nèi)容提供了數(shù)據(jù)設(shè)計(jì)活動的基礎(chǔ)數(shù)據(jù)設(shè)計(jì)的過程包括以下兩步:1)為在需求分析階段所確定的數(shù)據(jù)對象選擇邏輯表示,需要對不同結(jié)構(gòu)進(jìn)行算法分析,以便選擇一個(gè)最有效的設(shè)計(jì)方案。2)確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊,以便限制或確定各個(gè)數(shù)據(jù)設(shè)計(jì)決策的影響范圍。
有一句名言教材P63第11頁,共82頁,2023年,2月20日,星期日11(2)體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)定義了軟件的整體結(jié)構(gòu),它由軟件構(gòu)件、外部可見的屬性和它們之間的關(guān)系組成。體系結(jié)構(gòu)設(shè)計(jì)表示可以從系統(tǒng)規(guī)約、分析模型和分析模型中定義的子系統(tǒng)的交互導(dǎo)出。第12頁,共82頁,2023年,2月20日,星期日12(3)接口設(shè)計(jì)接口設(shè)計(jì)主要包括三個(gè)方面:-設(shè)計(jì)軟件模塊間的接口-設(shè)計(jì)模塊和其他非人的信息生產(chǎn)者和消費(fèi)者(比如外部實(shí)體)之間的接口-設(shè)計(jì)人(用戶)和計(jì)算機(jī)間的接口第13頁,共82頁,2023年,2月20日,星期日13(4)構(gòu)件級設(shè)計(jì)構(gòu)件級設(shè)計(jì)將軟件體系結(jié)構(gòu)的結(jié)構(gòu)性元素變換為對軟件構(gòu)件的過程性描述從類為基礎(chǔ)的模型、流模型、行為模型中得到的信息是構(gòu)件設(shè)計(jì)的基礎(chǔ)第14頁,共82頁,2023年,2月20日,星期日14軟件設(shè)計(jì)的目標(biāo)在進(jìn)行軟件設(shè)計(jì)的過程中,要密切關(guān)注軟件的質(zhì)量因素。軟件設(shè)計(jì)過程的目標(biāo)是:1)設(shè)計(jì)必須實(shí)現(xiàn)分析模型中所描述的所有顯示需求,必須滿足用戶希望的所有隱式需求2)設(shè)計(jì)必須是可讀的、可理解的,使得將來易于編程、易于測試、易于維護(hù)。3)設(shè)計(jì)應(yīng)從實(shí)現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、行為相關(guān)的軟件全貌。第15頁,共82頁,2023年,2月20日,星期日15衡量設(shè)計(jì)的技術(shù)標(biāo)準(zhǔn)1)設(shè)計(jì)出來的結(jié)構(gòu)應(yīng)該是分層結(jié)構(gòu),從而建立軟件之間的控制2)設(shè)計(jì)應(yīng)當(dāng)模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的部件3)設(shè)計(jì)應(yīng)當(dāng)既包含數(shù)據(jù)抽象,也包含過程抽象。4)設(shè)計(jì)應(yīng)當(dāng)建立具有獨(dú)立功能特征的模塊。5)設(shè)計(jì)應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間復(fù)雜連接的接口。6)設(shè)計(jì)應(yīng)能根據(jù)軟件需求分析獲取的信息,建立可驅(qū)動、可重復(fù)的方法。第16頁,共82頁,2023年,2月20日,星期日16軟件設(shè)計(jì)的過程制定規(guī)范體系結(jié)構(gòu)和接口設(shè)計(jì)數(shù)據(jù)/類設(shè)計(jì)構(gòu)件級(過程)設(shè)計(jì)編寫設(shè)計(jì)文檔設(shè)計(jì)評審第17頁,共82頁,2023年,2月20日,星期日17軟件設(shè)計(jì)原則第18頁,共82頁,2023年,2月20日,星期日18抽象化與逐步求精抽象,是在軟件設(shè)計(jì)的規(guī)模逐漸增大的情況下,控制復(fù)雜性的基本策略抽象的過程是從特殊到一般的過程,上層概念是下層概念的抽象,下層概念是上層概念的精化和細(xì)化軟件工程過程的每一步都是對較高一級抽象的解作一次具體化的描述第19頁,共82頁,2023年,2月20日,星期日19軟件設(shè)計(jì)中主要抽象手段有:過程抽象和數(shù)據(jù)抽象過程抽象(也稱功能抽象)是指任何一個(gè)完成明確定義功能的操作都可以被使用者當(dāng)作單個(gè)實(shí)體看待,盡管這個(gè)操作實(shí)際上是由一系列更低級的操作來完成的數(shù)據(jù)抽象是指定義數(shù)據(jù)類型和施加于該類型對象的操作,并限定了對象的取值范圍,只能通過這些操作修改和觀察使用數(shù)據(jù)程序設(shè)計(jì)語言的支持第20頁,共82頁,2023年,2月20日,星期日20逐步求精逐步求精,把問題的求解過程分解成若干步驟或階段,每步都比上步更精化,更接近問題的解法抽象使得設(shè)計(jì)者能夠描述過程和數(shù)據(jù)而忽略低層的細(xì)節(jié),而求精有助于設(shè)計(jì)者在設(shè)計(jì)過程中揭示低層的細(xì)節(jié)第21頁,共82頁,2023年,2月20日,星期日21模塊化模塊化,即把軟件按照規(guī)定原則,劃分為一個(gè)個(gè)較小的,相互獨(dú)立的但又相互關(guān)聯(lián)的部件,實(shí)際上是系統(tǒng)分解和抽象的過程模塊是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募希菃为?dú)命名的,并且可以通過名字來訪問-例如,過程。函數(shù)、子程序、宏等第22頁,共82頁,2023年,2月20日,星期日22設(shè)C(x)是描述問題x復(fù)雜性的函數(shù),E(x)是解決問題x所需工作量(按時(shí)間計(jì)算)的函數(shù)。對于兩個(gè)問題p1和p2,如果C(p1)>C(p2)……(7.1a)那么E(p1)>E(p2)……(7.1b)即問題越復(fù)雜,解決問題所需要的花費(fèi)更多。第23頁,共82頁,2023年,2月20日,星期日23通過對人解決問題的實(shí)驗(yàn),又存在另一個(gè)有趣的規(guī)律:C(p1+p2)>C(p1)+C(p2)……(7.2)方程式(7.2)意味著p1和p2組合后的復(fù)雜性比單獨(dú)考慮每個(gè)問題的復(fù)雜性要大??紤]方程式(7.2)和方程式(7.1)隱含的條件,可以得出E(p1+p2)>E(p1)+E(p2)……(7.3)第24頁,共82頁,2023年,2月20日,星期日24不等式(7.3)表達(dá)出了對于模塊化和軟件具有十分重要意義的結(jié)論(即,模塊化的論據(jù)):將復(fù)雜問題分解成可以管理的片段會使問題更加容易。“如果我們無限制地劃分軟件,開發(fā)它所需的工作量會變得小到可以忽略嗎?”第25頁,共82頁,2023年,2月20日,星期日25實(shí)際情況是,影響軟件開發(fā)的工作量的因素還有很多,例如模塊接口費(fèi)用等等上述不等式只能說明,當(dāng)模塊的總數(shù)增加時(shí),單獨(dú)開發(fā)各個(gè)子模塊的工作量之和會有所減少如果模塊是相互獨(dú)立的,當(dāng)模塊變得越小,每個(gè)模塊花費(fèi)的工作量越低;但當(dāng)模塊數(shù)增加時(shí),模塊間的聯(lián)系也隨之增加,把這些模塊聯(lián)接起來的工作量也隨之增加第26頁,共82頁,2023年,2月20日,星期日26第27頁,共82頁,2023年,2月20日,星期日27信息隱藏每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對于其它模塊來說應(yīng)該是隱蔽的塊中所包含的信息(包括數(shù)據(jù)和過程)不允許其它不需要這些信息的模塊使用通過信息隱藏,則可定義和實(shí)施對模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制第28頁,共82頁,2023年,2月20日,星期日28模塊獨(dú)立模塊獨(dú)立:模塊完成獨(dú)立的功能并且與其它模塊的接口簡單,符合信息隱藏和信息局部化原則,模塊間關(guān)聯(lián)和依賴程度盡可能小模塊獨(dú)立的重要性-功能被劃分,并且接口被簡化,所以具有有效模塊化的軟件更易于開發(fā)-由于因設(shè)計(jì)和編碼修改引起的副作用受到局限,錯(cuò)誤傳播被減小,并且模塊復(fù)用成為可能,所以獨(dú)立的模塊更易于維護(hù)和測試第29頁,共82頁,2023年,2月20日,星期日29模塊的獨(dú)立性可以由兩項(xiàng)指標(biāo)來衡量:內(nèi)聚度與耦合度內(nèi)聚(cohesion)是一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量耦合(coupling)是模塊之間的相對獨(dú)立性(互相連接的緊密程度)的度量第30頁,共82頁,2023年,2月20日,星期日30內(nèi)聚一般模塊的內(nèi)聚性分為七種類型第31頁,共82頁,2023年,2月20日,星期日311)巧合內(nèi)聚(偶然內(nèi)聚):將幾個(gè)模塊中沒有明確表現(xiàn)出獨(dú)立功能的相同程序代碼段獨(dú)立出來建立的模塊稱為巧合內(nèi)聚模塊。2)邏輯內(nèi)聚:指完成一組邏輯相關(guān)任務(wù)的模塊,調(diào)用該模塊時(shí),由傳送給模塊的控制參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。3)時(shí)間內(nèi)聚:指一個(gè)模塊中的所有任務(wù)必須在同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊?!痰?2頁,共82頁,2023年,2月20日,星期日324)過程內(nèi)聚:指一個(gè)模塊完成多個(gè)任務(wù),這些任務(wù)必須按指定的過程(procedural)執(zhí)行。5)通信內(nèi)聚:指一個(gè)模塊內(nèi)所有處理元素都集中在某個(gè)數(shù)據(jù)結(jié)構(gòu)的一塊區(qū)域中。6)順序內(nèi)聚:指一個(gè)模塊完成多個(gè)功能,這些功能又必須順序執(zhí)行。一個(gè)成分的輸出是下一個(gè)成分的輸入。7)功能內(nèi)聚:指一個(gè)模塊中各個(gè)部分都是為完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割?!痰?3頁,共82頁,2023年,2月20日,星期日33巧合內(nèi)聚第34頁,共82頁,2023年,2月20日,星期日34邏輯內(nèi)聚第35頁,共82頁,2023年,2月20日,星期日35通信內(nèi)聚第36頁,共82頁,2023年,2月20日,星期日36功能內(nèi)聚第37頁,共82頁,2023年,2月20日,星期日37第38頁,共82頁,2023年,2月20日,星期日38耦合一般模塊之間可能的耦合方式有七種類型第39頁,共82頁,2023年,2月20日,星期日391)內(nèi)容耦合:如果一個(gè)模塊直接訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù);或者一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;或者兩個(gè)模塊有一部分程序代碼重迭;或者一個(gè)模塊有多個(gè)入口,則兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合。2)公共耦合:若一組模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。3)外部耦合:指模塊間通過軟件之外的環(huán)境聯(lián)結(jié)(如I/O將模塊耦合到特定的設(shè)備、格式、通信協(xié)議上)時(shí),稱為外部耦合。第40頁,共82頁,2023年,2月20日,星期日404)控制耦合:如果一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)中包含了控制信息,該控制信息用于控制接收模塊中的執(zhí)行邏輯,則稱為控制耦合。5)標(biāo)記耦合:兩個(gè)模塊之間通過參數(shù)表傳遞一個(gè)數(shù)據(jù)結(jié)構(gòu)的一部分(如某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu)),就是標(biāo)記耦合。6)數(shù)據(jù)耦合:兩個(gè)模塊之間僅通過參數(shù)表傳遞簡單數(shù)據(jù),則稱為數(shù)據(jù)耦合。7)非直接耦合:如果兩個(gè)模塊之間沒有直接關(guān)系,即它們中的任何一個(gè)都不依賴于另一個(gè)而能獨(dú)立工作,這種耦合稱為非直接耦合。第41頁,共82頁,2023年,2月20日,星期日41內(nèi)容耦合第42頁,共82頁,2023年,2月20日,星期日42公共耦合第43頁,共82頁,2023年,2月20日,星期日43控制耦合第44頁,共82頁,2023年,2月20日,星期日44非直接耦合第45頁,共82頁,2023年,2月20日,星期日45模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,而其模塊獨(dú)立性就越弱一個(gè)模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它的內(nèi)聚性就越高模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)是高內(nèi)聚低耦合的模塊第46頁,共82頁,2023年,2月20日,星期日46軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì)概述體系結(jié)構(gòu)發(fā)展過程軟件體系結(jié)構(gòu)風(fēng)格(實(shí)例)體系結(jié)構(gòu)評估、分析方法第47頁,共82頁,2023年,2月20日,星期日47軟件體系結(jié)構(gòu)設(shè)計(jì)軟件體系結(jié)構(gòu)關(guān)注系統(tǒng)的一個(gè)或多個(gè)結(jié)構(gòu),包含軟件構(gòu)件、這些構(gòu)件的對外可見的性質(zhì)以及它們之間的關(guān)系Bass提出體系結(jié)構(gòu)重要的三個(gè)關(guān)鍵理由:
–①方便利益相關(guān)人員的交流
–②有利于系統(tǒng)設(shè)計(jì)的前期決策
–③可傳遞的系統(tǒng)級抽象第48頁,共82頁,2023年,2月20日,星期日48體系結(jié)構(gòu)發(fā)展過程常見的軟件體系結(jié)構(gòu)
–單主機(jī)結(jié)構(gòu)
–C/S(Client/Server)結(jié)構(gòu)
–B/S(Browser/Server)結(jié)構(gòu)第49頁,共82頁,2023年,2月20日,星期日49軟件體系結(jié)構(gòu)的風(fēng)格絕大多數(shù)可以被歸類為相對小數(shù)量的體系結(jié)構(gòu)風(fēng)格之一每種風(fēng)格描述一種系統(tǒng)范疇,范疇包括:
–①一些實(shí)現(xiàn)系統(tǒng)所需的功能的部件(如數(shù)據(jù)庫、計(jì)算模塊);
–②一組用來連接部件“通信、協(xié)調(diào)和合作”的“連接子”;
–③定義部件之間怎樣整合的系統(tǒng)約束;
–④使設(shè)計(jì)者能夠理解整個(gè)系統(tǒng)屬性并分析已知屬性的語義模型。第50頁,共82頁,2023年,2月20日,星期日50數(shù)據(jù)為中心體系結(jié)構(gòu)一些數(shù)據(jù)(比如一個(gè)文件或者數(shù)據(jù)庫)保存在整個(gè)結(jié)構(gòu)的中心,并且被其他部件頻繁地使用、添加、刪除、或者修改第51頁,共82頁,2023年,2月20日,星期日51數(shù)據(jù)流風(fēng)格的體系結(jié)構(gòu)這種結(jié)構(gòu)適用于輸入數(shù)據(jù)被一系列的計(jì)算或者處理部件變換成輸出數(shù)據(jù)。第52頁,共82頁,2023年,2月20日,星期日52調(diào)用和返回風(fēng)格的體系結(jié)構(gòu)
教材P73這種風(fēng)格使一個(gè)軟件設(shè)計(jì)者設(shè)計(jì)出非常容易修改和擴(kuò)充的體系結(jié)構(gòu)。包含:主程序/子程序風(fēng)格體系結(jié)構(gòu)和遠(yuǎn)程過程調(diào)用風(fēng)格的體系結(jié)構(gòu)第53頁,共82頁,2023年,2月20日,星期日53在這里要了解幾個(gè)概念:–程序結(jié)構(gòu)的深度:程序結(jié)構(gòu)的層次數(shù)稱為結(jié)構(gòu)的深度。結(jié)構(gòu)的深度在一定意義上反映了程序結(jié)構(gòu)的規(guī)模和復(fù)雜程度。–程序結(jié)構(gòu)的寬度:層次結(jié)構(gòu)中同一層模塊的最大模塊個(gè)數(shù)稱為結(jié)構(gòu)的寬度。–模塊的扇入和扇出:扇出表示一個(gè)模塊直接調(diào)用(或控制)的其它模塊數(shù)目。扇入則定義為調(diào)用(或控制)一個(gè)給定模塊的模塊個(gè)數(shù)。多扇出意味著需要控制和協(xié)調(diào)許多下屬模塊。而多扇入的模塊通常是公用模塊。第54頁,共82頁,2023年,2月20日,星期日54面向?qū)ο箫L(fēng)格的體系結(jié)構(gòu)系統(tǒng)部件封裝數(shù)據(jù)和操作數(shù)據(jù)的方法。部件之間的交互和協(xié)調(diào)通過消息來傳遞。第55頁,共82頁,2023年,2月20日,星期日55層次式風(fēng)格的體系結(jié)構(gòu)在這種結(jié)構(gòu)中,定義不同的層次,每層都完成了相對外層更靠近機(jī)器指令的操作第56頁,共82頁,2023年,2月20日,星期日56評估可選的體系結(jié)構(gòu)對于同一個(gè)軟件需求,由于各種設(shè)計(jì)方法的原理不同,會導(dǎo)出不同的軟件結(jié)構(gòu)。同一問題的不同軟件結(jié)構(gòu):第57頁,共82頁,2023年,2月20日,星期日57體系結(jié)構(gòu)選擇分析方法1)定義應(yīng)用場景(scenarios):通過usecase圖來從用戶的角度表現(xiàn)系統(tǒng)2)得出需求、約束和環(huán)境描述:這是需求工程的一部分,以確定所有客戶方關(guān)心的問題都被一一列出3)描述能處理上述情境和需求的體系結(jié)構(gòu)風(fēng)格4)單獨(dú)地評價(jià)系統(tǒng)的各項(xiàng)性能。針對體系結(jié)構(gòu)設(shè)計(jì)的性能包括:可靠性,性能,安全性,可維護(hù)性,靈活性,可測試性,可移植性,可用性和互操作性等。第58頁,共82頁,2023年,2月20日,星期日585)針對不同的架構(gòu)形式,評價(jià)第4步提到的這些性能的敏感程度??梢酝ㄟ^這樣的方法來評價(jià):在整個(gè)架構(gòu)中做一些小的變更,分析并確定上述性能有沒有很敏感的變化。那些在體系結(jié)構(gòu)改動中受到較大影響的性能被稱為敏感點(diǎn)(sensitivepoint)。6)通過第5步的敏感點(diǎn)分析來評價(jià)第3步中提出的那些體系結(jié)構(gòu)。方法如下:當(dāng)一個(gè)架構(gòu)的敏感點(diǎn)被確定,就需要權(quán)衡利弊的因素(trade-offpoint)。權(quán)衡因素是指改變架構(gòu)中的這項(xiàng)內(nèi)容,系統(tǒng)的很多性能就會發(fā)生敏感的變化。比如說,一個(gè)client-server結(jié)構(gòu)的系統(tǒng)的表現(xiàn)性能和系統(tǒng)中server的數(shù)量是息息相關(guān)的(增加server的數(shù)量,一定程度上系統(tǒng)的表現(xiàn)性能就會提高)……這樣的話,server的數(shù)量就是這個(gè)架構(gòu)中的平衡點(diǎn)。第59頁,共82頁,2023年,2月20日,星期日59在進(jìn)行軟件體系結(jié)構(gòu)設(shè)計(jì)時(shí),可以參考如下規(guī)則:(1)改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性(2)模塊適當(dāng)?shù)纳疃?、寬度、扇出和扇入?)模塊判斷作用范圍應(yīng)在其控制作用范圍內(nèi)(4)力爭降低模塊接口的復(fù)雜度(5)設(shè)計(jì)單入口單出口的模塊(6)模塊功能應(yīng)該是可以預(yù)測的,模塊大小適中(7)一般一個(gè)模塊包含的語句在30-50條左右比較好(模塊在500行代碼以內(nèi))(8)一個(gè)設(shè)計(jì)好的軟件結(jié)構(gòu),通常頂層扇出比較高,中間層扇出比較少,低層有高扇入。第60頁,共82頁,2023年,2月20日,星期日60構(gòu)件級設(shè)計(jì)技術(shù)第61頁,共82頁,2023年,2月20日,星期日61構(gòu)件級設(shè)計(jì)技術(shù)在構(gòu)件級設(shè)計(jì)階段,主要完成如下工作:(1)為每個(gè)構(gòu)件確定采用的算法,選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過程,編寫構(gòu)件的詳細(xì)過程性描述(2)確定每一構(gòu)件內(nèi)部使用的數(shù)據(jù)結(jié)構(gòu)(3)在構(gòu)件級設(shè)計(jì)結(jié)束時(shí),應(yīng)該把上述結(jié)果寫入構(gòu)件級設(shè)計(jì)說明書,并且通過復(fù)審形成正式文檔,作為一下階段(編碼階段)的工作依據(jù)。第62頁,共82頁,2023年,2月20日,星期日62結(jié)構(gòu)化程序設(shè)計(jì)方法“如果一個(gè)程序的代碼塊僅僅通過順序、選擇和循環(huán)這三種基本控制結(jié)構(gòu)進(jìn)行連結(jié),并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱這個(gè)程序是結(jié)構(gòu)化的”。隨著面向?qū)ο蠛蛙浖?fù)用等新的軟件開發(fā)方法和技術(shù)的發(fā)展,更現(xiàn)實(shí)、更有效的開發(fā)途徑可能是自頂向下和自底向上兩種方法有機(jī)的結(jié)合。第63頁,共82頁,2023年,2月20日,星期日63圖形表示法程序流程圖
N-S圖
PAD(請同學(xué)們自學(xué))第64頁,共82頁,2023年,2月20日,星期日64程序流程圖程序流程圖獨(dú)立于任何一種程序設(shè)計(jì)語言,比較直觀、清晰、易于學(xué)習(xí)掌握為使用流程圖描述結(jié)構(gòu)化程序,必須限制流程圖只能使用五種基本控制結(jié)構(gòu)第65頁,共82頁,2023年,2月20日,星期日65第66頁,共82頁,2023年,2月20日,星期日66控制結(jié)構(gòu)相互組合和嵌套的實(shí)例第67頁,共82頁,2023年,2月20日,星期日67N-S圖Nassi和Shneiderman提出了一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具,叫做盒圖,也叫做N-S圖五種基本控制結(jié)構(gòu)第68頁,共82頁,2023年,2月20日,星期日68控制結(jié)構(gòu)相互組合和嵌套的實(shí)例第69頁,共82頁,2023年,2月20日,星期日69判定表當(dāng)算法中包含多重嵌套的條件選擇時(shí),用程序流程圖、N-S圖或PAD都不易清楚地描述。然而,判定表卻能清晰地表達(dá)復(fù)雜的條件組合與應(yīng)做動作之間的對應(yīng)關(guān)系第70頁,共82頁,2023年,2月20日,星期日70不包含多分支結(jié)構(gòu)的流程圖實(shí)例第71頁,共82頁,2023年,2月20日,星期日71反映程序邏輯的判定表第72頁,共82頁,2023年,2月20日,星期日72判定表的優(yōu)點(diǎn)是能夠簡潔,無二義性地描述所有的處理規(guī)則。但判定表表示的是靜態(tài)邏輯,是在某種條件取值組合情況下可能的結(jié)果,它不能表達(dá)加工的順序,也不能表達(dá)循環(huán)結(jié)構(gòu)第73頁,共82頁,2023年,2月20日,星期日73設(shè)計(jì)規(guī)約與設(shè)計(jì)評審第74頁,共82頁,2023年,2月20日,星期日74設(shè)計(jì)規(guī)約I.工作范圍A.系統(tǒng)目標(biāo)B.運(yùn)行環(huán)境C.主要軟件需求D.設(shè)計(jì)約束/限制II.體系結(jié)構(gòu)設(shè)計(jì)A.數(shù)據(jù)流與控制流復(fù)審B.導(dǎo)出的程序結(jié)構(gòu)C.功能與程序交叉索引III.數(shù)據(jù)設(shè)計(jì)A.數(shù)據(jù)對象與形成的數(shù)據(jù)結(jié)構(gòu)B.文件和數(shù)據(jù)庫(文件的邏輯結(jié)構(gòu),文件邏輯記錄描述,訪問方式)C.全局?jǐn)?shù)據(jù)D.文件/數(shù)據(jù)與程序交叉索引IV.接口設(shè)計(jì)A.人機(jī)界面規(guī)格說明B.人機(jī)界面設(shè)計(jì)規(guī)則C.外部接口設(shè)計(jì)i.外部數(shù)據(jù)接口ii.外部系統(tǒng)或設(shè)備接口D.內(nèi)部接口設(shè)計(jì)規(guī)則第75頁,共82頁,2023年,2月20日,星期日75V.各部件的過程設(shè)計(jì)A.處理與算法描述B.接口描述C.設(shè)計(jì)語言(或其他描述)D.使
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版民間借貸擔(dān)保合同簽訂技巧與法律風(fēng)險(xiǎn)規(guī)避4篇
- 2025版15%股權(quán)轉(zhuǎn)讓與市場拓展及銷售分成合同3篇
- 2025年度新能源項(xiàng)目投資出資人轉(zhuǎn)讓協(xié)議書范本4篇
- 2025版危險(xiǎn)品運(yùn)輸車輛監(jiān)控與維護(hù)協(xié)議3篇
- 2025年高端商務(wù)車輛融資租賃專項(xiàng)合同4篇
- 2025年鐵藝欄桿生產(chǎn)、安裝、維護(hù)及保養(yǎng)服務(wù)協(xié)議3篇
- 科技助力下的學(xué)生自我管理能力提升
- 2025年度戶外運(yùn)動服裝采購與銷售合同范本4篇
- 家庭教育心理輔導(dǎo)在遠(yuǎn)程教育中的應(yīng)用
- 生態(tài)教育實(shí)踐中的跨學(xué)科合作與交流
- 2014新PEP小學(xué)英語六年級上冊-Unit5-What-does-he-do復(fù)習(xí)課件
- 9.2溶解度(第1課時(shí)飽和溶液不飽和溶液)+教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級化學(xué)人教版(2024)下冊
- 礦山隱蔽致災(zāi)普查治理報(bào)告
- 副總經(jīng)理招聘面試題與參考回答(某大型國企)2024年
- PDCA循環(huán)提高護(hù)士培訓(xùn)率
- 《獅子王》電影賞析
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
- 中醫(yī)護(hù)理人文
- 2024-2030年中國路亞用品市場銷售模式與競爭前景分析報(bào)告
- 貨物運(yùn)輸安全培訓(xùn)課件
- 前端年終述職報(bào)告
評論
0/150
提交評論