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

下載本文檔

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

文檔簡介

軟件工程原理

第三章軟件設(shè)計3.1軟件設(shè)計的概念3.2功能獨立性3.3結(jié)構(gòu)化設(shè)計方法3.4過程設(shè)計2023/7/271?軟件工程3.1軟件設(shè)計的概念軟件設(shè)計的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),即軟件設(shè)計是確定系統(tǒng)的物理模型。從技術(shù)觀點來看,軟件設(shè)計包括數(shù)據(jù)設(shè)計、體系結(jié)構(gòu)設(shè)計、接口設(shè)計、過程設(shè)計。數(shù)據(jù)設(shè)計將實體關(guān)系圖中描述的對象和關(guān)系,以及數(shù)據(jù)字典中描述的詳細(xì)數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。2023/7/272?軟件工程體系結(jié)構(gòu)設(shè)計定義軟件系統(tǒng)各主要成份之間的關(guān)系。接口設(shè)計根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件與其它協(xié)同系統(tǒng)之間及軟件與用戶之間的交互機制。過程設(shè)計則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性描述。2023/7/273?軟件工程將分析模型轉(zhuǎn)換為設(shè)計數(shù)據(jù)字典數(shù)據(jù)流圖實體關(guān)系圖狀態(tài)轉(zhuǎn)換圖加工規(guī)格說明控制規(guī)格說明數(shù)據(jù)對象描述過程設(shè)計接口設(shè)計體系結(jié)構(gòu)設(shè)計數(shù)據(jù)設(shè)計2023/7/274?軟件工程從工程管理角度來看,軟件設(shè)計分兩步完成:概要設(shè)計和詳細(xì)設(shè)計。概要設(shè)計將軟件需求轉(zhuǎn)化為軟件體系結(jié)構(gòu)確定系統(tǒng)級接口全局?jǐn)?shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)庫模式。詳細(xì)設(shè)計確立每個模塊的實現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu)用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)2023/7/275?軟件工程軟件設(shè)計是后續(xù)開發(fā)步驟及軟件維護工作的基礎(chǔ)。如果沒有設(shè)計,只能建立一個不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。設(shè)計編碼測試維護測試編碼維護有軟件設(shè)計沒有軟件設(shè)計2023/7/276?軟件工程軟件設(shè)計既是過程又是模型。設(shè)計過程是一系列的迭代步驟,使設(shè)計人員能夠描述目標(biāo)系統(tǒng)的各個側(cè)面。設(shè)計模型首先描述目標(biāo)系統(tǒng)的整體架構(gòu),然后逐步細(xì)化架構(gòu)得到構(gòu)造每個細(xì)節(jié)的指導(dǎo)原則,從而得到系統(tǒng)的一系列不同的視圖。良好的設(shè)計原則可為設(shè)計過程導(dǎo)航。衡量設(shè)計過程的技術(shù)原則:設(shè)計必須實現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。衡量軟件設(shè)計的原則2023/7/277?軟件工程對于開發(fā)者和未來的維護者而言,設(shè)計必須是可讀的、可理解的,使得將來易于編程、易于測試、易于維護。設(shè)計應(yīng)該給出軟件的全貌,包括從實現(xiàn)角度可看到的數(shù)據(jù)、功能、行為。衡量設(shè)計模型的技術(shù)原則設(shè)計模型應(yīng)該是一個分層結(jié)構(gòu)。該結(jié)構(gòu):使用可識別的設(shè)計模式搭建系統(tǒng)結(jié)構(gòu)。用顯示良好設(shè)計特征的構(gòu)件構(gòu)成??梢杂醚莼姆绞綄崿F(xiàn)。設(shè)計應(yīng)當(dāng)模塊化。2023/7/278?軟件工程設(shè)計應(yīng)當(dāng)包含數(shù)據(jù)、體系結(jié)構(gòu)、接口和構(gòu)件(模塊)的清晰的視圖。設(shè)計應(yīng)當(dāng)根據(jù)將要實現(xiàn)的對象和數(shù)據(jù)模式導(dǎo)出合適的數(shù)據(jù)結(jié)構(gòu)。設(shè)計應(yīng)當(dāng)建立具有獨立功能特征的構(gòu)件。設(shè)計應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間復(fù)雜連接的接口。設(shè)計模型應(yīng)當(dāng)通過使用軟件需求信息所驅(qū)動的可重復(fù)的方法導(dǎo)出。Davis的軟件設(shè)計原則設(shè)計應(yīng)具有可跟蹤性,能回溯到軟件需求;2023/7/279?軟件工程設(shè)計不必每次都從頭做起,可以復(fù)用已有的設(shè)計模式和數(shù)據(jù)模式。設(shè)計應(yīng)當(dāng)縮小軟件與現(xiàn)實世界中問題的“智力距離”,盡量逼近問題領(lǐng)域的結(jié)構(gòu);設(shè)計應(yīng)具有一致性和集成性。整個系統(tǒng)應(yīng)具有統(tǒng)一的風(fēng)格和格式,具有良好的接口。設(shè)計結(jié)果應(yīng)能適應(yīng)未來可能的變更;設(shè)計不是編碼,編碼也不是設(shè)計。設(shè)計模型的抽象級別比源代碼高。在編碼級別上唯一的設(shè)計決策是補充一些實現(xiàn)細(xì)節(jié)。2023/7/2710?軟件工程設(shè)計應(yīng)具有容錯性和異常處理能力。對于異常數(shù)據(jù)、事件、操作條件等能夠平滑處理。在建立設(shè)計方案時就應(yīng)能評估設(shè)計質(zhì)量,而不是在系統(tǒng)編碼之后。應(yīng)堅持設(shè)計評審,減少概念性(語義性)的錯誤。1) 設(shè)計應(yīng)遵循抽象化的原則,包含數(shù)據(jù)抽象和過程抽象。軟件設(shè)計的主要手段2023/7/2711?軟件工程過程抽象是指在軟件設(shè)計中將處理過程的實現(xiàn)細(xì)節(jié)隱藏在數(shù)據(jù)抽象中,可以直接通過模塊接口使用這些處理操作。數(shù)據(jù)抽象是指采用抽象數(shù)據(jù)類型表示數(shù)據(jù),實現(xiàn)數(shù)據(jù)封裝,使得使用者可通過接口使用數(shù)據(jù)而不必關(guān)心數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)。設(shè)計應(yīng)遵循自頂向下、逐步細(xì)化的原則,建立一個層次的結(jié)構(gòu)。將軟件體系結(jié)構(gòu)自頂向下,對過程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)從抽象到具體,逐層細(xì)化,直到用編程語言的語句能夠?qū)崿F(xiàn)為止。2023/7/2712?軟件工程設(shè)計應(yīng)當(dāng)遵循模塊化的原則。每個模塊可獨立地開發(fā)、測試,最后組裝成完整的程序。其出發(fā)點是本著將一種復(fù)雜問題“分而治之”的原則。其目的是使程序的結(jié)構(gòu)清晰,容易閱讀、理解、測試、修改。Meyer的良好模塊設(shè)計方法的標(biāo)準(zhǔn)模塊可分解性可將系統(tǒng)按問題/子問題分解的原則分解成系統(tǒng)的模塊層次結(jié)構(gòu);模塊可組裝性可利用已有的設(shè)計構(gòu)件組裝成新系統(tǒng),不必一切從頭開始。2023/7/2713?軟件工程模塊可理解性一個模塊可不參考其他模塊而被理解;模塊連續(xù)性對軟件需求的一些微小變更只導(dǎo)致對某個模塊的修改而整個系統(tǒng)不用大動;模塊保護將模塊內(nèi)出現(xiàn)異常情況的影響范圍限制在模塊內(nèi)部;設(shè)計應(yīng)遵循信息隱蔽的原則。Patnas主張在開發(fā)時,將每個程序的成分隱藏在模塊內(nèi),定義每一個模塊時盡可能少地顯露其內(nèi)部的處理。2023/7/2714?軟件工程每個模塊的實現(xiàn)細(xì)節(jié)對于其它模塊是隱蔽的,將來修改軟件時偶然引入錯誤所造成的影響就可以局限在一個或幾個模塊內(nèi)部,不致波及到軟件的其它部分。在可預(yù)見將來可能修改的場合,信息隱蔽可以提高軟件的可修改性、可測試性和可移植性。2023/7/2715?軟件工程3.2功能獨立性功能獨立性是抽象、模塊化和信息隱蔽的直接產(chǎn)物。如果一個模塊能夠獨立于其他模塊被編程、測試和修改,則該模塊具有功能獨立性。1978年Myers提出用兩個準(zhǔn)則來度量功能獨立性,即模塊間的耦合和模塊的內(nèi)聚。內(nèi)聚性:內(nèi)聚是一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。耦合性:耦合是模塊間互相連接的緊密程度的度量,它取決于各個模塊之間接口的復(fù)雜度、調(diào)用方式以及哪些信息通過接口。2023/7/2716?軟件工程非直接

