《軟件工程原理》講義_第1頁
《軟件工程原理》講義_第2頁
《軟件工程原理》講義_第3頁
《軟件工程原理》講義_第4頁
《軟件工程原理》講義_第5頁
已閱讀5頁,還剩90頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程原理第三章 軟件設計111/12/2023軟件設計的概念功能獨立性結(jié)構化設計方法過程設計3.1

軟件設計的概念211/12/2023軟件設計的基本目標是用比較抽象概括的方式確定目標系統(tǒng)如何完成預定的任務,即軟件設計是確定系統(tǒng)的物理模型。從技術觀點來看,軟件設計包括數(shù)據(jù)設計、體系結(jié)構設計、接口設計、過程設計。數(shù)據(jù)設計將實體關系圖中描述的對象和關系,以及數(shù)據(jù)字典中描述的詳細數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構的定義。體系結(jié)構設計定義軟件系統(tǒng)各主要成份之間的關系。接口設計根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件與其它協(xié)同系統(tǒng)之間及軟件與用戶之間的交互機制。過程設計則是把結(jié)構成份轉(zhuǎn)換成軟件的過程性描述。311/12/2023將分析模型轉(zhuǎn)換為設計數(shù)據(jù)字典系圖狀態(tài)轉(zhuǎn)換圖加工規(guī)格流

說圖

明控制規(guī)格說明數(shù)體實 數(shù)關 據(jù)據(jù)對象描述過程設計接口設計體系結(jié)構設計數(shù)據(jù)設計411/12/2023從工程管理角度來看,軟件設計分兩步完成:概要設計和詳細設計。概要設計

將軟件需求轉(zhuǎn)化為軟件體系結(jié)構

確定系統(tǒng)級接口

全局數(shù)據(jù)結(jié)構或數(shù)據(jù)庫模式。詳細設計

確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構

用適當方法表示算法和數(shù)據(jù)結(jié)構的細節(jié)511/12/2023軟件設計是后續(xù)開發(fā)步驟及軟件維護工作的基礎。如果沒有設計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構。維護測試編碼設計測試編碼維護有軟件設計611/12/2023沒有軟件設計軟件設計既是過程又是模型。設計過程是一系列的迭代步驟,使設計人員能夠描述目標系統(tǒng)的各個側(cè)面。設計模型首先描述目標系統(tǒng)的整體架構,然后逐步細化架構得到構造每個細節(jié)的指導原則,從而得到系統(tǒng)的一系列不同的視圖。良好的設計原則可為設計過程導航。衡量設計過程的技術原則:①設計必須實現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。711/12/2023衡量軟件設計的原則①對于開發(fā)者和未來的維護者而言,設計必須是可讀的、可理解的,使得將來易于編程、易于測試、易于維護。②設計應該給出軟件的全貌,包括從實現(xiàn)角度可看到的數(shù)據(jù)、功能、行為。811/12/2023衡量設計模型的技術原則①設計模型應該是一個分層結(jié)構。該結(jié)構:使用可識別的設計模式搭建系統(tǒng)結(jié)構。用顯示良好設計特征的構件構成??梢杂醚莼姆绞綄崿F(xiàn)。②設計應當模塊化。③設計應當包含數(shù)據(jù)、體系結(jié)構、接口和構件(模塊)的清晰的視圖。④設計應當根據(jù)將要實現(xiàn)的對象和數(shù)據(jù)模式導出合適的數(shù)據(jù)結(jié)構。⑤設計應當建立具有獨立功能特征的構件。⑥設計應當建立能夠降低模塊與外部環(huán)境之間復雜連接的接口。⑦設計模型應當通過使用軟件需求信息所驅(qū)動的可重復的方法導出。Davis的軟件設計原則①設計應具有可跟蹤性,能回溯到軟件需求;911/12/2023②設計不必每次都從頭做起,可以復用已有的設計模式和數(shù)據(jù)模式。③設計應當縮小軟件與現(xiàn)實世界中問題的“智力距離”,盡量逼近問題領域的結(jié)構;1011/12/2023④設計應具有一致性和集成性。整個系統(tǒng)應具有統(tǒng)一的風格和格式,具有良好的接口。⑤設計結(jié)果應能適應未來可能的變更;⑥設計不是編碼,編碼也不是設計。設計模型的抽象級別比源代碼高。在編碼級別上唯一的設計決策是補充一些實現(xiàn)細節(jié)。⑦設計應具有容錯性和異常處理能力。對于異常數(shù)據(jù)、事件、操作條件等能夠平滑處理。1112/31/2022⑧在建立設計方案時就應能評估設計質(zhì)量,而不是在系統(tǒng)編碼之后。⑨應堅持設計評審,減少概念性(語義性)的錯誤。軟件設計的主要手段1)設計應遵循抽象化的原則,包含數(shù)據(jù)抽象和過程抽象。過程抽象是指在軟件設計中將處理過程的實現(xiàn)現(xiàn)細節(jié)隱藏在數(shù)據(jù)抽象中,可以直接通過模

