《現(xiàn)代軟件工程》培訓(xùn)課件.ppt_第1頁
《現(xiàn)代軟件工程》培訓(xùn)課件.ppt_第2頁
《現(xiàn)代軟件工程》培訓(xùn)課件.ppt_第3頁
《現(xiàn)代軟件工程》培訓(xùn)課件.ppt_第4頁
《現(xiàn)代軟件工程》培訓(xùn)課件.ppt_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、現(xiàn)代軟件工程第五部分軟件體系結(jié)構(gòu)與系統(tǒng)概要設(shè)計(jì) 現(xiàn)代軟件工程本部分主要參考書軟件工程-實(shí)踐者的研究方法現(xiàn)代軟件工程概論軟件體系結(jié)構(gòu)的原理、組成與應(yīng)用需求分析與系統(tǒng)設(shè)計(jì)設(shè)計(jì)模式-可復(fù)用面向?qū)ο筌浖幕A(chǔ)體系結(jié)構(gòu)的基本問題-1軟件系統(tǒng)的框架與體系結(jié)構(gòu)-2面向?qū)ο蟮脑O(shè)計(jì)模式-3MVC結(jié)構(gòu)與用戶界面設(shè)計(jì)-4基于構(gòu)件的軟件體系結(jié)構(gòu)-5從需求分析到系統(tǒng)設(shè)計(jì)過程-6第五部分 軟件體系結(jié)構(gòu)與系統(tǒng)概要設(shè)計(jì)第五部分 軟件體系結(jié)構(gòu)與系統(tǒng)概要設(shè)計(jì)第一章 體系結(jié)構(gòu)的基本問題體系結(jié)構(gòu)的意義-1.1 體系結(jié)構(gòu)的定義-1.2體系結(jié)構(gòu)的基礎(chǔ)-1.3抽象與求精-1.4模塊化與信息隱蔽- 體系結(jié)構(gòu)的重要性和意義軟件

2、設(shè)計(jì)與建筑設(shè)計(jì)在某些方面是類似的:搭建一個(gè)小狗屋,可以由一個(gè)人來完成:最小的整體結(jié)構(gòu)最簡單的過程最原始的工具整體結(jié)構(gòu)和精化都在一個(gè)人腦子里完成、并由本人親自實(shí)現(xiàn)構(gòu)造一棟房屋需要一張?jiān)O(shè)計(jì)圖紙或模型需要具有規(guī)劃良好的過程需要具備一定功能的工具需要由一個(gè)小型團(tuán)體完成,并且需要更明確的目標(biāo)和計(jì)劃、更高的效率、更精確的時(shí)間限制構(gòu)建一個(gè)高層建筑?復(fù)雜!軟件體系結(jié)構(gòu)的復(fù)雜性=技術(shù)的+管理的更高的技術(shù)復(fù)雜性 - 嵌入式,實(shí)時(shí)的,分布式的,不可出錯(cuò)的 - 定制的, 空前的,可復(fù)用的 - 高性能的較低的技術(shù)復(fù)雜度 - 大部分是4GL, 或基于組件技術(shù)的 - 應(yīng)用反向工程 - 基于交互式的對性能要求不高較高管理復(fù)雜

3、度 - 大范圍 - 合同契約性 - 受很多人制約的 - “項(xiàng)目”型的較低的管理復(fù)雜度 - 小范圍 - 非正式的 - 簡單的資金運(yùn)作 - “產(chǎn)品”型的防御 MIS系統(tǒng)防御武器系統(tǒng)信息 交換CASE工具國際空中運(yùn)輸控制系統(tǒng)企業(yè)IS(IS應(yīng)用)商業(yè)編譯器商業(yè)制表軟件IS應(yīng)用分布式對象小型科學(xué)模擬大型組織/實(shí)體仿真模擬一個(gè)中等的項(xiàng)目 - 5-10 人 - 10-15 個(gè)月的開發(fā)周期 - 3-5 個(gè)外部界面 - 一些不可知的事情 & 風(fēng)險(xiǎn)嵌入式車用軟件IS應(yīng)用GUI/RDB 理解軟件系統(tǒng)的復(fù)雜性因素新技術(shù)融合軟件體系結(jié)構(gòu)的重要性,已經(jīng)比算法和數(shù)據(jù)結(jié)構(gòu)更重要靈活性與可擴(kuò)展性處理能力與吞吐量負(fù)載與容量可用性

4、失敗安全與穩(wěn)固性出錯(cuò)容忍程度功能成本兼容與可移植性系統(tǒng)的復(fù)雜性現(xiàn)在的挑戰(zhàn)已經(jīng)不是速度、成本和性能,而是復(fù)雜度的問題了。 Bill Raduchel, Sun微系統(tǒng)公司策略執(zhí)行總裁體系結(jié)構(gòu)的域體系結(jié)構(gòu)元素/關(guān)系處理體系結(jié)構(gòu) 集成/約束 體系結(jié)構(gòu)是“什么”體系結(jié)構(gòu)“為什么”體系結(jié)構(gòu)“如何” “誰”保證體系結(jié)構(gòu)系統(tǒng)功能結(jié)構(gòu)S/W 需求系統(tǒng)質(zhì)量屬性滿足限制組織構(gòu)建技巧風(fēng)險(xiǎn)承擔(dān)人定義規(guī)則生產(chǎn)跟蹤技術(shù)定義為什么體系結(jié)構(gòu)在軟件系統(tǒng)中具有如此的重要性?一個(gè)表現(xiàn)體系結(jié)構(gòu)作用和價(jià)值的典型案例軟件無線電與體系結(jié)構(gòu)Software Radio Architecture5.1.2 體系結(jié)構(gòu)定義軟件體系結(jié)構(gòu)是:由結(jié)構(gòu)和功

5、能各異、相互作用的部件集合,按照層次構(gòu)成。它包含了系統(tǒng)的基礎(chǔ)構(gòu)成單元、它們之間的作用關(guān)系、在構(gòu)成系統(tǒng)時(shí),它們的集成方法以及對集成約束的描述。軟件的體系結(jié)構(gòu)是關(guān)于軟件系統(tǒng)組織的配置定義定義了:組成系統(tǒng)的結(jié)構(gòu)(結(jié)構(gòu)元素)和部件;定義了:結(jié)構(gòu)與部件間特定的構(gòu)成和協(xié)作關(guān)系;定義了:系統(tǒng)繼承集成方法和約束;因此,系統(tǒng)中的子系統(tǒng)定義,是系統(tǒng)體系構(gòu)建(集成)的結(jié)果,而不是開始;體系結(jié)構(gòu)不但決定了系統(tǒng)的物理構(gòu)成,也支配了開發(fā)的組織行為(需求分配、范圍和任務(wù)定義、進(jìn)度計(jì)劃、測試方案、集成方法、配置項(xiàng)與基線管理),這是現(xiàn)代軟件工程更注重的地方。內(nèi)容與形式、過程與結(jié)果理解體系結(jié)構(gòu)定義軟件體系結(jié)構(gòu)定義了軟件計(jì)算部件的

