軟件設計方法-中國科學技術大學.ppt_第1頁
軟件設計方法-中國科學技術大學.ppt_第2頁
軟件設計方法-中國科學技術大學.ppt_第3頁
軟件設計方法-中國科學技術大學.ppt_第4頁
軟件設計方法-中國科學技術大學.ppt_第5頁
已閱讀5頁,還剩131頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

軟件工程學,中國科學技術大學網(wǎng)絡學院,4.1 軟件設計的目標和任務 4.2 軟件設計基礎 4.3 模塊獨立性 4.4 結構化設計方法 4.5 數(shù)據(jù)設計和文件設計 4.6 過程設計,第4章 軟件設計方法,4.1軟件設計的目標和任務,根據(jù)用信息域表示的軟件需求,以及功能和性能需求,進行 數(shù)據(jù)設計 系統(tǒng)結構設計 接口設計 過程設計。,數(shù)據(jù)設計需求分析階段創(chuàng)建的信息模型轉變成實現(xiàn)軟件所需要的數(shù)據(jù)結構。 系統(tǒng)結構設計確定程序由哪些模塊組成以及這些模塊相互間的關系。 接口設計的結果描述了軟件內(nèi)部、軟件與協(xié)作系統(tǒng)之間以及軟件與使用它的人之間的通信方式。 過程設計則是把結構成份轉換成軟件的過程性描述。在編碼步驟,根據(jù)這種過程性描述,生成源程序代碼,然后通過測試最終得到完整有效的軟件。,開發(fā)階段的信息流,程序模塊,測試,編碼,設計,信息域需求,功能與性能需求,數(shù)據(jù)設計,過程設計,系統(tǒng)結構設計,組裝好的有效的軟件,軟件設計是后續(xù)開發(fā)步驟及軟件維護工作的基礎。如果沒有設計,只能建立一個不穩(wěn)定的系統(tǒng)結構,軟件設計任務,從工程管理的角度來看,軟件設計分兩步完成。 概要設計,將軟件需求轉化為數(shù)據(jù)結構和軟件的系統(tǒng)結構。 詳細設計,即過程設計。通過對結構表示進行細化,得到軟件的詳細的數(shù)據(jù)結構和算法。,軟件設計過程,1. 制定規(guī)范 在進入軟件開發(fā)階段之初,首先應為軟件開發(fā)組制定在設計時應該共同遵守的標準,以便協(xié)調組內(nèi)各成員的工作。包括:,閱讀和理解軟件需求說明書,確認用戶要求能否實現(xiàn),明確實現(xiàn)的條件,從而確定設計的目標,以及它們的優(yōu)先順序 根據(jù)目標確定最合適的設計方法 規(guī)定設計文檔的編制標準 規(guī)定編碼的信息形式,與硬件,操作系統(tǒng)的接口規(guī)約,命名規(guī)則,2. 軟件系統(tǒng)結構的總體設計,基于功能層次結構建立系統(tǒng)。 采用某種設計方法,將系統(tǒng)按功能劃分成模塊的層次結構 確定每個模塊的功能 建立與已確定的軟件需求的對應關系 確定模塊間的調用關系 確定模塊間的接口 評估模塊劃分的質量,3. 處理方式設計,確定為實現(xiàn)系統(tǒng)的功能需求所必需的算法,評估算法的性能 確定為滿足系統(tǒng)的性能需求所必需的算法和模塊間的控制方式 周轉時間 響應時間 吞吐量 精度 確定外部信號的接收發(fā)送形式,4. 數(shù)據(jù)結構設計,確定軟件涉及的文件系統(tǒng)的結構以及數(shù)據(jù)庫的模式、子模式,進行數(shù)據(jù)完整性和安全性的設計 確定輸入,輸出文件的詳細的數(shù)據(jù)結構 結合算法設計,確定算法所必需的邏輯數(shù)據(jù)結構及其操作 確定對邏輯數(shù)據(jù)結構所必需的那些操作的程序模塊(軟件包),限制和確定各個數(shù)據(jù)設計決策的影響范圍 若需要與操作系統(tǒng)或調度程序接口所必須的控制表等數(shù)據(jù)時,確定其詳細的數(shù)據(jù)結構和使用規(guī)則 數(shù)據(jù)的保護性設計 防衛(wèi)性設計:在軟件設計中就插入自動檢錯,報錯和糾錯的功能,一致性設計: 保證軟件運行過程中所使用的數(shù)據(jù)的類型和取值范圍不變 在并發(fā)處理過程中使用封鎖和解除封鎖機制保持數(shù)據(jù)不被破壞 冗余性設計:針對同一問題,由兩個開發(fā)者采用不同的程序設計風格不同的算法設計軟件,當兩者運行結果之差不在允許范圍內(nèi)時,利用檢錯系統(tǒng)予以糾正,或使用表決技術決定一個正確結果。,5.可靠性設計,可靠性設計也叫做質量設計 在運行過程中,為了適應環(huán)境的變化和用戶新的要求,需經(jīng)常對軟件進行改造和修正。在軟件開發(fā)的一開始就要確定軟件可靠性和其它質量指標,考慮相應措施,以使得軟件易于修改和易于維護。,6.編寫概要設計階段的文檔,概要設計階段完成時應編寫以下文檔: 概要設計說明書 數(shù)據(jù)庫設計說明書 用戶手冊 制定初步的測試計劃,7.概要設計評審,可追溯性:確認該設計是否復蓋了所有已確定的軟件需求,軟件每一成份是否可追溯到某一項需求 接口:確認該軟件的內(nèi)部接口與外部接口是否已經(jīng)明確定義。模塊是否滿足高內(nèi)聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內(nèi) 風險:確認該設計在現(xiàn)有技術條件下和預算范圍內(nèi)是否能按時實現(xiàn),實用性:確認該設計對于需求的解決方案是否實用 技術清晰度:確認該設計是否以一種易于翻譯成代碼的形式表達 可維護性:確認該設計是否考慮了方便未來的維護 質量:確認該設計是否表現(xiàn)出良好的質量特征,各種選擇方案:看是否考慮過其它方案,比較各種選擇方案的標準是什么 限制:評估對該軟件的限制是否現(xiàn)實,是否與需求一致 其它具體問題:對于文檔、可測試性、設計過程等進行評估,在詳細設計過程中,需要完成的工作是: 確定軟件各個組成部分內(nèi)的算法以及各部分的內(nèi)部數(shù)據(jù)組織 選定某種過程的表達形式來描述各種算法。 進行詳細設計的評審,詳細設計,4.2軟件設計基礎,自頂向下,逐步細化 軟件結構 程序結構 結構圖 模塊化 抽象化 信息隱蔽,自頂向下,逐步細化,將軟件的體系結構按自頂向下方式,對各個層次的過程細節(jié)和數(shù)據(jù)細節(jié)逐層細化,直到用程序設計語言的語句能夠實現(xiàn)為止,從而最后確立整個的體系結構。,軟件結構,軟件結構包括兩部分。程序的模塊結構和數(shù)據(jù)的結構 軟件的體系結構通過一個劃分過程來完成。該劃分過程從需求分析確立的目標系統(tǒng)的模型出發(fā),對整個問題進行分割,使其每個部分用一個或幾個軟件成份加以解決,整個問題就解決了,程序結構,程序結構表明了程序各個部件(模塊)的組織情況,是軟件的過程表示。,結構圖,結構圖反映程序中模塊之間的層次調用關系和聯(lián)系:它以特定的符號表示模塊、模塊間的調用關系和模塊間信息的傳遞, 模塊:模塊用矩形框表示,并用模塊的名字標記它。, 模塊的調用關系和接口:模塊之間用單向箭頭聯(lián)結,箭頭從調用模塊指向被調用模塊。, 模塊間的信息傳遞:當一個模塊調用另一個模塊時,調用模塊把數(shù)據(jù)或控制信息傳送給被調用模塊,以使被調用模塊能夠運行。而被調用模塊在執(zhí)行過程中又把它產(chǎn)生的數(shù)據(jù)或控制信息回送給調用模塊, 在模塊A的箭頭尾部標以一個菱形符號,表示模塊A有條件地調用另一個模塊B。當一個在調用箭頭尾部標以一個弧形符號,表示模塊A反復調用模塊C和模塊D。,程序的系統(tǒng)結構圖,模塊化,軟件系統(tǒng)的模塊化是指整個軟件被劃分成若干單獨命名和可編址的部分,稱之為模塊。這些模塊可以被組裝起來以滿足整個問題的需求。 把問題子問題的分解與軟件開發(fā)中的系統(tǒng)子系統(tǒng)或系統(tǒng)模塊對應起來,就能夠把一個大而復雜的軟件系統(tǒng)劃分成易于理解的比較單純的模塊結構。,抽象化,軟件系統(tǒng)進行模塊設計時,可有不同的抽象層次。 在最高的抽象層次上,可以使用問題所處環(huán)境的語言概括地描述問題的解法。 在較低的抽象層次上,則采用過程化的方法。,(1) 過程的抽象 在軟件工程中,從系統(tǒng)定義到實現(xiàn),每進展一步都可以看做是對軟件解決方法的抽象化過程的一次細化。 在軟件需求分析階段,用“問題所處環(huán)境的為大家所熟悉的術語”來描述軟件的解決方法。 在從概要設計到詳細設計的過程中,抽象化的層次逐次降低。當產(chǎn)生源程序時到達最低抽象層次。,(2) 數(shù)據(jù)抽象 抽象是人類在認識復雜現(xiàn)象、解決復雜問題的過程中使用的最強有用的思維工具。 在現(xiàn)實世界中,一定事物、狀態(tài)或過程之間總會存在某些相似的方面(共性),把這些相似的方面集中和概括起來,暫時忽略它們之間的差異,這就是抽象。 或者說抽象就是提取出事物的本質特性而暫時不考慮它們的細節(jié)。,由于人數(shù)思維能力的限制,如果一次面臨的因素太多,是不可能做出精確思維的 設計復雜系統(tǒng)的惟一有效的方法是用層次的方式分析和構造它 一個復雜的軟件系統(tǒng)應該首先用一些高級的抽象概念來理解和構造,這些高級概念又可以用一些較低級的概念來理解和構造,如此進行下去,直至最低層的具體元素,信息隱蔽,由 parnas 方法提倡的信息隱蔽是指,每個模塊的實現(xiàn)細節(jié)對于其它模塊來說是隱蔽的。也就是說,模塊中所包含的信息(包括數(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ù),4.3模塊獨立性 模塊獨立性, 是指軟件系統(tǒng)中每個模塊只涉及軟件要求的具體的子功能, 而和軟件系統(tǒng)中其它的模塊的接口是簡單的 例如, 若一個模塊只具有單一的功能且與其它模塊沒有太多的聯(lián)系, 則稱此模塊具有模塊獨立性 一般采用兩個準則度量模塊獨立性。即模塊間耦合和模塊內(nèi)聚,耦合是模塊之間的互相連接的緊密程度的度量。 內(nèi)聚是模塊功能強度(一個模塊內(nèi)部各個元素彼此結合的緊密程度)的度量。 模塊獨立性比較強的模塊應是高內(nèi)聚低耦合的模塊。,模塊間的耦合,非直接耦合(Nondirect Coupling) 兩個模塊之間沒有直接關系,它們之 間的聯(lián)系完全是通過主模塊的控制和 調用來實現(xiàn)的。 非直接耦合的 模塊獨立性最 強。,數(shù)據(jù)耦合 (Data Coupling) 一個模塊訪問另一個模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù) (不是控制參數(shù)、公共數(shù)據(jù)結構或外部變量) 來交換輸入、輸出信息的。 標記耦合 (Stamp Coupling) 一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。這個記錄是某一數(shù)據(jù)結構的子結構,而不是簡單變量。,控制耦合 (Control Coupling) 如果一個模 塊通過傳送開 關、標志、名 字等控制信息, 明顯地控制選 擇另一模塊的 功能,就是控 制耦合。,外部耦合(External Coupling) 一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據(jù)結構,而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。 公共耦合(Common Coupling) 若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局數(shù)據(jù)結構、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。,公共耦合的復雜程度隨耦合模塊的個數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。,內(nèi)容耦合 (Content Coupling) 如果發(fā)生下列情形,兩個模塊之間就發(fā)生了內(nèi)容耦合 (1) 一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù); (2) 一個模塊不通過正常入口轉到另一模塊內(nèi)部; (3) 兩個模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中); (4) 一個模塊有多個入口。,c,模塊內(nèi)聚,功能內(nèi)聚 (Functional Cohesion) 一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。,信息內(nèi)聚 (Informational Cohesion) 這種模塊完成多個功能,各個功能都在同一數(shù)據(jù)結構上操作,每一項功能有一個唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是基于同一個數(shù)據(jù)結構(符號表),因此,它是一個信息內(nèi)聚的模塊。,信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達到信息的隱蔽。即把某個數(shù)據(jù)結構、資源或設備隱蔽在一個模塊內(nèi),不為別的模塊所知曉。,通信內(nèi)聚 (Communication Cohesion) 如果一個模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。,過程內(nèi)聚 (Procedural Cohesion) 使用流程圖做為工具設計程序時,把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。,時間內(nèi)聚 (Classical Cohesion) 時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個功能的執(zhí)行與時間有關,通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。,邏輯內(nèi)聚(Logical Cohesion) 這種模塊把幾種 相關的功能組合 在一起,每次被 調用時,由傳送 給模塊的判定參 數(shù)來確定該模塊 應執(zhí)行哪一種功 能。,巧合內(nèi)聚(Coincidental Cohesion) 巧合內(nèi)聚 (偶然內(nèi)聚)。當模塊內(nèi)各部分之間沒有聯(lián)系,或者即使有聯(lián)系,這種聯(lián) 系也很松散, 則稱這種模 塊為巧合內(nèi) 聚模塊,它 是內(nèi)聚程度 最低的模塊。,4.4結構化設計方法,首先研究、分析和審查數(shù)據(jù)流圖。 從軟件的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對于發(fā)現(xiàn)的問題及時解決。 然后根據(jù)數(shù)據(jù)流圖決定問題的類型。數(shù)據(jù)處理問題典型的類型有兩種:變換型和事務型。針對兩種不同的類型分別進行分析處理。,由數(shù)據(jù)流圖推導出系統(tǒng)的初始結構圖。 利用一些啟發(fā)式原則來改進系統(tǒng)的初始結構圖,直到得到符合要求的結構圖為止。 修改和補充數(shù)據(jù)詞典。 制定測試計劃。,在系統(tǒng)結構圖中的模塊,傳入模塊 從下屬模塊取得數(shù)據(jù),經(jīng)過某些處理,再將其傳送給上級模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。 傳出模塊 從上級模塊獲得數(shù)據(jù),進行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。,變換模塊 它從上級模塊取得數(shù)據(jù),進行特定的處理,轉換成其它形式,再傳送回上級模塊。它加工的數(shù)據(jù)流叫做變換數(shù)據(jù)流。 協(xié)調模塊 對所有下屬模塊進行協(xié)調和管理的模塊。,變換型系統(tǒng)結構圖,變換型數(shù)據(jù)處理問題的工作過程大致分為三步,即取得數(shù)據(jù),變換數(shù)據(jù)和給出數(shù)據(jù)。 相應于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結構圖由輸入、中心變換和輸出等三部分組成。,事務型系統(tǒng)結構圖,它接受一項事務,根據(jù)事務處理的特點和性質,選擇分派一個適當?shù)奶幚韱卧?,然后給出結果。 在事務型系統(tǒng)結構圖中,事務中心模塊按所接受的事務的類型,選擇某一事務處理模塊執(zhí)行。各事務處理模塊并列。每個事務處理模塊可能要調用若干個操作模塊,而操作模塊又可能調用若干個細節(jié)模塊。,變換分析,變換分析方法由以下四步組成: 重畫數(shù)據(jù)流圖; 區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和中心變換部分; 進行一級分解,設計上層模塊; 進行二級分解,設計輸入、輸出和中心變換部分的中、下層模塊。, 在選擇模塊設計的次序時,必須對一個模塊的全部直接下屬模塊都設計完成 之后,才 能轉向另 一個模塊 的下層模 塊的設計。, 在設計下層模塊時,應考慮模塊的耦合和內(nèi)聚問題,以提高初始結構圖的質量。 使用“黑箱”技術: 在設計當前模塊時,先把這個模塊的所有下層模塊定義成“黑箱”,在設計中利用它們時,暫時不考慮其內(nèi)部結構和實現(xiàn)。在這一步定義好的“黑箱”,在下一步就可以對它們進行設計和加工。這樣,又會導致更多的“黑箱”。最后,全部“黑箱”的內(nèi)容和結構應完全被確定。, 在模塊劃分時,一個模塊的直接下屬模塊一般在5個左右。如果直接下屬模塊超過10個,可設立中間層次。 如果出現(xiàn)了以下情況,就停止模塊的功能分解: 當模塊不能再細分為明顯的子任務時; 當分解成用戶提供的模塊或程序庫的子程序時; 當模塊的界面是輸入輸出設備傳送的信息時; 當模塊不宜再分解得過小時。,事務分析,在很多軟件應用中,存在某種作業(yè)數(shù)據(jù)流,它可以引發(fā)一個或多個處理,這些處理能夠完成該作業(yè)要求的功能。這種數(shù)據(jù)流就叫做事務。 與變換分析一樣,事務分析也是從分析數(shù)據(jù)流圖開始,自頂向下,逐步分解,建立系統(tǒng)到結構圖。,事務分析過程, 識別事務源 利用數(shù)據(jù)流圖和數(shù)據(jù)詞典,從問題定義和需求分析的結果中,找出各種需要處理的事務。通常,事務來自物理輸入裝置。有時,設計人員還必須區(qū)別系統(tǒng)的輸入、中心加工和輸出中產(chǎn)生的事務。, 規(guī)定適當?shù)氖聞招徒Y構 在確定了該數(shù)據(jù)流圖具有事務型特征之后,根據(jù)模塊劃分理論,建立適當?shù)氖聞招徒Y構。 識別各種事務和它們定義的操作。 從問題定義和需求分析中找出的事務及其操作所必需的全部信息,對于系統(tǒng)內(nèi)部產(chǎn)生的事務,必須仔細地定義它們的操作。, 注意利用公用模塊 在事務分析的過程中,如果不同事務的一些中間模塊可由具有類似的語法和語義的若干個低層模塊組成,則可以把這些低層模塊構造成公用模塊。 對每一事務,或對聯(lián)系密切的一組事務,建立一個事務處理模塊; 如果發(fā)現(xiàn)在系統(tǒng)中有類似的事務,可以把它們組成一個事務處理模塊。, 對事務處理模塊規(guī)定它們?nèi)康南聦硬僮髂K 對操作模塊規(guī)定它們的全部細節(jié)模塊 變換分析是軟件系統(tǒng)結構設計的主要方法。一般,一個大型的軟件系統(tǒng)是變換型結構和事務型結構的混合結構。所以,我們通常利用以變換分析為主,事務分析為輔的方式進行軟件結構設計。,軟件模塊結構的改進,模塊功能的完善化 一個完整的模塊應當有以下幾部分: 執(zhí)行規(guī)定的功能的部分; 出錯處理的部分。當模塊不能完成規(guī)定的功能時,必須回送出錯標志,出現(xiàn)例外情況的原因。 如果需要返回數(shù)據(jù)給它的調用者,在完成數(shù)據(jù)加工或結束時, 應當給它的調用者返回一個狀態(tài)碼。,消除重復功能,改善軟件結構 完全相似:在結構上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時可以采取完全合并的方法。 局部相似:找出其相同部分,分離出去,重新定義成一個獨立的下一層模塊。還可以與它的上級模塊合并。,模塊的作用范圍應在控制范圍之內(nèi) 模塊的控制范圍包括它本身及其所有的從屬模塊。 模塊的作用范圍是指模塊內(nèi)一個判定的作用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用范圍。 如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍之內(nèi),則這種結構是簡單的,否則,它的結構是不簡單的。,盡可能減少高扇出結構,隨著深度增大扇入。 如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復雜,需要協(xié)調和控制過多的下屬模塊。應當適當增加中間層次的控制模塊。,避免或減少使用病態(tài)聯(lián)接 應限制使用如下三種病態(tài)聯(lián)接: 直接病態(tài)聯(lián)接 即模塊A直接從模塊B內(nèi)部取出某些數(shù)據(jù),或者把某些數(shù)據(jù)直接送到模塊B內(nèi)部。, 公共數(shù)據(jù)域病態(tài)聯(lián)接 模塊A和模塊B通過公共數(shù)據(jù)域,直接傳送或接受數(shù)據(jù),而不是通過它們的上級模塊。這種方式將使得模塊間的耦合程度劇增。它不僅影響模塊和模塊,而且影響與公共數(shù)據(jù)域有關聯(lián)的所有模塊。, 通信模塊聯(lián)接 即模塊A和模塊B通過通信模塊TABLEIT傳送數(shù)據(jù)。從表面看,這不是病態(tài)聯(lián)接,因為模塊和模塊B都未涉及通信模塊TABLEIT 的內(nèi)部。然而,它們之間的通信(即數(shù)據(jù)傳送)沒有通過它們的上級模塊。從這個意義上講,這種聯(lián)接是病態(tài)的。,模塊的大小要適中 模塊的大小,可以用模塊中所含語句的數(shù)量的多少來衡量。把模塊的大小限制在一定的范圍之內(nèi)。通常規(guī)定其語句行數(shù)在50100左右,保持在一頁紙之內(nèi),最多不超過500行。,設計功能可預測的模塊,但要避免過分受限制的模塊 一個功能可預測的模塊,不論內(nèi)部處理細節(jié)如何,但對相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結果。但是,如果模塊內(nèi)部蘊藏有一些特殊的鮮為人知的功能時,這個模塊就可能是不可預測的。對于這種模塊,如果調用者不小心使用,其結果將不可預測。,如果一個模塊的局部數(shù)據(jù)結構的大小、控制流的選擇或者與外界(人、硬軟件) 的接口模式被限制死了,則很難適應用戶新的要求或環(huán)境的變更。 為了能夠適應將來的變更,軟件模塊中局部數(shù)據(jù)結構的大小應當是可控制的,控制流的選擇對于調用者來說,應當是可預測的。而與外界的接口應當是靈活的。,軟件包應滿足設計約束和可移植性 為了使得軟件包可以在某些特定的環(huán)境下能夠安裝和運行,對軟件包提出了一些設計約束和可移植的要求。例如,設計約束有時要求一個程序段在存儲器中覆蓋自身。當這種情況出現(xiàn)時,設計出來的軟件程序結構不得不根據(jù)重復程度、訪問頻率、調用間隔等等特性,重新加以組織。,設計的后處理,為每一個模塊寫一份處理說明 為每一個模塊提供一份接口說明 確定全局數(shù)據(jù)結構和局部數(shù)據(jù)結構 指出所有的設計約束和限制 進行概要設計的評審 進行設計的優(yōu)化(如果需要和可能的話),4.5數(shù)據(jù)設計及文件設計,數(shù)據(jù)設計的原則 文件設計,數(shù)據(jù)設計的原則,R.S.Pressman數(shù)據(jù)設計的過程 為在需求分析階段所確定的數(shù)據(jù)對象選擇邏輯表示,需要對不同結構進行算法分析,以便選擇一個最有效的結構;設計對于這種邏輯數(shù)據(jù)結構的一組操作,以實現(xiàn)各種所期望的運算。,確定對邏輯數(shù)據(jù)結構所必需的那些操作的程序模塊(軟件包),以便限制或確定各個數(shù)據(jù)設計決策的影響范圍。 Pressman提出了一組原則,用來定義和設計數(shù)據(jù)。實際上,在進行需求分析時往往就開始了數(shù)據(jù)設計。,1.用于軟件的系統(tǒng)化方法也適用于數(shù)據(jù)。在導出、評審和定義軟件的需求和軟件系統(tǒng)結構時,必須定義和評審其中所用到的數(shù)據(jù)流、數(shù)據(jù)對象及數(shù)據(jù)結構的表示。應當考慮幾種不同的數(shù)據(jù)組織方案,還應當分析數(shù)據(jù)設計給軟件設計帶來的影響。,2.確定所有的數(shù)據(jù)結構和在每種數(shù)據(jù)結構上施加的操作。設計有效的數(shù)據(jù)結構,必須考慮到要對該數(shù)據(jù)結構進行的各種操作。 3.應當建立一個數(shù)據(jù)詞典并用它來定義數(shù)據(jù)和軟件的設計。數(shù)據(jù)詞典清楚地說明了各個數(shù)據(jù)之間的關系和對數(shù)據(jù)結構內(nèi)各個數(shù)據(jù)元素的約束。,4.低層數(shù)據(jù)設計的決策應推遲到設計過程的后期進行。在進行需求分析時確定的總體數(shù)據(jù)組織,應在概要設計階段加以細化,在詳細設計階段才規(guī)定具體的細節(jié)。 5.數(shù)據(jù)結構的表示只限于那些必須直接使用該數(shù)據(jù)結構內(nèi)數(shù)據(jù)的模塊才能知道。此原則就是信息隱蔽和與此相關的耦合性原則。,6.應當建立一個存放有效數(shù)據(jù)結構及相關操作的庫。數(shù)據(jù)結構應當設計成為可復用的。建立一個存有各種可復用的數(shù)據(jù)結構模型的部件庫。 7.軟件設計和程序設計語言應當支持抽象數(shù)據(jù)類型的定義和實現(xiàn)。 以上原則適用于軟件工程的定義階段和開發(fā)階段?!扒逦男畔⒍x是軟件開發(fā)成功的關鍵”。,文件設計,文件設計的過程,主要分兩個階段。第一個階段是文件的邏輯設計,主要在概要設計階段實施。,(1) 整理必須的數(shù)據(jù)元素: 在軟件設計中所使用的數(shù)據(jù),有長期的,有短期的,還有臨時的。它們都可以存放在文件中,在需要時對它們進行訪問。因此首先必須整理應存儲的數(shù)據(jù)元素,給它們一個易于理解的名字,指明其類型和位數(shù),以及其內(nèi)容涵義。,(2) 分析數(shù)據(jù)間的關系: 分析在業(yè)務處理中哪些數(shù)據(jù)元素是同時使用的。把同時使用次數(shù)多的數(shù)據(jù)元素歸納成一個文件進行管理。分析數(shù)據(jù)元素的內(nèi)容,研究數(shù)據(jù)元素與數(shù)據(jù)元素之間的邏輯關系,根據(jù)分析,弄清數(shù)據(jù)元素的含義及其屬性。,(3) 確定文件的邏輯設計: 根據(jù)數(shù)據(jù)關聯(lián)性分析,明確哪些數(shù)據(jù)元素應當歸于一組進行管理,把應當歸于一組的數(shù)據(jù)元素進行統(tǒng)一布局,產(chǎn)生文件的邏輯設計。應用關系模型設計文件的邏輯結構時,必須使其達到第三范式(3NF),以減少數(shù)據(jù)的冗余,提高存取的效率。,顧客文件 商品文件,X : 英文字母數(shù)字; K : 漢字; N : 數(shù)字,第二個階段是文件的物理設計,主要在軟件的詳細設計階段實施 (4) 理解文件的特性: 對于文件的邏輯規(guī)格說明,研究從業(yè)務處理的觀點來看所要求的一些特性,包括文件的使用率、追加率和刪除率,以及保護和保密等。考慮需要采用什么文件組織形式。,(5)確定文件的組織方式 一般要根據(jù)文件的特性,來確定文件的組織方式。 順序文件: 連續(xù)文件 串聯(lián)文件。 直接存取文件: 無關鍵字直接存取文件 帶關鍵字直接存取文件 桶式直接存取文件。,索引順序文件: 其基本數(shù)據(jù)記錄按順序文件組 織,記錄排列順序必須按關鍵 字值升序或降序安排,且具有 索引部分,也按同一關鍵字進 行索引。 分區(qū)文件: 這類文件主要用于存放程序。 它由若干稱為成員的順序組織 的記錄組和索引組成。,虛擬存儲文件: 這是基于操作系統(tǒng)的請求頁式 存儲管理功能而建立的索引順 序文件。 倒排文件: 按候選屬性建立索引表。,(6)確定文件的存儲介質; (7)確定文件的記錄格式; 確定文件記錄中各數(shù)據(jù)項以及它們在記錄中的物理安排。 記錄的長度:設計記錄的長度要確保能滿足需要,還要考慮使用設備的制約和效率,盡可能與讀寫單位匹配,并盡可能減少處理過程中內(nèi)外存的交換次數(shù)。, 數(shù)據(jù)項的順序:對于可變長記錄,應在記錄的開頭記入長度信息;對于關鍵字項,應盡量按級別高低,順序配置;聯(lián)系較密切的數(shù)據(jù)項,應歸納在一起進行配置。 數(shù)據(jù)項的屬性:屬性相同的數(shù)據(jù)項,應盡量歸納在一起配置;數(shù)據(jù)項應按雙字長,全字長,半字長和字節(jié)的屬性,順序配置。, 預留空間:考慮到將來可能的變更或擴充,應當預先留一些空閑空間。不必統(tǒng)一地預留,可在有可能變更或擴充的項旁邊,在相鄰接處預留。 (8) 估算存取時間和存儲容量。,4.6過程設計,從軟件開發(fā)的工程化觀點來看,在使用程序設計語言編制程序以前,需要對所采用算法的邏輯關系進行分析,設計出全部必要的過程細節(jié),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論