數(shù)據(jù)標(biāo)記控制外部公共內(nèi)容耦合耦合耦合耦合耦合耦合耦合耦合性功能獨立性模塊間的耦合模塊之間耦合性越強,功能獨立性越差,這樣形成的模塊結(jié)構(gòu)界面不好。2023/7/2717?軟件工程非直接耦合(NondirectCoupling)兩個模塊之間沒有直接關(guān)系,它們之間的聯(lián)系完全是通過主模塊的控制和調(diào)用來實現(xiàn)的。非直接耦合的模塊獨立性最強。主模塊ABCEFGXYZ2023/7/2718?軟件工程數(shù)據(jù)耦合(DataCoupling)一個模塊訪問另一個模塊時,彼此之間是通過簡單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的。p0(x0,y0)p1(x1,y1)數(shù)據(jù)耦合LINE(x0,y0,x1,y1)2023/7/2719?軟件工程標(biāo)記耦合(StampCoupling)一組模塊通過參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡單變量。p0(x0,y0)p1(x1,y1)標(biāo)記耦合LINE(p0,p1)2023/7/2720?軟件工程控制耦合(ControlCoupling)如果一個模塊通過 傳送開關(guān)、標(biāo)志、 名字等控制參數(shù), 明顯地控制選擇另 一模塊的功能,就 是控制耦合。FlagFlagf1f2fn2023/7/2721?軟件工程外部耦合(ExternalCoupling)一組模塊都訪問同一全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。公共耦合(CommonCoupling)若一組模塊都訪問同一個公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。2023/7/2722?軟件工程公共耦合的復(fù)雜程度隨耦合模塊的個數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。common公共數(shù)據(jù)區(qū)ABcommon公共數(shù)據(jù)區(qū)AB松散的公共耦合緊密的公共耦合2023/7/2723?軟件工程如果發(fā)生下列情形,模塊之間就是內(nèi)容耦合:一個模塊直接訪問另一個模塊的內(nèi)部數(shù)據(jù);一個模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)部;兩個模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語言中);一個模塊有多個入口。內(nèi)容耦合(ContentCoupling)2023/7/2724?軟件工程