6、局部和總體的構(gòu)成以及這些部件之間的相互作用關(guān)系計(jì)算部件:客戶、服務(wù)器、數(shù)據(jù)庫、中間件、程序包、過程、子程序、進(jìn)程等切碎、再切碎(粒度)相互作用關(guān)系:過程調(diào)用、共享變量訪問、信號(hào)燈、進(jìn)程通信、消息傳遞、訪問/網(wǎng)絡(luò)協(xié)議等除了描述系統(tǒng)的構(gòu)成和結(jié)構(gòu)關(guān)系外,體系結(jié)構(gòu)還表達(dá)了系統(tǒng)需求和構(gòu)成之間的對應(yīng)關(guān)系,這為系統(tǒng)的設(shè)計(jì),提供了分析和評(píng)價(jià)的依據(jù)體系結(jié)構(gòu)比需求更進(jìn)一步要面對或滿足系統(tǒng)非功能性的內(nèi)容,如:容量、數(shù)據(jù)吞吐量、一致性、兼容性、安全性、可靠性 體系結(jié)構(gòu)元模型視圖展現(xiàn)了體系結(jié)構(gòu)的不同視角一個(gè)具體的體系結(jié)構(gòu)構(gòu)成的例子,當(dāng)然并不只有窗體,約束來自需求和設(shè)計(jì)規(guī)范模板提供了設(shè)計(jì)規(guī)范和重用表現(xiàn)了風(fēng)格規(guī)范制定和成果

7、積累從具體到抽象的提升體系結(jié)構(gòu)的類型與作用體系結(jié)構(gòu)在不同的階段,依據(jù)層次和細(xì)節(jié)的不同,分為概略型、需求型和設(shè)計(jì)型概略型是上層宏觀的描述,反映系統(tǒng)最上層的部件和連接關(guān)系需求型是對概略結(jié)構(gòu)的深入表達(dá),以滿足用戶功能和非功能需求的表達(dá)為主設(shè)計(jì)型從設(shè)計(jì)實(shí)現(xiàn)的角度,對需求型進(jìn)行更深入的描述表達(dá),需要從不同的側(cè)面/視圖,設(shè)計(jì)系統(tǒng)的各個(gè)層面的各個(gè)部件和連接結(jié)構(gòu)。在這個(gè)層面上的描述,將直接為系統(tǒng)實(shí)現(xiàn)和性能分析服務(wù)體系結(jié)構(gòu)的類型與作用在項(xiàng)目規(guī)劃階段:體系結(jié)構(gòu)是項(xiàng)目可行性、工程復(fù)雜度、計(jì)劃進(jìn)度、投資規(guī)模和風(fēng)險(xiǎn)預(yù)測的依據(jù)(概略型)在需求分析階段:體系結(jié)構(gòu)是開發(fā)團(tuán)隊(duì)與用戶進(jìn)行需求交互溝通的表達(dá)形式和結(jié)果(需求型)在系

8、統(tǒng)設(shè)計(jì)階段:體系結(jié)構(gòu)是系統(tǒng)設(shè)計(jì)分解的基礎(chǔ)在項(xiàng)目實(shí)施階段:體系結(jié)構(gòu)是工作分工、人員安排、組織協(xié)調(diào)、績效管理的依據(jù)在項(xiàng)目評(píng)估階段:體系結(jié)構(gòu)是性能測試和評(píng)估的依據(jù)在維護(hù)升級(jí)階段:體系結(jié)構(gòu)是在保證系統(tǒng)整體合理性、正確性、性能和可控的維護(hù)成本的前提下,軟件系統(tǒng)修改、擴(kuò)充、升級(jí)的基礎(chǔ)模型好的體系結(jié)構(gòu)的特征設(shè)計(jì)靈活和可伸縮性的考慮全面并可擴(kuò)展的思路簡單明了、直接可以理解的結(jié)構(gòu)劃分和關(guān)系定義清楚的模塊職責(zé)明確和分布合理的效益和技術(shù)綜合平衡的不同階段、不同的人,對體系結(jié)構(gòu)的不同視角不同的人對體系結(jié)構(gòu)有不同的視角最終用戶客戶項(xiàng)目經(jīng)理系統(tǒng)分析師編碼工程師架構(gòu)工程師維護(hù)人員其他開發(fā)人員體系結(jié)構(gòu)的視圖是根據(jù)觀察者的需要

9、,來進(jìn)行描述簡化(抽象)的,它關(guān)注觀察者的關(guān)注點(diǎn),而忽略與關(guān)注點(diǎn)無關(guān)的部分UML:描繪系統(tǒng)體系結(jié)構(gòu)邏輯視圖面向系統(tǒng)設(shè)計(jì) 功能實(shí)現(xiàn)視圖面向編程 軟件管理 過程視圖性能可伸縮性吞吐能力 面向系統(tǒng)集成分布圖系統(tǒng)拓?fù)浣Y(jié)構(gòu) 分發(fā), 安裝通信面向系統(tǒng)實(shí)施概念模型物理模型用例圖用例節(jié)點(diǎn)組件 類, 接口,協(xié)作活動(dòng)類體系結(jié)構(gòu)的視角對體系結(jié)構(gòu)的不同認(rèn)識(shí),反映在看待體系結(jié)構(gòu)的視角上,也有不同,形成了不同的體系結(jié)構(gòu)概念和描述形式:主要的有:結(jié)構(gòu)風(fēng)格、設(shè)計(jì)模式、模型和關(guān)鍵部件、ADL語言體系結(jié)構(gòu)風(fēng)格(風(fēng)格:一種現(xiàn)實(shí)存在的抽象)數(shù)據(jù)流系統(tǒng):順序批處理、管道和過濾器調(diào)用-返回系統(tǒng);主/子程序面向?qū)ο笙到y(tǒng):層次結(jié)構(gòu)獨(dú)立部件:

10、通信進(jìn)程、事件隱式調(diào)用虛擬機(jī):解釋器、規(guī)則系統(tǒng)以數(shù)據(jù)(庫)為中心的系統(tǒng):數(shù)據(jù)庫、超文本、黑板特殊領(lǐng)域風(fēng)格:過程控制、模擬器特殊結(jié)構(gòu)風(fēng)格:分布式處理、狀態(tài)轉(zhuǎn)移系統(tǒng)體系結(jié)構(gòu)的層次系統(tǒng)是由許多層次構(gòu)成的,每個(gè)層次處理不同的問題每個(gè)層次都有二個(gè)方面組成:部件和規(guī)則構(gòu)成系統(tǒng)的原始的或集成的部件由部件集成為系統(tǒng)的集成規(guī)則(靜態(tài))為系統(tǒng)提供語義的行為規(guī)則(動(dòng)態(tài))軟件設(shè)計(jì)發(fā)展過程中,對體系結(jié)構(gòu)認(rèn)識(shí)的三個(gè)層次執(zhí)行級(jí)包括存儲(chǔ)器的映射、數(shù)據(jù)地址的安排、堆棧和寄存器的分配等,在此,部件是硬件,集成和行為規(guī)則是非常明確具體的代碼級(jí)包括算法和數(shù)據(jù)結(jié)構(gòu)的選擇。在此,部件是程序設(shè)計(jì)語言的字符、指針、進(jìn)程控制等,集成的是記錄、