塊接口使用這些處理操作。數(shù)據(jù)抽象是指采用抽象數(shù)據(jù)類型表示數(shù)據(jù),實實現(xiàn)數(shù)據(jù)封裝,使得使用者可通過接口使用

數(shù)據(jù)而不必關心數(shù)據(jù)結(jié)構的實現(xiàn)。1212/31/20222.設計應遵循自頂向下、逐步細化的原則,建立一一個層次的結(jié)構。

將軟件體系結(jié)構自頂向下,對過程細節(jié)和數(shù)據(jù)細節(jié)從抽象到具體,逐層細化,直到用編程語言的語句能夠?qū)崿F(xiàn)為止。4)

設計應當遵循模塊化的原則。

每個模塊可獨立地開發(fā)、測試,最后組裝成完整的程序。1312/31/2022其出發(fā)點是本著將一種復雜問題“分而治之

”的原則。其目的是使程序的結(jié)構清晰,容易閱讀、理解、測試、修改。Meyer的良好模塊設計方法的標準模塊可分解性可將系統(tǒng)按問題/子問題分解的原則分解成系統(tǒng)的模塊層次結(jié)構;模塊可組裝性可利用已有的設計構件組裝成新系統(tǒng),不必一切從頭開始。c)

模塊可理解性一個模塊可不參考其他模塊而被理解;1412/31/2022模塊連續(xù)性對軟件需求的一些微小變更只只導致對某個模塊的修改而整個系統(tǒng)不用大動;模塊保護將模塊內(nèi)出現(xiàn)異常情況的影響范圍限制在模塊內(nèi)部;5)

設計應遵循信息隱蔽的原則。

Patnas主張在開發(fā)時,將每個程序的成分隱藏在模塊內(nèi),定義每一個模塊時盡可能少地顯露其內(nèi)部的處理。每個模塊的實現(xiàn)細節(jié)對于其它模塊是隱蔽的,將來修改軟件時偶然引入錯誤所造成的影響

就可以局限在一個或幾個模塊內(nèi)部,不致波

及到軟件的其它部分。在可預見將來可能修改的場合,信息隱蔽可以提高軟件的可修改性、可測試性和可移植性。1512/31/20223.2功能獨立性1612/31/2022功能獨立性是抽象、模塊化和信息隱蔽的直接產(chǎn)產(chǎn)物。如果一個模塊能夠獨立于其他模塊被編程程、測試和修改,則該模塊具有功能獨立性。1978年Myers提出用兩個準則來度量功能獨立性,即模塊間的耦合和模塊的內(nèi)聚。內(nèi)聚性:內(nèi)聚是一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。耦合性:耦合是模塊間互相連接的緊密程度的度度量,它取決于各個模塊之間接口的復雜度、調(diào)調(diào)用方式以及哪些信息通過接口。非直接耦合數(shù)據(jù)耦合標記耦合控制耦合外部耦合公共耦合內(nèi)容耦合耦合性功能獨立性1712/31/2022模塊間的耦合模塊之間耦合性越強,功能獨立性越差,這樣形成的模塊結(jié)構界面不好。非直接耦合(NondirectCoupling)兩個模塊之間沒有直接關系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的。非直接耦合的模塊獨立性最強。主模塊1812/31/2022ABCEFGXYZ數(shù)據(jù)耦合(Data

Coupling)一個模塊訪問另一個模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構或外部變量)來交換輸入、輸出信息的。p0

(x0,y0) p1

(x1,y1)數(shù)據(jù)耦合

LINE

(

x0,y0,

x1,y1)1912/31/2022標記耦合(StampCoupling)一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。這個記錄是某一數(shù)據(jù)結(jié)構的子結(jié)構,而不是簡單變量。p0

