已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七講概要設(shè)計(jì),了解軟件設(shè)計(jì)工程及其研究?jī)?nèi)容理解概要設(shè)計(jì)的主要內(nèi)容理解概要設(shè)計(jì)的過程掌握概要設(shè)計(jì)主要原則理解體系結(jié)構(gòu)設(shè)計(jì)掌握模塊劃分特征掌握層次圖,軟件生命周期,設(shè)計(jì)人員把分析的結(jié)果設(shè)計(jì)圖紙程序員拿著設(shè)計(jì)圖紙編寫代碼,需求規(guī)格說明書,概要設(shè)計(jì),設(shè)計(jì)圖紙-軟件結(jié)構(gòu)圖,模塊4設(shè)計(jì),詳細(xì)設(shè)計(jì),需求分析成果,軟件設(shè)計(jì)工程,設(shè)計(jì)工程就是把需求分析過程中確定下來的用戶需求定義書(What=做什么)變?yōu)槟軌蜻M(jìn)行實(shí)際操作的設(shè)計(jì)說明書(How=怎樣做)的工程。設(shè)計(jì)工程是一個(gè)將系統(tǒng)的需求規(guī)格轉(zhuǎn)換成軟件系統(tǒng)的說明過程。從多個(gè)可能的思路中找到最佳的解決方案。其任務(wù)包括構(gòu)建系統(tǒng)框架,設(shè)計(jì)系統(tǒng)功能,描述系統(tǒng)流程,建立系統(tǒng)的數(shù)據(jù)模型、接口模型及界面模型,形成系統(tǒng)的邏輯結(jié)構(gòu),告訴程序員軟件系統(tǒng)應(yīng)該“怎樣做”。,從工程管理角度來看,軟件設(shè)計(jì)分兩步完成:概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)確定系統(tǒng)級(jí)接口全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式。詳細(xì)設(shè)計(jì)確立每個(gè)模塊的實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu)用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié),.,軟件設(shè)計(jì)是后續(xù)開發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。,WindowsNT的一位系統(tǒng)設(shè)計(jì)師擁有8輛法拉利跑車,讓Microsoft公司的一些程序員十分眼紅。但你只能羨慕而不能憤恨,因?yàn)椴⒉皇敲總€(gè)程序員都有本事成為復(fù)雜軟件系統(tǒng)的設(shè)計(jì)師。系統(tǒng)設(shè)計(jì)要比純粹的編程困難得多。即便你清楚客戶的需求,卻未必知道應(yīng)該設(shè)計(jì)什么樣的軟件系統(tǒng)既能掙最多的錢又能讓客戶滿意,研究?jī)?nèi)容,主要內(nèi)容:體系結(jié)構(gòu)設(shè)計(jì)、模塊設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)、用戶界面設(shè)計(jì)體系結(jié)構(gòu)就如同人的骨架。如果某個(gè)家伙的骨架是猴子,那么無論怎樣喂養(yǎng)和美容,這家伙始終都是猴子,不會(huì)成為人。模塊就如同人的器官,具有特定的功能。人體中最出色的模塊設(shè)計(jì)之一是手,手只有幾種動(dòng)作,卻能做無限多的事情。,研究?jī)?nèi)容,數(shù)據(jù)結(jié)構(gòu)與算法就如同人的血脈和神經(jīng),它讓器官具有生命并能發(fā)揮功能。數(shù)據(jù)結(jié)構(gòu)與算法分布在體系結(jié)構(gòu)和模塊中,它將協(xié)調(diào)系統(tǒng)的各個(gè)功能。人的耳朵和嘴巴雖然是相對(duì)獨(dú)立的器官,但如果耳朵失聰了,嘴巴就只能發(fā)出“啊”“嗚”的聲音,等于喪失了說話的功能(所以聾子天生就是啞巴),可人們卻又能用手勢(shì)代替說話。用戶界面就如同人的外表,最容易讓人一見鐘情或一見惡心。象人類追求心靈美和外表美那樣,軟件系統(tǒng)也追求(內(nèi)在的)功能強(qiáng)大和(外表的)界面友好。,研究?jī)?nèi)容,在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),我們要深情地關(guān)注軟件的質(zhì)量因素,如正確性與精確性、性能與效率、易用性、可理解性與簡(jiǎn)法性、可復(fù)用性與可擴(kuò)充性等等。即使把系統(tǒng)設(shè)計(jì)做好了,也并不意味著就能產(chǎn)生好的軟件系統(tǒng)。在程序設(shè)計(jì)、測(cè)試、維護(hù)等環(huán)節(jié)還要做大量的工作,無論哪個(gè)環(huán)節(jié)出了差錯(cuò),都會(huì)把好事搞砸了。據(jù)說上帝把所有的女士都設(shè)計(jì)成天使,可是天使們?cè)谙路矔r(shí)有些雙腳先著地,有些臉先著地。上帝的這一疏忽讓很多女孩傷透了心。我們?cè)陂_發(fā)軟件時(shí),一定要吸取這個(gè)教訓(xùn)。,概要設(shè)計(jì),概要設(shè)計(jì)的主要任務(wù)是把需求分析得到的模型轉(zhuǎn)換為軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計(jì)軟件結(jié)構(gòu)的具體任務(wù)是:將一個(gè)復(fù)雜系統(tǒng)按功能進(jìn)行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機(jī)界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫的設(shè)計(jì)。概要設(shè)計(jì)建立的是目標(biāo)系統(tǒng)的邏輯模型,與計(jì)算機(jī)無關(guān)。,1.主要內(nèi)容,1)軟件的總體結(jié)構(gòu)和模塊外部設(shè)計(jì)。2)軟件處理流程設(shè)計(jì)。3)確定軟件的功能并分配。4)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。5)網(wǎng)絡(luò)及接口設(shè)計(jì)。6)運(yùn)行設(shè)計(jì)。7)出錯(cuò)處理設(shè)計(jì)。8)性能可靠性及安全保密設(shè)計(jì)。9)維護(hù)設(shè)計(jì)。,2.設(shè)計(jì)過程,3.設(shè)計(jì)原則,總體設(shè)計(jì)的總原則是:由宏觀到微觀、逐步求精的原則,定性定量分析相結(jié)合、分解與協(xié)調(diào)相結(jié)合和模型化方法,并要兼顧系統(tǒng)的一般性、關(guān)聯(lián)性、整體性和層次性。根據(jù)系統(tǒng)的總體結(jié)構(gòu)、功能、任務(wù)和目標(biāo)的要求分解系統(tǒng),使各子系統(tǒng)之間互相協(xié)調(diào)配合,實(shí)現(xiàn)系統(tǒng)的整體優(yōu)化。具體原則如下:,3.1模塊化,把整個(gè)系統(tǒng)劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能,將多個(gè)模塊組織起來實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。模塊的三個(gè)屬性:功能-即指該模塊實(shí)現(xiàn)什么樣的功能。邏輯-即描述模塊內(nèi)部怎么做。狀態(tài)-是指該模塊使用時(shí)的環(huán)境和條件。模塊化設(shè)計(jì)方法強(qiáng)調(diào)清楚地定義每個(gè)模塊的功能和它的輸入/輸出參數(shù),而模塊的實(shí)現(xiàn)細(xì)節(jié)隱藏在各自的模塊之中,與其它模塊之間的關(guān)系可以是調(diào)用關(guān)系,因此模塊化程序易于調(diào)試和修改。,隨著模塊規(guī)模的減小,模塊的開發(fā)成本減少,但是模塊之間的接口變得復(fù)雜起來,使得模塊的集成成本增加。,3.2抽象和逐步求精,抽象是指抓住事物的本質(zhì)特性而暫時(shí)不考慮其細(xì)節(jié)的方法。逐步求精是指為了集中精力解決主要問題而盡量推遲并逐步考慮細(xì)節(jié)問題的方法,是人類解決復(fù)雜問題時(shí)采用的一種基本策略,也是軟件工程技術(shù)的基礎(chǔ)。,3.3信息隱藏,每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其他模塊來說是隱藏的。模塊中所包含的信息是不允許其他不需要這些信息的模塊使用的。,3.4內(nèi)聚和耦合,在軟件設(shè)計(jì)中應(yīng)該保持模塊的獨(dú)立性原則。反映模塊獨(dú)立性的有兩個(gè)標(biāo)準(zhǔn):內(nèi)聚和耦合。內(nèi)聚:標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,是信息隱蔽和局部化概念的自然擴(kuò)展。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚。耦合:是對(duì)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量,是影響軟件復(fù)雜程度的一個(gè)重要因素。模塊間的耦合程度將影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性。設(shè)計(jì)時(shí)應(yīng)該力求做到低耦合。,練習(xí)一:確定內(nèi)聚類型,內(nèi)聚類型,功能內(nèi)聚:一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。順序內(nèi)聚如果一個(gè)模塊中的處理元素和同一個(gè)功能密切相關(guān),并且這些處理必須是順序執(zhí)行的,那么這個(gè)模塊具有順序內(nèi)聚。通信內(nèi)聚:一個(gè)模塊內(nèi)各功能部分都針對(duì)相同輸入/輸出數(shù)據(jù)進(jìn)行處理。,過程內(nèi)聚:模塊執(zhí)行的若干動(dòng)作,相互關(guān)聯(lián)并且有順序關(guān)系。例如,從錄入界面讀取數(shù)據(jù),然后更新數(shù)據(jù)庫記錄。它仍然是將多個(gè)相關(guān)的功能放在一個(gè)模塊中實(shí)現(xiàn)。時(shí)間內(nèi)聚:模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。邏輯內(nèi)聚:一個(gè)模塊完成的任務(wù)在邏輯上相同/相似巧合內(nèi)聚又稱為偶然內(nèi)聚。當(dāng)模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián)系也很松散。,練習(xí)二:確定耦合類型,說明:模塊p、t和u更新同一個(gè)數(shù)據(jù)庫,模塊接口描述,耦合類型,如果模塊間必須存在耦合,就盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,堅(jiān)決避免使用內(nèi)容耦合。,內(nèi)容耦合:如果一個(gè)模塊直接引用另一個(gè)模塊的內(nèi)容。公共耦合多個(gè)模塊都訪問同一個(gè)公共數(shù)據(jù)環(huán)境,則稱它們是公共耦合??刂岂詈夏KA向模塊B傳遞一個(gè)控制信息,稱這兩個(gè)模塊是控制耦合的。數(shù)據(jù)耦合如果兩個(gè)模塊傳遞的是數(shù)據(jù)項(xiàng),則這兩個(gè)模塊是數(shù)據(jù)耦合。特征耦合:傳遞整個(gè)數(shù)據(jù)結(jié)構(gòu),但是只需要使用一部分?jǐn)?shù)據(jù)元素非直接耦合:兩個(gè)模塊之間沒有直接關(guān)系,它們之間的聯(lián)系是通過主模塊的控制和調(diào)用,4體系結(jié)構(gòu)設(shè)計(jì),體系結(jié)構(gòu)是軟件系統(tǒng)中最本質(zhì)的東西。(1)體系結(jié)構(gòu)是對(duì)復(fù)雜事物的一種抽象。良好的體系結(jié)構(gòu)是普遍適用的,它可以高效地處理多種多樣的個(gè)體需求。一提起“房子”,我們的腦中馬上就會(huì)出現(xiàn)房子的印象(而不是地洞的印象)?!胺孔印笔侨藗儗?duì)住宿或辦公環(huán)境的一種抽象。(2)體系結(jié)構(gòu)在一定的時(shí)間內(nèi)保持穩(wěn)定。軟件開發(fā)最怕的就是需求變化,但“需求會(huì)發(fā)生變化”是個(gè)無法逃避的現(xiàn)實(shí)。人們希望在需求發(fā)生變化時(shí),最好只對(duì)軟件做些皮皮毛毛的修改,可千萬別改動(dòng)軟件的體系結(jié)構(gòu)。就如人們對(duì)住宿的需求也會(huì)變動(dòng),你可以經(jīng)常改變房間的裝璜和擺設(shè),但不會(huì)在每次變動(dòng)時(shí)都要去折墻、拆柱、挖地基。,良好的體系結(jié)構(gòu)意味著普適、高效和穩(wěn)定。本節(jié)將論述兩種非常通用的軟件體系結(jié)構(gòu):層次結(jié)構(gòu)客戶機(jī)/服務(wù)器(Client/Server)結(jié)構(gòu),4.1層次結(jié)構(gòu),層次結(jié)構(gòu)表達(dá)了這么一種常識(shí):有些事情比較復(fù)雜,我們沒法一口氣干完,就把事情分為好幾層,一層一層地去做。高層的工作總是建立在低層的工作之上。層次關(guān)系主要有兩種:上下級(jí)關(guān)系和順序相鄰關(guān)系。,一、上下級(jí)關(guān)系的層次結(jié)構(gòu)我們從小學(xué)一直讀到博士研究生畢業(yè),要讀20多年,可以分為五個(gè)層次。而范進(jìn)的知識(shí)結(jié)構(gòu)只有兩層:“私塾”和“秀才”,但讀了五十多年。一般地處于較高層次的學(xué)生應(yīng)該懂得所有低層次的知識(shí),而處于低層次學(xué)生無法懂得所有高層次的知識(shí)。上層子系統(tǒng)可以使用下層子系統(tǒng)的功能,而下層子系統(tǒng)不能夠使用上層子系統(tǒng)的功能。,二、順序相鄰關(guān)系的層次結(jié)構(gòu)順序相鄰關(guān)系的層次結(jié)構(gòu)表明通訊只能在相鄰兩層之間發(fā)生,信息只能被一層一層地順序傳遞。這種層次結(jié)構(gòu)的經(jīng)典之作是計(jì)算機(jī)網(wǎng)絡(luò)的OSI參考模型。為了減少設(shè)計(jì)的復(fù)雜性,大多數(shù)網(wǎng)絡(luò)都按層(Layer)或級(jí)(Level)的方式組織。每一層的目的都是向它的上一層提供一定的服務(wù),而把如何實(shí)現(xiàn)這一服務(wù)的細(xì)節(jié)對(duì)上一層加以屏蔽。一臺(tái)機(jī)器上的第n層與另一臺(tái)機(jī)器上的第n層進(jìn)行對(duì)話。通話的規(guī)則就是第n層的協(xié)議。數(shù)據(jù)不是從一臺(tái)機(jī)器的第n層直接傳送到另一臺(tái)機(jī)器的第n層。發(fā)送方把數(shù)據(jù)和控制信息逐層向下傳遞。最低層是物理介質(zhì),它進(jìn)行實(shí)際的通訊。接收方則將數(shù)據(jù)和控制信息逐層向上傳遞。,4.2客戶機(jī)/服務(wù)器結(jié)構(gòu),讓我們先回顧一下早期的電話系統(tǒng)。貝爾(AlexanderGrahamBell)于1876年申請(qǐng)了電話專利。那時(shí)期的電話必須一對(duì)一對(duì)地賣,用戶自己在兩個(gè)電話之間拉一根線。如果一個(gè)電話用戶想和其它幾個(gè)電話用戶通話,他必須拉n根單獨(dú)的線到每個(gè)人的房子里。于是在很短的時(shí)間內(nèi),城市里到處都是穿過房屋和樹木的混亂的電話線。很明顯,企圖把所有的電話完全互聯(lián)(如圖所示a)是行不通的。,a,b,貝爾電話公司在1878年開辦了第一個(gè)交換局。公司為每個(gè)客戶架設(shè)一條線。打電話時(shí),客戶搖動(dòng)電話的曲柄使電話公司辦公室的鈴響起來,操作員聽到鈴聲以后根據(jù)要求將呼叫方和被呼叫方用跳線手工連接起來。這種集中交換式的模型如圖b所示。很快地,貝爾系統(tǒng)的交換局就出現(xiàn)在各地。人們又要求能打城市間的長(zhǎng)途電話,就出現(xiàn)了二級(jí)交換局,以后進(jìn)一步發(fā)展為多個(gè)二級(jí)交換局。Tanenbaum1998,如果將圖b中的電話看成是客戶程序,將中心的交換局看成是服務(wù)程序,那么圖b就是典型的客戶機(jī)/服務(wù)器結(jié)構(gòu)。注意這里客戶機(jī)和服務(wù)器都是指軟件而不是指硬件??蛻魴C(jī)/服務(wù)器結(jié)構(gòu)存在兩個(gè)顯然的優(yōu)點(diǎn):(1)以集中的方式高效率地管理通訊。前面講電話系統(tǒng)的故事就是要說明這一點(diǎn)。(2)可以共享資源。比如在信息管理系統(tǒng)中,服務(wù)器將信息集中起來,任何客戶機(jī)都可以通過訪問服務(wù)器而獲得所需的信息。,客戶機(jī)和服務(wù)器之間的通訊以“請(qǐng)求響應(yīng)”的方式進(jìn)行。客戶機(jī)先向服務(wù)器發(fā)起“請(qǐng)求”(Request),服務(wù)器再響應(yīng)(Response)這個(gè)請(qǐng)求。,客戶機(jī),服務(wù)器,請(qǐng)求,響應(yīng),在Internet/Intranet領(lǐng)域,目前“瀏覽器Web服務(wù)器數(shù)據(jù)庫服務(wù)器”結(jié)構(gòu)是一種非常流行的客戶機(jī)/服務(wù)器結(jié)構(gòu)。這種結(jié)構(gòu)最大的優(yōu)點(diǎn)是:客戶機(jī)統(tǒng)一采用瀏覽器,這不僅讓用戶使用方便,而且使得客戶機(jī)端不存在維護(hù)的問題。當(dāng)然,軟件開發(fā)布和維護(hù)的工作不是自動(dòng)消失了,而是轉(zhuǎn)移到了Web服務(wù)器端。在Web服務(wù)器端,程序員要用腳本語言編寫響應(yīng)頁面。,5層次結(jié)構(gòu)設(shè)計(jì),軟件體系結(jié)構(gòu)設(shè)計(jì)的三要素是程序構(gòu)件(模塊)的層次結(jié)構(gòu)、構(gòu)件之間交互的方式以及數(shù)據(jù)的結(jié)構(gòu)。子系統(tǒng)及模塊劃分還應(yīng)考慮:(1)模塊大小適當(dāng)。(2)模塊的層次結(jié)構(gòu)。結(jié)構(gòu)圖(StructureChart,SC)是精確表達(dá)軟件結(jié)構(gòu)的圖形表示方法,可反映模塊之間的層次調(diào)用關(guān)系和聯(lián)系。常用特定符號(hào)表示模塊、模塊間調(diào)用關(guān)系及其信息傳遞。模塊間用單向箭頭連結(jié),箭頭從調(diào)用模塊指向被調(diào)用模塊,如下圖所示。,圖a模塊調(diào)用關(guān)系圖b模塊間接口表示圖c模塊的條件和循環(huán)調(diào)用關(guān)系,有的結(jié)構(gòu)圖對(duì)這兩種信息不加以區(qū)別,一律用注有信息名的短箭頭“”來表示,【案例1】打印報(bào)告的軟件結(jié)構(gòu)圖。其調(diào)用次序?yàn)樯蠈诱{(diào)用下層,同層按照數(shù)據(jù)傳遞關(guān)系確定,一般從左到右執(zhí)行。執(zhí)行過程即按照數(shù)據(jù)流向進(jìn)行。如圖1所示。,(3)軟件層次結(jié)構(gòu)。層次圖如圖2所示。有關(guān)指標(biāo)為:深度。表示了模塊間控制的層數(shù),表明軟件的復(fù)雜程度,深度越深,軟件越復(fù)雜。寬度。表示同一層次上模塊的總數(shù),寬度越寬,表示軟件越復(fù)雜。扇出。表示一模塊直接控制其他模塊的數(shù)量。如圖3(a)和(b)。模塊劃分時(shí),一般扇出平均3-4上限為5-8。扇入。表示模塊直接受到多少其他模塊控制,扇入越大表明共享該模塊的上級(jí)模塊數(shù)越多,雖有一定好處,但不宜片面追求高扇入,如圖3(c)和(d)。,圖2軟件的層次,圖3軟件的扇出和扇入控制,6模塊設(shè)計(jì),在設(shè)計(jì)好軟件的體系結(jié)構(gòu)后,就已經(jīng)在宏觀上明確了各個(gè)模塊應(yīng)具有什么功能,應(yīng)放在體系結(jié)構(gòu)的哪個(gè)位置。保持“功能獨(dú)立”是模塊化設(shè)計(jì)的基本原則。因?yàn)?,“功能?dú)立”的模塊可以降低開發(fā)、測(cè)試、維護(hù)等階段的代價(jià)。但是“功能獨(dú)立”并不意味著模塊之間保持絕對(duì)的孤立。一個(gè)系統(tǒng)要完成某項(xiàng)任務(wù),需要各個(gè)模塊相互配合才能實(shí)現(xiàn),此時(shí)模塊之間就要進(jìn)行信息交流。手和腳是兩個(gè)“功能獨(dú)立”的模塊。沒有腳,手照樣能干活。沒有手,腳仍可以走路。如果希望跑得快,那么邁左腳時(shí)一定要伸右臂甩左臂,邁右腳時(shí)則要伸左臂甩右臂。,在設(shè)計(jì)一個(gè)模塊時(shí)不僅要考慮“這個(gè)模塊就該提供什么樣的功能”,還要考慮“這個(gè)模塊應(yīng)該怎樣與其它模塊交流信息”。評(píng)價(jià)模塊設(shè)計(jì)優(yōu)劣的三個(gè)特征因素:“信息隱藏”、“內(nèi)聚與耦合”和“封閉開放性”,6.1信息隱藏,為了盡量避免某個(gè)模塊的行為去干擾同一系統(tǒng)中的其它模塊,在設(shè)計(jì)模塊時(shí)就要注意信息隱藏。應(yīng)該讓模塊僅僅公開必須要讓外界知道的內(nèi)容,而隱藏其它一切內(nèi)容。模塊的信息隱藏可以通過接口設(shè)計(jì)來實(shí)現(xiàn)。一個(gè)模塊僅提供有限個(gè)接口(Interface),執(zhí)行模塊的功能或與模塊交流信息必須且只須通過調(diào)用公有接口來實(shí)現(xiàn)。,6.2內(nèi)聚和耦合,內(nèi)聚(Cohesion)是一個(gè)模塊內(nèi)部各成分之間相關(guān)聯(lián)程度的度量。耦合(Coupling)是模塊之間依賴程度的度量。內(nèi)聚和耦合是密切相關(guān)的,與其它模塊存在強(qiáng)耦合的模塊通常意味著弱內(nèi)聚,而強(qiáng)內(nèi)聚的模塊通常意味著與其它模塊之間存在弱耦合。模塊設(shè)計(jì)追求強(qiáng)內(nèi)聚,弱耦合。,6.3封閉開放性,一個(gè)模塊可以作為一個(gè)獨(dú)立體被其它程序引用,則稱模塊具有封閉性。一個(gè)模塊可以被擴(kuò)充,則稱模塊具有開放性。從字面上看,讓模塊具有“封閉開放性”是矛盾的,但這種特征在軟件開發(fā)過程中是客觀存在的。著手一個(gè)新問題時(shí),很難一次性解決問題。應(yīng)該先縱觀問題的一些重要方面,同時(shí)作好以后補(bǔ)充的準(zhǔn)備。因此讓模塊存在“開放性”并不是壞事情。“封閉性”也是需要的,不能等到完全掌握解決問題的信息后再把程序做成別人能用的模塊。模塊的“封閉開放性”實(shí)際上對(duì)應(yīng)于軟件質(zhì)量因素中的可復(fù)用性和可擴(kuò)充性。采用面向過程的方法進(jìn)行程序設(shè)計(jì),很難開發(fā)出既具有封閉性又具有開放性的模塊。采用面向?qū)ο笤O(shè)計(jì)方法可以較好地解決這個(gè)問題。,7設(shè)計(jì)方法,軟件設(shè)計(jì)方法可以分為三大類。一是面向數(shù)據(jù)流的設(shè)計(jì),也稱為過程驅(qū)動(dòng)設(shè)計(jì)二是面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),也稱為數(shù)據(jù)驅(qū)動(dòng)的設(shè)計(jì)三是面向?qū)ο笤O(shè)計(jì),7.1結(jié)構(gòu)化設(shè)計(jì)方法,1)結(jié)構(gòu)化設(shè)計(jì)方法概述結(jié)構(gòu)化設(shè)計(jì)(StructuredDesign,SD)方法是一種典型的面向數(shù)據(jù)流的設(shè)計(jì)方法,是結(jié)構(gòu)化開發(fā)方法的核心和關(guān)鍵,主要完成軟件系統(tǒng)的總體結(jié)構(gòu)設(shè)計(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中國(guó)郵政集團(tuán)公司江蘇省常熟市分公司招聘快包投遞員高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)聯(lián)通福建省分公司招聘(414人+)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)移動(dòng)黑龍江公司校園招聘224人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電建(德國(guó))限公司招聘1人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025中國(guó)電信湖北潛江分公司招聘4人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年浙江麗水市青田縣招聘國(guó)企業(yè)工作人員擬聘用(三)閱讀模式高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年廣西桂林市事業(yè)單位招聘應(yīng)征入伍大學(xué)畢業(yè)生153人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年山東通匯資本投資集團(tuán)限公司社會(huì)招聘7人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川省江油市事業(yè)單位招聘95人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025下半年四川南充市高坪區(qū)事業(yè)單位招聘47人高頻重點(diǎn)提升(共500題)附帶答案詳解
- (DB45T 2522-2022)《橋梁纜索吊裝系統(tǒng)技術(shù)規(guī)程》
- 廣州滬教牛津版七年級(jí)英語上冊(cè)期中試卷(含答案)
- 道法全冊(cè)知識(shí)點(diǎn)梳理-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 2025版國(guó)家開放大學(xué)法律事務(wù)??啤睹穹▽W(xué)(1)》期末考試總題庫
- 四川省成都市2023-2024學(xué)年高二上學(xué)期期末考試+地理 含答案
- 人教版數(shù)學(xué)六年級(jí)上冊(cè)期末考試試卷
- 2024年時(shí)事政治試題庫附答案(綜合題)
- 新人教版八年級(jí)上冊(cè)數(shù)學(xué)知識(shí)點(diǎn)歸納及??碱}型
- DB43T 1167-2016 高純(SiO ≥99.997%)石英砂 規(guī)范
- 電池制造工(電池(組)裝配工)行業(yè)職業(yè)技能競(jìng)賽理論考試題庫及答案
- 四年級(jí)數(shù)學(xué)上冊(cè) 第6章《除法》單元測(cè)評(píng)必刷卷(北師大版)
評(píng)論
0/150
提交評(píng)論