《軟件工程基礎(chǔ)》全套PPT課件
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
9.1 什么是面向?qū)ο笤O(shè)計 在面向?qū)ο蠓治鲭A段只考慮問題域和系統(tǒng)責(zé)任,在面向?qū)ο蠓治鲭A段只考慮問題域和系統(tǒng)責(zé)任,在面向?qū)ο笤O(shè)計階段則要考慮與具體實現(xiàn)有關(guān)的問在面向?qū)ο笤O(shè)計階段則要考慮與具體實現(xiàn)有關(guān)的問題,這樣做的主要目的是題,這樣做的主要目的是:使反映問題域本質(zhì)的總體框架和組織結(jié)構(gòu)長期穩(wěn)定,使反映問題域本質(zhì)的總體框架和組織結(jié)構(gòu)長期穩(wěn)定,而細節(jié)可變;而細節(jié)可變;把穩(wěn)定部分(問題域部分)與可變部分(與實現(xiàn)有關(guān)把穩(wěn)定部分(問題域部分)與可變部分(與實現(xiàn)有關(guān)的部分)分開,使得系統(tǒng)能從容地適應(yīng)變化;的部分)分開,使得系統(tǒng)能從容地適應(yīng)變化;有利于同一個分析模型用于不同的設(shè)計與實現(xiàn);有利于同一個分析模型用于不同的設(shè)計與實現(xiàn);支持系統(tǒng)族和相似系統(tǒng)的分析、設(shè)計或編程結(jié)果復(fù)用;支持系統(tǒng)族和相似系統(tǒng)的分析、設(shè)計或編程結(jié)果復(fù)用;9.1 什么是面向?qū)ο笤O(shè)計 問題域部分的設(shè)計問題域部分的設(shè)計要對要對OOA結(jié)果按實現(xiàn)條件進行補充與調(diào)整。結(jié)果按實現(xiàn)條件進行補充與調(diào)整。即,要即,要繼續(xù)運用繼續(xù)運用OOA的方法,包括概念、表示法及一部分策略。的方法,包括概念、表示法及一部分策略。問題域問題域部分部分人人機機交交互互部部分分數(shù)數(shù)據(jù)據(jù)管管理理部部分分構(gòu)件部署構(gòu)件部署部分部分控制驅(qū)動部分控制驅(qū)動部分將將OOA模型搬到模型搬到OOD作為作為OOD的基礎(chǔ)的基礎(chǔ)OOA模型模型按實現(xiàn)條件按實現(xiàn)條件(編程語言,編程語言,網(wǎng)絡(luò)與操作網(wǎng)絡(luò)與操作系統(tǒng),復(fù)用系統(tǒng),復(fù)用支持等支持等)進)進行必要的調(diào)行必要的調(diào)整。整。不但要根據(jù)實現(xiàn)條件進行不但要根據(jù)實現(xiàn)條件進行OOD設(shè)計,而且由于需求變化或新發(fā)現(xiàn)了設(shè)計,而且由于需求變化或新發(fā)現(xiàn)了錯誤,也要對錯誤,也要對OOA的結(jié)果進行修改。的結(jié)果進行修改。9.2 問題域部分的設(shè)計問題域部分的設(shè)計(1)為復(fù)用設(shè)計與編程的類而增加結(jié)構(gòu))為復(fù)用設(shè)計與編程的類而增加結(jié)構(gòu)如果如果OOA識別和定義的類是本次開發(fā)中新定義的,那么識別和定義的類是本次開發(fā)中新定義的,那么需要進行編程。需要進行編程。如果已存在一些可復(fù)用的類,而且這些類既有分析、設(shè)如果已存在一些可復(fù)用的類,而且這些類既有分析、設(shè)計時的定義,又有源程序,那么,復(fù)用這些類即可提高計時的定義,又有源程序,那么,復(fù)用這些類即可提高開發(fā)效率與質(zhì)量。開發(fā)效率與質(zhì)量。可復(fù)用的類可能只是與可復(fù)用的類可能只是與OOA模型中的類相似,而不是完模型中的類相似,而不是完全相同,因此需對二者進行修改。全相同,因此需對二者進行修改。目標(biāo):盡可能使復(fù)用成分增多,新開發(fā)的成分減少目標(biāo):盡可能使復(fù)用成分增多,新開發(fā)的成分減少目標(biāo):盡可能使復(fù)用成分增多,新開發(fā)的成分減少目標(biāo):盡可能使復(fù)用成分增多,新開發(fā)的成分減少9.2 問題域部分的設(shè)計問題域部分的設(shè)計不同程度的復(fù)用不同程度的復(fù)用當(dāng)當(dāng)前前所所需需的的類類的的信信息息比比可可復(fù)復(fù)用用類類定定義義的的信信息息直接復(fù)用直接復(fù)用 通過繼承復(fù)用通過繼承復(fù)用 刪除可復(fù)用類的多余信息刪除可復(fù)用類的多余信息刪除多余信息,通過繼承而復(fù)用刪除多余信息,通過繼承而復(fù)用9.2 問題域部分的設(shè)計問題域部分的設(shè)計車輛序號廠商式樣序號認證可復(fù)用的類序號顏色式樣出廠年月序號認證車輛問題域中的類步驟:步驟:(1)把要復(fù)用的類加到問題域,)把要復(fù)用的類加到問題域,(2)標(biāo)以)標(biāo)以“復(fù)用復(fù)用”,劃掉(或標(biāo)出)不用的屬性與操作劃掉(或標(biāo)出)不用的屬性與操作(3)建立從復(fù)用類到問題域原有的類之間的泛化關(guān)系)建立從復(fù)用類到問題域原有的類之間的泛化關(guān)系(4)由于問題域的類繼承了)由于問題域的類繼承了“復(fù)用復(fù)用”類的特征,類的特征,所以有些屬性和操作不需要了所以有些屬性和操作不需要了劃掉。劃掉。(復(fù)用)(復(fù)用復(fù)用)車輛序號廠商式樣序號認證可復(fù)用的類第四種情況的的具體處理:第四種情況的的具體處理:第四種情況的的具體處理:第四種情況的的具體處理:可復(fù)用類定義的信息可復(fù)用類定義的信息當(dāng)前所需的類的信息當(dāng)前所需的類的信息把需要頻繁交換信息的對象,盡量地放在一臺處理機上。把需要頻繁交換信息的對象,盡量地放在一臺處理機上。增加屬性或類,以增加屬性或類,以保存中間結(jié)果保存中間結(jié)果提高或降低系統(tǒng)的并發(fā)度,可能要人為地增加或減少主動對象。提高或降低系統(tǒng)的并發(fā)度,可能要人為地增加或減少主動對象。合并通訊頻繁的類合并通訊頻繁的類流速控制器流速控制器指定流速指定流速當(dāng)前流速當(dāng)前流速流速調(diào)節(jié)流速調(diào)節(jié)流速探測流速探測流速調(diào)節(jié)器流速調(diào)節(jié)器指定流速指定流速流速調(diào)節(jié)流速調(diào)節(jié)流速探測器流速探測器當(dāng)前流速當(dāng)前流速流速探測流速探測取當(dāng)前流速取當(dāng)前流速合并前合并前合并后合并后(2)提高性能)提高性能9.2 問題域部分的設(shè)計問題域部分的設(shè)計用聚合關(guān)系描述復(fù)雜類用聚合關(guān)系描述復(fù)雜類幀幀顯示顯示幀幀顯示顯示背景背景前景前景*1 11 11 1顯示顯示顯示顯示9.2 問題域部分的設(shè)計問題域部分的設(shè)計為編程方便增加底層成分為編程方便增加底層成分細化對象的分類細化對象的分類例:將幾何圖形分成例:將幾何圖形分成多邊形、橢圓、扇形多邊形、橢圓、扇形等特殊類等特殊類幾何圖形幾何圖形繪圖多邊形多邊形扇形扇形橢圓橢圓繪圖繪圖繪圖9.2 問題域部分的設(shè)計問題域部分的設(shè)計(3)增加一般類以建立共同協(xié)議)增加一般類以建立共同協(xié)議增加根類:增加根類:將所有的具有相似協(xié)議的類組織在一起將所有的具有相似協(xié)議的類組織在一起提供通用的協(xié)議提供通用的協(xié)議例如:提供創(chuàng)建、刪除、復(fù)制等服務(wù)例如:提供創(chuàng)建、刪除、復(fù)制等服務(wù)增加其他一般類:增加其他一般類:提供局部通用的協(xié)議提供局部通用的協(xié)議例如:提供永久存儲及恢復(fù)功能例如:提供永久存儲及恢復(fù)功能9.2 問題域部分的設(shè)計問題域部分的設(shè)計(4)按編程語言調(diào)整繼承)按編程語言調(diào)整繼承起因:起因:OOA強調(diào)如實地反映問題域,強調(diào)如實地反映問題域,OOD考慮實現(xiàn)問題,考慮實現(xiàn)問題,所用語言不支持多繼承,甚至不支持繼承所用語言不支持多繼承,甚至不支持繼承多繼承模式示例多繼承模式示例狹義菱形狹義菱形廣義菱形廣義菱形9.2 問題域部分的設(shè)計問題域部分的設(shè)計BACBAC因為聚合和泛化是不同的概念,這種方法并不是通用的因為聚合和泛化是不同的概念,這種方法并不是通用的(按定義)。在大多數(shù)情況下,在大多數(shù)情況下,需要考慮形成多繼承的原因需要考慮形成多繼承的原因,將本來在,將本來在特殊類中顯式定義的信息離出來,作為部分對象,以原來特殊類中顯式定義的信息離出來,作為部分對象,以原來的一般類作為整體對象。的一般類作為整體對象。把多繼承調(diào)整為單繼承把多繼承調(diào)整為單繼承9.2 問題域部分的設(shè)計問題域部分的設(shè)計方法方法1 1:采用:采用聚合聚合公司人員公司人員雇主雇主職員職員雇主職員雇主職員公司人員公司人員身份身份雇主身份雇主身份職員身份職員身份0.21創(chuàng)建“雇主”對象創(chuàng)建“職員”對象創(chuàng)建“雇主職員”對象9.2 問題域部分的設(shè)計問題域部分的設(shè)計公司人員公司人員雇主身份雇主身份職員身份職員身份10.1身份身份0.11公司人員公司人員雇主雇主職員職員雇主職員雇主職員9.2 問題域部分的設(shè)計問題域部分的設(shè)計方法方法2 2:壓平:壓平公司人員公司人員顧主顧主職員職員顧主職員顧主職員問題:有什么缺點?問題:有什么缺點?顧主信息顧主信息職員信息職員信息問題:改成繼承?問題:改成繼承?9.2 問題域部分的設(shè)計問題域部分的設(shè)計方法方法3 3:不支持不支持泛化泛化顧主顧主職員職員顧主職員顧主職員問題:有什么缺點?問題:有什么缺點?9.2 問題域部分的設(shè)計問題域部分的設(shè)計對多態(tài)性的調(diào)整對多態(tài)性的調(diào)整9.2 問題域部分的設(shè)計問題域部分的設(shè)計供貨商客戶0.*1.*供需合同賣方買方.11供貨商客戶0.*1.*把多對多關(guān)聯(lián)轉(zhuǎn)把多對多關(guān)聯(lián)轉(zhuǎn)化為一對多關(guān)聯(lián)化為一對多關(guān)聯(lián)(5)對復(fù)雜關(guān)聯(lián)的轉(zhuǎn)化并決定關(guān)聯(lián)的實現(xiàn)方式對復(fù)雜關(guān)聯(lián)的轉(zhuǎn)化并決定關(guān)聯(lián)的實現(xiàn)方式項目人員語言把多元關(guān)聯(lián)把多元關(guān)聯(lián)轉(zhuǎn)化為二元關(guān)聯(lián)轉(zhuǎn)化為二元關(guān)聯(lián)語言項目人員任務(wù)項項目名人員語言1 1.*1 1.*1.*公司公司雇員雇員*1.*工作工作薪水薪水把把把把關(guān)關(guān)關(guān)關(guān)聯(lián)聯(lián)聯(lián)聯(lián)類類類類轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)轉(zhuǎn)化化化化為為為為二二二二元元元元關(guān)關(guān)關(guān)關(guān)聯(lián)聯(lián)聯(lián)聯(lián)*1.*工作工作薪水薪水公司公司雇員雇員119.2 問題域部分的設(shè)計問題域部分的設(shè)計對關(guān)聯(lián)進行調(diào)整后,要考慮關(guān)聯(lián)的實現(xiàn)方式。對關(guān)聯(lián)進行調(diào)整后,要考慮關(guān)聯(lián)的實現(xiàn)方式。(1)聚合)聚合決決定定在在整整體體類類中中指指出出部部分分類類時時,是是用用部部分分類類直直接接作作為為整整體體類類中中的的屬屬性性的的數(shù)數(shù)據(jù)據(jù)類類型型,還還是是把把部部分分類類用用作作指指針針或或?qū)ο笙髽?biāo)標(biāo)識識的的基基類類型型,再再用用這這樣樣的的指指針針或或?qū)ο笙髽?biāo)標(biāo)示示定定義義整整體體類類的的屬性。屬性。如如果果是是組組合合,最最好好用用第第1種種方方式式,否否則則就就需需要要在在程程序序中中保保證證整整體體對對象象與與部部分分對對象象的的生命周期的一致性。生命周期的一致性。Class AClass B A a;/組合 A*a;/聚合,B的對象管理A的對象組合void combination()9.2 問題域部分的設(shè)計問題域部分的設(shè)計(2)關(guān)聯(lián))關(guān)聯(lián)通常,通過在對象中設(shè)立指針或?qū)ο髽?biāo)識以指向或記錄另一端的對象的通常,通過在對象中設(shè)立指針或?qū)ο髽?biāo)識以指向或記錄另一端的對象的方法,來實現(xiàn)關(guān)聯(lián)。方法,來實現(xiàn)關(guān)聯(lián)。(1)如果是單向關(guān)聯(lián),就在源端的類中設(shè)立屬性,用來標(biāo)記另一端的類將如果是單向關(guān)聯(lián),就在源端的類中設(shè)立屬性,用來標(biāo)記另一端的類將來創(chuàng)建的對象來創(chuàng)建的對象(2)如果是雙向關(guān)聯(lián),就在兩端類中各設(shè)立屬性,用來標(biāo)記對方將來創(chuàng)建如果是雙向關(guān)聯(lián),就在兩端類中各設(shè)立屬性,用來標(biāo)記對方將來創(chuàng)建的對象。的對象。(3)如果關(guān)聯(lián)中對方類的多重性是如果關(guān)聯(lián)中對方類的多重性是1,那么可在本方設(shè)立一個指向?qū)Ψ綄?,那么可在本方設(shè)立一個指向?qū)Ψ綄ο蟮闹羔?,或設(shè)立一個記錄對方對象引用的屬性。象的指針,或設(shè)立一個記錄對方對象引用的屬性。(4)如果對方類的多重性大于如果對方類的多重性大于1,那么可在本方設(shè)立一個指向?qū)Ψ綄ο蟮闹福敲纯稍诒痉皆O(shè)立一個指向?qū)Ψ綄ο蟮闹羔樇匣蛞眉?。針集合或引用集合?5)若關(guān)聯(lián)的某端有角色名,最好把其作為另一端類的屬性名,以訪問與若關(guān)聯(lián)的某端有角色名,最好把其作為另一端類的屬性名,以訪問與角色名相鄰的類。角色名相鄰的類。Provider 1oldest1.*0.1ConsumerProvider*toProviderproviderSet *headstruct providerSet Provider p;struct providerSet*next;Consumer oldest9.2 問題域部分的設(shè)計問題域部分的設(shè)計(6)調(diào)整與完善屬性)調(diào)整與完善屬性按照語法:可見性 屬性名:類型=初始值 對屬性的定義進行完善。每一個屬性或者包含單個值,或者包含作為一個整體的密切相關(guān)的一組值若要給出對屬性的性質(zhì)的約束,如“工齡60”或“0英語成績100”等,也要看語言是否對其直接支持,否則要在算法上考慮如何實現(xiàn)。9.2 問題域部分的設(shè)計問題域部分的設(shè)計(7)構(gòu)造和優(yōu)化算法)構(gòu)造和優(yōu)化算法對于需要設(shè)計的操作,要從如下幾方面進行詳細地定義:對于需要設(shè)計的操作,要從如下幾方面進行詳細地定義:(1)按照操作格式:按照操作格式:可見性可見性操作名操作名(參數(shù)列表參數(shù)列表):返回類返回類型型完善操作的定義。完善操作的定義。(2)從問題域的角度,根據(jù)其責(zé)任,考慮實現(xiàn)操作的算法,即對象是)從問題域的角度,根據(jù)其責(zé)任,考慮實現(xiàn)操作的算法,即對象是怎樣提供操作的。怎樣提供操作的。(3)若操作有前后置條件或不變式,考慮編程語言是否予以支持。若)若操作有前后置條件或不變式,考慮編程語言是否予以支持。若不支持,在操作的方法中要予以實現(xiàn)。不支持,在操作的方法中要予以實現(xiàn)。(4)建議進一步地分析特定類的對象相關(guān)的所有交互圖,找出其所有)建議進一步地分析特定類的對象相關(guān)的所有交互圖,找出其所有與之相關(guān)的消息。一個對象所要響應(yīng)的每個消息都要由該對象的操作處理,與之相關(guān)的消息。一個對象所要響應(yīng)的每個消息都要由該對象的操作處理,其中的一個操作也可能要使用其他操作。如果類擁有狀態(tài)圖,還可根據(jù)內(nèi)其中的一個操作也可能要使用其他操作。如果類擁有狀態(tài)圖,還可根據(jù)內(nèi)部轉(zhuǎn)換以及外部轉(zhuǎn)換上的動作,設(shè)計算法的詳細邏輯。部轉(zhuǎn)換以及外部轉(zhuǎn)換上的動作,設(shè)計算法的詳細邏輯??捎米匀徽Z言或進行了一定結(jié)構(gòu)化的自然語言描述算法,也可以使用可用自然語言或進行了一定結(jié)構(gòu)化的自然語言描述算法,也可以使用程序框圖或活動圖描述算法。程序框圖或活動圖描述算法。在算法中還要考慮對例外和特殊情況的處理。如在算法中還要考慮對例外和特殊情況的處理。如考慮對輸入錯誤、來考慮對輸入錯誤、來自中間件或其它軟硬件的錯誤的消息以及其它例外情況的處理。自中間件或其它軟硬件的錯誤的消息以及其它例外情況的處理。在系統(tǒng)較為復(fù)雜或需要處理大批量的數(shù)據(jù)的情況下,若系統(tǒng)在性能上在系統(tǒng)較為復(fù)雜或需要處理大批量的數(shù)據(jù)的情況下,若系統(tǒng)在性能上有要求,就要對系統(tǒng)的體系結(jié)構(gòu)和算法進行優(yōu)化。有要求,就要對系統(tǒng)的體系結(jié)構(gòu)和算法進行優(yōu)化。(8 8)決定對象間的可訪問性)決定對象間的可訪問性(M)(M)從類從類A A的對象到類的對象到類B B的對象有的對象有4 4種訪問性種訪問性屬性可見性屬性可見性:B B是是A A的一個屬性(關(guān)聯(lián)、聚合)的一個屬性(關(guān)聯(lián)、聚合)class Aclass A ;B b;B b;參數(shù)可見性參數(shù)可見性:B B的對象是的對象是A A的一個方法的參數(shù)(依賴)的一個方法的參數(shù)(依賴)A.amethod(BA.amethod(B b)/b)/間接地找到一個對象,并賦給間接地找到一個對象,并賦給b b。局部聲明可見性局部聲明可見性:B B的對象是在的對象是在A A的一個方法中聲明的一個局部變量(依賴)的一個方法中聲明的一個局部變量(依賴)class A:amethodclass A:amethod ;B b;B b;全局可見性全局可見性:B B的對象在某種程度上全局可見(依賴)的對象在某種程度上全局可見(依賴)聲明聲明B B的全局實例變量的全局實例變量對對于于后后三三種種情情況況而而言言,從從類類A到到類類B間間存存在在著著依依賴賴關(guān)關(guān)系系,在在程程序序運運行行期期間間A的的對對象象與與B的的對對象象存存在在著著臨臨時時性性的的連連接接(臨臨時時鏈鏈),而而第第一一種種情情況況中中的的鏈鏈?zhǔn)鞘怯捎蓮膹念愵怉到到類類B間間的關(guān)聯(lián)實例化而來的。的關(guān)聯(lián)實例化而來的。(9)定義對象實例定義對象實例在邏輯上,一個類是對一組對象的抽象描述。在邏輯上,一個類是對一組對象的抽象描述。在物理上,一個類所創(chuàng)建的各對象,在物理上,一個類所創(chuàng)建的各對象,要么在內(nèi)存中(用一個變量記錄對象的標(biāo)識);要么在內(nèi)存中(用一個變量記錄對象的標(biāo)識);要么在外存中(把對象保存在一個文件中或一個數(shù)據(jù)庫表中)要么在外存中(把對象保存在一個文件中或一個數(shù)據(jù)庫表中)根據(jù)不同的實現(xiàn)條件和實現(xiàn)策略,可以按如下的方式定義對象:根據(jù)不同的實現(xiàn)條件和實現(xiàn)策略,可以按如下的方式定義對象:(1)用相應(yīng)的類定義內(nèi)存中的全局性對象,包括靜態(tài)聲明和動態(tài)創(chuàng)建兩用相應(yīng)的類定義內(nèi)存中的全局性對象,包括靜態(tài)聲明和動態(tài)創(chuàng)建兩種方式??梢砸淮吾槍σ粋€對象定義一個變量,也可以成批地定義對象。種方式??梢砸淮吾槍σ粋€對象定義一個變量,也可以成批地定義對象。例如,可以定義一個數(shù)組,它的每個元素是一個對象變量,以此來成批例如,可以定義一個數(shù)組,它的每個元素是一個對象變量,以此來成批地定義對象。地定義對象。Class AClass B A a10;A*a10;9.2 問題域部分的設(shè)計問題域部分的設(shè)計 (2)當(dāng)系統(tǒng)需要通過從外存讀取數(shù)據(jù)來創(chuàng)建一個對象時)當(dāng)系統(tǒng)需要通過從外存讀取數(shù)據(jù)來創(chuàng)建一個對象時,先創(chuàng)建該對先創(chuàng)建該對象,再從外存中讀取這個對象數(shù)據(jù),把數(shù)據(jù)賦值給對象的相應(yīng)屬性。象,再從外存中讀取這個對象數(shù)據(jù),把數(shù)據(jù)賦值給對象的相應(yīng)屬性。按照一定的策略,內(nèi)存中的永久對象要保存到外存中,請參看數(shù)據(jù)按照一定的策略,內(nèi)存中的永久對象要保存到外存中,請參看數(shù)據(jù)管理部分。管理部分。無論那種方式,都需要在在無論那種方式,都需要在在OOD文檔中加以說明。按如下格式在類文檔中加以說明。按如下格式在類描述模板的定義對象部分進行描述:描述模板的定義對象部分進行描述:處理機:處理機:,;內(nèi)存對象:內(nèi)存對象:(n元數(shù)組)元數(shù)組);外存對象:外存對象:;對象屬性1屬性n外存外存外存外存內(nèi)存內(nèi)存內(nèi)存內(nèi)存9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計 簡單的講,人機交互部分是人和計算機之間交互簡單的講,人機交互部分是人和計算機之間交互簡單的講,人機交互部分是人和計算機之間交互簡單的講,人機交互部分是人和計算機之間交互信息的媒介,對它的設(shè)計涉及到計算機科學(xué)、心理學(xué)、信息的媒介,對它的設(shè)計涉及到計算機科學(xué)、心理學(xué)、信息的媒介,對它的設(shè)計涉及到計算機科學(xué)、心理學(xué)、信息的媒介,對它的設(shè)計涉及到計算機科學(xué)、心理學(xué)、藝術(shù)學(xué)、認知科學(xué)和人機工程學(xué)等學(xué)科。本節(jié)闡述的藝術(shù)學(xué)、認知科學(xué)和人機工程學(xué)等學(xué)科。本節(jié)闡述的藝術(shù)學(xué)、認知科學(xué)和人機工程學(xué)等學(xué)科。本節(jié)闡述的藝術(shù)學(xué)、認知科學(xué)和人機工程學(xué)等學(xué)科。本節(jié)闡述的是人機交互的軟件方面的設(shè)計。是人機交互的軟件方面的設(shè)計。是人機交互的軟件方面的設(shè)計。是人機交互的軟件方面的設(shè)計??刂平涌诓糠挚刂平涌诓糠謫栴}域問題域部分部分數(shù)數(shù)據(jù)據(jù)管管理理部部分分人人機機交交互互部部分分OSF/Motif人人機機交交互互部部分分X-Window人人機機交交互互部部分分MS-Windows把人機交互部分作為系統(tǒng)中一個獨立的組成部分,進行分析把人機交互部分作為系統(tǒng)中一個獨立的組成部分,進行分析和設(shè)計,有利于隔離界面支持系統(tǒng)的變化對問題域部分的影響和設(shè)計,有利于隔離界面支持系統(tǒng)的變化對問題域部分的影響.什么是人機交互部分什么是人機交互部分9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計人機交互部分的需求分析人機交互部分的需求分析對使用系統(tǒng)的人進行分析對使用系統(tǒng)的人進行分析以便設(shè)計出適合其特點的交互方式和界面表現(xiàn)形式;對人和機器的交互過程進行分析對人和機器的交互過程進行分析核心問題是人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。1、分析與系統(tǒng)交互的人、分析與系統(tǒng)交互的人人員參與者人員參與者 人對界面的需求,不僅在于人機交互的內(nèi)容,而且在于他們對界面表現(xiàn)形式、風(fēng)格等方面的愛好。前者是客觀需求客觀需求*,對誰都一樣;后者是主觀需求主觀需求,因人而異。(1)列舉所有的人員參與者(2)調(diào)查研究(3)區(qū)分人員類型(4)統(tǒng)計(或估算)各類人員的比例(5)了解使用者的主觀需求(6)按照一定的準(zhǔn)則進行折中與均衡2、對人和機器的交互過程進行分析、對人和機器的交互過程進行分析從從usecase分析人機交互分析人機交互usecase的構(gòu)成的構(gòu)成 參與者的行為和系統(tǒng)行為按時序出現(xiàn),形成交叉排列的段落。每個段落至少含有一個輸入語句或輸出語句;有若干純屬參與者自身或系統(tǒng)自身的行為陳述;可能包含一些控制語句或括號。抽取方法:抽取方法:刪除所有與輸入、輸出無關(guān)的語句和不再包含任何內(nèi)容的控制語句與括號,剩下的就是對一個參與者(人)使用一項系統(tǒng)功能時的人機交互描述。9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計收款員收款(收款員收款(use caseuse case)輸入開始本次收款的命令;作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示信息;forfor 顧客選購的每種商品 dodo 輸入商品編號;ifif 此種商品多于一件 thenthen 輸入商品數(shù)量 end ifend if;檢索商品名稱及單價;貨架商品數(shù)減去售出數(shù);ifif 貨架商品數(shù)低于下限 thenthen 通知供貨員請求上貨end ifend if;計算本種商品總價并打印編號、名稱、數(shù)量、單價、總價;總價累加到應(yīng)收款總數(shù);end forend for;打印應(yīng)收款總數(shù);輸入顧客交來的款數(shù);計算應(yīng)找回的款數(shù),打印以上兩個數(shù)目,收款數(shù)計入賬冊。(a)一個use case的例子 從use case提取人機交互描述收款員收款(人機交互)收款員收款(人機交互)輸入開始本次收款的命令;輸出提示信息;for 顧客選購的每種商品 輸入商品編號;if 此種商品多于一件 then 輸入商品數(shù)量endif;打印商品編號、名稱、數(shù)量、單價、總價;endfor;打印應(yīng)收款總數(shù)輸入顧客交來的款數(shù)打印交款數(shù)及找回款數(shù);(b)人機交互描述9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計一、輸入與輸出設(shè)計一、輸入與輸出設(shè)計(1)輸入的細化輸入步驟的細化輸入設(shè)備的選擇輸入信息表現(xiàn)形式的選擇(命令,數(shù)據(jù))(2)輸出的細化輸出步驟的細化輸出設(shè)備的選擇輸出信息表現(xiàn)形式的選擇人機界面的人機界面的OO設(shè)計設(shè)計9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計二、命令的組織二、命令的組織不受歡迎的命令組織方式:不受歡迎的命令組織方式:(1)一條命令含有大量的參數(shù)和任選項(2)系統(tǒng)有大量命令,不加任何組織和引導(dǎo)基本命令:基本命令:使用一項獨立的系統(tǒng)功能的命令提取后的用況提取后的用況提取后的用況提取后的用況命令步:命令步:在執(zhí)行一條基本命令的交互過程中所包含的具體輸入步驟。高層命令:高層命令:如果一條命令是在另一條命令的引導(dǎo)下被選用的,則后者稱作前者的高層命令。命令的組織措施命令的組織措施分解與組合分解與組合(1)分解:將一條含有許多參數(shù)和選項的命令分解為若干命令步(2)組合:將基本命令組織成高層命令,從高層命令引向基本命令9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計兩層命令之間的兩層命令之間的輸出信息結(jié)構(gòu)輸出信息結(jié)構(gòu)反饋信息處理結(jié)果提示信息反饋信息處理結(jié)果處理結(jié)果提示信息提示信息處理結(jié)果提示信息提示信息9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計在建立命令樹時,應(yīng)遵循如下策略:在建立命令樹時,應(yīng)遵循如下策略:n把使用最頻繁的命令放在前面,按照用戶的工作步驟進行把使用最頻繁的命令放在前面,按照用戶的工作步驟進行排列。排列。n在命令中發(fā)現(xiàn)整體在命令中發(fā)現(xiàn)整體-部分模式,以幫助對命令的組織與分部分模式,以幫助對命令的組織與分塊。塊。n每層命令的個數(shù)應(yīng)遵循每層命令的個數(shù)應(yīng)遵循7+2原則,命令的層次深度盡量要原則,命令的層次深度盡量要控制在三層以內(nèi)??刂圃谌龑右詢?nèi)。9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計1、選擇界面支持系統(tǒng)(窗口系統(tǒng)、圖形用戶界面、可視化編程環(huán)境)2、設(shè)計報表及報告.對要生成的報表和報告格式等進行設(shè)計。每一種報表或報告應(yīng)對應(yīng)于一個類。3 3、設(shè)計諸如安全/登錄、設(shè)置和業(yè)務(wù)功能之類的窗口。每一種窗口對應(yīng)于一個類。4、在窗口中,按照命令的邏輯層次,部署所需要的元素,如菜單、工作區(qū)和對話框等。窗口中的部件元素對應(yīng)窗口類的部分類,部分類與窗口類形成聚合關(guān)系。5發(fā)現(xiàn)窗口類間的共性以及部件類間的共性,定義較一般的窗口類和部件類,分別形成窗口類間以及部件類間的泛化關(guān)系。6.用類的屬性表示窗口或部件的靜態(tài)特征,如尺寸、位置、顏色和選項等。7.用操作表示窗口或部件的動態(tài)特征,如選中、移動和滾屏等。有的操作要涉及到問題域中的類。8.發(fā)現(xiàn)界面類之間的聯(lián)系,在其間建立關(guān)聯(lián)。必要時,進一步地繪制用戶與系統(tǒng)會話的順序圖。三、用三、用OO概念表達所有的界面成分概念表達所有的界面成分*在可視化的編程環(huán)境下,能節(jié)省很多界面設(shè)計工作在可視化的編程環(huán)境下,能節(jié)省很多界面設(shè)計工作9.3 人機交互部分的設(shè)計人機交互部分的設(shè)計9.9.建立界面類與問題域類之間的聯(lián)系。有些界面對象要與問建立界面類與問題域類之間的聯(lián)系。有些界面對象要與問建立界面類與問題域類之間的聯(lián)系。有些界面對象要與問建立界面類與問題域類之間的聯(lián)系。有些界面對象要與問題域中的對象進行通訊,故要對二者之間的通訊進行設(shè)計。題域中的對象進行通訊,故要對二者之間的通訊進行設(shè)計。題域中的對象進行通訊,故要對二者之間的通訊進行設(shè)計。題域中的對象進行通訊,故要對二者之間的通訊進行設(shè)計。(a)人機界面只負責(zé)輸入與輸出和窗口更新這樣的工作,并把所有面向問人機界面只負責(zé)輸入與輸出和窗口更新這樣的工作,并把所有面向問題域部分的請求轉(zhuǎn)發(fā)給問題域部分,即在界面對象中不應(yīng)該對業(yè)務(wù)邏輯進行題域部分的請求轉(zhuǎn)發(fā)給問題域部分,即在界面對象中不應(yīng)該對業(yè)務(wù)邏輯進行處理。處理。(b)一種常見的作法是,問題域部分的對象不應(yīng)該主動發(fā)起與界面部分對一種常見的作法是,問題域部分的對象不應(yīng)該主動發(fā)起與界面部分對象之間的通訊,而只能對界面部分對象進行響應(yīng),也就是說,只有界面部分象之間的通訊,而只能對界面部分對象進行響應(yīng),也就是說,只有界面部分的對象才能訪問問題域部分的對象。通常把界面對象向問題域部分對象傳輸?shù)膶ο蟛拍茉L問問題域部分的對象。通常把界面對象向問題域部分對象傳輸?shù)男畔⒒虬l(fā)布命令看作是的信息或發(fā)布命令看作是“請求請求”,而把從問題域部分對象向界面部分對象,而把從問題域部分對象向界面部分對象傳輸?shù)男畔⒖醋魇莻鬏數(shù)男畔⒖醋魇恰盎貞?yīng)回應(yīng)”或或“通知通知”。(c)盡量減少界面部分與問題域部分的耦合。由于界面是易變的,從易于盡量減少界面部分與問題域部分的耦合。由于界面是易變的,從易于維護和易于復(fù)用的角度出發(fā),問題域部分和界面部分應(yīng)該是低耦合的。維護和易于復(fù)用的角度出發(fā),問題域部分和界面部分應(yīng)該是低耦合的。問 題 域部分人機交互部分也可以通過在人機交互部分和問題域部分之間增加控制器或協(xié)調(diào)類的方也可以通過在人機交互部分和問題域部分之間增加控制器或協(xié)調(diào)類的方式解決這種問題,如可采用下面將要講述的出版式解決這種問題,如可采用下面將要講述的出版-訂閱模式,還有一些相關(guān)的訂閱模式,還有一些相關(guān)的模式模式.例題:出版例題:出版-訂閱模式(觀察者模式)訂閱模式(觀察者模式)解決問題域中的對象 對界面層對象的訪問問題。出版者出版者訂閱者訂閱者管理者管理者1111.*有變化時,向管理者發(fā)布事件。維護出版者和訂閱者間的映射,把出版者發(fā)布信息,利用參數(shù)通知給訂閱者。向管理者訂閱事件。a=50%b=30%c=20%展示展示計算計算 控制驅(qū)動部分是控制驅(qū)動部分是OOD模型的一個組成部分,模型的一個組成部分,這部分由系統(tǒng)中全部的主動類構(gòu)成,每個這部分由系統(tǒng)中全部的主動類構(gòu)成,每個主動類是對一類主動事物的抽象主動類是對一類主動事物的抽象 9.4 控制驅(qū)動部分的設(shè)計控制驅(qū)動部分的設(shè)計 控制流控制流進程(進程(process)或線程)或線程(thread)的別稱的別稱有多個有多個控制流控制流(任務(wù))并發(fā)執(zhí)行的系統(tǒng),稱作(任務(wù))并發(fā)執(zhí)行的系統(tǒng),稱作多任多任務(wù)系統(tǒng)務(wù)系統(tǒng)或或并發(fā)系統(tǒng)。并發(fā)系統(tǒng)。大量的系統(tǒng)都是并發(fā)系統(tǒng)(多任務(wù)系統(tǒng)),例如:大量的系統(tǒng)都是并發(fā)系統(tǒng)(多任務(wù)系統(tǒng)),例如:對若干臺設(shè)備進行實時控制的系統(tǒng)對若干臺設(shè)備進行實時控制的系統(tǒng)多用戶系統(tǒng),如全國飛機票銷售系統(tǒng)多用戶系統(tǒng),如全國飛機票銷售系統(tǒng)大型生產(chǎn)企業(yè)生產(chǎn)管理系統(tǒng)大型生產(chǎn)企業(yè)生產(chǎn)管理系統(tǒng)電子政務(wù)系統(tǒng)電子政務(wù)系統(tǒng) 9.4.1 什么是控制驅(qū)動部分 控制流驅(qū)動控制流驅(qū)動部分,用于定義和表示并發(fā)系統(tǒng)部分,用于定義和表示并發(fā)系統(tǒng)中的每個中的每個控制流控制流。用主動對象表示每個控制流用主動對象表示每個控制流(進程、線進程、線程程)所有的主動類構(gòu)成控制流驅(qū)動部分所有的主動類構(gòu)成控制流驅(qū)動部分 為了為了描述問題域固有的并發(fā)行為,表達實現(xiàn)描述問題域固有的并發(fā)行為,表達實現(xiàn)所需的設(shè)計決策,需要在所需的設(shè)計決策,需要在OOD部分對控制驅(qū)動部分對控制驅(qū)動部分進行建模。部分進行建模。9.4.1 什么是控制驅(qū)動部分 1、進程、進程 進程是一個具有一定獨立功能的程序進程是一個具有一定獨立功能的程序 在一個在一個數(shù)據(jù)集合上的一次動態(tài)執(zhí)行的過程。數(shù)據(jù)集合上的一次動態(tài)執(zhí)行的過程。在大多數(shù)操作系統(tǒng)中在大多數(shù)操作系統(tǒng)中(如如WindowsWindows和和Unix)Unix),每,每個程序都在它自己的地址空間里作為一個進程運個程序都在它自己的地址空間里作為一個進程運行。行。進程既是處理機的分配單位,也是其它計算進程既是處理機的分配單位,也是其它計算機資源的分配單位。在一般情況下,一臺計算機機資源的分配單位。在一般情況下,一臺計算機上的各進程競爭這臺計算機上的資源。上的各進程競爭這臺計算機上的資源。9.4.2控制流 2、線程、線程在一個進程內(nèi)部可定義一些能夠分別占用在一個進程內(nèi)部可定義一些能夠分別占用處理機,而且要同時進行計算的執(zhí)行單位,這處理機,而且要同時進行計算的執(zhí)行單位,這樣的每一個單位就是一個樣的每一個單位就是一個線程線程。線程駐留在進程內(nèi)部,并在進程的地址空線程駐留在進程內(nèi)部,并在進程的地址空間內(nèi)部運行,由進程進行管理。在一個進程中間內(nèi)部運行,由進程進行管理。在一個進程中的所有線程,共享該進程所獲得的資源;對于的所有線程,共享該進程所獲得的資源;對于處理器資源,每個線程是一個獨立的分配單位。處理器資源,每個線程是一個獨立的分配單位。9.4.2控制流 3 3、控制流、控制流 在面向?qū)ο笤O(shè)計中,用一個主動對象在面向?qū)ο笤O(shè)計中,用一個主動對象表示表示一個獨一個獨立的控制流,該對象驅(qū)動進程或線程,也即每個控立的控制流,該對象驅(qū)動進程或線程,也即每個控制流都以一個表示獨立的進程或線程的主動對象為制流都以一個表示獨立的進程或線程的主動對象為根。根。(1)(1)在在在在順順順順序序序序系系系系統(tǒng)統(tǒng)統(tǒng)統(tǒng)中中中中,只只有有一一個個控控制制流流。這這意意味味著著在在一一個個時時間間點點有有且且僅僅有有一一件件事事情情在在發(fā)發(fā)生生。當(dāng)當(dāng)一一個個順順序序程程序序開開始始時時,控控制制處處于于程程序序的的開開頭頭,操操作作一一個個接接一個地被執(zhí)行。一個地被執(zhí)行。9.4.2控制流 順序系統(tǒng)的示意圖順序系統(tǒng)的示意圖主動對象主動對象A A被動對象被動對象B Bb b被動對象被動對象C Cc c被動對象被動對象D Dd1d2運行開始運行開始運行結(jié)束運行結(jié)束操作執(zhí)行操作執(zhí)行消息發(fā)送消息發(fā)送控制點返回示意控制點返回示意a a(1)消息都是同步的。接收者執(zhí)行消息所請求的操作。發(fā)送者等待消息處理完畢再繼續(xù)執(zhí)行。(2)每個消息只有唯一的接收者。并發(fā)系統(tǒng)的示意圖并發(fā)系統(tǒng)的示意圖控制線程內(nèi)部控制線程內(nèi)部同順序系統(tǒng)同順序系統(tǒng)控制線程之間控制線程之間情況復(fù)雜得多情況復(fù)雜得多(1)消息有同步與異步之分 接收者對消息有不同響應(yīng)方式 發(fā)送者對消息處理結(jié)果有不同期待方式(2)消息的接收者可能不唯一主動對象A主動對象B被動對象C被動對象D被動對象E控制流控制流1 1 線程線程 TaTa控制線程內(nèi)部 的消息控制線程之間 的消息 控制點返回控制流控制流2 2線程線程 TbTb(2 2)在并發(fā)系統(tǒng)中,)在并發(fā)系統(tǒng)中,)在并發(fā)系統(tǒng)中,)在并發(fā)系統(tǒng)中,存在多個控存在多個控存在多個控存在多個控制流制流制流制流。既然每個控制流都以一個表示進程或線程既然每個控制流都以一個表示進程或線程的主動對象為根,這意味著:控制流的創(chuàng)建與的主動對象為根,這意味著:控制流的創(chuàng)建與撤消的時機分別為:撤消的時機分別為:創(chuàng)建一個主動對象,就啟動了相關(guān)的控制流,創(chuàng)建一個主動對象,就啟動了相關(guān)的控制流,從此按照程序的操作邏輯,就開始了層層調(diào)從此按照程序的操作邏輯,就開始了層層調(diào)用,形成了一個控制流。用,形成了一個控制流。撤消主動對象,就終止了相關(guān)的控制流;也撤消主動對象,就終止了相關(guān)的控制流;也即在主動對象被撤消后,它所代表的線程或即在主動對象被撤消后,它所代表的線程或進程就終止了。進程就終止了。9.4.2控制流 對控制驅(qū)動部分建模:對控制驅(qū)動部分建模:通常,通常,用包括主動類的類圖捕捉控制流的靜用包括主動類的類圖捕捉控制流的靜態(tài)結(jié)構(gòu)態(tài)結(jié)構(gòu)用包括主動對象的順序圖捕捉控制流用包括主動對象的順序圖捕捉控制流的動態(tài)行為的動態(tài)行為9.4.2控制流 1)OOA定義的主動對象定義的主動對象這是由業(yè)務(wù)邏輯所決定的這是由業(yè)務(wù)邏輯所決定的2)系統(tǒng)的并發(fā)需求所要求的多控制流)系統(tǒng)的并發(fā)需求所要求的多控制流若要求多項工作同時進行,則每一項工作就是若要求多項工作同時進行,則每一項工作就是一個控制流。例如,銷售與統(tǒng)計。一個控制流。例如,銷售與統(tǒng)計。3)系統(tǒng)分布方案所要求的多控制流)系統(tǒng)分布方案所要求的多控制流每一個分布站點至少有一個控制流每一個分布站點至少有一個控制流識別控制流識別控制流9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分4)根據(jù)任務(wù)的緊急程度設(shè)置控制流)根據(jù)任務(wù)的緊急程度設(shè)置控制流高優(yōu)先控制流,低優(yōu)先控制流,緊急控制流;高優(yōu)先控制流,低優(yōu)先控制流,緊急控制流;5)為實現(xiàn)方便設(shè)立的控制流)為實現(xiàn)方便設(shè)立的控制流例如:負責(zé)處理機之間通訊的控制流例如:負責(zé)處理機之間通訊的控制流6 6)對異常事件的處理)對異常事件的處理 由于異常事件的發(fā)生,不能在程序的某個可由于異常事件的發(fā)生,不能在程序的某個可預(yù)知的控制點進行處理,應(yīng)該設(shè)立一個專門的預(yù)知的控制點進行處理,應(yīng)該設(shè)立一個專門的控制流進行處理異常事件??刂屏鬟M行處理異常事件。9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分問題問題劃分劃分通訊通訊組合組合映射映射7)實現(xiàn)并行計算)實現(xiàn)并行計算通常用一個進程實現(xiàn)一個計算任務(wù),用通常用一個進程實現(xiàn)一個計算任務(wù),用線程實現(xiàn)各子任務(wù)。線程實現(xiàn)各子任務(wù)。9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分8)設(shè)置起協(xié)調(diào)者作用的控制流)設(shè)置起協(xié)調(diào)者作用的控制流若有多個控制流需要相互交換信息,可考慮若有多個控制流需要相互交換信息,可考慮增設(shè)一個或多個控制流,對相應(yīng)的控制流起協(xié)增設(shè)一個或多個控制流,對相應(yīng)的控制流起協(xié)調(diào)者的作用。調(diào)者的作用。審查與調(diào)整審查與調(diào)整過度并發(fā)性意味著執(zhí)行效率的損失;過度并發(fā)性意味著執(zhí)行效率的損失;考慮控制流之間職責(zé)的均衡分布情況,它考慮控制流之間職責(zé)的均衡分布情況,它們之間協(xié)作的情況,以保證每個控制流是高們之間協(xié)作的情況,以保證每個控制流是高內(nèi)聚的,且與相關(guān)的控制流是松耦合的;內(nèi)聚的,且與相關(guān)的控制流是松耦合的;每個控制流應(yīng)該有以上列舉的理由之一,每個控制流應(yīng)該有以上列舉的理由之一,除非由明確的其他理由。除非由明確的其他理由。9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分定義各控制流定義各控制流 l l描述控制流描述控制流 對控制流命名,并進行簡要說明。對控制流命名,并進行簡要說明。l為控制流指定操作為控制流指定操作 對對設(shè)設(shè)計計部部分分的的每每個個操操作作指指定定它它屬屬于于哪哪個個控控制制流流。要要保保證證每每個操作屬于一個控制流。個操作屬于一個控制流。l定義各控制流的細節(jié)定義各控制流的細節(jié)若控制流由事件驅(qū)動,則要描述觸發(fā)控制流的條件。若控制流由事件驅(qū)動,則要描述觸發(fā)控制流的條件。例如,若控制流由時鐘驅(qū)動,則可能要描述觸發(fā)之前所例如,若控制流由時鐘驅(qū)動,則可能要描述觸發(fā)之前所經(jīng)歷的時間間隔。經(jīng)歷的時間間隔。考慮描述控制流從那里取數(shù)據(jù)和往那里送數(shù)據(jù)之類考慮描述控制流從那里取數(shù)據(jù)和往那里送數(shù)據(jù)之類的情況的情況l定義控制流協(xié)調(diào)情況定義控制流協(xié)調(diào)情況(見見9.3.5)操作1.操作5.操作9.類名類名屬性屬性 操作操作 類名類名process屬性屬性 操作操作 類名類名thread屬性屬性 操作操作 進程或進程或線程線程的表示法的表示法控制流間的通信控制流間的通信控制流間的通信機制主要有控制流間的通信機制主要有4種:種:操作調(diào)用操作調(diào)用 一個控制流中的對象調(diào)用另一個控制流中的對象的一個控制流中的對象調(diào)用另一個控制流中的對象的操作,是通過發(fā)送了一條同步消息來實現(xiàn)的。具體的操作,是通過發(fā)送了一條同步消息來實現(xiàn)的。具體的執(zhí)行步驟為:執(zhí)行步驟為:(1)(1)調(diào)用者調(diào)用操作調(diào)用者調(diào)用操作 (2)(2)調(diào)用者等待接收者接收這個調(diào)用調(diào)用者等待接收者接收這個調(diào)用 (3)(3)接收者的操作被喚醒接收者的操作被喚醒 (4)(4)計算結(jié)果返回給調(diào)用者計算結(jié)果返回給調(diào)用者 (5)(5)調(diào)用者繼續(xù)它的執(zhí)行。調(diào)用者繼續(xù)它的執(zhí)行。9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分郵箱郵箱 一個控制流的對象異步地向另一個控制流中的對象發(fā)送一個一個控制流的對象異步地向另一個控制流中的對象發(fā)送一個信號信號。具體的執(zhí)行步驟為:。具體的執(zhí)行步驟為:(1 1)請求者發(fā)送信號,然后就繼續(xù)它自己的執(zhí)行;)請求者發(fā)送信號,然后就繼續(xù)它自己的執(zhí)行;(2 2)接收者只有在準(zhǔn)備好時或在適當(dāng)?shù)臅r候)接收者只有在準(zhǔn)備好時或在適當(dāng)?shù)臅r候,才到指定的郵才到指定的郵箱去接收信號并進行處理,完成后可能向請求者發(fā)信號來回傳箱去接收信號并進行處理,完成后可能向請求者發(fā)信號來回傳處理結(jié)果,接著向下執(zhí)行。處理結(jié)果,接著向下執(zhí)行。主動對象A主動對象B控制流控制流1 1 線程線程 TaTa控制流控制流2 2線程線程 TbTb郵箱郵箱9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分 這樣的郵箱機制也可以是同步的,但收發(fā)信號的雙方事先要這樣的郵箱機制也可以是同步的,但收發(fā)信號的雙方事先要做好約定。做好約定。主動對象A主動對象B控制流控制流1 1 線程線程 TaTa控制流控制流2 2線程線程 TbTb郵箱郵箱9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分共享存儲器共享存儲器 兩個或幾個控制流中的對象利用一塊公兩個或幾個控制流中的對象利用一塊公共的存儲器,作為通信區(qū)域。共的存儲器,作為通信區(qū)域。通常傳輸具有較復(fù)雜和較大的數(shù)據(jù)結(jié)構(gòu)通常傳輸具有較復(fù)雜和較大的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)時,才使用共享存儲器方式。的數(shù)據(jù)時,才使用共享存儲器方式。生產(chǎn)者生產(chǎn)者消費者消費者公共的存儲器公共的存儲器 使用此方式,要注意同步問題。使用此方式,要注意同步問題。9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分遠程過程調(diào)用遠程過程調(diào)用用于在不同計算機中的并發(fā)進程:用于在不同計算機中的并發(fā)進程:(1)調(diào)用進程標(biāo)示它想要請求的一個對象的操作,然后)調(diào)用進程標(biāo)示它想要請求的一個對象的操作,然后把它放在遠程過程調(diào)用庫中;把它放在遠程過程調(diào)用庫中;(2)遠程過程調(diào)用機制在網(wǎng)絡(luò)上尋找目標(biāo)對象,找到后)遠程過程調(diào)用機制在網(wǎng)絡(luò)上尋找目標(biāo)對象,找到后將請求打包發(fā)送給目標(biāo)對象;將請求打包發(fā)送給目標(biāo)對象;(3)目標(biāo)方接到后將請求轉(zhuǎn)換成本地格式,執(zhí)行所請求)目標(biāo)方接到后將請求轉(zhuǎn)換成本地格式,執(zhí)行所請求的操作;執(zhí)行完畢后,將結(jié)果以上述同樣的方式返回給發(fā)送的操作;執(zhí)行完畢后,將結(jié)果以上述同樣的方式返回給發(fā)送方。方。過程過程a.x()遠程過程調(diào)用庫遠程過程調(diào)用庫過程過程ax()對線程間的通訊建模對線程間的通訊建??梢允褂绵]箱、共享存儲器或操作調(diào)用進行線程間的可以使用郵箱、共享存儲器或操作調(diào)用進行線程間的通訊。通訊。c:BlackboardControllers:Blackboardb:KnowledgeSourcec:初始化c:開始搜索c:evaluate()b:提示線索b:放置部分解決方案s:初始化完畢表示進程或線表示進程或線程的一種方法程的一種方法是用通訊圖是用通訊圖Blackboard(黑板)(黑板)負責(zé)保存系統(tǒng)輸入、問題求解的局部和中間結(jié)果以及反映問題求解的負責(zé)保存系統(tǒng)輸入、問題求解的局部和中間結(jié)果以及反映問題求解的狀態(tài)。狀態(tài)。KnowledgeSource(知識源)包含對問題求解的條件和執(zhí)行的操作,以及對控制決策進行(知識源)包含對問題求解的條件和執(zhí)行的操作,以及對控制決策進行評價的知識。評價的知識。BlackboardController(黑板控制器)負責(zé)監(jiān)視黑板上的信息和狀態(tài)的變化,并要根據(jù)變(黑板控制器)負責(zé)監(jiān)視黑板上的信息和狀態(tài)的變化,并要根據(jù)變化采取相應(yīng)的行動?;扇∠鄳?yīng)的行動。示例:進程間通訊示例:進程間通訊旅行預(yù)定旅行預(yù)定processt:TripPlannerlocation=clientt:planTrip()r:postResults()r:make()processr:ReservationAgentlocation=reservationserverprocessh:HotelAgentlocation=hotelserverprocesstm:TicketingManagerlocation=ticketingtserverr:make()可以使用郵箱、遠程過程調(diào)用和共享存儲器進行進程之間的可以使用郵箱、遠程過程調(diào)用和共享存儲器進行進程之間的通信通信。tm:Results()h:Results()對進程間的通訊建模對進程間的通訊建模 9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分控制流的控制流的協(xié)調(diào)者協(xié)調(diào)者 若若有有多多個個控控制制流流,可可能能就就需需要要考考慮慮增增加加一一個個控控制制流,起協(xié)調(diào)者的作用流,起協(xié)調(diào)者的作用控制流協(xié)調(diào)者控制流協(xié)調(diào)者協(xié)調(diào)協(xié)調(diào)控制流控制流名字名字描述描述優(yōu)先級優(yōu)先級包含的操作包含的操作由誰協(xié)調(diào)由誰協(xié)調(diào)開始開始初始化初始化待命待命終結(jié)終結(jié)1 0.*例如:例如:設(shè)計一個主進程,負責(zé):系統(tǒng)的啟動和初始化、其他進程的創(chuàng)設(shè)計一個主進程,負責(zé):系統(tǒng)的啟動和初始化、其他進程的創(chuàng)建與撤消、資源分配、優(yōu)先級的授予等工作。建與撤消、資源分配、優(yōu)先級的授予等工作。也可以把負責(zé)協(xié)調(diào)的控制流設(shè)計成一個進程,而把其他控制流也可以把負責(zé)協(xié)調(diào)的控制流設(shè)計成一個進程,而把其他控制流設(shè)計成它的內(nèi)部線程。設(shè)計成它的內(nèi)部線程。設(shè)置控制流協(xié)調(diào)者設(shè)置控制流協(xié)調(diào)者 為整個系統(tǒng)設(shè)置一個控制流協(xié)調(diào)者為整個系統(tǒng)設(shè)置一個控制流協(xié)調(diào)者 為一個主動類設(shè)置一個控制流協(xié)調(diào)者為一個主動類設(shè)置一個控制流協(xié)調(diào)者 為一個含有主動行為的用況設(shè)置一個控制流為一個含有主動行為的用況設(shè)置一個控制流協(xié)調(diào)者。協(xié)調(diào)者。9.4.3 如何設(shè)計控制驅(qū)動部分如何設(shè)計控制驅(qū)動部分數(shù)據(jù)管理部分是負責(zé)在特定的數(shù)據(jù)管理系統(tǒng)中存儲和檢數(shù)據(jù)管理部分是負責(zé)在特定的數(shù)據(jù)管理系統(tǒng)中存儲和檢索對象的組成部分。索對象的組成部分。其目的是,存儲問題域的持久對象、封裝這些對象的查找其目的是,存儲問題域的持久對象、封裝這些對象的查找和存儲機制,以及為了隔離數(shù)據(jù)管理方案的影響。和存儲機制,以及為了隔離數(shù)據(jù)管理方案的影響。問題范圍:問題范圍:對象在永久性存儲介質(zhì)上的存儲對象在永久性存儲介質(zhì)上的存儲可能只有一部分對象需要長久存儲可能只有一部分對象需要長久存儲只存儲對象的屬性部分只存儲對象的屬性部分9.5.1什么是數(shù)據(jù)管理部分什么是數(shù)據(jù)管理部分不同的數(shù)據(jù)管理系統(tǒng):不同的數(shù)據(jù)管理系統(tǒng):文件系統(tǒng)、文件系統(tǒng)、R-DBMS、OODBMS對數(shù)據(jù)管理部分的設(shè)計有不同的影響對數(shù)據(jù)管理部分的設(shè)計有不同的影響9.5 數(shù)據(jù)管理部分的設(shè)計數(shù)據(jù)管理部分的設(shè)計 為了隔離數(shù)據(jù)管理系統(tǒng)對其它部分的影響,為了隔離數(shù)據(jù)管理系統(tǒng)對其它部分的影響,使得選用不同的數(shù)據(jù)管理系統(tǒng)時,問題域部分基本相同。使得選用不同的數(shù)據(jù)管理系統(tǒng)時,問題域部分基本相同。為什么需要數(shù)據(jù)管理部分為什么需要數(shù)據(jù)管理部分人人機機交交互互部部分分控制流管理部分控制流管理部分問題域問題域部分部分數(shù)數(shù)據(jù)據(jù)管管理理部部分分文件系統(tǒng)文件系統(tǒng)數(shù)數(shù)據(jù)據(jù)管管理理部部分分文件系統(tǒng)文件系統(tǒng)數(shù)數(shù)據(jù)據(jù)管管理理部部分分關(guān)系型關(guān)系型DBMS數(shù)數(shù)據(jù)據(jù)管管理理部部分分OO-DBMS9.5.1 什么是數(shù)據(jù)管理部分什么是數(shù)據(jù)管理部分 數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)庫系統(tǒng)是存儲、管理、處理和維護數(shù)據(jù)的軟件系統(tǒng),由是存儲、管理、處理和維護數(shù)據(jù)的軟件系統(tǒng),由數(shù)據(jù)庫數(shù)據(jù)庫、數(shù)據(jù)庫管數(shù)據(jù)庫管理系統(tǒng)理系統(tǒng)和有關(guān)軟件組成。和有關(guān)軟件組成。數(shù)據(jù)庫是長期存在計算機內(nèi)、有組織、可共享的數(shù)據(jù)的集合。數(shù)據(jù)庫是長期存在計算機內(nèi)、有組織、可共享的數(shù)據(jù)的集合。數(shù)據(jù)庫管理系統(tǒng)是用于建立、使用和維護數(shù)據(jù)庫的軟件,它對數(shù)據(jù)庫進行統(tǒng)一數(shù)據(jù)庫管理系統(tǒng)是用于建立、使用和維護數(shù)據(jù)庫的軟件,它對數(shù)據(jù)庫進行統(tǒng)一管理和控制,以保證數(shù)據(jù)庫的完整性和安全性。管理和控制,以保證數(shù)據(jù)庫的完整性和安全性。應(yīng)用程序用戶數(shù)據(jù)庫管理員應(yīng)用程序接口終端用戶查詢處理器數(shù)據(jù)定義接口數(shù)據(jù)庫訪問和控制邏輯數(shù)據(jù)庫管理系統(tǒng)物理數(shù)據(jù)存儲模式數(shù)據(jù)庫9.5.2數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)關(guān)系數(shù)據(jù)庫系統(tǒng)關(guān)系數(shù)據(jù)庫系統(tǒng)關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫是采用關(guān)系模型的數(shù)據(jù)庫。是采用關(guān)系模型的數(shù)據(jù)庫。關(guān)系模型用二維表結(jié)構(gòu)來表示各類實體及其間的聯(lián)系。關(guān)系模型用二維表結(jié)構(gòu)來表示各類實體及其間的聯(lián)系。二維表由行和列組成。一個關(guān)系數(shù)據(jù)庫由多張表組成二維表由行和列組成。一個關(guān)系數(shù)據(jù)庫由多張表組成人員-ID 人員姓名 地址 身份證號1 張三 海淀路11號 2131251255 李四 清華西路123號 12555125471 張三 天津海河路2號 5626 4246 人員-ID 祖籍1 山東5 云南71 浙江元組、記錄屬性、字段屬性、字段侯選關(guān)鍵字侯選關(guān)鍵字:可保證表的每個元組唯一性的任何屬性的集合。可保證表的每個元組唯一性的任何屬性的集合。指定侯選關(guān)鍵字中的一個為表的指定侯選關(guān)鍵字中的一個為表的主關(guān)鍵字主關(guān)鍵字主關(guān)鍵字主關(guān)鍵字。外鍵外鍵:連接表的關(guān)鍵字。連接表的關(guān)鍵字。數(shù)據(jù)庫中的表要滿足一些范式,如下為三個范式的定義。數(shù)據(jù)庫中的表要滿足一些范式,如下為三個范式的定義。第一范式:第一范式:關(guān)系(表)的每個屬性都應(yīng)該是原子的。關(guān)系(表)的每個屬性都應(yīng)該是原子的。第二范式:第二范式:如如果果一一個個關(guān)關(guān)系系的的所所有有非非關(guān)關(guān)鍵鍵字字屬屬性性,都都只只依依賴賴整整個個關(guān)關(guān)鍵鍵字字,則則該關(guān)系滿足第二范式。該關(guān)系滿足第二范式。(學(xué)號學(xué)號學(xué)號學(xué)號,系名,住處系名,住處,課程號課程號課程號課程號,成績),成績)第三范式:第三范式:如果一個關(guān)系滿足第二范式,且沒有傳遞依賴,則該關(guān)系滿足如果一個關(guān)系滿足第二范式,且沒有傳遞依賴,則該關(guān)系滿足第三范式。第三范式。Boyce-Codd范式(范式(BCNF)等9.5.2數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫系統(tǒng)面向?qū)ο髷?shù)據(jù)庫系統(tǒng) 面向?qū)ο髷?shù)據(jù)庫系統(tǒng)是OO設(shè)計和編程的之間擴展,是為了存儲對象并與面向?qū)ο蟪绦蛟O(shè)計語言交互而專門設(shè)計的。它是按對象存儲數(shù)據(jù)的數(shù)據(jù)庫管理系統(tǒng)。面向?qū)ο髷?shù)據(jù)庫系統(tǒng)有兩方面的特征:(1)是面向?qū)ο蟮模瑧?yīng)支持對象、類、屬性、繼承和關(guān)聯(lián)等面向?qū)ο蟾拍?;?)具有數(shù)據(jù)庫系統(tǒng)所應(yīng)具有的特點和功能。9.5.2數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng) 面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)與應(yīng)用系統(tǒng)的邏輯模型都是一致的,不需要再設(shè)計負責(zé)保存與恢復(fù)其他類的對象的類,因為每個類的對象都可以直接在OODBMS中保存。面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)相對來說還比較新,在理論上和技術(shù)上還不太完善,而且目前還沒有被廣泛接受的標(biāo)準(zhǔn)。由對象數(shù)據(jù)庫管理組ODMG提出的一些數(shù)據(jù)庫標(biāo)準(zhǔn)正在逐漸地得到廣泛的接收,如對象定義語言(ODL)。ODL是一種描述對象數(shù)據(jù)庫結(jié)構(gòu)和內(nèi)容的語言。在若干年后,ODBMS有望取代RDBMS。9.5.2數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)數(shù)據(jù)庫和數(shù)據(jù)庫管理系統(tǒng)首先要根據(jù)實現(xiàn)條件選擇數(shù)據(jù)管理系統(tǒng):R-DBMS,OO-DBMS,文件系統(tǒng)文件系統(tǒng)利用關(guān)系數(shù)據(jù)庫系統(tǒng)進行數(shù)據(jù)存儲設(shè)計利用關(guān)系數(shù)據(jù)庫系統(tǒng)進行數(shù)據(jù)存儲設(shè)計 1 1、面向、面向?qū)ο?、實體對象、實體-關(guān)系以及關(guān)系數(shù)據(jù)庫系統(tǒng)中的概念間的對應(yīng)關(guān)系關(guān)系以及關(guān)系數(shù)據(jù)庫系統(tǒng)中的概念間的對應(yīng)關(guān)系 面向?qū)ο竺嫦驅(qū)ο髮嶓w實體聯(lián)系聯(lián)系關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫類 實體類型 表對象 實體實例 行屬性 屬性 列關(guān)系 關(guān)系 表9.5.3 如何設(shè)計數(shù)據(jù)管理部分如何設(shè)計數(shù)據(jù)管理部分創(chuàng)建對象查詢對象修改對象數(shù)據(jù)存儲及應(yīng)用示意圖數(shù)據(jù)存儲及應(yīng)用示意圖數(shù)據(jù)存儲及應(yīng)用示意圖數(shù)據(jù)存儲及應(yīng)用示意圖問題域部分問題域部分UPDATEFROMWHERESELECTFROMWHERECREATE數(shù)據(jù)管理部分數(shù)據(jù)庫RDBMS2、對象標(biāo)識、對象標(biāo)識在程序運行時的對象標(biāo)識是唯一的,對程序員來說通常是在程序運行時的對象標(biāo)識是唯一的,對程序員來說通常是不可以訪問的,只是通過對象名來訪問對象。不可以訪問的,只是通過對象名來訪問對象。永久對象的標(biāo)識在一個表中是唯一的。永久對象的標(biāo)識在一個表中是唯一的。由類導(dǎo)出的表用一個主關(guān)鍵字作為表中所存儲的對象的唯由類導(dǎo)出的表用一個主關(guān)鍵字作為表中所存儲的對象的唯一標(biāo)識一標(biāo)識。由關(guān)聯(lián)導(dǎo)出的表用相關(guān)聯(lián)的表的主關(guān)鍵字組合作為主關(guān)鍵由關(guān)聯(lián)導(dǎo)出的表用相關(guān)聯(lián)的表的主關(guān)鍵字組合作為主關(guān)鍵字字。在程序中使用對象名,在表中使用主關(guān)鍵字在程序中使用對象名,在表中使用主關(guān)鍵字在程序中使用對象名,在表中使用主關(guān)鍵字在程序中使用對象名,在表中使用主關(guān)鍵字。9.5.3 如何設(shè)計數(shù)據(jù)管理部分如何設(shè)計數(shù)據(jù)管理部分3、永久類的存放設(shè)
收藏
編號:65494723
類型:共享資源
大小:6.60MB
格式:ZIP
上傳時間:2022-03-24
40
積分
- 關(guān) 鍵 詞:
-
軟件工程基礎(chǔ)
軟件工程
基礎(chǔ)
全套
PPT
課件
- 資源描述:
-
《軟件工程基礎(chǔ)》全套PPT課件,軟件工程基礎(chǔ),軟件工程,基礎(chǔ),全套,PPT,課件
展開閱讀全文
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。