(x0,y0) p1

(x1,y1)標記耦合

LINE

(

p0,

p1)2012/31/2022控制耦合(Control

Coupling)如果一個模塊通過傳送開關、標志、名字等控制參數(shù),明顯地控制選擇另一模塊的功能,就是控制耦合。Flag2112/31/2022Flagf1f2fn外部耦合(External

Coupling)2212/31/2022一組模塊都訪問同一全局簡單變量而不是同一全全局數(shù)據(jù)結(jié)構,而且不是通過參數(shù)表傳遞該全局局變量的信息,則稱之為外部耦合。公共耦合(CommonCoupling)若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境境可以是全局數(shù)據(jù)結(jié)構、共享的通信區(qū)、內(nèi)存的的公共覆蓋區(qū)等。公共耦合的復雜程度隨耦合模塊的個數(shù)增加而顯顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,

則公共耦合有兩種情況。松散公共耦合和緊密

密公共耦合。common公共數(shù)據(jù)區(qū)ABcommon公共數(shù)據(jù)區(qū)AB松散的公共耦合2312/31/2022緊密的公共耦合如果發(fā)生下列情形,模塊之間就是內(nèi)容耦合:一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù);一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;兩個模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中);一個模塊有多個入口。2412/31/2022內(nèi)容耦合

(Content

Coupling)cAB進入另一模塊內(nèi)部AB模塊多個入口模塊代碼重疊entry1……entry2……2512/31/2022模塊內(nèi)聚巧合內(nèi)聚邏輯內(nèi)聚時間內(nèi)聚過程內(nèi)聚通信內(nèi)聚信息內(nèi)聚功能內(nèi)聚內(nèi)聚性2612/31/2022功能獨立性模塊內(nèi)聚性越強,功能獨立性越好,對于形成的模模塊結(jié)構有比較好的作用。要求模塊結(jié)構達到高內(nèi)聚,低耦合。一個模塊中各個部分都是完成某一具體功能必不不可少的組成部分,或者說該模塊中所有部分都都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。功能內(nèi)聚模塊的功能獨立性最強。2712/31/2022功能內(nèi)聚(FunctionalCohesion)這種模塊完成多個功能,各個功能相互獨立但都都在同一數(shù)據(jù)結(jié)構上操作,每一項功能有一個唯唯一的入口點。這個模塊將根據(jù)不同的要求,

確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是基于同一個數(shù)據(jù)結(jié)結(jié)構(符號表),因此,它是一個信息內(nèi)聚的模模塊。信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組組合,并且達到信息的隱蔽。2812/31/2022信息內(nèi)聚(InformationalCohesion)初始化插入刪除查找修改符號表2912/31/2022如果一個模塊內(nèi)各功能部分都使用了相同的輸入入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。模塊內(nèi)各個功能是緊密相連的。3012/31/2022通信內(nèi)聚(CommunicationCohesion)打印

檢驗結(jié)果3112/31/2022讀文件文件計算A計算B合并修改文件新文件A結(jié)果B結(jié)果加工記錄使用流程圖做為工具設計程序時,如果流程圖太太大,可以把流程圖中的某一部分劃出組成模塊塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計算算部分分成三個模塊,這三個模塊都是過程內(nèi)聚聚模塊。3212/31/2022過程內(nèi)聚(ProceduralCohesion)時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功

功能模塊,但模塊的各個功能的執(zhí)行與時間有關

關,通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。例如,初始化模塊和終止模塊就是時間內(nèi)聚模塊。3312/31/2022時間內(nèi)聚(Classical

Cohesion)這種模塊把幾種相關的功能組合在一起,每次被被調(diào)用時,由傳送給模塊的判定參數(shù)來確定該模模塊應執(zhí)行哪一種功能。寫一個記錄3412/31/2022讀一個記錄判定調(diào)用模塊被調(diào)用模塊邏輯內(nèi)聚(LogicalCohesion)當幾個模塊內(nèi)正好有一段代碼是相同的,將它們抽抽取出來形成單獨的模塊,即巧合內(nèi)聚模塊。這

這種模塊沒有獨立功能,各部分之間沒有聯(lián)系,或或聯(lián)系很松散。巧合內(nèi)聚(CoincidentalCohesion)ABCM STORE