11、數(shù)組和過程結(jié)構(gòu)級(jí)包括與部件相關(guān)聯(lián)的系統(tǒng)總體性能。在此,部件是模塊、模塊的相互關(guān)系,它指明從模塊到子系統(tǒng)、到系統(tǒng)的集成在上世紀(jì)80年代,軟件開發(fā)者關(guān)注的是代碼級(jí)的,如今,關(guān)注的是結(jié)構(gòu)級(jí)“結(jié)構(gòu)級(jí)”體系結(jié)構(gòu)的認(rèn)識(shí)軟件體系結(jié)構(gòu)的“結(jié)構(gòu)”元素:部件系統(tǒng)的總體組織架構(gòu)、全局控制、通信協(xié)議、同步、數(shù)據(jù)存取、設(shè)計(jì)元素的功能、設(shè)計(jì)元素的組織、規(guī)模、性能、設(shè)計(jì)方案的選擇等部件不只是有形的、物理的程序片段:還包括“結(jié)構(gòu)件”軟件體系結(jié)構(gòu)的集成規(guī)則和行為規(guī)則體系結(jié)構(gòu)是關(guān)于軟件的系統(tǒng)級(jí)層次上的組成和行為體系結(jié)構(gòu)是由軟件部件和部件之間的聯(lián)系組成部件的描述應(yīng)包括:部件功能、結(jié)構(gòu)特征、非功能特征部件的概念,根據(jù)設(shè)計(jì)方法的不同,

12、代表不同的對象:類/對象、庫/包、構(gòu)件/組件、制品/配置項(xiàng)/基線等RUP的統(tǒng)一過程結(jié)構(gòu)預(yù)備循環(huán) Iter.#1周期處理工作流反復(fù)支持工作流 Iter.#2 Iter.#n Iter.#n+1 Iter.#n+2 Iter.#m Iter.#m+1管理環(huán)境配置管理業(yè)務(wù)模型實(shí)現(xiàn)測試分析和設(shè)計(jì)分布需求詳細(xì)化提交初始化構(gòu)造RUP統(tǒng)一過程三大要素:用例驅(qū)動(dòng)源頭和全過程驅(qū)動(dòng)迭代開發(fā)過程與基本方法以體系結(jié)構(gòu)為中心適應(yīng)需求變更和迭代開發(fā)的 需要,以體系結(jié)構(gòu)為基礎(chǔ)的 增量開發(fā)。發(fā)現(xiàn)創(chuàng)造實(shí)現(xiàn)生命周期與重要的里程碑時(shí)間想象 體系結(jié)構(gòu)基線 初始能力產(chǎn)品發(fā)布最初詳細(xì)構(gòu)造提交最初 定義項(xiàng)目的范圍和開發(fā)商業(yè)案例(業(yè)務(wù)/系統(tǒng)

13、模型)詳細(xì) 計(jì)劃項(xiàng)目,詳細(xì)說明功能和結(jié)構(gòu)的基線構(gòu)造 創(chuàng)建產(chǎn)品提交 把產(chǎn)品提交給用戶以產(chǎn)品線為目標(biāo)、以框架為基礎(chǔ)的迭代過程迭代一個(gè)循環(huán)是一次確定的計(jì)劃、評(píng)估、標(biāo)準(zhǔn)審查活動(dòng)的階段,最終結(jié)果是產(chǎn)生可執(zhí)行發(fā)布版本(基線發(fā)布與中間版本)。主要循環(huán).開發(fā)循環(huán)開發(fā)循環(huán).提交循環(huán).發(fā)布發(fā)布發(fā)布發(fā)布發(fā)布發(fā)布發(fā)布發(fā)布預(yù)備循環(huán).最初詳細(xì)構(gòu)造提交以體系結(jié)構(gòu)為中心RUP的視圖和模型是使體系結(jié)構(gòu)可視化、可詳細(xì)描述和定義、可文檔化的構(gòu)造工具和手段統(tǒng)一過程指明了可執(zhí)行體系結(jié)構(gòu)的順序行為過程時(shí)間體系結(jié)構(gòu)初始化詳細(xì)描述構(gòu)造提交體系結(jié)構(gòu)和循環(huán)用例模型設(shè)計(jì)模型分布模型測試模型實(shí)現(xiàn)模型內(nèi)容關(guān)系數(shù)據(jù)庫C客戶端WWW BrowserWeb

14、服務(wù)器HTMLCGIASPJava商業(yè)對象服務(wù)商業(yè)對象引擎應(yīng)用商業(yè)對象服務(wù)A客戶端商業(yè)對象引擎廋客戶端,胖服務(wù)器B客戶端Application商業(yè)對象服務(wù)商業(yè)對象引擎商業(yè)邏輯服務(wù)器DCOMADO/RCORBABeansCOMMTSBeansETS體系結(jié)構(gòu)的四視圖觀點(diǎn)四視圖:概念、模塊、代碼、運(yùn)行體系結(jié)構(gòu)的模型和關(guān)鍵部件觀點(diǎn)關(guān)系數(shù)據(jù)庫圖形用戶界面關(guān)系數(shù)據(jù)庫圖形用戶界面商業(yè)對象模型圖形用戶界面商業(yè)對象模型關(guān)系數(shù)據(jù)庫模型的演變和深入:過程抽象關(guān)鍵部件:系統(tǒng)邊界、系統(tǒng)服務(wù)和客戶、系統(tǒng)界面、事務(wù)管理模型的演變和深入:對象和數(shù)據(jù)抽象順序/條件/循環(huán)、分布、并行、激發(fā)/響應(yīng)、應(yīng)用環(huán)境、任務(wù)控制復(fù)雜的Inte

15、rnet系統(tǒng)客戶端WEB服務(wù)器應(yīng)用服務(wù)器認(rèn)證系統(tǒng)財(cái)務(wù)系統(tǒng)庫存系統(tǒng)數(shù)據(jù)庫系統(tǒng)Dynamic HTML, JavaScript, Javaplug-ins, source code enhancementsJava, C, C+, JavaScript, CGIJava, C, C+, JavaBeans, CORBA, DCOMNative languages復(fù)雜的商業(yè)系統(tǒng)的體系結(jié)構(gòu)數(shù)據(jù)庫用戶界面層ServiceAgentpurchase(customer, product, items)Customername : StringAddress : Stringsave()Customernam

