




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第5章軟件設(shè)計(jì)1 第第5章章 軟件設(shè)計(jì)軟件設(shè)計(jì) 第5章軟件設(shè)計(jì)2 5.1 5.1 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù) 軟件需求:解決軟件需求:解決“做什么做什么” 軟件設(shè)計(jì):解決軟件設(shè)計(jì):解決“怎么做怎么做” 第5章軟件設(shè)計(jì)3 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù) 問(wèn)題結(jié)構(gòu)問(wèn)題結(jié)構(gòu)( (軟件需求軟件需求) ) 軟件結(jié)構(gòu);軟件結(jié)構(gòu); 從軟件需求規(guī)格說(shuō)明書(shū)出發(fā),形成軟件從軟件需求規(guī)格說(shuō)明書(shū)出發(fā),形成軟件 的具體設(shè)計(jì)方案。的具體設(shè)計(jì)方案。 映射映射 第5章軟件設(shè)計(jì)4 1.1.軟件的總體結(jié)構(gòu)主要回答的問(wèn)題軟件的總體結(jié)構(gòu)主要回答的問(wèn)題 u軟件的組成部分軟件的組成部分 u軟件的層次關(guān)系軟件的層次關(guān)系 u模塊的內(nèi)部處理邏
2、輯模塊的內(nèi)部處理邏輯 u模塊之間的界面模塊之間的界面 第5章軟件設(shè)計(jì)5 2. 2. 軟件設(shè)計(jì)方法軟件設(shè)計(jì)方法 F結(jié)構(gòu)化設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)方法(SD)(SD) F面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法(JSD(JSD方法方法) ) F面向?qū)ο蟮脑O(shè)計(jì)方法面向?qū)ο蟮脑O(shè)計(jì)方法(OOD)(OOD) 第5章軟件設(shè)計(jì)6 3. 3. 軟件設(shè)計(jì)分為兩個(gè)階段:軟件設(shè)計(jì)分為兩個(gè)階段: (1)(1)概要設(shè)計(jì)概要設(shè)計(jì)( (總體設(shè)計(jì)總體設(shè)計(jì)) ) 確定軟件的結(jié)構(gòu)以及各組成成分確定軟件的結(jié)構(gòu)以及各組成成分( (子系統(tǒng)或模塊子系統(tǒng)或模塊) ) 之間的相互關(guān)系。之間的相互關(guān)系。 (2)(2)詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) 確定模塊內(nèi)部
3、的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模 塊程序過(guò)程的詳細(xì)文檔。塊程序過(guò)程的詳細(xì)文檔。 第5章軟件設(shè)計(jì)7 5.2 5.2 軟件設(shè)計(jì)的基本概念軟件設(shè)計(jì)的基本概念 第5章軟件設(shè)計(jì)8 5.2. 軟件設(shè)計(jì)基本概念 5.2.1 基本概念 設(shè)計(jì)師與程序員的地位。軟件設(shè)計(jì)的技術(shù)難度 要比編程、測(cè)試的高。所以程序員、測(cè)試員稱 為“員”,而設(shè)計(jì)師尊稱為“師”。 設(shè)計(jì)的好壞在根本上決定了軟件的優(yōu)劣。我們 可以斷言“差的系統(tǒng)設(shè)計(jì)必定產(chǎn)生差的軟件系 統(tǒng)”,但是不能保證“好的系統(tǒng)設(shè)計(jì)必定產(chǎn)生 好的軟件系統(tǒng)”。因?yàn)樵谠O(shè)計(jì)之前有需求開(kāi)發(fā) 工作,在設(shè)計(jì)之后還有編程、測(cè)試和維護(hù)工作, 無(wú)論哪個(gè)環(huán)
4、節(jié)出了差錯(cuò),都會(huì)把好事搞砸了。 第5章軟件設(shè)計(jì)9 軟件設(shè)計(jì)基本概念 5.2.1基本概念 軟件設(shè)計(jì)之源是軟件需求,包括“功能性需求” 與“非功能性需求”。設(shè)計(jì)的目標(biāo)就是使所設(shè) 計(jì)的系統(tǒng)能夠被開(kāi)發(fā)方順利地實(shí)現(xiàn),并且恰如 其分地滿足用戶的需求,使開(kāi)發(fā)方和用戶的利 益極大化。開(kāi)發(fā)人員不萬(wàn)不能偏離需求,為了 追求技術(shù)的先進(jìn)性而開(kāi)展系統(tǒng)設(shè)計(jì)工作。 依據(jù)“分而治之”的思想,我們把系統(tǒng)設(shè)計(jì)過(guò) 程劃分為兩個(gè)階段:高層設(shè)計(jì)階段和詳細(xì)設(shè)計(jì) 階段。高層設(shè)計(jì)階段的重點(diǎn)是系統(tǒng)結(jié)構(gòu)設(shè)計(jì)。 詳細(xì)設(shè)計(jì)階段的重點(diǎn)是用戶界面設(shè)計(jì)、數(shù)據(jù)庫(kù) 設(shè)計(jì)、模塊設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)等。 第5章軟件設(shè)計(jì)10 軟件設(shè)計(jì)基本概念 系統(tǒng)設(shè)計(jì)過(guò)程示意
5、圖 第5章軟件設(shè)計(jì)11 軟件設(shè)計(jì)基本概念 軟件系統(tǒng)與人體的比喻 體系結(jié)構(gòu)如同人的骨架。如果某個(gè)家伙的骨架 是猴子,那么無(wú)論怎樣喂養(yǎng)和美容,這家伙始 終都是猴子,不會(huì)成為人。人的身材大小取決 于骨架大小,天生小個(gè)子的人基本上不可能成 為威猛的大漢,后天再努力(例如鍛煉和吃喝) 也白搭。由此可見(jiàn),體系結(jié)構(gòu)乃是系統(tǒng)設(shè)計(jì)的 重中之重。 第5章軟件設(shè)計(jì)12 軟件設(shè)計(jì)基本概念 軟件系統(tǒng)與人體的比喻 用戶界面如同人的外表,最容易讓人一見(jiàn)鐘情 或一見(jiàn)惡心。象人類追求心靈美和外表美那樣, 軟件系統(tǒng)也追求(內(nèi)在的)功能強(qiáng)大和(外表 的)界面友好。我們?cè)谠O(shè)計(jì)軟件時(shí)不要沉迷于 技術(shù),而要多多思考什么樣的界面才能讓用戶
6、 更加喜歡。 第5章軟件設(shè)計(jì)13 軟件設(shè)計(jì)基本概念 軟件系統(tǒng)與人體的比喻 數(shù)據(jù)庫(kù)是存儲(chǔ)和處理數(shù)據(jù)用的。人體的數(shù)據(jù)庫(kù) 是大腦,知識(shí)相當(dāng)于數(shù)據(jù),全存在大腦里。如 果腦子里存儲(chǔ)的知識(shí)很多,那么這個(gè)人就顯得 博學(xué)。如果腦子處理知識(shí)的速度很高,那么這 個(gè)人就顯得聰明。數(shù)據(jù)庫(kù)設(shè)計(jì)的主要挑戰(zhàn)是 “高速處理大容量的數(shù)據(jù)”。 第5章軟件設(shè)計(jì)14 軟件設(shè)計(jì)基本概念 軟件系統(tǒng)與人體的比喻 模塊如同人的器官。每個(gè)器官都具有特定的功 能,器官們依附在骨架上。模塊是軟件系統(tǒng)的 部件,它們安插在體系結(jié)構(gòu)上(否則運(yùn)行起來(lái) 掉光光了)。在設(shè)計(jì)模塊時(shí)要重視功能獨(dú)立性, 還要追求“高內(nèi)聚、低耦合” 。 第5章軟件設(shè)計(jì)15 軟件設(shè)計(jì)
7、基本概念 軟件系統(tǒng)與人體的比喻 數(shù)據(jù)結(jié)構(gòu)與算法如同人的神經(jīng)和肌肉,它分布 在全身,讓器官具有生命并能發(fā)揮功能。人之 所以能夠全身運(yùn)動(dòng),那是無(wú)數(shù)的神經(jīng)和肌肉在 起作用。如果局部的神經(jīng)和肌肉失效了,那么 會(huì)導(dǎo)致對(duì)應(yīng)的器官殘廢。如果全局的神經(jīng)和肌 肉失效了,那么人就癱瘓了。同理,數(shù)據(jù)結(jié)構(gòu) 與算法也有全局和局部之分,都要慎重設(shè)計(jì)。 第5章軟件設(shè)計(jì)16 軟件設(shè)計(jì)基本概念 漫談設(shè)計(jì)模式 20世紀(jì)90年代,面向?qū)ο螅∣bject-Oriented) 方法與技術(shù)在國(guó)內(nèi)軟件業(yè)界十分火爆,人們熱 衷于談?wù)摗皩?duì)象”并引以為榮。十多年來(lái),人 們發(fā)表、出版了無(wú)數(shù)的文章和書(shū)籍?,F(xiàn)在,該 寫(xiě)的似乎都寫(xiě)完了,沒(méi)有新花樣玩了,
8、真是一 片無(wú)聊。設(shè)計(jì)模式(Design Pattern)及時(shí)問(wèn)世, 面向?qū)ο髳?ài)好者們終于有了新的追求。 小結(jié):小結(jié):設(shè)計(jì)模式的應(yīng)用價(jià)值在于它能幫助人們 簡(jiǎn)便地復(fù)用以前成功的設(shè)計(jì)方案。設(shè)計(jì)模式不 是憑空產(chǎn)生的,只有對(duì)應(yīng)用域問(wèn)題及其解決方 案進(jìn)行抽象和分析,發(fā)現(xiàn)本質(zhì),并按照一定的 格式記錄下來(lái),才能成為可以被人們復(fù)用的設(shè) 計(jì)模式。 第5章軟件設(shè)計(jì)17 5.3. 體系結(jié)構(gòu)設(shè)計(jì) 5.3.1 體系結(jié)構(gòu)設(shè)計(jì)原則 體系結(jié)構(gòu)是指軟件系統(tǒng)的基本和主體的形態(tài), 也就是軟件系統(tǒng)中“最本質(zhì)”的東西。一個(gè)軟 件系統(tǒng)的體系結(jié)構(gòu)設(shè)計(jì)得好不好,可以用“合 適性、結(jié)構(gòu)穩(wěn)定性、可擴(kuò)展性、可復(fù)用性”這 些特征量來(lái)評(píng)估。 第5章軟件
9、設(shè)計(jì)18 體系結(jié)構(gòu)設(shè)計(jì) 合適性:即體系結(jié)構(gòu)是否適合于軟件的合適性:即體系結(jié)構(gòu)是否適合于軟件的“功能性需求功能性需求” 和和“非功能性需求非功能性需求”。 設(shè)計(jì)師可以充分發(fā)揮主觀能動(dòng)性,根據(jù)需求的特征,通過(guò) 推理和歸納的方法設(shè)計(jì)出合適的體系結(jié)構(gòu)。經(jīng)驗(yàn)不豐富的 設(shè)計(jì)師往往把注意力集中在“功能性需求”而疏忽了“非 功能性需求”,殊不知后者恰恰是最能體現(xiàn)設(shè)計(jì)水平的地 方。 高水平的設(shè)計(jì)師高就高在“設(shè)計(jì)出恰好滿足客戶需求的軟 件,并且使開(kāi)發(fā)方和客戶方獲取最大的利益,而不是不惜 代價(jià)設(shè)計(jì)出最先進(jìn)的軟件。 對(duì)于軟件系統(tǒng)而言,能夠滿足需求的設(shè)計(jì)方案可能有很多 種,究竟該選哪一種?此時(shí)商業(yè)目標(biāo)是決策依據(jù),即選擇
10、此時(shí)商業(yè)目標(biāo)是決策依據(jù),即選擇 能夠?yàn)殚_(kāi)發(fā)方和客戶方帶來(lái)最大利益的那個(gè)設(shè)計(jì)方案。能夠?yàn)殚_(kāi)發(fā)方和客戶方帶來(lái)最大利益的那個(gè)設(shè)計(jì)方案。大 部分軟件開(kāi)發(fā)人員天生有使用新技術(shù)的傾向,而這種傾向 對(duì)開(kāi)發(fā)商業(yè)產(chǎn)品而言可能是不利的,切記切記。 第5章軟件設(shè)計(jì)19 體系結(jié)構(gòu)設(shè)計(jì) 結(jié)構(gòu)穩(wěn)定性: 當(dāng)前中國(guó)有幾句流行的至理名言:“穩(wěn)定壓倒一切”、 “發(fā)展是硬道理”。發(fā)展的前提條件是穩(wěn)定,社會(huì)如 此,開(kāi)發(fā)軟件產(chǎn)品也是如此。 體系結(jié)構(gòu)一旦設(shè)計(jì)完成,應(yīng)當(dāng)在一定的時(shí)間內(nèi)保持穩(wěn) 定不變,只有這樣才能使后續(xù)工作順利開(kāi)展。如果體 系結(jié)構(gòu)經(jīng)常變動(dòng),那么建筑在體系結(jié)構(gòu)之上的用戶界 面、數(shù)據(jù)庫(kù)、模塊、數(shù)據(jù)結(jié)構(gòu)等等也跟著經(jīng)常變動(dòng), 用“樹(shù)
11、倒猢猻散”來(lái)比喻很恰當(dāng),這將導(dǎo)致項(xiàng)目發(fā)生 混亂。 高水平的設(shè)計(jì)師應(yīng)當(dāng)能夠分析需求文檔,判斷出哪些 需求是穩(wěn)定不變的,哪些需求是可能變動(dòng)的。于是根于是根 據(jù)那些穩(wěn)定不變的需求設(shè)計(jì)體系結(jié)構(gòu),而根據(jù)那些可據(jù)那些穩(wěn)定不變的需求設(shè)計(jì)體系結(jié)構(gòu),而根據(jù)那些可 變的需求設(shè)計(jì)軟件的變的需求設(shè)計(jì)軟件的“可擴(kuò)展性可擴(kuò)展性”。 第5章軟件設(shè)計(jì)20 體系結(jié)構(gòu)設(shè)計(jì) 可擴(kuò)展性:可擴(kuò)展性是指軟件擴(kuò)展新功能的容易程 度??蓴U(kuò)展性越好,表示軟件適應(yīng)“變化”的能 力越強(qiáng)??蓴U(kuò)展性越來(lái)越重要,這是由現(xiàn)代軟件 的商業(yè)模式?jīng)Q定的: 第5章軟件設(shè)計(jì)21 體系結(jié)構(gòu)設(shè)計(jì) 可復(fù)用性可復(fù)用性 : 復(fù)用就是指“重復(fù)利用已經(jīng)存在的東西”。被復(fù)用 的對(duì)
12、象可以是有形的物體,也可以是無(wú)形的知識(shí)財(cái) 富。復(fù)用不是人類懶惰的表現(xiàn)而是智慧的表現(xiàn)。因 為人類總是在繼承了前人的成果,不斷加以利用、 改進(jìn)或創(chuàng)新后才會(huì)進(jìn)步。 復(fù)用的有利于提高產(chǎn)品的質(zhì)量、提高生產(chǎn)率和降低 成本。由經(jīng)驗(yàn)可知,通常在一個(gè)新系統(tǒng)中,大部分 的內(nèi)容是成熟的,只有小部分內(nèi)容是創(chuàng)新的。一般 地可以相信成熟的東西總是比較可靠的(即具有高 質(zhì)量),而大量成熟的工作可以通過(guò)復(fù)用來(lái)快速實(shí) 現(xiàn)(即具有高生產(chǎn)率)。勤勞并且聰明的人們應(yīng)該 把大部分的時(shí)間用在小比例的創(chuàng)新工作上,而把小 部分的時(shí)間用在大比例的成熟工作中,這樣才能把 工作做得又快又好。 第5章軟件設(shè)計(jì)22 體系結(jié)構(gòu)設(shè)計(jì) 可復(fù)用性可復(fù)用性 :
13、 復(fù)用的意義很容易理解,人們也樂(lè)意復(fù)用以前的成 果,但是前提條件是該成果具有比較好的可復(fù)用性。 可復(fù)用性是指成果被復(fù)用的容易程度。 可復(fù)用性是設(shè)計(jì)出來(lái)的,而不是偶然碰到的??蓮?fù)用性是設(shè)計(jì)出來(lái)的,而不是偶然碰到的。要使 體系結(jié)構(gòu)具有良好的可復(fù)用性,設(shè)計(jì)師應(yīng)當(dāng)分析應(yīng) 用域的共性問(wèn)題,然后設(shè)計(jì)出一種通用的體系結(jié)構(gòu) 模式,這樣的體系結(jié)構(gòu)才可以被復(fù)用。 第5章軟件設(shè)計(jì)23 體系結(jié)構(gòu)設(shè)計(jì) 5.3.2 體系結(jié)構(gòu)設(shè)計(jì)流程 體系結(jié)構(gòu)設(shè)計(jì)流程:6個(gè)步驟 體系結(jié)構(gòu)設(shè)計(jì)報(bào)告模板見(jiàn)word文檔 第5章軟件設(shè)計(jì)24 體系結(jié)構(gòu)設(shè)計(jì) 5.3.3 層次結(jié)構(gòu)介紹 層次結(jié)構(gòu)是最常見(jiàn)的體系結(jié)構(gòu)模式,它體現(xiàn)了 “分而治之”的思想:當(dāng)我
14、們沒(méi)法一口氣解決 復(fù)雜的原始問(wèn)題時(shí),就把該問(wèn)題切割成許多個(gè) 小的相對(duì)簡(jiǎn)單的問(wèn)題,然后逐個(gè)解決。水平方 向切割產(chǎn)生的層稱為L(zhǎng)ayer,而豎直方向切割產(chǎn) 生的層稱為T(mén)ier。 第5章軟件設(shè)計(jì)25 體系結(jié)構(gòu)設(shè)計(jì) 5.3.3 層次結(jié)構(gòu)介紹 “層次結(jié)構(gòu)層次結(jié)構(gòu)”是應(yīng)用最為廣泛的體系結(jié)構(gòu)模式。是應(yīng)用最為廣泛的體系結(jié)構(gòu)模式。 其最大的優(yōu)點(diǎn)是具有良好的可擴(kuò)展性,人們?cè)谄渥畲蟮膬?yōu)點(diǎn)是具有良好的可擴(kuò)展性,人們?cè)?擴(kuò)充或修改功能時(shí),基本不會(huì)破壞原有結(jié)構(gòu)的擴(kuò)充或修改功能時(shí),基本不會(huì)破壞原有結(jié)構(gòu)的 穩(wěn)定性。但是萬(wàn)事有利必有弊,層次結(jié)構(gòu)的系穩(wěn)定性。但是萬(wàn)事有利必有弊,層次結(jié)構(gòu)的系 統(tǒng)的主要缺點(diǎn)是:管理多個(gè)統(tǒng)的主要缺點(diǎn)是:
15、管理多個(gè)LayerLayer和和TierTier比較麻比較麻 煩,運(yùn)行效率可能比較低。所以,一個(gè)具備良煩,運(yùn)行效率可能比較低。所以,一個(gè)具備良 好層次結(jié)構(gòu)的系統(tǒng),其好層次結(jié)構(gòu)的系統(tǒng),其LayerLayer和和TierTier的數(shù)目要恰的數(shù)目要恰 如其分。如其分。 第5章軟件設(shè)計(jì)26 5.3.5.3.模塊化模塊化 1.1.模塊化:把程序劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè)模塊化:把程序劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè) 子功能,把這些模塊集總起來(lái)組成一個(gè)整體,可以完成指子功能,把這些模塊集總起來(lái)組成一個(gè)整體,可以完成指 定的功能,滿足問(wèn)題的功能。定的功能,滿足問(wèn)題的功能。 模塊:一個(gè)擁有明確定義的
16、輸入、輸出和特性的程序?qū)嶓w。模塊:一個(gè)擁有明確定義的輸入、輸出和特性的程序?qū)嶓w。 第5章軟件設(shè)計(jì)27 模塊模塊 模塊是具有一定功能的可以用名詞調(diào)用的程序語(yǔ)模塊是具有一定功能的可以用名詞調(diào)用的程序語(yǔ) 句集合,如:句集合,如: 獨(dú)立的匯編程序獨(dú)立的匯編程序 PascalPascal過(guò)程過(guò)程 第5章軟件設(shè)計(jì)28 概要設(shè)計(jì)的基本概念概要設(shè)計(jì)的基本概念 將系統(tǒng)劃分成模塊將系統(tǒng)劃分成模塊 決定每個(gè)模塊的功能決定每個(gè)模塊的功能 決定模塊的調(diào)用關(guān)系決定模塊的調(diào)用關(guān)系 決定模塊的界面,即模塊間傳遞的數(shù)據(jù)決定模塊的界面,即模塊間傳遞的數(shù)據(jù) 第5章軟件設(shè)計(jì)29 2. 2. 抽象抽象(Abstraction)(Abs
17、traction)與細(xì)化與細(xì)化 抽象抽象: :解決問(wèn)題時(shí)只考慮與問(wèn)題有關(guān)的方面,不解決問(wèn)題時(shí)只考慮與問(wèn)題有關(guān)的方面,不 考慮與問(wèn)題無(wú)關(guān)的方面。即抽出事物的本質(zhì)特性考慮與問(wèn)題無(wú)關(guān)的方面。即抽出事物的本質(zhì)特性 而不考慮細(xì)節(jié)。而不考慮細(xì)節(jié)。 第5章軟件設(shè)計(jì)30 抽象抽象( (Abstraction) ) 抽象原則應(yīng)用舉例抽象原則應(yīng)用舉例 Windows NTWindows NT一體化的一體化的I/OI/O系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) 文件管理文件管理 網(wǎng)絡(luò)管理網(wǎng)絡(luò)管理 設(shè)備管理設(shè)備管理 高速緩沖存儲(chǔ)器高速緩沖存儲(chǔ)器 對(duì)虛擬文件的對(duì)虛擬文件的 字節(jié)流字節(jié)流, , 虛擬文件可為虛擬文件可為 任何設(shè)備和實(shí)任何設(shè)備和實(shí)
18、 體體 抽象抽象 第5章軟件設(shè)計(jì)31 細(xì)化:即分解。細(xì)化:即分解。 在逐步細(xì)化中,特別強(qiáng)調(diào)這種分解的在逐步細(xì)化中,特別強(qiáng)調(diào)這種分解的“逐步逐步” 性質(zhì),即每一部分僅較其前一部增加性質(zhì),即每一部分僅較其前一部增加“少量少量” 的細(xì)節(jié)。這樣,在相鄰兩部之間就只有微小的的細(xì)節(jié)。這樣,在相鄰兩部之間就只有微小的 變化,不難驗(yàn)證它們的內(nèi)容是否等效。變化,不難驗(yàn)證它們的內(nèi)容是否等效。 第5章軟件設(shè)計(jì)32 3.3.信息隱蔽信息隱蔽(Information Hiding)(Information Hiding) 信息隱蔽的含義:有效的模塊化可以通過(guò)定義一信息隱蔽的含義:有效的模塊化可以通過(guò)定義一 組獨(dú)立模塊來(lái)
19、實(shí)現(xiàn),這些模塊相互之間只交流軟件組獨(dú)立模塊來(lái)實(shí)現(xiàn),這些模塊相互之間只交流軟件 功能必需的信息。功能必需的信息。 換句話說(shuō):模塊所包含的信息,不允許其它不需要這換句話說(shuō):模塊所包含的信息,不允許其它不需要這 些信息的模塊訪問(wèn),獨(dú)立的模塊間僅僅交換為完成些信息的模塊訪問(wèn),獨(dú)立的模塊間僅僅交換為完成 系統(tǒng)功能而必須交換的信息。系統(tǒng)功能而必須交換的信息。 信息隱蔽:對(duì)模塊內(nèi)部信息訪問(wèn)的約束 信息隱蔽的基本原則: 功能獨(dú)立,高內(nèi)聚且低耦合 第5章軟件設(shè)計(jì)33 5.4 5.4 模塊化設(shè)計(jì)模塊化設(shè)計(jì) 1.1.分解分解 2.2.模塊獨(dú)立性模塊獨(dú)立性 內(nèi)聚內(nèi)聚 耦合耦合 自頂向下與自底向上設(shè)計(jì)自頂向下與自底向上
20、設(shè)計(jì) 第5章軟件設(shè)計(jì)34 模塊化模塊化(Modularity)(Modularity) 模塊化是好的軟件設(shè)計(jì)的一個(gè)基本準(zhǔn)則模塊化是好的軟件設(shè)計(jì)的一個(gè)基本準(zhǔn)則 高層模塊高層模塊 從整體上把握問(wèn)題從整體上把握問(wèn)題, ,隱蔽細(xì)節(jié)隱蔽細(xì)節(jié) 復(fù)雜問(wèn)題復(fù)雜問(wèn)題 較小問(wèn)題較小問(wèn)題 分解分解 可減小解題所需的總的工作可減小解題所需的總的工作 分解分解 第5章軟件設(shè)計(jì)35 C(p1)C(p2) 則則 E(p1)E(p2) 其中:其中: p1和和p2是兩個(gè)問(wèn)題是兩個(gè)問(wèn)題 C(x)是由是由x問(wèn)題決定的復(fù)雜性問(wèn)題決定的復(fù)雜性 E(x)是解決是解決x問(wèn)題所需要的工作量問(wèn)題所需要的工作量 C(p1+p2) C(p1) +
21、C(p2) E(p1+p2) E(p1) +E(p2) 試驗(yàn)發(fā)現(xiàn) 模塊劃分得越小成本越低模塊劃分得越小成本越低 ,但是,但是 集成成本卻隨著模塊劃分得越小集成成本卻隨著模塊劃分得越小 成本越高。成本越高。 如何確定模塊化分的最小成本區(qū),并保證模塊的最佳性能,是設(shè)如何確定模塊化分的最小成本區(qū),并保證模塊的最佳性能,是設(shè) 計(jì)活動(dòng)中的主要任務(wù)之一。計(jì)活動(dòng)中的主要任務(wù)之一。 1.1.分解分解 各個(gè)擊破理論各個(gè)擊破理論 第5章軟件設(shè)計(jì)36 模塊數(shù)與開(kāi)發(fā)工作量的關(guān)系模塊數(shù)與開(kāi)發(fā)工作量的關(guān)系 成成 本本 或或 工工 作作 量量 模塊數(shù)量模塊數(shù)量 軟件總成本軟件總成本 集成成本集成成本 成本成本/ /模塊模塊
22、 M 最小成本區(qū)域最小成本區(qū)域 第5章軟件設(shè)計(jì)37 2. 2. 模塊的獨(dú)立性模塊的獨(dú)立性 模塊獨(dú)立性的概念模塊獨(dú)立性的概念 模塊完成獨(dú)立的功能模塊完成獨(dú)立的功能 符合信息隱蔽和信息局部化原則符合信息隱蔽和信息局部化原則 模塊間關(guān)連和依賴程度盡量小模塊間關(guān)連和依賴程度盡量小 第5章軟件設(shè)計(jì)38 模塊獨(dú)立性的度量模塊獨(dú)立性的度量 模塊獨(dú)立性取決于模塊的內(nèi)部和外部特征。模塊獨(dú)立性取決于模塊的內(nèi)部和外部特征。 SDSD方法提出的定性的度量標(biāo)準(zhǔn):方法提出的定性的度量標(biāo)準(zhǔn): 模塊自身的內(nèi)聚性模塊自身的內(nèi)聚性 模塊之間的耦合性模塊之間的耦合性 第5章軟件設(shè)計(jì)39 2. 2. 模塊獨(dú)立性的度量之一:內(nèi)聚性模塊
23、獨(dú)立性的度量之一:內(nèi)聚性 一個(gè)模塊內(nèi)部各成分之間相互關(guān)聯(lián)的強(qiáng)度一個(gè)模塊內(nèi)部各成分之間相互關(guān)聯(lián)的強(qiáng)度 設(shè)計(jì)目標(biāo):高內(nèi)聚設(shè)計(jì)目標(biāo):高內(nèi)聚( (一模塊的所有成分都直接參與一模塊的所有成分都直接參與 并且對(duì)于完成同一功能來(lái)說(shuō)都是最基本的并且對(duì)于完成同一功能來(lái)說(shuō)都是最基本的) ) 第5章軟件設(shè)計(jì)40 模塊的內(nèi)聚性類型:模塊的內(nèi)聚性類型: 低低 巧合內(nèi)聚巧合內(nèi)聚 內(nèi)內(nèi) 邏輯內(nèi)聚邏輯內(nèi)聚 聚聚 時(shí)間內(nèi)聚時(shí)間內(nèi)聚 性性 過(guò)程內(nèi)聚過(guò)程內(nèi)聚 通信內(nèi)聚通信內(nèi)聚 信息內(nèi)聚信息內(nèi)聚 高高 功能內(nèi)聚功能內(nèi)聚 模模 塊塊 獨(dú)獨(dú) 立立 性性 弱弱( (功能分散功能分散) ) 強(qiáng)強(qiáng)( (功能單一功能單一) ) 第5章軟件設(shè)計(jì)4
24、1 (1) (1) 巧合內(nèi)聚巧合內(nèi)聚( (偶然內(nèi)聚偶然內(nèi)聚) ) 模塊內(nèi)各部分間無(wú)聯(lián)系模塊內(nèi)各部分間無(wú)聯(lián)系 ABC M MOVE O TO R READ FILE F MOVE S TO T 模塊模塊M中的三個(gè)語(yǔ)句沒(méi)有任何聯(lián)系中的三個(gè)語(yǔ)句沒(méi)有任何聯(lián)系 缺點(diǎn):可理解性差,缺點(diǎn):可理解性差, 可修改性差??尚薷男圆?。 例例: : 第5章軟件設(shè)計(jì)42 (2) (2) 邏輯內(nèi)聚邏輯內(nèi)聚 把幾種相關(guān)功能把幾種相關(guān)功能( (邏輯上相似的功能邏輯上相似的功能) )組合在一組合在一 模塊內(nèi)模塊內(nèi), ,每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行 哪種功能。哪種功能。 第5章軟件設(shè)計(jì)43 邏
25、輯內(nèi)聚模塊邏輯內(nèi)聚模塊 ABC EFG ABC EFG A1B1C1 EFGEFG模塊內(nèi)部邏輯模塊內(nèi)部邏輯 E E、F F、G G邏輯邏輯 功能相似,組功能相似,組 成新模塊成新模塊EFGEFG 公用代碼段公用代碼段 公用代碼段公用代碼段 缺點(diǎn):增強(qiáng)了耦合程度(控制耦合)不易修改,缺點(diǎn):增強(qiáng)了耦合程度(控制耦合)不易修改, 效率低。效率低。 第5章軟件設(shè)計(jì)44 (3) (3) 時(shí)間內(nèi)聚時(shí)間內(nèi)聚 模塊完成的功能必須在同一時(shí)間內(nèi)執(zhí)行,這些功能只模塊完成的功能必須在同一時(shí)間內(nèi)執(zhí)行,這些功能只 因時(shí)間因素關(guān)聯(lián)在一起。因時(shí)間因素關(guān)聯(lián)在一起。 例如:初始化系統(tǒng)模塊、例如:初始化系統(tǒng)模塊、 系統(tǒng)結(jié)束模塊、系
26、統(tǒng)結(jié)束模塊、 緊急故障處理模塊等。緊急故障處理模塊等。 第5章軟件設(shè)計(jì)45 (4) (4) 過(guò)程內(nèi)聚過(guò)程內(nèi)聚 模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行。模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行。 第5章軟件設(shè)計(jì)46 過(guò)程內(nèi)聚模塊過(guò)程內(nèi)聚模塊 讀入讀入 成績(jī)單成績(jī)單 讀入并審查讀入并審查 成績(jī)單成績(jī)單 審查審查 成績(jī)單成績(jī)單 統(tǒng)計(jì)統(tǒng)計(jì) 成績(jī)成績(jī) 打印打印 成績(jī)成績(jī) 統(tǒng)計(jì)并打印統(tǒng)計(jì)并打印 成績(jī)成績(jī) 第5章軟件設(shè)計(jì)47 (5) (5) 通信內(nèi)聚通信內(nèi)聚 模塊內(nèi)各部分使用相同的輸入數(shù)據(jù),或產(chǎn)生模塊內(nèi)各部分使用相同的輸入數(shù)據(jù),或產(chǎn)生 相同的輸出結(jié)果。相同的輸出結(jié)果。 第5章軟件設(shè)計(jì)48 通信內(nèi)聚模塊
27、例通信內(nèi)聚模塊例 產(chǎn)生工產(chǎn)生工 資報(bào)表資報(bào)表 計(jì)算平計(jì)算平 均工資均工資 職工工職工工 資記錄資記錄 職工工職工工 資報(bào)表資報(bào)表 平均平均 工資工資 產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊 第5章軟件設(shè)計(jì)49 (6)(6)信息內(nèi)聚 信息內(nèi)聚指模塊完成多個(gè)功能,各個(gè)功能信息內(nèi)聚指模塊完成多個(gè)功能,各個(gè)功能 都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每個(gè)功能有都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每個(gè)功能有 唯一入口。如對(duì)同一個(gè)數(shù)據(jù)庫(kù)的唯一入口。如對(duì)同一個(gè)數(shù)據(jù)庫(kù)的“查找查找 添加添加刪除刪除修改修改”模塊。模塊。 第5章軟件設(shè)計(jì)50 (7) (7) 功能內(nèi)聚功能內(nèi)聚 模塊僅包括為完成某個(gè)功能所必須的
28、所有成分。模塊僅包括為完成某個(gè)功能所必須的所有成分。 ( ( 模塊所有成分共同完成一個(gè)功能,缺一不可模塊所有成分共同完成一個(gè)功能,缺一不可 ) ) 內(nèi)聚性最強(qiáng)內(nèi)聚性最強(qiáng) 第5章軟件設(shè)計(jì)51 功能內(nèi)聚模塊功能內(nèi)聚模塊 建立方程組系數(shù)矩陣建立方程組系數(shù)矩陣 高斯消去法高斯消去法 回回 代代 高斯消去法解題流程高斯消去法解題流程 第5章軟件設(shè)計(jì)52 模塊獨(dú)立性的度量之二:模塊獨(dú)立性的度量之二: 耦合性是模塊間相互依賴程度的度量,耦合耦合性是模塊間相互依賴程度的度量,耦合 的強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪的強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪 問(wèn)一個(gè)模塊的點(diǎn),以及通過(guò)接口的數(shù)據(jù)。問(wèn)一個(gè)模
29、塊的點(diǎn),以及通過(guò)接口的數(shù)據(jù)。 耦合性越高,模塊獨(dú)立性越弱耦合性越高,模塊獨(dú)立性越弱 第5章軟件設(shè)計(jì)53 耦合強(qiáng)度依賴的因素:耦合強(qiáng)度依賴的因素: 一模塊對(duì)另一模塊的引用一模塊對(duì)另一模塊的引用 一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊向另一模塊傳遞的數(shù)據(jù)量 一模塊施加到另一模塊的控制的數(shù)量一模塊施加到另一模塊的控制的數(shù)量 模塊間接口的復(fù)雜程度模塊間接口的復(fù)雜程度 第5章軟件設(shè)計(jì)54 模塊間耦合的類型:模塊間耦合的類型: 低低 非直接耦合非直接耦合 耦耦 數(shù)據(jù)耦合數(shù)據(jù)耦合 合合 標(biāo)志耦合標(biāo)志耦合 性性 控制耦合控制耦合 外部耦合外部耦合 公共耦合公共耦合 高高 內(nèi)容耦合內(nèi)容耦合 模模 塊塊 獨(dú)獨(dú) 立立
30、性性 弱弱 ( (低耦合低耦合) ) 強(qiáng)強(qiáng) ( (中耦合中耦合) ) ( (較強(qiáng)耦合較強(qiáng)耦合) ) ( (強(qiáng)耦合強(qiáng)耦合) ) 第5章軟件設(shè)計(jì)55 (1) (1) 非直接耦合非直接耦合 兩個(gè)模塊沒(méi)有直接關(guān)系兩個(gè)模塊沒(méi)有直接關(guān)系( (??炷?? 1和??旌湍??)2),模塊獨(dú)立性,模塊獨(dú)立性 最強(qiáng)。最強(qiáng)。 模塊模塊1 1模塊模塊2 2 模塊模塊3 3模塊模塊4 4 第5章軟件設(shè)計(jì)56 (2) (2) 數(shù)據(jù)耦合數(shù)據(jù)耦合 一模塊調(diào)用另一模塊時(shí),被調(diào)用模塊的輸入、一模塊調(diào)用另一模塊時(shí),被調(diào)用模塊的輸入、 輸出都是簡(jiǎn)單的數(shù)據(jù),屬松散耦合。輸出都是簡(jiǎn)單的數(shù)據(jù),屬松散耦合。 第5章軟件設(shè)計(jì)57 數(shù)據(jù)耦合舉例數(shù)
31、據(jù)耦合舉例 開(kāi)發(fā)票開(kāi)發(fā)票 計(jì)算水費(fèi)計(jì)算水費(fèi) 單價(jià)單價(jià) 數(shù)量數(shù)量 金額金額 第5章軟件設(shè)計(jì)58 數(shù)據(jù)耦合舉例數(shù)據(jù)耦合舉例 計(jì)算水電費(fèi)計(jì)算水電費(fèi) 計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi) 用水量用水量 用電量用電量 水費(fèi)水費(fèi) 電費(fèi)電費(fèi) 第5章軟件設(shè)計(jì)59 (3) (3) 標(biāo)記耦合標(biāo)記耦合( (特征耦合特征耦合) ) 如兩個(gè)模塊通過(guò)傳遞數(shù)據(jù)結(jié)構(gòu)如兩個(gè)模塊通過(guò)傳遞數(shù)據(jù)結(jié)構(gòu)( (不是簡(jiǎn)單數(shù)據(jù),不是簡(jiǎn)單數(shù)據(jù), 而是記錄、數(shù)組等而是記錄、數(shù)組等) )加以聯(lián)系,或都與一個(gè)數(shù)據(jù)加以聯(lián)系,或都與一個(gè)數(shù)據(jù) 結(jié)構(gòu)有關(guān)系結(jié)構(gòu)有關(guān)系, , 則稱這兩個(gè)模塊間存在標(biāo)記偶合。則稱這兩個(gè)模塊間存在標(biāo)記偶合。 第5章軟件設(shè)計(jì)60 標(biāo)記耦合
32、舉例標(biāo)記耦合舉例 計(jì)算水電費(fèi)計(jì)算水電費(fèi) 計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi) 住戶情況住戶情況 水費(fèi)水費(fèi) 電費(fèi)電費(fèi) 住戶情況住戶情況 “住戶情況住戶情況”是一個(gè)數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)是一個(gè)數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié) 構(gòu)有關(guān)。構(gòu)有關(guān)。 “計(jì)算水費(fèi)計(jì)算水費(fèi)”和和“計(jì)算電費(fèi)計(jì)算電費(fèi)”本無(wú)關(guān),由于引用了此數(shù)本無(wú)關(guān),由于引用了此數(shù) 據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標(biāo)記偶合。據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標(biāo)記偶合。 第5章軟件設(shè)計(jì)61 將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例 計(jì)算水電費(fèi)計(jì)算水電費(fèi) 計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi) 本月本月 用水量用水量 本月本月 用電量用電量
33、水費(fèi)水費(fèi) 電費(fèi)電費(fèi) 第5章軟件設(shè)計(jì)62 (4) (4) 控制耦合控制耦合 一模塊通過(guò)開(kāi)關(guān)量、標(biāo)志、名字等控制信息,一模塊通過(guò)開(kāi)關(guān)量、標(biāo)志、名字等控制信息, 明顯地控制另一模塊的功能。明顯地控制另一模塊的功能。 第5章軟件設(shè)計(jì)63 控制耦合舉例控制耦合舉例 A A 計(jì)算平均分計(jì)算平均分 或最高分或最高分 B B 平均/最高成績(jī) 第5章軟件設(shè)計(jì)64 控制耦合舉例控制耦合舉例 讀入分?jǐn)?shù)讀入分?jǐn)?shù) 輸出結(jié)果輸出結(jié)果 計(jì)算平均分計(jì)算平均分 計(jì)算最高分計(jì)算最高分 平均平均/ /最高最高? ? 調(diào)用邏輯性模塊調(diào)用邏輯性模塊 B B時(shí),須先傳遞時(shí),須先傳遞 控制信號(hào)控制信號(hào)( (平均分平均分 / /最高分最高分
34、) ),以選,以選 擇所需的操作。擇所需的操作。 控制模塊必須知控制模塊必須知 道被控模塊的內(nèi)道被控模塊的內(nèi) 部邏輯,增強(qiáng)了部邏輯,增強(qiáng)了 相互依賴。相互依賴。 B B 第5章軟件設(shè)計(jì)65 控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊 必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴。必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴。 去除模塊間控制耦合的方法:去除模塊間控制耦合的方法: (1)(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行;將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行; (2)(2)被調(diào)用模塊分解成若干單一功能模塊。被調(diào)用模塊分解成若干單一功能模塊。
35、第5章軟件設(shè)計(jì)66 改控制耦合為數(shù)據(jù)耦合舉例改控制耦合為數(shù)據(jù)耦合舉例 A A 計(jì)算平均分計(jì)算平均分 B1B1 平均成績(jī)最高成績(jī) 計(jì)算最高分計(jì)算最高分 B2B2 第5章軟件設(shè)計(jì)67 (5) (5) 外部耦合外部耦合 一組模塊均與同一外部環(huán)境關(guān)聯(lián)一組模塊均與同一外部環(huán)境關(guān)聯(lián)( (例如,例如,I/OI/O模塊模塊 與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)) ),它們之,它們之 間便存在外部耦合。間便存在外部耦合。 外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。 第5章軟件設(shè)計(jì)68 (6) (6) 公共耦合公共耦合( (公共數(shù)據(jù)區(qū)耦合公共數(shù)據(jù)區(qū)耦合) ) 一組模塊引用同一個(gè)公用數(shù)據(jù)區(qū)一組模塊引用同一個(gè)公用數(shù)據(jù)區(qū)( (也稱全
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術(shù)升級(jí)項(xiàng)目合同借款協(xié)議
- 合同管理培訓(xùn)與人才培養(yǎng)的建議
- 餐飲業(yè)原料采購(gòu)合同(安全食品專用)
- 勞動(dòng)合同范本:外來(lái)專業(yè)技術(shù)人才
- 商業(yè)地皮交易合同書(shū)
- 蘇州市模范勞動(dòng)合同樣本
- 四人合作創(chuàng)業(yè)股份分配合同范本
- 年度合作合同:速記服務(wù)條款
- 液化氣采購(gòu)框架合同
- 購(gòu)物中心投資合同樣本
- 績(jī)效評(píng)價(jià)師考試-隨機(jī)題庫(kù)
- CSC-103微機(jī)線路成套保護(hù)裝置檢驗(yàn)作業(yè)指導(dǎo)書(shū)
- 叉車日常維護(hù)保養(yǎng)檢查記錄表
- 鐵路橋梁工程各工序工效分析
- 2022《文創(chuàng)產(chǎn)品的設(shè)計(jì)》PPT演示文稿
- 介入科制度匯編
- 鍍鋅管理論重量表常用
- 鐵總計(jì)統(tǒng)【2017】177號(hào)關(guān)于進(jìn)一步加強(qiáng)鐵路建設(shè)項(xiàng)目征地拆遷工作和費(fèi)用管理的指導(dǎo)意見(jiàn)
- 電子技術(shù)基礎(chǔ)與技能-(3)
- 部編版四年級(jí)下冊(cè)語(yǔ)文第二單元課文教材分析及全部教案
- 美術(shù)開(kāi)學(xué)第一課(課堂PPT)
評(píng)論
0/150
提交評(píng)論