REC()

TO

NREAD

MASTERFILEADD

1

TO

x……3512/31/2022結(jié)構化設計(structureddesign,SD)是一種面面向數(shù)據(jù)流的設計方法,它可以與SA方法銜接接。結(jié)構化設計是基于模塊化、自頂向下細化

化、結(jié)構化程序設計等程序設計技術基礎上上發(fā)展起來的?;舅枷胧菍⑾到y(tǒng)設計成由由相對獨立、功能單一的模塊組成的結(jié)構

構。該方法實施的要點是:1)

首先研究、分析和審查數(shù)據(jù)流圖。從軟件12/31/2022件3.3結(jié)構化設計方法36的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對于于發(fā)現(xiàn)的問題及時解決。然后根據(jù)數(shù)據(jù)流圖確定數(shù)據(jù)處理的類型。典型的類型有兩種:變換型和事務型。針對兩種不同類型分別進行分析處理。由數(shù)據(jù)流圖推導出系統(tǒng)的初始結(jié)構圖。利用一些啟發(fā)式原則改進系統(tǒng)初始結(jié)構圖,直到得到符合要求的結(jié)構圖為止。修改和補充數(shù)據(jù)字典。制定測試計劃。3712/31/2022在系統(tǒng)結(jié)構圖中的模塊3812/31/2022傳入模塊─從下屬模塊取得數(shù)據(jù),經(jīng)過某些處理,再將其傳送給上級模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。傳出模塊─從上級模塊獲得數(shù)據(jù),進行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。變換模塊─它從上級模塊取得數(shù)據(jù),進行特定的處理,轉(zhuǎn)換成其它形式,再傳送回上級模塊。協(xié)調(diào)模塊─對所有下屬模塊進行協(xié)調(diào)和管理的模塊。傳入模塊AA傳出模塊DD變換模塊A

B協(xié)調(diào)模塊AAB3912/31/2022B系統(tǒng)結(jié)構圖的基本符號模塊調(diào)用數(shù)據(jù) 控制信息轉(zhuǎn)接符號系統(tǒng)結(jié)構圖的基本符號選擇(判斷)重復4012/31/2022模塊調(diào)用示例(a)調(diào)用4112/31/2022(b)判斷調(diào)用(c)循環(huán)調(diào)用數(shù)據(jù):模塊之間傳送的數(shù)據(jù)用帶空心圓的箭頭表示,并在旁邊標上數(shù)據(jù)名??刂菩畔ⅲ嚎刂菩畔⑴c數(shù)據(jù)的主要區(qū)別是前者只只反映數(shù)據(jù)的某種狀態(tài)。AB(a)xyz查職工簡歷讀人事文件(b)模塊間的數(shù)據(jù)傳遞職工號4212/31/2022簡歷數(shù)據(jù)無此職工數(shù)據(jù)處理的類型4312/31/2022在需求分析階段,面向數(shù)據(jù)流的SA方法產(chǎn)生數(shù)據(jù)流圖DFD。在軟件設計階段,面向數(shù)據(jù)流的SD方法將DFD轉(zhuǎn)轉(zhuǎn)換成程序結(jié)構圖。數(shù)據(jù)處理即為在DFD中從系統(tǒng)的輸入數(shù)據(jù)流到系統(tǒng)的輸出數(shù)據(jù)流所經(jīng)歷的一連串連續(xù)變換。數(shù)據(jù)處理的類型分為變換流型與事務流型。變換流數(shù)據(jù)沿著輸入通路進入系統(tǒng),經(jīng)過一系列數(shù)

據(jù)變換,將數(shù)據(jù)的外部形式轉(zhuǎn)換成對應的內(nèi)部部表示,然后通過變換中心(也稱主加工)處理,再沿著輸出通路轉(zhuǎn)換成外部形式離開

系統(tǒng)。具有這種特性的數(shù)據(jù)流稱為變換流。變換流型DFD可以分成:輸入+變換中心(主加工)+輸出輸入數(shù)據(jù)C變換數(shù)據(jù)C→D輸出數(shù)據(jù)D4412/31/2022相應于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),

變換流型系統(tǒng)結(jié)構圖由輸入、變換中心和輸輸出等三部分組成。主模塊B變換成C輸入B輸出CA變換成B輸入AC變換成D4512/31/2022輸出DAABBB