c

AB進入另一模塊內(nèi)部模塊代碼重疊ABentry1……entry2……模塊多個入口2023/7/2725?軟件工程模塊內(nèi)聚巧合邏輯時間過程通信信息功能內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚性功能獨立性模塊內(nèi)聚性越強,功能獨立性越好,對于形成的模塊結(jié)構(gòu)有比較好的作用。要求模塊結(jié)構(gòu)達(dá)到高內(nèi)聚,低耦合。2023/7/2726?軟件工程一個模塊中各個部分都是完成某一具體功能必不可少的組成部分,或者說該模塊中所有部分都是為了完成一項具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。功能內(nèi)聚模塊的功能獨立性最強。功能內(nèi)聚(FunctionalCohesion)2023/7/2727?軟件工程這種模塊完成多個功能,各個功能相互獨立但都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項功能有一個唯一的入口點。這個模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個功能。由于這個模塊的所有功能都是基于同一個數(shù)據(jù)結(jié)構(gòu)(符號表),因此,它是一個信息內(nèi)聚的模塊。信息內(nèi)聚模塊可以看成是多個功能內(nèi)聚模塊的組合,并且達(dá)到信息的隱蔽。信息內(nèi)聚(InformationalCohesion)2023/7/2728?軟件工程初始化插入刪除查找修改符號表2023/7/2729?軟件工程如果一個模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過數(shù)據(jù)流圖來定義的。模塊內(nèi)各個功能是緊密相連的。通信內(nèi)聚

