【正文】
? 4G。典型的高級(jí)程序設(shè)計(jì)語言有 ALGOL、 FORTRAN、 COBOL、 BASIC、 PASCAL、 C、 C ++、 Lisp、 PROLOG、 Ada等 。 ? 程序設(shè)計(jì)語言的分類 ? 從軟件工程的角度,根據(jù)程序設(shè)計(jì)語言發(fā)展的歷程,可以將程序設(shè)計(jì)語言大致分為 4類。 (4) 盡可能應(yīng)用代碼生成的自動(dòng)工具。 (2) 源程序應(yīng)具有可移植性。人們學(xué)習(xí)一種新的程序設(shè)計(jì)語言的能力受到傳統(tǒng)的影響。在編碼的過程中,由語句組合成模塊,由模塊組裝為程序系統(tǒng)結(jié)構(gòu),并在組裝過程中實(shí)現(xiàn)模塊的高內(nèi)聚和低耦合,可使程序的局部性加強(qiáng)。 ?軟件心理學(xué)的觀點(diǎn) (4) 局部性 。 (3) 簡潔性 。 (2) 二義性 。 程序設(shè)計(jì)語言 ? 軟件心理學(xué)的觀點(diǎn) (1) 一致性 。 設(shè)計(jì)原理與結(jié)構(gòu)化設(shè)計(jì)相關(guān)考題: 2022 一( 3),三( 2) 2022 一( 2),二( 2), 三( 1)( 2) 2022 一( 3),二( 2) 三( 1)( 2) 面向?qū)ο笤O(shè)計(jì)方法 ?―統(tǒng)一軟件開發(fā)過程”中的設(shè)計(jì)模型、相關(guān)工作流以及工作產(chǎn)品。 2) 設(shè)計(jì)軟件結(jié)構(gòu)的上層。 T 事務(wù) 事務(wù)處理中心 加工路徑 圖 2 1 3 事務(wù)流 要求類 型處 理 有效圖書管理要求 當(dāng)前日期 新書入庫 借 入庫單 罰款單 借書 注銷圖書 借書 目錄文件 借書單 書 單 注銷單 變 換 流 設(shè) 計(jì) 舉 例變換流設(shè)計(jì) 由 三 個(gè) 子 變 換 組 成 的 變 換 流 設(shè) 計(jì) 舉 例事 務(wù) 流 設(shè) 計(jì) 舉 例事務(wù)流設(shè)計(jì) 混合流設(shè)計(jì) ? 采用以變換流為主,事務(wù)流為輔的方法進(jìn)行設(shè)計(jì)。 事務(wù)流的數(shù)據(jù)流圖有一個(gè) 事務(wù)處理中心 。從輸入設(shè)備獲得物理輸入,一般要經(jīng)過一系列加工變成邏輯輸入送給變換(主加工)同理,邏輯輸出也要變?yōu)槲锢磔敵觥W儞Q輸入端的數(shù)據(jù)流為系統(tǒng)的 邏輯輸入 ,輸出端為系統(tǒng)的 邏輯輸出 。這種方法通常又叫做結(jié)構(gòu)化設(shè)計(jì)(簡稱 SD) DFD 軟件結(jié)構(gòu) 軟件結(jié)構(gòu)是什么樣子? 怎樣完成這一工作? 數(shù)據(jù)流圖類型 數(shù)據(jù)流圖有二種類型 變換型 DFD (變換流) 事務(wù)型 DFD (事務(wù)流) 變換流 ? 變換型數(shù)據(jù)流圖是一個(gè)線性結(jié)構(gòu),由輸入、變換和輸出組成,如下圖所示。 6) 子程序與相應(yīng)的接口, PDL構(gòu)造來定義: PROCEDURE subprogramname .attributes INTERFACE argumentlist blocks and/or pseudocode statements。 ENDFOR 循環(huán)中另外還提供了兩個(gè)關(guān)鍵的詞: NEXT和 EXIT。 ENDDO REPEAT UNTIL conditiondescription block or pseudocode statement。 DEFAULT:default or error case: block or pseudocode statement。 ENDIF 4) PDL的選擇構(gòu)造,其表現(xiàn)如下: CASE OF casevariablename WHEN casecondition1 SELECTblock or pseudocode statement。 END 3) PDL的條件構(gòu)造,一般采用 ifthenelse的形式 : IF conditiondescription THEN block or pseudocode statement。 r e t u r e 圖 2 9 求三角形面積和的 P A D 圖 返 回 把 PAD圖看做橫向生長的樹,沿著樹跡前進(jìn),寫出 源程序 過程設(shè)計(jì)語言( PDL) ?也叫程序設(shè)計(jì)語言、結(jié)構(gòu)化英語、偽碼。 c d s u m = p ( a 1 , b 1 , c 1 ) + p ( a 2 , b 2 , c 2 ) + p ( a 3 , b 3 , c 3 ) 。 a b 下一頁 a b p r i n t ( “% f \ n ”, s u m ) f l o a t x , y , z 。 c 2 , amp。 b 3 , amp。 b 1 , amp。 a 2 , amp。 ? 根據(jù)問題解畫出 PAD圖,表示如下: P = S ( S x ) ( S y ) ( S z ) S = ( x + y + z ) / 2 / * f i l e : y 9 , c * / i n c l u d e “s t d i o . h ” m a i n ( ) f l o z t p ( ) f l o a t a 1 , b 1 , c 1 , a 2 , b 2 , c 2 , a 3 , b 3 , c 3 , s u m s c a n f ( “% f % f % f % f % f % f % f % f % f ”, amp。 d e f a n l t : H d 。 c a s e i n : H n 。 c a s e i 2 : H 2 。 } s w i t c h i { c a s e i 1 : H 1 。 } i f ( Q ) { H 1 。 e 3 ) { H 。 f o r( e 1 。 } d o { H 。 2)遇選擇框或重復(fù)框,則按表 1所示的語言模式寫出相應(yīng)的語句。 2)把 PAD圖看做橫向生長的樹,沿著樹跡前進(jìn),寫出源程序。 ( 2)重復(fù)以上步驟,直到過程完全確定和詳盡為止。 ? PAD圖為軟件設(shè)計(jì)提供了系統(tǒng)設(shè)計(jì)應(yīng)采用的步驟: ( 1)因?yàn)樗械膯栴}解都可以用三種基本控制構(gòu)造(順序、重復(fù)、選擇)來描述。 A B a. 順序 F P T B A b . IF T H E N E L S E 選擇 F P T A D o w h i l e p S c . do w h i l e 循環(huán) S D o u n t i l p d . do u n t i l 循環(huán) P =1 =2 =n A 1 A 2 A n e . 多分支選擇 返回 PAD圖( problem analysis diagram, 問題分析圖) ? 優(yōu)點(diǎn): 結(jié)構(gòu)清晰,能直接導(dǎo)出程序代碼,并可對(duì)其進(jìn)行一 致性檢查。 ( 3)易于確定局部和全局的數(shù)據(jù)工作域。 盒圖具有的特征: ( 1)是一種清晰可見的圖形表達(dá)式,能定義功能域(重復(fù)或 ifthenelse的工作域)。它的 目標(biāo)是 開發(fā)一種不破壞結(jié)構(gòu)化構(gòu)成元素的過程設(shè)計(jì)表示。 ——―GOTO語句有害論”: Dijkstra認(rèn)為 Goto語句太容易把程序搞亂,因此應(yīng)從一切高級(jí)語言中把它去掉,而只用三種基本控制結(jié)構(gòu)就可以寫各種程序。即 所有受條件或判定影響的模塊應(yīng)從屬于作出條件或判定的那個(gè)模塊。 C A ’ B ’ ( 2)深度和寬度與扇出和扇入(都應(yīng)適當(dāng)) 經(jīng)驗(yàn)證明,一個(gè)設(shè)計(jì)得很好的軟件模塊結(jié)構(gòu),通常 頂層 扇出比較高, 中層 扇出比較少, 底層 扇入到有公共的實(shí)用模塊中,即底層模塊有高扇入。 A C1 A C2 如 C1 , C2 有類似功能,也有不同功能。 過小的模塊開銷大于有效操作,而且模塊數(shù)目過多將使系統(tǒng)接口復(fù)雜。 過大的模塊往往是由于分解不充分,需對(duì)功能進(jìn)一步分解。另外,體系結(jié)構(gòu)設(shè)計(jì)融合了程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),接口定義能使數(shù)據(jù)流經(jīng)程序。信息隱蔽和數(shù)據(jù)抽象概念給數(shù)據(jù)設(shè)計(jì)提供了基礎(chǔ)。 這種耦合應(yīng)堅(jiān)決避免。 ⑦ 內(nèi)容耦合: 當(dāng)一個(gè)模塊要直接使用存在于另一個(gè)模塊內(nèi)的數(shù)據(jù)或控制信息,或轉(zhuǎn)入另一模塊時(shí)出現(xiàn)的耦合。 ⑥ 公共耦合: 多個(gè)模塊引用同一個(gè)全程數(shù)據(jù)區(qū)。 比較強(qiáng)的耦合 。 中等程度的耦合。 仍是低耦合 。耦合程度 較低。耦合程度 最低 ,獨(dú)立性最高。我們爭(zhēng)取盡可能低的耦合 。 返回 耦合 ? 耦合是程序結(jié)構(gòu)中 模塊相互連接的度量 。 功能聚合是聚合程度 最高 的內(nèi)聚。 這是一種聚合程度較高的聚合 。 當(dāng)問題解 用數(shù)據(jù)流圖表示 時(shí),順序聚合把一串順序的對(duì)數(shù) 據(jù)的變換連接起來就可以得到順序聚合模塊。通信聚合雖然不是最高的聚合,但較已較前幾種聚合要高很多。 通常過程聚合模塊可以是一個(gè)循環(huán)、一個(gè)判斷或一個(gè)步驟的 線性序列。 例: initialization 模塊 讀控制卡片; 重繞各個(gè)磁帶; 打開磁盤文件; 置計(jì)數(shù)器為 0; 置累加器為 0; … … 從這些任務(wù)來看,不僅時(shí)間相關(guān),而且邏輯相關(guān),因?yàn)樗鼈? 都屬初始化工作。比巧合內(nèi)聚 要好一點(diǎn)。 Produce user out put。 (這種模塊一般很少使用,通常是一些初始化或終止模塊) 例: Read disk File。 ① 偶然聚合 : 一個(gè)模塊內(nèi)的各種元素之間沒有任何的聯(lián)系,這種 關(guān)系比較松散的任務(wù)組成一個(gè)的模塊。我們要盡量 爭(zhēng)取高聚合 。一個(gè)聚合度高的模塊只完成軟件過程內(nèi)的一個(gè)單一的任務(wù),且與程序的其他部分的過程交互作用很少。因?yàn)橥耆?dú)立的模塊是無所謂構(gòu)成系統(tǒng)的。 ? 模塊獨(dú)立性是 通過開發(fā)具有單一功能和與其他模塊沒有過多交互作用的模塊來達(dá)到的 。易于軟件開發(fā)工程的組織管理。 ? 耦合 返回 采用模塊化原理的 優(yōu)點(diǎn) : 可以使軟件結(jié)構(gòu)清晰,容易設(shè)計(jì)、容易閱讀和理解、容易測(cè)試和調(diào)試。 耦合( coupling):模塊之間相對(duì)獨(dú)立性的量度。 ?軟件設(shè)計(jì)的階段與任務(wù) ? 過程設(shè)計(jì) :過程設(shè)計(jì)的主要工作是確定軟件各個(gè)組成部分內(nèi)的算法及內(nèi)部數(shù)據(jù)結(jié)構(gòu),并選定某種過程的表達(dá)形式來描述各種算法。 ? 接口設(shè)計(jì) :接口設(shè)計(jì)描述用戶界面,軟件和其他硬件設(shè)備、其他軟件系統(tǒng)及使用人員的外部接口,以及各種構(gòu)件之間的內(nèi)部接口。 軟件設(shè)計(jì)的任務(wù) ?軟件設(shè)計(jì)的階段與任務(wù) ? 從管理和技術(shù)兩個(gè)不同的角度對(duì)設(shè)計(jì)的認(rèn)識(shí)。 設(shè)計(jì)的目標(biāo): 是建立一個(gè)軟件系統(tǒng)的物理模型 軟件需求:解決 “ 做什么 ” 軟件設(shè)計(jì):解決 “ 怎么做 ” 軟件設(shè)計(jì)的任務(wù) ?軟件設(shè)計(jì)的階段與任務(wù) ? 從工程管理的角度,可以將軟件設(shè)計(jì)分為 概要設(shè)計(jì)階段 和 詳細(xì)設(shè)計(jì)階段 。 在計(jì)算機(jī)軟件中,藍(lán)圖就是設(shè)計(jì)。 ? 部署圖可以顯示計(jì)算節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)和通信路徑、節(jié)點(diǎn)上運(yùn)行的軟件以及軟件包含的邏輯單元。典型情況下,構(gòu)件是開發(fā)環(huán)境中的實(shí)現(xiàn)文件。 打印機(jī)忙 保存打印文件 隊(duì)列 計(jì)算機(jī) 打印機(jī)空閑 打印文件 打印機(jī) 打印服務(wù)器 打印文件 電梯 狀態(tài)圖舉例: 在一樓 上升 停滯 下降 回到一樓 回一樓 想要到 達(dá)樓層 想要到 達(dá)樓層 電梯行程 開始 向上 向上 向下 活動(dòng)圖中的符號(hào) 活 動(dòng) 圖 舉 例 描述從活動(dòng)到活動(dòng)的控制流 找 飲 料把 咖 啡 放 入 濾 器 往 容 器 里 加 水拿 茶 杯 拿 可 樂將 濾 器 放 入 機(jī) 器開 機(jī) 器沖 咖 啡倒 咖 啡 喝 飲 料[ 沒 有 咖 啡 ][ 發(fā) 現(xiàn) 咖 啡 ][ 發(fā) 現(xiàn)