16、e : StringAddress : Stringsave()getName()updateName()CustomerOrder Line*Product*Order Lineitems : ProductgetName()updateName()Observerupdate()Orderdate : DateProductname : Stringprice : CurrencygetName()updateName()Salesproduct : Product中間件體系結(jié)構(gòu)的研究范疇體系結(jié)構(gòu)的研究領(lǐng)域體系結(jié)構(gòu)的實(shí)踐經(jīng)驗(yàn)積累通用的軟件體系結(jié)構(gòu)框架和構(gòu)件特殊應(yīng)用領(lǐng)域的體系結(jié)構(gòu)框架和組件基

17、于體系結(jié)構(gòu)的軟件開發(fā)環(huán)境和工具體系結(jié)構(gòu)本身的形式化研究體系結(jié)構(gòu)的形式化語言描述方法軟件設(shè)計(jì)經(jīng)歷了40年的發(fā)展演化過程: 1、早期的模塊化程序設(shè)計(jì)和自頂向下逐步求精的結(jié)構(gòu)化方法面向結(jié)構(gòu)的方法2、由數(shù)據(jù)庫技術(shù)的發(fā)展,帶來的將數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)化為設(shè)計(jì)定義的方法(E-R模型)面向數(shù)據(jù)的方法3、面向?qū)ο蟮姆椒◤膶ο蠹捌潢P(guān)系導(dǎo)出系統(tǒng)的方法4、現(xiàn)在的方法:軟件設(shè)計(jì)的重點(diǎn),已經(jīng)移到軟件體系結(jié)構(gòu)和實(shí)現(xiàn)軟件體系結(jié)構(gòu)的設(shè)計(jì)模式 5.1.3 體系結(jié)構(gòu)基礎(chǔ)體系結(jié)構(gòu)的基本問題:結(jié)構(gòu)基礎(chǔ) 軟件結(jié)構(gòu)始終是軟件研究的重要課題,而研究的層次和側(cè)重點(diǎn),從最基本和底層,向越來越抽象層次發(fā)展,但結(jié)構(gòu)的基本思想仍然有指導(dǎo)意義。曾作為

18、軟件結(jié)構(gòu)研究發(fā)展的基本思想包括:(1)結(jié)構(gòu)化控制流(2)部件連接方式(3)結(jié)構(gòu)化控制模式(4)基本數(shù)據(jù)結(jié)構(gòu)(5)抽象數(shù)據(jù)結(jié)構(gòu)(6)進(jìn)程(7)分時(shí)與并發(fā)(8)資源共享與并行同步不論何種方法,都具有以下一些共同的特征:(1)一種用于將分析模型變換到設(shè)計(jì)表示的機(jī)制;(2)用于表示功能性結(jié)構(gòu)及其接口的符號(hào)體系;(3)用于求精和劃分的啟發(fā)信息;(4)質(zhì)量評(píng)價(jià)的指導(dǎo)原則軟件的結(jié)構(gòu)基礎(chǔ)1、結(jié)構(gòu)化控制流伴隨著高級(jí)語言的產(chǎn)生,最基本的結(jié)構(gòu)化程序控制規(guī)范就產(chǎn)生了,例如:順序語句形式:; ; ;程序按語句1-n順序執(zhí)行。轉(zhuǎn)向語句形式:goto;程序轉(zhuǎn)到所指示的語句執(zhí)行。過程調(diào)用形式:(參數(shù)1、參數(shù)2、參數(shù)n) 程序

19、轉(zhuǎn)到指定的過程開始執(zhí)行,執(zhí)行完過 程后,返回到的下一條語句繼續(xù)執(zhí)行。軟件的結(jié)構(gòu)基礎(chǔ)條件語句形式:if(條件表達(dá)式)then;條件成立,執(zhí)行語句形式:if(條件表達(dá)式)thenelse; 如果條件成立,執(zhí)行語句1,否則執(zhí)行語句2。開關(guān)語句形式:switch(計(jì)算表達(dá)式) case 值1:; case值n:語句n; else 語句N+1; 計(jì)算表達(dá)式的值,根據(jù)取值i,分別執(zhí)行語句I,否則,執(zhí)行語句n+1。循環(huán)語句形式:for(循環(huán)控制變量=初值,循環(huán)變量計(jì)算) 從循環(huán)控制變量初值開始,判斷條件是否滿足,滿足則執(zhí)行循環(huán)體,改變控制變 量值,再進(jìn)行判斷形式:while(條件表達(dá)式)do;先判斷條件,滿

20、足則執(zhí)行語句。形式:repeatuntil(條件表達(dá)式);先執(zhí)行,再判斷條件滿足再次執(zhí)行。軟件的結(jié)構(gòu)基礎(chǔ)2、部件連接方式(控制模式)在控制流之上,存在著比語句更集中的部件,這些部件可以是數(shù)據(jù)、外部設(shè)備、程序段等。與這些部件的連接方式,是復(fù)雜程序設(shè)計(jì)更高一層的抽象,也稱為控制模式。直接過程調(diào)用方式部件與部件之間,通過直接調(diào)用對方的過程、函數(shù)或方法實(shí)現(xiàn)連接的方法,這是最普通、常用的方法。過程調(diào)用是通過系統(tǒng)提供的CALL和堆棧機(jī)制實(shí)現(xiàn)的。過程標(biāo)識(shí) 過程代碼 P1 P2Pn P1代碼P2代碼Pn代碼過程調(diào)用表(間接)方式如圖:過程調(diào)用表是通過維護(hù)一張表格的形式,來系統(tǒng)地管理過程調(diào)用的方法。各過程按標(biāo)識(shí)

21、排列在表中,建立起標(biāo)識(shí)與代碼的對應(yīng)。調(diào)用表的可動(dòng)態(tài)維護(hù),是這種方法的優(yōu)點(diǎn),所以也稱為間接調(diào)用。調(diào)用方主動(dòng)/被調(diào)用方被動(dòng)軟件的結(jié)構(gòu)基礎(chǔ)中斷/事件觸發(fā)方式中斷事件觸發(fā)是通過硬件所提供的中斷及其控制機(jī)制,實(shí)現(xiàn)的部件連接方式。部件的調(diào)用,依靠中斷設(shè)置和中斷觸發(fā)實(shí)現(xiàn)的。中斷設(shè)置就是將特定的中斷號(hào)碼的中斷指針指向中斷處理入口。中斷處理根據(jù)代碼號(hào),轉(zhuǎn)向不同的處理代碼段,執(zhí)行相應(yīng)的處理操作。中斷號(hào) 服務(wù)代碼 1# 2#n# 1#中斷2#中斷n#中斷發(fā)生x號(hào)中斷進(jìn)入轉(zhuǎn)入中斷處理過程鏈接方式過程鏈接在原理上與中斷方式有些類似,它通過一些標(biāo)識(shí),在多個(gè)事件或過程的處理鏈中,進(jìn)行轉(zhuǎn)移。過程鏈接方式是動(dòng)態(tài)擴(kuò)展系統(tǒng)功能的常