(CommunicationCohesion)2023/7/2730?軟件工程打印檢驗結(jié)果讀文件文件計算A計算B合并修改文件新文件A結(jié)果B結(jié)果加工記錄2023/7/2731?軟件工程使用流程圖做為工具設(shè)計程序時,如果流程圖太大,可以把流程圖中的某一部分劃出組成模塊,就得到過程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計算部分分成三個模塊,這三個模塊都是過程內(nèi)聚模塊。過程內(nèi)聚(ProceduralCohesion)2023/7/2732?軟件工程時間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個功能的執(zhí)行與時間有關(guān),通常要求所有功能必須在同一時間段內(nèi)執(zhí)行。例如,初始化模塊和終止模塊就是時間內(nèi)聚模塊。時間內(nèi)聚(ClassicalCohesion)2023/7/2733?軟件工程這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時,由傳送給模塊的判定參數(shù)來確定該模塊應(yīng)執(zhí)行哪一種功能。寫一個記錄讀一個記錄判定調(diào)用模塊被調(diào)用模塊邏輯內(nèi)聚(LogicalCohesion)2023/7/2734?軟件工程當(dāng)幾個模塊內(nèi)正好有一段代碼是相同的,將它們抽取出來形成單獨的模塊,即巧合內(nèi)聚模塊。這種模塊沒有獨立功能,各部分之間沒有聯(lián)系,或聯(lián)系很松散。巧合內(nèi)聚(CoincidentalCohesion)ABCMSTOREREC()TONREADMASTERFILEADD1TOx……2023/7/2735?軟件工程結(jié)構(gòu)化設(shè)計(structureddesign,SD)是一種面向數(shù)據(jù)流的設(shè)計方法,它可以與SA方法銜接。結(jié)構(gòu)化設(shè)計是基于模塊化、自頂向下細(xì)化、結(jié)構(gòu)化程序設(shè)計等程序設(shè)計技術(shù)基礎(chǔ)上發(fā)展起來的?;舅枷胧菍⑾到y(tǒng)設(shè)計成由相對獨立、功能單一的模塊組成的結(jié)構(gòu)。該方法實施的要點是:首先研究、分析和審查數(shù)據(jù)流圖。從軟件3.3結(jié)構(gòu)化設(shè)計方法2023/7/2736?軟件工程

的需求規(guī)格說明中弄清數(shù)據(jù)流加工的過程,對于發(fā)現(xiàn)的問題及時解決。然后根據(jù)數(shù)據(jù)流圖確定數(shù)據(jù)處理的類型。典型的類型有兩種:變換型和事務(wù)型。針對兩種不同類型分別進行分析處理。由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。利用一些啟發(fā)式原則改進系統(tǒng)初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。修改和補充數(shù)據(jù)字典。制定測試計劃。2023/7/2737?軟件工程在系統(tǒng)結(jié)構(gòu)圖中的模塊傳入模塊

─從下屬模塊取得數(shù)據(jù),經(jīng)過某些處理,再將其傳送給上級模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。傳出模塊

─從上級模塊獲得數(shù)據(jù),進行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。變換模塊─它從上級模塊取得數(shù)據(jù),進行特定的處理,轉(zhuǎn)換成其它形式,再傳送回上級模塊。2023/7/2738?軟件工程協(xié)調(diào)模塊─對所有下屬模塊進行協(xié)調(diào)和管理的模塊。傳入模塊AA傳出模塊DD變換模塊AB協(xié)調(diào)模塊AABB2023/7/2739?軟件工程系統(tǒng)結(jié)構(gòu)圖的基本符號模塊調(diào)用數(shù)據(jù)控制信息轉(zhuǎn)接符號系統(tǒng)結(jié)構(gòu)圖的基本符號選擇(判斷)重復(fù)2023/7/2740?軟件工程模塊調(diào)用示例(a)調(diào)用(b)判斷調(diào)用(c)循環(huán)調(diào)用2023/7/2741?軟件工程數(shù)據(jù):模塊之間傳送的數(shù)據(jù)用帶空心圓的箭頭表示,并在旁邊標(biāo)上數(shù)據(jù)名??刂菩畔ⅲ嚎刂菩畔⑴c數(shù)據(jù)的主要區(qū)別是前者只反映數(shù)據(jù)的某種狀態(tài)。模塊間的數(shù)據(jù)傳遞AB(a)xyz查職工簡歷讀人事文件(b)職工號簡歷數(shù)據(jù)無此職工2023/7/2742?軟件工程數(shù)據(jù)處理的類型