CCCDD事務流4612/31/2022數(shù)據(jù)沿著輸入通路到達一個事務中心,事務中中心根據(jù)輸入數(shù)據(jù)(即事務)的類型在若干個個動作(稱為活動流)中選擇一個來執(zhí)行,這這種數(shù)據(jù)流也稱為事務流。事務流有明顯的事務中心,各活動流以事務中中心為起點呈輻射狀流出。在事務流型系統(tǒng)結(jié)構圖中,事務中心模塊按所所接受的事務的類型,選擇某一事務(活動流流)處理模塊執(zhí)行。各事務處理模塊并列列。事務中心分派模塊輸出結(jié)果事務1輸入作業(yè)信息事務2事務3事務4作業(yè)信息4712/31/2022作業(yè)信息結(jié)果結(jié)果操作1操作2操作3操作4操作6細節(jié)1細節(jié)2細節(jié)3細節(jié)4操作5細節(jié)5細節(jié)6變換分析4812/31/2022變換分析從變換流型的數(shù)據(jù)流圖導出系統(tǒng)結(jié)構構圖.步驟重畫數(shù)據(jù)流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出出和變換中心部分;進行一級分解,設計模塊結(jié)構的頂層和第一一層模塊;進行二級分解,設計輸入、輸出和中心變換部分的中、下層模塊。1.重畫數(shù)據(jù)流圖(平鋪)為了建立系統(tǒng)結(jié)構,將數(shù)據(jù)流圖平鋪開來,物理輸入畫在左側(cè),物理輸出畫在右側(cè)。如果一個外部實體既是物理輸入又是物理輸出,則兩側(cè)都要畫出它。A

B4912/31/2022B

CE

GG

HD

FABCDC

DEEFGH物理輸入物理輸出2.確定邏輯輸入、邏輯輸出和變換中心部分變換中心是程序的核心功能,它的輸入是邏輯輸入,它的輸出為邏輯輸出。變換中心A

B5012/31/2022B

CE

GG

HD

FABCDC

DEEFGH物理輸入物理輸出邏輯輸入邏輯輸出3.

第一級分解:設計模塊結(jié)構的頂層和第一層頂層模塊:其功能就是整個系統(tǒng)的功能;輸入控制模塊:接收所有的輸入數(shù)據(jù);變換控制模塊:實現(xiàn)輸入到輸出的變換;輸出控制模塊:產(chǎn)生所有的輸出數(shù)據(jù)。頂層模塊變換控制5112/31/2022輸出控制輸入控制變換中心A

BB

CE

GG

HD

FABCDC

DEEFGH物理輸入物理輸出邏輯輸入邏輯輸出主模塊C

D,E輸入C輸出D輸出ECCD,EDE邏輯輸入變換中心邏輯輸出5212/31/20224.

第二級分解:設計中、下層模塊塊5312/31/2022輸入控制模塊的分解:從變換中心的邊界開始,沿著各輸入通路,把輸入通路上的每個加工映射成輸入控制模塊的一個低層模塊。輸出控制模塊的分解:從變換中心的邊界開始,沿著各輸出通路,把輸出通路上的每個加工映射成輸出控制模塊的一個低層模塊。變換控制模塊的分解:變換控制模塊通常沒有通用的分解方法,應根據(jù)數(shù)據(jù)流圖中變換部分的實際情況進行設計。輸出HG

HA

BB

CE

GG

HD

FABCDC

D,EEFGH物理輸入物理輸出主模塊C

D,E輸入C輸出ECCD,EDE輸入BBB

CBC輸入AA

BABA輸出GE

GD

FD輸出DF

F輸出FEGGGHH5412/31/2022輸出HG

HA

BB

CE

GG

HD

FABCDC

D,EEFGH物理輸入物理輸出主模塊C

D,E輸入C輸出D輸出ECCD,EDE輸入BBB

CBC輸入AA

BABA輸出GE

G輸出FD

FDF

FEGGGHH5512/31/2022事務分析5612/31/2022事務分析是從事務流型數(shù)據(jù)流圖導出系統(tǒng)結(jié)構圖。步驟:確定事務中心和每條活動流的流特性將事務流型數(shù)據(jù)流圖映射成高層的系統(tǒng)結(jié)構進一步分解1.

