軟件工程講義se5-面向?qū)ο蠓椒╛第1頁
軟件工程講義se5-面向?qū)ο蠓椒╛第2頁
軟件工程講義se5-面向?qū)ο蠓椒╛第3頁
軟件工程講義se5-面向?qū)ο蠓椒╛第4頁
軟件工程講義se5-面向?qū)ο蠓椒╛第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余133頁可下載查看

下載本文檔

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

文檔簡介

主要內(nèi)面向?qū)ο筌浖せ靖跑浖O(shè)計(jì)原面向?qū)ο蠓治雠c設(shè)面向?qū)ο鬁y2018-9- 1面向?qū)ο筌浖っ嫦驅(qū)ο筌浖こ獭饕獌?nèi)面向?qū)ο蟮陌l(fā)展過2018-9- 軟件的變

程序設(shè)計(jì)語組件規(guī)范操作系統(tǒng)開發(fā)工具 Studio,Rational數(shù)據(jù)庫:Oracle,IBDDB2,SQL辦公軟件 2018-9- 面向?qū)ο蟀l(fā)展過OO始于1966年,KristenNygaard和Ole-Johan開發(fā)了Simula語言,提供比子程序更高的抽象和封同時(shí)期,AlanKay開始圖形化和仿真研究,1972PARC發(fā)布Smalltalk的第一個(gè)版本,OO術(shù)語正式確alltal是llal版本的總結(jié),Widowicomoe式菜單環(huán)境。malltal語言還影響了Objec(1)、C(1)、(1)、Eil(1)、Flavors(1986)

Kristen Ole-JohanGrady1980年GradyBooch首先提出面向?qū)ο笤O(shè)計(jì)(OOD)的概念。然后其他緊隨其后,面向?qū)ο蠓治龅募夹g(shù)開始公 1990年代,面向?qū)ο蟮姆治觥y試、度量和管理等研究都得到長足發(fā)展目前面向?qū)ο笏枷牒?018-9- 例:面向?qū)ο?018-9-

JavaEE(J2EE) OO方法興起的原傳統(tǒng)程序設(shè)計(jì)方法的面向?qū)ο蚍椒ǖ姆种邢到y(tǒng)的實(shí)體上,即面向?qū)ο蠓椒ㄩ_發(fā)的軟件系統(tǒng)易 對(duì)象的封裝性很好地2018-9- OO軟件演化的多種途9面向?qū)ο蠓?/p>

Peter EdwardPeterCoad和EdwardYourdonKeyCharacteristicsofanOOcommonmethodsof3.5.7.

4.6.message8.2018-9- 2面向?qū)ο蟮幕靖艑?duì)象與方法和消2018-9- ::①