在需求分析階段,面向數(shù)據(jù)流的SA方法產(chǎn)生數(shù)據(jù)流圖DFD。在軟件設(shè)計階段,面向數(shù)據(jù)流的SD方法將DFD轉(zhuǎn)換成程序結(jié)構(gòu)圖。數(shù)據(jù)處理即為在DFD中從系統(tǒng)的輸入數(shù)據(jù)流到系統(tǒng)的輸出數(shù)據(jù)流所經(jīng)歷的一連串連續(xù)變換。數(shù)據(jù)處理的類型分為變換流型與事務(wù)流型。

2023/7/2743?軟件工程變換流

數(shù)據(jù)沿著輸入通路進入系統(tǒng),經(jīng)過一系列數(shù)據(jù)變換,將數(shù)據(jù)的外部形式轉(zhuǎn)換成對應(yīng)的內(nèi)部表示,然后通過變換中心(也稱主加工)處理,再沿著輸出通路轉(zhuǎn)換成外部形式離開系統(tǒng)。具有這種特性的數(shù)據(jù)流稱為變換流。變換流型DFD可以分成:輸入+變換中心(主加工)+輸出輸入數(shù)據(jù)C變換數(shù)據(jù)CD輸出數(shù)據(jù)D2023/7/2744?軟件工程相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換流型系統(tǒng)結(jié)構(gòu)圖由輸入、變換中心和輸出等三部分組成。主模塊B變換成C輸入B輸出CA變換成B輸入AC變換成D輸出DAABBBCCCDD2023/7/2745?軟件工程事務(wù)流

數(shù)據(jù)沿著輸入通路到達(dá)一個事務(wù)中心,事務(wù)中心根據(jù)輸入數(shù)據(jù)(即事務(wù))的類型在若干個動作(稱為活動流)中選擇一個來執(zhí)行,這種數(shù)據(jù)流也稱為事務(wù)流。事務(wù)流有明顯的事務(wù)中心,各活動流以事務(wù)中心為起點呈輻射狀流出。在事務(wù)流型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按所接受的事務(wù)的類型,選擇某一事務(wù)(活動流)處理模塊執(zhí)行。各事務(wù)處理模塊并列。2023/7/2746?軟件工程事務(wù)中心分派模塊輸出結(jié)果事務(wù)1輸入作業(yè)信息事務(wù)2事務(wù)3事務(wù)4作業(yè)信息作業(yè)信息結(jié)果結(jié)果操作1操作2操作3操作4操作5操作6細(xì)節(jié)1細(xì)節(jié)2細(xì)節(jié)3細(xì)節(jié)4細(xì)節(jié)5細(xì)節(jié)62023/7/2747?軟件工程變換分析

變換分析從變換流型的數(shù)據(jù)流圖導(dǎo)出系統(tǒng)結(jié)構(gòu)圖.步驟重畫數(shù)據(jù)流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和變換中心部分;進行一級分解,設(shè)計模塊結(jié)構(gòu)的頂層和第一層模塊;進行二級分解,設(shè)計輸入、輸出和中心變換部分的中、下層模塊。2023/7/2748?軟件工程1.重畫數(shù)據(jù)流圖(平鋪)為了建立系統(tǒng)結(jié)構(gòu),將數(shù)據(jù)流圖平鋪開來,物理輸入畫在左側(cè),物理輸出畫在右側(cè)。如果一個外部實體既是物理輸入又是物理輸出,則兩側(cè)都要畫出它。ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出2023/7/2749?軟件工程2.確定邏輯輸入、邏輯輸出

和變換中心部分變換中心是程序的核心功能,它的輸入是邏輯輸入,它的輸出為邏輯輸出。變換中心ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出邏輯輸入邏輯輸出2023/7/2750?軟件工程3.第一級分解:

