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

下載本文檔

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

文檔簡介

軟件工程原理

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

數(shù)據(jù)標(biāo)記控制外部公共內(nèi)容耦合耦合耦合耦合耦合耦合耦合耦合性功能獨(dú)立性模塊間的耦合合模塊之間耦合合性越強(qiáng),功功能獨(dú)立性越越差,這樣形形成的模塊結(jié)結(jié)構(gòu)界面不好好。12/31/202217非直接耦合合(NondirectCoupling)兩個(gè)模塊之之間沒有直直接關(guān)系,,它們之間間的聯(lián)系完完全是通過過主模塊的的控制和調(diào)調(diào)用來實(shí)現(xiàn)現(xiàn)的。非直接耦合合的模塊獨(dú)獨(dú)立性最強(qiáng)強(qiáng)。主模塊ABCEFGXYZ12/31/202218數(shù)據(jù)耦合(DataCoupling)一個(gè)模塊訪訪問另一個(gè)個(gè)模塊時(shí),,彼此之間間是通過簡簡單數(shù)據(jù)參參數(shù)(不不是控制參參數(shù)、公共共數(shù)據(jù)結(jié)構(gòu)構(gòu)或外部變變量)來來交換輸輸入、輸出出信息的。。p0(x0,y0)p1(x1,y1)數(shù)據(jù)耦合LINE(x0,y0,x1,y1)12/31/202219標(biāo)記耦合(StampCoupling)一組模塊通通過參數(shù)表表傳遞記錄錄信息,就就是標(biāo)記耦耦合。這個(gè)個(gè)記錄是某某一數(shù)據(jù)結(jié)結(jié)構(gòu)的子結(jié)結(jié)構(gòu),而不不是簡單變變量。p0(x0,y0)p1(x1,y1)標(biāo)記耦合LINE(p0,p1)12/31/202220控制耦合(ControlCoupling)如果一個(gè)模模塊通過傳送開關(guān)、、標(biāo)志、名字等控制制參數(shù),明顯地控制制選擇另一模塊的功功能,就是控制耦合合。FlagFlagf1f2fn12/31/202221外部耦合((ExternalCoupling)一組模塊都都訪問同一一全局簡單單變量而不不是同一全全局?jǐn)?shù)據(jù)結(jié)結(jié)構(gòu),而且且不是通過過參數(shù)表傳傳遞該全局局變量的信信息,則稱稱之為外部部耦合。公共耦合((CommonCoupling))若一組模塊塊都訪問同同一個(gè)公共共數(shù)據(jù)環(huán)境境,則它們們之間的耦耦合就稱為為公共耦合合。公共的的數(shù)據(jù)環(huán)境境可以是全全局?jǐn)?shù)據(jù)結(jié)結(jié)構(gòu)、共享享的通信區(qū)區(qū)、內(nèi)存的的公共覆蓋蓋區(qū)等。12/31/202222公共共耦耦合合的的復(fù)復(fù)雜雜程程度度隨隨耦耦合合模模塊塊的的個(gè)個(gè)數(shù)數(shù)增增加加而而顯顯著著增增加加。。若若只只是是兩兩模模塊塊間間有有公公共共數(shù)數(shù)據(jù)據(jù)環(huán)環(huán)境境,,則則公公共共耦耦合合有有兩兩種種情情況況。。松松散散公公共共耦耦合合和和緊緊密密公公共共耦耦合合。。common公共數(shù)據(jù)區(qū)ABcommon公共數(shù)據(jù)區(qū)AB松散散的的公公共共耦耦合合緊密密的的公公共共耦耦合合12/31/202223如果果發(fā)發(fā)生生下下列列情情形形,,模模塊塊之之間間就就是是內(nèi)內(nèi)容容耦耦合合:一個(gè)個(gè)模模塊塊直直接接訪訪問問另另一一個(gè)個(gè)模模塊塊的的內(nèi)內(nèi)部部數(shù)數(shù)據(jù)據(jù);一個(gè)個(gè)模模塊塊不不通通過過正正常常入入口口轉(zhuǎn)轉(zhuǎn)到到另另一一模模塊塊內(nèi)內(nèi)部部;兩個(gè)模塊塊有一部部分程序序代碼重重迭(只只可能出出現(xiàn)在匯匯編語言言中);一個(gè)模塊塊有多個(gè)個(gè)入口。。內(nèi)容耦合合(ContentCoupling)12/31/202224cAB進(jìn)入另一一模塊內(nèi)內(nèi)部模塊代碼碼重疊ABentry1……entry2……模塊多個(gè)個(gè)入口12/31/202225模塊內(nèi)聚聚巧合邏輯時(shí)間過程通信信息功能內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚內(nèi)聚性功能獨(dú)立性模塊內(nèi)聚聚性越強(qiáng)強(qiáng),功能能獨(dú)立性性越好,,對于形形成的模模塊結(jié)構(gòu)構(gòu)有比較較好的作作用。要求模塊塊結(jié)構(gòu)達(dá)達(dá)到高內(nèi)內(nèi)聚,低低耦合。。12/31/202226一個(gè)模模塊中中各個(gè)個(gè)部分分都是是完成成某一一具體體功能能必不不可少少的組組成部部分,,或者者說該該模塊塊中所所有部部分都都是為為了完完成一一項(xiàng)具具體功功能而而協(xié)同同工作作,緊緊密聯(lián)聯(lián)系,,不可可分割割的。。則稱稱該模模塊為為功能能內(nèi)聚聚模塊塊。功能內(nèi)內(nèi)聚模模塊的的功能能獨(dú)立立性最最強(qiáng)。。功能內(nèi)內(nèi)聚(FunctionalCohesion)12/31/202227這種模模塊完完成多多個(gè)功功能,,各個(gè)個(gè)功能能相互互獨(dú)立立但都都在同同一數(shù)數(shù)據(jù)結(jié)結(jié)構(gòu)上上操作作,每每一項(xiàng)項(xiàng)功能能有一一個(gè)唯唯一的的入口口點(diǎn)。。這個(gè)個(gè)模塊塊將根根據(jù)不不同的的要求求,確確定該該執(zhí)行行哪一一個(gè)功功能。。由于這這個(gè)模模塊的的所有有功能能都是是基于于同一一個(gè)數(shù)數(shù)據(jù)結(jié)結(jié)構(gòu)((符號號表)),因因此,,它是是一個(gè)個(gè)信息息內(nèi)聚聚的模模塊。。信息內(nèi)內(nèi)聚模模塊可可以看看成是是多個(gè)個(gè)功能能內(nèi)聚聚模塊塊的組組合,,并且且達(dá)到到信息息的隱隱蔽。。信息內(nèi)內(nèi)聚(InformationalCohesion)12/31/202228初始化化插入刪除查找修改符號號表表12/31/202229如果一一個(gè)模模塊內(nèi)內(nèi)各功功能部部分都都使用用了相相同的的輸入入數(shù)據(jù)據(jù),或或產(chǎn)生生了相相同的的輸出出數(shù)據(jù)據(jù),則則稱之之為通通信內(nèi)內(nèi)聚模模塊。。通常常,通通信內(nèi)內(nèi)聚模模塊是是通過過數(shù)據(jù)據(jù)流圖圖來定定義的的。模塊內(nèi)各個(gè)個(gè)功能是緊緊密相連的的。通信內(nèi)聚(CommunicationCohesion)12/31/202230打印檢驗(yàn)結(jié)果讀文件文件計(jì)算A計(jì)算B合并修改文件新文件A結(jié)果B結(jié)果加工記錄12/31/202231使用流程圖圖做為工具具設(shè)計(jì)程序序時(shí),如果果流程圖太太大,可以以把流程圖圖中的某一一部分劃出出組成模塊塊,就得到到過程內(nèi)聚聚模塊。例如,把流流程圖中的的循環(huán)部分分、判定部部分、計(jì)算算部分分成成三個(gè)模塊塊,這三個(gè)個(gè)模塊都是是過程內(nèi)聚聚模塊。過程內(nèi)聚((ProceduralCohesion))12/31/202232時(shí)間內(nèi)聚又又稱為經(jīng)典典內(nèi)聚。這這種模塊大大多為多功功能模塊,,但模塊的的各個(gè)功能能的執(zhí)行與與時(shí)間有關(guān)關(guān),通常要要求所有功功能必須在在同一時(shí)間間段內(nèi)執(zhí)行行。例如,初始始化模塊和和終止模塊塊就是時(shí)間間內(nèi)聚模塊塊。時(shí)間內(nèi)聚((ClassicalCohesion)12/31/202233這種種模模塊塊把把幾幾種種相相關(guān)關(guān)的的功功能能組組合合在在一一起起,,每每次次被被調(diào)調(diào)用用時(shí)時(shí),,由由傳傳送送給給模模塊塊的的判判定定參參數(shù)數(shù)來來確確定定該該模模塊塊應(yīng)應(yīng)執(zhí)執(zhí)行行哪哪一一種種功功能能。。寫一個(gè)記錄讀一個(gè)記錄判定調(diào)用模塊被調(diào)用模塊邏輯輯內(nèi)內(nèi)聚聚((LogicalCohesion))12/31/202234當(dāng)幾幾個(gè)個(gè)模模塊塊內(nèi)內(nèi)正正好好有有一一段段代代碼碼是是相相同同的的,,將將它它們們抽抽取取出出來來形形成成單單獨(dú)獨(dú)的的模模塊塊,,即即巧巧合合內(nèi)內(nèi)聚聚模模塊塊。。這這種種模模塊塊沒沒有有獨(dú)獨(dú)立立功功能能,,各各部部分分之之間間沒沒有有聯(lián)聯(lián)系系,,或或聯(lián)聯(lián)系系很很松松散散。。巧合合內(nèi)內(nèi)聚聚((CoincidentalCohesion))ABCMSTOREREC()TONREADMASTERFILEADD1TOx……12/31/202235結(jié)構(gòu)構(gòu)化化設(shè)設(shè)計(jì)計(jì)((structureddesign,,SD))是是一一種種面面向向數(shù)數(shù)據(jù)據(jù)流流的的設(shè)設(shè)計(jì)計(jì)方方法法,,它它可可以以與與SA方方法法銜銜接接。。結(jié)構(gòu)構(gòu)化化設(shè)設(shè)計(jì)計(jì)是是基基于于模模塊塊化化、、自自頂頂向向下下細(xì)細(xì)化化、、結(jié)結(jié)構(gòu)構(gòu)化化程程序序設(shè)設(shè)計(jì)計(jì)等等程程序序設(shè)設(shè)計(jì)計(jì)技技術(shù)術(shù)基基礎(chǔ)礎(chǔ)上上發(fā)發(fā)展展起起來來的的。。基基本本思思想想是是將將系系統(tǒng)統(tǒng)設(shè)設(shè)計(jì)計(jì)成成由由相相對對獨(dú)獨(dú)立立、、功功能能單單一一的的模模塊塊組組成成的的結(jié)結(jié)構(gòu)構(gòu)。。該方方法法實(shí)實(shí)施施的的要要點(diǎn)點(diǎn)是是::首先先研究究、分析析和和審審查查數(shù)數(shù)據(jù)據(jù)流流圖圖。從從軟軟件件3.3結(jié)結(jié)構(gòu)構(gòu)化化設(shè)設(shè)計(jì)計(jì)方方法法12/31/202236的需求規(guī)格說說明中弄清數(shù)數(shù)據(jù)流加工的的過程,對于于發(fā)現(xiàn)的問題題及時(shí)解決。。然后根據(jù)數(shù)據(jù)流圖圖確定數(shù)據(jù)處處理的類型。典型的類型型有兩種:變變換型和事務(wù)務(wù)型。針對兩兩種不同類型分別別進(jìn)行分析處處理。由數(shù)據(jù)流圖推推導(dǎo)出系統(tǒng)的初始始結(jié)構(gòu)圖。利用一些啟發(fā)發(fā)式原則改進(jìn)系統(tǒng)初始始結(jié)構(gòu)圖,直到得到符符合要求的結(jié)結(jié)構(gòu)圖為止。。修改和補(bǔ)充數(shù)數(shù)據(jù)字典。制定測試計(jì)劃。12/31/202237在系統(tǒng)結(jié)構(gòu)圖圖中的模塊傳入模塊─從下屬模模塊取得數(shù)據(jù)據(jù),經(jīng)過某些些處理,再再將其傳送給給上級模塊。。它傳送的數(shù)數(shù)據(jù)流叫做邏邏輯輸入數(shù)據(jù)據(jù)流。傳出模塊─從上級模模塊獲得數(shù)據(jù)據(jù),進(jìn)行某些些處理,再將將其傳送給下下屬模塊。它它傳送的數(shù)據(jù)據(jù)流叫做邏輯輯輸出數(shù)據(jù)流流。變換模塊─它從上級級模塊取得數(shù)數(shù)據(jù),進(jìn)行特特定的處理,,轉(zhuǎn)換成其它它形式,再再傳送回上級級模塊。12/31/202238協(xié)調(diào)模塊─對所有下下屬模塊進(jìn)行行協(xié)調(diào)和管理理的模塊。傳入模塊AA傳出模塊DD變換模塊AB協(xié)調(diào)模塊AABB12/31/202239系統(tǒng)結(jié)結(jié)構(gòu)圖圖的基基本符符號模塊調(diào)用數(shù)據(jù)控制信息轉(zhuǎn)接符號系統(tǒng)結(jié)構(gòu)圖的基本符號選擇(判斷)重復(fù)12/31/202240模塊調(diào)用示例(a)調(diào)用(b)判斷調(diào)用(c)循環(huán)調(diào)用12/31/202241數(shù)據(jù):模塊塊之間間傳送送的數(shù)數(shù)據(jù)用用帶空心心圓的的箭頭頭表示,,并在在旁邊邊標(biāo)上上數(shù)據(jù)據(jù)名。??刂菩判畔ⅲ嚎刂浦菩畔⑾⑴c數(shù)數(shù)據(jù)的的主要要區(qū)別別是前前者只只反映映數(shù)據(jù)據(jù)的某某種狀狀態(tài)。。模塊間的數(shù)據(jù)傳遞AB(a)xyz查職工簡歷讀人事文件(b)職工號簡歷數(shù)據(jù)無此職工12/31/202242數(shù)據(jù)處處理的的類型型在需求求分析析階段段,面面向數(shù)數(shù)據(jù)流流的SA方方法產(chǎn)產(chǎn)生數(shù)數(shù)據(jù)流流圖DFD。在軟件件設(shè)計(jì)計(jì)階段段,面面向數(shù)數(shù)據(jù)流流的SD方方法將將DFD轉(zhuǎn)轉(zhuǎn)換成成程序序結(jié)構(gòu)構(gòu)圖。。數(shù)據(jù)處處理即即為在在DFD中中從系系統(tǒng)的的輸入入數(shù)據(jù)據(jù)流到到系統(tǒng)統(tǒng)的輸輸出數(shù)數(shù)據(jù)流流所經(jīng)經(jīng)歷的的一連連串連連續(xù)變變換。。數(shù)據(jù)處處理的的類型型分為為變換換流型型與事事務(wù)流流型。。12/31/202243變換流流數(shù)據(jù)沿沿著輸入通通路進(jìn)入系系統(tǒng),,經(jīng)過過一系系列數(shù)數(shù)據(jù)變變換,,將數(shù)數(shù)據(jù)的的外部部形式式轉(zhuǎn)換換成對對應(yīng)的的內(nèi)部部表示示,然然后通通過變換中中心(也稱稱主加加工))處理理,再再沿著著輸出通通路轉(zhuǎn)換成成外部部形式式離開開系統(tǒng)統(tǒng)。具具有這這種特特性的的數(shù)據(jù)據(jù)流稱稱為變變換流流。變換流流型DFD可以以分成成:輸入++變換換中心心(主主加工工)++輸出出輸入數(shù)據(jù)C變換數(shù)據(jù)CD輸出數(shù)據(jù)D12/31/202244相應(yīng)應(yīng)于于取取得得數(shù)數(shù)據(jù)據(jù)、、變變換換數(shù)數(shù)據(jù)據(jù)、、給給出出數(shù)數(shù)據(jù)據(jù),,變變換換流流型型系系統(tǒng)統(tǒng)結(jié)結(jié)構(gòu)構(gòu)圖圖由由輸輸入入、、變變換換中中心心和和輸輸出出等等三三部部分分組組成成。。主模塊B變換成C輸入B輸出CA變換成B輸入AC變換成D輸出DAABBBCCCDD12/31/202245事務(wù)務(wù)流流數(shù)據(jù)據(jù)沿沿著著輸入入通通路路到達(dá)達(dá)一一個(gè)個(gè)事務(wù)務(wù)中中心心,事事務(wù)務(wù)中中心心根根據(jù)據(jù)輸輸入入數(shù)數(shù)據(jù)據(jù)((即即事事務(wù)務(wù)))的的類類型型在在若若干干個(gè)個(gè)動動作作((稱稱為為活活動動流流))中中選選擇擇一一個(gè)個(gè)來來執(zhí)執(zhí)行行,,這這種種數(shù)數(shù)據(jù)據(jù)流流也也稱稱為為事事務(wù)務(wù)流流。。事務(wù)務(wù)流流有有明明顯顯的的事事務(wù)務(wù)中中心心,,各各活活動動流流以以事事務(wù)務(wù)中中心心為為起起點(diǎn)點(diǎn)呈呈輻輻射射狀狀流流出出。。在事事務(wù)務(wù)流流型型系系統(tǒng)統(tǒng)結(jié)結(jié)構(gòu)構(gòu)圖圖中中,,事事務(wù)務(wù)中中心心模模塊塊按按所所接接受受的的事事務(wù)務(wù)的的類類型型,,選選擇擇某某一一事事務(wù)務(wù)((活活動動流流))處處理理模模塊塊執(zhí)執(zhí)行行。。各各事事務(wù)務(wù)處處理理模模塊塊并并列列。。12/31/202246事務(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é)612/31/202247變換換分分析析變換換分分析析從從變變換換流流型型的的數(shù)數(shù)據(jù)據(jù)流流圖圖導(dǎo)導(dǎo)出出系系統(tǒng)統(tǒng)結(jié)結(jié)構(gòu)構(gòu)圖圖.步驟重畫數(shù)據(jù)據(jù)流圖;;區(qū)分有效效(邏輯輯)輸入入、有效效(邏輯輯)輸出出和變換換中心部部分;進(jìn)行一級級分解,,設(shè)計(jì)模模塊結(jié)構(gòu)構(gòu)的頂層層和第一一層模塊塊;進(jìn)行二級級分解,,設(shè)計(jì)輸輸入、輸輸出和中中心變換換部分的中中、下層層模塊。。12/31/2022481.重重畫數(shù)據(jù)據(jù)流圖((平鋪))為了建立立系統(tǒng)結(jié)結(jié)構(gòu),將將數(shù)據(jù)流流圖平鋪鋪開來,,物理輸輸入畫在在左側(cè),,物理輸輸出畫在在右側(cè)。。如果一個(gè)個(gè)外部實(shí)實(shí)體既是是物理輸輸入又是是物理輸輸出,則則兩側(cè)都都要畫出出它。ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出12/31/2022492.確確定邏輯輯輸入、、邏輯輸輸出和和變換中中心部分分變換中心心是程序序的核心心功能,,它的輸輸入是邏邏輯輸入入,它的的輸出為為邏輯輸輸出。變換中心ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出邏輯輸入邏輯輸出12/31/2022503.第一一級分解::