22、用設(shè)計(jì)方法。在中斷服務(wù)、設(shè)備管理、消息傳遞等服務(wù)中,有廣泛的應(yīng)用。只要增加一個(gè)標(biāo)識(shí),就可以把新的代碼段插入到處理鏈中,達(dá)到功能擴(kuò)充的目的。調(diào)用方被動(dòng)/被調(diào)用方主動(dòng)軟件的結(jié)構(gòu)基礎(chǔ)服務(wù)連接方式服務(wù)連接方式的服務(wù)部件由接口、分析器、執(zhí)行器構(gòu)成其他部件與服務(wù)部件進(jìn)行交互,是通過接口進(jìn)行的分析器分析獲得的服務(wù)請求信息然后交執(zhí)行器執(zhí)行服務(wù)部件是被動(dòng)接收服務(wù)請求,解釋器和各類服務(wù)器就是采用這種連接方式分析器執(zhí)行器服務(wù)部件部件1部件2的代理部件2網(wǎng)絡(luò)連接遠(yuǎn)程過程調(diào)用方式遠(yuǎn)程過程調(diào)用(PRC:Remote Procedural Call)是在網(wǎng)絡(luò)環(huán)境下的過程調(diào)用。本地部件無法獲得分布在遠(yuǎn)程的部件的標(biāo)識(shí),不能直接

23、調(diào)用遠(yuǎn)程的部件,因此,需要在本地,建立一個(gè)遠(yuǎn)程部件的代理。本地部件把服務(wù)請求發(fā)送給代理,由代理通過網(wǎng)絡(luò)實(shí)現(xiàn)與遠(yuǎn)程部件的連接。類似地還有同一計(jì)算機(jī)內(nèi)的進(jìn)程間調(diào)用,也有一個(gè)專門的機(jī)制,來實(shí)現(xiàn)。接口互為調(diào)用和被調(diào)用方,可以無主從,稱為發(fā)起/響應(yīng)軟件的結(jié)構(gòu)基礎(chǔ)3、結(jié)構(gòu)化連接模式結(jié)構(gòu)化連接模式指部件與部件間連接關(guān)系的構(gòu)成形式條件連接循環(huán)連接查詢模式中斷/事件模式共享信息模式部件A部件1部件n條件連接部件A部件1部件n循環(huán)連接(輪巡)根據(jù)已知條件選擇根據(jù)當(dāng)時(shí)事件選擇軟件的結(jié)構(gòu)基礎(chǔ)信息處理信息源1信息源n查詢模式信息處理信息源1信息源n中斷/事件模式信息處理信息源共享信息模式信息共享交換區(qū)采樣點(diǎn)不多事件多/

24、輪巡方式控制方主動(dòng)采樣點(diǎn)多事件不多/中斷方式事件方主動(dòng)對等軟件的結(jié)構(gòu)基礎(chǔ)4、基本數(shù)據(jù)類型數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),是繼控制流和結(jié)構(gòu)化設(shè)計(jì)之后,在軟件研究和設(shè)計(jì)中,發(fā)揮過巨大作用的軟件結(jié)構(gòu)概念面向數(shù)據(jù)的程序設(shè)計(jì)提出“軟件=數(shù)據(jù)結(jié)構(gòu)+算法”目前數(shù)據(jù)結(jié)構(gòu)的重要性已經(jīng)讓位給體系結(jié)構(gòu),但數(shù)據(jù)結(jié)構(gòu)仍然是系統(tǒng)設(shè)計(jì)的重要基礎(chǔ)常用的數(shù)據(jù)結(jié)構(gòu)概念是線性結(jié)構(gòu):順序表、向量、堆棧、隊(duì)列、鏈表、動(dòng)態(tài)存儲(chǔ)、串、排序、檢索;樹形結(jié)構(gòu):二分樹、樹;復(fù)雜結(jié)構(gòu):圖、多維數(shù)組、集合、疏散矩陣、廣義表;文件結(jié)構(gòu):順序文件、散列文件、索引文件軟件的結(jié)構(gòu)基礎(chǔ)5、抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型(ADT:Abstract Data Types)是一個(gè)關(guān)

25、于軟件部件的數(shù)學(xué)模型ADT定義了所描述部件的構(gòu)成和構(gòu)成成員之間的關(guān)系A(chǔ)DT定義了作用在部件構(gòu)成之上的合法的操作與操作性質(zhì)ADT表達(dá)的是一組邏輯特性,與其在計(jì)算機(jī)內(nèi)的具體表示和實(shí)現(xiàn)無關(guān),這是抽象的意義所在現(xiàn)代軟件工程認(rèn)為,軟件系統(tǒng)架構(gòu)是建立在系統(tǒng)的數(shù)據(jù)模型上而不是建立在單純的操作(傳統(tǒng)軟件工程方法)之上的抽象抓住了軟件部件設(shè)計(jì)的本質(zhì),通過集中分類表達(dá)的形式,建立部件的完整描述,這正是軟件系統(tǒng)體系結(jié)構(gòu)分析和設(shè)計(jì)所要求的。一個(gè)軟件部件類型的抽象定義,可用(D、R、P、S)四元組表示如下:D:數(shù)據(jù)對象R:數(shù)據(jù)對象D成員之間的約束關(guān)系P:對數(shù)據(jù)對象D的操作集S:是S的操作語義 有關(guān)ADT的細(xì)節(jié),在詳細(xì)設(shè)

26、計(jì)中討論軟件的結(jié)構(gòu)基礎(chǔ)6、進(jìn)程早期的計(jì)算機(jī)系統(tǒng)的運(yùn)行,一個(gè)程序獨(dú)占計(jì)算機(jī)所有資源,CPU順序執(zhí)行指令、程序、數(shù)據(jù)、內(nèi)存地址直接指定,程序的執(zhí)行過程由程序“本身”進(jìn)行控制為了提高計(jì)算機(jī)資源的利用率,開始引入多道(并行/并發(fā))程序設(shè)計(jì)的技術(shù),在多程序運(yùn)行環(huán)境下,程序執(zhí)行不再由程序本身控制,因此,引進(jìn)了“進(jìn)程”的概念進(jìn)程是一個(gè)程序的一段(獨(dú)立調(diào)度、獨(dú)立分配/釋放資源)動(dòng)態(tài)執(zhí)行過程進(jìn)程是具有獨(dú)立功能的程序?qū)δ硞€(gè)數(shù)據(jù)集在處理器上的執(zhí)行過程和資源分配單元的基本單位程序和進(jìn)程的區(qū)別:程序是進(jìn)程運(yùn)行的“腳本”,進(jìn)程是程序的動(dòng)態(tài)執(zhí)行過程一個(gè)進(jìn)程可以執(zhí)行一個(gè)或多個(gè)程序,一個(gè)程序可以有多個(gè)進(jìn)程進(jìn)程具有并行性,并行可

