版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第四章軟件結(jié)構(gòu)設(shè)計、設(shè)計:應(yīng)用各種技術(shù)和原理,對設(shè)備、工藝或系統(tǒng)進行詳細的一盞茶定義,使其能夠物理實現(xiàn)。 軟件結(jié)構(gòu)設(shè)計:軟件需求轉(zhuǎn)換為軟件表示的過程,軟件的總體結(jié)構(gòu)、程序結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、文件結(jié)構(gòu)、接口定義等設(shè)計是一個宏命令設(shè)計。 4.1軟件結(jié)構(gòu)設(shè)計概述、軟件設(shè)計和方案設(shè)計的區(qū)別:方案設(shè)計是計程儀編程,這是眾所周知的,在很多人的印象中“制作軟件”是計程儀編程,可能有人把計程儀方案設(shè)計和軟件設(shè)計等同起來。 這是不對的。 軟件設(shè)計是有宏命令的設(shè)計。 由于程序設(shè)計只不過是軟件設(shè)計的實現(xiàn),制作軟件并不簡單。4.2軟件結(jié)構(gòu)設(shè)計的目標(biāo)、任務(wù)和過程、目標(biāo):綜合采用各種技術(shù)手段,將系統(tǒng)需求轉(zhuǎn)換為數(shù)據(jù)結(jié)構(gòu)、模塊結(jié)
2、構(gòu)(或?qū)ο?類結(jié)構(gòu))的表現(xiàn)形式,實現(xiàn)系統(tǒng)性能、安全性、可靠性的要求。 得到最好的方案。 最佳方案的標(biāo)準(zhǔn): (1)開發(fā)費用?。?2)資源消耗低;(3)開發(fā)時間短;(4)生產(chǎn)效率高;(5)可靠性高;(6)維護性好。 結(jié)果:用模塊結(jié)構(gòu)圖表現(xiàn)。 塔斯克:結(jié)構(gòu)設(shè)計是一個自頂向下,逐步具體的綜合設(shè)計程序。 主要內(nèi)容: (1)綜合分析系統(tǒng)的各種實現(xiàn)方案,提出最佳實現(xiàn)方案。 (二)制定設(shè)計規(guī)范、標(biāo)準(zhǔn)和約定原則; (3)軟件結(jié)構(gòu)設(shè)計:采用一種軟件設(shè)計方法,根據(jù)模塊的結(jié)構(gòu)原則,逐步設(shè)計軟件的模塊層次結(jié)構(gòu)。 (4)數(shù)據(jù)結(jié)構(gòu)和接口的設(shè)計。 (5)系統(tǒng)性能設(shè)計。 (6)系統(tǒng)安全性能設(shè)計:系統(tǒng)自我保護設(shè)計數(shù)據(jù)完整性設(shè)計容
3、錯設(shè)計。 (7)系統(tǒng)的可靠性設(shè)計。 (8)設(shè)計文件的制作:結(jié)構(gòu)設(shè)計說明書用戶手冊系統(tǒng)的初步測試計劃書。 (九)設(shè)計審查和復(fù)審。 軟件結(jié)構(gòu)設(shè)計程序:1 .設(shè)想方案2 .選擇合理的方案3 .推薦最佳方案4 .功能分解5 .設(shè)計軟件結(jié)構(gòu)6 .設(shè)計數(shù)據(jù)庫7 .制定測試計劃8 .編寫文件9 .審查和復(fù)審4.3軟件設(shè)計中的基本概念和原理,1 .模塊計程儀群中的每個模塊必須單獨命名,并且可以網(wǎng)站數(shù)據(jù)庫到由名稱指定的模塊。 在高級語言中,將模塊具體表示為函數(shù)、子例程、進程等。 一個模塊具有投入產(chǎn)出(接口)、功能、內(nèi)部數(shù)據(jù)和程序查詢密碼四個特點。 投入產(chǎn)出用于實現(xiàn)模塊與其他模塊之間的數(shù)據(jù)傳輸,即模塊所需的原始數(shù)
4、據(jù)和來自模塊的結(jié)果數(shù)據(jù)的傳輸。 功能是指模塊已完成的工作。 模塊的投入產(chǎn)出和功能構(gòu)成了模塊的外部特征。 內(nèi)部數(shù)據(jù)是指只能在模塊內(nèi)部使用的局部量。 計程儀程序查詢密碼用于描述實現(xiàn)模塊功能的具體方法和步驟。 模塊的內(nèi)部數(shù)據(jù)和程序查詢密碼反映了模塊的內(nèi)部特性。 模數(shù)化是指將整個計程儀程序分割為多個模塊,每個模塊實現(xiàn)特定的功能。 分割模塊對于解決大型、復(fù)雜的問題非常必要,可以大幅度降低解決問題的難度。 為了說明這個,關(guān)于問題的復(fù)雜性,開發(fā)工作量和模塊數(shù)的關(guān)系,可以進行以下的推論。 首先,設(shè)與問題x對應(yīng)的復(fù)雜度函數(shù)為C(x ),解決問題x所需的功函數(shù)為E(x )。 對于兩個問題P1和P2,已證明C(P1
5、) C(P2)在問題P1的復(fù)雜度高于P2時,E(P1) E(P2)大于用于解決問題P1所需的工作量。 在人們解決問題的過程中,發(fā)現(xiàn)了另一個有趣的規(guī)則。 C(P1 P2) C(P1) C(P2)解決由多個問題組合而成的大問題的復(fù)雜度大于單獨解決各個問題的復(fù)雜度的和。 也就是說,對于一個復(fù)雜的問題,將其分解為多個小問題并分別解決是容易的。由此可知,E(P1 P2) E(P1) E(P2)將復(fù)雜的問題分解為幾個小問題,分別打破它們,需要比直接解決復(fù)雜問題所需的工作量少的工作量。 根據(jù)以上的推論,我們能夠得到這樣的結(jié)論,模數(shù)化能夠降低解決問題的復(fù)雜性,降低軟件研發(fā)的工作量。 增加計程儀程序中的模塊數(shù)可
6、以減少開發(fā)各模塊的工作量,但可以增加為云同步設(shè)計模塊接口的工作量。 根據(jù)圖4.1所示的模塊數(shù)與軟件研發(fā)成本的相關(guān)系譜圖可知,當(dāng)分割出的模塊數(shù)位于最小成本區(qū)內(nèi)時,軟件研發(fā)的總成本最低。 模數(shù)化不僅能降低軟件研發(fā)難度,還能清晰計程儀柱的結(jié)構(gòu),提高易讀性和修改方便性。 此外,模數(shù)化也有助于提高查詢密碼的復(fù)用性和工作團隊合作開發(fā)大型軟件的可能性。 圖4.1模塊數(shù)和軟件研發(fā)成本,2 .模塊獨立性1 )耦合性耦合性是衡量一個軟件結(jié)構(gòu)內(nèi)不同模塊間聯(lián)系緊密度的指標(biāo)。 模塊之間的聯(lián)系越深,耦合性越高,模塊獨立性也越低。 由于模塊之間的連接是經(jīng)由模塊接口來實現(xiàn)的,因此模塊耦合性的高度主要依賴于模塊接口的復(fù)雜度、調(diào)
7、用模塊的方式以及通過模塊接口的數(shù)據(jù)。 模塊間的耦合性主要可分為以下類型。 (1)數(shù)據(jù)結(jié)合。 如果在兩個模塊之間僅通過模塊殘奧儀表交換信息,并且所有交換的信息都是簡單的數(shù)據(jù),則該組合被稱為數(shù)據(jù)組合。 數(shù)據(jù)綁定的耦合性最低,軟件通常包含數(shù)據(jù)綁定。 數(shù)據(jù)耦合的示例如下: (2)公共耦合。 在這樣的耦合被稱為公共耦合,其中兩個或多個模塊參考公共數(shù)據(jù)而彼此網(wǎng)絡(luò)鏈接。 例如,當(dāng)在計程儀程序中定義全局變量并在多個模塊中引用全局變量時,在引用全局變量的多個模塊之間存在公共耦合關(guān)系。 FORTRAN語言中使用的common語句也在多個模塊之間建立通用耦合關(guān)系。 公共結(jié)合的復(fù)雜性隨著結(jié)合模塊的數(shù)量的增加而顯著增加
8、。 在計程儀柱設(shè)計中,在兩個模塊之間需要交換的數(shù)據(jù)較多,僅通過殘奧儀表傳達難以實現(xiàn)的情況下,可以考慮采用公共結(jié)合,但是必須注意盡可能降低公共結(jié)合的程度。 (4)內(nèi)容結(jié)合。 當(dāng)一個模塊直接引用或修改另一個模塊中的內(nèi)容(包括數(shù)據(jù)和段)、通過反常的條目進入另一個模塊、一個模塊具有多個條目、兩個模塊共享部分查詢密碼時內(nèi)容結(jié)合是所有耦合關(guān)系中最高的級別,由于模塊間聯(lián)系過于緊密,給后期的開發(fā)和維護帶來很大的麻煩,所以絕對要避免任何形式的內(nèi)容結(jié)合。 實際上,許多高級軟件編程語言在規(guī)定語法時沒有任何形式的內(nèi)容結(jié)合。 耦合是影響軟件復(fù)雜性的重要因素,在設(shè)計過程中需要降低程序的耦合性。 在以上介紹的結(jié)合中,數(shù)據(jù)結(jié)
9、合的程度最低,其次是公共結(jié)合,其次是控制耦合,最高的是內(nèi)容結(jié)合。 2 )絮凝性絮凝性是測量一個模塊內(nèi)部各元件之間相互結(jié)合緊密度的指標(biāo)。 模塊中的配置元素體越結(jié)合,模塊的內(nèi)聚性越高,模塊獨立性也越高。 模塊的內(nèi)聚性和耦合性是相互對立、密切相關(guān)的兩個概念。 實際上,它們是相同但在兩個方面,其中模塊的高內(nèi)聚性通常意味著模塊之間的低耦合性。 由于計程儀柱的每個部分都是相關(guān)的,因此將其中密切相關(guān)的部分放在相同的模塊中可以降低模塊之間的關(guān)系,而將密切相關(guān)的部分分散到不同的模塊中,則模塊之間的聯(lián)系必然變強。 進行模塊設(shè)計時,耦合性和內(nèi)聚性是應(yīng)考慮的重要指標(biāo)。 但是,在軟件設(shè)計時,必須集中精力提高模塊的內(nèi)聚性
10、。模塊的內(nèi)聚性主要可以分為以下不同的類型。 (1)偶然結(jié)束。 模塊由完成多個不同任務(wù)的語句組成,各語句之間的關(guān)系非常松散或完全沒有關(guān)系時,該模塊的結(jié)束稱為偶然的結(jié)束。 例如,在計程儀節(jié)目中出現(xiàn)一些不相關(guān)的短語序列并且將它們組合到一個模塊以節(jié)省存儲器空間是偶然的綁定。 偶然凝聚的模塊由于構(gòu)成部分之間沒有實質(zhì)的聯(lián)系,難以理解和修正,給軟件研發(fā)帶來很大的煩惱。 偶然的結(jié)束是結(jié)束度最低的一種,在軟件設(shè)計時要盡量避免。 (2)邏輯性結(jié)束。 在一個模塊能夠?qū)崿F(xiàn)與多個邏輯性相同或類似的功能的情況下,該模塊的結(jié)束稱為邏輯性結(jié)束。 例如,當(dāng)在同一模塊中實現(xiàn)計程儀群中的多個不同類型的數(shù)據(jù)的輸出時,該模塊屬于邏輯集
11、成。 邏輯性的團結(jié)在某種程度上比偶然的團結(jié)要高。 雖然邏輯集成模塊的元件之間具有一定的關(guān)系,但是不同的功能混合以共享它們的查詢密碼的一部分這會給修改帶來一定的故障。 另外,由于必須傳遞相應(yīng)的控制殘奧儀表,使得當(dāng)調(diào)用模塊時,可以選擇并執(zhí)行它們中的任意一個功能,所以導(dǎo)致了模塊之間的控制耦合并且模塊獨立性降低。 時間結(jié)束。 當(dāng)一個模塊包括需要在同一時間段內(nèi)執(zhí)行的多個塔斯克時,該模塊的結(jié)束稱為時間結(jié)束。 例如,若將多個變量的初始化放入同一模塊中實現(xiàn),或?qū)⑿枰糜谠仆降亩鄠€庫文件的打開操作放入同一模塊中,則會產(chǎn)生花費時間的模塊。 由于時間凝聚模塊各部分的時間聯(lián)系,其凝聚度比邏輯凝聚度稍高。 然而,這類
12、模塊通常與其它相關(guān)模塊密切相關(guān),從而增加了耦合性。 (4)過程結(jié)束。 當(dāng)一個模塊的各個部分必須相關(guān)聯(lián)并且以特定的順序執(zhí)行時,該模塊的結(jié)束被稱為進程結(jié)束。 在結(jié)構(gòu)化計程儀程序中,作為決定設(shè)計軟件和模塊分割的工具,通常采用工藝流程圖,所以這樣得到的模塊具有過程結(jié)束的特性。 (5)通訊結(jié)束。 當(dāng)一個模塊的各個部分使用相同的輸入數(shù)據(jù)或生成相同的輸出數(shù)據(jù)時,該模塊的綁定稱為通訊綁定。 由于通訊聚集模塊的各部分與一些公共數(shù)據(jù)密切相關(guān),因此絮凝性高于前面的一些絮凝性。 (6)依次結(jié)束。 當(dāng)一個模塊的每個部分必須與相同的功能緊密相關(guān)地按順序執(zhí)行時(通常,前一部分的輸出數(shù)據(jù)是后一部分的輸入數(shù)據(jù)),該模塊的結(jié)束按
13、順序結(jié)束。 例如,在處理學(xué)生成績的模塊中,前一部分根據(jù)成績統(tǒng)計合格的學(xué)生人數(shù),后一部分根據(jù)合格人數(shù)計算學(xué)生的及格率。 由數(shù)據(jù)流程圖分隔的模塊通常是按順序綁定的模塊。 順序結(jié)束模塊的各部分與功能和執(zhí)行順序密切相關(guān),因此結(jié)束度高容易理解。 (7)功能凝聚。 一個模塊的各個組成部分構(gòu)成一個整體,當(dāng)完成一個單一的功能時,該模塊的結(jié)束被稱為功能結(jié)束。 功能凝聚模塊各部分的關(guān)系非常密切,構(gòu)成了一個不可分割的整體,因此功能凝聚是所有凝聚中凝聚度最高的一種。 以上介紹的7種凝聚中,從絮凝性低到高排列的結(jié)果如圖4.2所示。圖4.2內(nèi)聚性的排列,3 .抽象抽象是人們在解決復(fù)雜問題時經(jīng)常采用的思維方法,是指總結(jié)現(xiàn)實
14、世界中相似、本質(zhì)的方面,并暫時忽略它們的細節(jié)差異。 在軟件研發(fā)中使用抽象概念可以階層化復(fù)雜問題的求解過程,在不同抽象層實現(xiàn)困難的分解。在抽象水平高的水平上,可以暫時隱藏詳細信息,有助于解決系統(tǒng)的大局問題。 在軟件研發(fā)過程中從問題定義到最終的軟件生成,各個階段都是基于上一階段化學(xué)基在軟件解法抽象層上的一次精煉和細化。 在結(jié)構(gòu)化過程中的自頂向下中,精致的模塊分割思想是人們思維中使用抽象的方法來解決復(fù)雜問題的表現(xiàn)。 軟件結(jié)構(gòu)中掌門人級模塊抽象級最高,控制、調(diào)整軟件的主要功能,在全球影響的軟件結(jié)構(gòu)中基礎(chǔ)模塊抽象級最低,具體實現(xiàn)數(shù)據(jù)處理過程。 從自頂向下、抽象到具體的思維方法的采用,有助于降低軟件研發(fā)各
15、階段工作的難度,簡化軟件的設(shè)計與實現(xiàn)過程,提高軟件的可讀性、測試性與維護性。 此外,通過在計程儀程序設(shè)計中應(yīng)用抽象的方法,還能夠提高查詢密碼的復(fù)用性。 另外,所謂信息隱藏信息隱藏,是指僅通過一個模塊將自各兒的內(nèi)幕消息隱藏到其它模塊中以避免對其它模塊進行不適當(dāng)?shù)木W(wǎng)站數(shù)據(jù)庫和修改,從而在模塊之間行政許可完成系統(tǒng)功能所需要的數(shù)據(jù)交換。 隱藏信息的目的主要是提高模塊獨立性,減少將一個模塊的錯誤擴散到其他模塊的機會。 然而,信息隱藏并不意味著一個模塊的內(nèi)幕消息不能或者不能被其它模塊使用,并且模塊之間的信息傳遞只能通過合法調(diào)用接口來實現(xiàn)。 顯然,信息隱藏對提高軟件的可讀性和可維護性非常重要。 5 .分階段
16、追求“為了集中精力解決主要問題,盡量推遲問題的詳細思考”。 可以認為,這是Niklaus Wirth提出的對一定時期需要解決的各種問題進行優(yōu)先排序的技術(shù)。 求精實際上是一個細分的過程。 抽象和求精是相輔相成的概念。 4.4啟發(fā)式規(guī)則,(1)降低模塊的耦合性,提高模塊的內(nèi)聚性。 為了提高軟件中的各種模塊獨立性,提高計程儀程序的可讀性、測試性和維護性,在軟件架構(gòu)設(shè)計時必須盡可能采用高內(nèi)聚性的模塊。 最好實現(xiàn)功能綁定,盡量只使用數(shù)據(jù)綁定,限制公共綁定的使用,抑制綁定的使用,防止內(nèi)容綁定的出現(xiàn)。 (2)維持適當(dāng)?shù)哪K規(guī)模。 計程儀程序中的模塊太大會降低程序計程儀程序的可讀性模塊太小會增加程序計程儀程序
17、中的模塊數(shù)量,從而增加接口的復(fù)雜性。 雖然沒有嚴(yán)格規(guī)定模塊的合適的規(guī)模,但是從一般觀點來看,期望保持模塊內(nèi)的字符數(shù)在10100之間。 為了使模塊規(guī)模適度,可以在保證模塊獨立性的基礎(chǔ)上,整合計程儀程序中規(guī)模過小的模塊,或者分解規(guī)模過大的模塊。 (3)模塊應(yīng)具有高粉絲和適當(dāng)?shù)姆劢z,某模塊的上位模塊數(shù)稱為該模塊的粉絲(如圖4.3(a )所示,模塊m的粉絲數(shù)為n )。 某模塊可調(diào)用的下級模塊數(shù)稱為該模塊的扇出(如圖4.3(b )所示,模塊m的扇出數(shù)為k )。 顯然,模塊扇區(qū)指示需要調(diào)用模塊的模塊的數(shù)量,并且扇區(qū)指示模塊可以控制的子模塊的數(shù)量。圖4.3模塊的風(fēng)扇和風(fēng)扇輸出(a )風(fēng)扇輸出(b )風(fēng)扇輸出
18、,模塊的風(fēng)扇越大,共享該模塊的上位模塊的數(shù)量越多,或者該模塊在程序計程儀中的復(fù)用性越高,這是計程儀程序設(shè)計目標(biāo)的如果多個模塊具有部分相同的功能,則必須分離該部分相同的功能,創(chuàng)建獨立的模塊并提供必要的模塊調(diào)用。 消除不同模塊的重復(fù),提高查詢密碼的復(fù)用性,可以減少計程儀柱的總查詢密碼量,使計程儀柱的測試和維護變得容易。 如果模塊扇出過大,則在一個模塊中調(diào)用8個子模塊時,對該模塊的調(diào)用控制過于復(fù)雜。產(chǎn)生這種現(xiàn)象的原因通常是因為在設(shè)計階段、模塊的微細化過程中,分解速度過快。 最常見的解決方案是通過在模塊和子模塊之間添加中間階層來控制模塊的分解速度。 在系統(tǒng)設(shè)計中,模塊的風(fēng)扇太小,就像風(fēng)扇輸出為1 (下級模塊層只有一個模塊)一樣,這是不可取的。 常見的解決方案是考慮將其納入高級模塊。 但是,一
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年智能電表在電氣節(jié)能中的經(jīng)濟分析
- 急診護理管理與應(yīng)急處理技巧
- 醫(yī)療急救現(xiàn)場禮儀與應(yīng)急處置
- 醫(yī)療行業(yè)醫(yī)院文化建設(shè)要點
- 2026年湖南科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題有答案解析
- 2026年河南應(yīng)用技術(shù)職業(yè)學(xué)院單招綜合素質(zhì)考試模擬試題帶答案解析
- 賬戶管理辦法培訓(xùn)課件
- 護理創(chuàng)新技術(shù)與產(chǎn)品研發(fā)進展
- 護理專業(yè)認證與醫(yī)院護理質(zhì)量提升
- 2026年河北軌道運輸職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)筆試備考題庫帶答案解析
- 《道路旅客運輸企業(yè)突發(fā)事件應(yīng)急預(yù)案》
- 阿拉伯語課程講解
- 噴油部管理制度
- 《齊魯文化》期末筆記
- 非煤地下礦山機電知識
- 化工原理課程設(shè)計說明書-2778kg-h苯-甲苯篩板式精餾塔設(shè)計
- 97S501-1-井蓋及踏步圖集
- GB 30254-2024高壓三相籠型異步電動機能效限定值及能效等級
- 鹽酸、硫酸產(chǎn)品包裝說明和使用說明書
- 汽車線束DFMEA設(shè)計失效模式和影響分析
- plc電梯設(shè)計的參考文獻
評論
0/150
提交評論