確定事務中心和各活動流的流特性右圖為事務流型DFD的一般形式。事務中心(圖中的T):位于活動流的起點,活動流從該點成輻射狀流出?;顒恿鳎嚎蔀樽儞Q流可為事務流事務流型的DFD的組成:輸入流+事務中心+若干條活動流T輸入流5712/31/2022事務流活動流右圖為事務流型DFD的高層結(jié)構形式。頂層模塊:其功能就是整個系統(tǒng)的功能。接收模塊:接收輸入數(shù)據(jù)。分派模塊:調(diào)度模塊,控制下層的所有活動模塊。事務模塊:對應活動流,是該活動流映射成的。2. 將事務流型DFD映射成高層系統(tǒng)結(jié)構…頂層模塊分派接收事務1事務2事務n5812/31/20223.

進一步分解5912/31/2022接收模塊:類同于變換分析中輸入控制模塊的分分解?;顒恿髂K:根據(jù)其流特性(變換流或事務流)進一步采用變換分析或事務分析進行分解。模塊設計的原則6012/31/2022在選擇模塊設計的次序時,必須對一個模塊的全全部直接下屬模塊都設計完成之后,才能轉(zhuǎn)向另另一個模塊的下層模塊的設計。使用“黑盒””技術:在設計當前模塊時,先把該模

塊的所有下層模塊定義成“黑盒”,在設計中利用它們時暫不考慮其內(nèi)部結(jié)構和實現(xiàn)。在這一步定義好的“黑盒”,在下一步就可以對它們進行設計和加工。最后,全部“黑盒”的內(nèi)容和結(jié)構應完全被確定。在設計下層模塊時,應考慮模塊的耦合和內(nèi)聚問題,以提高初始結(jié)構圖質(zhì)量。模塊劃分時,一個模塊的直接下屬模塊一般在5

個左右。如果直接下屬模塊超過10個,可設立中間層次。如果出現(xiàn)以下情況,就停止模塊分解:模塊不能再細分為明顯的子任務;分解成用戶提供的模塊或庫函數(shù);模塊接口是輸入輸出設備傳送的信息;模塊不宜再分解得過小。6112/31/2022變換分析是軟件系統(tǒng)結(jié)構設計的主要方法。一般,一個大型的軟件系統(tǒng)是變換型結(jié)構和

事務型結(jié)構的混合結(jié)構。所以,我們通常利用用以變換分析為主,事務分析為輔的方式進

行軟件結(jié)構設計。6212/31/2022a6312/31/2022bdpqbac1d

分派模塊事務控制qrs接受通路prs模塊功能完善化一個完整的模塊應當有以下幾部分:執(zhí)行規(guī)定的功能的部分;出錯處理的部分。當模塊不能完成規(guī)定的功功能時,必須回送出錯標志,出現(xiàn)例外情況況的原因。如果需要返回數(shù)據(jù)給它的調(diào)用者,在完成數(shù)數(shù)據(jù)加工或結(jié)束時,應當給它的調(diào)用者返

回一個狀態(tài)碼。6412/31/2022改進系統(tǒng)結(jié)構的啟發(fā)式原則2.

消除重復功能,改善軟件結(jié)構

完全相似:在結(jié)構上完全相似,可能只是在在數(shù)據(jù)類型上不一致。此時可以采取完全合合并的方法。6512/31/2022局部相似:找出其相同部分,分離出去,重重新定義成一個獨立的下一層模塊。還可以以與它的上級模塊合并。R1R2XY相似部分R1R2XYR1+R2XYX+R1Y+R2R1Y+R2X不可取開關太多6612/31/20223.

模塊的作用范圍應在控制范圍之內(nèi)

模塊的控制范圍包括它本身及其所有的從屬屬模塊。6712/31/2022模塊的作用范圍是指模塊內(nèi)一個判定的作用用范圍,凡是受這個判定影響的所有模塊都都屬于這個判定的作用范圍。如果一個判定的作用范圍包含在這個判定所所在模塊的控制范圍之內(nèi),則這種結(jié)構是簡簡單的,否則,它的結(jié)構是不簡單的。4.

盡可能減少高扇出結(jié)構如果一個模塊的扇出數(shù)過大,就意味著該模塊過分分復雜,需要協(xié)調(diào)和控制過多的下屬模塊。應當適當增加中間層次的控制模塊。PPP1P26812/31/20225.