27、以是獨(dú)立的、異步的進(jìn)程概念的進(jìn)一步發(fā)展:子進(jìn)程、線程進(jìn)程實(shí)現(xiàn):進(jìn)程控制塊、進(jìn)程調(diào)度、進(jìn)程數(shù)據(jù)環(huán)境進(jìn)程與體系結(jié)構(gòu)的關(guān)系:從靜態(tài)-動(dòng)態(tài)程序/數(shù)據(jù)結(jié)構(gòu)到行為結(jié)構(gòu)多道批處理系統(tǒng) 多道程序的執(zhí)行情況: 在計(jì)算機(jī)內(nèi)存中同時(shí)存放若干道已開始運(yùn)行尚未結(jié)束的程序,它們交替運(yùn)行,共享系統(tǒng)中的各種硬、軟件資源,從而使處理機(jī)得到充分利用。 在該系統(tǒng)中, 用戶所提交的作業(yè)都先存放在外存上并排成一個(gè)隊(duì)列,稱為“后備隊(duì)列”;然后,由作業(yè)調(diào)度程序按一定的算法從后備隊(duì)列中選擇若干個(gè)作業(yè)調(diào)入內(nèi)存,使它們共享CPU和系統(tǒng)中的各種資源。軟件的結(jié)構(gòu)基礎(chǔ)單道和多道程序運(yùn)行情況 軟件的結(jié)構(gòu)基礎(chǔ)7、分時(shí)與并發(fā)分時(shí)的概念采用時(shí)間片輪的方法,同

28、時(shí)為許多終端用戶服務(wù),對每個(gè)用戶能保證足夠快的響應(yīng)時(shí)間,并提供交互會(huì)話的功能。時(shí)間片:將CPU的時(shí)間劃分成若干個(gè)片段,稱為時(shí)間片,操作系統(tǒng)以時(shí)間片為單位,輪流為每個(gè)終端用戶服務(wù)設(shè)計(jì)目標(biāo):對用戶的請求及時(shí)響應(yīng),并在可能條件下盡量提高系統(tǒng)資源的利用率。實(shí)現(xiàn)分時(shí)的方法固定時(shí)間片,滾入/滾出劃分前臺(tái)和后臺(tái),對前臺(tái)給予較大的時(shí)間片,或只在前臺(tái)“空閑”時(shí),才執(zhí)行后臺(tái)任務(wù)(多數(shù)為批處理任務(wù))進(jìn)一步把前臺(tái)作業(yè)分成幾個(gè)作業(yè)流(劃小時(shí)間片單位),提高響應(yīng)效率軟件的結(jié)構(gòu)基礎(chǔ)8、資源共享與并行同步資源共享:防止為競爭公共資源產(chǎn)生的死鎖并行同步:為協(xié)同進(jìn)程間的邏輯和時(shí)序關(guān)系制約機(jī)制傳統(tǒng)操作系統(tǒng):競爭條件、臨界區(qū)、忙等待

29、互斥、睡眠與喚醒、信號(hào)量、事件計(jì)數(shù)器、管程、消息傳遞、原語等價(jià)等分布式操作系統(tǒng):分層協(xié)議、客戶-服務(wù)器模式、遠(yuǎn)程過程調(diào)用軟件的結(jié)構(gòu)基礎(chǔ)這都是軟件系統(tǒng)設(shè)計(jì)所走過的路現(xiàn)在仍在走,特別體現(xiàn)在:操作系統(tǒng)工業(yè)控制實(shí)時(shí)控制等等,對系統(tǒng)資源要求非??量痰沫h(huán)境下如果我們前面探討的是宏觀(整體)的體系結(jié)構(gòu),那么下面,我們開始再深入考察一下整體結(jié)構(gòu)的建立過程和構(gòu)成要素(模塊結(jié)構(gòu))5.1.4 抽象與求精抽象 抽象是常見的思考問題的方法:專注主要方面,避開細(xì)節(jié)需求分析的抽象:用問題域的語言描述需求,不用計(jì)算機(jī)的語言表達(dá),避開因計(jì)算機(jī)實(shí)現(xiàn)細(xì)節(jié)帶來的干擾,抽象級(jí)別最高 系統(tǒng)設(shè)計(jì)的抽象:同時(shí)采用用面向問題域和面向?qū)崿F(xiàn)域的術(shù)

30、語,來描述解決方案,抽象級(jí)別降低 編碼階段的抽象:采用高級(jí)語言,實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)。高級(jí)語言是對機(jī)器執(zhí)行代碼的抽象,抽象級(jí)別最低軟件的結(jié)構(gòu)基礎(chǔ):抽象與求精在軟件開發(fā)過程中,有過程抽象和數(shù)據(jù)抽象過程抽象過程抽象是指具有特定功能的一個(gè)被“命名的”指令序列在高抽象級(jí)別中,它可能就是一個(gè)過程名,不需要具體實(shí)現(xiàn)細(xì)節(jié)。在低抽象層次中,它可以是一段抽象的“宏”描述數(shù)據(jù)抽象描述數(shù)據(jù)對象的一個(gè)命名的數(shù)據(jù)集合與過程抽象一樣,也有從高級(jí)到低級(jí)的層次抽象與求精抽象細(xì)化的例子:一個(gè)計(jì)算機(jī)輔助設(shè)計(jì)CAD軟件,可以實(shí)現(xiàn)二維繪圖抽象級(jí)別1:需求描述 該軟件應(yīng)具有以下功能:提供一個(gè)所見既所得的繪圖用戶界面提供一個(gè)數(shù)字化儀界面,用以代

31、替繪圖板和丁字尺能實(shí)現(xiàn)各種類型的直線、矩形、圓及曲線的繪制可進(jìn)行幾何計(jì)算、視圖或剖面圖處理設(shè)計(jì)結(jié)果以圖形文件形式存儲(chǔ) 顯然,這個(gè)抽象是問題域術(shù)語的抽象與求精抽象級(jí)別2:系統(tǒng)任務(wù)描述 CAD軟件任務(wù):系統(tǒng)用戶交互二維圖形創(chuàng)建與輸入圖形顯示與處理圖形文件管理END CAD這個(gè)抽象,已經(jīng)比較接近計(jì)算機(jī)術(shù)語,而不是用戶術(shù)語,但仍然還不是實(shí)現(xiàn)術(shù)語抽象級(jí)別3:過程描述(部分) PROCEDURE 二維圖形創(chuàng)建REPEAT 下列操作 UNTIL 圖形創(chuàng)建完畢DO WHILE 需要與數(shù)字化儀交互時(shí) 數(shù)字化儀接口處理 CASE 繪圖請求 OF 直線:直線繪圖處理 矩形:矩形繪圖處理 圓 :圓繪圖處理 END C

