版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章結(jié)構(gòu)化方法第3章結(jié)構(gòu)化方法
結(jié)構(gòu)化方法作為一種“思想”工具,可用于定義需求,建立待建系統(tǒng)的功能模型;可用于定義滿足需求的結(jié)構(gòu),給出一種特定的軟件解決方案??偟囊笠髮W(xué)生掌握結(jié)構(gòu)化分析方法,并能運(yùn)用該方法給出小型簡(jiǎn)單系統(tǒng)的功能模型;掌握結(jié)構(gòu)化設(shè)計(jì)方法,能基于給定的小型簡(jiǎn)單系統(tǒng)功能模型,給出系統(tǒng)的總體設(shè)計(jì),并能運(yùn)用詳細(xì)設(shè)計(jì)工具給出若干模塊的詳細(xì)設(shè)計(jì)。知識(shí)點(diǎn)和考核要求(1)識(shí)記
1)表達(dá)問(wèn)題域信息的基本術(shù)語(yǔ)及其表示。2)表達(dá)功能模型的工具——DFD圖。3)數(shù)據(jù)結(jié)構(gòu)符號(hào)和判定表、判定樹(shù)。4)變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖。5)模塊以及模塊內(nèi)聚和耦合。6)詳細(xì)設(shè)計(jì)工具:框圖、PAD圖、N-S圖和偽碼。(2)領(lǐng)會(huì)
1)結(jié)構(gòu)化方法源于的基本思想。2)結(jié)構(gòu)化分析方法中每一術(shù)語(yǔ)所基于原理以及它們?cè)诮V械淖饔谩?)構(gòu)建系統(tǒng)功能模型的步驟。4)變換設(shè)計(jì)和事務(wù)設(shè)計(jì)。5)“高內(nèi)聚低耦合”原則以及經(jīng)驗(yàn)性性準(zhǔn)則。6)詳細(xì)設(shè)計(jì)工具的優(yōu)缺點(diǎn)以及相互轉(zhuǎn)換。7)結(jié)構(gòu)化方法存在的問(wèn)題。(3)應(yīng)用
1)針對(duì)不復(fù)雜的系統(tǒng)需求(問(wèn)題)陳述,創(chuàng)建該系統(tǒng)的功能模型,包括系統(tǒng)的DFD圖,數(shù)據(jù)字典和加工小說(shuō)明。2)在創(chuàng)建系統(tǒng)功能模型的基礎(chǔ)上,給出該系統(tǒng)的總體設(shè)計(jì),并針對(duì)有關(guān)模塊運(yùn)用PAD圖或N-S圖或偽碼,給出這些模塊的詳細(xì)設(shè)計(jì)。結(jié)構(gòu)化方法一種特定的軟件開(kāi)發(fā)方法學(xué)結(jié)構(gòu)化分析方法何謂分析一般地說(shuō),分析是系統(tǒng)化地使用信息,給出一個(gè)問(wèn)題的估算.
系統(tǒng)建模技術(shù)-結(jié)構(gòu)化方法結(jié)構(gòu)化分析方法要回答:如何定義問(wèn)題?就如何定義問(wèn)題而言,如何獲得需求如何規(guī)約需求如何驗(yàn)證需求關(guān)于需求獲取----需求面臨的挑戰(zhàn)?問(wèn)題空間理解?人與人之間的通信?需求的不斷變化1)需求目標(biāo)在任何一個(gè)設(shè)計(jì)中,精確地陳述問(wèn)題總是第一步的。需求的目標(biāo)是要簡(jiǎn)潔而精確地說(shuō)明所要解決的問(wèn)題。為此:軟件人員的注意力應(yīng)在做什么和為什么做,而不是如何做。與用戶和該領(lǐng)域的專家進(jìn)行交流,導(dǎo)引出他們對(duì)軟件產(chǎn)品的要求?;趯?duì)用戶要求的理解,結(jié)合計(jì)算機(jī)軟件的特有能力,創(chuàng)造出對(duì)用戶有價(jià)值的,能提高產(chǎn)品的質(zhì)量與可用性的新的產(chǎn)品要求。分析所定出的產(chǎn)品要求,判斷其正確性,一致性,完整性及可行性;決定解決方案,完成高層次的設(shè)計(jì),確定出功能子系統(tǒng)及子系統(tǒng)之間的接口界面。把產(chǎn)品要求以用戶手冊(cè)及工程設(shè)計(jì)技術(shù)要求的形式表達(dá)出來(lái)。(可能還包括測(cè)試的標(biāo)準(zhǔn))。用于在開(kāi)發(fā)的全過(guò)程中,驗(yàn)證核實(shí)所開(kāi)發(fā)的產(chǎn)品確能滿足用戶的要求,支持技術(shù)文檔的管理,更重要的是支持需求變化的管理。可見(jiàn),為了實(shí)現(xiàn)這一目標(biāo):需求(工程)包括需求的引出、創(chuàng)造、分析、表述、驗(yàn)核和管理。2)需求工程的重要性Standish-Group對(duì)350家公司的8000個(gè)軟件項(xiàng)目作過(guò)一次調(diào)查其中,31%的項(xiàng)目的結(jié)局是被取消。引致這些項(xiàng)目失敗的原因是:13.1%不完整的產(chǎn)品要求;12.4%缺乏用戶的參與;10.6%缺少資源(人力、財(cái)力);9.9%不現(xiàn)實(shí)的期望;9.3%高層領(lǐng)導(dǎo)支持不足;8.7%產(chǎn)品要求與指標(biāo)的改變;8.1%沒(méi)有訂計(jì)劃;7.5%不再需耍該開(kāi)發(fā)中的系統(tǒng)。其中,與產(chǎn)品需求有關(guān)的(1,2,4,和6項(xiàng))占了44.1%。這些數(shù)據(jù)突出地顯示了軟件產(chǎn)品需求在軟件開(kāi)發(fā)中的重要性。重要性之一軟件需求工程直接關(guān)系到“成本、質(zhì)量和按時(shí)交付”等問(wèn)題-它們是項(xiàng)目成敗的關(guān)鍵因素。項(xiàng)目的五維:進(jìn)度,特性,質(zhì)量,成本,人員。重要性之二軟件需求工程-這種發(fā)生在軟件生命周期的初始階段的錯(cuò)誤是非常難于改正,并且是代價(jià)極高的。最新的研究興趣聚焦于“需求引出”,因?yàn)樗婕暗杰浖_(kāi)發(fā)人員與非軟件專業(yè)人員合作的問(wèn)題。3)需求工程的原則
(1)抽象:抓住事物的本質(zhì)(要素)。其中,一個(gè)重要方面是:捕獲問(wèn)題空間的“一般/特殊”關(guān)系是認(rèn)識(shí)、構(gòu)造問(wèn)題的一般途徑。(2)劃分:分離問(wèn)題。其中,一個(gè)重要方面是:捕獲問(wèn)題空間的“整體/部分”關(guān)系是降低問(wèn)題復(fù)雜性的基本途徑之一
(3)投影:捕獲并建立問(wèn)題空間的多維“視圖”是描述問(wèn)題的基本手段之一是解決“A是B,B是A”的基本方法
分析問(wèn)題和需求的能力取決于分析人員的思維和經(jīng)驗(yàn)。思維來(lái)源于:嚴(yán)謹(jǐn)、邏輯和“活躍”的思考習(xí)慣。(1)嚴(yán)謹(jǐn)要求思考的對(duì)象應(yīng)該是不放過(guò)任何一個(gè)“小”問(wèn)題(2)邏輯要求思考的過(guò)程應(yīng)該是一種符合規(guī)則的推導(dǎo)過(guò)程
(3)活躍思維要求思考的方式應(yīng)該是并行的,即不是僅一個(gè)角度,而是多個(gè)角度來(lái)思考問(wèn)題經(jīng)驗(yàn)來(lái)源于:
(1)開(kāi)發(fā)了一些軟件并善于總結(jié)-創(chuàng)新與教訓(xùn)
(2)跟蹤最新技術(shù)。具體地說(shuō)(1)基礎(chǔ)軟件人員必須先在一定程度上熟悉并學(xué)習(xí)軟件所涉及的專業(yè)領(lǐng)域。程度的深淺,以滿足工作的要求為目標(biāo)。軟件人員要懂得如何幫助用戶去表達(dá)出他們對(duì)產(chǎn)品的耍求。因?yàn)樾枨螳@取是一個(gè)交互的過(guò)程。軟件人員面對(duì)的用戶是:他們不是計(jì)算機(jī)或軟件的專業(yè)人員,他們不能完全清楚軟件能帶來(lái)一些什么新的功能可以幫助提高工作效率和提供新的服務(wù),因此必須在需求規(guī)約中包括用戶對(duì)產(chǎn)品工作性能,可靠性,可維護(hù)性,可擴(kuò)展性等的需求。(2)表達(dá)使用清楚而良構(gòu)的語(yǔ)言完成需求規(guī)約。必須完全用問(wèn)題領(lǐng)域方面的詞匯來(lái)表達(dá),不應(yīng)該出現(xiàn)軟件領(lǐng)域內(nèi)的詞匯。通過(guò)瀏覽文檔,能夠完全理解所要解決的具體問(wèn)題和該問(wèn)題的一般性解決方案。(3)做法開(kāi)始問(wèn)題定義時(shí),通常是建立一個(gè)詞匯表。對(duì)于具有模糊含義的術(shù)語(yǔ),或者在目前的問(wèn)題中用于有限范圍內(nèi)的術(shù)語(yǔ),要給出專門的定義。另外,在詞匯表中加入精化細(xì)節(jié)也是很有幫助的-那些通常歸入功能性需求規(guī)范的“東西”,常體現(xiàn)在精化細(xì)節(jié)中。集中在公司的關(guān)鍵任務(wù)的目標(biāo)上。一個(gè)新項(xiàng)目的開(kāi)始,可能是執(zhí)行一個(gè)已有的長(zhǎng)期系統(tǒng)計(jì)劃的結(jié)果,或來(lái)自于一系列高層戰(zhàn)略信息系統(tǒng)計(jì)劃編制的建議。因此,由此產(chǎn)生的建造,應(yīng)該盡量基于長(zhǎng)期的方向和目標(biāo),而不是針對(duì)商業(yè)危機(jī)或技術(shù)潮流而做出的反應(yīng)。應(yīng)該直接集中在公司的業(yè)務(wù)需要上,而不是技術(shù)員的理想軟件列表上。
應(yīng)該通過(guò)考察現(xiàn)在的應(yīng)用情況,并根據(jù)其業(yè)務(wù)性能和任何預(yù)計(jì)的未來(lái)的市場(chǎng)影響,對(duì)每個(gè)系統(tǒng)進(jìn)行分類。需求分類根據(jù)軟件產(chǎn)品的性能指標(biāo)和實(shí)現(xiàn)難度,對(duì)問(wèn)題和需求進(jìn)行分類:核心需求基本功能需求高級(jí)功能需求組合功能需求恰當(dāng)?shù)剡x取問(wèn)題和需求的切入點(diǎn)。所有問(wèn)題和需求都有發(fā)生的根源,其表面現(xiàn)象往往是開(kāi)發(fā)者思路的切入點(diǎn)。其中,如果切入點(diǎn)是狹隘的,那么圍繞著問(wèn)題和需求的分析往往局限于自身的思路范圍,問(wèn)題和需求產(chǎn)生的原因就很難發(fā)現(xiàn)。所以當(dāng)不能理解分析的問(wèn)題和需求時(shí),不妨先跳出思維慣例,尋求存在這樣的問(wèn)題和需求的原因,然后再分析理解之。交替反復(fù)分析多個(gè)問(wèn)題和需求,尋找問(wèn)題間的共性和特性。問(wèn)題復(fù)雜化,是一個(gè)抽象問(wèn)題或需求的逆過(guò)程。提出問(wèn)題需求的許多可能的假設(shè),豐富問(wèn)題需求的形式。問(wèn)題復(fù)雜化的意圖是許多問(wèn)題應(yīng)該從更多的方面去驗(yàn)證不同環(huán)境下問(wèn)題是否同樣存在。問(wèn)題抽象化,繼而簡(jiǎn)化問(wèn)題。眾多的問(wèn)題和需求變成程序式過(guò)程,就是公式化問(wèn)題和需求。類模板就是一個(gè)抽象問(wèn)題很好的例子。4)需求獲取技術(shù)特征由上可見(jiàn),需求獲取技術(shù)特征:·方便通訊(使用易于理解的語(yǔ)言)·提供定義系統(tǒng)邊界的方法·提供劃分、抽象、投影等方法·允許采用多種可供選擇的設(shè)計(jì)方法·適應(yīng)需求的變化·支持使用問(wèn)題空間的術(shù)語(yǔ),思考問(wèn)題和編制文檔···何謂結(jié)構(gòu)化分析
就軟件需求分析而言,即為:系統(tǒng)化地使用問(wèn)題域術(shù)語(yǔ),給出該問(wèn)題的模型,即:
需求-一個(gè)抽象層該系統(tǒng)的概念模型或稱系統(tǒng)的需求規(guī)約問(wèn)題域--客觀事物系統(tǒng)形成分析(映射)可見(jiàn),需求分析作為一種活動(dòng),其目標(biāo)為:
在一個(gè)確定的抽象層(即需求層)上為客觀事物系統(tǒng)施加了一個(gè)結(jié)構(gòu),形成待開(kāi)發(fā)軟件系統(tǒng)(產(chǎn)品)的概念模型,即需求規(guī)約(規(guī)格說(shuō)明書),作為開(kāi)發(fā)人員和客戶間技術(shù)契約的基礎(chǔ),并作為而后開(kāi)發(fā)活動(dòng)的一個(gè)基本輸入.
實(shí)現(xiàn)軟件需求分析的目標(biāo)對(duì)方法學(xué)的需求(1)提供一組術(shù)語(yǔ)(符號(hào)),指導(dǎo)抽象中需要關(guān)注的主要方面,并用于表達(dá)分析中所使用的信息.(3.1.1節(jié))這些術(shù)語(yǔ)形成一個(gè)特定的抽象層,即需求層.當(dāng)然,這組術(shù)語(yǔ)應(yīng)體現(xiàn)軟件設(shè)計(jì)的某些“原理/原則”!(2)依據(jù)這些術(shù)語(yǔ)所形成的“空間”,給出表達(dá)模型的工具.(3.1.2節(jié))(3)給出過(guò)程指導(dǎo).(3.1.3節(jié))需求層的確定一個(gè)抽象層是由一組確定的術(shù)語(yǔ)定義的,為此為了支持需求分析中有關(guān)要使用的那些信息的表達(dá),給出了以下五個(gè)術(shù)語(yǔ)/符號(hào):數(shù)據(jù)流:
加工:
數(shù)據(jù)存儲(chǔ):
數(shù)據(jù)源:
數(shù)據(jù)潭:其中:數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)--支持?jǐn)?shù)據(jù)抽象,加工--支持過(guò)程/功能的抽象,用于表達(dá)系統(tǒng)內(nèi)涵.?dāng)?shù)據(jù)源、數(shù)據(jù)潭—支持系統(tǒng)邊界抽象,用于表達(dá)系統(tǒng)外延.
是完備的?;拘g(shù)語(yǔ)1.數(shù)據(jù)流數(shù)據(jù)流是一類術(shù)語(yǔ),用于表達(dá)在分析中所要使用的、用于表達(dá)“客體”的信息。在使用中一般要給出標(biāo)識(shí),該標(biāo)識(shí)是一個(gè)名詞或名詞短語(yǔ),并且往往直接使用實(shí)際問(wèn)題空間中的概念。2.加工加工也是一類術(shù)語(yǔ),用于表達(dá)在分析中使用的、用于表達(dá)“處理”的信息。在使用中一般也要給出標(biāo)識(shí)。該標(biāo)識(shí)一般采用動(dòng)賓結(jié)構(gòu),并且往往直接使用實(shí)際問(wèn)題空間中的概念,以便表達(dá)該加工的一定語(yǔ)義。3.數(shù)據(jù)存儲(chǔ)數(shù)據(jù)存儲(chǔ)也是一類術(shù)語(yǔ),用于表達(dá)在分析中所使用的、表達(dá)“結(jié)構(gòu)化客體”的信息。在使用中一般也要給出標(biāo)識(shí)。該標(biāo)識(shí)是一個(gè)名詞或名詞短語(yǔ),并且往往直接使用實(shí)際問(wèn)題空間中的概念。這樣的標(biāo)識(shí)可以表達(dá)該結(jié)構(gòu)化數(shù)據(jù)的“一定”語(yǔ)義。4.數(shù)據(jù)源和數(shù)據(jù)潭
數(shù)據(jù)源是數(shù)據(jù)流的起點(diǎn);數(shù)據(jù)潭是數(shù)據(jù)流的歸宿地。數(shù)據(jù)源和數(shù)據(jù)潭是系統(tǒng)之外的實(shí)體,可以使人、物或其它軟件系統(tǒng)。他們均用一個(gè)矩形表示。引入數(shù)據(jù)源和數(shù)據(jù)潭這兩個(gè)術(shù)語(yǔ)的目的是為了表示系統(tǒng)的環(huán)境,可以使用它們和相關(guān)的數(shù)據(jù)流來(lái)定義系統(tǒng)的邊界。與其他術(shù)語(yǔ)一樣,在使用這兩個(gè)術(shù)語(yǔ)來(lái)表達(dá)系統(tǒng)/產(chǎn)品“邊界”的信息時(shí),也要給出相應(yīng)的標(biāo)識(shí)。該標(biāo)識(shí)也是一個(gè)名詞或名詞短語(yǔ),并且往往直接使用實(shí)際問(wèn)題空間中的概念。這樣的表示可以表達(dá)系統(tǒng)/產(chǎn)品邊界的“一定”語(yǔ)義。旅行社訂票單預(yù)定機(jī)票準(zhǔn)備機(jī)票記帳費(fèi)用航班帳單機(jī)票記帳文件航班目錄旅行社系統(tǒng)功能模型表示需求分析的首要任務(wù)是建立系統(tǒng)功能模型,為此結(jié)構(gòu)化分析方法給出了一種表達(dá)功能模型的工具,即數(shù)據(jù)流圖(Dataflow
Diagram),簡(jiǎn)稱DFD圖。(如下圖:飛機(jī)票預(yù)訂系統(tǒng)數(shù)據(jù)流圖)
如果把任何軟件系統(tǒng)都視為一個(gè)數(shù)據(jù)變換裝置,它接受各種形式的輸入,通過(guò)變換產(chǎn)生各種形式的輸出,那么數(shù)據(jù)流圖就是一種表達(dá)待建系統(tǒng)功能模型的工具。建模過(guò)程指導(dǎo)
建立系統(tǒng)的功能模型---使用的工具為數(shù)據(jù)流圖DFD首先:建立系統(tǒng)環(huán)境圖,確定系統(tǒng)邊界繼之:自頂向下,逐層分解
建立數(shù)據(jù)字典---使用的工具為結(jié)構(gòu)符定義數(shù)據(jù)流定義數(shù)據(jù)存儲(chǔ)定義數(shù)據(jù)項(xiàng)
給出加工小說(shuō)明---使用的工具可以為判定表判定樹(shù)
自頂向下,逐步求精,建立系統(tǒng)的層次數(shù)據(jù)流圖為了便于管理,從0層開(kāi)始就要對(duì)數(shù)據(jù)流圖以及其中的加工進(jìn)行編號(hào),并在整個(gè)系統(tǒng)中應(yīng)是惟一的。一般按下述規(guī)則為分層數(shù)據(jù)流圖和圖中的加工進(jìn)行編號(hào)的。1)頂層數(shù)據(jù)流圖以及其中惟一的加工均不必編號(hào)。2)由于0層通常只有一個(gè)子圖,因此,該子圖的層號(hào)為0,而其中每一加工的編號(hào)分別為0.1,0.2,0.3……。3)以后各層,其子圖層號(hào)為上一層(父層)的加工號(hào);而該層中加工編號(hào)為子圖層號(hào),后跟一個(gè)小數(shù)點(diǎn),再加上該加工在子圖中的順序號(hào),例如1.1,1.2,1.3……,即加工編號(hào)由相應(yīng)的子圖號(hào)、小數(shù)點(diǎn)、加工在子圖中的順序號(hào)組成。由“父圖”生成“子圖”的一般步驟如下:1)將“父圖”的每一加工按其功能分解為若干個(gè)子加工。2)將“父圖”的輸入流和輸出流“分派”到相關(guān)的子加工3)在各加工之間建立合理的關(guān)聯(lián),必要時(shí)引入數(shù)據(jù)存儲(chǔ),使之形成一個(gè)有機(jī)的整體
問(wèn)題1:建立一個(gè)簡(jiǎn)化的商業(yè)自動(dòng)化系統(tǒng),其中:營(yíng)業(yè)員通過(guò)該系統(tǒng)記錄每日銷售的商品(商品名,商品編號(hào),單價(jià),數(shù)量,銷售時(shí)間);收款員通過(guò)該系統(tǒng)記錄收到的現(xiàn)金數(shù)額以及購(gòu)物余額;商店經(jīng)理每日統(tǒng)計(jì)銷售額,并在必要時(shí)查看某種商品的銷售情況(商品名,商品編碼,金額).結(jié)構(gòu)化分析方法應(yīng)用實(shí)例簡(jiǎn)化的商業(yè)自動(dòng)化系統(tǒng)營(yíng)業(yè)員收款員經(jīng)理銷售的商品現(xiàn)金額現(xiàn)金余額銷售情況日銷售額查詢要求建立系統(tǒng)的功能模型首先:建立系統(tǒng)環(huán)境圖,確定系統(tǒng)邊界------頂層DFD其中:1數(shù)據(jù)流為:銷售的商品,日銷售額等3個(gè)輸入流,3個(gè)輸出流數(shù)據(jù)源為:營(yíng)業(yè)員,經(jīng)理,收款員數(shù)據(jù)潭為:經(jīng)理,收款員2加工名為:要建立的系統(tǒng)名字錄入、修改或刪除商品信息錄入、修改現(xiàn)金額,并計(jì)算余額查詢商品銷售情況計(jì)算日銷售額123繼之:自頂向下,逐層分解A、按人或部門的功能要求,將加工“打碎”,形成:注:需給每一加工編號(hào);B、”分派”數(shù)據(jù)流,形成:錄入、修改或刪除商品信息2錄入、修改現(xiàn)金額,并計(jì)算余額查詢商品銷售情況計(jì)算日銷售額銷售的商品現(xiàn)金額現(xiàn)金余額查詢要求銷售情況日銷售額13其中:要根據(jù)特定的加工要求進(jìn)行分派;保持與頂層數(shù)據(jù)流的一致;可以不引入數(shù)據(jù)源和數(shù)據(jù)潭。錄入、修改或刪除商品信息錄入、修改現(xiàn)金額,并計(jì)算余額查詢商品銷售情況計(jì)算日銷售額銷售的商品現(xiàn)金額現(xiàn)金余額查詢要求銷售情況日銷售額銷售文件123C、引入文件,使之形成一個(gè)有機(jī)整體—系統(tǒng):注:到一個(gè)文件,既有輸入流,又有輸出流,則可簡(jiǎn)化為,并可不給出標(biāo)識(shí)。至此,體現(xiàn)精化,形成0層數(shù)據(jù)流圖。
查詢商品銷售情況計(jì)算日銷售額查詢要求銷售情況日銷售額銷售文件3繼續(xù)A、B、C:自頂向下,逐層分解。例如:加工3可分解為:判定要求查詢要求3。1統(tǒng)計(jì)銷售情況3。2計(jì)算日銷售額銷售文件查詢要求2查詢要求1銷售情況日銷售額加工3:*其中為什么要引入加工“判定要求”?建立數(shù)據(jù)字典定義數(shù)據(jù)流定義數(shù)據(jù)存儲(chǔ)定義數(shù)據(jù)項(xiàng)
引入:結(jié)構(gòu)符+|{}-用于定義數(shù)據(jù)結(jié)構(gòu)
AAABCB0C0B*定義數(shù)據(jù)字典該步的目標(biāo)為依據(jù)系統(tǒng)的數(shù)據(jù)流圖,定義其中包含的所有數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu),直到給出構(gòu)成以上數(shù)據(jù)的各數(shù)據(jù)項(xiàng)的基本數(shù)據(jù)類型。數(shù)據(jù)是客體的一種表示,而且已經(jīng)證明,所有客體均可用以下3種基本結(jié)構(gòu)表示,這3中結(jié)構(gòu)分別為順序結(jié)構(gòu)、選擇結(jié)構(gòu)和重復(fù)結(jié)構(gòu)。符號(hào)描述符號(hào)描述=定義為{
}重復(fù)+順序m..n子界[
|
]選擇在數(shù)據(jù)字典中,為了使定義的結(jié)構(gòu)數(shù)據(jù)便于理解和閱讀,一般按3種條目來(lái)組織,即數(shù)據(jù)流條目、數(shù)據(jù)存儲(chǔ)條目和數(shù)據(jù)項(xiàng)條目。其中數(shù)據(jù)流條目給出DFD圖中所有數(shù)據(jù)流的結(jié)構(gòu)定義;數(shù)據(jù)存儲(chǔ)條目給出DFD圖中所有數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)定義;數(shù)據(jù)項(xiàng)條目給出所有數(shù)據(jù)項(xiàng)的類型定義。數(shù)據(jù)字典:、數(shù)據(jù)流:銷售的商品=商品名+商品編號(hào)+單價(jià)+數(shù)量+銷售時(shí)間現(xiàn)金額=余額=日銷售額=非負(fù)實(shí)數(shù)查詢要求=[商品編號(hào)|日期]查詢要求1=商品編號(hào)查詢要求2=日期銷售情況=商品名+商品編號(hào)+金額、數(shù)據(jù)存貯:銷售文件={銷售的商品}、數(shù)據(jù)項(xiàng)給出加工小說(shuō)明---使用的工具可以為判定表判定樹(shù)判斷表Ⅰ條件類別Ⅱ條件組合Ⅲ操作Ⅳ操作執(zhí)行例如:考試總分>=620>=620<620單科成績(jī)有滿分有不及格有滿分發(fā)升級(jí)通知書yyn發(fā)留級(jí)通知書nny發(fā)重修通知書nyn描述加工該步的目標(biāo)為依據(jù)系統(tǒng)的數(shù)據(jù)流圖,給出其中每一加工的小說(shuō)明。由于需求分析的目的是定義問(wèn)題,因此對(duì)DFD圖中的每一加工只需要給出加工的輸入數(shù)據(jù)和輸出數(shù)據(jù)之間的關(guān)系,即從外部來(lái)“視察”一個(gè)加工的邏輯。描述加工采用的3種表達(dá)工具:(1)結(jié)構(gòu)化自然語(yǔ)言。
如果一個(gè)加工的輸入數(shù)據(jù)和輸出數(shù)據(jù)之間的邏輯關(guān)系比較簡(jiǎn)單,可以使用結(jié)構(gòu)化自然語(yǔ)言予以表述。結(jié)構(gòu)化自然語(yǔ)言是介于形式語(yǔ)言和自然語(yǔ)言之間的一種語(yǔ)言。它雖然沒(méi)有形式語(yǔ)言那樣嚴(yán)格,但具有自然語(yǔ)言簡(jiǎn)單易懂的特點(diǎn),同時(shí)又避免了自然語(yǔ)言結(jié)構(gòu)松散的特點(diǎn)。結(jié)構(gòu)化自然語(yǔ)言的語(yǔ)法通常分為內(nèi)外兩層,外層語(yǔ)法描述操作的控制結(jié)構(gòu),如順序、選擇、循環(huán)等,這些控制結(jié)構(gòu)將加工中的各個(gè)操作連接起來(lái)。內(nèi)層語(yǔ)法沒(méi)有什么限制,一般使用自然語(yǔ)言描述。(2)判定表如果一個(gè)加工的輸入數(shù)據(jù)和輸出數(shù)據(jù)之間的邏輯關(guān)系比較復(fù)雜,可以采用一定的表達(dá)工具,例如判定表或判定樹(shù)等,以避免產(chǎn)生不一致的理解。判定表是用以描述加工的一種工具,通常用來(lái)描述一些不易用自然語(yǔ)言表達(dá)清楚或需要很大篇幅才能表達(dá)清楚的加工。當(dāng)描述的加工由一組操作組成,而且是否執(zhí)行某些操作或操作的執(zhí)行情況又取決于一組條件時(shí),用判定表來(lái)描述這樣的加工就是比較合適的。(3)判定樹(shù)。判定樹(shù)也是一種描述加工的工具。用于寫處理邏輯說(shuō)明的工具結(jié)構(gòu)化英語(yǔ)判定表判定樹(shù)是一種介于自然語(yǔ)言和形式化語(yǔ)言之間的語(yǔ)言語(yǔ)言的正文用基本控制結(jié)構(gòu)進(jìn)行分割,加工中的操作用自然語(yǔ)言短語(yǔ)來(lái)表示其基本控制結(jié)構(gòu)有三種:簡(jiǎn)單陳述句結(jié)構(gòu):避免復(fù)合語(yǔ)句;重復(fù)結(jié)構(gòu):WHILE_DO或REPEAT_UNTIL結(jié)構(gòu)。判定結(jié)構(gòu):IF_THEN_ELSE或CASE_OF結(jié)構(gòu);(1)結(jié)構(gòu)化英語(yǔ)(PDL)語(yǔ)言
當(dāng)數(shù)據(jù)流圖中某個(gè)加工的動(dòng)作需要依賴于多個(gè)邏輯條件的取值時(shí),用自然語(yǔ)言或結(jié)構(gòu)化的語(yǔ)言都不易清楚地描述出來(lái)。然而,判定表/樹(shù)卻能清晰地表示復(fù)雜的條件組合與應(yīng)做動(dòng)作之間的對(duì)應(yīng)關(guān)系。判定表/樹(shù)例:檢查發(fā)貨單一張判定表由四部分組成:(1)左上部列出所有條件;(2)左下部是所有可能做的動(dòng)作;(3)右上部為條件取值的各種可能組合;(4)右下部的每一列是在各種條件取值的組合下應(yīng)執(zhí)行的動(dòng)作。判定樹(shù)
判定樹(shù)是判定表的變形。有時(shí)侯它比判定表更直觀。建模中應(yīng)注意的問(wèn)題
結(jié)構(gòu)化分析方法是一種半形式化的規(guī)約方法,給出了一組特定的術(shù)語(yǔ)表和標(biāo)準(zhǔn)化的表達(dá)格式-數(shù)據(jù)流圖,在表達(dá)上均必須遵循一些約定,即應(yīng)以一種準(zhǔn)確和一致方式使用之。例如:--加工:其標(biāo)識(shí)應(yīng)使用領(lǐng)域術(shù)語(yǔ),采用動(dòng)賓結(jié)構(gòu);必須有輸入和輸出;--數(shù)據(jù)流:其標(biāo)識(shí)應(yīng)使用領(lǐng)域術(shù)語(yǔ),采用名詞或名詞短語(yǔ);特別,應(yīng)注意模型平衡問(wèn)題和信息組織的復(fù)雜性控制問(wèn)題,即:模型平衡問(wèn)題·父圖和子圖的邊界一致問(wèn)題,即它們應(yīng)有相同的邊界;·數(shù)據(jù)流圖中的數(shù)據(jù)流與數(shù)據(jù)字典的一致問(wèn)題,即每個(gè)數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)必須在數(shù)據(jù)字典中予以定義·數(shù)據(jù)流圖中的“葉”加工(最低層)與小說(shuō)明的一致問(wèn)題,即必須給出“葉”加工的說(shuō)明·小說(shuō)明和數(shù)據(jù)流圖的圖形表示一致問(wèn)題,即在小說(shuō)明中,必須說(shuō)明“輸入數(shù)據(jù)流”如何使用,必須說(shuō)明如何產(chǎn)生“輸出數(shù)據(jù)流”;必須說(shuō)明如何選取、使用、修改“數(shù)據(jù)存儲(chǔ)”信息組織復(fù)雜性控制問(wèn)題·上層數(shù)據(jù)可以“打包”上、下數(shù)據(jù)流對(duì)應(yīng)關(guān)系在數(shù)據(jù)字典中給出,但包內(nèi)數(shù)據(jù)流的性質(zhì)(輸入、輸出)必須一致?!ひ环鶊D中的圖元個(gè)數(shù)應(yīng)控制在7+/-2以內(nèi)·與每一加工相關(guān)的數(shù)據(jù)流的數(shù)目應(yīng)適中(與層次有關(guān))·分析數(shù)據(jù)內(nèi)容,確定是否所有的輸入信息都用于產(chǎn)生輸出信息;分析加工,確定一個(gè)加工所產(chǎn)生的輸出,是否都能由該加工的輸入信息導(dǎo)出
圖書管理系統(tǒng)旨在用計(jì)算機(jī)對(duì)圖書進(jìn)行管理,主要涉及四個(gè)方面的工作:新書入庫(kù)、讀者借書、讀者還書以及圖書注銷,以及查詢某位讀者的借書情況、某種圖書和整個(gè)圖書的庫(kù)存情況。在購(gòu)入新書時(shí),圖書管理人員為購(gòu)入的新書編制圖書卡片,包括分類目錄號(hào)、流水號(hào)(要保證每本書都有惟一的流水號(hào),即使同類圖書也是如此)、書名、作者、內(nèi)容摘要、價(jià)格和購(gòu)書日期等信息,并寫入圖書目錄文件中;讀者借書時(shí),首先填寫借書單,包括姓名、學(xué)號(hào)、欲借圖書分類目錄號(hào)等信息,然后管理人員將借書單輸入系統(tǒng),繼之系統(tǒng)檢查該讀者號(hào)是否有效,若無(wú)效,則拒絕借書;否則進(jìn)一步檢查該讀者所借圖書是否超過(guò)最大限制數(shù)(此處我們假設(shè)每位讀者同時(shí)只能借閱不超過(guò)五本書),若已達(dá)到最大限制數(shù)(此處為五本),則拒絕借書;否則讀者可以借出該書,登記圖書分類目錄號(hào)、讀者號(hào)和借閱日期等,寫入到借書文件中;問(wèn)題2:圖書管理系統(tǒng)在讀者還書時(shí),讀者填寫還書單,由管理人員將其輸入系統(tǒng)后,系統(tǒng)根據(jù)其中的學(xué)號(hào),從借書文件中讀出該讀者的借閱記錄,獲取該書的還書日期,判定該圖書是否逾期,以便按規(guī)定做出相應(yīng)的罰款;在對(duì)一些過(guò)時(shí)或無(wú)繼續(xù)保留價(jià)值的圖書進(jìn)行注銷時(shí),管理人員從圖書目錄文件中刪除相關(guān)的記錄;當(dāng)圖書館領(lǐng)導(dǎo)提出查詢要求時(shí),系統(tǒng)應(yīng)依據(jù)查詢要求,分別給出相應(yīng)的信息。其中假定,“為購(gòu)入的新書編制圖書卡片”,“讀者首先填寫借書單”等功能,均由人工實(shí)現(xiàn)。根據(jù)問(wèn)題陳述,按功能可以把該系統(tǒng)分為兩“大塊”,即:借還書等事務(wù)的處理,以及咨詢事務(wù)處理。---進(jìn)行功能抽象。(注:不同的功能抽象將導(dǎo)致不同的結(jié)果!但應(yīng)該是等價(jià)的。)于是,可以根據(jù)這一抽象,可以識(shí)別:1)頂層數(shù)據(jù)流:借還書等事務(wù)處理要求咨詢事務(wù)要求以及相關(guān)的數(shù)據(jù)流2)數(shù)據(jù)源和數(shù)據(jù)潭為:圖書管理人員,讀者以及時(shí)鐘?;谝陨戏治?,可形成該系統(tǒng)的環(huán)境圖:圖書管理系統(tǒng)圖書管理員圖書管理要求查詢要求圖書統(tǒng)計(jì)表圖書情況讀者情況讀者系統(tǒng)時(shí)鐘當(dāng)前日期罰款單其中:3個(gè)輸入流:圖書管理要求,查詢要求,系統(tǒng)時(shí)鐘圖書管理要求=入庫(kù)單借書單還書單注銷單查詢要求=讀者情況圖書情況圖書統(tǒng)計(jì)表
4個(gè)輸出流:圖書統(tǒng)計(jì)表,圖書情況,讀者情況通過(guò)“打碎”、“分派”,可形成如下0層DFD:1處理借還書等事務(wù)2處理咨詢事務(wù)圖書管理要求查詢要求當(dāng)前日期目錄文件借書文件讀者文件罰款單讀者情況圖書情況圖書統(tǒng)計(jì)表其中:保持輸入與輸出的一致;引入三個(gè)文件,對(duì)頂層DFD進(jìn)行細(xì)化。(注:存在數(shù)據(jù)庫(kù)設(shè)計(jì)問(wèn)題)以同樣方式,對(duì)加工1進(jìn)行分解,形成:1。1入庫(kù)新書1。2借書1。3還書1。4注銷圖書圖書管理要求處理圖書管理要求目錄文件罰款單當(dāng)前日期借書文件讀者文件入庫(kù)單借書單注銷單還書單其中:注意平衡問(wèn)題;平面化問(wèn)題。當(dāng)然,還可以繼續(xù)細(xì)化1。2借書目錄文件借書文件例如:借書讀者文件借書單1。2。1檢查讀者的有效性讀者文件1。2。2檢查讀者的資格1。2。3辦理借書1。2。4檢查圖書庫(kù)存借書單無(wú)效讀者有效讀者借書單借書超限核準(zhǔn)后的借書單該書已借完借書記錄借書文件目錄文件注意:其中粗線數(shù)據(jù)流!需求驗(yàn)證大量統(tǒng)計(jì)數(shù)字表明,軟件系統(tǒng)中15%的錯(cuò)誤起源于錯(cuò)誤的需求。一般來(lái)說(shuō),需求驗(yàn)證應(yīng)驗(yàn)證需求規(guī)格說(shuō)明書中的每一單一需求是否滿足5個(gè)性質(zhì),即必要性、無(wú)歧義性、可測(cè)性、可跟蹤性、可測(cè)量行;驗(yàn)證需求規(guī)格說(shuō)明是否滿足4個(gè)性質(zhì),即重要性和穩(wěn)定性程度、可修改性、完整性和一致性。3.2
結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)的主要任務(wù)是在需求分析的基礎(chǔ)上,定義滿足需求所需要的結(jié)構(gòu),即針對(duì)給定的問(wèn)題,給出該問(wèn)題的軟件解決方案,確定“怎么做”的問(wèn)題。為了控制軟件設(shè)計(jì)的復(fù)雜性,結(jié)構(gòu)化設(shè)計(jì)又進(jìn)一步分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)。其總體設(shè)計(jì)的目標(biāo)是建立系統(tǒng)的模塊結(jié)構(gòu),及系統(tǒng)實(shí)現(xiàn)所需要的軟件模塊——系統(tǒng)中可標(biāo)識(shí)的軟件成分,以及這些模塊之間的調(diào)用關(guān)系。結(jié)構(gòu)化設(shè)計(jì)方法(1)在總體設(shè)計(jì)層
--引入了兩個(gè)術(shù)語(yǔ)/符號(hào)模塊:一種可獨(dú)立標(biāo)識(shí)的軟件成分.調(diào)用:模塊間的一種關(guān)系,模塊A為了完成其任務(wù)必須依賴其他模塊.
--引入了模塊結(jié)構(gòu)圖
用于表達(dá)軟件系統(tǒng)的靜態(tài)結(jié)構(gòu).總體設(shè)計(jì)階段的基本任務(wù)是把系統(tǒng)的功能需求分配到一個(gè)特定的軟件體系結(jié)構(gòu)中。表達(dá)這一軟件體系結(jié)構(gòu)的工具很多,主要有以下幾種。(1)Yourdon提出的模塊結(jié)構(gòu)圖。(2)層次圖。層次圖主要用戶描繪軟件的層次結(jié)構(gòu)。(3)HIPO圖,HIPO是由美國(guó)IBM公司提出的,其中HIPO是“層次圖+輸入/處理/輸出”的英文縮寫。結(jié)構(gòu)圖(StructuredDiagram)數(shù)據(jù)傳遞控制信息或循環(huán)層次圖(HierarchyDiagram)正文加工系統(tǒng)編輯3.0加標(biāo)題4.0輸出2.0存儲(chǔ)5.0……插入3.3刪除3.2追加3.1修改3.4合并3.5列表3.6改寫3.4.1……輸入1.0檢索6.0編目錄7.0格式化8.0IPO圖舊的主文件事務(wù)文件1.校驗(yàn)主記錄2.校驗(yàn)事務(wù)記錄3.更新主記錄有效的主記錄有效的事務(wù)記錄更新后的主文件InputProcessOutput
--過(guò)程指導(dǎo)為了實(shí)現(xiàn)設(shè)計(jì)目標(biāo),總體設(shè)計(jì)的具體任務(wù)是:將DFD轉(zhuǎn)化為MSD(模塊結(jié)構(gòu)圖
)分二步實(shí)現(xiàn):第一步:如何將DFD轉(zhuǎn)化為初始的MSD分類:變換型數(shù)據(jù)流圖事務(wù)型數(shù)據(jù)流圖變換設(shè)計(jì)事務(wù)設(shè)計(jì)通過(guò)大量軟件開(kāi)發(fā)的實(shí)踐,人們發(fā)現(xiàn),無(wú)論待建系統(tǒng)的數(shù)據(jù)流圖如何復(fù)雜,一般總可以把她們分成兩種基本類型,即變換型數(shù)據(jù)流圖和事務(wù)性數(shù)據(jù)流圖。數(shù)據(jù)流圖分類變換型:具有較明顯的輸入部分和變換(或稱主加工)部分之間的界面、變換部分和輸出部分之間界面的數(shù)據(jù)流圖,稱為變換型數(shù)據(jù)流圖。
事務(wù)型:數(shù)據(jù)到達(dá)一個(gè)加工T,該加工T根據(jù)輸入數(shù)據(jù)的值,在其后的若干動(dòng)作序列(稱為一個(gè)事務(wù))中選一個(gè)來(lái)執(zhí)行,稱為事務(wù)型數(shù)據(jù)流圖。
12345678abcdefhgyxz123546abcdefgy變換設(shè)計(jì)XX系統(tǒng)變換模塊geteputhputggetcgetdc,d->ee->ff->g,hh->yputyg->xputxx->zputzgetagetbb->da->ceeg,hhgzzxxgyyhdbcacdeefg,hfxab事務(wù)設(shè)計(jì)事務(wù)中心輸入模塊路徑1路徑2輸出模塊aycgbfc->ecee->gegb->dbdd->fdf事務(wù)型數(shù)據(jù)流圖所描述系統(tǒng)的數(shù)據(jù)處理模式為“集中-發(fā)散”式。在實(shí)際應(yīng)用中,任何軟件系統(tǒng)從本質(zhì)上來(lái)說(shuō)都是信息的變換裝置,因此,原則上所有的數(shù)據(jù)流圖都可以歸為變換型。但是,如果其中某些部分具有事務(wù)型數(shù)據(jù)流圖的特征,那么就可以把這些部分按照事務(wù)型數(shù)據(jù)流圖予以處理。(1)變換設(shè)計(jì)。變換設(shè)計(jì)是在需求規(guī)約的基礎(chǔ)上,經(jīng)過(guò)一系列設(shè)計(jì)步驟,將變換型數(shù)據(jù)流圖轉(zhuǎn)換為系統(tǒng)的模塊結(jié)構(gòu)圖。(2)事務(wù)設(shè)計(jì)。盡管在任何情況下都可以使用變換設(shè)計(jì)將一個(gè)系統(tǒng)的DFD圖轉(zhuǎn)換為模塊結(jié)構(gòu)圖,但是,當(dāng)數(shù)據(jù)流圖具有明顯的事務(wù)型特征時(shí),也就是有一個(gè)明顯的事務(wù)處理中心時(shí),則比較適宜采用事務(wù)設(shè)計(jì)。
總體設(shè)計(jì)分為3個(gè)階段。第一階段為初始設(shè)計(jì),在對(duì)給定的數(shù)據(jù)流圖進(jìn)行復(fù)審和精化的基礎(chǔ)上,將其轉(zhuǎn)換為初始的模塊結(jié)構(gòu)圖。第二階段為精化設(shè)計(jì),依據(jù)模塊“高內(nèi)聚低耦合”的原則,精化初始的模塊結(jié)構(gòu)圖,并設(shè)計(jì)其中的全局?jǐn)?shù)據(jù)結(jié)構(gòu)和每一模塊的接口。第三階段為復(fù)審階段,對(duì)前兩個(gè)階段所得到的高層軟件結(jié)構(gòu)進(jìn)行復(fù)審,必要時(shí)還可能需要對(duì)該軟件結(jié)構(gòu)做一些精化工作,這對(duì)軟件的一些性質(zhì),特別是對(duì)軟件質(zhì)量的提高將產(chǎn)生非常大的影響。
第二步:如何將初始的MSD轉(zhuǎn)化為最終可供詳細(xì)設(shè)計(jì)使用的MSD基于模塊化原理-高內(nèi)聚低耦合,給出一些設(shè)計(jì)規(guī)則-經(jīng)驗(yàn)規(guī)則,用于精化初始的MSD-體現(xiàn)設(shè)計(jì)人員的創(chuàng)造
模塊化及啟發(fā)式規(guī)則
該步的目標(biāo)是:基于模塊“高內(nèi)聚低耦合”的原則,提高模塊的獨(dú)立性。
模塊是執(zhí)行一個(gè)特殊任務(wù)的一個(gè)過(guò)程以及相關(guān)的數(shù)據(jù)結(jié)構(gòu)。模塊通常由兩部分組成。一部分是接口,給出可由其他模塊或例程訪問(wèn)的常量、變量、函數(shù)等。接口不但可用于刻畫各個(gè)模塊之間的連接,以體現(xiàn)其功能,而且還對(duì)其他模塊的設(shè)計(jì)和使用者提供了一定的可見(jiàn)性,模塊的另一部分是模塊體,是接口的實(shí)現(xiàn)。因此,模塊化自然涉及兩個(gè)問(wèn)題:一是如何將系統(tǒng)分解成軟件模塊,二是如何設(shè)計(jì)模塊。結(jié)構(gòu)化軟件設(shè)計(jì)是一種典型的模塊化方法,即把一個(gè)待開(kāi)發(fā)的軟件分解成若干簡(jiǎn)單的、具有高內(nèi)聚低耦合的模塊,這一過(guò)程稱為模塊化。模塊化是系統(tǒng)設(shè)計(jì)基本原理/原則之一。
模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)度量,這兩個(gè)標(biāo)準(zhǔn)分別稱為內(nèi)聚和耦合。耦合衡量不同模塊彼此間互相依賴(連接)的緊密程度;內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。以下分別詳細(xì)闡述。耦合性:
耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn),以及通過(guò)接口的數(shù)據(jù)。耦合:不同模塊之間相互依賴程度的度量。耦合類型:--內(nèi)容耦合:--公共耦合:兩個(gè)以上的模塊共同引用一個(gè)全局?jǐn)?shù)據(jù)項(xiàng)。--控制耦合:一個(gè)模塊向另一模塊傳遞一個(gè)控制信號(hào),接受信號(hào)的模塊將依據(jù)該信號(hào)值進(jìn)行必要的活動(dòng)。--標(biāo)記耦合:兩個(gè)模塊至少有一個(gè)通過(guò)界面?zhèn)鬟f的公共有結(jié)構(gòu)的參數(shù)。--數(shù)據(jù)耦合:模塊間通過(guò)參數(shù)傳遞基本類型的數(shù)據(jù)。在軟件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合的系統(tǒng)。在這樣的系統(tǒng)中可以研究、測(cè)試或維護(hù)任何一個(gè)模塊,而不需要對(duì)系統(tǒng)的其他模塊有很多了解。此外,由于模塊間聯(lián)系簡(jiǎn)單,發(fā)生在一處的錯(cuò)誤傳播到整個(gè)系統(tǒng)的可能性就很小。因此,模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性。如果兩個(gè)模塊中的每一個(gè)都能獨(dú)立地工作而不需要另一個(gè)模塊的存在,那么它們彼此完全獨(dú)立,這意味著模塊間無(wú)任何連接,耦合程度最低。但是,在一個(gè)軟件系統(tǒng)中不可能所有模塊之間都沒(méi)有任何連接。無(wú)直接耦合---即兩個(gè)模塊之間沒(méi)有直接的關(guān)系,它們分別從屬于不同模塊的控制和調(diào)用,它們之間不傳遞任何消息。它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的
模塊的耦合性最弱,獨(dú)立性最高。數(shù)據(jù)耦合---如果兩個(gè)模塊彼此間通過(guò)參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)的耦合。數(shù)據(jù)耦合是低耦合。系統(tǒng)中至少必須存在這種耦合,因?yàn)橹挥挟?dāng)某些模塊的輸出數(shù)據(jù)作為另一些模塊的輸入數(shù)據(jù)時(shí),系統(tǒng)才能完成有價(jià)值的功能。一般說(shuō)來(lái),一個(gè)系統(tǒng)內(nèi)可以只包含數(shù)據(jù)耦合。標(biāo)記耦合---指兩個(gè)模塊間傳遞數(shù)據(jù)結(jié)構(gòu)。如高級(jí)語(yǔ)言中的數(shù)組名、記錄名、文件名等這些名字即標(biāo)記,其實(shí)傳遞的是這個(gè)數(shù)據(jù)結(jié)構(gòu)的地址。
控制耦合---指一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),傳遞的是控制變量(如開(kāi)關(guān)、標(biāo)志等),被調(diào)模塊通過(guò)該控制變量的值有選擇地執(zhí)行塊內(nèi)某一功能。
即傳遞的信息中有控制信息(盡管有時(shí)這種控制信息以數(shù)據(jù)的形式出現(xiàn))的耦合。兩個(gè)模塊間存在調(diào)用關(guān)系,傳遞控制標(biāo)志。
控制耦合是中等程度的耦合,它增加了系統(tǒng)的復(fù)雜程度??刂岂詈贤嵌嘤嗟模诎涯K適當(dāng)分解之后通??梢杂脭?shù)據(jù)耦合代替它。
當(dāng)兩個(gè)或多個(gè)模塊通過(guò)一個(gè)公共數(shù)據(jù)環(huán)境相互作用時(shí),它們之間的耦合稱為公共耦合。公共環(huán)境可以是全程變量、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、任何存儲(chǔ)介質(zhì)上的文件、物理設(shè)備等等。公共耦合指兩個(gè)模塊間存在共享公共數(shù)據(jù)。公共耦合的復(fù)雜程序隨耦合模塊的個(gè)數(shù)增加而增加。
公共耦合的復(fù)雜程度隨耦合的模塊個(gè)數(shù)而變化,當(dāng)耦合的模塊個(gè)數(shù)增加時(shí)復(fù)雜程度顯著增加。如果只有兩個(gè)模塊有公共環(huán)境,那么這種耦合有下面兩種可能:(1)一個(gè)模塊往公共環(huán)境送數(shù)據(jù),另一個(gè)模塊從公共環(huán)境取數(shù)據(jù)。這是數(shù)據(jù)耦合的一種形式,是比較松散的耦合。(2)兩個(gè)模塊都既往公共環(huán)境送數(shù)據(jù)又從里面取數(shù)據(jù),這種耦合比較緊密,介于數(shù)據(jù)耦合和控制耦合之間。如果兩個(gè)模塊共享的數(shù)據(jù)很多,都通過(guò)參數(shù)傳遞可能很不方便,這時(shí)可以利用公共耦合。最高程度的耦合是內(nèi)容耦合。如果出現(xiàn)下列情況之一,兩個(gè)模塊間就發(fā)生了內(nèi)容耦合:一個(gè)模塊訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù);一個(gè)模塊不通過(guò)正常入口而轉(zhuǎn)到另一個(gè)模塊的內(nèi)部;兩個(gè)模塊有一部分程序代碼重疊(只可能出現(xiàn)在匯編程序中);一個(gè)模塊有多個(gè)入口(這意味著一個(gè)模塊有幾種功能)。應(yīng)該堅(jiān)決避免使用內(nèi)容耦合。事實(shí)上許多高級(jí)程序設(shè)計(jì)語(yǔ)言已經(jīng)設(shè)計(jì)成不允許在程序中出現(xiàn)任何形式的內(nèi)容耦合。內(nèi)容耦合是最高程度的耦合,也是最差的耦合。當(dāng)一個(gè)模塊直接使用另一個(gè)模塊的內(nèi)部數(shù)據(jù),或通過(guò)非正常入口而轉(zhuǎn)入另一個(gè)模塊內(nèi)部。
耦合是指不同模塊之間相互依賴程度的度量。高耦合(緊密耦合)是指兩個(gè)模塊之間存在著很強(qiáng)的依賴;低耦合(松散耦合)是指兩個(gè)模塊之間存在一定依賴;無(wú)耦合是指模塊之間根本沒(méi)有任何關(guān)系。如果模塊之間必須存在耦合,就盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,盡量避免使用使用內(nèi)容耦合。降低模塊之間耦合度的措施;
1在耦合方式降低模塊之間接口的復(fù)雜程度2在傳遞信息類型上盡量使用數(shù)據(jù)耦合,避免控制耦合,慎用或有控制使用公共耦合內(nèi)聚性:
內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。簡(jiǎn)單地說(shuō),理想內(nèi)聚的模塊只做一件事情。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚很壞,不要使用。內(nèi)聚:一個(gè)模塊之內(nèi)各成分之間相互依賴程度的度量。內(nèi)聚類型:--偶然內(nèi)聚:一個(gè)模塊之內(nèi)各成分之間沒(méi)有任何關(guān)系。--邏輯內(nèi)聚:幾個(gè)邏輯上相關(guān)的功能放在同一模塊中。--時(shí)間內(nèi)聚:一個(gè)模塊完成的功能必須在同一時(shí)間內(nèi)完成,而這些功能只是因?yàn)闀r(shí)間因素關(guān)聯(lián)在一起。--過(guò)程內(nèi)聚:處理成分必須以特定的次序執(zhí)行。--通信內(nèi)聚:各成分都操作在同一數(shù)據(jù)集或生成同一數(shù)據(jù)集。--順序內(nèi)聚:各成分與一個(gè)功能相關(guān),且一個(gè)成分的輸出作為另一成分的輸入。--功能內(nèi)聚:模塊的所有成分對(duì)完成單一功能是最基本的,且該模塊對(duì)完成這一功能而言是充分必要的。
低內(nèi)聚:偶然內(nèi)聚----指各個(gè)處理單元之間沒(méi)有直接關(guān)系。如果一個(gè)模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的。有時(shí)在寫完一個(gè)程序之后,發(fā)現(xiàn)一組語(yǔ)句在兩處或多處出現(xiàn),于是把這些語(yǔ)句作為一個(gè)模塊以節(jié)省內(nèi)存,這樣就出現(xiàn)了偶然內(nèi)聚的模塊。它使該模塊能執(zhí)行不同的功能。當(dāng)幾個(gè)模塊內(nèi)湊巧有一些程序段代碼相同,又沒(méi)有明確表現(xiàn)出獨(dú)立的功能,把這些代碼獨(dú)立出來(lái)建立的模塊即為偶然內(nèi)聚模塊。它是內(nèi)聚程度最低的模塊。缺點(diǎn)是模塊的內(nèi)容不易理解,不易修改和維護(hù)。
邏輯內(nèi)聚----如果一個(gè)模塊完成的任務(wù)在邏輯上屬于相同或相似的一類。這種模塊把幾種相關(guān)的功能組合在一起,每次被調(diào)用時(shí),由傳送給模塊的控制型參數(shù)來(lái)確定該模塊應(yīng)執(zhí)行哪一種功能。邏輯內(nèi)聚模塊比偶然內(nèi)聚模塊的內(nèi)聚程度要高。因?yàn)樗砻髁烁鞑糠种g在功能上的相關(guān)關(guān)系。如消息循環(huán)中的各個(gè)Case,根據(jù)不同的邏輯標(biāo)志,調(diào)用想應(yīng)該的塊。
時(shí)間內(nèi)聚----如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行。這種模塊大多為多功能模塊,但要求模塊的各個(gè)功能必須在同一時(shí)間段內(nèi)執(zhí)行。例如初始化模塊和終止模塊。時(shí)間內(nèi)聚模塊比邏輯內(nèi)聚模塊的內(nèi)聚程度又稍高一些。在一般情形下,各部分可以以任意的順序執(zhí)行,所以它的內(nèi)部邏輯更簡(jiǎn)單。
中內(nèi)聚:通信內(nèi)聚----模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù)。指模塊內(nèi)所有處理元素都在同一個(gè)數(shù)據(jù)結(jié)構(gòu)上操作(有時(shí)稱之為信息內(nèi)聚),或者指各處理使用相同的輸入數(shù)據(jù)或者產(chǎn)生相同的輸出數(shù)據(jù)。
高內(nèi)聚:順序內(nèi)聚----如果一個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行(通常一個(gè)處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸入數(shù)據(jù))。根據(jù)數(shù)據(jù)流圖劃分模塊時(shí),通常得到順序內(nèi)聚的模塊,這種模塊彼此間的連接往往比較簡(jiǎn)單。功能內(nèi)聚----這是最高程度的內(nèi)聚,指模塊內(nèi)所有元素共同完成一個(gè)功能,缺一不可。模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能。與其他模塊的耦合是最弱的。
功能內(nèi)聚 10分 時(shí)間內(nèi)聚 3分順序內(nèi)聚 9分 邏輯內(nèi)聚 1分通信內(nèi)聚 7分 偶然內(nèi)聚 0分事實(shí)上,沒(méi)有必要精確確定內(nèi)聚的級(jí)別。重要的是設(shè)計(jì)時(shí)力爭(zhēng)做到高內(nèi)聚,并且能夠辨認(rèn)出低內(nèi)聚的模塊,有能力通過(guò)修改設(shè)計(jì)提高模塊的內(nèi)聚程度降低模塊間的耦合程度,從而獲得較高的模塊獨(dú)立性。內(nèi)聚是指一個(gè)模塊內(nèi)部各成分之間相互關(guān)聯(lián)程度的度量。高內(nèi)聚是指一個(gè)模塊中各部分之間存在著很強(qiáng)的依賴;低內(nèi)聚是指一個(gè)模塊中各部分之間存在較少的依賴。
內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計(jì)的有力工具,但是實(shí)踐表明內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度上。啟發(fā)性規(guī)則-經(jīng)驗(yàn)的總結(jié)(1)改進(jìn)軟件結(jié)構(gòu),提高模塊獨(dú)立性;模塊劃分時(shí)力求低耦合,高內(nèi)聚,保持模塊的相對(duì)獨(dú)立性,并以此為原則優(yōu)化初始的軟件結(jié)構(gòu)。(2)模塊規(guī)模適中-每頁(yè)60行語(yǔ)句;經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過(guò)大,最好能寫在一頁(yè)紙內(nèi)(通常不超過(guò)60行語(yǔ)句)。有人從心理學(xué)角度研究得知,當(dāng)一個(gè)模塊包含的語(yǔ)句數(shù)超過(guò)30以后,模塊的可理解程度迅速下降。過(guò)大的模塊往往是由于分解不充分,但是進(jìn)一步分解必須符合問(wèn)題結(jié)構(gòu),一般說(shuō)來(lái),分解后不應(yīng)該降低模塊獨(dú)立性。過(guò)小的模塊開(kāi)銷大于有效操作,而且模塊數(shù)目過(guò)多將使系統(tǒng)接口復(fù)雜。因此過(guò)小的模塊有時(shí)不值得單獨(dú)存在,特別是只有一個(gè)模塊調(diào)用它時(shí),通常可以把它合并到上級(jí)模塊中去而不必單獨(dú)存在。(3)深度、寬度、扇入和扇出適中;如果層數(shù)過(guò)多則應(yīng)該考慮是否有許多管理模塊過(guò)分簡(jiǎn)單了,能否適當(dāng)合并。寬度是軟件結(jié)構(gòu)內(nèi)同一個(gè)層次上的模塊總數(shù)的最大值。一般說(shuō)來(lái),寬度越大系統(tǒng)越復(fù)雜。對(duì)寬度影響最大的因素是模塊的扇出。經(jīng)驗(yàn)表明,一個(gè)設(shè)計(jì)得好的典型系統(tǒng)的平均扇出通常是3或4(扇出的上限通常是5~9)。扇入越大則共享該模塊的上級(jí)模塊數(shù)目越多,這是有好處的,但是,不能違背模塊獨(dú)立原理單純追求高扇入(4)模塊的作用域力爭(zhēng)在控制域之內(nèi);一個(gè)模塊的作用范圍應(yīng)在其控制范圍之內(nèi),且判定所在的模塊與受其影響的模塊在層次上盡量靠近模塊的作用域定義為受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合。模塊的控制域是這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。例如,在下圖中模塊A的控制域是A、B、C、D、E、F等模塊的集合。在一個(gè)設(shè)計(jì)得很好的系統(tǒng)中,所有受判定影響的模塊應(yīng)該都從屬于做出判定的那個(gè)模塊,最好局限于做出判定的那個(gè)模塊本身及它的直屬下級(jí)模塊。在設(shè)計(jì)過(guò)程中,模塊的作用范圍不在其控制范圍之內(nèi)的改進(jìn)方法:1)上移判斷點(diǎn)2)下移受判斷影響的模塊(5)降低模塊接口的復(fù)雜性;模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。應(yīng)該仔細(xì)設(shè)計(jì)模塊接口,使得信息傳遞簡(jiǎn)單并且和模塊的功能一致。接口復(fù)雜或不一致(即看起來(lái)傳遞的數(shù)據(jù)之間沒(méi)有聯(lián)系),是緊耦合或低內(nèi)聚的征兆,應(yīng)該重新分析這個(gè)模塊的獨(dú)立性。(6)模塊功能應(yīng)該可以預(yù)測(cè)。應(yīng)用示例:數(shù)字儀表板系統(tǒng)的精化讀旋轉(zhuǎn)信號(hào)收集并求平均轉(zhuǎn)換成轉(zhuǎn)/分計(jì)算gph讀并校核確定加速/減速計(jì)算里程計(jì)算mph和超速值計(jì)算燃料消耗產(chǎn)生加速/減速顯示產(chǎn)生里程顯示發(fā)出鈴聲產(chǎn)生mph顯示產(chǎn)生mpg顯示旋轉(zhuǎn)信號(hào)信號(hào)/秒
(sps)
sps燃燒流傳感器信號(hào)燃燒流gph
sps
rpm
rpm箭頭指示上箭頭下箭頭水平線英里超速值mphmpgmpg顯示mph顯示鈴聲里程顯示輸入部分GetgphGetrpmGetspsGet燃料流變換燃料流為ghp
Get燃轉(zhuǎn)信號(hào)變換燃轉(zhuǎn)信號(hào)為燃料流變換sps為rpmGetspsGetsps轉(zhuǎn)換為sps
Get轉(zhuǎn)速信號(hào)變換為sps變換為sps
、數(shù)字儀表板系統(tǒng)輸入部分的精化輸入部分的初始模塊結(jié)構(gòu)圖轉(zhuǎn)速信號(hào)轉(zhuǎn)速信號(hào)燃料流燃料流燃料流gphspsspsrpmspsrpm
gphspsspsspsspsspsspssps轉(zhuǎn)速信號(hào)轉(zhuǎn)速信號(hào)輸入部分計(jì)算gph計(jì)算rpm計(jì)算sps讀燃轉(zhuǎn)信號(hào)采集sps讀轉(zhuǎn)速信號(hào)
使用啟發(fā)式規(guī)則1,并考慮其它規(guī)則,可以將輸入部分的模塊結(jié)構(gòu)圖精化為:其中:sps為轉(zhuǎn)速的每秒信號(hào)量;sps為sps的平均值;sps為sps的瞬時(shí)變化值;rpm為每分鐘轉(zhuǎn)速;mph為每小時(shí)英里數(shù);gph為每小時(shí)燃燒的燃料加侖數(shù);rpm為行進(jìn)里程。輸出部分PUTmpgPUTmphPUT里程PUT加/減速PUT超速量顯示顯示顯示、
數(shù)字儀表板系統(tǒng)輸出部分的精化
輸出部分的初始模塊結(jié)構(gòu)圖
顯示對(duì)于這一初始的模塊結(jié)構(gòu)圖,一般情況下應(yīng):把相同或類似的物理輸出合并為一個(gè)模塊,以減少模塊之間的關(guān)聯(lián)。就本例而言:左邊前三個(gè)“顯示”,基本上屬于相似的物理輸出,因此可以把它們合并為一個(gè)顯示模塊。而將“PUTmpg”模塊和相關(guān)的“生成顯示‘的模塊合并為一個(gè)模塊;同樣地,應(yīng)把“PUTmph”模塊、“PUT里程”各自與相關(guān)的生成顯示的模塊合并為一個(gè)模塊,參見(jiàn)下圖。其它求精的規(guī)則,與輸入部分類同。例如,可以將“PUT加/減速”模塊與其下屬的兩個(gè)模塊合并為一個(gè)模塊,將“PUT超速量”模塊與其下屬的兩個(gè)模塊合并為一個(gè)模塊。
輸出模塊生成mpg顯示生成mph顯示生成里程顯示生成加/減速顯示生成蜂鳴顯示
通過(guò)以上求精之后,可得如下的模塊結(jié)構(gòu)圖
變換模塊計(jì)算mpg計(jì)算mph計(jì)算里程計(jì)算加/減速、變換部分的精化首先,應(yīng)該了解:對(duì)于變換部分的求精,是一項(xiàng)具有挑戰(zhàn)性的工作。其中主要是根據(jù)設(shè)計(jì)準(zhǔn)則,并要通過(guò)實(shí)踐,不斷地總結(jié)經(jīng)驗(yàn),才能設(shè)計(jì)出合理的模塊結(jié)構(gòu)。就給定的數(shù)字儀表板系統(tǒng)而言,如果把“確定加/減速”的模塊放在“計(jì)算速度mph”模塊下面,則可以減少模塊之間的關(guān)聯(lián),提高模塊的獨(dú)立性。通過(guò)這一求精,可以得到如下的模塊結(jié)構(gòu)圖:
通過(guò)以上討論,可以看出:在總體設(shè)計(jì)中將一個(gè)給定的DFD轉(zhuǎn)換為初始的模塊結(jié)構(gòu)圖基本上是一個(gè)“機(jī)械”的過(guò)程,一般體現(xiàn)不了設(shè)計(jì)人員的創(chuàng)造力;優(yōu)化設(shè)計(jì)-將一個(gè)初始的模塊結(jié)構(gòu)圖轉(zhuǎn)換為最終的模塊結(jié)構(gòu)圖,對(duì)設(shè)計(jì)人員將是一種挑戰(zhàn),其結(jié)果將直接影響軟件系統(tǒng)開(kāi)發(fā)的質(zhì)量。經(jīng)過(guò)總體設(shè)計(jì)階段的工作,已經(jīng)確定了軟件的模塊結(jié)構(gòu)和接口描述,可作為詳細(xì)設(shè)計(jì)的一個(gè)重要輸入。在此基礎(chǔ)上,通過(guò)詳細(xì)設(shè)計(jì),具體描述模塊結(jié)構(gòu)圖中的每一模塊,即給出實(shí)現(xiàn)模塊功能的實(shí)施機(jī)制,包括一組例程和數(shù)據(jù)結(jié)構(gòu),從而精確地定義了滿足需求所規(guī)約的結(jié)構(gòu)。具體地說(shuō),詳細(xì)設(shè)計(jì)又是一個(gè)相對(duì)獨(dú)立的抽象層,使用的術(shù)語(yǔ)包括輸入語(yǔ)句、賦值語(yǔ)句、輸出語(yǔ)句、順序語(yǔ)句、選擇語(yǔ)句、重復(fù)語(yǔ)句等。詳細(xì)設(shè)計(jì)的目標(biāo)是將總體設(shè)計(jì)階段所產(chǎn)生的系統(tǒng)高層結(jié)構(gòu)映射為以這些術(shù)語(yǔ)所表達(dá)的低層結(jié)構(gòu),也是系統(tǒng)的最終結(jié)構(gòu)。(2)詳細(xì)設(shè)計(jì)層
--主要引入了關(guān)于三種動(dòng)作控制結(jié)構(gòu)的術(shù)語(yǔ)/符號(hào)三種控制結(jié)構(gòu):順序,選擇和循環(huán)這三種結(jié)構(gòu)在表達(dá)系統(tǒng)行為方面是完備的第一種表達(dá)-偽碼順序begins1;s2;…snend;選擇if條件表達(dá)式thens1elses2;循環(huán)while條件表達(dá)式dos;偽碼是一種混合語(yǔ)言。外部采用形式語(yǔ)言的控制結(jié)構(gòu),內(nèi)部使用自然語(yǔ)言。例如:Begin輸入一元二次方程的系數(shù)a,b,c;ifb2-4acothen計(jì)算兩實(shí)根else輸出無(wú)實(shí)根;end.第二種表達(dá)-框圖s1s2s1s2...sS1S2S3S1S2X5X<5S注:支持逐步求精設(shè)計(jì)第三種表達(dá)-PAD圖第四種表達(dá)-N-S圖
支持逐步求精設(shè)計(jì)舉例順序:選擇:循環(huán):條件FTS1S2循環(huán)條件循環(huán)體N:=1..10
X>5TFFTS1S2S3S4S5S6S8S7S9S10
X>10&Y>3結(jié)構(gòu)化方法總結(jié)一切系統(tǒng)都是由有信息流構(gòu)成的(其中包含一些必要的數(shù)據(jù)變換),它們的相互作用、相互影響,構(gòu)成了大千世界的各式各樣系統(tǒng)。
1)結(jié)構(gòu)化方法的世界觀方法學(xué)的提出,通常與信息域研究的主要內(nèi)容相關(guān):
1)信息流-例如,結(jié)構(gòu)化方法2)信息內(nèi)容-例如,面向?qū)ο蠓椒?)信息結(jié)構(gòu)-例如,JACKSON方法
2)基于的基本原理/原則自頂向下功能分解數(shù)據(jù)抽象
功能/過(guò)程抽象模塊化;
……結(jié)構(gòu)化方法的抽象層,包括:
需求分析層
設(shè)計(jì)層
實(shí)現(xiàn)層問(wèn)題空間解空間自頂向下3)結(jié)構(gòu)化方法是一種系統(tǒng)化的軟件系統(tǒng)建模方法,從測(cè)試的角度看,結(jié)構(gòu)化方法是一種特定的建立驗(yàn)證和確認(rèn)所需標(biāo)尺的方法學(xué),包括結(jié)構(gòu)化分析和結(jié)構(gòu)化設(shè)計(jì)。緊緊圍繞“自頂向下”“過(guò)程抽象”“數(shù)據(jù)抽象”和“模塊化”等基本原理/原則給出了完備的符號(hào)
可操作的過(guò)程
易理解的表示工具并提供了控制信息組織復(fù)雜性的機(jī)制,例如逐層分解,數(shù)據(jù)打包等
以支持將問(wèn)題空間的一個(gè)問(wèn)題映射為解空間的一個(gè)解
4)該方法的組成捕獲的“過(guò)程”和“數(shù)據(jù)”恰恰是客觀事物的易變性質(zhì)解的結(jié)構(gòu)沒(méi)有保持原系統(tǒng)的結(jié)構(gòu)從而:造成維護(hù),驗(yàn)證上的困難。AB1B2B3B4C2C3C4C5C1DnDm…數(shù)據(jù)結(jié)構(gòu)1數(shù)據(jù)結(jié)構(gòu)24)問(wèn)題章節(jié)同步練習(xí)
一、單項(xiàng)選擇題1、數(shù)據(jù)字典定義數(shù)據(jù)流或數(shù)據(jù)存儲(chǔ)組成時(shí),使用了若干符號(hào),其中{}表示的含義是()A可選B與C或D重復(fù)----------------------------------------------------------本題在2009年10月真題第一大題第3小題考查過(guò),主要考查的知識(shí)點(diǎn)為定義數(shù)據(jù)字典中的數(shù)據(jù)結(jié)構(gòu)符號(hào){}。{}是重復(fù)結(jié)構(gòu),是指數(shù)據(jù)A是由多個(gè)重復(fù)出現(xiàn)的數(shù)據(jù)B構(gòu)成的。2、軟件結(jié)構(gòu)化設(shè)計(jì)中,好的軟件結(jié)構(gòu)應(yīng)該力求做到()A頂層扇出較少,中間扇出較高,底層模塊低扇入B頂層扇出較高,中間扇出較少,底層摸塊高扇入C頂層扇入較少,中間扇出較高,底層模塊高扇入D頂層扇入較少,中間扇入較高,底層模塊低扇入------------------------------------本題在2010年10月真題第一大題第9小題考查過(guò),主要考查的知識(shí)點(diǎn)為軟件的結(jié)構(gòu)設(shè)計(jì)。通常一個(gè)好的軟件設(shè)計(jì)結(jié)構(gòu),頂層摸塊扇出的比較大,中間層模塊扇出較小,而底層模塊具有較大的扇入,系統(tǒng)的模塊結(jié)構(gòu)呈現(xiàn)的是"葫蘆"形狀。3、在圖中結(jié)構(gòu)圖的深度為()A3B4C5D6----------------------------4、在圖中結(jié)構(gòu)圖的寬度為()A3B4C5D6----------------------------
本題主要考查的知識(shí)點(diǎn)為軟件結(jié)構(gòu)的深度和寬度。在一個(gè)軟件結(jié)構(gòu)中,深度表示其控制的層數(shù)。寬度是指同一個(gè)層次上模塊總數(shù)的最大值。5、對(duì)于圖中,下列說(shuō)法正確的是A摸塊A的扇出為5B模塊A的扇出為1C模塊C的扇出為3D模塊C的扇出為5---------------------------------------在本題主要考查的知識(shí)點(diǎn)為軟件結(jié)構(gòu)的扇出。模塊扇出是指一個(gè)模塊直接控制的下層模塊的數(shù)目6、對(duì)于圖中,下列說(shuō)法工確的是A模塊E的扇入為4B模塊E的扇入為3C模塊E的扇入為2D模塊E的扇入為1---------------------------------------本題主要考查的知識(shí)點(diǎn)為軟件結(jié)構(gòu)的扇入。扇入表示的是有多少個(gè)上級(jí)摸塊直接調(diào)用它7、對(duì)于類程序設(shè)計(jì)語(yǔ)言,下面說(shuō)法錯(cuò)誤的是APDL是一種"混合"語(yǔ)言BPDL是一種表示數(shù)據(jù)結(jié)構(gòu)和處理過(guò)程的設(shè)計(jì)工具CPDL不可以作為注釋工具直接嵌入在源程序中D已存在的一些PDL處理工具,可自動(dòng)生成程序代碼,提高軟件生產(chǎn)率---------------------------------------本題主要考查的知識(shí)點(diǎn)為類程序設(shè)計(jì)語(yǔ)言(PDL)。為了保持文檔和程序的一致性,提高文檔的質(zhì)量,PDL可以作為注釋工具直接插在源程序中。8、以下說(shuō)法正確的是()A程序流程圖是一種算法描述工具BPAD圖是一種描述程序邏輯結(jié)構(gòu)的工具CPDL是一種用于描述模塊算法設(shè)計(jì)和處理細(xì)節(jié)的語(yǔ)言DN-S圖設(shè)計(jì)的摸塊不一定是結(jié)構(gòu)化的---------------------------------------本題主要考查的知識(shí)點(diǎn)為詳細(xì)設(shè)計(jì)工具。選項(xiàng)中只有B選項(xiàng)是正確的,其余均有誤,N-S圖設(shè)計(jì)的摸塊一定是結(jié)構(gòu)化的,PDL是一種表示數(shù)據(jù)結(jié)構(gòu)和處理過(guò)程的設(shè)計(jì)工具,程序流程圖不是算法描述工具。9、以下說(shuō)法錯(cuò)誤的是()APAD圖支持逐步求精的設(shè)計(jì)方法B程序流程圖往往反映的是最后的結(jié)果C程序流程圖容易造成非結(jié)構(gòu)化的程序結(jié)構(gòu)D程序流程圖清晰反映了逐步求精的過(guò)程---------------------------------------本題主要考查的知識(shí)點(diǎn)為對(duì)詳細(xì)設(shè)計(jì)工具的理解。在選項(xiàng)D中,程序流程圖不是一種逐步求精的工具,它誘使程序員過(guò)早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu),故D選項(xiàng)是錯(cuò)誤的。10、對(duì)于PDL與需求分析中描述加工邏輯的“結(jié)構(gòu)化語(yǔ)言”的區(qū)別,以下說(shuō)法錯(cuò)誤的是()APDL不是結(jié)構(gòu)化語(yǔ)言B需求分析中描述加工邏輯的"結(jié)構(gòu)化自然語(yǔ)言"無(wú)嚴(yán)格的語(yǔ)法CPDL外層語(yǔ)言更嚴(yán)格一些,更趨于形式化D需求分析中描述加工邏輯的“結(jié)構(gòu)化語(yǔ)言”內(nèi)層自然語(yǔ)言描述較抽象、較概括---------------------------------------本題主要考查的知識(shí)點(diǎn)為PDL與結(jié)構(gòu)化語(yǔ)言。PDL是一種“混合”語(yǔ)言,它可以是結(jié)構(gòu)化的語(yǔ)言,也可以是某種自然語(yǔ)言。11、模塊的內(nèi)聚性可以按照內(nèi)聚程度的高低進(jìn)行排序,以下排列中屬于從低到高的正確次序是A偶然內(nèi)聚,時(shí)間內(nèi)聚,邏輯內(nèi)聚B通信內(nèi)聚,時(shí)間內(nèi)聚,邏輯內(nèi)聚C功能內(nèi)聚,通信內(nèi)聚,時(shí)間內(nèi)聚D邏輯內(nèi)聚,通信內(nèi)聚,順序內(nèi)聚---------------------------------------本題在2006年10月真題第一大題第14小題考查過(guò),主要考查的知識(shí)點(diǎn)為模塊的內(nèi)聚性。按照內(nèi)聚程度的高低來(lái)說(shuō),功能內(nèi)聚的程度最高,偶然內(nèi)聚的程度是最低的。12、結(jié)構(gòu)化程序設(shè)計(jì)主要強(qiáng)調(diào)的是()A程序的規(guī)摸B程序的效率C程序設(shè)計(jì)語(yǔ)言的先進(jìn)性D程序易讀性---------------------------------------本題在2001年10月真題第一大題第16小題考查過(guò),主要考查的知識(shí)點(diǎn)為結(jié)構(gòu)化程序設(shè)計(jì)的理解。結(jié)構(gòu)化程序設(shè)計(jì)的本質(zhì)是使程序的控制流程線性化,實(shí)現(xiàn)程序的動(dòng)態(tài)執(zhí)行符合靜態(tài)書寫的結(jié)構(gòu),從而增強(qiáng)程序的可讀性13、定義了數(shù)據(jù)流圖中每一個(gè)圖形元素的結(jié)構(gòu)化分析方法的描述工具是()A數(shù)據(jù)流圖B
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報(bào)參考:進(jìn)一步全面深化改革推進(jìn)中國(guó)式現(xiàn)代化的學(xué)理性研究
- 課題申報(bào)參考:建設(shè)用地減量化的空間優(yōu)化效應(yīng)、機(jī)制與政策優(yōu)化研究
- 2025年erp沙盤模擬學(xué)習(xí)心得(3篇)
- 2025版投資協(xié)議補(bǔ)充協(xié)議:產(chǎn)業(yè)鏈整合投資合作補(bǔ)充協(xié)議3篇
- 2025年度個(gè)性化定制汽車租賃合同書4篇
- 二零二五版漫畫連載網(wǎng)絡(luò)平臺(tái)版權(quán)合作協(xié)議4篇
- 2025年汕尾貨車從業(yè)資格證考什么
- 2025年食堂承包經(jīng)營(yíng)食品安全風(fēng)險(xiǎn)評(píng)估與防控合同3篇
- 二零二五年度城市公交車輛掛靠經(jīng)營(yíng)許可合同4篇
- 二零二五年度廠房污水處理及排放合同匯編3篇
- 2025年溫州市城發(fā)集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2025年中小學(xué)春節(jié)安全教育主題班會(huì)課件
- 2025版高考物理復(fù)習(xí)知識(shí)清單
- 除數(shù)是兩位數(shù)的除法練習(xí)題(84道)
- 2025年度安全檢查計(jì)劃
- 2024年度工作總結(jié)與計(jì)劃標(biāo)準(zhǔn)版本(2篇)
- 全球半導(dǎo)體測(cè)試探針行業(yè)市場(chǎng)研究報(bào)告2024
- 反走私課件完整版本
- 2024年注冊(cè)計(jì)量師-一級(jí)注冊(cè)計(jì)量師考試近5年真題附答案
- 【可行性報(bào)告】2023年電動(dòng)自行車行業(yè)項(xiàng)目可行性分析報(bào)告
- 臨床見(jiàn)習(xí)教案COPD地診療教案
評(píng)論
0/150
提交評(píng)論