




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
面向?qū)ο箝_(kāi)發(fā)培訓(xùn)參考講義一.軟件架構(gòu)的組織原則:軟件本質(zhì):我們的世界是模糊的、連續(xù)的、不精確的,但軟件是精確的、離散的、形式化的,這就注定軟件不能完全描述現(xiàn)實(shí)世界。所以我們要知道描述那些部分,忽略那些部分,這就是軟件的本質(zhì)問(wèn)題。VRAPS模型(構(gòu)想,節(jié)奏,預(yù)見(jiàn),協(xié)作,簡(jiǎn)化)構(gòu)架:為我們提供了整個(gè)系統(tǒng)的清晰的視角,對(duì)控制系統(tǒng)的開(kāi)發(fā)是必要的。軟件系統(tǒng)是一個(gè)單一的實(shí)體,但從不同視覺(jué)展示系統(tǒng)有助于更好的理解設(shè)計(jì),這些視角被解釋為系統(tǒng)的模型視圖,視圖合在一起構(gòu)成了構(gòu)架架構(gòu)描述:用況模型視圖,分析模型視圖,設(shè)計(jì)模型視圖實(shí)施模型視圖實(shí)現(xiàn)模型視圖測(cè)試模型視圖對(duì)描述構(gòu)架不起作用,他只是用來(lái)驗(yàn)證構(gòu)架基線二.面向?qū)ο蠓治鲈O(shè)計(jì)開(kāi)發(fā)面向?qū)ο蟮姆治鍪前凑崭拍睿▽?duì)象)對(duì)軟件問(wèn)題進(jìn)行分解,而不是像結(jié)構(gòu)化分析哪樣是按照功能對(duì)軟件問(wèn)題進(jìn)行分解的。系統(tǒng)分析:理解并詳細(xì)說(shuō)明信息系統(tǒng)應(yīng)該做什么的過(guò)程識(shí)別出問(wèn)題域中不同概念并用概念模型將其存檔系統(tǒng)設(shè)計(jì):詳細(xì)說(shuō)明信息系統(tǒng)的許多特性在物理上是怎樣實(shí)施的過(guò)程。面向?qū)ο蟮哪繕?biāo)是開(kāi)發(fā)能夠反映現(xiàn)實(shí)世界某個(gè)特定片段的軟件(或模型).對(duì)象:a?定義為某一事物,即是可以看到、摸到或感覺(jué)到的一種實(shí)體。在計(jì)算機(jī)面向?qū)ο蠹夹g(shù)中,對(duì)象是系統(tǒng)的基本成分,是具有特殊屬性(數(shù)據(jù))和行為方式(方法)的實(shí)體.它應(yīng)有唯一的名稱,有表示對(duì)象行為的一組公共與私有操作。=(ID,DS,MS,MI)ID:標(biāo)識(shí)或?qū)ο竺鸇S:對(duì)象的數(shù)據(jù)結(jié)構(gòu)MS:操作集MI:對(duì)外接口類:一個(gè)類描述了屬于該類型的所有對(duì)象的性質(zhì),包括外部特征和內(nèi)部實(shí)現(xiàn)。共享相似特性和行為的對(duì)象的集合。對(duì)象是某個(gè)類的一個(gè)元素。=(ID,INH,DD,OI,ITF)ID:標(biāo)識(shí)或類名INH:類繼承性描述DD:數(shù)據(jù)結(jié)構(gòu)描述OI:操作集合描述ITF:對(duì)外接口類的屬性:抽象:過(guò)濾掉對(duì)象的一部分特性和操作直到只剩下你所需的操作和屬性,繼承:對(duì)象繼承了所屬類的屬性和操作,類同樣也可以繼承其他類的屬性和操作。如何發(fā)現(xiàn)類之間的繼承關(guān)系?在初始模型中,在類列表中找出兩個(gè)或多個(gè)具有相同屬性和操作的類,其中一個(gè)類有可能就是其它類的父類,或者可為這些類新建一個(gè)父類。子類型有額外的重要的屬性,子類型有額外的重要的關(guān)聯(lián)子類型以不同于父類型或其它子類型的重要方式被操作,操縱,反應(yīng)或處理子類型描述的事物與超類型或其它子類型的行為方式不同多態(tài):不同的類中可以有相同名稱的操作且這個(gè)操作在每個(gè)類中都能以各自不同的方式執(zhí)行,因此必須清楚這些同名操作之間的重要區(qū)別。封裝:當(dāng)一個(gè)對(duì)象執(zhí)行自己的操作時(shí),它對(duì)外界隱藏操作的細(xì)節(jié),持久化框架:是一種可重用的,且通??杀粩U(kuò)展的類的集合,他可向持久化對(duì)象提供服務(wù)。如:存儲(chǔ)數(shù)據(jù)時(shí)將對(duì)象轉(zhuǎn)換成記錄,在取回?cái)?shù)據(jù)時(shí)需將記錄轉(zhuǎn)換成對(duì)象。消息傳遞:對(duì)象通過(guò)相互之間的消息傳遞協(xié)同工作關(guān)聯(lián):a在物理上或邏輯上是b的一部分a物理上或邏輯上依賴于ba被記錄在b中管理原則:1.需要知道型關(guān)聯(lián):需要將概念之間的關(guān)系信息記憶一段時(shí)間的關(guān)聯(lián)2.概念比關(guān)聯(lián)重要3.太多關(guān)聯(lián)使概念模型混亂4.避免關(guān)聯(lián)之間的信息冗余以及減少派生關(guān)聯(lián)聚集接口:是描述類的部分行為的一組操作,他也是一個(gè)類提供給另一個(gè)類的一組操作獲取需求的基本原則:1.深入淺出以流程為主線獲取需求的重點(diǎn):1.平均頻度:業(yè)務(wù)發(fā)生的頻繁程度(即單位時(shí)間內(nèi)發(fā)生的次數(shù))頻度越高,數(shù)據(jù)量就越大,對(duì)響應(yīng)時(shí)間、易操作性等要求越高,在數(shù)據(jù)存儲(chǔ)需充分考慮高峰期的頻度:只有掌握此數(shù)據(jù),在后面系統(tǒng)測(cè)試時(shí),需要模擬高峰期的業(yè)務(wù)頻度3.看單據(jù)::有那些數(shù)據(jù),每頁(yè)數(shù)據(jù)精度,計(jì)算生成方法,取值范圍限定單擊內(nèi)容是進(jìn)行數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的最基本依據(jù)取值范圍與計(jì)算方法是數(shù)據(jù)完整性檢測(cè)的依據(jù)4.生成單據(jù)或報(bào)表的時(shí)間(手工):花費(fèi)時(shí)間多,處理方法復(fù)雜的地方通常是最關(guān)鍵的地方,也是用戶驗(yàn)收關(guān)心的地方,通常也是用戶沒(méi)有足夠人力與時(shí)間處理才想到用計(jì)算機(jī)的地方5.單據(jù)或報(bào)表的來(lái)源:單據(jù)聯(lián)數(shù),每聯(lián)用途,送交單位,送交時(shí)間6.有那些特殊情況,在某個(gè)作業(yè)環(huán)節(jié)出錯(cuò)時(shí)通過(guò)何種途徑彌補(bǔ):分析員可采用窮舉的方法,假定每一個(gè)環(huán)節(jié)都出現(xiàn)失誤,逐環(huán)節(jié)詢問(wèn)用戶的處理方法,防止遺漏7.將來(lái)有何變化獲得類的過(guò)程:讓分析員使用客戶所采用的術(shù)語(yǔ)和用戶交流,可促使客戶說(shuō)出問(wèn)題的細(xì)節(jié)。在談話過(guò)程中應(yīng)不時(shí)停下來(lái)作總結(jié),測(cè)試一下你對(duì)問(wèn)題的理解,熟悉和使用領(lǐng)域術(shù)語(yǔ),并盡量使談話氣氛保持輕松愉快對(duì)不熟悉的領(lǐng)域術(shù)語(yǔ),務(wù)必讓對(duì)方解釋清除。不必?fù)?dān)心對(duì)方覺(jué)得你無(wú)知,談話的目的是獲得知識(shí),學(xué)習(xí)領(lǐng)域術(shù)語(yǔ)。需經(jīng)常從前面的回答中辨別新問(wèn)題,集中注意力聽(tīng)對(duì)方對(duì)每個(gè)問(wèn)題的解答,業(yè)務(wù)邏輯通常包含在對(duì)方對(duì)問(wèn)題的解答中遇到業(yè)務(wù)邏輯時(shí)要作記錄,還要整理和維護(hù)好這些記錄以后可能用到若覺(jué)得業(yè)務(wù)過(guò)程某些部分過(guò)于復(fù)雜,應(yīng)當(dāng)暫時(shí)將其擱置,日后單獨(dú)討論。每個(gè)業(yè)務(wù)過(guò)程復(fù)雜度不宜過(guò)高,以容易繪制成模型圖為宜。繪制出模型圖的清晰性要比模型的復(fù)雜性更重要。征求被訪者對(duì)活動(dòng)圖的反饋意見(jiàn),根據(jù)對(duì)方意見(jiàn)修改活動(dòng)圖分析類的基本構(gòu)造型:1.邊界類:用于建立系統(tǒng)與其參與者(用戶和外部系統(tǒng))之間交互的模型,:通常把用戶界面或通信接口變化隔離在一個(gè)或多個(gè)邊界類中2.實(shí)體類:用于長(zhǎng)效且持久的信息建模,實(shí)體類主要對(duì)諸如個(gè)體、實(shí)際對(duì)象或?qū)嶋H事物的某些現(xiàn)象或概念信息及相關(guān)行為建模。3.控制類:代表協(xié)調(diào)、排序、事務(wù)處理以及對(duì)其它對(duì)象的控制,經(jīng)常用于封裝與某個(gè)集體用況有關(guān)的控制,也可用于表示復(fù)雜的派生和演算識(shí)別概念策略:使用概念目錄列表找出概念:物理的或?qū)嵲诘膶?duì)象規(guī)格說(shuō)明,設(shè)計(jì)或事物的描述地點(diǎn),事務(wù),人的角色,組織,事件,規(guī)則,策略,手冊(cè),書(shū)籍根據(jù)名詞性短語(yǔ)找出概念:弱點(diǎn)在于自然語(yǔ)言的不準(zhǔn)確性,如:班組,工區(qū)概念、屬性區(qū)分:若概念在現(xiàn)實(shí)世界不僅僅是一些簡(jiǎn)單的數(shù)字或文字,那么最好將其作概念處理,而不是作為屬性處理.類潛在的兩組屬性:傳統(tǒng)的將之視為關(guān)系表中屬性的屬性:如:姓名,編號(hào)是客戶全視之為類屬性的屬性:如:線桿的瓷瓶一個(gè)類可以有多個(gè)與之關(guān)聯(lián)的屬性,具有大量數(shù)據(jù)的類是不良的設(shè)計(jì),比較好的設(shè)計(jì)是類具有50或更少的屬性識(shí)別職責(zé):知道型職責(zé):知道自己私有的封裝的數(shù)據(jù),知道自己相關(guān)聯(lián)的對(duì)象信息,知道自己派生出來(lái)或計(jì)算出來(lái)的事物做型職責(zé):自己完成某件任務(wù),發(fā)起其它對(duì)象執(zhí)行動(dòng)作,控制和協(xié)調(diào)其它對(duì)象內(nèi)的活動(dòng)。面向?qū)ο笤O(shè)計(jì)要點(diǎn):為實(shí)際工作設(shè)計(jì)理解要實(shí)現(xiàn)的東西需求的重要性在現(xiàn)有任務(wù)中應(yīng)用多個(gè)模型用例的重要性用力可大可小,但必須是對(duì)一個(gè)具體的用戶目標(biāo)實(shí)現(xiàn)的完整描述文檔的重要性證明軟件的設(shè)計(jì)在實(shí)踐中是可行的應(yīng)用已知的模式類的內(nèi)聚性:一個(gè)類應(yīng)有且僅有一個(gè)職責(zé),否則可能由于多個(gè)不同原因引起該類發(fā)生變化充分考慮軟件的可移植性:當(dāng)使用os的特性,或利用某db專用語(yǔ)言寫(xiě)了存儲(chǔ)過(guò)程,應(yīng)將這些特性的實(shí)現(xiàn)細(xì)節(jié)封裝在一個(gè)類中建立對(duì)象數(shù)據(jù)辭典:便于內(nèi)部重用和共享,應(yīng)建立電子化對(duì)象數(shù)據(jù)辭典,以便對(duì)象統(tǒng)一歸類管理12.對(duì)接口編程:是面向?qū)ο笤O(shè)計(jì)的基本原則之一。對(duì)于所有完成相同功能的組件,應(yīng)抽象出一個(gè)接口,他們都實(shí)現(xiàn)該接口。好的接口設(shè)計(jì)原則:隱藏實(shí)現(xiàn)細(xì)節(jié)只提供必要的功能不要對(duì)外部代碼施加影響保持接口風(fēng)格統(tǒng)一在同一層分配和釋放資源在較低層檢測(cè)錯(cuò)誤,在較高層處理錯(cuò)誤13.類的最高層是抽象類:在許多情況下,提供一個(gè)抽象類有利于做特性化擴(kuò)展,抽象類的層次越高,代碼就越有彈性,越容易適應(yīng)變化.優(yōu)先使用對(duì)象組合,而不是類繼承:有助于保持每個(gè)類被封裝,并且具有更多的靈活性增加參數(shù)的可讀性盡量減少對(duì)變量的直接訪問(wèn):對(duì)數(shù)據(jù)的封裝原則應(yīng)該規(guī)范化,不要把一個(gè)類的屬性暴露給其它類,而是應(yīng)通過(guò)訪問(wèn)方法去保護(hù)他們,這有利于避免波紋效應(yīng),若某個(gè)屬性的名字改變,只需修改它的訪問(wèn)方法,而不是修改所有相關(guān)代碼。面向?qū)ο蟮脑O(shè)計(jì)原則:單一職責(zé)原則:對(duì)于一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因,變化的軸線僅當(dāng)變化實(shí)際發(fā)生時(shí)才具有真正的意義,否則應(yīng)用它是不明智的b.開(kāi)發(fā)-封閉原則:對(duì)于擴(kuò)展是開(kāi)放的(我們可以改變模塊的功能)對(duì)于更改是封閉的(擴(kuò)展時(shí),無(wú)需改動(dòng)源碼或二進(jìn)制代碼)一般而言,無(wú)論模塊多么封閉,都會(huì)存在一些無(wú)法封閉的變化,沒(méi)有對(duì)于所有情況都貼切的模型設(shè)計(jì)人員必須對(duì)于他設(shè)計(jì)的模塊應(yīng)該對(duì)哪些變化封閉作出選擇,他們必須先猜測(cè)出最有可能發(fā)生的變化種類,然后構(gòu)造抽象類來(lái)隔離那些變化對(duì)于應(yīng)用程序中每個(gè)部分都進(jìn)行抽象不是一個(gè)好注意,正確的做法是,開(kāi)發(fā)人員應(yīng)該僅僅對(duì)程序中呈現(xiàn)出頻繁變化的那些部分作出抽象,拒絕不成熟的抽象和抽象本身一樣重要長(zhǎng)方形,正方形是非is—a的,ood中is—a關(guān)系是就行為方式而言的liskov替換原則:子類型必須能夠替換掉他們的基類型在重新聲明派生類中的例程時(shí),只能使用相等或者更弱的前置條件來(lái)替換原始的前置條件,只能用相等或者更強(qiáng)的后置條件來(lái)替換原始的后置條件.(例:傳入%或具體單位值獲得單位統(tǒng)計(jì),只傳單位)依賴倒置原則:高層模塊不應(yīng)該依賴于底層模塊,二者都應(yīng)該依賴于抽象抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象接口隔離原則:不應(yīng)該強(qiáng)迫客戶依賴于他們不用的方法包的設(shè)計(jì)原則:內(nèi)聚性原則重用發(fā)布等價(jià)原則不希望用戶發(fā)現(xiàn)包中包含的類中,一些是他需要的,另一些他卻完全不適
共同重用原則:一個(gè)包中的所有類應(yīng)該是共同重用的,如果重用了包中的一個(gè)類,那么就要重用包中的所有類共同封閉原則:包中的所有類對(duì)于同一類性質(zhì)的變化應(yīng)該是共同封閉的,一個(gè)變化若對(duì)一個(gè)包產(chǎn)生影響,則對(duì)該包中的所有類產(chǎn)生影響,而對(duì)于其它的包不造成任何影響耦合性原則:無(wú)環(huán)依賴原則:若依賴關(guān)系圖中存在環(huán),就很難確定包創(chuàng)建的順序解除環(huán):使用依賴倒置原則創(chuàng)建新包,將兩包依賴的類放置其中自頂向下設(shè)計(jì)穩(wěn)定依賴原則:朝著穩(wěn)定的方向進(jìn)行依賴軟件分層設(shè)計(jì):界面層,業(yè)務(wù)邏輯層,數(shù)據(jù)接口層,數(shù)據(jù)層優(yōu)點(diǎn):良好的透明和封裝,高內(nèi)聚,低耦合,易于擴(kuò)展,維護(hù)和重用,開(kāi)發(fā)人員易于分工,提高開(kāi)發(fā)效率缺點(diǎn):效率降低,開(kāi)發(fā)難度增大面向?qū)ο蟮臄?shù)據(jù)庫(kù)設(shè)計(jì):一般編程設(shè)計(jì)有兩種屬性主導(dǎo)型:從歸納數(shù)據(jù)庫(kù)應(yīng)用的屬性出發(fā),在歸并屬性集合(實(shí)體)時(shí),維持屬性間的函數(shù)依賴關(guān)系實(shí)體主導(dǎo)型:先從尋找對(duì)數(shù)據(jù)庫(kù)應(yīng)用有意義的實(shí)體出發(fā),然后定義屬性來(lái)完善實(shí)體一般認(rèn)為現(xiàn)實(shí)世界實(shí)體數(shù)量在屬性1/10以下時(shí),宜使用實(shí)體主導(dǎo)型設(shè)計(jì)方法面向?qū)ο蟮臄?shù)據(jù)庫(kù)設(shè)計(jì)從對(duì)象模型出發(fā),屬于實(shí)體主導(dǎo)型設(shè)計(jì)設(shè)計(jì)步驟:設(shè)計(jì)應(yīng)用系統(tǒng)結(jié)構(gòu)b.選擇便于應(yīng)用程序與dbms結(jié)合的dbms體系結(jié)構(gòu)根據(jù)應(yīng)用程序使用的環(huán)境平臺(tái),選擇適宜的dbms和開(kāi)發(fā)工具設(shè)計(jì)數(shù)據(jù)庫(kù),編寫(xiě)定義數(shù)據(jù)庫(kù)模式的sql程序編寫(xiě)用戶接口應(yīng)用程序,錄入數(shù)據(jù)注:此順序不是瀑布模型,每一步可以反饋應(yīng)用對(duì)象模型與rdbms模型的映射:a.RDBMS是以二維表為基本管理單元的,對(duì)象模型要由二維表及表間關(guān)系描述,對(duì)象模型向數(shù)據(jù)庫(kù)概念模型的映射就是向數(shù)據(jù)庫(kù)表的變換過(guò)程:一個(gè)對(duì)象類可以映射一個(gè)以上的庫(kù)表,當(dāng)類間有一對(duì)多的關(guān)系時(shí),一a.個(gè)類也可對(duì)應(yīng)多個(gè)類關(guān)系映射:一般映射為一個(gè)表單一繼承泛化關(guān)系可對(duì)超類、子類分別映射表,也可讓子類表?yè)碛懈割悓傩?,也可讓父類表?yè)碛凶宇惐韺傩詫?duì)庫(kù)表進(jìn)行冗余控制調(diào)整,使之滿足合理的關(guān)系范式三.敏捷軟件開(kāi)發(fā):參考,慎用,不是最合理的軟件方法個(gè)體和交互勝過(guò)過(guò)程和工具可以工作的軟件勝過(guò)面面俱到的文檔客戶合作勝過(guò)合同談判響應(yīng)變化勝過(guò)遵循計(jì)劃雖然右項(xiàng)也具有價(jià)值,但左項(xiàng)具有更大的價(jià)值martin文檔第一定律:直到迫切需要并且意義重大時(shí),才編制文檔敏捷軟件開(kāi)發(fā)原則:我們優(yōu)先要做的就是盡快的、持續(xù)的交付有價(jià)值的軟件使客戶滿意初期交付的系統(tǒng)中包含的功能越少,最終交付的系統(tǒng)的質(zhì)量就越高即使到了開(kāi)發(fā)后期,也歡迎改變需求,敏捷過(guò)程利用變化來(lái)為客戶創(chuàng)造競(jìng)爭(zhēng)優(yōu)勢(shì)經(jīng)常性的交付可以工作的軟件,交付的間隔可以從幾周到幾個(gè)月,交付的間隔越短越好在整個(gè)開(kāi)發(fā)期間,業(yè)務(wù)人員和開(kāi)發(fā)人員必須在一起工作圍繞被激勵(lì)起來(lái)的個(gè)人來(lái)創(chuàng)建項(xiàng)目,給他們提供所需要的環(huán)境和支持,并且信任他們能夠完成工作在團(tuán)隊(duì)內(nèi)部,最具有效果且富有效率的傳遞信息的方法,就是面對(duì)面的交談能工作的軟件是首要的進(jìn)度衡量標(biāo)準(zhǔn)敏捷軟件開(kāi)發(fā)過(guò)程提倡可持續(xù)的開(kāi)發(fā)速度,責(zé)任人、開(kāi)發(fā)者、用戶應(yīng)該能夠保持一個(gè)長(zhǎng)期的、恒定的開(kāi)發(fā)速度(10蓋女人不可能在一個(gè)月內(nèi)生出小孩)不斷的關(guān)注優(yōu)秀的技能和好的設(shè)計(jì)會(huì)增強(qiáng)敏捷能力簡(jiǎn)單:使未完成的工作最大化的藝術(shù),是根本的最好的構(gòu)架,需求和設(shè)計(jì)出自于自組織的團(tuán)隊(duì)每隔一段時(shí)間,團(tuán)隊(duì)會(huì)在如何才能有效地工作方面進(jìn)行反省,然后相應(yīng)地對(duì)自己地行為進(jìn)行調(diào)整注意事項(xiàng):客戶作為團(tuán)隊(duì)成員:當(dāng)確實(shí)無(wú)法和客戶工作在一起時(shí),建議尋找能夠在一起工作、愿意并能夠代替真正客戶地人結(jié)隊(duì)編程:所有地產(chǎn)品代碼都是由結(jié)隊(duì)的程序員使用一臺(tái)電腦共同完成的。結(jié)隊(duì)成員中的一位控制鍵盤(pán)并輸入代碼,另一位觀察輸入的代碼中的錯(cuò)誤和可以改進(jìn)的地方。結(jié)隊(duì)的關(guān)系每天至少要改變一次,以便于每個(gè)程序員在一天中可以在兩個(gè)不同的結(jié)隊(duì)中工作.集體所有權(quán):結(jié)隊(duì)編程中的每一對(duì)都有拆出任何模塊并對(duì)它進(jìn)行改進(jìn)的權(quán)利持續(xù)集成:程序員每天會(huì)多次拆入他們的代碼并進(jìn)行集成,規(guī)則很簡(jiǎn)單(第一個(gè)拆入的只要完成拆入即可,所有其它的人負(fù)責(zé)代碼的合并工作)可持續(xù)的開(kāi)發(fā)速度:不允許團(tuán)隊(duì)加班工作,在版本發(fā)布前的一個(gè)星期是該規(guī)則的唯一例外,若發(fā)布目標(biāo)就在眼前且一蹴而就,則允許加班開(kāi)發(fā)的工作空間:密歇根大學(xué)研究:在充滿積極討論的屋子里工作,生產(chǎn)率會(huì)成倍的提高計(jì)劃游戲:本質(zhì)是劃分業(yè)務(wù)人員和開(kāi)發(fā)人員之間的職責(zé)(業(yè)務(wù)人員和客戶決定特性的重要性,開(kāi)發(fā)人員決定實(shí)現(xiàn)一個(gè)特性所花費(fèi)的代價(jià))簡(jiǎn)單的設(shè)計(jì):考慮能夠工作的最簡(jiǎn)單的事情你將不需要它:只有在有證據(jù),或者至少有十分明顯的跡像表明現(xiàn)在引入這些基礎(chǔ)結(jié)構(gòu)比繼續(xù)等待更加合算時(shí),團(tuán)隊(duì)才會(huì)引入這些基礎(chǔ)結(jié)構(gòu)一次,并且只有一次不允許容忍重復(fù)的代碼,無(wú)論哪里出現(xiàn)重復(fù)的代碼,他們都會(huì)消除它們.(例外:性能差別很大時(shí))消除重復(fù)最好的方法就是抽象,進(jìn)一步減少代碼間的耦合重構(gòu):是持續(xù)進(jìn)行的,是我們每隔一個(gè)小時(shí)或者半個(gè)小時(shí)就要去做的事情。通過(guò)重構(gòu),我們可以持續(xù)地保持盡可能干凈、簡(jiǎn)單且具有表現(xiàn)力的代碼敏捷開(kāi)發(fā)人員對(duì)待軟件設(shè)計(jì)地態(tài)度和外科醫(yī)生對(duì)待消毒地過(guò)程的態(tài)度是一樣的:設(shè)計(jì)的臭味:a.僵化性:很難對(duì)系統(tǒng)進(jìn)行改動(dòng)脆弱性:對(duì)系統(tǒng)的改動(dòng)會(huì)對(duì)系統(tǒng)中和改動(dòng)地方在概念上無(wú)關(guān)的很多地方出現(xiàn)問(wèn)題牢固性:很難解開(kāi)系統(tǒng)的糾結(jié)粘滯性:做正確的事情比做錯(cuò)誤的事情要困難不必要的復(fù)雜性f.晦澀性:不必要的重復(fù)
四.UML:每一種UML圖都為你提供一種組成特殊視圖的方式,采用多視點(diǎn)的目標(biāo)是為了滿足每一類風(fēng)險(xiǎn)承擔(dān)人的需要。靜態(tài)模型描述系統(tǒng)的結(jié)構(gòu)特性動(dòng)態(tài)模型描述系統(tǒng)的行為特性。類提供了系統(tǒng)的部分靜態(tài)視圖,描述的是系統(tǒng)的內(nèi)部構(gòu)成。用例提供了系統(tǒng)動(dòng)態(tài)的行為視圖,說(shuō)明的是從外部看到的系統(tǒng)。類圖:展示系統(tǒng)或者領(lǐng)域中的實(shí)體以及實(shí)體之間的關(guān)聯(lián)關(guān)聯(lián):類之間的連接關(guān)聯(lián)上的約束:關(guān)聯(lián)上的約束or(或)約束關(guān)聯(lián)類:關(guān)聯(lián)有自己的屬性和操作時(shí),關(guān)聯(lián)實(shí)際上是一個(gè)類繼承與泛化(UML中稱為泛化):類a具有類b的所有特征,類a不同于類b,則類a繼承類b子類型必須符合以下兩個(gè)規(guī)則100%規(guī)則:超類型定義應(yīng)該100%的可以被應(yīng)用于子類型。子類型必須100%的符合超類型的屬性和關(guān)聯(lián)。Is-a規(guī)則:所有子類型集合的成員必須是它們的超類型集合的成員依賴:一個(gè)類使用了另一個(gè)類,這種關(guān)系叫做依賴-端11類5類6-特性1--端11類5類6-特性1-端5{0R}-端*-特性1+操作1+操作1()1 5-端3-端411 -端9端10 1..*AssociationClassl-特性1+操作1()建立設(shè)計(jì)類圖:通過(guò)分析交互圖,識(shí)別出所有參與軟件解決方案的類將它們?cè)谝粋€(gè)類圖中繪出復(fù)制概念模型中的相關(guān)概念的屬性到類圖的類中通過(guò)分析交互圖來(lái)為類圖中的類添加方法為屬性和方法添加類型信息在類圖中添加關(guān)聯(lián),以支持必要的類之間的可見(jiàn)性在關(guān)聯(lián)上添加導(dǎo)航箭頭,來(lái)指明屬性可見(jiàn)性的方向添加依賴關(guān)系連線,來(lái)指明非屬性的可見(jiàn)性一個(gè)類的職責(zé):就是該類在所有用況實(shí)現(xiàn)中所充當(dāng)?shù)膮R集,將角色集中起來(lái)并去掉其中重疊的部分,就可得到該類的所有職責(zé)和屬性的規(guī)格說(shuō)明。用例圖:一種用以顯示不同的用戶角色和這些用戶角色如何使用系統(tǒng)的圖用例分析的一個(gè)重要方面,是揭示出組成系統(tǒng)的構(gòu)件。用例:由系統(tǒng)為使用該系統(tǒng)的用戶完成的一個(gè)單一用途或功能從用戶的觀點(diǎn)對(duì)系統(tǒng)行為的一個(gè)描述。是能夠幫助分析員和用戶確定系統(tǒng)使用情況的UML組件。是系統(tǒng)的一組場(chǎng)景。每個(gè)用例圖都有其自身的頁(yè),每個(gè)用例中的場(chǎng)景描述通常也至少占一頁(yè):每個(gè)用例的背后都隱藏一張順序圖.高層用例:是非常簡(jiǎn)潔的,通常是一個(gè)過(guò)程三兩句話的描述用況名稱:參與者:參與者列表,并注明用況發(fā)起者類型:a.主要,次要,可供選擇的b.基本的,真實(shí)的主要:主要的過(guò)程;次要:不重要的或不常見(jiàn)的過(guò)程;可供選擇:可以處理也可不處理的過(guò)程;基本:用一個(gè)完整格式表達(dá),但很少涉及用況實(shí)現(xiàn)細(xì)節(jié);真實(shí):能具體描述用況過(guò)程的真實(shí)細(xì)節(jié),以及具體的輸入輸出技術(shù)。描述:擴(kuò)展用例:是描述一個(gè)過(guò)程的長(zhǎng)篇敘述,可能含幾百句話的描述。用況:參與者:目的:概述:類型:交叉引用:相關(guān)的用況或系統(tǒng)功能典型的事件發(fā)生過(guò)程:可供選擇的事件發(fā)生過(guò)程:文檔中描述的內(nèi)容:發(fā)起用例的參與者用例的前置條件場(chǎng)景中的步驟場(chǎng)景完成后的后置條件從用例中獲益的參與者。包含用例:《include》早期稱使用(use)用例用例的重用技術(shù)擴(kuò)展用例:《extends》對(duì)原用例的擴(kuò)展技術(shù)參與者:系統(tǒng)用戶扮演的一個(gè)角色是系統(tǒng)外部的一個(gè)實(shí)體,它以某種方式參與用況的執(zhí)行過(guò)程。種類:人擔(dān)當(dāng)?shù)慕巧?,?jì)算機(jī)系統(tǒng),機(jī)械或電子設(shè)備場(chǎng)景:在用例中活動(dòng)的一個(gè)特定順序;一個(gè)用例可能有多個(gè)不同的場(chǎng)景.每個(gè)序列是由一個(gè)人,另一系統(tǒng)、一個(gè)硬件設(shè)備或某段時(shí)間的流逝發(fā)起的。系統(tǒng)邊界:硬件設(shè)備或者計(jì)算機(jī)系統(tǒng)的硬件或軟件邊界一個(gè)組織中的部門(mén)整個(gè)組織定義系統(tǒng)邊界的目的是為了能夠識(shí)別出什么在系統(tǒng)之內(nèi)及什么在系統(tǒng)之外,進(jìn)
永1**永2永3主角1系統(tǒng)名-端2-端永1**永2永3主角1系統(tǒng)名-端2-端1ds〉〉<<extenses〉〉用況用況名:參與者:目的:概述:類型:交叉引用:典型的事件發(fā)生過(guò)程:參與者的動(dòng)作 系統(tǒng)響應(yīng)可供選擇的過(guò)程用況的使用要依賴于至少部分地理解了系統(tǒng)需求,并用需求規(guī)格說(shuō)明文檔很好地表達(dá)出了這些需求。用況展示和體現(xiàn)出了其描述地過(guò)程中的需求情況。用況常見(jiàn)錯(cuò)誤:把用況當(dāng)成單獨(dú)的步驟、操作或事務(wù)。用況是相對(duì)較大的由起點(diǎn)到終點(diǎn)的過(guò)程的描述。用況模型必須滿足:是否已將所有必需的功能性需求捕獲為用況每個(gè)用況的動(dòng)作序列是否正確、完整、易于理解是否已經(jīng)確定了一些價(jià)值很少或根本沒(méi)有價(jià)值的用況,若有則應(yīng)重新考慮這些用況識(shí)別用況的步驟:基于參與者的方法識(shí)別與系統(tǒng)或組織有關(guān)的參與者對(duì)每個(gè)參與者,識(shí)別出他們發(fā)起或參加的執(zhí)行過(guò)程基于事件的方法識(shí)別出系統(tǒng)必須響應(yīng)的外部事件把事件與參與者聯(lián)系起來(lái)識(shí)別用況的準(zhǔn)則:有價(jià)值的結(jié)果:每個(gè)可成功執(zhí)行的用況都應(yīng)對(duì)參與者提供某些價(jià)值。此準(zhǔn)則應(yīng)針對(duì)最初的參與者,有助于避免確定太小的用況具體的參與者:通過(guò)確定向真正的用戶提供有價(jià)值的用況,可以確保用況不會(huì)太大用況的優(yōu)點(diǎn):用況著眼于為用戶增加價(jià)值,提供一種捕獲功能需求的系統(tǒng)而且直接的方法用況可驅(qū)動(dòng)整個(gè)開(kāi)發(fā)過(guò)程,因?yàn)榇蟛糠只顒?dòng)如分析、設(shè)計(jì)、測(cè)試都是
從用況開(kāi)始執(zhí)行的。交互圖:能夠展示出類模型中實(shí)例之間的消息交互,UML中定義了兩種交互圖:順序圖,協(xié)作圖順序圖強(qiáng)調(diào)的是交互的時(shí)間順序,按照時(shí)間順序布圖協(xié)作圖強(qiáng)調(diào)的是交互的語(yǔ)境和參與的對(duì)象的整體組織。協(xié)作圖按照空間組織布圖協(xié)作圖:使用圖表或者網(wǎng)格展示了對(duì)象之間的交互它是一種用以顯示對(duì)象如何被協(xié)調(diào)在一起以執(zhí)行用例的圖.協(xié)作圖消息1消息1類1 ?順序圖:一種用以顯示用例對(duì)象之間消息順序的圖,采用一種類似于圍欄的格式展示對(duì)象之間的交互。生命線:在順序圖的一個(gè)對(duì)象下面的豎線,用以顯示這個(gè)對(duì)象的時(shí)間階段.消息:用例內(nèi)部的對(duì)象之間的通信激活:順序圖消息激活:順序圖消息1消息2I"■_消息3狀態(tài)圖:一種用以顯示對(duì)象在生命周期和轉(zhuǎn)換期情況的圖。只是對(duì)單個(gè)對(duì)象建立模型。描述了一個(gè)對(duì)象所處的可能狀態(tài)以及狀態(tài)之間的轉(zhuǎn)移并給出了狀態(tài)變化序列的起點(diǎn)和終點(diǎn)。信號(hào):在接收對(duì)象的狀態(tài)圖中,能夠觸發(fā)一個(gè)狀態(tài)轉(zhuǎn)移的消息子狀態(tài):狀態(tài)處在單個(gè)狀態(tài)之中,稱之為子狀態(tài)。順序子狀態(tài),并發(fā)子狀態(tài)
活動(dòng)圖::展示出對(duì)象執(zhí)行某種
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育機(jī)構(gòu)二零二五年度兼職教師聘用含知識(shí)產(chǎn)權(quán)保護(hù)合同
- 二零二五年度智慧城市項(xiàng)目經(jīng)理職位聘用合同
- 語(yǔ)文文學(xué)鑒賞能力考核題
- 新能源汽車充電樁網(wǎng)絡(luò)規(guī)劃方案書(shū)
- 新興消費(fèi)市場(chǎng)消費(fèi)者行為分析與營(yíng)銷策略研究
- 企業(yè)績(jī)效評(píng)估咨詢服務(wù)協(xié)議
- 農(nóng)村資源環(huán)境保護(hù)及修復(fù)協(xié)議書(shū)
- 農(nóng)業(yè)市場(chǎng)推廣策略實(shí)戰(zhàn)案例分析
- 社區(qū)團(tuán)購(gòu)電商平臺(tái)合作合同
- 農(nóng)業(yè)合作組織規(guī)范化管理手冊(cè)
- 可下載打印的公司章程
- 《英語(yǔ)教師職業(yè)技能訓(xùn)練簡(jiǎn)明教程》全冊(cè)配套優(yōu)質(zhì)教學(xué)課件
- 中藥熏洗法課件
- 本特利探頭應(yīng)用
- 城市雕塑藝術(shù)工程工程量計(jì)價(jià)清單定額2022年版
- QMR-110-00員工手部、接觸面等微生物檢驗(yàn)記錄記錄
- 2022年河北醫(yī)科大學(xué)第一醫(yī)院醫(yī)護(hù)人員招聘考試筆試題庫(kù)及答案解析
- 思想道德與法治教案第四章:明確價(jià)值要求踐行價(jià)值準(zhǔn)則
- 外陰及陰道炎癥
- 公安筆錄模板之詢問(wèn)嫌疑人(書(shū)面?zhèn)鲉局伟舶讣?
- A-level項(xiàng)目介紹(課堂PPT)
評(píng)論
0/150
提交評(píng)論