避免或減少使用病態(tài)聯(lián)接ABcommonABTABLEITAB直接病態(tài)聯(lián)接公共數(shù)據(jù)域病態(tài)聯(lián)接通信模塊病態(tài)聯(lián)接xABx6912/31/2022xx(a)直接病態(tài)聯(lián)接(b)公共數(shù)據(jù)域病態(tài)聯(lián)接(c)通信模塊病態(tài)聯(lián)接模塊的大小要適中。設計功能可預測的模塊一個功能可預測的模塊,不論內(nèi)部處理細節(jié)如何,但但對相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。

但是,如果模塊內(nèi)部蘊藏有一些特殊的鮮為人

人知的功能時,這個模塊就可能是不可預測的。對于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預測。7012/31/2022保存當前標記恢復“以前”標記標記?標記?功能不可預測的模塊7112/31/2022在過程設計階段,要決定各個模塊的實現(xiàn)算法,并精確地表達這些算法。對每個模塊規(guī)定的功能以及算法的設計,給出適適當?shù)乃惴枋觯簣D形工具:程序流程圖,N-S,PAD,HIPO表格工具:判定表語言工具:PDL

,HIPO7212/31/20223.5過程設計(詳細設計)程序流程圖ABABPA1PA2=1=2An=nTSPF

FSP7312/31/2022T順序型選擇型先判斷重復型后判斷重復型多分支選擇型gabfx1x4入口hijcde出口流程圖示例x6Fx5FFFT

T

T

T

switch

Fdo-whiledo-whilex2

while-do=1

x3T=2=312/31/202274N-S圖ABPFABPT

FTAwhile-do

PAAdo-while

PP=

1=

2…=

nA1A2…An順序型7512/31/2022選擇型(1)選擇型(2)先判斷重復型后判斷重復型多分支選擇型N-S圖(盒圖)示例ab7612/31/2022x1TTFFx2x4f=1=2

=3gido-whilex5hdecwhile-dox6do-whilex6j問題分析圖(PAD)S1SA1A2AnPPP=1=2=nwhile

PSSS1S2S2until

P選擇型7712/31/2022順序型多分支選擇型先判斷重復型后判斷重復型PAD示例while-do

x3bfgx1ado-while

x6jx4do-while

x5hicdex27812/31/2022=1=2=3PDL

(Program

DesignLanguage)7912/31/2022PDL是一種用于描述功能模塊的算法設計和加工細節(jié)的語言。稱為設計程序用語言。它是一種偽碼。偽碼的語法規(guī)則分為“外語法”和““內(nèi)語法”。PDL具有嚴格的關鍵字外語法,用于定義控制結(jié)構和數(shù)據(jù)結(jié)構,同時它的表示實際操作和條件的內(nèi)語法可使用自然語言的詞匯。示例:

拼詞檢查程序8012/31/2022PROCEDUREspellcheckBEGIN--*

splitdocument

intosinglewordsLOOPget

next

wordadd

wordtowordlistin

sortorderEXITWHENallwordsprocessedENDLOOP--*

look

up

words

indictionaryLOOPget

wordfrom

word

listIF

word

not

indictionaryTHEN--*

display

wordsnot

indictionarydisplay

word

promptonuserterminalIF

user

response

says

wordOKTHENadd

wordtogoodwordlistELSEaddwordto

bad

wordlistENDIFENDIFEXIT

WHEN

all

wordsprocessedEND

LOOP8112/31/2022--*createanewwordsdictionarydictionary:=mergedictionaryandgoodwordlistENDspellcheck8212/31/2022為了區(qū)別關鍵字,規(guī)定關鍵字一律大寫,其它單單詞一律小寫。內(nèi)語法使用自然語言來描述處理特性。內(nèi)語

法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。判定表8312/31/2022決策表用于表示程序的靜態(tài)邏輯在決策表中的條件部分給出所有的兩分支判斷的列表,動作部分給出相應的處理要求將程序流程圖中的多分支判斷都改成兩分支判斷gabfx6入口hijcde出口x8Fx7FFFT

T

TT

x5Tswitch

F

x1do-whiledo-whilewhile-dox2Fx3Fx4FTTT無多分支判斷結(jié)構12/31/2022848512/31/2022HIPO圖8612/31/2022HIPO是1976年由IBM公司提出來的,圖既是在開發(fā)過程中的表達工

溫馨提示

  • 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

提交評論