版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件工程
第十章面向?qū)ο蠓治龅谑旅嫦驅(qū)ο蠓治?0.1面向?qū)ο蠓治龅幕具^程10.2需求陳述10.3建立對象模型10.4建立動態(tài)模型10.5建立功能模型10.6定義服務(wù)10.1面向?qū)ο蠓治龅幕具^程不論采用哪種方法學(xué)開發(fā)軟件,分析過程都是提取系統(tǒng)需求的過程。面向?qū)ο蠓治龅年P(guān)鍵是識別出問題域內(nèi)的類與對象,分析確定它們之間的關(guān)系,最終建立起問題域的對象模型、動態(tài)模型和功能模型。分析工作主要包括理解,表達(dá)和驗(yàn)證:首先,分析員通過與用戶及領(lǐng)域?qū)<业某浞纸涣?,力求充分理解用戶需求和該?yīng)用領(lǐng)域的關(guān)鍵性背景知識。用某種無二義性的方式把這種理解表達(dá)成文檔資料(軟件需求規(guī)格說明)問題復(fù)雜,人之間交流帶有隨意性和非形式化,理解過程通常不能一次達(dá)到理想效果,還須進(jìn)一步驗(yàn)證軟件需求規(guī)格說明的正確性、完整性和有效性,發(fā)現(xiàn)問題則進(jìn)行修正需求分析過程是系統(tǒng)分析員與用戶及領(lǐng)域?qū)<曳磸?fù)交流和多次修正的過程。理解和驗(yàn)證的過程交替進(jìn)行,反復(fù)迭代10.1面向?qū)ο蠓治龅幕具^程-概述1.1概述面向?qū)ο蠓治?,就是抽取和整理用戶需求并建立問題域精確模型的過程。需求陳述往往是不完整、不準(zhǔn)確的,通過分析應(yīng)該改正原始陳述中的二義性和不一致性,補(bǔ)充遺漏的內(nèi)容在分析需求陳述的過程中,需要反復(fù)多次地與用戶協(xié)商、討論、交流信息,還應(yīng)該了解現(xiàn)有的類似系統(tǒng)快速地建立一個能在計算機(jī)上運(yùn)行的原型系統(tǒng),有助于分析員與用戶之間的溝通,從而能更正確地提取出用戶的需求分析員應(yīng)該在深入理解用戶需求的基礎(chǔ)上,抽象出目標(biāo)系統(tǒng)的本質(zhì)屬性,并利用模型精確地表示出來:通過建立模型能夠糾正在分析早期對問題域的誤解在面向?qū)ο蠼_^程中,分析員必須認(rèn)真向領(lǐng)域?qū)<覍W(xué)習(xí)仔細(xì)研究以前針對相同的或類似的問題域進(jìn)行面向?qū)ο蠓治龅玫降慕Y(jié)果,這些在當(dāng)前項(xiàng)目中往往有許多是可重用的10.1面向?qū)ο蠓治龅幕具^程-概述OOA有兩個任務(wù)形式地說明我們所面對的應(yīng)用問題,最終成為軟件系統(tǒng)基本構(gòu)成的對象,還有系統(tǒng)所必須遵從的,由應(yīng)用環(huán)境所決定的規(guī)則和約束。明確地規(guī)定構(gòu)成系統(tǒng)的對象如何協(xié)同合作,完成指定的功能。OOA概念模型通過OOA建立的系統(tǒng)模型是以概念為中心的,因此稱為概念模型。這樣的模型由一組相關(guān)的類組成。軟件規(guī)格說明就是基于這樣的概念模型形成的,以模型描述為基本部分,再加上接口要求、性能限制等其它方面的要求說明。1.2三個子模型與五個層次面向?qū)ο蠼⑵饋淼哪P桶到y(tǒng)的三個要素,即:靜態(tài)結(jié)構(gòu)(對象模型)交互次序(動態(tài)模型)數(shù)據(jù)變換(功能模型)解決的問題不同,這3個子模型的重要程度也不同:幾乎解決任何一個問題,都需要從客觀世界實(shí)體及實(shí)體間相互關(guān)系抽象出極有價值的對象模型當(dāng)模型涉及交互作用和時序時,動態(tài)模型是重要的解決運(yùn)算量是很大的問題,則涉及重要的功能模型動態(tài)模型和功能模型中都包含了對象模型中的操作(即服務(wù))。復(fù)雜問題的對象模型對應(yīng)著在面向?qū)ο蠓治鲞^程中建立對象模型的5項(xiàng)主要活動:10.1面向?qū)ο蠓治龅幕具^程-三個模型構(gòu)造和評審OOA概念模型的順序和由五個層次組成。這五個層次是分析過程中的層次。每個層次工作都為系統(tǒng)規(guī)格說明增加了一個組成部分這五個層次是:類與對象、屬性、服務(wù)、結(jié)構(gòu)和主題在概念上,面向?qū)ο蠓治龃篌w上按照下列順序進(jìn)行:尋找類與對象—>識別結(jié)構(gòu)—>識別主題—>定義屬性—>建立動態(tài)模型—>建立功能模型—>定義服務(wù)但是,分析工作不可能嚴(yán)格地按照順序進(jìn)行,大型復(fù)雜系統(tǒng)的模型需要反復(fù)構(gòu)造多遍才能完成。通常,先構(gòu)造出模型的子集,然后逐漸擴(kuò)充,直到充分地理解了整個問題,才能最終把完整的模型建立起來。這五項(xiàng)工作完全沒有順序完成,也無須徹底完成一項(xiàng)工作以后再開始另外一項(xiàng)工作。10.1面向?qū)ο蠓治龅幕具^程-五個層次10.1面向?qū)ο蠓治龅幕具^程-五個層次找出類與對象,識別結(jié)構(gòu),識別主題,定義屬性,定義服務(wù)需求陳述通常包括:問題范圍,功能需求,性能需求,應(yīng)用環(huán)境及假設(shè)條件等應(yīng)該闡明“做什么”而不是“怎么做”應(yīng)該描述用戶的需求而不是提出解決問題的方法應(yīng)該指出哪些是系統(tǒng)必要的性質(zhì),哪些是任選的性質(zhì)應(yīng)該避免對設(shè)計策略施加過多的約束,也不要描述系統(tǒng)的內(nèi)部結(jié)構(gòu),否則將限制實(shí)現(xiàn)的靈活性對系統(tǒng)性能及外界環(huán)境交互協(xié)議的描述是合適的需求對采用的軟件工程標(biāo)準(zhǔn)、模塊構(gòu)造準(zhǔn)則、將來可能做的擴(kuò)充以及可維護(hù)性要求等方面描述,也都是適當(dāng)?shù)男枨髸鴮懶枨箨愂鰰r,要盡力作到語法正確,而且應(yīng)該慎用選用名詞、動詞、形容詞和同義詞系統(tǒng)分析員必須與用戶及領(lǐng)域?qū)<颐芮信浜蠀f(xié)同工作,共同提煉和整理用戶需求10.2需求陳述在這個過程中,很可能需要快速建立起原型系統(tǒng),以便與用戶更有效地交流10.2需求陳述ATM系統(tǒng)對象模型描述了現(xiàn)實(shí)世界中的“類與對象”以及它們之間的關(guān)系,表示了目標(biāo)系統(tǒng)的靜態(tài)數(shù)據(jù)結(jié)構(gòu):靜態(tài)數(shù)據(jù)結(jié)構(gòu)對應(yīng)用細(xì)節(jié)依賴較少,比較容易確定當(dāng)用戶的需求變化時,靜態(tài)數(shù)據(jù)結(jié)構(gòu)相對來說比較穩(wěn)定因此,用面向?qū)ο蠓椒ㄩ_發(fā)絕大多數(shù)軟件時,都首先建立對象模型,然后再建立另外兩個子模型。建立對象模型是面向?qū)ο蠓治鍪滓墓ぷ鲗ο竽P偷闹饕畔碓矗盒枨箨愂?、?yīng)用領(lǐng)域的專業(yè)知識以及關(guān)于客觀世界的常識10.3建立對象模型3.1確定類與對象1.找出候選的類與對象對象是對問題域中有意義的事物的抽象,它們既可能是物理實(shí)體,也可能是抽象概念。具體地說,大多數(shù)客觀事物可分為下述5類:可感知的物理實(shí)體,例如,飛機(jī)、汽車、書、房屋等等人或組織的角色,例如,醫(yī)生、教師、雇主、雇員、計算機(jī)系、財務(wù)處等等應(yīng)該記憶的事件,例如飛行、演出、訪問、交通事故等等
兩個或多個對象的相互作用,通常具有交易或接觸的性質(zhì),例如,購買、納稅、結(jié)婚等等需要說明的概念,例如,政策、保險政策、版權(quán)法等等分析時,可以參照上列5類常見事物,找出在當(dāng)前問題域中的候選類與對象。10.3建立對象模型-確定類與對象識別潛在對象的另外一種分類外部實(shí)體:與系統(tǒng)交換信息的外部設(shè)備、相關(guān)子系統(tǒng)、操作員或用戶等;信息結(jié)構(gòu):問題論域中的概念實(shí)體,信號、報表、顯示信息;需要記憶的事件:系統(tǒng)執(zhí)行過程中產(chǎn)生并需要記憶的事件,如單擊鼠標(biāo),擊打鍵盤等;角色:與系統(tǒng)交互的人員所扮演的角色,學(xué)生、教師、會計組織機(jī)構(gòu):有關(guān)機(jī)構(gòu),如公司、部門、小組等;地點(diǎn)或位置:用做系統(tǒng)環(huán)境或問題上下文的場所、位置,如客戶地址、收件人地址等;操作規(guī)程:如操作菜單、某種數(shù)據(jù)輸入過程等。10.3建立對象模型-確定類與對象另一種更簡單的分析方法,是所謂的非正式分析,即:以用自然語言書寫的需求陳述為依據(jù)把陳述中的名詞作為類與對象的候選者用形容詞作為確定屬性的線索把動詞作為服務(wù)(操作)的候選者選擇類和對象的原則對象類應(yīng)提供某些服務(wù)或處理,有意義的操作對象類具有多屬性:對象具有多種屬性,只有一個屬性的對象一般是其他對象頂屬性所有屬性對于類中所有實(shí)例都應(yīng)有意義,否則原對象類應(yīng)分解為兩類對象對象類定義的有關(guān)操作應(yīng)適應(yīng)對象類的所有實(shí)例對象應(yīng)是軟件需求模型的必要成分,與設(shè)計和實(shí)現(xiàn)方法無關(guān)10.3建立對象模型-確定類與對象10.3建立對象模型-確定類與對象例子銀行自動取款機(jī)(ATM)系統(tǒng)某銀行擬開發(fā)一個自動取款機(jī)系統(tǒng),它是一個由自動取款機(jī)、中央計算機(jī)、分行計算機(jī)及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)儲戶可以用現(xiàn)金或支票向自己擁有的某個賬戶內(nèi)存款或開新賬戶,儲戶也可以從自己的賬戶中取款。通常,一個儲戶可能擁有多個賬戶。柜員負(fù)責(zé)把儲戶提交的存款或取款事務(wù)輸進(jìn)柜員終端,接收儲戶交來的現(xiàn)金或支票,或付給儲戶現(xiàn)金。柜員終端與相應(yīng)的分行計算機(jī)通信,分行計算機(jī)具體處理針對某個賬戶的事務(wù)并且維護(hù)賬戶。擁有銀行賬戶的儲戶有權(quán)申請領(lǐng)取銀行卡。使用銀行卡可以通過ATM訪問自己的賬戶。銀行卡在ATM上提取現(xiàn)金(即取款),或查詢有關(guān)自己賬戶的信息所謂銀行卡就是一張?zhí)刂频拇趴?,上面有分行代碼和卡號。通常,一張卡可以訪問儲戶的若干個賬戶,但是不一定能訪問這個儲戶的全部賬戶。每張銀行卡僅屬于一個儲戶所有,但是,同一張卡可能有多個副本,因此,必須考慮同時在若干臺ATM上使用同樣的銀行卡的可能性。也就是系統(tǒng)應(yīng)該能夠處理并發(fā)的訪問。10.3建立對象模型-確定類與對象當(dāng)用戶把銀行卡插入ATM之后,ATM就與用戶交互,以獲取有關(guān)這次事務(wù)的信息,并與中央計算機(jī)交換關(guān)于事務(wù)的信息。首先,ATM要求用戶輸入密碼,接下來ATM把從這張卡上讀到的信息以及用戶輸入的密碼傳給中央計算機(jī),請求中央計算機(jī)核對這些信息并處理這次事務(wù)。中央計算機(jī)根據(jù)卡上的分行代碼確定這次事務(wù)與分行的對應(yīng)關(guān)系,并且委托相應(yīng)的分行計算機(jī)驗(yàn)證用戶密碼。如果輸入的密碼是正確的,ATM就要求用戶選擇事務(wù)類型(取款、查詢等)。當(dāng)用戶選擇取款時,ATM請求用戶輸入取款額。最后,ATM從現(xiàn)金出口吐出現(xiàn)金,并且打印出賬單交給用戶。
10.3建立對象模型-確定類與對象找出候選的對象類
銀行、自動取款機(jī)、系統(tǒng)、中央計算機(jī)、分行計算機(jī)、柜員機(jī)、網(wǎng)絡(luò)、總行、分行、軟件、成本、市、街道、營業(yè)廳、儲蓄所、柜員、儲戶、現(xiàn)金、支票、賬戶、事務(wù)、日志、通訊鏈路、存折、信用卡、余額、銀行卡、分行代碼、卡號、用戶、副本、信息、密碼、類型、取款額、賬單、訪問。2.篩選出正確的類與對象刪除不正確或不必要的類與對象:冗余——如果兩個名詞(或名詞短語)代表同樣的事物,則應(yīng)該僅保留在此問題域中最富于描述力的名稱。儲戶、用戶|存折、信用卡無關(guān)——現(xiàn)實(shí)世界中存在許多對象,不能把它們都納入到系統(tǒng)中去,僅需要把本問題密切相關(guān)的對象放在目標(biāo)系統(tǒng)中。成本、市、街道、營業(yè)廳、儲蓄所(ATM地點(diǎn))10.3建立對象模型-確定類與對象籠統(tǒng)——陳述需求時使用的一些籠統(tǒng)、泛指的名詞,在初步分析時把它們作為候選對象列出,但要么系統(tǒng)無須記憶有關(guān)它們的信息,要么在需求陳述中有更明確更具體的名詞對應(yīng)它們所暗示的事物,因此,通常把這些籠統(tǒng)的或模糊的對象去掉。銀行、系統(tǒng)、網(wǎng)絡(luò)、總行、分行、軟件、信息、訪問屬性——陳述中有些名詞實(shí)際上描述的是其他對象的屬性,應(yīng)把這些名詞從候選對象中去掉。如果某個性質(zhì)具有很強(qiáng)的獨(dú)立性,則應(yīng)該把它們作為對象而不是作為屬性。現(xiàn)金、支票、取款額、賬單、余額、分行代碼、卡號、密碼、類型操作——陳述中有時可能使用一些既作為名詞,又可作為動詞的詞,應(yīng)慎重考慮它們在問題中含義,以便正確地決定把她們作為對象還是作為對象的操作。一般說本身具有屬性需要獨(dú)立存在的操作,應(yīng)該作為對象;反之應(yīng)作為對象操作。實(shí)現(xiàn)——在分析階段不應(yīng)該過早地考慮怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)。因此,應(yīng)該去掉僅和實(shí)現(xiàn)有關(guān)的候選對象。日志、通訊鏈路10.3建立對象模型-確定類與對象3.2確定關(guān)聯(lián)兩個或多個對象之間相互作用、相互依賴的關(guān)系就是關(guān)聯(lián)。在分析確定關(guān)聯(lián)的過程中,不必花過多精力去區(qū)分關(guān)聯(lián)和聚集。1.初步確定關(guān)聯(lián)在需求陳述中使用的描述性動詞或動詞詞組,通常表示關(guān)聯(lián)關(guān)系:大多數(shù)關(guān)聯(lián)可通過直接提取需求中的動詞詞組得出分析需求陳述,還能發(fā)現(xiàn)一些隱含的關(guān)聯(lián)還應(yīng)該與用戶及領(lǐng)域?qū)<矣懻搯栴}域?qū)嶓w間的相互依賴、相互作用關(guān)系,根據(jù)領(lǐng)域知識再進(jìn)一步補(bǔ)充一些關(guān)聯(lián)10.3建立對象模型-確定關(guān)聯(lián)2.篩選候選關(guān)聯(lián)需經(jīng)過進(jìn)一步篩選,以去掉不正確的或不必要的關(guān)聯(lián):已刪去的對象之間的關(guān)聯(lián)——如果在分析確定對象的過程中已經(jīng)刪掉了某個候選對象,則與這個對象有關(guān)的關(guān)聯(lián)也應(yīng)該刪去,或用其他對象重新表達(dá)這個關(guān)聯(lián)。與問題無關(guān)的或應(yīng)在實(shí)現(xiàn)階段考慮的關(guān)聯(lián)——應(yīng)該把處在本問題域之外的關(guān)聯(lián)或與實(shí)現(xiàn)密切相關(guān)的關(guān)聯(lián)刪去。瞬時事件——關(guān)聯(lián)應(yīng)該描述問題域的靜態(tài)結(jié)構(gòu),而不應(yīng)該描述一個瞬時事件。三元關(guān)聯(lián)——三個或三個以上對象之間的關(guān)聯(lián),大多可以分解為二元關(guān)聯(lián)。派生關(guān)聯(lián)——應(yīng)該刪除那些可以用其他關(guān)聯(lián)定義的冗余關(guān)聯(lián)10.3建立對象模型-確定關(guān)聯(lián)3.改進(jìn)正名——應(yīng)該仔細(xì)選擇含義更明確的名字作為關(guān)聯(lián)名。分解——為了能適用于不同的關(guān)聯(lián),必要時應(yīng)該分解以前確定的類與對象。補(bǔ)充——發(fā)現(xiàn)了遺漏的關(guān)聯(lián)就應(yīng)該及時補(bǔ)上。標(biāo)明重數(shù)——應(yīng)該初步判斷各個關(guān)聯(lián)的類型并粗略地確定關(guān)聯(lián)的重數(shù)。4.確定實(shí)例連接關(guān)系如有多對多的實(shí)例連接,需增加一個新的“交互”對象,如“賬戶”和“銀行卡”----》儲戶(三元)對于同一個類各個實(shí)例之間的實(shí)例連接,若有屬性描述它,則應(yīng)建立新的類或?qū)ο?。如“婚姻”是人與人間的關(guān)系,除了對象“人”外,還需建立“婚姻”事件對象。如果兩個類之間有兩個以上的實(shí)例連接時,需加一個類或?qū)ο髞韰^(qū)分連接的含義(三元)10.3建立對象模型-確定關(guān)聯(lián)以特殊化的視點(diǎn)來看,一個繼承關(guān)系可以看作是“是”或“是一種”關(guān)系。例如, 一輛卡車是交通工具一輛卡車是一種交通工具在繼承關(guān)系中,使用繼承將較一般化的屬性和服務(wù)放在一般化的類和對象中。從整體的視點(diǎn)來看,一個整體-部分可看作一個“有一個”或“是一部分”關(guān)系。例如,飛機(jī)有一個發(fā)動機(jī)發(fā)動機(jī)是一部分飛機(jī)飛機(jī)是整體對象,發(fā)動機(jī)是局部對象。10.3建立對象模型-確定關(guān)聯(lián)5標(biāo)識部分-整體關(guān)系總體-部分關(guān)聯(lián),如飛機(jī)-發(fā)動機(jī)之間的關(guān)系。包容-內(nèi)含關(guān)聯(lián),如飛機(jī)-飛行員之間的關(guān)系。收集-成員關(guān)聯(lián),如機(jī)構(gòu)-職員之間的關(guān)系。將每一個類看作是一個整體類,對它的所有可能部分情況,考慮以下問題:
它是否在問題論域中?它是否在系統(tǒng)的職責(zé)內(nèi)?它是否代表一個以上的狀態(tài)值?若不是,是否將它變?yōu)檎w中的一個屬性?它是否提供問題論域中有用的抽象?把每一個類置于部分的地位,對于它所有的整體情形,考慮上述5個問題。檢查以前在相同或類似問題論域中面向?qū)ο蠓治龅慕Y(jié)果,看是否有可直接復(fù)用的整體-部分關(guān)系。10.3建立對象模型-確定關(guān)聯(lián)例ATM系統(tǒng)①初步確定關(guān)系直接提取動詞短語得出關(guān)系:ATM、中央計算機(jī)、分行計算機(jī)及柜員終端組成網(wǎng)絡(luò),總行擁有多少臺ATM,
ATM主要設(shè)在街道上,分行提供分行計算機(jī)和柜員終端,柜員終端設(shè)在分行營業(yè)廳及儲蓄所中,分行分?jǐn)傑浖_發(fā)成本,儲戶擁有帳戶,分行計算機(jī)處理針對帳戶的事務(wù),
分行計算機(jī)維護(hù)帳戶,柜員終端與分行計算機(jī)通訊,柜員輸入針對帳戶的事務(wù),ATM與中央計算機(jī)交換關(guān)于事務(wù)的信息,中央計算機(jī)確定事務(wù)與分行的對應(yīng)關(guān)系(中央計算機(jī)通訊分行),ATM讀銀行卡,ATM與用戶交互,ATM吐出現(xiàn)金,ATM打印帳單,系統(tǒng)處理并發(fā)的訪問10.3建立對象模型-確定關(guān)聯(lián)需求陳述中的隱含關(guān)系:總行由各分行組成、分行保管帳戶、總行有中央計算機(jī)、系統(tǒng)維護(hù)事務(wù)日志、系統(tǒng)提供必要安全性、儲戶有銀行卡根據(jù)問題域知識得出的關(guān)系:銀行卡訪問帳戶、分行雇用柜員②篩選刪除已刪除類的關(guān)系:系統(tǒng)、網(wǎng)絡(luò)、軟件、成本、市、街道、營業(yè)廳、儲蓄所、現(xiàn)金如:ATM、中央計算機(jī)、分行計算機(jī)及柜員終端組成網(wǎng)絡(luò)、ATM主要設(shè)在街道上、分行分?jǐn)傑浖_發(fā)成本、系統(tǒng)維護(hù)事務(wù)日志、系統(tǒng)提供必要的安全性、ATM吐出現(xiàn)金、ATM打印帳單、分行提供分行計算機(jī)和柜員終端10.3建立對象模型-確定關(guān)聯(lián)與問題無關(guān)及實(shí)現(xiàn)階段考慮的關(guān)系:系統(tǒng)處理并發(fā)訪問(提醒需使用并發(fā)算法)瞬間事件(關(guān)聯(lián)描述靜態(tài)結(jié)構(gòu)):
ATM讀銀行卡、ATM與用戶交互三元關(guān)系(分解為二元關(guān)聯(lián)或使用詞組描述成限定關(guān)聯(lián)):柜員輸入針對帳戶的事務(wù)--》柜員輸入事務(wù)、修改帳戶分行計算機(jī)處理針對帳戶的事務(wù)--》ATM與中央計算機(jī)交換關(guān)于事務(wù)的信息--》ATM與中央計算機(jī)通訊、在ATM上輸入事務(wù)派生關(guān)系:冗余關(guān)系分行計算機(jī)維護(hù)帳戶=分行保管帳戶+事務(wù)修改帳戶10.3建立對象模型-確定關(guān)聯(lián)③進(jìn)一步完善正名:分行提供分行計算機(jī)和柜員終端--》分行擁有分行計算機(jī)+分行擁有柜員終端分解:事務(wù)=遠(yuǎn)程事務(wù)+柜員事務(wù)補(bǔ)充:柜員輸入柜員事務(wù)、ATM輸入遠(yuǎn)程事務(wù)、柜員事務(wù)輸入柜員終端、遠(yuǎn)程事務(wù)由銀行卡授權(quán)④標(biāo)明階數(shù)⑤畫對象模型圖10.3建立對象模型-確定關(guān)聯(lián)3.3劃分主題(較大的系統(tǒng))主題可以看成是高層的模塊或子系統(tǒng)。主題表示此模型的整體框架??梢允且粋€層次結(jié)構(gòu)。使大而復(fù)雜的模型比較清晰。對于含有較多對象的系統(tǒng),則往往先識別出類與對象和關(guān)聯(lián),然后劃分主題,并用它作為指導(dǎo)開發(fā)者和用戶觀察整個模型的一種機(jī)制對于規(guī)模極大的系統(tǒng),則首先由高級分析員粗略地識別對象和關(guān)聯(lián),然后初步劃分主題,經(jīng)進(jìn)一步分析,對系統(tǒng)結(jié)構(gòu)有風(fēng)深入的了解之后,再進(jìn)一步修改和精煉主題應(yīng)該按問題領(lǐng)域而不是用功能分解方法來確定主題此外,應(yīng)該按照使不同主題內(nèi)的對象相互間依賴和交互最少的原則來確定主題10.3建立對象模型-劃分主題劃分原則:不要按功能來劃分主題,應(yīng)按對象間相互依賴及交互最少的原則來劃分主題將每一種結(jié)構(gòu)(包括整體-部分結(jié)構(gòu)、和一般化-特殊化結(jié)構(gòu))中最上層的類提升成為主題;將各不屬于任何結(jié)構(gòu)的類提升主題;檢查在相同或類似的問題論域中以前做面向?qū)ο蠓治龅慕Y(jié)果,看是否有可直接復(fù)用的主題。10.3建立對象模型-劃分主題編輯管理的主題10.3建立對象模型-劃分主題3.4確定屬性1.分析對象所保存的信息稱為它的屬性。類的屬性所描述的是狀態(tài)信息,每個實(shí)例的屬性值表達(dá)了該實(shí)例的狀態(tài)值。通常,陳述中用名詞詞組表示屬性(例如,汽車的顏色)
,形容詞表示可枚舉的具體屬性但不可能在需求陳述中找出全部屬性,還必須借助于領(lǐng)域知識和常識才能分析得出需要的屬性屬性的確定既與問題域有關(guān),也和目標(biāo)系統(tǒng)的任務(wù)有關(guān)應(yīng)該僅考慮與具體應(yīng)用密切相關(guān)的屬性,不要考慮那些超出所要解決的問題范圍的屬性2.選擇認(rèn)真考慮經(jīng)初步分析而確定下來的那些屬性,從中刪除不正確的或不必要的屬性:10.3建立對象模型-確定屬性誤把對象當(dāng)作屬性——如果某個實(shí)體的獨(dú)立存在比它的值更重要,則應(yīng)把它作為一個對象而不是對象的屬性。在具體應(yīng)用領(lǐng)域中具有自身性質(zhì)的實(shí)體,必然是對象。誤把關(guān)聯(lián)類的屬性當(dāng)作一般對象的屬性——如果某個性質(zhì)依賴于某個關(guān)聯(lián)鏈的存在,則該性質(zhì)是關(guān)聯(lián)類的屬性。把限定誤當(dāng)成屬性——如果把某個屬性值固定下來以后能減少關(guān)聯(lián)的重數(shù),則應(yīng)該把這個屬性重新表述成一個限定詞。誤把內(nèi)部狀態(tài)當(dāng)成了屬性——如果某個性質(zhì)是對象的非公開的內(nèi)部狀態(tài),則應(yīng)該從對象模型中刪除這個屬性。過于細(xì)化——在分析階段應(yīng)該忽略那些對大多數(shù)操作都沒有影響的屬性。存在不一致的屬性——類應(yīng)該是簡單而且一致的。如果得出一些看起來與其他實(shí)行毫不相關(guān)的屬性,則應(yīng)該考慮把該類分解成兩個不同的類。10.3建立對象模型-確定屬性3確定屬性的方法和策略每個對象至少需包含一個屬性屬性取值必需適合對象類的所有實(shí)例所有系統(tǒng)的存儲數(shù)據(jù)需求必須定義為屬性是否誤把對象當(dāng)作屬性(實(shí)體的獨(dú)立存在比它的值更重要)誤把內(nèi)部狀態(tài)當(dāng)成了屬性、過于細(xì)化:掛失是否存在不一致的屬性(屬性具有多重值,該對象應(yīng)是分解為兩個對象)是否有只有一個屬性的對象(是其他對象的屬性)借貸卡、信用卡、銀行卡、存折、金卡、副卡10.3建立對象模型-確定屬性3.5識別繼承關(guān)系(是一知識抽取過程,需經(jīng)驗(yàn))確定了類中應(yīng)有的屬性之后,就可以利用繼承機(jī)制共享公共性質(zhì),并對系統(tǒng)中眾多的類加以組織。繼承關(guān)系的建立實(shí)質(zhì)上是知識抽取過程,它應(yīng)該反映出一定深度的領(lǐng)域知識,因此必須有領(lǐng)域?qū)<颐芮信浜喜拍芡瓿伞?梢允褂孟率鰞煞N方法建立繼承關(guān)系:①自底向上:抽象出現(xiàn)有類的共性(公共屬性)泛化出父類,這模擬了人類的演繹思維過程。遠(yuǎn)程事務(wù)+柜員事務(wù)=事務(wù)(父類)ATM+柜員終端=輸入站②和自頂向下:把現(xiàn)有類細(xì)化成更具體的子類,這模擬了人類的演繹思維過程(帶形容詞的名詞)10.3建立對象模型-識別繼承使用多重繼承機(jī)制時,應(yīng)該指定一個主要父類,從它繼承大部分屬性和行為,次要父類再作補(bǔ)充。如果一個一般化對象可能有多個特殊化對象,應(yīng)當(dāng)先考慮最簡單的特殊化對象和最復(fù)雜的特殊化對象,然后再考慮中間其他的特殊化對象。以特殊化的視點(diǎn)來看,一個繼承關(guān)系可以看作是“是”或“是一種”關(guān)系。例如, 一輛卡車是交通工具一輛卡車是一種交通工具在繼承關(guān)系中,使用繼承將較一般化的屬性和服務(wù)放在一般化的類和對象中。從整體的視點(diǎn)來看,一個整體-部分可看作一個“有一個”或“是一部分”關(guān)系。例如,飛機(jī)有一個發(fā)動機(jī)發(fā)動機(jī)是一部分飛機(jī)其中,飛機(jī)是整體對象,發(fā)動機(jī)是局部對象。10.3建立對象模型-識別繼承3.6反復(fù)修改僅僅經(jīng)過一次建模過程很難得到完全正確的對象模型:軟件開發(fā)過程就是一個多次反復(fù)修改、逐步完善過程在建模的任何一個步驟中,如果發(fā)現(xiàn)了模型的缺陷,都必須返回前期階段進(jìn)行修改面向?qū)ο蟮母拍詈头栐谡麄€開發(fā)過程中都是一致的,遠(yuǎn)比使用SASD更容易實(shí)現(xiàn)反復(fù)修改及逐步完善的過程有些細(xì)化工作(如定義服務(wù))是在建立了動態(tài)模型和功能模型之后才進(jìn)行的分解“銀行卡”類:卡授權(quán)+銀行卡“事務(wù)”由“更新”組成:一個事務(wù)包含對帳戶的若干次更新。更新是動作,但有獨(dú)立的屬性將“分行”和“分行計算機(jī)”合并:分行類將“總行”和“中央計算機(jī)”合并:總行類10.3建立對象模型-反復(fù)修改4.1建立動態(tài)模型的步驟:①編寫典型交互行為的腳本,雖然腳本中不可能包括每個偶然事件,但是,至少必須保證不遺漏常見的交互行為。②從腳本中提取出事件,確定觸發(fā)每個事件的動作對象以及接受事件的目標(biāo)對象。③排列事件發(fā)生的次序,確定每個對象可能有的狀態(tài)及狀態(tài)間的轉(zhuǎn)換關(guān)系,并用狀態(tài)圖描繪它們④確定事件:與用戶交互的所有信號、輸入/出、中斷、動作⑤畫事件跟蹤圖:事件序列以及事件與對象的關(guān)系⑥畫出狀態(tài)圖:描繪事件與狀態(tài)的關(guān)系。對象接受事件后,它下個狀態(tài)取決于當(dāng)前狀態(tài)及所接受的事件。⑦比較各個對象的狀態(tài)圖,檢查它們之間的一致性,確保事件之間的匹配。⑧審查動態(tài)模型:各個類狀態(tài)圖通過共享事件合并起來10.4建立動態(tài)模型-步驟4.2編寫腳本所謂“腳本”,原意是指“表演戲劇、話劇,拍攝電影、電視劇等所依據(jù)的本子,里面記載臺詞、故事情節(jié)等”。腳本:腳本是指系統(tǒng)在某一執(zhí)行期內(nèi)出現(xiàn)的一系列事件。腳本描述用戶(或其他外部設(shè)備)與目標(biāo)系統(tǒng)之間的一個或多個典型的交互過程(正常和異常情況)
,以便對目標(biāo)系統(tǒng)的行為有更具體的認(rèn)識。編寫腳本的目的,是保證不遺漏重要的交互步驟,它有助于確保整個交互過程的整正確性和清晰性。腳本描寫的范圍并不是固定的,既可以包括系統(tǒng)中發(fā)生的全部事件,也可以只包括由某些特定對象觸發(fā)的事件。腳本描寫的范圍主要由編寫腳本的具體目的決定。10.4建立動態(tài)模型-編寫腳本即使在需求陳述中已經(jīng)描寫了完整的交互過程,也還需要花很大精力構(gòu)思交互的形式。編寫腳本的過程,實(shí)質(zhì)上就是分析確定用戶對系統(tǒng)交互行為的要求的過程。在編寫腳本的過程中,應(yīng)該與用戶充分交換意見,編寫后還需要經(jīng)過他們審查與修改。編寫腳本時:首先編寫正常情況的腳本然后考慮特殊情況,例如輸入或輸出的數(shù)據(jù)為最大值(或最小值)最后考慮出錯情況,例如,輸入的值為非法值或響應(yīng)失敗10.4建立動態(tài)模型-編寫腳本腳本描述事件序列:每當(dāng)系統(tǒng)中的對象與用戶(或其他外部設(shè)備)交換信息時,就發(fā)生一個事件所交換的信息值就是該事件的參數(shù)(例如,“輸入密碼”事件的參數(shù)是所輸入的密碼)也有許多事件是無參數(shù)的,這樣的事件僅傳遞一個信息——該事件已經(jīng)發(fā)生了對于每個事件,都應(yīng)該指明觸發(fā)該事件的動作對象(例如,系統(tǒng)、用戶或其他外部事物)、接受事件的目標(biāo)對象以及該事件的參數(shù)。10.4建立動態(tài)模型-編寫腳本例如ATM系統(tǒng)正常情況腳本:ATM請儲戶插卡;例如儲戶插一張信用卡ATM接受卡并讀取卡上分行代碼及卡號ATM要求用戶輸入密碼;用戶輸入密碼ATM請求總行驗(yàn)證密碼;總行通知ATM卡有效ATM要求用戶選擇事務(wù)類型(取款、轉(zhuǎn)帳、查詢)ATM要求用戶輸入取款額;用戶輸入取款額ATM確認(rèn)取款額在限額內(nèi),然后要求總行處理該事務(wù),總行將請求轉(zhuǎn)到發(fā)卡分行,分行處理完事務(wù)并返回該帳戶新余額ATM吐出現(xiàn)金并請用戶拿走現(xiàn)金;用戶拿走現(xiàn)金ATM問用戶是否繼續(xù)事務(wù),用戶回答否ATM打印帳單,退出卡,請用戶拿走卡,用戶拿卡ATM請用戶插卡10.4建立動態(tài)模型-編寫腳本例如ATM系統(tǒng)非正常情況腳本:ATM請儲戶插卡;例如儲戶插一張信用卡ATM接受卡并讀取卡上分行代碼及卡號ATM要求用戶輸入密碼;用戶誤輸密碼ATM請求總行驗(yàn)證密碼;總行通知ATM卡無效ATM顯示密碼錯誤,請用戶重新輸入密碼;用戶輸入正確密碼ATM要求用戶選擇事務(wù)類型(取款、轉(zhuǎn)帳、查詢、代理)ATM要求用戶輸入取款額;用戶按“取消”鍵ATM退出卡,請用戶拿走卡,用戶拿走卡ATM請用戶插卡10.4建立動態(tài)模型-編寫腳本4.2設(shè)想用戶界面大多數(shù)交互行為=應(yīng)用邏輯+用戶界面通常,系統(tǒng)分析員首先集中精力考慮系統(tǒng)的信息流和控制流,而不是首先考慮用戶界面事實(shí)上,采用不同界面(例如,命令行或圖形用戶界面),可以實(shí)現(xiàn)同樣的程序邏輯應(yīng)用邏輯是內(nèi)在的、本質(zhì)的內(nèi)容,用戶界面是外在的表現(xiàn)形式動態(tài)模型分析階段重點(diǎn):應(yīng)用邏輯(本質(zhì)的內(nèi)容),不同的用戶界面表達(dá)的是相同的應(yīng)用邏輯10.4建立動態(tài)模型-用戶界面但是,用戶界面的美觀程度、方便程度、易學(xué)程度以及效率等等,是用戶使用系統(tǒng)時最先感受到的,用戶對系統(tǒng)的“第一印象”往往從界面得來,用戶界面的好壞往往對用戶是否喜歡、是否接受一個系統(tǒng)起很重要的作用。因此,在分析階段也不能完全忽略用戶界面。在這個階段用戶界面的細(xì)節(jié)并不太重要,重要的是在這種界面下的信息交換方式。我們的目的是確保能夠完成全部必要的信息交換,而不會丟失重要的信息。不經(jīng)過實(shí)際使用很難評價一個用戶界面的優(yōu)劣,因此,軟件開發(fā)人員往往快速地建立起用戶界面的原型,供用戶試用與評價。10.4建立動態(tài)模型-用戶界面10.4建立動態(tài)模型-用戶界面ATM的界面格式4.3畫事件跟蹤圖完整、正確的腳本為建立動態(tài)模型奠定了必要的基礎(chǔ)。但是,用自然語言書寫的腳本往往不夠簡明,而且有時在閱讀時會有二義性。為了有助于建立動態(tài)模型,通常在畫狀態(tài)圖之前先畫出事件跟蹤圖。為此首先需要進(jìn)一步明確事件及事件與對象的關(guān)系。1.確定事件分析腳本,提取外部事件:用戶(或外部設(shè)備)和系統(tǒng)交流的信號、輸入、輸出、中斷、動作、異常、出錯從腳本中容易找出正常事件,但是,應(yīng)該小心仔細(xì),不要遺漏了異常時價和出錯條件10.4建立動態(tài)模型-事件跟蹤圖傳遞消息的動作也是事件:輸入密碼、插卡、ATM吐現(xiàn)金對象相互之間的交互行為多數(shù)都對應(yīng)著事件應(yīng)該把控制流產(chǎn)生相同效果的那些事件組合在一起作為一類事件,并給它們?nèi)∫粋€惟一的名字。注意同一對象中某些對控制流產(chǎn)生不同效果的事件:帳戶有效、帳戶無效、密碼錯分析出每類事件的發(fā)送和接受對象:有將事件發(fā)送給自己的對象經(jīng)過分析,應(yīng)該區(qū)分出每類事件的發(fā)送對象和接受對象:一類事件相對它的發(fā)送對象來說是輸出事件,但是相對它的接受對象來說則是輸入事件。有時一個對象把事件發(fā)送給自己。在這種情況下,該事件既是輸出事件又是輸入事件。10.4建立動態(tài)模型-事件跟蹤圖2.畫出事件跟蹤圖(腳本的擴(kuò)充)從腳本中提取出各類事件并確定了每類事件的發(fā)送對象和接受對象之后,就可以用事件跟蹤圖把事件序列以及事件與對象的關(guān)系,形象、清晰地表示出來。事件跟蹤圖實(shí)質(zhì)上是擴(kuò)充的腳本,也可以認(rèn)為它是UML順序圖的簡化形式。在事件跟蹤圖中:一條豎線代表一個對象,每個事件用一條水平的箭頭線表示,箭頭方向從事件的發(fā)送對象指向接受對象,時間從上向下遞增,即是畫最上面的水平箭頭線代表最先發(fā)生的事件,畫在最下面的水平箭頭線所代表的事件最晚發(fā)生。箭頭線之間的間距并沒有具體含義,圖中僅用箭頭線在垂直方向上的相對位置表示事件發(fā)生的先后,并不表示兩個事件之間的精確時間差。10.4建立動態(tài)模型-事件跟蹤圖4.4畫狀態(tài)圖狀態(tài)圖一類對象中事件和對象狀態(tài)的關(guān)系當(dāng)對象接受了一個事件以后,它的下個狀態(tài)取決于當(dāng)前狀態(tài)及所接受的事件由事件引起的狀態(tài)改變稱為“轉(zhuǎn)換”如一個事件并不引起當(dāng)前狀態(tài)發(fā)生轉(zhuǎn)換,則可忽略這個事件通常,用一張狀態(tài)圖描繪一類對象的行為,它指明了由事件序列引出的狀態(tài)序列:并不時所有的對象類均要畫狀態(tài)圖。重點(diǎn)在有交互行為的對象,如:主動發(fā)送事件的對象(ATM、柜員終端、總行、分行),被動對象(銀行卡、事務(wù)、帳戶)和系統(tǒng)外部對象(儲戶、柜員)一般不畫一般兩個事件的間隔就有一個狀態(tài),狀態(tài)圖要覆蓋該類對象的全部事件10.4建立動態(tài)模型-狀態(tài)圖從一張事件跟蹤圖出發(fā)畫狀態(tài)圖,應(yīng)該集中精力僅考慮影響一類對象的事件,也就是說,僅考慮事件跟蹤圖中那些箭頭線:把這些事件作為狀態(tài)圖中的有向邊(即箭頭線),在有向邊上標(biāo)上事件名。兩個事件之間處于不同狀態(tài):應(yīng)該給每個狀態(tài)取一個有意義的名字。通常,從事件跟蹤圖中當(dāng)前考慮的豎線射出的箭頭線,是這條豎線代表的對象到達(dá)某個狀態(tài)時的行為(往往是導(dǎo)致另一類對象狀態(tài)轉(zhuǎn)換的事件)。根據(jù)一張事件跟蹤圖畫出狀態(tài)圖之后,再把其他腳本的事件跟蹤圖合并到已畫出的狀態(tài)圖中:為此需要在狀態(tài)圖中找出以前考慮的分支點(diǎn),然后把其他腳本中的事件序列插入到已有的狀態(tài)圖中,作為一條可選的路徑。10.4建立動態(tài)模型-狀態(tài)圖考慮完正常事件之后再考慮邊界情況和特殊情況,其中包括在不適當(dāng)時候發(fā)生的事件(例如,系統(tǒng)正在處理某個事務(wù)時,用戶要求取消該事務(wù)):有時用戶(或外部設(shè)備)不能做出快速響應(yīng),然而某些資源又必須及時收回,于是在一定間隔就產(chǎn)生了“超時”事件。對用戶出錯情況往往需要花費(fèi)很多精力處理,并且會使原來清晰、緊湊的程序結(jié)構(gòu)變得復(fù)雜、繁瑣,但是,出錯處理是不能省略的。當(dāng)狀態(tài)圖覆蓋了所有腳本,包含了影響某些對象狀態(tài)的全部事件時,該類的狀態(tài)圖就構(gòu)造出來了。10.4建立動態(tài)模型-狀態(tài)圖總行類的狀態(tài)圖10.4建立動態(tài)模型-狀態(tài)圖分行類的狀態(tài)圖10.4建立動態(tài)模型-狀態(tài)圖4.5審查動態(tài)模型各個類的狀態(tài)圖通過共享事件合并起來,構(gòu)成了系統(tǒng)的動態(tài)模型。在完成了每個具有重要交互行為的類的狀態(tài)圖之后,應(yīng)該檢查系統(tǒng)級的完整性和一致性:一般來說,每個事件都應(yīng)該既有發(fā)送對象又有接受對象,當(dāng)然,有時發(fā)送者和接受者是同一對象對于沒有前驅(qū)或沒有后繼的狀態(tài)應(yīng)該著重審查,如果這個狀態(tài)既不是交互系列的起點(diǎn)也不是終點(diǎn),則發(fā)現(xiàn)了一個錯誤應(yīng)該審查每個事件,跟蹤它對系統(tǒng)中各個對象所產(chǎn)生的效果,以保證它們與每個腳本都匹配10.4建立動態(tài)模型-審查模型10.5建立功能模型(通過數(shù)據(jù)流圖和數(shù)據(jù)字典)通常,功能模型由一組數(shù)據(jù)流或一組用例圖組成。其中的數(shù)據(jù)處理功能可以用IPO圖(表)、PDL語言等多種方式進(jìn)一步描述。一般說來,應(yīng)該在建立了對象模型和動態(tài)模型之后再建立功能模型。畫出頂層數(shù)據(jù)流圖畫出功能級數(shù)據(jù)流圖、用例圖描述處理過程建立系統(tǒng)結(jié)構(gòu)模型10.5建立功能模型10.5建立功能模型ATM系統(tǒng)的基本系統(tǒng)模型10.5建立功能模型對更新帳戶處理過程的描述更新帳戶(帳號,事務(wù)類型,金額)--》先金額、帳單數(shù)據(jù)如果取款額超過帳戶當(dāng)前余額,拒絕該事務(wù)如果取款額超過帳戶當(dāng)前余額,從余額中減去取款額后更新余額,付出儲戶要求的現(xiàn)金如果事務(wù)是存款,將存款額加到余額中后更新余額,不付出現(xiàn)金如果事務(wù)是查詢,不付出現(xiàn)金在上述任何一種情況下,帳單內(nèi)容是:ATM機(jī)號,日期,時間,帳號,事務(wù)類型,事務(wù)金額(如果有),新余額10.5建立功能模型10.6定義服務(wù)對象類行為是對象類應(yīng)該展現(xiàn)的外部服務(wù)的總和對象類為了響應(yīng)外部事件、處理另一對象的請求、查詢或命令,都將完成某些操作,操作將改變自身的屬性值或系統(tǒng)的狀態(tài)、或向其他對象發(fā)送消息在確定類中應(yīng)有的服務(wù)時,既要考慮該類實(shí)體的常規(guī)行為,又要考慮在本系統(tǒng)中特殊需要的服務(wù)。1.常規(guī)操作在分析階段可以認(rèn)為,類中定義的每個屬性都是可以訪問的,也就是說,假設(shè)在每個類中都定義了讀、寫該類每個屬性的操作。增加、修改、刪除、選擇、打印等服務(wù)有時是隱含的操作但是,通常無須在類圖中顯式表示這些常規(guī)操作。
10.6定義服務(wù)2.從事件導(dǎo)出的操作狀態(tài)圖中發(fā)往對象的事件也就是該對象接收到的消息,因此該對象必須提供由消息選擇符指定的操作,這個操作修改對象狀態(tài)(即屬性值)并啟動相應(yīng)的服務(wù)。所啟動的服務(wù)通常就是接受事件的對象在相應(yīng)狀態(tài)的行為。3.與處理或用例對應(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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度高端制造股權(quán)投資與回購合同
- 2025年度農(nóng)業(yè)科技項(xiàng)目合同評審流程圖與知識產(chǎn)權(quán)保護(hù)協(xié)議
- 二零二五年度租賃合同解除與物業(yè)交接規(guī)范協(xié)議
- 2025年度車庫停車費(fèi)收入抵押擔(dān)保服務(wù)協(xié)議
- 2025年度煤炭清潔能源利用推廣合同
- 二零二五年度演員現(xiàn)場安全與應(yīng)急處理合同
- 二零二五年度酒店住宿貨款分期支付合同
- 2025年度合同終止風(fēng)險評估與法律應(yīng)對律師服務(wù)合同
- 2025年度老房子買賣合同附贈周邊配套升級協(xié)議
- 2025年度直管公房租賃與租賃合同續(xù)簽服務(wù)合同
- 高校鑄牢中華民族共同體意識教育的路徑研究
- 《面神經(jīng)炎護(hù)理措施分析》3900字(論文)
- 城市微電網(wǎng)建設(shè)實(shí)施方案
- 企業(yè)文化融入中華傳統(tǒng)文化的實(shí)施方案
- 9.1增強(qiáng)安全意識 教學(xué)設(shè)計 2024-2025學(xué)年統(tǒng)編版道德與法治七年級上冊
- 《化工設(shè)備機(jī)械基礎(chǔ)(第8版)》全套教學(xué)課件
- 人教版八年級數(shù)學(xué)下冊舉一反三專題17.6勾股定理章末八大題型總結(jié)(培優(yōu)篇)(學(xué)生版+解析)
- 2024屆上海高考語文課內(nèi)古詩文背誦默寫篇目(精校版)
- DL-T5024-2020電力工程地基處理技術(shù)規(guī)程
- 初中數(shù)學(xué)要背誦記憶知識點(diǎn)(概念+公式)
- 駕照體檢表完整版本
評論
0/150
提交評論