設(shè)計模塊結(jié)構(gòu)的頂層和第一層頂層模塊:其功能就是整個系統(tǒng)的功能;輸入控制模塊:接收所有的輸入數(shù)據(jù);變換控制模塊:實現(xiàn)輸入到輸出的變換;輸出控制模塊:產(chǎn)生所有的輸出數(shù)據(jù)。頂層模塊變換控制輸出控制輸入控制2023/7/2751?軟件工程變換中心ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出邏輯輸入邏輯輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE邏輯輸入變換中心邏輯輸出2023/7/2752?軟件工程4.第二級分解:設(shè)計中、下層模塊輸入控制模塊的分解:從變換中心的邊界開始,沿著各輸入通路,把輸入通路上的每個加工映射成輸入控制模塊的一個低層模塊。輸出控制模塊的分解:從變換中心的邊界開始,沿著各輸出通路,把輸出通路上的每個加工映射成輸出控制模塊的一個低層模塊。變換控制模塊的分解:變換控制模塊通常沒有通用的分解方法,應(yīng)根據(jù)數(shù)據(jù)流圖中變換部分的實際情況進行設(shè)計。2023/7/2753?軟件工程輸出HGHABBCEGGHDFCD,EABCDEFGH物理輸入物理輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE輸入BBBCBC輸入AABABA輸出GEG輸出FDFDFFEGGGHH2023/7/2754?軟件工程輸出HGHABBCEGGHDFCD,EABCDEFGH物理輸入物理輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE輸入BBBCBC輸入AABABA輸出GEG輸出FDFDFFEGGGHH2023/7/2755?軟件工程事務(wù)分析事務(wù)分析是從事務(wù)流型數(shù)據(jù)流圖導(dǎo)出系統(tǒng)結(jié)構(gòu)圖。步驟:確定事務(wù)中心和每條活動流的流特性將事務(wù)流型數(shù)據(jù)流圖映射成高層的系統(tǒng)結(jié)構(gòu)進一步分解2023/7/2756?軟件工程1.確定事務(wù)中心和各活動流的流特性

右圖為事務(wù)流型DFD的一般形式。事務(wù)中心(圖中的T): 位于活動流的起點, 活動流從該點成輻射狀流出?;顒恿鳎? 可為變換流 可為事務(wù)流事務(wù)流型的DFD的組成: 輸入流+事務(wù)中心+若干條活動流T輸入流事務(wù)流活動流2023/7/2757?軟件工程右圖為事務(wù)流型DFD的高層結(jié)構(gòu)形式。頂層模塊:其功能就是整個系統(tǒng)的功能。接收模塊:接收輸入數(shù)據(jù)。分派模塊:調(diào)度模塊, 控制下層的所有活動模塊。事務(wù)模塊:對應(yīng)活動流, 是該活動流映射成的。2.將事務(wù)流型DFD映射成

高層系統(tǒng)結(jié)構(gòu)…頂層模塊分派接收事務(wù)1事務(wù)2事務(wù)n2023/7/2758?軟件工程3.進一步分解接收模塊:類同于變換分析中輸入控制模塊的分解?;顒恿髂K:根據(jù)其流特性(變換流或事務(wù)流)進一步采用變換分析或事務(wù)分析進行分解。