設(shè)計(jì)模模塊結(jié)構(gòu)的的頂層和第第一層頂層模塊::其功能就就是整個(gè)系系統(tǒng)的功能能;輸入控制模模塊:接收收所有的輸輸入數(shù)據(jù);;變換控制模模塊:實(shí)現(xiàn)現(xiàn)輸入到輸輸出的變換換;輸出控制模模塊:產(chǎn)生生所有的輸輸出數(shù)據(jù)。。頂層模塊變換控制輸出控制輸入控制12/31/202251變換中心ABBCEGGHDFCDEABCDEFGH物理輸入物理輸出邏輯輸入邏輯輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE邏輯輸入變換中心邏輯輸出12/31/2022524.第二二級分解::設(shè)計(jì)中、、下層模塊塊輸入控制模模塊的分解解:從變換換中心的邊邊界開始,,沿著各輸輸入通路,,把輸入通通路上的每每個(gè)加工映映射成輸入入控制模塊塊的一個(gè)低低層模塊。。輸出控制模模塊的分解解:從變換換中心的邊邊界開始,,沿著各輸輸出通路,,把輸出通通路上的每每個(gè)加工映映射成輸出出控制模塊塊的一個(gè)低低層模塊。。變換控制模模塊的分解解:變換控控制模塊通通常沒有通通用的分解解方法,應(yīng)應(yīng)根據(jù)數(shù)據(jù)據(jù)流圖中變變換部分的的實(shí)際情況況進(jìn)行設(shè)計(jì)計(jì)。12/31/202253輸出HGHABBCEGGHDFCD,EABCDEFGH物理輸入物理輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE輸入BBBCBC輸入AABABA輸出GEG輸出FDFDFFEGGGHH12/31/202254輸出HGHABBCEGGHDFCD,EABCDEFGH物理輸入物理輸出主模塊CD,E輸入C輸出D輸出ECCD,EDE輸入BBBCBC輸入AABABA輸出GEG輸出FDFDFFEGGGHH12/31/202255事務(wù)分析事務(wù)分析是是從事務(wù)流流型數(shù)據(jù)流流圖導(dǎo)出系系統(tǒng)結(jié)構(gòu)圖圖。步驟:確定事務(wù)中中心和每條條活動流的的流特性將事務(wù)流型型數(shù)據(jù)流圖圖映射成高高層的系統(tǒng)統(tǒng)結(jié)構(gòu)進(jìn)一步分解解12/31/2022561.確定定事務(wù)中心心和各活動動流的流特特性右圖為事務(wù)務(wù)流型DFD的一般般形式。事務(wù)中心(圖中的T):位于活動流流的起點(diǎn),,活動流從該該點(diǎn)成輻射射狀流出。。活動流:可為變換流流可為事務(wù)流流事務(wù)流型的的DFD的的組成:輸入流+事事務(wù)中心++若干條活活動流T輸入流事務(wù)流活動流12/31/202257右圖為事務(wù)流流型DFD的的高層結(jié)構(gòu)形形式。頂層模塊:其其功能就是整整個(gè)系統(tǒng)的功功能。接收模塊:接接收輸入數(shù)據(jù)據(jù)。分派模塊:調(diào)調(diào)度模塊,控制下層的所所有活動模塊塊。事務(wù)模塊:對對應(yīng)活動流,,是該活動流映映射成的。2.將事務(wù)務(wù)流型DFD映射成高高層系統(tǒng)結(jié)構(gòu)構(gòu)…頂層模塊分派接收事務(wù)1事務(wù)2事務(wù)n12/31/2022583.進(jìn)一步步分解接收模塊:類類同于變換分分析中輸入控控制模塊的分分解?;顒恿髂K::根據(jù)其流特特性(變換流流或事務(wù)流))進(jìn)一步采用用變換分析或或事務(wù)分析進(jìn)進(jìn)行分解。12/31/202259模塊設(shè)計(jì)的原原則在選擇模塊設(shè)設(shè)計(jì)的次序時(shí)時(shí),必須對一一個(gè)模塊的全全部直接下屬屬模塊都設(shè)計(jì)計(jì)完成之后,,才能轉(zhuǎn)向另另一個(gè)模塊的的下層模塊的的設(shè)計(jì)。使用“黑盒””技術(shù):在在設(shè)計(jì)當(dāng)前模模塊時(shí),先把該模塊的的所有下層模模塊定義成“黑盒”,在設(shè)計(jì)中利利用它們時(shí)暫暫不考慮其內(nèi)內(nèi)部結(jié)構(gòu)和實(shí)實(shí)現(xiàn)。在這一一步定義好的的“黑盒”,,在下一步就就可以對它們們進(jìn)行設(shè)計(jì)和和加工。最后后,全部“黑黑盒”的內(nèi)容容和結(jié)構(gòu)應(yīng)完完全被確定。。12/31/202260在設(shè)計(jì)下層模模塊時(shí),應(yīng)考考慮模塊的耦合和內(nèi)聚問題,以提高高初始結(jié)構(gòu)圖圖質(zhì)量。模塊劃分時(shí),,一個(gè)模塊的的直接下屬模模塊一般在5個(gè)左右右。如果直接接下屬模塊超超過10個(gè)個(gè),可設(shè)立立中間層次。。如果出現(xiàn)以下下情況,就停停止模塊分解解:模塊不能再細(xì)細(xì)分為明顯的的子任務(wù);分解成用戶提提供的模塊或或庫函數(shù);模塊接接口是是輸入入輸出出設(shè)備備傳送送的信信息;;模塊不不宜再再分解解得過過小。。12/31/202261變換分分析是是軟件件系統(tǒng)統(tǒng)結(jié)構(gòu)構(gòu)設(shè)計(jì)計(jì)的主主要方方法。。一般,,一個(gè)個(gè)大型型的軟軟件系系統(tǒng)是是變換換型結(jié)結(jié)構(gòu)和和事務(wù)務(wù)型結(jié)結(jié)構(gòu)的的混合合結(jié)構(gòu)構(gòu)。所所以,,我們們通常常利用用以變變換分分析為為主,,事務(wù)務(wù)分析析為輔輔的方方式進(jìn)進(jìn)行軟軟件結(jié)結(jié)構(gòu)設(shè)設(shè)計(jì)。。12/31/202262abdpqrsbac1d分派模塊事務(wù)控制qrs接受通路p12/31/202263模塊功功能完完善化化一個(gè)完完整的的模塊塊應(yīng)當(dāng)當(dāng)有以以下幾幾部分分:執(zhí)行規(guī)規(guī)定的的功能能的部部分;;出錯處處理的的部分分。當(dāng)當(dāng)模塊塊不能能完成成規(guī)定定的功功能時(shí)時(shí),必必須回回送出出錯標(biāo)標(biāo)志,,出現(xiàn)現(xiàn)例外外情況況的原原因。。如果需需要返返回?cái)?shù)數(shù)據(jù)給給它的的調(diào)用用者,,在完完成數(shù)數(shù)據(jù)加加工或或結(jié)束束時(shí),,應(yīng)應(yīng)當(dāng)給給它的的調(diào)用用者返返回一一個(gè)狀狀態(tài)碼碼。改進(jìn)系系統(tǒng)結(jié)結(jié)構(gòu)的的啟發(fā)發(fā)式原原則12/31/202264消除重重復(fù)功功能,,改善善軟件件結(jié)構(gòu)構(gòu)完全相相似:在結(jié)結(jié)構(gòu)上上完全全相似似,可可能只只是在在數(shù)據(jù)據(jù)類型型上不不一致致。此此時(shí)可可以采采取完完全合合并的的方法法。局部相相似:找出出其相相同部部分,,分離離出去去,重重新定定義成成一個(gè)個(gè)獨(dú)立立的下下一層層模塊塊。還還可以以與它它的上上級模模塊合合并。。12/31/202265R1R2XY相似部分R1R2XYR1+R2XYX+R1Y+R2R1Y+R2X不可取開關(guān)太多12/31/202266模塊塊的的作作用用范范圍圍應(yīng)應(yīng)在在控控制制范范圍圍之之內(nèi)內(nèi)模塊塊的的控制制范范圍圍包括括它它本本身身及及其其所所有有的的從從屬屬模模塊塊。。模塊塊的的作用用范范圍圍是指指模模塊塊內(nèi)內(nèi)一一個(gè)個(gè)判判定定的的作作用用范范圍圍,,凡凡是是受受這這個(gè)個(gè)判判定定影影響響的的所所有有模模塊塊都都屬屬于于這這個(gè)個(gè)判判定定的的作作用用范范圍圍。。如果果一一個(gè)個(gè)判判定定的的作作用用范范圍圍包包含含在在這這個(gè)個(gè)判判定定所所在在模模塊塊的的控控制制范范圍圍之之內(nèi)內(nèi),,則則這這種種結(jié)結(jié)構(gòu)構(gòu)是是簡簡單單的的,,否否則則,,它它的的結(jié)結(jié)構(gòu)構(gòu)是是不不簡簡單單的的。。12/31/202267盡可可能能減減少少高高扇扇出出結(jié)結(jié)構(gòu)構(gòu)如果果一一個(gè)個(gè)模模塊塊的的扇扇出出數(shù)數(shù)過過大大,,就就意意味味著著該該模模塊塊過過分分復(fù)復(fù)雜雜,,需需要要協(xié)協(xié)調(diào)調(diào)和和控控制制過過多多的的下下屬屬模模塊塊。。應(yīng)應(yīng)當(dāng)當(dāng)適適當(dāng)當(dāng)增增加加中中間間層層次次的的控控制制模模塊塊。。PPP1P212/31/202268避免或減減少使用用病態(tài)聯(lián)聯(lián)接直接病態(tài)態(tài)聯(lián)接公共數(shù)據(jù)據(jù)域病態(tài)態(tài)聯(lián)接通信模塊病態(tài)態(tài)聯(lián)接ABcommonABTABLEITABABxxxx(a)直直接病病態(tài)聯(lián)接接(b)公公共數(shù)數(shù)據(jù)域病態(tài)聯(lián)接接(c)通通信模模塊病態(tài)聯(lián)接接12/31/202269模塊的大大小要適適中。設(shè)計(jì)功能能可預(yù)測測的模塊塊一個(gè)功能能可預(yù)測測的模塊塊,不不論內(nèi)內(nèi)部處理理細(xì)節(jié)如如何,但但對相同同的輸入入數(shù)據(jù),,總能產(chǎn)產(chǎn)生同樣樣的結(jié)果果。但是是,如果果模塊內(nèi)內(nèi)部蘊(yùn)藏藏有一些些特殊的的鮮為人人知的功功能時(shí),,這個(gè)模模塊就可可能是不不可預(yù)測測的。對對于這種種模塊,,如果調(diào)調(diào)用者不不小心使使用,其其結(jié)果將將不可預(yù)預(yù)測。12/31/202270保存當(dāng)前標(biāo)記恢復(fù)“以前”標(biāo)記標(biāo)記?標(biāo)記?功能不可可預(yù)測的的模塊12/31/202271在過程設(shè)計(jì)計(jì)階段,要要決定各個(gè)個(gè)模塊的實(shí)實(shí)現(xiàn)算法,,并精確地地表達(dá)這些些算法。對每個(gè)模塊塊規(guī)定的功功能以及算算法的設(shè)計(jì)計(jì),給出適適當(dāng)?shù)乃惴ǚ枋觯簣D形工具::程序流程程圖,N-S,,PAD,,HIPO表格工具::判定表語言工具::PDL,HIPO3.5過程設(shè)計(jì)((詳細(xì)設(shè)計(jì)計(jì))12/31/202272程序流程圖圖ABABPA1P=1A2=2An=nTSPFFSPT順序型選擇型先判斷重復(fù)型后判斷重復(fù)型多分支選擇型12/31/202273gabfx1x4x5x6x2x3入口hijcde出口流程圖示例FFFFFTTTTTswitchdo-whiledo-whilewhile-do=1=2=312/31/202274N-S圖圖ABPFTABPFTAwhile-doPAdo-whilePAP=1=2…=nA1A2…An順序型選擇型(1)選擇型(2)先判斷重復(fù)型后判斷重復(fù)型多分支選擇型12/31/202275N-S圖圖((盒盒圖圖))示示例例do-while

x6abx1TTFFx2x4f=1=2=3gido-while

x5hdecwhile-do

x6j12/31/202276問題題分分析析圖圖(PAD)S1SA1A2AnPPP=1=2=nwhile

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

ENDLOOP12/31/202281--*createanewwordsdictionarydictionary:==mergedictionaryandgoodwordlistENDspellcheck為了區(qū)區(qū)別關(guān)關(guān)鍵字字,規(guī)規(guī)定關(guān)關(guān)鍵字字一律律大寫寫,其其它單單詞一一律小小寫。。內(nèi)語法法使用用自然然語言言來描描述處處理特特性。。內(nèi)語語法比比較靈靈活,,只要要寫清清楚就就可以以,不不必考考慮語語法錯錯,以以利于于人們們可把把主要要精力力放在在描述述算法法的邏邏輯上上。12/31/202282判定表表決策表表用于于表示示程序序的靜靜態(tài)邏邏輯在決策策表中中的條條件部部分給給出所所有的的兩分分支判判斷的的列表表,動動作部部分給給出相相應(yīng)的的處理理要求將將程序序流程程圖中中的多多分支支判斷斷都改改成兩兩分支支判斷斷12/31/

溫馨提示

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

最新文檔

評論

0/150

提交評論