32、ASEEND DOEND REPEATEND PROCEDUREDO WHILE 需要與鍵盤交互時(shí) 鍵盤交互處理 CASE 分析/計(jì)算 OF 視圖 :視圖處理 剖面圖:剖面圖處理 計(jì)算 :計(jì)算處理 END CASEEND DO抽象與求精求精從宏觀開始,進(jìn)行功能分解,建立過程細(xì)節(jié),直到用程序設(shè)計(jì)語言進(jìn)行實(shí)現(xiàn)為止抽象的目的是使設(shè)計(jì)人員避開細(xì)節(jié),抓住問題的本質(zhì)求精的目的則是幫助設(shè)計(jì)人員隨設(shè)計(jì)的深入獲得更深層次的信息抽象和求精都是設(shè)計(jì)人員建立完整系統(tǒng)模型的必要過程求精的方法就是研究模塊本身和模塊之間的構(gòu)成關(guān)系有兩個(gè)函數(shù):C(x)表示問題x的復(fù)雜程度;E(x)表示解決問題x所需要的工作量(時(shí)間)。對于兩

33、個(gè)問題P1和P2,如果:C(P1)C(P2) 則:E(P1)E(P2)如果問題復(fù)雜,則解決問題的工作量也大另一個(gè)有趣的特性是:C(P1P2)C(P1)C(P2)問題分解,有利于降低問題的總的復(fù)雜度根據(jù)前面的結(jié)論,我們可以得出下面的不等式:E(P1P2)E(P1)E(P2)所以,問題分解既可以降低問題的復(fù)雜程度,也可以減少總的工作量。這種“分而治之”的思想提供了模塊化的根據(jù):把復(fù)雜的問題分解成許多容易解決的小問題,原來的問題也就容易解決了。 但是,過分的分細(xì)模塊,也會(huì)帶來集成的復(fù)雜度,因此,需要選擇一個(gè)適度平衡的方案。5.1.5 軟件的結(jié)構(gòu)基礎(chǔ):模塊化和信息隱蔽模塊的概念1.定義 同時(shí)具有以下四

34、個(gè)要素的一組程序語句稱為一個(gè)模塊 四個(gè)要素是: 輸入/輸出 邏輯功能 運(yùn)行程序 內(nèi)部數(shù)據(jù)。 前兩個(gè)稱為模塊的外部要素,后兩個(gè)稱為內(nèi)部要素。 模塊化和信息隱蔽2.模塊的屬性模塊定義:四個(gè)要素輸入/輸出、邏輯功能、運(yùn)行程序、內(nèi)部數(shù)據(jù)。模塊具有四種屬性:一個(gè)模塊的輸入/輸出都是指向同一個(gè)調(diào)用者。模塊的邏輯功能是指模塊能夠做什么事,表達(dá)了模塊把輸入轉(zhuǎn)換成輸出的功能,可以是單純的(無處理)輸入/輸出功能。模塊的運(yùn)行程序指模塊如何用程序?qū)崿F(xiàn)其邏輯功能的過程。模塊的數(shù)據(jù)指屬于模塊自己的數(shù)據(jù)。 在結(jié)構(gòu)化系統(tǒng)設(shè)計(jì)中。人們主要關(guān)心的是模塊的外部要素(輸入/輸出、邏輯功能),至于內(nèi)部要素(運(yùn)行程序、內(nèi)部數(shù)據(jù)),將在

35、系統(tǒng)實(shí)現(xiàn)/編碼時(shí)完成模塊化和信息隱蔽模塊數(shù)量與軟件開發(fā)復(fù)雜性但是,并不是把問題細(xì)分的越小越好,有一個(gè)最小成本區(qū)模塊化和信息隱蔽如何確保模塊數(shù)量,落在“最小成本區(qū)”內(nèi)?信息隱蔽模塊中所包含的信息(數(shù)據(jù)、過程)對不需要這些信息的其他模塊,是透明的(不可見、不可訪問的)涉及這些信息的改變,都只局限在模塊內(nèi)部,不會(huì)影響到其他模塊抽象幫助我們定義組成軟件系統(tǒng)的過程實(shí)體、而隱蔽機(jī)制則通過對模塊內(nèi)部訪問的約束,有助于模塊的分離和實(shí)現(xiàn)隱蔽是系統(tǒng)設(shè)計(jì)的重要原則,也是系統(tǒng)實(shí)現(xiàn)(并行開發(fā))、測試(問題分離)、后期維護(hù)(局部維護(hù)變更)的重要方法模塊獨(dú)立性(理想的模塊)每個(gè)理想模塊只解決一個(gè)問題。每個(gè)理想模塊的功能都應(yīng)

36、該明確,使人(開發(fā)者、使用者、維護(hù)者)容易理解。理想模塊之間的聯(lián)結(jié)關(guān)系簡單,具有獨(dú)立性。由理想模塊構(gòu)成的系統(tǒng),使人容易理解、編程、測試、修改和維護(hù)。對模塊的使用者來說,其感興趣是模塊的功能,而不必去理解模塊內(nèi)部的結(jié)構(gòu)和原理。(賣菜的也可以賣電腦了)對理想模塊獨(dú)立性設(shè)計(jì)的最經(jīng)典描述:既插既用模塊化和信息隱蔽3.模塊的圖形及符號(hào)(1)模塊的圖形:用矩形表示。模塊的名稱寫在方框內(nèi),由一個(gè)動(dòng)詞和一個(gè)作為賓語的名詞組成。(2)模塊間的聯(lián)接 (3)模塊間的通訊 模塊間通訊有兩種:數(shù)據(jù)通訊、控制通訊 數(shù)據(jù)通訊是一個(gè)數(shù)據(jù)流,它表示了一個(gè)經(jīng)過處理的數(shù)據(jù)從一個(gè)模塊傳向另一個(gè)模塊。 控制通訊只傳送一個(gè)標(biāo)志,該標(biāo)志只