2023/7/2759?軟件工程模塊設(shè)計的原則在選擇模塊設(shè)計的次序時,必須對一個模塊的全部直接下屬模塊都設(shè)計完成之后,才能轉(zhuǎn)向另一個模塊的下層模塊的設(shè)計。使用“黑盒”技術(shù):在設(shè)計當(dāng)前模塊時,先把該模塊的所有下層模塊定義成“黑盒”,在設(shè)計中利用它們時暫不考慮其內(nèi)部結(jié)構(gòu)和實現(xiàn)。在這一步定義好的“黑盒”,在下一步就可以對它們進行設(shè)計和加工。最后,全部“黑盒”的內(nèi)容和結(jié)構(gòu)應(yīng)完全被確定。2023/7/2760?軟件工程在設(shè)計下層模塊時,應(yīng)考慮模塊的耦合和內(nèi)聚問題,以提高初始結(jié)構(gòu)圖質(zhì)量。模塊劃分時,一個模塊的直接下屬模塊一般在5個左右。如果直接下屬模塊超過10個,可設(shè)立中間層次。如果出現(xiàn)以下情況,就停止模塊分解:模塊不能再細(xì)分為明顯的子任務(wù);分解成用戶提供的模塊或庫函數(shù);模塊接口是輸入輸出設(shè)備傳送的信息;模塊不宜再分解得過小。2023/7/2761?軟件工程變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計的主要方法。一般,一個大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進行軟件結(jié)構(gòu)設(shè)計。2023/7/2762?軟件工程abdpqrsbac1d分派模塊事務(wù)控制qrs接受通路p2023/7/2763?軟件工程模塊功能完善化一個完整的模塊應(yīng)當(dāng)有以下幾部分:執(zhí)行規(guī)定的功能的部分;出錯處理的部分。當(dāng)模塊不能完成規(guī)定的功能時,必須回送出錯標(biāo)志,出現(xiàn)例外情況的原因。如果需要返回數(shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時,應(yīng)當(dāng)給它的調(diào)用者返回一個狀態(tài)碼。改進系統(tǒng)結(jié)構(gòu)的啟發(fā)式原則2023/7/2764?軟件工程消除重復(fù)功能,改善軟件結(jié)構(gòu)完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類型上不一致。此時可以采取完全合并的方法。局部相似:找出其相同部分,分離出去,重新定義成一個獨立的下一層模塊。還可以與它的上級模塊合并。2023/7/2765?軟件工程R1R2XY相似部分R1R2XYR1+R2XYX+R1Y+R2R1Y+R2X不可取開關(guān)太多2023/7/2766?軟件工程模塊的作用范圍應(yīng)在控制范圍之內(nèi)模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個判定的作用范圍,凡是受這個判定影響的所有模塊都屬于這個判定的作用范圍。如果一個判定的作用范圍包含在這個判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡單的,否則,它的結(jié)構(gòu)是不簡單的。2023/7/2767?軟件工程盡可能減少高扇出結(jié)構(gòu)

如果一個模塊的扇出數(shù)過大,就意味著該模塊過分復(fù)雜,需要協(xié)調(diào)和控制過多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。PPP1P22023/7/2768?軟件工程避免或減少使用病態(tài)聯(lián)接直接病態(tài)聯(lián)接公共數(shù)據(jù)域病態(tài)聯(lián)接通信模塊病態(tài)聯(lián)接ABcommonABTABLEITABABxxxx(a)直接病態(tài)聯(lián)接(b)公共數(shù)據(jù)域病態(tài)聯(lián)接(c)通信模塊病態(tài)聯(lián)接2023/7/2769?軟件工程模塊的大小要適中。設(shè)計功能可預(yù)測的模塊一個功能可預(yù)測的模塊,不論內(nèi)部處理細(xì)節(jié)如何,但對相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。但是,如果模塊內(nèi)部蘊藏有一些特殊的鮮為人知的功能時,這個模塊就可能是不可預(yù)測的。對于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測。2023/7/2770?軟件工程保存當(dāng)前標(biāo)記恢復(fù)“以前”標(biāo)記標(biāo)記?標(biāo)記?功能不可預(yù)測的模塊2023/7/2771?軟件工程在過程設(shè)計階段,要決定各個模塊的實現(xiàn)算法,并精確地表達(dá)這些算法。對每個模塊規(guī)定的功能以及算法的設(shè)計,給出適當(dāng)?shù)乃惴枋觯簣D形工具:程序流程圖,N-S,PAD,HIPO表格工具:判定表語言工具:PDL,HIPO3.5過程設(shè)計(詳細(xì)設(shè)計)2023/7/2772?軟件工程程序流程圖ABABPA1P=1A2=2An=nTSPFFSPT順序型選擇型先判斷重復(fù)型后判斷重復(fù)型多分支選擇型2023/7/2773?軟件工程gabfx1x4x5x6x2x3入口hijcde出口流程圖示例FFFFFTTTTTswitchdo-whiledo-whilewhile-do=1=2=32023/7/2774?軟件工程N-S圖ABPFTABPFTAwhile-doPAdo-whilePAP=1=2…=nA1A2…An順序型選擇型(1)選擇型(2)先判斷重復(fù)型后判斷重復(fù)型多分支選擇型2023/7/2775?軟件工程N-S圖(盒圖)示例do-while

x6abx1TTFFx2x4f=1=2=3gido-while

x5hdecwhile-do

x6j2023/7/2776?軟件工程問題分析圖(PAD)S1SA1A2AnPPP=1=2=nwhile