Alan②程序是一大堆對(duì)象的集合,他們通過消息傳遞,③每個(gè)對(duì)象都分配有自己的 ④⑤2018-9- 對(duì)象客觀世界是由許多具體的事物或、抽象的概念、規(guī)則等組成的。因此,任何感或要加以研究的事、解決問題的。對(duì)象是指一組屬性以及這組屬性上的操作的封裝。屬性(attribute)通常是一些數(shù)據(jù),有時(shí)它也可以是另一個(gè)2018-9- 2018-9- 2018-9- 對(duì)象必須參與一2018-9- 2018-9- 2018-9- 對(duì)象類(Object類名(class外部接口(external內(nèi)部表示(internal接口的內(nèi)部實(shí)現(xiàn)2018-9- 類說明(Class公共成員(publicmember)變公共成員函

抽 實(shí)構(gòu)操作:調(diào)工資評(píng)操作:調(diào)工資評(píng)受

對(duì)象行為:調(diào)工資評(píng)受行為:調(diào)工資評(píng)受方法名(參數(shù) 操方法:調(diào)工資{計(jì)方法:調(diào)工資{計(jì) 評(píng)2018-9- 類實(shí)現(xiàn)(Class(初始輸入?yún)?shù)2018-9- (ClasshierarchyandClass人人2018-9- 。。2018-9- 類實(shí)例及實(shí)例變類實(shí)例(Class 的會(huì)員2018-9- aabddc c2018-9- WhereDoWe

2018-9-

Fundamentalion-data,procedure,refinement-elaborationofdetailfor modularity-compartmentalizationofdataandarchitecture-overallstructureoftheStructuralExtra-structuralStylesandprocedure-thealgorithmsthatachievehiding-controlled2018-9- 2018-9-

modelnumberswingopeningimplementedasadata detailsofimplementedwitha"knowledge"ofobjectthatisassociatedwith2018-9- Stepwise2018-9-

walktodoor;reachforknob;opendoor;walkthrough;closedoor.

repeatuntildooropensturnknobclockwise;ifknobdoesn'tturn,takekeyfindcorrectinsertinlock;pull/pushmoveoutofend 什么是好的設(shè)PeterCode 2018-9- 面向?qū)ο笤O(shè)計(jì)

2018-9- 面向?qū)ο蟮脑O(shè)接 合成復(fù)用原則(CRP):盡量使用合成/聚合 單一職責(zé)原則(SRP):一個(gè)類有且只有一個(gè)改變2018-9- 開閉原變化。如果我們希望開發(fā)出的系統(tǒng)不會(huì)在第一版BertrandMeyer(1988):軟件組成實(shí)體(類、模2018-9- 開閉原則分在設(shè)計(jì)一個(gè)模塊的時(shí)候,應(yīng)當(dāng)使這個(gè)模塊可以在不被(EVP,PrincipleofEncapsulationofVariation)來描述,這一開閉原則總結(jié):面對(duì)需求,對(duì)程序的改動(dòng)是通過增加2018-9- 開閉原則實(shí)客戶加法圖1:客戶端的一個(gè)方客戶加法用加法類。如果想添加一個(gè)減減法客戶運(yùn)算類number doubnumb減法客戶運(yùn)算類number doubnumber doub+GetResula doub圖2:重構(gòu)圖1,添加一個(gè)運(yùn)算加法+GetResult加法+GetResult doub乘法+GetResult doub+GetResult d+GetResult doub圖 類2018-9- (續(xù)2018-9- 替換原類類類 它同樣可以從BertrandMeyer的DbC(DesignbyContract)的概類類類2018-9- 2018-9- 替換原則分總結(jié):子類型必須能夠替換掉它們的父2018-9- 替換原則實(shí)+main():void*+setCipherA():+setCipherA():void+setCipherB():void+encrypt():string-cipherA:CipherA-cipherB:CipherBDataOperator*

CipherCipher+encrypt()CipherCipher

實(shí)現(xiàn)不同加密方法,在DataOperator中

可以選擇其中的一個(gè)實(shí)現(xiàn)加密操**+setCipherA():void+encrypt():string+encrypt():string-cipherA:CipherADataOperatorCipher+main():**+setCipherA():void+encrypt():string+encrypt():string-cipherA:CipherADataOperatorCipher+main():void+encrypt():string改客戶類和DataOperator的源代碼+encrypt():stringCipher+encrypt():stringCipher2018-9-

接 原2018-9- 接 原則分可以在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí)采用定務(wù)的方式,即為不同的總結(jié):類應(yīng)該完全依賴相應(yīng)的專門的接2018-9- 接 原則實(shí)圖1<<interface>>BadExample+first()<<interface>>BadExample+first():+fast():+next():-indexCursor:Index-searcher:Search+previous():+getExcept():string +getFullRecord():string+reIndexAll():+updateIndex():+search():+getResultset():-index-indexCursor:Index-searcher:Search*<<interface>>+reIndexAll():+reIndexAll():+updateIndex():RdbIndexerFileIndexer+reIndexAll()FileIndexer+reIndexAll():void+updateIndex():void+reindexAll():+reindexAll():void+updateIndex():void2018-9-

*+search()+search():+getResultset():<<interface>>Searcher1<<interface>>1<<interface>>Resultset+first():+fast():+next():+previous():+getExcept():string+getFullRecord():string

合成復(fù)用原2018-9- 合成復(fù)用原則分 . (“) 組合/可以在運(yùn)行時(shí)動(dòng)態(tài)進(jìn)行。(“黑箱”復(fù)用2018-9- (續(xù) 總結(jié):2018-9- 合成復(fù)用原則實(shí)2018-9- 法最少知識(shí)原只與你直接的朋友們通不要跟“陌生人”說當(dāng)前對(duì)象本身以參量形式傳入到當(dāng)前對(duì)象方法中的對(duì)當(dāng)前對(duì)象的實(shí)例變量直 的對(duì)當(dāng)前對(duì)象的實(shí)例變量如果是一 ,那 中的元素都是朋當(dāng)前對(duì)象所創(chuàng)建的對(duì)2018-9- 法則分個(gè)模塊修改時(shí),就會(huì)盡量少的影響其他的模塊,擴(kuò)展會(huì)相對(duì)容易,這是對(duì)狹義的oD廣義的LoD:指對(duì)對(duì)象之間的信息流量、流向以及信息的影響的控制,隱藏的重要性也就越明顯。2018-9- (續(xù)迪①在類的劃分上,應(yīng)當(dāng)盡量創(chuàng)建松耦合的類,類之間的耦合②和成員函數(shù)的權(quán)限③④在對(duì)其他類的上,一個(gè)對(duì)象對(duì)其他對(duì)象的應(yīng)當(dāng)降用。2018-9- 法則實(shí)某系統(tǒng)界面類(如Form1Form2等類)與數(shù) (如DAO1、DAO2等類)間的調(diào)用關(guān)系較為復(fù)雜圖圖1為什么到圖2是類能更加單一,相當(dāng)2018-9- 圖

單一職責(zé)原2018-9- 單一職責(zé)原則分2018-9- 單一職責(zé)原則實(shí)2018-9-

圖圖

依賴倒置原 總結(jié):模塊不應(yīng)該依賴底層模塊,兩個(gè)都應(yīng)2018-9- 依賴倒置原則分 2018-9- 類之間的耦合關(guān)2018-9- 依賴倒轉(zhuǎn)原則實(shí)多種格式,如可以轉(zhuǎn)換來自數(shù)據(jù)圖 的數(shù)據(jù)(DatabaseSource)、也可圖2018-9-大圖2018-9-大文件格式時(shí),客戶類MainClass信息學(xué) 4面向?qū)ο蠓置嫦驅(qū)ο蠓治觥饕獌?nèi)領(lǐng)域分OOA的一般步2018-9- OOA的目標(biāo)和任完成對(duì)所求解問題的分析,定待建系統(tǒng)要建立系統(tǒng)的模

在客戶和軟件工程師之間溝通基本的用戶需 標(biāo)識(shí)類(包括定義其屬性和操作 刻畫類的層次結(jié) 表示類(對(duì)象)之間的關(guān) 為對(duì)象行為建 遞進(jìn)地重復(fù)任務(wù)①至任務(wù)⑤,直至完成建

2018-9- 面向?qū)ο蠓謧鹘y(tǒng)方法和面向?qū)ο蠓矫嫦驅(qū)ο蠓治龈?018-9- 傳統(tǒng)方法與面向?qū)ο蠓叫枨蠓治霎a(chǎn)生描述系統(tǒng)功能和問題域基本特征合文檔傳統(tǒng)文檔:面向功能,把系統(tǒng)看成一組功能,圍輸入-加工-輸出的需求視角OOA文檔:把問題當(dāng)作一組相互作用的實(shí)體,并定實(shí)體間關(guān)2018-9-

TwoClassicSystems

模型RestrainingRestrainingfactorstoconstructa2018-9- 大SystemsModelwith6Definetheprocessesthatservetheneedsoftheviewunderbehaviorisbased.Explicitlydefinebothexogenousandendogenousinputtothe--Mortamarrin,領(lǐng)域分領(lǐng)域分析與復(fù)領(lǐng)域分析過2018-9- 什么是領(lǐng)領(lǐng)域( )個(gè)域是一相關(guān)系相關(guān)的面是共設(shè)計(jì)公共共息系領(lǐng)內(nèi)不系同統(tǒng)的由共享領(lǐng)知識(shí)因此有相似設(shè)計(jì)體系結(jié)、服。應(yīng)用工程則是根據(jù)領(lǐng)域工程中所生產(chǎn)的復(fù)用軟件構(gòu)件的應(yīng)用系統(tǒng)開發(fā)的過程和活動(dòng)2018-9- 什么是領(lǐng)域分相似應(yīng)用系統(tǒng)建 資產(chǎn)的過2018-9- 領(lǐng)域分析與復(fù)專家建目前/未來需

復(fù)用標(biāo)功能模領(lǐng)域語

定義領(lǐng)域范領(lǐng)域中項(xiàng)目的分收集有代表性的領(lǐng)域分析過2018-9- OOA的一般步②③建造對(duì)象-⑤建造對(duì)象-⑥2018-9- 獲取客戶對(duì)系統(tǒng)的需用例(user場景

行為功能行為

用用系統(tǒng)系統(tǒng)邊2018-9- 標(biāo)識(shí)類和對(duì)類名類的類型:(如:設(shè) 2018-9- 識(shí)別類對(duì)外部實(shí)角構(gòu)造發(fā)生組織單

場如:、裝載碼事潛在對(duì)象成為最終的對(duì)象保留的信需要的服多個(gè)屬公共屬公共操必需的需2018-9- 責(zé)任與協(xié)作責(zé)任為控 的發(fā)生 對(duì)

協(xié)作者2018-9- 定義類的結(jié)構(gòu)和層一般-特殊(generalization-specialization):“isa”的關(guān) 類結(jié)構(gòu)和層次圖(Coad&Yourdon)一般與特殊結(jié)2018-9-

整體與部分關(guān) 建造對(duì)象-關(guān)系模 ①用CRC畫協(xié)作者對(duì)象網(wǎng)②復(fù)審CRC,標(biāo)出箭③確定關(guān)系基數(shù)(1對(duì)1,1對(duì)多,多對(duì)1,多對(duì)多 建立對(duì)象-行為模 創(chuàng) 軌每個(gè)對(duì)象的狀態(tài)變化(狀態(tài)圖系統(tǒng)中各對(duì)象的狀態(tài)關(guān)系(軌跡、時(shí)序圖)2018-9- 對(duì)象行為模型(狀態(tài)遷移2018-9- 對(duì)象行為模型(軌跡圖2018-9- 對(duì)象行為模型 流圖2018-9- 5面向?qū)ο笤O(shè)面向?qū)ο蟮脑O(shè)計(jì)——主要內(nèi)傳統(tǒng)與OOD方法比OOD模型的體系成OOD設(shè)計(jì)方OOD步2018-9- 傳統(tǒng)與OOD方法比傳統(tǒng)方OOD2018-9- 系統(tǒng)設(shè)計(jì)的十模塊層次的表數(shù)據(jù)定義的規(guī)過程邏輯的規(guī)端點(diǎn)間處理序列的指對(duì)象狀態(tài)和轉(zhuǎn)變的表類及層次的定類的操詳細(xì)的操作定消息連接的規(guī)獨(dú)有的服務(wù)標(biāo)

2018-9- OOD模型的體系成2018-9-

面向?qū)ο蟮脑O(shè)計(jì)面向?qū)ο笤O(shè)計(jì)(Object-orientedDesign,OOD)是將在OO在OOD2018-9- OO設(shè)計(jì)模型的體系成 2018-9- OO設(shè)計(jì)方

2018-9- 設(shè)計(jì)中的問分解性(方法能提供幫助設(shè)計(jì)者分解大型問題連貫性(使修改后對(duì)系統(tǒng)影響小保護(hù)性(出現(xiàn)問題時(shí)對(duì)系統(tǒng)的影響小2018-9- 5.4OOD的步將子系統(tǒng)分配到處理選擇實(shí)現(xiàn)數(shù)據(jù)管為系統(tǒng)設(shè)計(jì)合適的控制機(jī)復(fù)審并考慮權(quán)在過程級(jí)別設(shè)計(jì)每個(gè)操定義內(nèi)部為類屬性設(shè)計(jì)內(nèi)部數(shù)據(jù)結(jié)使用對(duì)象間的協(xié)作和對(duì)象-關(guān)系模型,設(shè)計(jì)消息模型復(fù)審設(shè)計(jì)模型,并在需要時(shí)迭代2018-9- 系統(tǒng)設(shè)1子系統(tǒng)應(yīng)該具有定義它部分通信除了少數(shù)的通信類的其它類協(xié)作子系統(tǒng)的數(shù)量不宜太多可以在子系統(tǒng)內(nèi)部再12018-9- (續(xù)確定任務(wù)的特定義協(xié)調(diào)者任務(wù)和關(guān)聯(lián)的對(duì)集成協(xié)調(diào)者任務(wù)和其它任系統(tǒng)中各 對(duì)象 方式,如內(nèi)存數(shù)據(jù)結(jié)構(gòu)、文件、數(shù)據(jù)設(shè)計(jì)相應(yīng)的服務(wù),即為 的對(duì)增加所需的屬性和操作

2018-9- (續(xù)。。子系統(tǒng)之間可以通過建議C/端(peertopeer)2018-9- 對(duì)象設(shè)2018-9- 對(duì)象描述—協(xié)議描Message(motionsensor)read:RETURNSsensorID,sensorMessage(motionsensor)set:SENDSsensorID,sensor2018-9- 對(duì)象描述—實(shí)現(xiàn)描從消息蘊(yùn)涵的操作來;對(duì)象名字的定義和類;表明數(shù)據(jù)項(xiàng)和類型的每個(gè)操作的過程描述或指針類名私有數(shù)據(jù)結(jié)構(gòu):ID操作過程2018-9- 算法設(shè)算法設(shè)

設(shè)計(jì)模式2018-9-

6面向?qū)ο鬁y面向?qū)ο鬁y試—主要內(nèi)OO單元測OO集成測OO軟件的測試用2018-9-

OO概念對(duì)測試的又對(duì)OO軟件測試帶 影響2018-9-

OO軟件的單元測 2018-9-

OO軟件的集成測2018-9-

OO集成測試的兩種方基于線程的測試是指把響應(yīng)系統(tǒng)一個(gè)輸入或一 所需的一組類集成起來 試進(jìn)行回歸測試。首先,測試獨(dú)立類——幾乎不使用服務(wù)器類的那些類,把立類都測試接著,測試依賴類——地持續(xù) 試,直至把整個(gè)軟件系統(tǒng)測試完為止2018-9-

OO軟件的確認(rèn)測試與系統(tǒng)2018-9-

設(shè)計(jì)測試2018-9-

②③設(shè)計(jì)測試用例時(shí),不但要設(shè)計(jì)確認(rèn)類功能滿足的 2018-9-

類測試用例設(shè)①根據(jù)OOD分析結(jié)果,選定檢測的類,并仔細(xì)分出類的狀②③④構(gòu)造測試用例,確認(rèn)使用什么輸入來激發(fā)類的狀態(tài),使2018-9-

基于故障的測試用例設(shè)2018-9-

基于用例的測試用例設(shè)2018-9-

類間測試用例設(shè)2018-9-

多個(gè)類測2018-9-

從行為模型導(dǎo)出測試用2018-9-

OOA與OOD方法—主要內(nèi)Coad&Yourdon方Rumbaugh的OMT方Booch方OOSE方2018-9-

Coad&Yourdon方2018-9-

OOA的五個(gè)層次和五個(gè)活 ②③④⑤

①②③④⑤2018-9-

OOD模型及組

Coad&YourdonOOD模①②③④

①②③④2018-9-

2018-9-

2018-9-

2018-9-

2018-9-

OMT方。OMT(ObjectM

溫馨提示

  • 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論