37、表達(dá)了處理工作的某種狀態(tài),而不是由被發(fā)送模塊真正進(jìn)行過處理的數(shù)據(jù)。獲得配件庫存量讀庫存記錄模塊間的通訊配件編號(hào)庫存量無此配件模塊化和信息隱蔽數(shù)據(jù)通訊控制通訊4.模塊獨(dú)立性模塊設(shè)計(jì)的基本原則:降低系統(tǒng)中模塊之間的聯(lián)結(jié)程度,提高每個(gè)模塊的獨(dú)立性、聚合度。度量模塊獨(dú)立性的尺度:偶合性和內(nèi)聚度模塊按不同的需要而偶合在一起,偶合有七種形式,偶合度是度量模塊間緊密程度的尺度在模塊內(nèi)部,實(shí)現(xiàn)不同功能的部分,也有七種組合形式,其組合的緊密程度,稱為模塊的內(nèi)聚度模塊化和信息隱蔽模塊的七種偶合形式兩個(gè)模塊之間的偶合有七種形式,按照偶合緊密程度由低到高排列為:非直接偶合數(shù)據(jù)偶合標(biāo)記偶合控制偶合外部偶合公共偶合內(nèi)容偶

38、合模塊化和信息隱蔽1.內(nèi)容偶合如果二個(gè)模塊中有一個(gè)模塊直接引用另一個(gè)模塊的內(nèi)容(數(shù)據(jù)、語句、標(biāo)號(hào)等),則稱二個(gè)模塊之間是內(nèi)容偶合。如果修改一個(gè),另一個(gè)也要做相應(yīng)修改,因此,內(nèi)容偶合不易復(fù)用。例如:模塊A中TRC:語句在模塊B中GO TO TRC模塊A與模塊B存在內(nèi)容偶合,這是一種最不希望的偶合,一般出現(xiàn)在低級(jí)語言的程序中。模塊化和信息隱蔽作為編碼規(guī)范,絕對不允許出現(xiàn)內(nèi)容偶合2.公共偶合如果兩個(gè)模塊都和同一個(gè)公共數(shù)據(jù)域有關(guān)(訪問同一個(gè)數(shù)據(jù)環(huán)境),則稱為公共偶合。共同的數(shù)據(jù)環(huán)境可能是共享的通信區(qū)、內(nèi)存、存儲(chǔ)介質(zhì)等,如果二個(gè)模塊一個(gè)只是寫、另一個(gè)只是讀,則這種公共偶合稱為松散公共偶合,否則是緊密公共

39、偶合。二個(gè)模塊對同一個(gè)數(shù)據(jù)庫進(jìn)行讀寫是最常見的公共偶合ABC公用數(shù)據(jù)公用偶合是一種不良的偶合關(guān)系,它給模塊的維護(hù)和修改帶來困難。如公共數(shù)據(jù)要作修改,很難判定有多少模塊應(yīng)用了該公共數(shù)據(jù)。只有在模塊間需要傳輸?shù)臄?shù)據(jù)量很大,不宜通過參數(shù)傳遞時(shí),才采用公共偶合。模塊化和信息隱蔽作為編碼規(guī)范,在現(xiàn)在的軟件開發(fā)中,一般都規(guī)定,業(yè)務(wù)處理程序不允許直接對庫進(jìn)行操作。否則,系統(tǒng)無法維護(hù)。3.外部偶合一組模塊訪問同一個(gè)單一類型全局變量或全局?jǐn)?shù)組,則稱為外部偶合。例如:C語言程序中各模塊訪問聲明為extern類型的外部變量。外部偶合類似于公共偶合,區(qū)別在定義為外部變量的數(shù)據(jù)是簡單的,不涉及(看不見)數(shù)據(jù)結(jié)構(gòu)的物理安

40、排。例如:通過宏定義(常量或變量),可以用一些變量,實(shí)現(xiàn)所謂全局性的控制標(biāo)志,定義和修改非常容易。模塊化和信息隱蔽外部偶合是經(jīng)常使用的方法4.控制偶合如果模塊A向模塊B所傳遞的信息控制了模塊B的內(nèi)部邏輯,那么A和B之間的偶合稱為控制偶合??刂菩畔⒖梢钥醋魇且粋€(gè)開關(guān)量,它傳遞了一個(gè)控制信息或狀態(tài)的標(biāo)志??刂菩畔⒉煌跀?shù)據(jù)信息,數(shù)據(jù)信息一般通過處理過程,處理被處理的數(shù)據(jù),而控制信息則是控制處理過程中的某些參數(shù)。判斷是控制信息還是數(shù)據(jù)信息,就看是否會(huì)改變被調(diào)用模塊的執(zhí)行邏輯。例如:模塊P調(diào)用模塊QQ返回:返回處理(查詢)完成的數(shù)據(jù)數(shù)據(jù)傳遞Q返回:不能完成要求的調(diào)用任務(wù),請P打印出錯(cuò)信息 控制信息(Q

41、影響并導(dǎo)致了P的行為)控制偶合的缺點(diǎn)是:被調(diào)用模塊P必須知道調(diào)用模塊Q的內(nèi)部結(jié)構(gòu)和邏輯(可以打?。?,降低了模塊的獨(dú)立性模塊化和信息隱蔽當(dāng)要查找的庫存編號(hào)找不到時(shí),向上級(jí)模塊反饋一個(gè)控制信息,要求上級(jí)模塊打印“無此庫存記錄”錯(cuò)誤信息。獲得庫存記錄檢索庫存記錄庫存編號(hào)庫存量打印“無此庫存記錄”錯(cuò)誤信息控制信息的例子:模塊化和信息隱蔽控制偶合主要用于主控程序(控制菜單)與實(shí)現(xiàn)子程序(模塊)之間的調(diào)用5.標(biāo)記偶合如果兩個(gè)模塊間傳遞的是結(jié)構(gòu)變量(記錄名、數(shù)組名、文件名),被調(diào)用模塊可以對其中的全部或部分?jǐn)?shù)據(jù)進(jìn)行操作,則稱為標(biāo)記偶合。有的程序設(shè)計(jì)語言不支持結(jié)構(gòu)的按名傳遞,因此,不能實(shí)現(xiàn)標(biāo)記偶合計(jì)算水費(fèi)和電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)住戶記錄水費(fèi)(住戶記錄結(jié)構(gòu)中的部分信息)住戶記錄模塊之間的標(biāo)記偶合,多用于流水線處理模塊化和信息隱蔽電費(fèi)(住戶記錄結(jié)構(gòu)中的部分信息)6.數(shù)據(jù)偶合如果兩個(gè)模塊間的調(diào)用參數(shù)都是簡單變量,或雖然是結(jié)構(gòu)變量,但被調(diào)用模塊需要該結(jié)構(gòu)的所有數(shù)據(jù),稱這種偶合為數(shù)據(jù)偶合。這是模塊之間影響最小、最理想的偶合關(guān)系。開發(fā)貨單計(jì)算金額單價(jià)數(shù)量金額模塊化和信息隱蔽與控制偶合類似7.非直接偶合如果兩個(gè)模塊并不需要對方任何存在而獨(dú)立工作,稱這種偶合為非直接偶合。這是模塊之間影響最小的偶合關(guān)系。非直接偶合通??恐髂K的調(diào)用來發(fā)生關(guān)系(被調(diào)用的

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論