PSSS1S2S2untilP選擇型順序型多分支選擇型先判斷重復(fù)型后判斷重復(fù)型2023/7/2777?軟件工程PAD示例while-dox3bfgx1ado-whilex6jx4do-whilex5hicdex2=1=2=32023/7/2778?軟件工程PDL(ProgramDesignLanguage)PDL是一種用于描述功能模塊的算法設(shè)計和加工細(xì)節(jié)的語言。稱為設(shè)計程序用語言。它是一種偽碼。偽碼的語法規(guī)則分為“外語法”和“內(nèi)語法”。PDL具有嚴(yán)格的關(guān)鍵字外語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),同時它的表示實際操作和條件的內(nèi)語法可使用自然語言的詞匯。2023/7/2779?軟件工程示例:拼詞檢查程序PROCEDUREspellcheckBEGIN

--*splitdocumentintosinglewords

LOOPgetnextword

addwordtowordlistinsortorder

EXITWHENallwordsprocessed

ENDLOOP

--*lookupwordsindictionary

LOOPgetwordfromwordlist2023/7/2780?軟件工程

IFwordnotindictionaryTHEN

--*displaywordsnotindictionary

displaywordpromptonuserterminal

IFuserresponsesayswordOKTHEN

addwordtogoodwordlist

ELSE

addwordtobadwordlist

ENDIF

ENDIF

EXITWHENallwordsprocessed

ENDLOOP2023/7/2781?軟件工程

--*createanewwordsdictionary

dictionary:= mergedictionaryandgoodwordlistENDspellcheck為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞一律小寫。內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。2023/7/2782?軟件工程判定表決策表用于表示程序的靜態(tài)邏輯在決策表中的條件部分給出所有的兩分支判斷的列表,動作部分給出相應(yīng)的處理要求將程序流程圖中的多分支判斷都改成兩分支判斷2023/7/2783?軟件工程gabfx1x6x7x8x2x5入口hijcde出口FFFFFTTTTTswitchdo-whiledo-whilewhile-dox3x4FFFTTT無多分支判斷結(jié)構(gòu)2023/7/2784?軟件工程2023/7/2785?軟件工程HIPO圖HIPO是1976年由IBM公司提出來的,圖既是在開發(fā)過程中的表達(dá)工具,又是開發(fā)文檔的編制工具。HIPO圖采用功能框圖和PDL來描述程序邏輯,它由兩部分組成:層次圖(H圖)和IPO圖。層次圖給出程序的層次關(guān)系,IPO圖為程序各部分提供具體的工作細(xì)節(jié)。2023/7/2786?軟件工程層次圖(H圖)表明各個功能的隸屬關(guān)系。它是自頂向下逐層分解得到的。最高一層是整個系統(tǒng)的名稱和系統(tǒng)的概括功能說明;第二層把系統(tǒng)功能展開,分成幾個框;第二層功能進一步分解,就得到了第三層、第四層,…,直到最后一層。每個框內(nèi)都應(yīng)有一個名字,用以標(biāo)識它的功能。還應(yīng)有一個編號,以記錄它所在的層次及在該層次的位置。層次圖(H圖)2023/7/2787?軟件工程庫存/銷售系統(tǒng)1.0.0銷售處理1.1.0庫存處理1.2.0計算銷售記錄1.1.1產(chǎn)生銷售報表1.1.2核對顧客賒欠的金額1.1.3檢查庫存數(shù)量1.2.1產(chǎn)生發(fā)貨單、裝運單1.2.2顧客付款收據(jù)1.2.3產(chǎn)生庫存報表1.2.3庫存/銷售系統(tǒng)的層次圖2023/7/2788?軟件工程小說明2023/7/2789?軟件工程IPO圖IPO圖為層次圖中每一功能框詳細(xì)地指明輸入(I)、處理(P)及輸出(O)。通常,IPO圖有固定格式,處理操作部分總是列在中間,輸入和輸出部分分別在其左邊和右邊。由于某些細(xì)節(jié)很難在一張IPO圖中表達(dá)清楚,常常把IPO圖又分為兩部分:概括的稱為概要圖(overviewdiagram)具體的稱為詳細(xì)圖(detaildiagram)。202

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論