版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3.1軟件設(shè)計(jì)的概念軟件設(shè)計(jì)的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),即軟件設(shè)計(jì)是確定系統(tǒng)的物理模型。從技術(shù)觀點(diǎn)來(lái)看,軟件設(shè)計(jì)包括數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、過(guò)程設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)將實(shí)體關(guān)系圖中描述的對(duì)象和關(guān)系,以及數(shù)據(jù)字典中描述的詳細(xì)數(shù)據(jù)內(nèi)容轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)的定義。7/26/20232軟件工程體系結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)各主要成份之間的關(guān)系。接口設(shè)計(jì)根據(jù)數(shù)據(jù)流圖定義軟件內(nèi)部各成份之間、軟件與其它協(xié)同系統(tǒng)之間及軟件與用戶之間的交互機(jī)制。過(guò)程設(shè)計(jì)則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過(guò)程性描述。7/26/20233軟件工程將分析模型轉(zhuǎn)換為設(shè)計(jì)數(shù)據(jù)字典數(shù)據(jù)流圖實(shí)體關(guān)系圖狀態(tài)轉(zhuǎn)換圖加工規(guī)格說(shuō)明控制規(guī)格說(shuō)明數(shù)據(jù)對(duì)象描述過(guò)程設(shè)計(jì)接口設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)7/26/20234軟件工程從工程管理角度來(lái)看,軟件設(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ù)庫(kù)模式。詳細(xì)設(shè)計(jì)確立每個(gè)模塊的實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu)用適當(dāng)方法表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)7/26/20235軟件工程軟件設(shè)計(jì)是后續(xù)開(kāi)發(fā)步驟及軟件維護(hù)工作的基礎(chǔ)。如果沒(méi)有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)。設(shè)計(jì)編碼測(cè)試維護(hù)測(cè)試編碼維護(hù)有軟件設(shè)計(jì)沒(méi)有軟件設(shè)計(jì)7/26/20236軟件工程軟件設(shè)計(jì)既是過(guò)程又是模型。設(shè)計(jì)過(guò)程是一系列的迭代步驟,使設(shè)計(jì)人員能夠描述目標(biāo)系統(tǒng)的各個(gè)側(cè)面。設(shè)計(jì)模型首先描述目標(biāo)系統(tǒng)的整體架構(gòu),然后逐步細(xì)化架構(gòu)得到構(gòu)造每個(gè)細(xì)節(jié)的指導(dǎo)原則,從而得到系統(tǒng)的一系列不同的視圖。良好的設(shè)計(jì)原則可為設(shè)計(jì)過(guò)程導(dǎo)航。衡量設(shè)計(jì)過(guò)程的技術(shù)原則:設(shè)計(jì)必須實(shí)現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。衡量軟件設(shè)計(jì)的原則7/26/20237軟件工程對(duì)于開(kāi)發(fā)者和未來(lái)的維護(hù)者而言,設(shè)計(jì)必須是可讀的、可理解的,使得將來(lái)易于編程、易于測(cè)試、易于維護(hù)。設(shè)計(jì)應(yīng)該給出軟件的全貌,包括從實(shí)現(xiàn)角度可看到的數(shù)據(jù)、功能、行為。衡量設(shè)計(jì)模型的技術(shù)原則設(shè)計(jì)模型應(yīng)該是一個(gè)分層結(jié)構(gòu)。該結(jié)構(gòu):使用可識(shí)別的設(shè)計(jì)模式搭建系統(tǒng)結(jié)構(gòu)。用顯示良好設(shè)計(jì)特征的構(gòu)件構(gòu)成??梢杂醚莼姆绞綄?shí)現(xiàn)。設(shè)計(jì)應(yīng)當(dāng)模塊化。7/26/20238軟件工程設(shè)計(jì)應(yīng)當(dāng)包含數(shù)據(jù)、體系結(jié)構(gòu)、接口和構(gòu)件(模塊)的清晰的視圖。設(shè)計(jì)應(yīng)當(dāng)根據(jù)將要實(shí)現(xiàn)的對(duì)象和數(shù)據(jù)模式導(dǎo)出合適的數(shù)據(jù)結(jié)構(gòu)。設(shè)計(jì)應(yīng)當(dāng)建立具有獨(dú)立功能特征的構(gòu)件。設(shè)計(jì)應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間復(fù)雜連接的接口。設(shè)計(jì)模型應(yīng)當(dāng)通過(guò)使用軟件需求信息所驅(qū)動(dòng)的可重復(fù)的方法導(dǎo)出。Davis的軟件設(shè)計(jì)原則設(shè)計(jì)應(yīng)具有可跟蹤性,能回溯到軟件需求;7/26/20239軟件工程設(shè)計(jì)不必每次都從頭做起,可以復(fù)用已有的設(shè)計(jì)模式和數(shù)據(jù)模式。設(shè)計(jì)應(yīng)當(dāng)縮小軟件與現(xiàn)實(shí)世界中問(wèn)題的“智力距離”,盡量逼近問(wèn)題領(lǐng)域的結(jié)構(gòu);設(shè)計(jì)應(yīng)具有一致性和集成性。整個(gè)系統(tǒng)應(yīng)具有統(tǒng)一的風(fēng)格和格式,具有良好的接口。設(shè)計(jì)結(jié)果應(yīng)能適應(yīng)未來(lái)可能的變更;設(shè)計(jì)不是編碼,編碼也不是設(shè)計(jì)。設(shè)計(jì)模型的抽象級(jí)別比源代碼高。在編碼級(jí)別上唯一的設(shè)計(jì)決策是補(bǔ)充一些實(shí)現(xiàn)細(xì)節(jié)。7/26/202310軟件工程設(shè)計(jì)應(yīng)具有容錯(cuò)性和異常處理能力。對(duì)于異常數(shù)據(jù)、事件、操作條件等能夠平滑處理。在建立設(shè)計(jì)方案時(shí)就應(yīng)能評(píng)估設(shè)計(jì)質(zhì)量,而不是在系統(tǒng)編碼之后。應(yīng)堅(jiān)持設(shè)計(jì)評(píng)審,減少概念性(語(yǔ)義性)的錯(cuò)誤。1) 設(shè)計(jì)應(yīng)遵循抽象化的原則,包含數(shù)據(jù)抽象和過(guò)程抽象。軟件設(shè)計(jì)的主要手段7/26/202311軟件工程過(guò)程抽象是指在軟件設(shè)計(jì)中將處理過(guò)程的實(shí)現(xiàn)細(xì)節(jié)隱藏在數(shù)據(jù)抽象中,可以直接通過(guò)模塊接口使用這些處理操作。數(shù)據(jù)抽象是指采用抽象數(shù)據(jù)類(lèi)型表示數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)封裝,使得使用者可通過(guò)接口使用數(shù)據(jù)而不必關(guān)心數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)。設(shè)計(jì)應(yīng)遵循自頂向下、逐步細(xì)化的原則,建立一個(gè)層次的結(jié)構(gòu)。將軟件體系結(jié)構(gòu)自頂向下,對(duì)過(guò)程細(xì)節(jié)和數(shù)據(jù)細(xì)節(jié)從抽象到具體,逐層細(xì)化,直到用編程語(yǔ)言的語(yǔ)句能夠?qū)崿F(xiàn)為止。7/26/202312軟件工程設(shè)計(jì)應(yīng)當(dāng)遵循模塊化的原則。每個(gè)模塊可獨(dú)立地開(kāi)發(fā)、測(cè)試,最后組裝成完整的程序。其出發(fā)點(diǎn)是本著將一種復(fù)雜問(wèn)題“分而治之”的原則。其目的是使程序的結(jié)構(gòu)清晰,容易閱讀、理解、測(cè)試、修改。Meyer的良好模塊設(shè)計(jì)方法的標(biāo)準(zhǔn)模塊可分解性可將系統(tǒng)按問(wèn)題/子問(wèn)題分解的原則分解成系統(tǒng)的模塊層次結(jié)構(gòu);模塊可組裝性可利用已有的設(shè)計(jì)構(gòu)件組裝成新系統(tǒng),不必一切從頭開(kāi)始。7/26/202313軟件工程模塊可理解性一個(gè)模塊可不參考其他模塊而被理解;模塊連續(xù)性對(duì)軟件需求的一些微小變更只導(dǎo)致對(duì)某個(gè)模塊的修改而整個(gè)系統(tǒng)不用大動(dòng);模塊保護(hù)將模塊內(nèi)出現(xiàn)異常情況的影響范圍限制在模塊內(nèi)部;設(shè)計(jì)應(yīng)遵循信息隱蔽的原則。Patnas主張?jiān)陂_(kāi)發(fā)時(shí),將每個(gè)程序的成分隱藏在模塊內(nèi),定義每一個(gè)模塊時(shí)盡可能少地顯露其內(nèi)部的處理。7/26/202314軟件工程每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對(duì)于其它模塊是隱蔽的,將來(lái)修改軟件時(shí)偶然引入錯(cuò)誤所造成的影響就可以局限在一個(gè)或幾個(gè)模塊內(nèi)部,不致波及到軟件的其它部分。在可預(yù)見(jiàn)將來(lái)可能修改的場(chǎng)合,信息隱蔽可以提高軟件的可修改性、可測(cè)試性和可移植性。7/26/202315軟件工程3.2功能獨(dú)立性功能獨(dú)立性是抽象、模塊化和信息隱蔽的直接產(chǎn)物。如果一個(gè)模塊能夠獨(dú)立于其他模塊被編程、測(cè)試和修改,則該模塊具有功能獨(dú)立性。1978年Myers提出用兩個(gè)準(zhǔn)則來(lái)度量功能獨(dú)立性,即模塊間的耦合和模塊的內(nèi)聚。內(nèi)聚性:內(nèi)聚是一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量。耦合性:耦合是模塊間互相連接的緊密程度的度量,它取決于各個(gè)模塊之間接口的復(fù)雜度、調(diào)用方式以及哪些信息通過(guò)接口。7/26/202316軟件工程非直接
數(shù)據(jù)標(biāo)記控制外部公共內(nèi)容耦合耦合耦合耦合耦合耦合耦合耦合性功能獨(dú)立性模塊間的耦合模塊之間耦合性越強(qiáng),功能獨(dú)立性越差,這樣形成的模塊結(jié)構(gòu)界面不好。7/26/202317軟件工程非直接耦合(NondirectCoupling)兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的。非直接耦合的模塊獨(dú)立性最強(qiáng)。主模塊ABCEFGXYZ7/26/202318軟件工程數(shù)據(jù)耦合(DataCoupling)一個(gè)模塊訪問(wèn)另一個(gè)模塊時(shí),彼此之間是通過(guò)簡(jiǎn)單數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來(lái)交換輸入、輸出信息的。p0(x0,y0)p1(x1,y1)數(shù)據(jù)耦合LINE(x0,y0,x1,y1)7/26/202319軟件工程標(biāo)記耦合(StampCoupling)一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。p0(x0,y0)p1(x1,y1)標(biāo)記耦合LINE(p0,p1)7/26/202320軟件工程控制耦合(ControlCoupling)如果一個(gè)模塊通過(guò) 傳送開(kāi)關(guān)、標(biāo)志、 名字等控制參數(shù), 明顯地控制選擇另 一模塊的功能,就 是控制耦合。FlagFlagf1f2fn7/26/202321軟件工程外部耦合(ExternalCoupling)一組模塊都訪問(wèn)同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)表傳遞該全局變量的信息,則稱之為外部耦合。公共耦合(CommonCoupling)若一組模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境,則它們之間的耦合就稱為公共耦合。公共的數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。7/26/202322軟件工程公共耦合的復(fù)雜程度隨耦合模塊的個(gè)數(shù)增加而顯著增加。若只是兩模塊間有公共數(shù)據(jù)環(huán)境,則公共耦合有兩種情況。松散公共耦合和緊密公共耦合。common公共數(shù)據(jù)區(qū)ABcommon公共數(shù)據(jù)區(qū)AB松散的公共耦合緊密的公共耦合7/26/202323軟件工程如果發(fā)生下列情形,模塊之間就是內(nèi)容耦合:一個(gè)模塊直接訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù);一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部;兩個(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語(yǔ)言中);一個(gè)模塊有多個(gè)入口。內(nèi)容耦合(ContentCoupling)7/26/202324軟件工程
c
AB進(jìn)入另一模塊內(nèi)部模塊代碼重疊ABentry1……entry2……模塊多個(gè)入口7/26/202325軟件工程模塊內(nèi)聚巧合邏輯時(shí)間過(guò)程通信信息功能內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚性功能獨(dú)立性模塊內(nèi)聚性越強(qiáng),功能獨(dú)立性越好,對(duì)于形成的模塊結(jié)構(gòu)有比較好的作用。要求模塊結(jié)構(gòu)達(dá)到高內(nèi)聚,低耦合。7/26/202326軟件工程一個(gè)模塊中各個(gè)部分都是完成某一具體功能必不可少的組成部分,或者說(shuō)該模塊中所有部分都是為了完成一項(xiàng)具體功能而協(xié)同工作,緊密聯(lián)系,不可分割的。則稱該模塊為功能內(nèi)聚模塊。功能內(nèi)聚模塊的功能獨(dú)立性最強(qiáng)。功能內(nèi)聚(FunctionalCohesion)7/26/202327軟件工程這種模塊完成多個(gè)功能,各個(gè)功能相互獨(dú)立但都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一項(xiàng)功能有一個(gè)唯一的入口點(diǎn)。這個(gè)模塊將根據(jù)不同的要求,確定該執(zhí)行哪一個(gè)功能。由于這個(gè)模塊的所有功能都是基于同一個(gè)數(shù)據(jù)結(jié)構(gòu)(符號(hào)表),因此,它是一個(gè)信息內(nèi)聚的模塊。信息內(nèi)聚模塊可以看成是多個(gè)功能內(nèi)聚模塊的組合,并且達(dá)到信息的隱蔽。信息內(nèi)聚(InformationalCohesion)7/26/202328軟件工程初始化插入刪除查找修改符號(hào)表7/26/202329軟件工程如果一個(gè)模塊內(nèi)各功能部分都使用了相同的輸入數(shù)據(jù),或產(chǎn)生了相同的輸出數(shù)據(jù),則稱之為通信內(nèi)聚模塊。通常,通信內(nèi)聚模塊是通過(guò)數(shù)據(jù)流圖來(lái)定義的。模塊內(nèi)各個(gè)功能是緊密相連的。通信內(nèi)聚
(CommunicationCohesion)7/26/202330軟件工程打印檢驗(yàn)結(jié)果讀文件文件計(jì)算A計(jì)算B合并修改文件新文件A結(jié)果B結(jié)果加工記錄7/26/202331軟件工程使用流程圖做為工具設(shè)計(jì)程序時(shí),如果流程圖太大,可以把流程圖中的某一部分劃出組成模塊,就得到過(guò)程內(nèi)聚模塊。例如,把流程圖中的循環(huán)部分、判定部分、計(jì)算部分分成三個(gè)模塊,這三個(gè)模塊都是過(guò)程內(nèi)聚模塊。過(guò)程內(nèi)聚(ProceduralCohesion)7/26/202332軟件工程時(shí)間內(nèi)聚又稱為經(jīng)典內(nèi)聚。這種模塊大多為多功能模塊,但模塊的各個(gè)功能的執(zhí)行與時(shí)間有關(guān),通常要求所有功能必須在同一時(shí)間段內(nèi)執(zhí)行。例如,初始化模塊和終止模塊就是時(shí)間內(nèi)聚模塊。時(shí)間內(nèi)聚(ClassicalCohesion)7/26/202333軟件工程這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的判定參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行哪一種功能。寫(xiě)一個(gè)記錄讀一個(gè)記錄判定調(diào)用模塊被調(diào)用模塊邏輯內(nèi)聚(LogicalCohesion)7/26/202334軟件工程當(dāng)幾個(gè)模塊內(nèi)正好有一段代碼是相同的,將它們抽取出來(lái)形成單獨(dú)的模塊,即巧合內(nèi)聚模塊。這種模塊沒(méi)有獨(dú)立功能,各部分之間沒(méi)有聯(lián)系,或聯(lián)系很松散。巧合內(nèi)聚(CoincidentalCohesion)ABCMSTOREREC()TONREADMASTERFILEADD1TOx……7/26/202335軟件工程結(jié)構(gòu)化設(shè)計(jì)(structureddesign,SD)是一種面向數(shù)據(jù)流的設(shè)計(jì)方法,它可以與SA方法銜接。結(jié)構(gòu)化設(shè)計(jì)是基于模塊化、自頂向下細(xì)化、結(jié)構(gòu)化程序設(shè)計(jì)等程序設(shè)計(jì)技術(shù)基礎(chǔ)上發(fā)展起來(lái)的。基本思想是將系統(tǒng)設(shè)計(jì)成由相對(duì)獨(dú)立、功能單一的模塊組成的結(jié)構(gòu)。該方法實(shí)施的要點(diǎn)是:首先研究、分析和審查數(shù)據(jù)流圖。從軟件3.3結(jié)構(gòu)化設(shè)計(jì)方法7/26/202336軟件工程
的需求規(guī)格說(shuō)明中弄清數(shù)據(jù)流加工的過(guò)程,對(duì)于發(fā)現(xiàn)的問(wèn)題及時(shí)解決。然后根據(jù)數(shù)據(jù)流圖確定數(shù)據(jù)處理的類(lèi)型。典型的類(lèi)型有兩種:變換型和事務(wù)型。針對(duì)兩種不同類(lèi)型分別進(jìn)行分析處理。由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)的初始結(jié)構(gòu)圖。利用一些啟發(fā)式原則改進(jìn)系統(tǒng)初始結(jié)構(gòu)圖,直到得到符合要求的結(jié)構(gòu)圖為止。修改和補(bǔ)充數(shù)據(jù)字典。制定測(cè)試計(jì)劃。7/26/202337軟件工程在系統(tǒng)結(jié)構(gòu)圖中的模塊傳入模塊
─從下屬模塊取得數(shù)據(jù),經(jīng)過(guò)某些處理,再將其傳送給上級(jí)模塊。它傳送的數(shù)據(jù)流叫做邏輯輸入數(shù)據(jù)流。傳出模塊
─從上級(jí)模塊獲得數(shù)據(jù),進(jìn)行某些處理,再將其傳送給下屬模塊。它傳送的數(shù)據(jù)流叫做邏輯輸出數(shù)據(jù)流。變換模塊─它從上級(jí)模塊取得數(shù)據(jù),進(jìn)行特定的處理,轉(zhuǎn)換成其它形式,再傳送回上級(jí)模塊。7/26/202338軟件工程協(xié)調(diào)模塊─對(duì)所有下屬模塊進(jìn)行協(xié)調(diào)和管理的模塊。傳入模塊AA傳出模塊DD變換模塊AB協(xié)調(diào)模塊AABB7/26/202339軟件工程系統(tǒng)結(jié)構(gòu)圖的基本符號(hào)模塊調(diào)用數(shù)據(jù)控制信息轉(zhuǎn)接符號(hào)系統(tǒng)結(jié)構(gòu)圖的基本符號(hào)選擇(判斷)重復(fù)7/26/202340軟件工程模塊調(diào)用示例(a)調(diào)用(b)判斷調(diào)用(c)循環(huán)調(diào)用7/26/202341軟件工程數(shù)據(jù):模塊之間傳送的數(shù)據(jù)用帶空心圓的箭頭表示,并在旁邊標(biāo)上數(shù)據(jù)名??刂菩畔ⅲ嚎刂菩畔⑴c數(shù)據(jù)的主要區(qū)別是前者只反映數(shù)據(jù)的某種狀態(tài)。模塊間的數(shù)據(jù)傳遞AB(a)xyz查職工簡(jiǎn)歷讀人事文件(b)職工號(hào)簡(jiǎn)歷數(shù)據(jù)無(wú)此職工7/26/202342軟件工程數(shù)據(jù)處理的類(lèi)型
在需求分析階段,面向數(shù)據(jù)流的SA方法產(chǎn)生數(shù)據(jù)流圖DFD。在軟件設(shè)計(jì)階段,面向數(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ù)處理的類(lèi)型分為變換流型與事務(wù)流型。
7/26/202343軟件工程變換流
數(shù)據(jù)沿著輸入通路進(jìn)入系統(tǒng),經(jīng)過(guò)一系列數(shù)據(jù)變換,將數(shù)據(jù)的外部形式轉(zhuǎn)換成對(duì)應(yīng)的內(nèi)部表示,然后通過(guò)變換中心(也稱主加工)處理,再沿著輸出通路轉(zhuǎn)換成外部形式離開(kāi)系統(tǒng)。具有這種特性的數(shù)據(jù)流稱為變換流。變換流型DFD可以分成:輸入+變換中心(主加工)+輸出輸入數(shù)據(jù)C變換數(shù)據(jù)CD輸出數(shù)據(jù)D7/26/202344軟件工程相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換流型系統(tǒng)結(jié)構(gòu)圖由輸入、變換中心和輸出等三部分組成。主模塊B變換成C輸入B輸出CA變換成B輸入AC變換成D輸出DAABBBCCCDD7/26/202345軟件工程事務(wù)流
數(shù)據(jù)沿著輸入通路到達(dá)一個(gè)事務(wù)中心,事務(wù)中心根據(jù)輸入數(shù)據(jù)(即事務(wù))的類(lèi)型在若干個(gè)動(dòng)作(稱為活動(dòng)流)中選擇一個(gè)來(lái)執(zhí)行,這種數(shù)據(jù)流也稱為事務(wù)流。事務(wù)流有明顯的事務(wù)中心,各活動(dòng)流以事務(wù)中心為起點(diǎn)呈輻射狀流出。在事務(wù)流型系統(tǒng)結(jié)構(gòu)圖中,事務(wù)中心模塊按所接受的事務(wù)的類(lèi)型,選擇某一事務(wù)(活動(dòng)流)處理模塊執(zhí)行。各事務(wù)處理模塊并列。7/26/202346軟件工程事務(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é)67/26/202347軟件工程變換分析
變換分析從變換流型的數(shù)據(jù)流圖導(dǎo)出系統(tǒng)結(jié)構(gòu)圖.步驟重畫(huà)數(shù)據(jù)流圖;區(qū)分有效(邏輯)輸入、有效(邏輯)輸出和變換中心部分;進(jìn)行一級(jí)分解,設(shè)計(jì)模塊結(jié)構(gòu)的頂層和第一層模塊;進(jìn)行二級(jí)分解,設(shè)計(jì)輸入、輸出和中心變換部分的中、下層模塊。7/26/202348軟件工程1.重畫(huà)數(shù)據(jù)流圖(平鋪)為了建立系統(tǒng)結(jié)構(gòu),將數(shù)據(jù)流圖平鋪開(kāi)來(lái),物理輸入畫(huà)在左側(cè),物理輸出畫(huà)在右側(cè)。如果一個(gè)外部實(shí)體既是物理輸入又是物理輸出,則兩側(cè)都要畫(huà)出它。ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出7/26/202349軟件工程2.確定邏輯輸入、邏輯輸出
和變換中心部分變換中心是程序的核心功能,它的輸入是邏輯輸入,它的輸出為邏輯輸出。變換中心ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出邏輯輸入邏輯輸出7/26/202350軟件工程3.第一級(jí)分解:
設(shè)計(jì)模塊結(jié)構(gòu)的頂層和第一層頂層模塊:其功能就是整個(gè)系統(tǒng)的功能;輸入控制模塊:接收所有的輸入數(shù)據(jù);變換控制模塊:實(shí)現(xiàn)輸入到輸出的變換;輸出控制模塊:產(chǎn)生所有的輸出數(shù)據(jù)。頂層模塊變換控制輸出控制輸入控制7/26/202351軟件工程變換中心ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出邏輯輸入邏輯輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE邏輯輸入變換中心邏輯輸出7/26/202352軟件工程4.第二級(jí)分解:設(shè)計(jì)中、下層模塊輸入控制模塊的分解:從變換中心的邊界開(kāi)始,沿著各輸入通路,把輸入通路上的每個(gè)加工映射成輸入控制模塊的一個(gè)低層模塊。輸出控制模塊的分解:從變換中心的邊界開(kāi)始,沿著各輸出通路,把輸出通路上的每個(gè)加工映射成輸出控制模塊的一個(gè)低層模塊。變換控制模塊的分解:變換控制模塊通常沒(méi)有通用的分解方法,應(yīng)根據(jù)數(shù)據(jù)流圖中變換部分的實(shí)際情況進(jìn)行設(shè)計(jì)。7/26/202353軟件工程輸出HGHABBCEGGHDFCD,EABCDEFGH物理輸入物理輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE輸入BBBCBC輸入AABABA輸出GEG輸出FDFDFFEGGGHH7/26/202354軟件工程輸出HGHABBCEGGHDFCD,EABCDEFGH物理輸入物理輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE輸入BBBCBC輸入AABABA輸出GEG輸出FDFDFFEGGGHH7/26/202355軟件工程事務(wù)分析事務(wù)分析是從事務(wù)流型數(shù)據(jù)流圖導(dǎo)出系統(tǒng)結(jié)構(gòu)圖。步驟:確定事務(wù)中心和每條活動(dòng)流的流特性將事務(wù)流型數(shù)據(jù)流圖映射成高層的系統(tǒng)結(jié)構(gòu)進(jìn)一步分解7/26/202356軟件工程1.確定事務(wù)中心和各活動(dòng)流的流特性
右圖為事務(wù)流型DFD的一般形式。事務(wù)中心(圖中的T): 位于活動(dòng)流的起點(diǎn), 活動(dòng)流從該點(diǎn)成輻射狀流出?;顒?dòng)流: 可為變換流 可為事務(wù)流事務(wù)流型的DFD的組成: 輸入流+事務(wù)中心+若干條活動(dòng)流T輸入流事務(wù)流活動(dòng)流7/26/202357軟件工程右圖為事務(wù)流型DFD的高層結(jié)構(gòu)形式。頂層模塊:其功能就是整個(gè)系統(tǒng)的功能。接收模塊:接收輸入數(shù)據(jù)。分派模塊:調(diào)度模塊, 控制下層的所有活動(dòng)模塊。事務(wù)模塊:對(duì)應(yīng)活動(dòng)流, 是該活動(dòng)流映射成的。2.將事務(wù)流型DFD映射成
高層系統(tǒng)結(jié)構(gòu)…頂層模塊分派接收事務(wù)1事務(wù)2事務(wù)n7/26/202358軟件工程3.進(jìn)一步分解接收模塊:類(lèi)同于變換分析中輸入控制模塊的分解?;顒?dòng)流模塊:根據(jù)其流特性(變換流或事務(wù)流)進(jìn)一步采用變換分析或事務(wù)分析進(jìn)行分解。
7/26/202359軟件工程模塊設(shè)計(jì)的原則在選擇模塊設(shè)計(jì)的次序時(shí),必須對(duì)一個(gè)模塊的全部直接下屬模塊都設(shè)計(jì)完成之后,才能轉(zhuǎn)向另一個(gè)模塊的下層模塊的設(shè)計(jì)。使用“黑盒”技術(shù):在設(shè)計(jì)當(dāng)前模塊時(shí),先把該模塊的所有下層模塊定義成“黑盒”,在設(shè)計(jì)中利用它們時(shí)暫不考慮其內(nèi)部結(jié)構(gòu)和實(shí)現(xiàn)。在這一步定義好的“黑盒”,在下一步就可以對(duì)它們進(jìn)行設(shè)計(jì)和加工。最后,全部“黑盒”的內(nèi)容和結(jié)構(gòu)應(yīng)完全被確定。7/26/202360軟件工程在設(shè)計(jì)下層模塊時(shí),應(yīng)考慮模塊的耦合和內(nèi)聚問(wèn)題,以提高初始結(jié)構(gòu)圖質(zhì)量。模塊劃分時(shí),一個(gè)模塊的直接下屬模塊一般在5個(gè)左右。如果直接下屬模塊超過(guò)10個(gè),可設(shè)立中間層次。如果出現(xiàn)以下情況,就停止模塊分解:模塊不能再細(xì)分為明顯的子任務(wù);分解成用戶提供的模塊或庫(kù)函數(shù);模塊接口是輸入輸出設(shè)備傳送的信息;模塊不宜再分解得過(guò)小。7/26/202361軟件工程變換分析是軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)的主要方法。一般,一個(gè)大型的軟件系統(tǒng)是變換型結(jié)構(gòu)和事務(wù)型結(jié)構(gòu)的混合結(jié)構(gòu)。所以,我們通常利用以變換分析為主,事務(wù)分析為輔的方式進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)。7/26/202362軟件工程abdpqrsbac1d分派模塊事務(wù)控制qrs接受通路p7/26/202363軟件工程模塊功能完善化一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部分:執(zhí)行規(guī)定的功能的部分;出錯(cuò)處理的部分。當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,出現(xiàn)例外情況的原因。如果需要返回?cái)?shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時(shí),應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)狀態(tài)碼。改進(jìn)系統(tǒng)結(jié)構(gòu)的啟發(fā)式原則7/26/202364軟件工程消除重復(fù)功能,改善軟件結(jié)構(gòu)完全相似:在結(jié)構(gòu)上完全相似,可能只是在數(shù)據(jù)類(lèi)型上不一致。此時(shí)可以采取完全合并的方法。局部相似:找出其相同部分,分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊。還可以與它的上級(jí)模塊合并。7/26/202365軟件工程R1R2XY相似部分R1R2XYR1+R2XYX+R1Y+R2R1Y+R2X不可取開(kāi)關(guān)太多7/26/202366軟件工程模塊的作用范圍應(yīng)在控制范圍之內(nèi)模塊的控制范圍包括它本身及其所有的從屬模塊。模塊的作用范圍是指模塊內(nèi)一個(gè)判定的作用范圍,凡是受這個(gè)判定影響的所有模塊都屬于這個(gè)判定的作用范圍。如果一個(gè)判定的作用范圍包含在這個(gè)判定所在模塊的控制范圍之內(nèi),則這種結(jié)構(gòu)是簡(jiǎn)單的,否則,它的結(jié)構(gòu)是不簡(jiǎn)單的。7/26/202367軟件工程盡可能減少高扇出結(jié)構(gòu)
如果一個(gè)模塊的扇出數(shù)過(guò)大,就意味著該模塊過(guò)分復(fù)雜,需要協(xié)調(diào)和控制過(guò)多的下屬模塊。應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊。PPP1P27/26/202368軟件工程避免或減少使用病態(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)接7/26/202369軟件工程模塊的大小要適中。設(shè)計(jì)功能可預(yù)測(cè)的模塊一個(gè)功能可預(yù)測(cè)的模塊,不論內(nèi)部處理細(xì)節(jié)如何,但對(duì)相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果。但是,如果模塊內(nèi)部蘊(yùn)藏有一些特殊的鮮為人知的功能時(shí),這個(gè)模塊就可能是不可預(yù)測(cè)的。對(duì)于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測(cè)。7/26/202370軟件工程保存當(dāng)前標(biāo)記恢復(fù)“以前”標(biāo)記標(biāo)記?標(biāo)記?功能不可預(yù)測(cè)的模塊7/26/202371軟件工程在過(guò)程設(shè)計(jì)階段,要決定各個(gè)模塊的實(shí)現(xiàn)算法,并精確地表達(dá)這些算法。對(duì)每個(gè)模塊規(guī)定的功能以及算法的設(shè)計(jì),給出適當(dāng)?shù)乃惴枋觯簣D形工具:程序流程圖,N-S,PAD,HIPO表格工具:判定表語(yǔ)言工具:PDL,HIPO3.5過(guò)程設(shè)計(jì)(詳細(xì)設(shè)計(jì))7/26/202372軟件工程程序流程圖ABABPA1P=1A2=2An=nTSPFFSPT順序型選擇型先判斷重復(fù)型后判斷重復(fù)型多分支選擇型7/26/202373軟件工程gabfx1x4x5x6x2x3入口hijcde出口流程圖示例FFFFFTTTTTswitchdo-whiledo-whilewhile-do=1=2=37/26/202374軟件工程N(yùn)-S圖ABPFTABPFTAwhile-doPAdo-whilePAP=1=2…=nA1A2…An順序型選擇型(1)選擇型(2)先判斷重復(fù)型后判斷重復(fù)型多分支選擇型7/26/202375軟件工程N(yùn)-S圖(盒圖)示例do-while
x6abx1TTFFx2x4f=1=2=3gido-while
x5hdecwhile-do
x6j7/26/202376軟件工程問(wèn)題分析圖(PAD)S1SA1A2AnPPP=1=2=nwhile
PSSS1S2S2untilP選擇型順序型多分支選擇型先判斷重復(fù)型后判斷重復(fù)型7/26/202377軟件工程PAD示例while-dox3bfgx1ado-whilex6jx4do-whilex5hicdex2=1=2=37/26/202378軟件工程PDL(ProgramDesignLanguage)PDL是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語(yǔ)言。稱為設(shè)計(jì)程序用語(yǔ)言。它是一種偽碼。偽碼的語(yǔ)法規(guī)則分為“外語(yǔ)法”和“內(nèi)語(yǔ)法”。PDL具有嚴(yán)格的關(guān)鍵字外語(yǔ)法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),同時(shí)它的表示實(shí)際操作和條件的內(nèi)語(yǔ)法可使用自然語(yǔ)言的詞匯。7/26/202379軟件工程示例:拼詞檢查程序PROCEDUREspellcheckBEGIN
--*splitdocumentintosinglewords
LOOPgetnextword
addwordtowordlistinsortorder
EXITWHENallwordsprocessed
ENDLOOP
--*lookupwordsindictionary
LOOPgetwordfromwordlist7/26/202380軟件工程
IFwordnotindictionaryTHEN
--*displaywordsnotindictionary
displaywordpromptonuserterminal
IFuserresponsesayswordOKTHEN
addwordtogoodwordlist
ELSE
addwordtobadwordlist
ENDIF
ENDIF
EXITWHENallwordsprocessed
ENDLOOP7/26/202381軟件工程
--*createanewwordsdictionary
dictionary:= mergedictionaryandgoodwordlistENDspellcheck為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫(xiě),其它單詞一律小寫(xiě)。內(nèi)語(yǔ)法使用自然語(yǔ)言來(lái)描述處理特性。內(nèi)語(yǔ)法比較靈活,只要寫(xiě)清楚就可以,不必考慮語(yǔ)法錯(cuò),以利于人們可把主要精力放在描述算法的邏輯上。7/26/202382軟件工程判定表決策表用于表示程序的靜態(tài)邏輯在決策表中的條件部分給出所有的兩分支判斷的列表,動(dòng)作部分給出相應(yīng)的處理要求將程序流程圖中的多分支判斷都改成兩分支判斷7/26/202383軟件工程gabfx1x6x7x8x2x5入口hijcde出口FFFFFTTTTTswitchdo-whiledo-whilewhile-dox3x4FFFTTT無(wú)多分支判斷結(jié)構(gòu)7/26/202384軟件工程1234567891011121314x1TTTTTFFFFFFFFFx2-----TTTFFFFFFx3--------TTFFFFx4----------TTFFx5-----TFF------x6TTTFF---------x7TFF-----------x8-TFTF-TFTFTFTFaYYYYYYYYYYYYYYbYYYYYYYYYYYYYYc-----Y--------d--------YY----e----------YY--fYYYYY---------g---YY---------h(huán)---YY---------iYYY-----------j--Y-Y--Y-Y-Y-Y7/26/202385軟件工程HIPO圖HIPO是1976年由IBM公司提出來(lái)的,圖既是在開(kāi)發(fā)過(guò)程中的表達(dá)工具,又是開(kāi)發(fā)文檔的編制工具。HIPO圖采用功能框圖和PDL來(lái)描述程序邏輯,它由兩部分組成:層次圖(H圖)和IPO圖。層次圖給出程序的層次關(guān)系,IPO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)短信應(yīng)用服務(wù)協(xié)議書(shū)模板
- 公寓開(kāi)發(fā)商租賃合同
- 店面租賃合同協(xié)議書(shū)范例
- 醫(yī)療技術(shù)合作合同范例
- 勞動(dòng)續(xù)簽合同的注意事項(xiàng)
- 域名及主機(jī)協(xié)議書(shū)范本
- 房屋買(mǎi)賣(mài)委托代理合同
- 企業(yè)間還款協(xié)議書(shū)樣本
- 協(xié)議供貨招標(biāo)文件2024年
- 用人單位設(shè)置霸王條款的法律風(fēng)險(xiǎn)
- 山東科學(xué)技術(shù)出版社五年級(jí)上冊(cè)《綜合實(shí)踐活動(dòng)》教案
- 外貿(mào)開(kāi)發(fā)信PPT課件講義
- 干部人事檔案專項(xiàng)審核認(rèn)定表填寫(xiě)模板
- STEMI溶栓流程圖(第一版)
- 復(fù)變函數(shù)與積分變換全套精美課件
- 人性化設(shè)計(jì)產(chǎn)品案例課件
- 中等職業(yè)學(xué)校人才培養(yǎng)工作狀態(tài)數(shù)據(jù)采集與管理平臺(tái)數(shù)據(jù)結(jié)構(gòu)
- 特種設(shè)備安全管理人員、作業(yè)人員管理和培訓(xùn)制度
- 新蘇教版2022-2023五年級(jí)科學(xué)上冊(cè)第19課《我們的大腦》課件
- 湖北省黃石市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 裝飾、裝修安全教育培訓(xùn)試卷+答案
評(píng)論
0/150
提交評(píng)論