




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
06第六章面向?qū)ο蟮姆治龊驮O(shè)計方法本次課主要內(nèi)容6.1面向?qū)ο蠓椒?.2面向?qū)ο蟮姆治?.3面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計6.5軟件復(fù)用6.6用戶界面的設(shè)計3/11/20242軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.1面向?qū)ο蠓椒ǜ攀?/p>
6.1.2面向?qū)ο蟮能浖こ?OOSE)
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?/p>
3/11/20243軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.1面向?qū)ο蠓椒ǜ攀雒嫦驅(qū)ο蟛粌H是一些具體的軟件開發(fā)技術(shù)與策略,而且是一整套關(guān)于如何看待軟件系統(tǒng)與現(xiàn)實世界的關(guān)系,以什么觀點來研究問題并進行求解,以及如何進行系統(tǒng)構(gòu)造的軟件方法學(xué)。面向?qū)ο蠓椒ǖ幕舅枷胧菑默F(xiàn)實世界中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運用人類的自然思維方式。3/11/20244軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.1面向?qū)ο蠓椒ǜ攀?.面向?qū)ο蠓椒ǖ闹饕攸c(1)從問題域中客觀存在的事物出發(fā)來構(gòu)造軟件系統(tǒng),用對象作為對這些事物的抽象表示,并以此作為系統(tǒng)的基本構(gòu)成單位。(2)事物的靜態(tài)特征是可以用一些數(shù)據(jù)來表達的特征,可以用對象的屬性表示,事物的動態(tài)特征(即事物的行為)用對象的服務(wù)(或操作)表示。(3)對象的屬性與服務(wù)結(jié)合為一個獨立的實體,對外屏蔽其內(nèi)部細節(jié),稱作封裝。3/11/20245軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.1面向?qū)ο蠓椒ǜ攀?.面向?qū)ο蠓椒ǖ闹饕攸c(4)把具有相同屬性和相同服務(wù)的對象歸為一類,類是這些對象的抽象描述,每個對象是它的類的一個實例。(5)通過在不同程度上運用抽象的原則,可以得到較一般的類和較特殊的類。特殊類繼承一般類的屬性與服務(wù),面向?qū)ο蠓椒ㄖС謱@種繼承關(guān)系的描述與實現(xiàn),從而簡化系統(tǒng)的構(gòu)造過程及其文檔。3/11/20246軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.1面向?qū)ο蠓椒ǜ攀?.面向?qū)ο蠓椒ǖ闹饕攸c(6)復(fù)雜的對象可以用簡單的對象作為其構(gòu)成部分,稱作聚合。(7)對象之間通過消息進行通信,以實現(xiàn)對象之間的動態(tài)聯(lián)系。(8)通過關(guān)聯(lián)表達對象之間的靜態(tài)關(guān)系。3/11/20247軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.1面向?qū)ο蠓椒ǜ攀?.面向?qū)ο蟮亩x(1)一種使用對象(它將屬性與操作封裝為一體)、消息傳送、類、繼承、多態(tài)和動態(tài)綁定來開發(fā)問題域模型之解的范型。(2)一種基于對象、類、實例和繼承等概念的技術(shù)。(3)用對象作為建模的原子。3/11/20248軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.2面向?qū)ο蟮能浖こ?面向?qū)ο蟮能浖こ虒W(xué)是面向?qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面運用。它包括面向?qū)ο蟮姆治?、面向?qū)ο蟮脑O(shè)計、面向?qū)ο蟮木幊?、面向?qū)ο蟮臏y試和面向?qū)ο蟮能浖S護等主要內(nèi)容。3/11/20249軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.2面向?qū)ο蟮能浖こ蹋?)面向?qū)ο蟮姆治?面向?qū)ο蠓治觯∣OA)強調(diào)直接針對問題域中客觀存在的各項事物建立OOA模型中的對象。3/11/202410軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.2面向?qū)ο蟮能浖こ蹋?)面向?qū)ο蟮脑O(shè)計 OOD則是針對系統(tǒng)的一個具體的實現(xiàn)運用OO方法。其中包括兩方面的工作,一是把OOA模型直接搬到OOD(不經(jīng)過轉(zhuǎn)換,僅作某些必要的修改和調(diào)整),作為OOD的一個部分;二是針對具體實現(xiàn)中的人機界面、數(shù)據(jù)存儲、任務(wù)管理等因素補充一些與實現(xiàn)有關(guān)的部分。3/11/202411軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.2面向?qū)ο蟮能浖こ蹋?)面向?qū)ο蟮木幊?面向?qū)ο蟮木幊蹋∣OP)又稱作面向?qū)ο蟮膶崿F(xiàn)(OOI)。OOP工作就是用同一種面向?qū)ο蟮木幊陶Z言把OOD模型中的每個成分書寫出來。3/11/202412軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.2面向?qū)ο蟮能浖こ蹋?)面向?qū)ο蟮臏y試 面向?qū)ο蟮臏y試(OOT)是指:對于用OO技術(shù)開發(fā)的軟件,在測試過程中繼續(xù)運用OO技術(shù),進行以對象概念為中心的軟件測試。3/11/202413軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.2面向?qū)ο蟮能浖こ蹋?)面向?qū)ο蟮能浖S護面向?qū)ο蟮能浖こ谭椒楦倪M軟件維護提供了有效的途徑。程序與問題域一致,各個階段的表示一致,從而大大降低了理解的難度。將系統(tǒng)中最容易變化的因素(功能)作為對象的服務(wù)封裝在對象內(nèi)部,對象的封裝性使一個對象的修改對其他影響也小,從而避免了波動效應(yīng)。3/11/202414軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.對象 對象是問題域或?qū)崿F(xiàn)域中某些事物的一個抽象,它反映該事物在系統(tǒng)中需要保存的信息和發(fā)揮的作用;它是一組屬性和有權(quán)對這些屬性進行操作的一組服務(wù)的封裝體?!駥傩允怯脕砻枋鰧ο箪o態(tài)特征的一個數(shù)據(jù)項;●服務(wù)是用來描述對象動態(tài)特征(行為)的一個操作序列。3/11/202415軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.消息和方法(1)消息 消息就是向?qū)ο蟀l(fā)出的服務(wù)請求,它應(yīng)含有提供服務(wù)的對象標識、服務(wù)標識、輸入信息和回答信息。消息的接收者是提供服務(wù)的對象。消息的發(fā)送者是要求提供服務(wù)的對象或其他系統(tǒng)成分。消息的形式用消息模式表示,一個消息模式定義了一類消息,它可以對應(yīng)內(nèi)容不同的消息。3/11/202416軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.消息和方法(2)方法 把所有對象分成各種對象類,每個對象類都有一組所謂的方法,它們實際上是類對象上的各種操作。3/11/202417軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.類和類層次(1)類 在OO方法中,類的定義是具有相同屬性和服務(wù)的一組對象的集合,它為屬于該類的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個主要部分。
3/11/202418軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.類和類層次(2)類層次結(jié)構(gòu) 一個類的上層可以有超類,下層可以有子類,形成一種層次結(jié)構(gòu)。這種層次結(jié)構(gòu)的一個重要特點是繼承性,一個類繼承其超類的全部描述。3/11/202419軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.繼承性繼承性是自動地共享類、子類和對象中的方法和數(shù)據(jù)的機制。特殊類的對象擁有其一般類的全部屬性與服務(wù),稱作特殊類對一般類的繼承。繼承意味著自動地擁有,或隱含地復(fù)制。3/11/202420軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.封裝性封裝是一種信息隱蔽技術(shù),用戶只能見到對象封裝界面上的信息,對象內(nèi)部對用戶來說是隱蔽的。封裝的目的在于將對象的使用者和對象的設(shè)計者分開,使用者不必知道行為實際的細節(jié),只須用設(shè)計者提供的消息來訪問該對象。3/11/202421軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.封裝性封裝的定義為:一個清楚的邊界,所有的對象的內(nèi)部軟件的范圍被限定在這個邊界內(nèi);一個接口,這個接口描述這個對象和其他的對象之間相互的作用;受保護的內(nèi)部實現(xiàn),這個實現(xiàn)給出了由軟件對象提供的功能的細節(jié),實現(xiàn)細節(jié)能在定義這個對象的類的外面訪問。3/11/202422軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.結(jié)構(gòu)與連接(1)一般/特殊結(jié)構(gòu) 一般/特殊結(jié)構(gòu)又稱作分類結(jié)構(gòu),是一組有一般/特殊關(guān)系的類所組成的結(jié)構(gòu)。(2)整體/部分結(jié)構(gòu) 整體/部分結(jié)構(gòu)又稱為組裝結(jié)構(gòu),它描述對象之間的組成關(guān)系,即一個對象是另一個對象的組成部分。3/11/202423軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.結(jié)構(gòu)與連接(3)實例連接 實例連接反映了對象與對象間的靜態(tài)關(guān)系。(4)消息連接 消息連接描述對象之間的動態(tài)聯(lián)系,即若一個對象在執(zhí)行服務(wù)時,需要通過消息請求另一個對象為它完成某個服務(wù),則說第一個對象與第二個對象之間存在著消息連接。3/11/202424軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.多態(tài)性對象的多態(tài)性是指在一般類中定義的屬性或服務(wù)被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。支持多態(tài)性的實現(xiàn)的語言應(yīng)具有下述功能:(1)重載:在特殊類中對繼承來的屬性或服務(wù)進行重新定義。(2)動態(tài)綁定:在運行時根據(jù)對象接收的消息動態(tài)地確定要連接哪一段服務(wù)代碼。(3)類屬:服務(wù)參量的類型可以是參數(shù)化的。3/11/202425軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.1面向?qū)ο蠓椒?/p>
6.1.3面向?qū)ο蟮幕靖拍詈吞卣?.主動對象主動對象是一組屬性和一組服務(wù)的封裝體,其中至少有一個服務(wù)不需要接收消息就能主動執(zhí)行(稱作主動服務(wù))。主動對象的作用是描述問題域中具有主動行為的事物以及在系統(tǒng)設(shè)計時識別的任務(wù),主動服務(wù)描述相應(yīng)的任務(wù)所應(yīng)完成的操作。在系統(tǒng)實現(xiàn)階段,主動服務(wù)應(yīng)該被實現(xiàn)為一個能并發(fā)執(zhí)行的、主動的程序單位,例如進程或線程。3/11/202426軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.1面向?qū)ο蠓治龌具^程及原則
6.2.2確定對象與類
6.2.3確定屬性
6.2.4定義服務(wù)
6.2.5對象間通信3/11/202427軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.1面向?qū)ο蠓治龌具^程及原則1.分析問題的層次 面向?qū)ο蠓治龃篌w上按照下列順序進行:主題層(也稱為范疇層)類&對象層
結(jié)構(gòu)層屬性層服務(wù)層3/11/202428軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.1面向?qū)ο蠓治龌具^程及原則2.OOA主要概念的表示法及OOA主要原則(1)OOA主要概念①對象、類:必要時可區(qū)分主動對象并用不同的類符號表示。②屬性:必要時可區(qū)分類屬性和對象屬性。③服務(wù):對于主動對象,應(yīng)標出主動服務(wù)。④結(jié)構(gòu):分為一般/特殊結(jié)構(gòu)和整體/部分結(jié)構(gòu)。⑤連接:包括實例連接和消息連接。⑥主題:指導(dǎo)讀者理解大型而復(fù)雜的對象模型。3/11/202429軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.1面向?qū)ο蠓治龌具^程及原則2.OOA主要概念的表示法及OOA主要原則(2)OOA的主要原則①抽象:OOA中的類就是抽象得到的。②分類:分類就是把具有相同屬性和服務(wù)的對象劃分為一類。③聚合:聚合的原則是把一個復(fù)雜的事物看成若干比較簡單的事物的組裝體④關(guān)聯(lián):關(guān)聯(lián)又稱為組裝3/11/202430軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.1面向?qū)ο蠓治龌具^程及原則2.OOA主要概念的表示法及OOA主要原則(2)OOA的主要原則⑤消息通信:這一原則要求對象之間只能通過消息進行通信⑥粒度控制:面對一個復(fù)雜的問題域時,不可能在同一時刻既能縱觀全局,又能洞察秋毫。⑦行為分析:現(xiàn)實世界中事物的行為是復(fù)雜的。3/11/202431軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.2確定對象與類1.確定對象問題域和系統(tǒng)責任問題域和系統(tǒng)責任是發(fā)現(xiàn)對象的根本出發(fā)點。
(2)正確地運用抽象原則緊緊圍繞系統(tǒng)責任這個目標去進行抽象。
(3)策略與啟發(fā)從問題域、系統(tǒng)邊界和系統(tǒng)責任三個方面,考慮各種能啟發(fā)自己發(fā)現(xiàn)對象的因素。
3/11/202432軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.2確定對象與類2.對象分類、建立類圖的對象層(1)異常情況的檢查和調(diào)整①類的屬性或服務(wù)不適合該類的全部對象②屬性和服務(wù)相似的類③對同一事物的重復(fù)描述3/11/202433軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.2確定對象與類2.對象分類、建立類圖的對象層(2)類的命名①類的名字應(yīng)恰好符合這個類(和它的特殊類)所包含的每一個對象。②類的名字,應(yīng)該反映每個對象個體,而不是整個群體。③采用名詞,或帶有定語的名詞;使用規(guī)范的詞匯;使用專家及用戶慣常使用的詞匯。④使用適當?shù)恼Z言文字。3/11/202434軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.2確定對象與類2.對象分類、建立類圖的對象層(3)建立類圖的對象層①類圖基本概念:對象層:給出系統(tǒng)中所有反映問題域與系統(tǒng)責任的對象。特征層:給出每一個類(及其所代表的對象)的內(nèi)部特征。關(guān)系層:給出各個類(及其所代表的對象)彼此之間的關(guān)系。3/11/202435軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.2確定對象與類2.對象分類、建立類圖的對象層(3)建立類圖的對象層②建立步驟
:用類符號表示每個類(對于主動對象,在類名之前增加主動標記“@”),把它們畫出來在類描述模板中填寫關(guān)于每個類的詳細說明。在發(fā)現(xiàn)對象的活動中能夠認識的屬性和服務(wù)均可隨時加入類符號,能夠認識的結(jié)構(gòu)和連接,均可隨時在類符號之間畫出
3/11/202436軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.3確定屬性1.對象的屬性和服務(wù)事物的靜態(tài)特征和動態(tài)特征分別用對象中的一組屬性和一組服務(wù)來表達。按照面向?qū)ο蠓椒ǖ姆庋b原則,一個對象的屬性和服務(wù)是緊密結(jié)合的,對象的屬性只能由這個對象的服務(wù)存取。3/11/202437軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.3確定屬性2.定義屬性首先考慮利用以往的OOA結(jié)果,看看相同或相似的問題域是否有已開發(fā)的OOA模型,盡可能復(fù)用其中同類對象的屬性定義。然后,主要的工作是研究當前的問題域和系統(tǒng)責任,針對本系統(tǒng)應(yīng)該設(shè)置的每一類對象,按照問題域的實際情況,以系統(tǒng)責任為目標進行正確的抽象,從而找出每一類對象應(yīng)有的屬性。3/11/202438軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)1.對象的狀態(tài)與狀態(tài)轉(zhuǎn)換圖對象狀態(tài)①對象或者類的所有屬性的當前值。②對象或者類的整體行為(例如響應(yīng)消息)的某些規(guī)則所能適應(yīng)的(對象或類的)狀況、情況、條件、形式或生存周期階段。3/11/202439軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)1.對象的狀態(tài)與狀態(tài)轉(zhuǎn)換圖(2)狀態(tài)轉(zhuǎn)換圖 狀態(tài)轉(zhuǎn)換圖是對整個對象的狀態(tài)/行為關(guān)系的圖示,它附屬于該對象的類描述模板。過程:①找出對象的各種狀態(tài)。②分析在不同的狀態(tài)下,對象的行為規(guī)則有何不同。如果發(fā)現(xiàn)在開始所認識的幾種狀態(tài)下對象行為規(guī)則并無差別,則應(yīng)將其合并為一種狀態(tài)。③分析從一種狀態(tài)可以轉(zhuǎn)換到哪幾種其他狀態(tài),對象的什么行為(服務(wù))可以引起這種轉(zhuǎn)換。3/11/202440軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)2.行為分類(1)系統(tǒng)行為與對象有關(guān)的某些行為實際上不是對象自身的行為(2)算法簡單的服務(wù)讀取或設(shè)置一個屬性的值,對象自身的行為(3)算法復(fù)雜的服務(wù) 此類服務(wù)描述了對象所映射事物的固有行為,要進行某些計算或監(jiān)控操作。3/11/202441軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)3.發(fā)現(xiàn)服務(wù)的策略與啟發(fā)(1)考慮系統(tǒng)責任。(2)考慮問題域。(3)分析對象的狀態(tài)。(4)追蹤服務(wù)的執(zhí)行路線3/11/202442軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)4.審查與調(diào)整(1)首先檢查每個服務(wù)是否真正有用。(2)其次是檢查每個服務(wù)是不是高內(nèi)聚的。3/11/202443軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)5.識別主動對象(1)在問題域中,這個服務(wù)所描述的對象行為是不是主動行為?(2)重點考慮與系統(tǒng)邊界以外的活動者直接進行交互的對象,這些對象最有可能成為主動對象。(3)根據(jù)系統(tǒng)責任觀察系統(tǒng)功能的構(gòu)成層次,重點考慮完成最外層功能的對象服務(wù)是否應(yīng)定義為主動服務(wù)3/11/202444軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)5.識別主動對象(4)最后一個策略是進行服務(wù)執(zhí)行路線的逆向追蹤,考慮每個服務(wù)是被其他哪些對象的哪些服務(wù)請求的,按消息傳遞的相反方向跟蹤上去,直到發(fā)現(xiàn)某個服務(wù)不被其他成分所請求,則它應(yīng)該是一個主動對象的主動服務(wù)。3/11/202445軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)6.服務(wù)的命名和定位 服務(wù)的命名應(yīng)采用動詞或動詞加名詞所組成的動賓結(jié)構(gòu)。服務(wù)名應(yīng)盡可能準確地反映該服務(wù)的職能。3/11/202446軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)7.服務(wù)的詳細說明(1)服務(wù)解釋:用一段簡練的文字解釋該服務(wù)的作用及功能。(2)消息協(xié)議:給出服務(wù)的入口消息格式,即請求該服務(wù)的消息格式,內(nèi)容包括服務(wù)名、輸入輸出參數(shù)、參數(shù)類型。在并發(fā)系統(tǒng)中,一個服務(wù)可能接收多種消息。(3)消息發(fā)送:指出在這個服務(wù)執(zhí)行時,需要請求哪些別的對象服務(wù)。內(nèi)容包括接收消息的對象類名以及執(zhí)行這個消息的服務(wù)名。3/11/202447軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.4定義服務(wù)7.服務(wù)的詳細說明(4)約束條件:如果該服務(wù)的執(zhí)行有前置條件、后置條件以及執(zhí)行時間的要求等其他需要說明的事項,則在這里加以說明。(5)服務(wù)流程圖:對于功能比較復(fù)雜的服務(wù),要給出一個服務(wù)流程圖,表明該服務(wù)是怎樣執(zhí)行的。3/11/202448軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.5對象間通信1.識別結(jié)構(gòu)結(jié)構(gòu)的意義和作用 一般/特殊結(jié)構(gòu)和整體/部分結(jié)構(gòu)能使分析人員和領(lǐng)域?qū)<业淖⒁饬性诰哂卸鄠€類和對象的復(fù)雜問題上。而且,使用結(jié)構(gòu)能使分析人員考慮到問題的邊緣,并揭示那些尚未發(fā)現(xiàn)的類和對象。除此以外,一般/特殊結(jié)構(gòu)具有繼承性,一般類和對象的屬性和方法一旦被識別,即可在特殊類和對象中使用。3/11/202449軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.5對象間通信1.識別結(jié)構(gòu)(2)如何定義一般/特殊結(jié)構(gòu)①表示法②策略:將每個類看成是一般類,按不同的分類方式來進行特殊分類。③層次與網(wǎng)絡(luò):每個一般/特殊結(jié)構(gòu)均形成層次或網(wǎng)絡(luò)。3/11/202450軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.5對象間通信1.識別結(jié)構(gòu)(3)如何定義整體/部分結(jié)構(gòu)①表示法 在頂部是一個整體對象(用類&對象符號表示的對象),下部是部分對象(用類&對象符號表示的對象),它們之間用線(結(jié)構(gòu)線)連接。②策略 策略由兩個部分組成,一部分是確定什么,另一部分是考慮什么。3/11/202451軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.5對象間通信1.識別結(jié)構(gòu)(4)多重結(jié)構(gòu) 多重結(jié)構(gòu)包括一般/特殊結(jié)構(gòu)、整體/部分結(jié)構(gòu)或兩者的各種組合結(jié)構(gòu)。多重結(jié)構(gòu)通常是自底向上的,但有時也可以用實例連接來依次映射。3/11/202452軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.5對象間通信2.識別主題在面向?qū)ο蠓治鲋校黝}是一種指導(dǎo)讀者或用戶研究大型復(fù)雜模型的機制。在初步面向?qū)ο蠓治龅幕A(chǔ)上,主題有助于分解大型項目以便建立工作小組。主題所提供的機制可控制一個用戶必須同時考慮的模型數(shù)目。同時它還可以給出面向?qū)ο蠓治瞿P偷目傮w概貌。3/11/202453軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.5對象間通信3.實例連接實例連接又稱為鏈,用于表達對象之間的靜態(tài)聯(lián)系。所謂靜態(tài)聯(lián)系是指最終可通過對象屬性來表示的一個對象對另一個對象的依賴關(guān)系實例連接是對象實例之間的一種二元關(guān)系,在實現(xiàn)之后的關(guān)系中它將落實到每一對具有這種關(guān)系的對象實例之間3/11/202454軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.5對象間通信3.實例連接(1)表示法在具有實例連接關(guān)系的類之間畫一條連接線把它們連接起來,連接線的旁邊給出表明其意義的連接名(無誤解時可以缺?。谶B接線的兩端用數(shù)字標明其多重性。(2)實現(xiàn)方式:實例連接一般可用對象指針(也可用對象標識)來實現(xiàn)。3/11/202455軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.2面向?qū)ο蟮姆治?/p>
6.2.5對象間通信3.實例連接(3)實例連接與整體/部分結(jié)構(gòu)的異同:實例連接與整體/部分結(jié)構(gòu)有某些相似之處,在概念上它們都是對象實例間的一種靜態(tài)關(guān)系,并且都是通過對象的屬性來體現(xiàn)的。但是,整體/部分結(jié)構(gòu)中的對象在現(xiàn)實世界中含有明顯的“has-a”語義,實例連接中的對象之間則沒有。3/11/202456軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.3面向?qū)ο笤O(shè)計
6.3.1面向?qū)ο笤O(shè)計的基本概念
6.3.2面向?qū)ο笤O(shè)計的方法3/11/202457軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.3面向?qū)ο笤O(shè)計
6.3.1面向?qū)ο笤O(shè)計的基本概念1.面向?qū)ο笤O(shè)計的框架面向?qū)ο笤O(shè)計的模型由5層組成,在設(shè)計期間主要擴充4個組成部分:人機交互部分、問題域、任務(wù)管理和數(shù)據(jù)管理3/11/202458軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.3面向?qū)ο笤O(shè)計
6.3.1面向?qū)ο笤O(shè)計的基本概念2.對象客觀世界是由各種對象組成的,任何事物都是對象,復(fù)雜的對象可由相對簡單的對象以某種方式組成。傳統(tǒng)意義上的數(shù)據(jù)單元和處理單元可被統(tǒng)一定義成對象。3/11/202459軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.3面向?qū)ο笤O(shè)計
6.3.2面向?qū)ο笤O(shè)計的方法1.面向?qū)ο笤O(shè)計的準則●模塊化●抽象●信息隱藏●弱耦合●強內(nèi)聚●可擴充性3/11/202460軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.3面向?qū)ο笤O(shè)計
6.3.2面向?qū)ο笤O(shè)計的方法2.面向?qū)ο蟮幕驹O(shè)計方法(1)面向?qū)ο笤O(shè)計范式與過程設(shè)計范式設(shè)計范式是用其分解過程的觀點來刻劃的。過程范式采用面向任務(wù)的觀點。導(dǎo)致了從分析階段的問題域到設(shè)計階段的分解域的不一致。面向?qū)ο蟮脑O(shè)計范式采用建模的觀點。分析階段開發(fā)的信息就成為設(shè)計階段的一個主要部分。3/11/202461軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.3面向?qū)ο笤O(shè)計
6.3.2面向?qū)ο笤O(shè)計的方法2.面向?qū)ο蟮幕驹O(shè)計方法(2)兩種范式的比較過程范式通過考慮必須執(zhí)行的組任務(wù)來開發(fā)系統(tǒng)??蓪⑵涔δ芊纸獬梢唤M任務(wù)。這種層次結(jié)構(gòu)同時說明了逐步求精的過程。面向?qū)ο蠓妒酵ㄟ^識別問題的實體來開發(fā)系統(tǒng)。這些實體的抽象將成為系統(tǒng)的基本成分類,類的規(guī)格說明用來補充傳統(tǒng)的需求說明的信息。3/11/202462軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計
6.4.1系統(tǒng)設(shè)計
6.4.2實時執(zhí)行者
6.4.3數(shù)據(jù)采集系統(tǒng)3/11/202463軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計
6.4.1系統(tǒng)設(shè)計系統(tǒng)設(shè)計要決定系統(tǒng)功能的軟件和用硬件的分配問題。將系統(tǒng)處理瓶頸找出來用硬件來實現(xiàn),用軟件來提供系統(tǒng)適應(yīng)性方面的要求。體系結(jié)構(gòu)設(shè)計將系統(tǒng)分解成一些獨立的組件,這些組件既可由硬件實現(xiàn)也可由軟件實現(xiàn)。這樣設(shè)計的系統(tǒng)可維護性強。3/11/202464軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計
6.4.1系統(tǒng)設(shè)計實時系統(tǒng)設(shè)計過程可分為如下幾個階段:1.識別系統(tǒng)必須處理的一些激勵和相關(guān)的響應(yīng)。2.對每個激勵和相應(yīng)的響應(yīng)給出時間限制,既要考慮對激勵的時間限制,也要考慮響應(yīng)的時間限制。3.將激勵和響應(yīng)的處理集成到一些并發(fā)過程中,將進程與激勵類和響應(yīng)類相連3/11/202465軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計
6.4.1系統(tǒng)設(shè)計實時系統(tǒng)設(shè)計過程可分為如下幾個階段:4.對每個激勵和響應(yīng)設(shè)計算法,為系統(tǒng)的處理量和處理所需的時間提供指示。5.設(shè)計一個調(diào)度系統(tǒng),以確保進程都能按時啟動,并在給定時間內(nèi)完成。6.將系統(tǒng)各個部分集成在一個實時執(zhí)行者的控制之下。3/11/202466軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計
6.4.1系統(tǒng)設(shè)計1.實時系統(tǒng)建模實時系統(tǒng)必須響應(yīng)在不規(guī)則時間間隔內(nèi)發(fā)生的事件。這些事件(或激勵)通常引起系統(tǒng)狀態(tài)的變化。2.實時程序設(shè)計“硬”實時系統(tǒng)仍可用匯編語言來實現(xiàn),以便系統(tǒng)能滿足高速的時間要求。系統(tǒng)級語言,例如C語言,也能生成高效率的代碼,所以也可以使用。3/11/202467軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計
6.4.2實時執(zhí)行者 實時執(zhí)行者類似于通用計算機上的操作系統(tǒng),實時執(zhí)行者管理進程和資源分配。它啟動和停止適當?shù)倪M程以便處理激勵,同時分配存儲器和處理器資源。但不包括更為復(fù)雜的操作系統(tǒng)服務(wù),例如文件管理等。3/11/202468軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計
6.4.2實時執(zhí)行者實時執(zhí)行者包括以下部分:1.實時時鐘:提供信息定期地調(diào)度進程。2.中斷處理器:處理周期性的服務(wù)請求。3.調(diào)度器:負責檢查哪些進程可以執(zhí)行,并選擇其中一個執(zhí)行。4.資源管理者:資源管理者對被執(zhí)行的進程分配適當?shù)膬?nèi)存和處理機資源。5.分配器:負責啟動進程。3/11/202469軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.4實時軟件設(shè)計
6.4.3數(shù)據(jù)采集系統(tǒng)數(shù)據(jù)采集系統(tǒng)也是一種實時系統(tǒng),這種系統(tǒng)從傳感器收集數(shù)據(jù),以便后續(xù)的處理和分析。數(shù)據(jù)采集進程和數(shù)據(jù)處理進程的運行速度和處理周期可能會不一致。為了解決速度上的不一致,絕大多數(shù)數(shù)據(jù)采集系統(tǒng)的緩沖器使用循環(huán)式或環(huán)形緩沖器。3/11/202470軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計
6.5.1基于組件的開發(fā)
6.5.2應(yīng)用系列
6.5.3設(shè)計模式3/11/202471軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計在軟件開發(fā)中,軟件是一種可重復(fù)使用的資源,可利用復(fù)用來達到降低軟件產(chǎn)品及其維護的成本、加快系統(tǒng)交付速度和提高軟件質(zhì)量等的一系列要求。為了實現(xiàn)軟件復(fù)用,在軟件設(shè)計和需求工程中加以考慮。3/11/202472軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計1.軟件復(fù)用類型面向?qū)ο蟮能浖?fù)用主要分為:(1)應(yīng)用系統(tǒng)復(fù)用:應(yīng)用系統(tǒng)復(fù)用是指整個系統(tǒng)可以不修改地融合到其他系統(tǒng)中,又稱為產(chǎn)品復(fù)用,或是通過開發(fā)應(yīng)用系列來適應(yīng)不同的平臺或者是面向特殊的客戶。(2)組件復(fù)用:應(yīng)用系統(tǒng)的組件規(guī)模從子系統(tǒng)到單個對象都可以復(fù)用。(3)功能復(fù)用:實現(xiàn)一個單一功能的軟件組件可以重復(fù)使用,例如數(shù)學(xué)函數(shù)等。3/11/202473軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計2.軟件復(fù)用的意義增加的可靠性減少了維護代價降低的過程風險專家的有效使用與標準的兼容減少培訓(xùn)開銷加快的開發(fā)速度3/11/202474軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計3.復(fù)用具備的條件(1)要對所有可復(fù)用組件做存檔工作并編制所有組件的目錄。(2)目錄中的所有組件都應(yīng)該得到認證,確保它們能達到某個質(zhì)量標準,以保證復(fù)用。(3)組件要有相應(yīng)的文檔幫助復(fù)用者了解它們并據(jù)此調(diào)整以適用。(4)組件要有標準接口、組件獨立于編程語言、組件提供版本兼容。(5)有標準的軟件體系結(jié)構(gòu)。3/11/202475軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計4.基于生成器的復(fù)用 系統(tǒng)的復(fù)用需要有一個系統(tǒng)的復(fù)用計劃支持。與面向組件復(fù)用觀點相對的是生成器觀點。在這種復(fù)用方法中,一種用面向領(lǐng)域的語言寫成的程序生成器可以捕獲可復(fù)用的知識。應(yīng)用描述以一種抽象方式定義哪些可復(fù)用的組件要用到,如何組合這些組件及其對它們的參數(shù)化。3/11/202476軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計
6.5.1基于組件的開發(fā)1.可復(fù)用組件特性可復(fù)用組件的具有下述兩個關(guān)鍵特性:(1)組件是一個獨立的可運行實體,組件不與其他組件一起編譯。(2)組件發(fā)布它們的接口,所有的交互都是通過接口完成的。組件接口被表達成參數(shù)化操作,而它的內(nèi)部狀態(tài)隱蔽。3/11/202477軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計
6.5.1基于組件的開發(fā)2.組件接口 組件具有下述兩個接口:(1)提供接口:定義由這個組件提供的服務(wù)。(2)需要接口:定義使用此組件的系統(tǒng)應(yīng)該提供哪些服務(wù)。如果不能提供這些服務(wù),則該組件將不可用。3/11/202478軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計
6.5.1基于組件的開發(fā)3.組件層次組件可以處在如下5個不同的層次上:(1)功能的抽象:組件實現(xiàn)單一的功能。(2)不規(guī)則的組合:組件是一組松散關(guān)聯(lián)的實體的集合。(3)數(shù)據(jù)抽象:組件表現(xiàn)為數(shù)據(jù)抽象或面向?qū)ο笳Z言的類。(4)聚集抽象:組件是一群能在一起工作的相關(guān)的類,又稱之為框架。(5)系統(tǒng)抽象:組件是一個完整的自包含系統(tǒng)。3/11/202479軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計
6.5.1基于組件的開發(fā)4.應(yīng)用框架(1)系統(tǒng)基礎(chǔ)設(shè)施框架:支持系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),基礎(chǔ)設(shè)施包括通信、用戶界面和編譯器。(2)中間件集成框架:由一組支持組件通信和信息交換的標準和相關(guān)對象類構(gòu)成。(3)企業(yè)應(yīng)用框架:關(guān)心的是專門的應(yīng)用領(lǐng)域,嵌入了應(yīng)用領(lǐng)域知識并支持對最終用戶應(yīng)用的開發(fā),與應(yīng)用系列相關(guān)聯(lián),應(yīng)用系列通常更抽象,因而允許創(chuàng)建的應(yīng)用范圍也更寬。3/11/202480軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計
6.5.1基于組件的開發(fā)5.商業(yè)產(chǎn)品的復(fù)用商業(yè)產(chǎn)品(COTS:CommerCid-Off-The-Shelf)是指由第三方提供的任何組件,通常是指系統(tǒng)軟件產(chǎn)品。
3/11/202481軟件工程導(dǎo)論之面向?qū)ο笤O(shè)計6.5復(fù)用設(shè)計
6.5.1基于組件的開發(fā)6.面向復(fù)用的組件開發(fā)組件開發(fā)過程就是要在現(xiàn)有組件的基礎(chǔ)上構(gòu)造可復(fù)用的組件??蓮?fù)用性的組件特征如下:(1)組件應(yīng)反
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人沖印合同標準文本
- 住戶加裝電梯合同標準文本
- 2025海南天景工貿(mào)有限公司與南京大地建設(shè)(集團)股份有限公司海南公司建設(shè)工程施工合同工程款糾紛案
- 2025濟南市房屋租賃合同范本(合同樣本)
- 個人窗戶安裝合同標準文本
- 供水轉(zhuǎn)讓合同標準文本
- 公司簽用人合同標準文本
- 光伏合同標準文本標準文本
- 2025建筑工程施工專業(yè)分包合同示范文本GF
- 2025辦公用品簡易購銷合同
- 果蔬加工工藝學(xué)-第9章 果醋釀制
- 英語語言與文化智慧樹知到課后章節(jié)答案2023年下華僑大學(xué)
- 《住宅建筑電氣設(shè)計規(guī)范》
- 2024年中考化學(xué)復(fù)習(xí)教學(xué)建議-把握中考方向、共研備考策略課件
- 居民死亡醫(yī)學(xué)證明推斷書
- 團體心理輔導(dǎo)課件-團體輔導(dǎo)的理論和技術(shù)
- 2022嶺南版美術(shù)中考試題及答案
- 通信原理第13章-同步原理全章課件
- 北京市室內(nèi)裝修合同范本(七篇)
- 2023年高中音樂課件春游(合唱)
- 通信原理 (完整)
評論
0/150
提交評論