




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件設(shè)計(jì)與編碼3第三章第三章軟件設(shè)計(jì)與編碼33.1軟件設(shè)計(jì)階段的任務(wù)與目標(biāo)3.2軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖3.3
模塊的獨(dú)立性3.4結(jié)構(gòu)化設(shè)計(jì)(SD)法3.5JACKSON系統(tǒng)開發(fā)方法3.6詳細(xì)設(shè)計(jì)的描述工具3.7用戶界面設(shè)計(jì)3.8程序編碼33.1軟件設(shè)計(jì)的任務(wù)與目標(biāo)3.1.1軟件設(shè)計(jì)在開發(fā)階段中的重要性3.1.2軟件設(shè)計(jì)階段的任務(wù)3.1軟件設(shè)計(jì)的目標(biāo)和任務(wù)目錄33.2軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖3.2.1軟件結(jié)構(gòu)的基本概念3.2.2軟件的樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)3.2.3軟件結(jié)構(gòu)圖(SC圖)3.2軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖目錄33.3模塊的獨(dú)立性3.3.1模塊獨(dú)立性3.3.2耦合性3.3.3內(nèi)聚性3.3模塊的獨(dú)立性目錄3.3.4信息屏蔽33.4結(jié)構(gòu)化設(shè)計(jì)(SD)方法3.4.1結(jié)構(gòu)化設(shè)計(jì)方法概述3.4.2數(shù)據(jù)流圖的分類與典型的系統(tǒng)結(jié)構(gòu)3.4.3變換分析3.4結(jié)構(gòu)化設(shè)計(jì)方法目錄3.4.4事務(wù)分析3.4.6軟件模塊結(jié)構(gòu)圖的改進(jìn)3.4.5實(shí)例:銀行貸款文件管理33.5JACKSON系統(tǒng)開發(fā)方法3.5.1JACKSON方法簡介3.5.2JACKSON方法的設(shè)計(jì)過程3.5.3JACKSON方法的技術(shù)構(gòu)成3.5JACKSON系統(tǒng)開發(fā)方法目錄33.6.1程序流程圖3.6.2N-S圖3.6.3PAD圖3.6詳細(xì)設(shè)計(jì)描述的工具目錄3.6詳細(xì)設(shè)計(jì)描述的工具33.7.1用戶界面的特性及設(shè)計(jì)任務(wù)3.7.2用戶界面的基本類型3.7.3I/O用戶界面設(shè)計(jì)3.7用戶界面的設(shè)計(jì)目錄3.7用戶界面的設(shè)計(jì)33.8.1程序設(shè)計(jì)語言的選擇3.8.2結(jié)構(gòu)化程序設(shè)計(jì)3.8.3程序設(shè)計(jì)風(fēng)格3.8程序編碼目錄3.8程序編碼3.8.4算法與程序效率3.1軟件設(shè)計(jì)階段的任務(wù)與目標(biāo)正如任何工程項(xiàng)目一樣,在生產(chǎn)之前要做設(shè)計(jì),軟件編碼前,也必須先進(jìn)行軟件設(shè)計(jì)。軟件設(shè)計(jì)是軟件開發(fā)的關(guān)鍵步驟,直接影響軟件的質(zhì)量。在軟件需求分析階段已經(jīng)完全弄清楚了軟件的各種需求,較好地解決了所開發(fā)的軟件“做什么”的問題,并已在軟件需求說明書和數(shù)據(jù)要求說明書中詳盡和充分地闡明了這些需求以后,下一步就要著手實(shí)現(xiàn)軟件的需求,即軟件設(shè)計(jì)階段要解決“怎么做”的問題。3.1軟件設(shè)計(jì)階段的任務(wù)與目標(biāo)3.1.1軟件設(shè)計(jì)在開發(fā)階段中的重要性軟件設(shè)計(jì)功能與性能需求編碼軟件測試程序模塊已測試軟件系統(tǒng)結(jié)構(gòu)設(shè)計(jì)過程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)信息域需求開發(fā)階段信息流3.1.1軟件設(shè)計(jì)在開發(fā)階段中的重要性軟件設(shè)計(jì)階段要解決“如何做”的問題。這顯然是整個(gè)軟件開發(fā)過程的核心問題,所有的開發(fā)工作都將根據(jù)設(shè)計(jì)的方案進(jìn)行。系統(tǒng)的總體結(jié)構(gòu)在該階段決定,因此軟件的總體設(shè)計(jì)決定了系統(tǒng)的質(zhì)量。軟件需求確定以后,進(jìn)入由軟件設(shè)計(jì)、編碼、測試三個(gè)關(guān)聯(lián)階段構(gòu)成的開發(fā)階段。開發(fā)階段的信息流如圖所示。在設(shè)計(jì)步驟中,根據(jù)軟件的功能和性能需求等,采用某種設(shè)計(jì)方法進(jìn)行數(shù)據(jù)設(shè)計(jì)、系統(tǒng)結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)側(cè)重于軟件數(shù)據(jù)結(jié)構(gòu)的定義。系統(tǒng)結(jié)構(gòu)設(shè)計(jì)定義軟件系統(tǒng)的整體結(jié)構(gòu),是軟件開發(fā)的核心步驟。在設(shè)計(jì)步驟中,建立軟件主要成份之間的關(guān)系。過程設(shè)計(jì)則是把結(jié)構(gòu)成份轉(zhuǎn)換成軟件的過程性描述。在編碼步驟中,根據(jù)這種過程性描述,生成源程序代碼,然后通過測試,最終得到完整有效的軟件。3.1.2軟件設(shè)計(jì)階段的任務(wù)總體設(shè)計(jì)需求說明書復(fù)審軟件結(jié)構(gòu)修改詳細(xì)設(shè)計(jì)可接受模塊描述復(fù)審修改
設(shè)計(jì)說明書軟件設(shè)計(jì)工作流程3.1.2軟件設(shè)計(jì)階段的任務(wù)一、軟件設(shè)計(jì)的任務(wù)將分析階段獲得的需求說明轉(zhuǎn)換為計(jì)算機(jī)中可實(shí)現(xiàn)的系統(tǒng),完成系統(tǒng)的結(jié)構(gòu)設(shè)計(jì),包括數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu),最后得到軟件設(shè)計(jì)說明書。設(shè)計(jì)階段結(jié)束要交付的文檔是設(shè)計(jì)說明書,根據(jù)設(shè)計(jì)方法的不同,有不同的設(shè)計(jì)文檔。每個(gè)設(shè)計(jì)步驟完成后,都應(yīng)進(jìn)行復(fù)審。從工程管理的角度來看,軟件設(shè)計(jì)分兩步完成;分為總體設(shè)計(jì)(概要設(shè)計(jì))和詳細(xì)設(shè)計(jì)兩個(gè)階段。其工作流程如圖所示。首先做概要設(shè)計(jì),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。然后是詳細(xì)設(shè)計(jì),即過程設(shè)計(jì)。通過對結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。
三類設(shè)計(jì)任務(wù)1、劃分模塊,確定軟件結(jié)構(gòu)
開發(fā)方法不同,確定軟件結(jié)構(gòu)的方法也不同。例如SD法,是從分層的DFD圖導(dǎo)出初始的結(jié)構(gòu)圖,再對初始的結(jié)構(gòu)圖進(jìn)行改進(jìn),獲得最終的結(jié)構(gòu)圖。一般包括確定系統(tǒng)的軟件結(jié)構(gòu),分解模塊,確定系統(tǒng)的模塊層次關(guān)系。2、確定系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的建立對于信息系統(tǒng)而言尤為重要。要確定數(shù)據(jù)的類型,組織、存取方式,相關(guān)程度及處理方式等。3、設(shè)計(jì)用戶界面作為人機(jī)接口的用戶界面起著越來越重要的作用,它直接影響到軟件的壽命。因此,軟件設(shè)計(jì)階段的任務(wù)可分為三部分:軟件設(shè)計(jì)的目標(biāo)3.1.2軟件設(shè)計(jì)階段的任務(wù)軟件設(shè)計(jì)高可靠性高可維護(hù)性高可理解性高效率
軟件設(shè)計(jì)的目標(biāo)3.1.2軟件設(shè)計(jì)階段的任務(wù)二、軟件設(shè)計(jì)的目標(biāo)在設(shè)計(jì)階段應(yīng)達(dá)到的目標(biāo)是:提高可靠性;提高可維護(hù)性;提高可理解性;提高效率。衡量該目標(biāo)的準(zhǔn)則:1、軟件實(shí)體有明顯的層次結(jié)構(gòu),利于軟件元素間控制。2、軟件實(shí)體應(yīng)該是模塊化的,模塊具有獨(dú)立功能。3、軟件實(shí)體與環(huán)境的界面清晰。4、設(shè)計(jì)規(guī)格說明清晰、簡潔、完整和無二義性。
軟件設(shè)計(jì)的目標(biāo)常用的設(shè)計(jì)方法有:SD法、Jackson法、HIPO法、Parnas法、Warnier法等。3.2軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖3.2軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖軟件結(jié)構(gòu)是軟件模塊之間關(guān)系的表示,它決定了整個(gè)系統(tǒng)的結(jié)構(gòu),也確定了系統(tǒng)的質(zhì)量。模塊之間的關(guān)系可有多種,但都可以歸結(jié)為一種層次關(guān)系。軟件結(jié)構(gòu)圖是總體設(shè)計(jì)階段的主要描述工具,它描述了構(gòu)成系統(tǒng)的基本元素——模塊及模塊之間的調(diào)用關(guān)系,模塊之間的數(shù)據(jù)傳遞關(guān)系。本節(jié)討論如何進(jìn)行軟件結(jié)構(gòu)的設(shè)計(jì),設(shè)計(jì)的準(zhǔn)則以及為了提高軟件系統(tǒng)的質(zhì)量,如何對軟件結(jié)構(gòu)進(jìn)行改進(jìn)的技術(shù)。3.2.1軟件結(jié)構(gòu)的基本概念二、模塊化
模塊化就是將系統(tǒng)劃分為若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能。模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復(fù)雜性,使軟件結(jié)構(gòu)清晰,易閱讀、易理解,易于測試和調(diào)試,因而也有助于提高軟件的可靠性。3.2.1軟件結(jié)構(gòu)的基本概念軟件結(jié)構(gòu)表示軟件系統(tǒng)的構(gòu)成,是軟件模塊間關(guān)系的表示,下圖則為軟件結(jié)構(gòu)示意圖。下面先介紹幾個(gè)相關(guān)的的概念。ABCDEFGHIJKLM一、模塊(Module)模塊是程序?qū)ο笥忻值募?。例如,過程、函數(shù)、子程序、宏等,是構(gòu)成軟件系統(tǒng)結(jié)構(gòu)的基本元素。
軟件結(jié)構(gòu)圖模塊化降低軟件復(fù)雜度的簡單證明3.2.1軟件結(jié)構(gòu)的基本概念模塊化降低軟件復(fù)雜度的簡單證明令:C(X)表示問題X的復(fù)雜度函數(shù);
E(X)解決問題X所需工作量的復(fù)雜度函數(shù);若:有問題P1,P2;
C(P1)>C(P2);顯然:E(P1)>E(P2)由經(jīng)驗(yàn):C(P1+P2)>C(P1)+C(P2)于是:E(P1+P2)>E(P1)+E(P2)將問題(P1+P2)劃分為兩個(gè)問題P1和P2后,其工作量和復(fù)雜度都降低。
并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量增加。顯然,每個(gè)軟件系統(tǒng)都有一個(gè)最佳模塊數(shù)M。注意選擇分解的最佳模塊數(shù)。右上圖描述了模塊化與軟件成本的關(guān)系。軟件總成本
模塊化與軟件成本的關(guān)系成本模塊數(shù)目模塊成本接口成本}最小成本區(qū)M軟件的層次結(jié)構(gòu)3.2.1軟件結(jié)構(gòu)的基本概念頂層1層2層ABCDEFGHIJKLMN深度扇入為2扇出為3扇入為33層4層寬度寬度寬度
軟件結(jié)構(gòu)示意圖有關(guān)指標(biāo):⑴深度:表示軟件結(jié)構(gòu)中從頂層模塊到最底層模塊的層數(shù)。⑵寬度:表示控制的總分布。⑶扇出數(shù):指一個(gè)模塊直接控制下屬的模塊個(gè)數(shù)。⑷扇入數(shù):指一個(gè)模塊的直接上屬模塊個(gè)數(shù)。一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。軟件結(jié)構(gòu)圖表示軟件的系統(tǒng)結(jié)構(gòu),它是軟件模塊間關(guān)系的表示,軟件之間的各種關(guān)系,均可表示為層次結(jié)構(gòu)。如圖所示。3.2.2軟件的樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)3.2.2軟件的樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)由模塊連接而得到的軟件結(jié)構(gòu)最普通的形式就是樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)。在樹狀結(jié)構(gòu)中,位于最上層的根部是頂層模塊,它是程序的主模塊。與其聯(lián)系的有若干下屬模塊,各下屬模塊還可以進(jìn)一步引出更下一層的下屬模塊,如圖所示的樹狀結(jié)構(gòu)。樹狀結(jié)構(gòu)的特點(diǎn)是:整個(gè)結(jié)構(gòu)只有一個(gè)頂層模塊,而對于任何一個(gè)下屬模塊來說,它只有一個(gè)上級模塊,而且同一層模塊之間不發(fā)生關(guān)系。頂層1層2層3層
軟件的樹狀結(jié)構(gòu)ABCDEFGHIKLM網(wǎng)狀結(jié)構(gòu)上圖是網(wǎng)狀結(jié)構(gòu)的兩個(gè)例子。在網(wǎng)狀結(jié)構(gòu)中,任何兩個(gè)模塊間都可以有雙向的關(guān)系。由于不存在上級模塊和下屬模塊的關(guān)系,也就分不出層次來。任何兩個(gè)模塊都是平等的,沒有從屬關(guān)系。
網(wǎng)狀結(jié)構(gòu)(a)(b)3.2.2軟件的樹狀結(jié)構(gòu)和網(wǎng)狀結(jié)構(gòu)ABCDEFGHABCD
分析比較兩種結(jié)構(gòu)的特點(diǎn)后可以看出,對于不加限制的網(wǎng)狀結(jié)構(gòu),由于模塊間相互關(guān)系的任意性,使得整個(gè)結(jié)構(gòu)十分復(fù)雜,處理起來勢必引起許多麻煩,這與原來劃分模塊為便于處理的意圖相矛盾。所以在軟件開發(fā)的實(shí)踐中,人們通常采用樹狀結(jié)構(gòu),而不采用網(wǎng)狀結(jié)構(gòu)。模塊5模塊5模塊4模塊43.2.3軟件結(jié)構(gòu)圖(SC圖)模塊1模塊3模塊2valuesvaluesdatadata模塊1模塊2模塊3valuesvaluesdatadata3.2.3軟件結(jié)構(gòu)圖(SC圖)結(jié)構(gòu)圖(StructureChart,簡稱SC圖)是精確表達(dá)軟件結(jié)構(gòu)的圖形表示方法,它以特定的符號(hào)表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞。結(jié)構(gòu)圖的主要構(gòu)成有:⑴模塊(Module):用矩形框表示,框中寫有模塊的名字,說明模塊的功能。模塊是程序?qū)ο笥忻值募?。例如:過程、函數(shù)、子程序、宏等。⑶數(shù)據(jù):調(diào)用箭頭邊上的小箭頭表示調(diào)用時(shí)從一個(gè)模塊傳送給另一模塊的數(shù)據(jù)。通常在短箭頭附近應(yīng)注有信息的名字,如圖所示。
模塊調(diào)用圖⑵調(diào)用:從一個(gè)模塊指向另一個(gè)模塊的箭頭表示前一模塊對后一模塊的調(diào)用,一般是上層調(diào)用下層。右圖表示模塊1調(diào)用了模塊2和模塊3。data軟件結(jié)構(gòu)圖的輔助符號(hào)
模塊間接口的表示A查詢學(xué)生成績B查找學(xué)生記錄○學(xué)號(hào)查找成功的信號(hào)
當(dāng)模塊A有條件地調(diào)用另一個(gè)模塊B時(shí),在模塊A的箭頭尾部標(biāo)以一個(gè)菱形符號(hào),當(dāng)一個(gè)模塊A反復(fù)地調(diào)用模塊C和模塊D時(shí),在調(diào)用箭頭尾部則標(biāo)以一個(gè)弧形符號(hào),如圖3.11所示。在結(jié)構(gòu)圖中這種條件調(diào)用所依賴的條件和循環(huán)調(diào)用所依賴的循環(huán)控制條件通常無需注明。常用尾端帶有空心圓的短箭頭表示數(shù)據(jù)信息,用尾端帶有實(shí)心圓的短箭頭表示控制信息。有的結(jié)構(gòu)圖對這兩種信息不加以區(qū)別,一律用注有信息名的短箭頭來表示,如圖所示。
○數(shù)字信息控制信息3.2.3軟件結(jié)構(gòu)圖(SC圖)為了進(jìn)一步描述模塊間的調(diào)用關(guān)系,還可使用兩種輔助符號(hào)。
輔助符號(hào)ABCD條件選擇ABCD循環(huán)例:畫出打印報(bào)告的軟件結(jié)構(gòu)圖。
調(diào)用次序?yàn)樯蠈诱{(diào)用下層;
同層按照數(shù)據(jù)傳遞關(guān)系確定;一般從左到右執(zhí)行。
執(zhí)行過程即按照數(shù)據(jù)流向進(jìn)行。報(bào)告計(jì)算獲得編輯確認(rèn)數(shù)據(jù)讀入編輯打印報(bào)告頭打印報(bào)告尾打印輸入EOF輸入已編輯已編輯已編輯已確認(rèn)已確認(rèn)數(shù)據(jù)已確認(rèn)數(shù)據(jù)計(jì)算結(jié)果結(jié)果日期總結(jié)果行行行3.2.3軟件結(jié)構(gòu)圖(SC圖)打印報(bào)告予以確認(rèn)3.3模塊的獨(dú)立性3.3模塊的獨(dú)立性上一節(jié)討論了關(guān)于軟件結(jié)構(gòu)與軟件結(jié)構(gòu)圖的概念,本節(jié)進(jìn)一步討論影響軟件系統(tǒng)質(zhì)量的另一個(gè)關(guān)鍵問題,模塊的獨(dú)立性問題。模塊化方法已經(jīng)為所有工程領(lǐng)域所接受。模塊化的主要優(yōu)點(diǎn)是,模塊化設(shè)計(jì)降低了軟件系統(tǒng)的復(fù)雜性,使得系統(tǒng)容易修改,同時(shí)使得系統(tǒng)各個(gè)部分可以并行開發(fā),從而提高了軟件的生產(chǎn)率。提高模塊質(zhì)量在于提高模塊獨(dú)立性。模塊的獨(dú)立性用耦合性和內(nèi)聚性來衡量。 3.3.1模塊獨(dú)立性(moduleindependence)3.3.1模塊獨(dú)立性
“模塊”,又稱“構(gòu)件”,一般指用一個(gè)名字可調(diào)用的一段程序。它一般具有如下三個(gè)基本屬性:⑴功能即指該模塊實(shí)現(xiàn)什么功能,做什么事情。必須注意,這里所說的模塊功能,應(yīng)是該模塊本身的功能加上它所調(diào)用的所有子模塊的功能。⑵邏輯即描述模塊內(nèi)部怎么做。⑶狀態(tài)即該模塊使用時(shí)的環(huán)境和條件。所謂模塊的獨(dú)立性,是指軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡單的。即功能專一,模塊之間無過多的相互作用的模塊。這種類型的模塊可以并行開發(fā),模塊獨(dú)立性越強(qiáng),開發(fā)越容易。獨(dú)立性強(qiáng)的模塊,還能減少錯(cuò)誤的影響,使模塊容易組合、修改及測試。模塊獨(dú)立性的度量標(biāo)準(zhǔn)是兩個(gè)定性準(zhǔn)則:
耦合性用于描述模塊之間聯(lián)系的緊密程度。
內(nèi)聚性用于描述模塊內(nèi)部聯(lián)系的緊密程度。模塊獨(dú)立性比較強(qiáng)的模塊應(yīng)該是具有高內(nèi)聚性和的低耦合度。3.3.2耦合性(Coupling)3.3.2耦合性模塊分解的一個(gè)目標(biāo)是使塊間聯(lián)系盡可能小,達(dá)到這個(gè)目標(biāo)可通過以下措施。⑴每個(gè)模塊用過程語句(或函數(shù)方式等)調(diào)用其他模塊。⑵模塊間傳送的參數(shù)為數(shù)據(jù)型。⑶模塊間公用的信息(如參數(shù)等)盡量少。耦合性是指軟件結(jié)構(gòu)中模塊相互連接的緊密程度,是模塊間相互連接性的度量。模塊分解的一個(gè)目標(biāo)是使塊間聯(lián)系盡可能小,塊間聯(lián)系的大小可從三個(gè)方面衡量:數(shù)據(jù)方式作用少多數(shù)量控制混合直接調(diào)用過程調(diào)用①方式
—
塊間聯(lián)系方式有“直接引用”或“用過程語句調(diào)用”。②作用
—
塊間傳送的共用信息(參數(shù))類型,可為“數(shù)據(jù)型”、“控制型”或“混合型”(數(shù)據(jù)/控制型)。③數(shù)量
—
塊間傳送的共用信息的數(shù)量。耦合性的幾種類型內(nèi)容耦合公共耦合控制耦合復(fù)合耦合數(shù)據(jù)耦合高耦合性低1、內(nèi)容耦合(contentcoupling)
一個(gè)模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù)。 一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊的內(nèi)部。 一個(gè)模塊有多個(gè)入口。 兩個(gè)模塊有部分代碼重迭。AB進(jìn)入另一模塊內(nèi)AB部分代碼重迭Entry1
….Entry2….
多重入口3.3.2耦合性耦合性的類型3、控制耦合(ControlCoupling)一個(gè)模塊傳遞給另一模塊的信息是用于控制該模塊內(nèi)部邏輯的控制信號(hào)(圖3.16)。顯然,對被控制模塊的任何修改,都會(huì)影響控制模塊。A
BFlagf1f2fn...4、復(fù)合耦合(StampCoupling)
一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)復(fù)合的數(shù)據(jù)結(jié)構(gòu)。例如,包含幾個(gè)數(shù)據(jù)單項(xiàng)的記錄。2、公共耦合(CommonCoupling)
若干模塊訪問一個(gè)公共的數(shù)據(jù)環(huán)境,則它們之間的耦合稱為公共耦合。公共環(huán)境可為全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。顯然,公共數(shù)據(jù)區(qū)的變化,將影響所有公共耦合模塊,嚴(yán)重影響模塊的可靠性和可適應(yīng)性,降低軟件的可讀性。5、數(shù)據(jù)耦合(DataCoupling)
一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)單個(gè)的數(shù)據(jù)項(xiàng)或者單個(gè)數(shù)據(jù)項(xiàng)組成的數(shù)組。3.3.2耦合性3.3.3內(nèi)聚性3.3.3內(nèi)聚性(cohesion)3.3.3內(nèi)聚性塊內(nèi)聯(lián)系的類型分為六類:偶然型邏輯型瞬時(shí)型通信型順序型弱內(nèi)聚性強(qiáng)功能型內(nèi)聚性表示一個(gè)模塊內(nèi)部各種數(shù)據(jù)和各種處理之間聯(lián)系的緊密程度,它是從功能的角度來度量模塊間的聯(lián)系。顯然,塊內(nèi)聯(lián)系愈緊,即內(nèi)聚性愈強(qiáng),模塊獨(dú)立性愈好。內(nèi)聚性的類型13.3.3內(nèi)聚性模塊T中的三條語句毫無關(guān)系,A、B、C、D都不在文件CARDFILE中。模塊P、Q、R分別與三條語句有關(guān)。PQRMOVEATOBREADCARDFILEMOVECTODT
偶然型模塊
2、邏輯型(LogicalCohesion)將幾個(gè)邏輯上相似的功能放在一個(gè)模塊中,調(diào)用時(shí)由調(diào)用模塊傳遞的參數(shù)確定執(zhí)行的功能。由于要進(jìn)行控制參數(shù)的傳遞,必然要影響模塊的內(nèi)聚性。如圖所示由調(diào)用模塊傳遞的參數(shù),經(jīng)過判定后,才能確定是進(jìn)行讀還是進(jìn)行寫操作。調(diào)用模塊判定讀一個(gè)記錄寫一個(gè)記錄
邏輯型模塊被調(diào)用模塊
1、偶然型(CoincidentalCohesion)又稱為巧合型,為了節(jié)約空間,將毫無關(guān)系(或者聯(lián)系不多)的各成分放在一個(gè)模塊中。這樣的模塊顯然不易理解,不易修改。內(nèi)聚性的類型2
3、瞬時(shí)型(TemporalCohesion)將需要同時(shí)執(zhí)行的成分放在一個(gè)模塊中,因?yàn)槟K中的各功能與時(shí)間有關(guān),因此又稱為時(shí)間內(nèi)聚或經(jīng)典內(nèi)聚。例如,初始化模塊,中止模塊等這類模塊內(nèi)部結(jié)構(gòu)較簡單,一般較少判定,因此比邏輯內(nèi)聚強(qiáng),但是由于將多個(gè)功能放在一起,給修改和維護(hù)造成困難。
4、通信型(CommunicationalCohesion)模塊中的成分引用共同的輸入數(shù)據(jù),或者產(chǎn)生相同的輸出數(shù)據(jù),則稱為是通信內(nèi)聚模塊。通信型模塊比瞬時(shí)型模塊的內(nèi)聚性強(qiáng),因?yàn)槟K中包含了許多獨(dú)立的功能,但卻引用相同數(shù)據(jù)。通信模塊一般可以通過數(shù)據(jù)流圖來定義。A打印報(bào)告1打印報(bào)告2打印報(bào)告2B存入打印C修改刪除打?。╝)(b)(c)
通信型模塊3.3.3內(nèi)聚性內(nèi)聚性分類
5、順序型(SequentialCohesion)模塊中某個(gè)成分的輸出是另一成分的輸入。由于這類模塊無論數(shù)據(jù)還是執(zhí)行順序,模塊中的一部分依賴于另外一部分。因此具有較好的內(nèi)聚性。
順序型模塊,編輯功能的輸入是讀入功能的輸出,打印功能的輸入是累加功能的輸出。3.3.3內(nèi)聚性讀入編輯A數(shù)據(jù)累加打印B結(jié)果
順序型模塊
6、功能型(SequentialCohesion)一個(gè)模塊包括而且僅包括完成某一具體功能所必須的所有成分?;蛘哒f,模塊的所有成分都是為完成該功能而協(xié)同工作、緊密聯(lián)系、不可分割的。例如僅完成以下功能的模塊為功能模塊:
●
求平方根
●
求解一元二次方程
●
計(jì)算利息
●
判素?cái)?shù)
求解方程的功能模塊求一元二次方程求平方根AB3.3.4信息隱蔽3.3.4信息隱蔽每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)對于其他模塊來說是隱蔽的。也就是說,模塊中所包含的信息(數(shù)據(jù)和過程)不允許其他不需要這些信息的模塊使用。該原則有利于提高模塊的內(nèi)聚性。由于一個(gè)軟件系統(tǒng)在整個(gè)軟件生存期內(nèi)要經(jīng)過多次修改,在劃分模塊時(shí)要采取措施,使得大多數(shù)過程和數(shù)據(jù)對軟件的其他部分是隱蔽的。這樣,在將來修改軟件時(shí),可將偶然引入錯(cuò)誤所造成的影響限制在一個(gè)局部范圍之內(nèi),不致波及到軟件的其他部分。例如:定義棧(stack)操作模塊makenull(置空棧);push(進(jìn)棧);pop(出棧);gettop(取棧頂)empty(判??眨┢洳僮骶环庋b,無需了解模塊內(nèi)部的實(shí)現(xiàn)過程。由parnas方法提倡的信息隱蔽如下:3.4結(jié)構(gòu)化設(shè)計(jì)(SD)方法3.4結(jié)構(gòu)化設(shè)計(jì)(SD)法結(jié)構(gòu)化開發(fā)方法(StructuredDevelopingMethod)是現(xiàn)有的軟件開發(fā)方法中最成熟、應(yīng)用最廣泛的方法,主要特點(diǎn)是快速、自然和方便。結(jié)構(gòu)化開發(fā)方法由結(jié)構(gòu)化分析方法(SA法)、結(jié)構(gòu)化設(shè)計(jì)方法(SD法)及結(jié)構(gòu)化程序設(shè)計(jì)方法(SP法)構(gòu)成。結(jié)構(gòu)化設(shè)計(jì)方法(StructuredDesign,SD)是結(jié)構(gòu)化開發(fā)方法的核心,與SA法、SD法密切聯(lián)系,主要完成軟件系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)。3.4.1結(jié)構(gòu)化設(shè)計(jì)方法概述結(jié)構(gòu)化開發(fā)方法(StructuredDevelopingMethod)是現(xiàn)有的軟件開發(fā)方法中最成熟、應(yīng)用最廣泛的方法,其主要特點(diǎn)是快速、自然和方便。一、結(jié)構(gòu)化方法構(gòu)成:
SP法(StructuredProgram)
SD法(StructuredDesign)
SA法(StructuredAnalysis)SD法與SA、SP法前后銜接,是結(jié)構(gòu)化開發(fā)方法的核心。3.4.1結(jié)構(gòu)化設(shè)計(jì)方法概述二、SD法的基本思想
是一種面向數(shù)據(jù)流的設(shè)計(jì)方法,將系統(tǒng)設(shè)計(jì)成由相對獨(dú)立、單一功能的模塊組成的結(jié)構(gòu)。SD法的設(shè)計(jì)步驟三、SD法的設(shè)計(jì)步驟1、總體設(shè)計(jì)解決系統(tǒng)的模塊結(jié)構(gòu),即分解模塊,確定系統(tǒng)模塊的層次結(jié)構(gòu)。任務(wù): ①劃分模塊 ②確定模塊功能 ③確定模塊間調(diào)用關(guān)系 ④確定模塊間界面文檔:模塊結(jié)構(gòu)圖及其模塊功能說明。2、詳細(xì)設(shè)計(jì)對模塊圖中每個(gè)模塊的過程進(jìn)行描述,常用的描述的方式有:偽代碼,
流程圖,N-S圖,PAD圖等。SD法也分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段:3.4.1結(jié)構(gòu)化設(shè)計(jì)方法概述軟件〈層次性:反映軟件整體的性質(zhì)(結(jié)構(gòu)圖)過程性:反映局部的性質(zhì)(框圖)由于軟件具有兩類特征:SD法的設(shè)計(jì)總則3.4.1結(jié)構(gòu)化設(shè)計(jì)方法概述 SA法總體設(shè)計(jì)的步驟是: ⑴從DFD圖導(dǎo)出初始的模塊結(jié)構(gòu)圖。⑵按照SD法設(shè)計(jì)總則,改進(jìn)模塊結(jié)構(gòu)圖。四、SD法的設(shè)計(jì)總則
根據(jù)軟件結(jié)構(gòu)的準(zhǔn)則,模塊化準(zhǔn)則,軟件獨(dú)立性準(zhǔn)則得到結(jié)構(gòu)化設(shè)計(jì)的總則是:
軟件設(shè)計(jì)過程,總體設(shè)計(jì)是關(guān)鍵,決定了系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)及軟件的質(zhì)量,反映了系統(tǒng)的概貌?!敖档蛪K間聯(lián)系,提高塊內(nèi)聯(lián)系”3.4.2數(shù)據(jù)流圖的分類與典型的系統(tǒng)結(jié)構(gòu)3.4.2數(shù)據(jù)流圖的分類與典型的系統(tǒng)結(jié)構(gòu)
一、DFD圖的分類一般將DFD圖分為兩種典型的類型,分析系統(tǒng)的DFD圖類型的目的,是為了采用不同的技術(shù)將其轉(zhuǎn)換為初始的模塊結(jié)構(gòu)圖。分類報(bào)名付款注銷查詢復(fù)審檢查順序(物理輸入)檢查合理性擴(kuò)充代碼核對檢查和修改壓縮代碼配檢查和(邏輯輸入)(邏輯輸出)輸入主加工輸出卡片舊文件(物理輸出)新文件事務(wù)處理型(transaction)—
事務(wù)分析這類數(shù)據(jù)流圖可看成是對一個(gè)數(shù)據(jù)經(jīng)過某種加工后,按加工的結(jié)果選擇一個(gè)輸出數(shù)據(jù)流繼續(xù)執(zhí)行的處理。中心變換型(transformcenter)—
變換分析這類數(shù)據(jù)流圖可看成是對輸入數(shù)據(jù)進(jìn)行轉(zhuǎn)換而得到輸出數(shù)據(jù)的處理。其特點(diǎn)是:DFD圖可以明顯分為“輸入-處理-輸出”三部分。典型的系統(tǒng)結(jié)構(gòu)二、典型的系統(tǒng)結(jié)構(gòu)⑴變換型系統(tǒng)結(jié)構(gòu)圖通過變換分析技術(shù),將中心變換型的DFD圖轉(zhuǎn)換而得的SC圖,稱為變換型系統(tǒng)結(jié)構(gòu)圖。相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),系統(tǒng)的結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成。⑵事務(wù)型系統(tǒng)結(jié)構(gòu)圖通過事務(wù)分析技術(shù),將事務(wù)處理型的DFD圖轉(zhuǎn)換為的SC圖,稱為事務(wù)型的系統(tǒng)結(jié)構(gòu)圖。其中,事務(wù)中心模塊按所接受的事務(wù)的類型,選擇某一個(gè)事務(wù)處理模塊執(zhí)行。各個(gè)事務(wù)處理模塊是并列的,依賴于一定的選擇條件,分別完成不同的事務(wù)處理工作。每個(gè)事務(wù)處理模塊可能要調(diào)用若干個(gè)操作模塊,而操作模塊又可能調(diào)用若干個(gè)細(xì)節(jié)模塊。某些事務(wù)處理模塊可能共享一些操作模塊,而某些操作模塊又可以共享一些細(xì)節(jié)模塊。3.4.2數(shù)據(jù)流圖的分類與典型的系統(tǒng)結(jié)構(gòu)
①確定主加工及邏輯輸入/輸出主加工—
描述了系統(tǒng)的主要功能、特征。其特點(diǎn)是:輸入/輸出數(shù)據(jù)流較多,往往主加工不止一個(gè)。邏輯輸入/輸出—
是指輸入/輸出主加工的數(shù)據(jù)流。輸入流—
是把物理輸入轉(zhuǎn)換為邏輯輸入的數(shù)據(jù)流。輸出流—
是將邏輯輸出轉(zhuǎn)換為物理輸出的數(shù)據(jù)流。FDC中心加工2號(hào)加工3號(hào)加工1號(hào)加工4號(hào)加工ABE
輸入流轉(zhuǎn)換流輸出流
輸入流轉(zhuǎn)換流輸出流②進(jìn)行一級分解,設(shè)計(jì)上層模塊為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出模塊,同時(shí)為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。MCICTCOCCDDCICTCO3.4.3變換分析技術(shù)3.4.3變換分析技術(shù)
變換分析技術(shù)DDCC變換分析步驟③進(jìn)行二級分解,設(shè)計(jì)中下層模塊這一步的工作是自頂向下,逐步細(xì)化,為第一層的每一個(gè)輸入模塊、輸出模塊、處理模塊設(shè)計(jì)它們的從屬模塊,設(shè)計(jì)下層模塊的順序一般從設(shè)計(jì)輸入模塊的下層開始。MCICTCO處理C取B轉(zhuǎn)換B轉(zhuǎn)換D送ECCDDDCCDBBEEDC中心加工2號(hào)加工3號(hào)加工1號(hào)加工4號(hào)加工ABE
輸入流轉(zhuǎn)換流輸出流轉(zhuǎn)換流④進(jìn)一步細(xì)化取A轉(zhuǎn)換A轉(zhuǎn)換E送FAABFFE3.4.3變換分析技術(shù)
變換分析技術(shù)F3.4.4事務(wù)分析技術(shù)3.4.4“事務(wù)分析”技術(shù)①確定流界;首先從數(shù)據(jù)流圖中找出事務(wù)流、事務(wù)處理中心和事務(wù)路徑。事務(wù)中心前是接受事物,事務(wù)中心后是事物路徑。對應(yīng)模塊圖原始的數(shù)據(jù)流圖IP1P2P3事物流事務(wù)中心事務(wù)處理事務(wù)控制接受事務(wù)發(fā)送事務(wù)P1P2P3②進(jìn)行一級分析,設(shè)計(jì)上層模塊;事務(wù)分析的任務(wù)是從數(shù)據(jù)流圖中導(dǎo)出具有接受分支和發(fā)送分支的軟件結(jié)構(gòu)。對事務(wù)中心應(yīng)設(shè)計(jì)“事物控制”模塊;對事物流應(yīng)設(shè)計(jì)“接受事物”模塊;對事務(wù)路徑,應(yīng)設(shè)計(jì)“發(fā)送控制”模塊。③進(jìn)行二級分解,設(shè)計(jì)中下層模塊;對于接受分支,可用類似于轉(zhuǎn)換處理型數(shù)據(jù)流圖中對輸入數(shù)據(jù)流的方法設(shè)計(jì)中下層。對于發(fā)送分支,在發(fā)送控制模塊下為每條事務(wù)路徑設(shè)計(jì)一個(gè)事務(wù)處理模塊,這一層稱為事務(wù)層。在事務(wù)層模塊下,沿各事務(wù)路徑進(jìn)行進(jìn)一步細(xì)化。
事務(wù)分析技術(shù)3.4.5實(shí)例:銀行貸款文件管理(MFUP)3.4.5應(yīng)用舉例每個(gè)貸款用戶在貸款文件中占有一個(gè)記錄,記錄結(jié)構(gòu)如表3-1。序號(hào)內(nèi)容長度(字節(jié))數(shù)據(jù)類型可否修改1賬號(hào)5數(shù)字否2戶名30數(shù)字字母可3地址30數(shù)字字母可4省10字母可5市15字母可6郵政編碼6數(shù)字可7電話8數(shù)字可8類型1字母否9信貸員號(hào)5數(shù)字可10最近一次業(yè)務(wù)日期6數(shù)字否11最近一次付息日期6數(shù)字否12余額8數(shù)字否13業(yè)務(wù)總量8數(shù)字否14限額6數(shù)字否表3-1
分析:要求對貸款文件進(jìn)行修改,修改信息由卡片輸入,卡片上的修改信息格式如下:1-5位 6-9位 10位起賬號(hào) 空 ××修改值1* ××修改值2* …..** (序號(hào))其中*為分界符,**為結(jié)束符貸款文件的記錄格式(如表3-1)修改記錄(卡片)格式3.需求分析結(jié)果貸款文件的DFD圖,是一種混合的DFD圖。輸入為:卡片和舊記錄。輸出為:新記錄和報(bào)告。4、將DFD圖轉(zhuǎn)換為模塊結(jié)構(gòu)圖。3.4.5應(yīng)用舉例圖3.28修改貸款文件DFD修改記錄寫記錄卡片編輯卡片檢查順序檢查次序賬號(hào)相等錯(cuò)誤順序卡片修改信息舊記錄順序記錄要修改的記錄不修改的記錄已修改的記錄新記錄抽出修改抽出編輯順序卡片修改信息2345679編輯卡片加工分解主加工是??報(bào)告報(bào)告修改信息順序記錄新記錄3.4.5應(yīng)用舉例
修改貸款文件的DFD圖需求分析結(jié)果—DFD圖答案主加工圖3.29模塊結(jié)構(gòu)圖貸款文件管理系統(tǒng)取順序記錄修改記錄打印報(bào)告打印記錄比較賬號(hào)取修改信息讀舊記錄檢查順序取卡片讀卡片檢查順序卡片卡片順序卡片舊記錄舊記錄順序記錄順序記錄順序卡片順序卡片已修改編輯卡片“編輯卡片”應(yīng)繼續(xù)向下分解,是典型的“事務(wù)處理”型的DFD圖。寫記錄寫記錄舊記錄不修改的記錄已修改的記錄新記錄修改記錄卡片編輯卡片檢查順序檢查次序賬號(hào)相等錯(cuò)誤順序卡片修改信息順序記錄要修改的記錄報(bào)告3.4.5應(yīng)用舉例轉(zhuǎn)換后的模塊圖如圖所示。將DFD圖轉(zhuǎn)換為模塊結(jié)構(gòu)圖已編輯卡片
按照“降低塊間聯(lián)系,提高塊內(nèi)聯(lián)系”的設(shè)計(jì)總則進(jìn)行修改,完善系統(tǒng)的模塊圖,寫出模塊的功能說明。具體應(yīng)從以下方面改進(jìn):1)盡可能建立功能模塊功能模塊具有最強(qiáng)的內(nèi)聚性,應(yīng)滿足信息屏蔽原則:
一個(gè)模塊內(nèi)所包含的信息(過程和數(shù)據(jù))對不需要這些信息的模塊是不能訪問的(黑盒)。功能模塊的組成:
執(zhí)行某項(xiàng)任務(wù)的部分出錯(cuò)處理部分返回結(jié)束標(biāo)志3.4.6模塊結(jié)構(gòu)圖的改進(jìn)3.4.6模塊結(jié)構(gòu)圖的改進(jìn)圖3.30消除重復(fù)功能
消除重復(fù)功能(a)(b)(c)(d)Q重復(fù)部分XQ1YQ22)消除重復(fù)功能
若兩模塊含有重復(fù)的部分,應(yīng)設(shè)法將重復(fù)的功能消去。
如下圖所示,Q1和Q2兩個(gè)模塊具有類似的功能,圖(b)、(c)、(d)方案就是可能的解決方案。3.4.6模塊結(jié)構(gòu)圖的改進(jìn)XYQ’1Q’2QYQ’2XQ’1QXQ’1YQ’2圖3.31、圖3.32控制范圍
—
結(jié)構(gòu)方面的特點(diǎn),包括模塊及其所有下屬模塊。作用范圍
—
判斷所涉及到的模塊,是從功能特點(diǎn)考慮的。SD方法認(rèn)為:當(dāng)作用范圍為控制范圍的子集時(shí),才能獲得較低的塊間聯(lián)系。如圖(b)中的設(shè)計(jì),判定的作用范圍恰好在判定所在模塊的下一層。3)模塊的作用范圍與控制范圍TOPXTBAB1B2圖(b)中模塊TOP的控制范圍是:
模塊TOP、X、T、B、A、B1、B2;模塊B的控制范圍與作用范圍相同,均為:模塊B、A、B1、B2圖(a)中模塊A的控制范圍:
A、B、C、D、G、E、F如果模塊F的判定涉及到模塊B、E、F。則F的的作用范圍:B、E、FABCDGEFFBE(a)(b)3.4.6模塊結(jié)構(gòu)圖的改進(jìn)答案圖3.33控制范圍與作用范圍顯然,圖(a)不滿足作用范圍應(yīng)與控制范圍的原則,模塊F的作用范圍不在控制范圍之內(nèi)。圖(b)中模塊TOP和圖(c)中模塊B雖然滿足上述原則,但其作用范圍所涉及到的模塊不是直接的。圖(d)的模塊設(shè)計(jì)最合理。3.4.6模塊結(jié)構(gòu)圖的改進(jìn)應(yīng)用范圍與作用范圍舉例TOPABCDEF
(a)◆TOPABCDEF(d)◆TOPABCDEF(b)◆TOPABCDEF(c)◆比較(a)、(b)、(c)、(d)4種設(shè)計(jì)方案的優(yōu)劣!模塊圖的改進(jìn)4)模塊的大小適當(dāng)模塊大小指其篇幅,一般模塊大小約50-100行為宜。5)模塊的扇入扇出數(shù)不宜太多一個(gè)模塊調(diào)用其他模塊的個(gè)數(shù),稱為該模塊的扇出。模塊的扇出不宜過大,一般認(rèn)為不要超出7個(gè)。一個(gè)模塊被其他模塊調(diào)用的個(gè)數(shù),稱為該模塊的扇入。扇入越大,除服務(wù)性模塊外,模塊的扇入扇出數(shù)不宜太多,否則塊間聯(lián)系增加。3.4.6模塊結(jié)構(gòu)圖的改進(jìn)3.5JACKSON系統(tǒng)開發(fā)方法3.5JACKSON系統(tǒng)開發(fā)方法結(jié)構(gòu)化開發(fā)方法是一種面向數(shù)據(jù)流、數(shù)據(jù)封閉性的開發(fā)方法,而JACKSON系統(tǒng)開發(fā)方法則是面向數(shù)據(jù)結(jié)構(gòu)的開發(fā)方法。其基本思想是先建立輸入、輸出的數(shù)據(jù)結(jié)構(gòu),再將其轉(zhuǎn)換為軟件結(jié)構(gòu)。JACKSON方法由英國的M.Jackson提出,該方法特別適合于數(shù)據(jù)處理類的問題,如企事業(yè)管理一類的軟件系統(tǒng)。Jackson系統(tǒng)開發(fā)(JSD)方法是一種典型的面向數(shù)據(jù)結(jié)構(gòu)的分析與設(shè)計(jì)方法。其分析的重點(diǎn)放在構(gòu)造與系統(tǒng)相關(guān)的現(xiàn)實(shí)世界,并建立現(xiàn)實(shí)世界的信息域的模型上。其最終目標(biāo)是生成軟件的過程性描述。JSD方法的步驟如下:1、實(shí)體動(dòng)作分析2、實(shí)體結(jié)構(gòu)分析3、定義初始模型4、功能描述:詳細(xì)說明與已定義的動(dòng)作相對應(yīng)的功能。5、決定系統(tǒng)時(shí)間特性:對進(jìn)程調(diào)度特性進(jìn)行評價(jià)和說明。6、
實(shí)現(xiàn):設(shè)計(jì)組成系統(tǒng)的硬件和軟件。
JSD方法的前三步屬于需求分析階段,后三步屬于軟件設(shè)計(jì)階段。3.5.1JSD系統(tǒng)方法簡介3.5.1JACKSON方法概述JACKSON方法的構(gòu)成
JACKSON方法由JSP(JacksonstructuredProgramming)和JSD(JacksonSystemDevelopment)方法構(gòu)成。JSP法主要體現(xiàn)程序結(jié)構(gòu)的設(shè)計(jì),不嚴(yán)格區(qū)分軟件概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)??梢愿鶕?jù)JSP的規(guī)則直接導(dǎo)出程序結(jié)構(gòu)。一般用于規(guī)模不大的數(shù)據(jù)處理系統(tǒng),而且I/O數(shù)據(jù)結(jié)構(gòu)容易描述的情況。
JSD法是對JSP法的擴(kuò)充,針對JSP法的缺陷而提出的解決方案。其主要特點(diǎn)是:用“分而治之”的策略控制系統(tǒng)的復(fù)雜性,解決I/O結(jié)構(gòu)的沖突問題。
SD法是一種面向數(shù)據(jù)流的設(shè)計(jì)方法,JACKSON方法是一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。強(qiáng)調(diào)程序結(jié)構(gòu)與問題結(jié)構(gòu)相對應(yīng)。3.5.1JACKSON方法概述一、JACKSON方法的構(gòu)成實(shí)體結(jié)構(gòu)分析實(shí)體結(jié)構(gòu)分析是用Jackson圖來描述每個(gè)實(shí)體執(zhí)行的動(dòng)作及其時(shí)序,產(chǎn)生一組描述實(shí)體進(jìn)程的Jackson結(jié)構(gòu)圖。為了表示實(shí)體結(jié)構(gòu),Jackson引入了結(jié)構(gòu)圖。在此圖中,給出了對實(shí)體的三種典型動(dòng)作,即順序的、選擇的和重復(fù)的。其中,順序型是指對于實(shí)體A的動(dòng)作B,C是按時(shí)間順序先左后右執(zhí)行;選擇型使用了符號(hào)“○”,表示實(shí)體A的兩個(gè)動(dòng)作B與C在某個(gè)時(shí)刻只做一個(gè);重復(fù)型表示帶有“*”的動(dòng)作重復(fù)執(zhí)行多次。例:下圖是餐廳業(yè)務(wù)中的會(huì)計(jì)進(jìn)程。
餐廳業(yè)務(wù)中的會(huì)計(jì)進(jìn)程3.5.1JACKSON方法概述3.5.2JACKSON方法的設(shè)計(jì)過程2、以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ),建立相應(yīng)的程序結(jié)構(gòu)圖,也稱為JACKSON圖。當(dāng)沒有結(jié)構(gòu)沖突時(shí),轉(zhuǎn)換過程是簡單的。1、建立數(shù)據(jù)結(jié)構(gòu)
JACKSON方法中數(shù)據(jù)結(jié)構(gòu)通常表示為樹型結(jié)構(gòu),有順序、選擇和循環(huán)三種基本結(jié)構(gòu)。如下圖按照三種基本結(jié)構(gòu)建立的文件數(shù)據(jù)結(jié)構(gòu)。ABCD順序結(jié)構(gòu)ABCD選擇結(jié)構(gòu)。。。AB*循環(huán)結(jié)構(gòu)文件記錄*項(xiàng)1項(xiàng)2項(xiàng)3
文件數(shù)據(jù)結(jié)構(gòu)
三種基本結(jié)構(gòu)3.5.2JACKSON方法的設(shè)計(jì)過程處理文件處理記錄*處理項(xiàng)1處理項(xiàng)2處理項(xiàng)3
文件結(jié)構(gòu)圖例2:合并文件輸入姓名和地址文件職工記錄*工號(hào)姓名地址工資文件職工記錄*工號(hào)工資新文件職工記錄*工號(hào)姓名地址工資輸出I/O文件的數(shù)據(jù)結(jié)構(gòu)2、設(shè)計(jì)程序圖由于輸入、輸出數(shù)據(jù)結(jié)構(gòu)在內(nèi)容、數(shù)量、次序上是對應(yīng)的,不難導(dǎo)出結(jié)構(gòu)圖。取姓名地址記錄*工號(hào)姓名地址取工資記錄*工號(hào)工資產(chǎn)生新文件產(chǎn)生新記錄*工號(hào)姓名地址工資結(jié)構(gòu)圖例2:合并文件(考慮輸入和輸出之間的對應(yīng)關(guān)系),輸入、輸出數(shù)據(jù)結(jié)構(gòu)在內(nèi)容、數(shù)量、次序上是對應(yīng)的。1、數(shù)據(jù)結(jié)構(gòu)3.5.2JACKSON方法的設(shè)計(jì)過程3.5.3JACKSON方法的技術(shù)構(gòu)成例3:產(chǎn)生報(bào)文分析報(bào)告。一組報(bào)文穿在若干卡片上,卡片上詞與詞之間用空格分隔,最后兩張結(jié)束卡片的內(nèi)容分別是“0000”和“EOF”,所有卡片以“EOB”結(jié)束。一、結(jié)構(gòu)沖突
所謂結(jié)構(gòu)沖突,是指輸入數(shù)據(jù)與輸出數(shù)據(jù)之間很少或沒有結(jié)構(gòu)上的對應(yīng)關(guān)系。
這種情況就很難從數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)。通常解決的辦法是:構(gòu)造一個(gè)或者多個(gè)中間結(jié)構(gòu),在輸入和輸出結(jié)構(gòu)之間進(jìn)行轉(zhuǎn)換。
輸出報(bào)文形式:報(bào)文分析報(bào)告 (標(biāo)題)
本報(bào)有XX個(gè)詞 其中有XX個(gè)詞多于12個(gè)字符 (報(bào)告正文) 分析報(bào)告結(jié)束
(報(bào)告底)3.5.3JACKSON方法的技術(shù)構(gòu)成輸入報(bào)文卡片報(bào)告卡結(jié)束卡卡片體EOB0000EOF字符組詞組*詞空格組空格報(bào)告標(biāo)題報(bào)告體報(bào)告底詞超長詞(a)輸入數(shù)據(jù)結(jié)構(gòu)(b)輸出數(shù)據(jù)結(jié)構(gòu)*
輸入輸出數(shù)據(jù)結(jié)構(gòu)建立輸入輸出的數(shù)據(jù)結(jié)構(gòu),有明顯的結(jié)構(gòu)沖突,如圖所示。圖3.40報(bào)文的數(shù)據(jù)結(jié)構(gòu)3.5.3JACKSON方法的技術(shù)構(gòu)成輸入結(jié)構(gòu)型1詞*0000過程P1過程P2型2S1報(bào)文詞*0000正常詞超長詞輸出結(jié)構(gòu)過程P3S2為了解決輸入、輸出的結(jié)構(gòu)沖突問題,引入兩個(gè)中間結(jié)構(gòu):⑶S2經(jīng)變換P3容易轉(zhuǎn)換為輸出結(jié)構(gòu)。⑵第二中間結(jié)構(gòu)S2識(shí)別“正常詞”與“超長詞”,由過程P2完成。
中間結(jié)構(gòu)轉(zhuǎn)換圖3.41中間結(jié)構(gòu)轉(zhuǎn)換⑴第一中間結(jié)構(gòu)S1簡化輸入,去掉輸入報(bào)文中多余的字符(“EOB”、EOF”、多余空格),由過程P1完成。3.5.3JACKSON方法的技術(shù)構(gòu)成圖3.42報(bào)文分析模塊圖報(bào)文分析結(jié)構(gòu)圖報(bào)告標(biāo)題報(bào)告體報(bào)告底詞超長詞輸出數(shù)據(jù)結(jié)構(gòu)分析報(bào)告打印標(biāo)題打印報(bào)告體打印報(bào)告底處理中間結(jié)構(gòu)打印報(bào)告內(nèi)容P1P2P3打印總詞數(shù)打印超長詞數(shù)
報(bào)文分析模塊圖顯然,中間結(jié)構(gòu)的選取依賴于設(shè)計(jì)者對問題的理解及其設(shè)計(jì)者的設(shè)計(jì)風(fēng)格。根據(jù)報(bào)文的中間結(jié)構(gòu),將輸入數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為與輸出的數(shù)據(jù)結(jié)構(gòu)相對應(yīng),消除了結(jié)構(gòu)沖突,上圖將報(bào)文分析的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為結(jié)構(gòu)圖。3.5.3ACKSON方法的技術(shù)構(gòu)成二、回溯問題(Backtracking)
若B處理G前遇到條件(Condition)假設(shè)(Posit):
A選擇執(zhí)行B,則B處理E、F,
轉(zhuǎn)向執(zhí)行C。則停止(quit)執(zhí)行G,AC。EFGPositelsequitadmitconditionAPositB。EFconditionquitadmitadmitCB。C。。在求解一些探索性問題時(shí),常常需要進(jìn)行回溯,為了解決具有試探性的求解過程,JACKSON方法提供了一種回溯結(jié)構(gòu)設(shè)計(jì)。其基本思想是:執(zhí)行選擇、循環(huán)等結(jié)構(gòu)時(shí),先測試條件再做處理,若選擇依據(jù)不充分,則可能產(chǎn)生回溯。下圖是一種回溯結(jié)構(gòu)。3.5.3JACKSON方法的技術(shù)構(gòu)成
回溯結(jié)構(gòu)回溯結(jié)構(gòu)設(shè)計(jì)
回溯結(jié)構(gòu)由三種構(gòu)件組成:1、Posit(假定)用于表示條件成立時(shí)的處理過程,進(jìn)入Posit構(gòu)件時(shí)程序狀態(tài)就被保存起來。2、Quit(退出)當(dāng)假定條件不成立,控制轉(zhuǎn)向另一認(rèn)可。3、Admit(認(rèn)可)
Admit構(gòu)件提供了另一條處理路徑,在Admit的入口處程序無條件恢復(fù)到原有狀態(tài)。
JACKSON方法優(yōu)點(diǎn):結(jié)構(gòu)清晰、易理解、易修改。不會(huì)過多依賴于設(shè)計(jì)者的經(jīng)驗(yàn)。缺點(diǎn):當(dāng)系統(tǒng)規(guī)模及復(fù)雜度大時(shí),確定數(shù)據(jù)結(jié)構(gòu)困難。3.5.3JACKSON方法的技術(shù)構(gòu)成一、任務(wù)
詳細(xì)設(shè)計(jì)階段的任務(wù)是開發(fā)一個(gè)可以直接轉(zhuǎn)換為程序的軟件表示,即對系統(tǒng)中每個(gè)模塊的內(nèi)部過程進(jìn)行設(shè)計(jì)和描述。二、常用的描述方法工具1、流程圖2、結(jié)構(gòu)化流程圖(N-S圖)3、PAD圖—問題分析圖4、PDL語言3.6詳細(xì)設(shè)計(jì)描述工具3.6詳細(xì)設(shè)計(jì)描述工具abX1X2X7X6X4X3X5higfedcjFTFFFTTT多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)3.6.1程序流程圖3.6.1程序流程圖
流程圖N-S圖由而且僅由順序、選擇、循環(huán)三種基本結(jié)構(gòu)組成。基本圖例如下:順序結(jié)構(gòu)塊1塊2塊3塊4條件TF塊1塊2選擇結(jié)構(gòu)CaseI=1,2,3T塊1塊2多分支選擇結(jié)構(gòu)F塊3塊當(dāng)條件成立時(shí)當(dāng)型循環(huán)塊直到條件成立時(shí)直到型循環(huán)3.6.2N—S圖3.6.2N—S圖N-S圖N-S圖舉例3.6.2N—S圖ab條件1TF
Case
Xi,i=2,3,4X2X3X4當(dāng)條件3成立條件2直到條件4成立直到條件成立cdefghij順序結(jié)構(gòu)選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)先判定型循環(huán)結(jié)構(gòu)后判定型循環(huán)結(jié)構(gòu)FTTFN-S圖舉例3、PAD圖—問題分析圖(ProblemAnalysisDiagram)其基本控制結(jié)構(gòu)如下:任務(wù)1任務(wù)2任務(wù)3
順序結(jié)構(gòu)WHILE型條件循環(huán)體先判定型循環(huán)結(jié)構(gòu)條件then部分else部分選擇結(jié)構(gòu)TFUNTIL型條件循環(huán)體后判定型循環(huán)結(jié)構(gòu)控制變量
任務(wù)1任務(wù)2任務(wù)n多分支選擇結(jié)構(gòu)值1值2值n3.6.3PAD圖3.6.3PAD圖PADL圖基本結(jié)構(gòu)例:對數(shù)組X進(jìn)行排序?!白皂敹?,逐步求精”
1、循環(huán)一次,排好一個(gè)X[h]排好第H個(gè)X[h]找X[J]=MAX(X[h]。。X[n])交換X[J]和X[h]2、細(xì)化(a)(b)(b)(a)3、連接各圖,構(gòu)成完整的PAD圖H:=1,n-1排好第h個(gè)X[h]H:=1,n-1H:=1,n-1W:=X[h]X[h]:=X[j]X[j]:=wJ:=hk:=h+1,nX[k]>X[J]J:=kH:=1,n-1H:=1,n-1H:=1,n-1例13.6.3PAD圖PAD圖應(yīng)用舉例BEGINFIRST:=K[1];SECOND:=0;FIRST=K[I]SECOND=0I:=2toNK[I]>SECONDK[I]>FIRSTSECOND=FIRSTFIRST=K[I]SECOND=K[I] ELSESECOND:=K[I]ENDENDEND.
PASCAL源程序段對應(yīng)PAD圖FORI:=2TONDOBEGINIFK[1]>SECONDTHENBEGINIFK[I]>FIRSTTHENBEGINSECOND:=FIRST; FIRST:=K[I]ENDPAD圖應(yīng)用例2例23.6.3PAD圖PAD圖應(yīng)用舉例A、DEF圖式:一個(gè)加工在一頁中畫不下時(shí),用DEF圖式定義后,可在另一頁上畫出。B、N+1/2循環(huán)NAMEAS1UNTILQS2S3S1PS1S2或S1S2PAD圖的擴(kuò)充圖式3.6.3PAD圖SNAMEA條件H1S1S2PPADL圖擴(kuò)充圖式隨著各種應(yīng)用軟件的面市,作為人機(jī)接口的用戶界面具有越來越重要的作用,用戶界面是否友好直接影響到軟件的壽命與競爭力。因此,對用戶界面的設(shè)計(jì)必須予以足夠的重視。3.7用戶界面設(shè)計(jì)本節(jié)將對用戶界面設(shè)計(jì)中的主要問題進(jìn)行討論。用戶界面應(yīng)具有的特性—
什么是友好的用戶界面。用戶界面設(shè)計(jì)的任務(wù)—
用戶界面設(shè)計(jì)應(yīng)該完成的工作。用戶界面的基本類型—
用戶界面的工作模式。3.7用戶界面設(shè)計(jì)一、用戶界面應(yīng)具有的特性
1、可使用性①使用簡單。②用戶界面中所用術(shù)語的標(biāo)準(zhǔn)化和一致性。③具有HELP功能。④快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本。⑤具有容錯(cuò)能力。
2、靈活性①考慮用戶的特點(diǎn)、能力、知識(shí)水平。②提供不同的系統(tǒng)響應(yīng)信息。③提供根據(jù)用戶需求制定和修改界面。
3、界面的復(fù)雜性與可靠性復(fù)雜性—界面規(guī)模及組織的復(fù)雜程度。應(yīng)該愈簡單愈好。可靠性—指無故障使用的時(shí)間間隔。用戶界面應(yīng)該能夠保證用戶正確、可靠地使用系統(tǒng),及程序、數(shù)據(jù)的安全。3.7.1用戶界面的特性及設(shè)計(jì)任務(wù)3.7.1用戶界面的特性及設(shè)計(jì)任務(wù)
1、用戶特性分析—
用戶模型
了解所有用戶的技能和經(jīng)驗(yàn),針對用戶能力設(shè)計(jì)或更改界面。從以下方面分析:用戶類型—
通常分為:外行型、初學(xué)型、熟練型、專家型。用戶特性度量—
與用戶使用模式和用戶群體能力有關(guān)。包括:用戶使用頻度、用戶用機(jī)能力、用戶的知識(shí)、思維能力等。二、用戶界面設(shè)計(jì)的任務(wù)這部分工作應(yīng)該與軟件需求分析同步進(jìn)行。包括以下內(nèi)容:2、用戶界面的任務(wù)分析—任務(wù)模型(DFD圖)是對系統(tǒng)內(nèi)部活動(dòng)的分解,不僅要進(jìn)行功能分解(用DFD圖描述),還要包括與人相關(guān)的活動(dòng)。每個(gè)加工即一個(gè)功能或任務(wù)。3.7.1用戶界面的特性及設(shè)計(jì)任務(wù)3、確定用戶界面類型1、菜單(menu)
按照顯示方式正文菜單、圖標(biāo)菜單、正文和圖標(biāo)混合菜單,如“開始”菜單。3.7.2用戶界面的基本類型
從用戶角度出發(fā),用戶界面設(shè)計(jì)的類型主要有問題描述語言,數(shù)據(jù)表格、圖形與圖標(biāo)、菜單、對話框及窗口等。每一種類型都有不同的特點(diǎn)和性能。討論以下類型:菜單、圖象、對話框和窗口。按屏幕位置和操作風(fēng)格固定位置、浮動(dòng)位置(彈出)、下拉式、嵌入式
混合菜單
固定及下拉菜單固定菜單下拉菜單3.7.2用戶界面的基本類型2、圖像在用戶界面中,加入豐富多彩的畫面,將能夠更加形象地為用戶提供有用的信息,以達(dá)到可視化的目的。主要的處理操作有:圖像的隱蔽和再現(xiàn)、屏幕滾動(dòng)和圖案顯示、動(dòng)畫等。3.7.2用戶界面的基本類型2、圖像3、對話框?qū)υ捒蚴窃谛枰獣r(shí),顯示在屏幕上一個(gè)矩形區(qū)域內(nèi)的圖形和正文信息。通過對話,實(shí)現(xiàn)系統(tǒng)和用戶之間的通信。對話框顯示的方式與彈出式菜單類似,即瞬時(shí)彈出。同時(shí),系統(tǒng)還應(yīng)將對話框所覆蓋的原圖像進(jìn)行保存,以便在對話結(jié)束后能立即恢復(fù)。有三種對話形式:必須回答式無需回答式警告式
必須回答式對話框
無需回答式對話框
警告式對話框3.7.2用戶界面的基本類型3、對話框4、窗口(window)圖形學(xué)中稱為視圖區(qū)(Viewport),視為虛擬屏幕。一個(gè)實(shí)用窗口,可包含部件:
3.7.2用戶界面的基本類型
菜單區(qū)(menubar)圖標(biāo)區(qū)(iconbar)標(biāo)題區(qū)(titlebar)移動(dòng)區(qū)(movebar)大小區(qū)(sizebar)退出區(qū)(quitbar)用戶工作區(qū)(user’sworkbar)橫向滾動(dòng)區(qū)(horizontalscrollbar)縱向滾動(dòng)區(qū)(verticalscrollbar)4、窗口4、窗口(window)
下圖描述了一個(gè)包括多個(gè)部件的窗口.3.7.2用戶界面的基本類型標(biāo)題區(qū)圖標(biāo)區(qū)大小區(qū)退出區(qū)菜單區(qū)滾動(dòng)區(qū)菜單工作區(qū)圖3.613.7.3I/O用戶界面設(shè)計(jì)3.7.3I/O用戶界面設(shè)計(jì)
I/O用戶界面的設(shè)計(jì),尤其是數(shù)據(jù)輸入界面的設(shè)計(jì),直接影響到用戶使用系統(tǒng)的效率。特別是輸入數(shù)據(jù)量大時(shí),主要考慮提高輸入速度。1、數(shù)據(jù)輸入界面設(shè)計(jì)數(shù)據(jù)輸入界面設(shè)計(jì)是系統(tǒng)的一個(gè)重要組成部分,一個(gè)好的輸入界面應(yīng)該盡可能方便而有效地進(jìn)行數(shù)據(jù)輸入。
⑴盡量減少輸入工作量采用對相同內(nèi)容輸入設(shè)置默認(rèn)值(缺省值)、自動(dòng)填入、列表或點(diǎn)擊選擇
⑵輸入屏幕與輸入格式匹配
應(yīng)以操作簡便為主要原則。
⑶數(shù)據(jù)輸入的一般規(guī)則
常??紤]確定輸入、交互動(dòng)作、確定刪除、提供反饋數(shù)據(jù)等。2、輸出界面設(shè)計(jì)
數(shù)據(jù)輸出界面設(shè)計(jì),首先應(yīng)該了解數(shù)據(jù)顯示的要求,選擇適當(dāng)?shù)娘@示內(nèi)容和顯示的形式。⑴顯示內(nèi)容選擇的原則是:
只選擇必需的數(shù)據(jù)顯示,聯(lián)系緊密的數(shù)據(jù)應(yīng)一起顯示,每一屏數(shù)據(jù)的數(shù)量,不超過整個(gè)屏幕的30%。
⑵安排顯示結(jié)構(gòu)的規(guī)則:
數(shù)據(jù)安排要方便用戶使用,要提供明了的提示幫助信息。
3.7.3I/O用戶界面設(shè)計(jì)I/O用戶界面設(shè)計(jì)
軟件的詳細(xì)設(shè)計(jì)完成,就表示完成了軟件的過程性的描述,進(jìn)入程序編碼階段。
3.8程序編碼3.8程序編碼本節(jié)不是介紹如何編寫程序,而是從如何提高軟件的質(zhì)量和可維護(hù)性的角度,討論在編碼階段所要解決的主要問題:程序設(shè)計(jì)語言的特性及選擇的原則程序設(shè)計(jì)風(fēng)格
在軟件生命期中,程序經(jīng)常需要被人閱讀和理解,如何提高程序的可讀性(Readability)?使程序“簡單”和“清晰”,進(jìn)而使程序具有良好的可靠性、可維護(hù)性。編碼(Coding)階段的任務(wù)簡單說,是為每個(gè)模塊編寫程序。即是將詳細(xì)設(shè)計(jì)的結(jié)果轉(zhuǎn)換為用某種計(jì)算機(jī)語言寫的程序——源程序代碼。12
如何選擇程序設(shè)計(jì)語言?關(guān)系到程序的效率和質(zhì)量。應(yīng)根據(jù)軟件系統(tǒng)的應(yīng)用特點(diǎn),語言的內(nèi)在特點(diǎn)等選擇程序設(shè)計(jì)語言。
(1)項(xiàng)目的應(yīng)用領(lǐng)域:應(yīng)盡量選取適合某個(gè)應(yīng)用領(lǐng)域的語言。
(2)算法和計(jì)算復(fù)雜性:要根據(jù)不同語言的特點(diǎn),選取能夠適應(yīng)軟件項(xiàng)目算法和計(jì)算復(fù)雜性的語言。
(3)軟件的執(zhí)行環(huán)境:要選取機(jī)器上能運(yùn)行且具有相應(yīng)支持軟件的語言。
(4)性能因素:應(yīng)結(jié)合工程具體性能來考慮,例如實(shí)時(shí)系統(tǒng)要求速度,就應(yīng)選擇匯編語言。
(5)數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性:要根據(jù)不同語言構(gòu)造數(shù)據(jù)結(jié)構(gòu)類型的能力選取合適的語言。
(6)軟件開發(fā)人員的知識(shí)水平以及心理因素。知識(shí)水平包括:專業(yè)知識(shí),程序設(shè)計(jì)能力。心理因素:如對某種語言或工具的熟悉程度。受外界的影響(盲目追求高、新)。3.8.1程序設(shè)計(jì)語言的選擇一、語言選擇的一般準(zhǔn)則3.8.1程序設(shè)計(jì)語言的選擇二、高級語言的內(nèi)在特點(diǎn)
1、傳統(tǒng)的高級語言
BASIC、FORTRAN、ALOGL
2、通用的結(jié)構(gòu)化程序設(shè)計(jì)語言特點(diǎn):具有很強(qiáng)的過程功能和數(shù)據(jù)結(jié)構(gòu)功能,并提供結(jié)構(gòu)化的邏輯構(gòu)造。代表:PASCAL、PL/1、C、Ada等,均來自ALOGL語言。
PL/1第一個(gè)真正廣泛使用的語言,可用于多種不同的應(yīng)用領(lǐng)域。支持多任務(wù)處理和復(fù)雜的I/O功能,表處理等。
Ada用于其嵌入式實(shí)時(shí)計(jì)算機(jī)設(shè)計(jì)的標(biāo)準(zhǔn)語言。提供了一組豐富的實(shí)時(shí)特性,包括多任務(wù)處理,中斷處理任務(wù)間的同步通信等。提供了許多Ada程序包及輔助軟件開發(fā)環(huán)境。3.8.1程序設(shè)計(jì)語言的選擇
Java的設(shè)計(jì)接近C++,但作了許多重大修改,不再支持運(yùn)算符的重載,多繼承及許多自動(dòng)強(qiáng)制等易混淆又較少使用的特性。增加了內(nèi)存空間自動(dòng)垃圾收集的功能。簡單網(wǎng)絡(luò)支持
提供附加的例程庫,用以支持Java的應(yīng)用程序?qū)W(wǎng)絡(luò)對象的訪問。安全有建立在公共密鑰技術(shù)基礎(chǔ)上的確認(rèn)技術(shù),指示器語義的改變,將使應(yīng)用程序無法訪問原有的數(shù)據(jù)結(jié)構(gòu)和私有數(shù)據(jù),大多數(shù)病毒無法破壞數(shù)據(jù)。3、面向?qū)ο蟮某绦蛟O(shè)計(jì)語言Smalltalk
首先實(shí)現(xiàn)真正的面向?qū)ο蟮某绦蛟O(shè)計(jì),支持程序部件的“可復(fù)用性”。C++
既融合了面向?qū)ο蟮哪芰?,又與C語言兼容,保留了C的許多重要特性。維護(hù)了大量已開發(fā)的C庫、工具及C源程序的完整性。代表:TurboC++;BorlandC++;MicrosoftC++Java
是一種簡單的面向?qū)ο蟮姆植际降恼Z言。功能強(qiáng)大、高效安全,與結(jié)構(gòu)無關(guān),易于移植,是多線程的動(dòng)態(tài)語言。增加了ObjectiveC的擴(kuò)充,提供更多的動(dòng)態(tài)解決辦法。3.8.1程序設(shè)計(jì)語言的選擇3.8.1程序設(shè)計(jì)語言的選擇4、面向?qū)ο蟮目梢暬Z言—所見即所得
VB
(MicrosoftVisualBasic)
VC
(MicrosoftVisualC++)提供了可視化的開發(fā)環(huán)境,具有圖形設(shè)計(jì)工具,結(jié)構(gòu)化的事件驅(qū)動(dòng)編程模式。
三、第四代語言稱為4GL,不需要規(guī)定算法細(xì)節(jié),在更高層次上用不同文法表示程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。分為:查詢語言程序生成器其他4GL如:判斷支持語言、原型語言、形式化規(guī)格說明語言。
4、面向?qū)ο蟮目梢暬Z言結(jié)構(gòu)程序設(shè)計(jì)的概念最早是由E.W.Dijkstra提出來的,是為了解決程序可讀性差的問題,創(chuàng)立一種新的程序設(shè)計(jì)思想、方法和風(fēng)格,以顯著提高軟件生產(chǎn)率和質(zhì)量。3.8.2結(jié)構(gòu)化程序設(shè)計(jì)究竟什么是結(jié)構(gòu)化程序設(shè)計(jì)?
主要特點(diǎn):
1.自頂而下,逐步求精。這種逐步求精的思想符合人類解決復(fù)雜問題的普遍規(guī)律,從而可以顯著提高軟件開發(fā)的效率。而且這種思想還體現(xiàn)了先全局后局部、先抽象后具體的方法,使開發(fā)的程序?qū)哟谓Y(jié)構(gòu)清晰,易讀、易理解、易驗(yàn)證,因而提高了程序的質(zhì)量。
2.結(jié)構(gòu)化的程序是由且僅由順序、選擇、循環(huán)三種基本控制結(jié)構(gòu)組成,既保證了程序結(jié)構(gòu)清晰,又提高了程序代碼的可重用性。3.8.2結(jié)構(gòu)化程序設(shè)計(jì)結(jié)構(gòu)化程序設(shè)計(jì)是一種程序設(shè)計(jì)技術(shù),它采用自頂向下,逐步求精的程序設(shè)計(jì)方法和單入口和單出口的控制結(jié)構(gòu)。
例:要求用篩選法求100以內(nèi)的素?cái)?shù)。
篩選法為:從2到100中去掉2,3,…,9,10的倍數(shù),剩下的就是100以內(nèi)的素?cái)?shù)。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- (一模)萍鄉(xiāng)市2025年高三第一次模擬考試政治試卷(含答案解析)
- 2025年中考道德與法治二輪復(fù)習(xí):文明與精神 高頻考點(diǎn)學(xué)案(含練習(xí)題及答案)
- 施工水源施工方案
- 阜陽機(jī)房消防施工方案
- 別墅獨(dú)院出租合同范例
- 雙方簽合同范例
- 建設(shè)工地保安工作流程與重點(diǎn)計(jì)劃
- 學(xué)校美術(shù)教育品牌形象建設(shè)計(jì)劃
- 人性化管理方案計(jì)劃
- 社會(huì)實(shí)踐與校外教學(xué)活動(dòng)安排計(jì)劃
- 國產(chǎn)自主可控?cái)?shù)據(jù)庫采購項(xiàng)目技術(shù)標(biāo)準(zhǔn)和服務(wù)要求
- 機(jī)械設(shè)計(jì)說明書-激光熔覆送粉器設(shè)計(jì)
- 瀝青砼質(zhì)量控制點(diǎn)及措施
- imedical8 1 0醫(yī)生站配置手冊
- RB/T 089-2022綠色供應(yīng)鏈管理體系要求及使用指南
- 家用牙齒美白儀對牙齒漂白的臨床應(yīng)用效果研究
- 李博《生態(tài)學(xué)》課后習(xí)題答案
- 生化檢驗(yàn)質(zhì)控及失控分析
- 永磁同步電機(jī)地設(shè)計(jì)與電磁分析報(bào)告
- 全國各大媒體的報(bào)料熱線電話號(hào)碼
- 催化材料智慧樹知到答案章節(jié)測試2023年南開大學(xué)
評論
0/150
提交評論