【正文】
22/8/17 61 角色 ?關聯(lián)的每一端稱為一個角色 對象類 對象類 限定符 關聯(lián) 對象類 多重性 角色名:類 限定符 角色名:類 多重性 關聯(lián)名 name Multiplicity expression navigability 上海交通大學計算機科學與工程系 2022/8/17 62 多重性 ?多重性 Multiplicity 定義了類 A有多少實例可以和類 B的一個實例關聯(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上海交通大學計算機科學與工程系 2022/8/17 63 zero or more。但是它顯示的信息實際上已經(jīng)存在了,這是我們可以排除它的理由。這些方式都應避免,并且這種過量的建模工作反而會導致分析停滯,這種調查幾乎不會有什么回報。 ?領域模型用一套類圖來表示,這些類沒有操作。上海交通大學計算機科學與工程系 第 5講 . 細化階段與領域模型 上海交通大學計算機科學與工程系 2022/8/17 2 內(nèi)容提要 ?細化階段 ?領域模型 ? 領域模型 ? 概念類 ? 關聯(lián) ? 屬性 ?系統(tǒng)順序圖 ?契約 上海交通大學計算機科學與工程系 1. 細化階段 上海交通大學計算機科學與工程系 2022/8/17 4 ?一般,細化階段由兩到四個迭代構成;每一個迭代持續(xù)的時間建議在兩到六周之間 ?該階段的主要任務包括構建核心架構,解決高風險問題,完成絕大部分需求的定義,并估計總的時間和資源 上海交通大學計算機科學與工程系 2022/8/17 5 ?保證架構,需求和計劃足夠穩(wěn)定,風險被充分規(guī)避 ?確定和解決項目中所有與架構密切相關的風險 ?從與架構密切相關的場景中確定一個基準體系架構 ?產(chǎn)生一個達到產(chǎn)品級質量水準的演化性原型,也可以是一個或更多個探索型 \拋棄型原型 ?能夠展示基準的體系架構以合理的價格和合適的時間支持系統(tǒng)需求 ?建立一個支持環(huán)境 上海交通大學計算機科學與工程系 2022/8/17 6 ?盡快定義和驗證體系架構,并確定體系架構基線 ?細化遠景 ?為構造階段建立詳細的迭代計劃并建立基線 ?細化開發(fā)用例并將其部署到開發(fā)環(huán)境中 ?細化體系架構并選擇組件 上海交通大學計算機科學與工程系 2022/8/17 7 定義 ? 用一句話表達細化 ? 構造核心體系架構,解決高風險,定義絕大部分需求,并估計總體計劃和資源 ? 關鍵思想和實踐 ? 實行短時間定量、風險驅動的迭代 ? 及早開始編程 ? 對架構的核心和風險部分進行適應性設計,實現(xiàn)和測試 ? 盡早,頻繁,實際的測試 ? 基于來自測試,用戶,開發(fā)者的反饋進行調整 ? 通過一系列討論會,詳細編寫大部分用例和其他需求,每個細化迭代舉行一次 上海交通大學計算機科學與工程系 2022/8/17 8 對下一輪迭代進行計劃 ?風險 ? 技術復雜性 ? 其他因素 ?覆蓋性 ? 在早期迭代中,系統(tǒng)中主要的部分都有所涉及 ?關鍵性 ? 具有高業(yè)務價值的功能 ?在每個迭代前將用例和特征進行排序 上海交通大學計算機科學與工程系 2022/8/17 9 用例 amp。它不是用來描述軟件類、軟件架構領域層或有職責軟件對象的一組圖。 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上海交通大學計算機科學與工程系 2022/8/17 23 ?避免瀑布思維傾向,為完成詳盡或“正確”的領域模型而進行大量建模工作。對于每一次運貨,系統(tǒng)必須記住搬運的 時間 , 誰 接收了貨品, 什么貨品 ,每一種的 數(shù)量 有多少 上海交通大學計算機科學與工程系 2022/8/17 34 對銷售領域的備選概念類 ?對于 Process Sale的簡化情形 ? Register Product Specification ? Item SalesLineItem ? Store Cashier ? Sale Customer ? Payment Manager ? ProductCatalog 上海交通大學計算機科學與工程系 2022/8/17 35 報表對象 — 是否相關 ? ?收據(jù)是一次銷售的報告。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 上海交通大學計算機科學與工程系 2022/8/17 51 例子 ? NextGen POS初步的領域模型 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上海交通大學計算機科學與工程系 2022/8/17 52 領域模型 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 上海交通大學計算機科學與工程系 5. 深入用例建模: 為系統(tǒng)操作建立契約 (第 11章) 上海交通大學計算機科學與工程系 2022/8/17 94 什么是契約 ?通過 領域模型 中的對象的 狀態(tài)變換 ,定義了 系統(tǒng)操作執(zhí)行后 的 詳細的系統(tǒng)行為 上海交通大學計算機科學與工程系 2022/8/17 95 為什么引入契約概念 ?用例是統(tǒng)一過程中描述系統(tǒng)行為的主要機制,而且通常也是足夠的 . ?但是,某些時候我們需要對系統(tǒng)行為進行更詳細的描述 . 上海交通大學計算機科學與工程系 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)事件 調用系統(tǒng)操作 系統(tǒng)事件 makeNewSale 調用 系統(tǒng)操作 makeNewSale 等等 這和面向對象編程一樣 當我們說 消息 foo 調用了 方法 (處理操作 ) foo 上海交通大學計算機科學與工程系 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) : ? 一個 SalesLineItem的實例 sli被創(chuàng)建 ? Sli與當前的 Sale 對象相關聯(lián) ? ?依據(jù) itemID的匹配, sli 與 ProductSpecification相關聯(lián) 上海交通大學計算機科學與工程系 2022/8/17 98 后置條件 ?后置條件描述了領域模型中對象狀態(tài)的變化 . ? 實例創(chuàng)建和刪除 ? 屬性修改 ? 關聯(lián)形成和打破 ?后置條件與領域模型密切相關 ? 在領域模型中創(chuàng)建實例和關聯(lián) 上海交通大學計算機科學與工程系 2022/8/17 99 后置條件的優(yōu)點 ? ? ?描述了系統(tǒng)操作所需要的狀態(tài)變化,而不需要描述如何實現(xiàn)的 ? 后置條件 : ? SalesLineItem 的一個實例 sli 被創(chuàng)建 (instance creation) ? sli 與目前的 Sale對象相關聯(lián) (association formed) ? 被賦值 (attribute modification) ? 依據(jù) itemID的匹配關系, sli 與 ProductSpecification對象相關聯(lián) (association formed) 并未說明 SalesLineItem的對象 sli是如何被創(chuàng)建的 上海交通大學計算機科學與工程系 2022/8/17 100 我們需要完整的契約描述嗎 ?契約可能并不需要 ?可以盡早編寫后置條件,但是并不需要寫得完整和詳細,因為后面可以進一步改進 上海交通大學計算機科學與工程系 2022/8/17 101 契約 vs. 用例 ?用例是項目需求的主要表達手段 ?如果我們需要表示詳細和復雜的狀態(tài)變化,可以使用契約 上海交通大學計算機科學與工程系 2022/8/17 102 指南 ?為了制定一個契約 : ? 從 SSD中識別系統(tǒng)操作 ? 對于復雜的,結果比較微妙的系統(tǒng)操作,或者在用例中表達不清楚的系統(tǒng)操作,構造一個契約 ? 為了描述后置條件,使用下列列表 ?實例創(chuàng)建或刪除 ?屬性修改 ?關聯(lián)形成或者打破