【正文】
22/8/17 61 角色 ?關(guān)聯(lián)的每一端稱為一個(gè)角色 對(duì)象類 對(duì)象類 限定符 關(guān)聯(lián) 對(duì)象類 多重性 角色名:類 限定符 角色名:類 多重性 關(guān)聯(lián)名 name Multiplicity expression navigability 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 62 多重性 ?多重性 Multiplicity 定義了類 A有多少實(shí)例可以和類 B的一個(gè)實(shí)例關(guān)聯(lián) I t emS t or eS t oc k s*m u l t i pl i c i t y o f t h e r o l e1上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 63 zero or more。但是它顯示的信息實(shí)際上已經(jīng)存在了,這是我們可以排除它的理由。這些方式都應(yīng)避免,并且這種過(guò)量的建模工作反而會(huì)導(dǎo)致分析停滯,這種調(diào)查幾乎不會(huì)有什么回報(bào)。 ?領(lǐng)域模型用一套類圖來(lái)表示,這些類沒(méi)有操作。上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 第 5講 . 細(xì)化階段與領(lǐng)域模型 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 2 內(nèi)容提要 ?細(xì)化階段 ?領(lǐng)域模型 ? 領(lǐng)域模型 ? 概念類 ? 關(guān)聯(lián) ? 屬性 ?系統(tǒng)順序圖 ?契約 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 1. 細(xì)化階段 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 4 ?一般,細(xì)化階段由兩到四個(gè)迭代構(gòu)成;每一個(gè)迭代持續(xù)的時(shí)間建議在兩到六周之間 ?該階段的主要任務(wù)包括構(gòu)建核心架構(gòu),解決高風(fēng)險(xiǎn)問(wèn)題,完成絕大部分需求的定義,并估計(jì)總的時(shí)間和資源 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 5 ?保證架構(gòu),需求和計(jì)劃足夠穩(wěn)定,風(fēng)險(xiǎn)被充分規(guī)避 ?確定和解決項(xiàng)目中所有與架構(gòu)密切相關(guān)的風(fēng)險(xiǎn) ?從與架構(gòu)密切相關(guān)的場(chǎng)景中確定一個(gè)基準(zhǔn)體系架構(gòu) ?產(chǎn)生一個(gè)達(dá)到產(chǎn)品級(jí)質(zhì)量水準(zhǔn)的演化性原型,也可以是一個(gè)或更多個(gè)探索型 \拋棄型原型 ?能夠展示基準(zhǔn)的體系架構(gòu)以合理的價(jià)格和合適的時(shí)間支持系統(tǒng)需求 ?建立一個(gè)支持環(huán)境 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 6 ?盡快定義和驗(yàn)證體系架構(gòu),并確定體系架構(gòu)基線 ?細(xì)化遠(yuǎn)景 ?為構(gòu)造階段建立詳細(xì)的迭代計(jì)劃并建立基線 ?細(xì)化開(kāi)發(fā)用例并將其部署到開(kāi)發(fā)環(huán)境中 ?細(xì)化體系架構(gòu)并選擇組件 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 7 定義 ? 用一句話表達(dá)細(xì)化 ? 構(gòu)造核心體系架構(gòu),解決高風(fēng)險(xiǎn),定義絕大部分需求,并估計(jì)總體計(jì)劃和資源 ? 關(guān)鍵思想和實(shí)踐 ? 實(shí)行短時(shí)間定量、風(fēng)險(xiǎn)驅(qū)動(dòng)的迭代 ? 及早開(kāi)始編程 ? 對(duì)架構(gòu)的核心和風(fēng)險(xiǎn)部分進(jìn)行適應(yīng)性設(shè)計(jì),實(shí)現(xiàn)和測(cè)試 ? 盡早,頻繁,實(shí)際的測(cè)試 ? 基于來(lái)自測(cè)試,用戶,開(kāi)發(fā)者的反饋進(jìn)行調(diào)整 ? 通過(guò)一系列討論會(huì),詳細(xì)編寫(xiě)大部分用例和其他需求,每個(gè)細(xì)化迭代舉行一次 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 8 對(duì)下一輪迭代進(jìn)行計(jì)劃 ?風(fēng)險(xiǎn) ? 技術(shù)復(fù)雜性 ? 其他因素 ?覆蓋性 ? 在早期迭代中,系統(tǒng)中主要的部分都有所涉及 ?關(guān)鍵性 ? 具有高業(yè)務(wù)價(jià)值的功能 ?在每個(gè)迭代前將用例和特征進(jìn)行排序 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 9 用例 amp。它不是用來(lái)描述軟件類、軟件架構(gòu)領(lǐng)域?qū)踊蛴新氊?zé)軟件對(duì)象的一組圖。 no t pa r to f d o m a i n m od e lS a l ed at et i m ep r i n t ( )avoid上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 23 ?避免瀑布思維傾向,為完成詳盡或“正確”的領(lǐng)域模型而進(jìn)行大量建模工作。對(duì)于每一次運(yùn)貨,系統(tǒng)必須記住搬運(yùn)的 時(shí)間 , 誰(shuí) 接收了貨品, 什么貨品 ,每一種的 數(shù)量 有多少 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 34 對(duì)銷售領(lǐng)域的備選概念類 ?對(duì)于 Process Sale的簡(jiǎn)化情形 ? Register Product Specification ? Item SalesLineItem ? Store Cashier ? Sale Customer ? Payment Manager ? ProductCatalog 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 35 報(bào)表對(duì)象 — 是否相關(guān) ? ?收據(jù)是一次銷售的報(bào)告。s view of the noteworthy concepts in the domain. UP Design Model The objectoriented developer has taken inspiration from the real world domain in creating software classes. Therefore, the representational gap between how stakeholders conceive the domain, and its representation in software, has been lowered. 1 1 1 1 inspires objects and names in 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 51 例子 ? NextGen POS初步的領(lǐng)域模型 S t o r eR e g i s t e r S a l eI t e mP a y m e n tS a l e sL i n e I t e mC a s hi e r C u s t om e r M an a g e rP r o d u c tC a t a l o gP r o d u c tS p e c i f i c a ti o n上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 52 領(lǐng)域模型 amp。 data system operations design objects to handle the system events parameter or return data may be elaborated in the Glossary Design Model Environment Development Case 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 5. 深入用例建模: 為系統(tǒng)操作建立契約 (第 11章) 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 94 什么是契約 ?通過(guò) 領(lǐng)域模型 中的對(duì)象的 狀態(tài)變換 ,定義了 系統(tǒng)操作執(zhí)行后 的 詳細(xì)的系統(tǒng)行為 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 95 為什么引入契約概念 ?用例是統(tǒng)一過(guò)程中描述系統(tǒng)行為的主要機(jī)制,而且通常也是足夠的 . ?但是,某些時(shí)候我們需要對(duì)系統(tǒng)行為進(jìn)行更詳細(xì)的描述 . 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 96 系統(tǒng)操作和系統(tǒng)接口 : Cashier :System addLineItem(itemID, quantity) endSale() makePayment(amount) description, total total with taxes change due, receipt * [more items] makeNewSale() 輸入的系統(tǒng)事件 調(diào)用系統(tǒng)操作 系統(tǒng)事件 makeNewSale 調(diào)用 系統(tǒng)操作 makeNewSale 等等 這和面向?qū)ο缶幊桃粯? 當(dāng)我們說(shuō) 消息 foo 調(diào)用了 方法 (處理操作 ) foo 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 97 契約的例子: enterItem ? enterItem ? 契約 CO2: enterItem ? 操作( Operation) : enterItem(itemID: ItemID, quantity: integer) ? 交叉參考( Cross References) : Use Cases: Process Sale ? 前提( Preconditions) : There is a sale underway ? 后置條件( Postconditions) : ? 一個(gè) SalesLineItem的實(shí)例 sli被創(chuàng)建 ? Sli與當(dāng)前的 Sale 對(duì)象相關(guān)聯(lián) ? ?依據(jù) itemID的匹配, sli 與 ProductSpecification相關(guān)聯(lián) 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 98 后置條件 ?后置條件描述了領(lǐng)域模型中對(duì)象狀態(tài)的變化 . ? 實(shí)例創(chuàng)建和刪除 ? 屬性修改 ? 關(guān)聯(lián)形成和打破 ?后置條件與領(lǐng)域模型密切相關(guān) ? 在領(lǐng)域模型中創(chuàng)建實(shí)例和關(guān)聯(lián) 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 99 后置條件的優(yōu)點(diǎn) ? ? ?描述了系統(tǒng)操作所需要的狀態(tài)變化,而不需要描述如何實(shí)現(xiàn)的 ? 后置條件 : ? SalesLineItem 的一個(gè)實(shí)例 sli 被創(chuàng)建 (instance creation) ? sli 與目前的 Sale對(duì)象相關(guān)聯(lián) (association formed) ? 被賦值 (attribute modification) ? 依據(jù) itemID的匹配關(guān)系, sli 與 ProductSpecification對(duì)象相關(guān)聯(lián) (association formed) 并未說(shuō)明 SalesLineItem的對(duì)象 sli是如何被創(chuàng)建的 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 100 我們需要完整的契約描述嗎 ?契約可能并不需要 ?可以盡早編寫(xiě)后置條件,但是并不需要寫(xiě)得完整和詳細(xì),因?yàn)楹竺婵梢赃M(jìn)一步改進(jìn) 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 101 契約 vs. 用例 ?用例是項(xiàng)目需求的主要表達(dá)手段 ?如果我們需要表示詳細(xì)和復(fù)雜的狀態(tài)變化,可以使用契約 上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系 2022/8/17 102 指南 ?為了制定一個(gè)契約 : ? 從 SSD中識(shí)別系統(tǒng)操作 ? 對(duì)于復(fù)雜的,結(jié)果比較微妙的系統(tǒng)操作,或者在用例中表達(dá)不清楚的系統(tǒng)操作,構(gòu)造一個(gè)契約 ? 為了描述后置條件,使用下列列表 ?實(shí)例創(chuàng)建或刪除 ?屬性修改 ?關(guān)聯(lián)形成或者打破