[系分] 細化階段-基礎迭代

Iteration 1 Basics


閱讀書上第8章

在迭代開發中不是一次性實現所有需求,而是在多次迭代中對同一個用例進行增量開發

Elaboration(細化)

  • 是一般項目中最初的一系列迭代
  • 構建核心架構
  • 定義主要需求
  • 解決/規避高風險元素、估計整體進度安排和資源

相關製品

  • 領域模型
  • 設計模型:軟件類圖、對象交互圖、包圖
  • 軟件架構文檔
  • 數據模型:數據庫建模
  • 用例storyboard、UI原型

通過以下三個要素來組織需求和迭代

  • risk:包括技術難度、可用性的不確定性等
  • coverage:對大量構件進行“廣泛膚淺“的實現
  • criticality: 客戶認爲具有高業務價值的功能

Domain Models


閱讀書上第9章

領域模型定義

  • 一組沒有定義操作的類圖
  • 對概念類/現實世界中的對象的可視化表示,而不是軟件語言中的對象
  • 也叫做 conceptual model, domain object models,analysis object models

領域模型的重點

  • 提供了conceptual perspective
    • 概念類(domain object或conceptual classes)
    • 關聯(association)
    • 屬性(attributes)

如何創建領域模型(重點) 書上P116

  • 找到概念類
    • reuse or modify existing models
    • use a category list
    • Identify noun phrases from the case text
    • 識別名詞,這些名詞有可能是候選概念類,也可能是概念類的屬性
    • 在POS案例中”Receipt(收據)“是否需要成爲一個概念類
      • 不需要:收據是顯示其他信息的報表、彙總,所以沒有必要
      • 需要:在退貨情況下,需要持票據才能退貨,模型就需要表示
    • 如果認爲某概念類X不是現實世界中的數字或文本,那麼X可能就是概念類而不是屬性
    • 描述類:一個具體的item可能有序列號表示物理實例,一個productdescription 則記錄item的描述信息
  • 把概念類當做UML類圖草圖畫出(沒有方法)
  • 添加必要的關聯來記錄概念類之間的關係
    • 關聯名稱首字母需要大寫
  • 添加必要的屬性來滿足需求信息
    • 可見性 名稱: 類型 多重性 = 默認值 {特性表}
    • 一般可見性默認爲私有
    • ‘/’表示導出屬性
    • 定義新的數據類型類
    • 任何屬性不表示外鍵,應該採用關聯,而不是外鍵屬性

state diagram(狀態圖)

  • 描述一個事物/對象受外部刺激/消息產生可見的狀態(屬性/屬性組合)的數據變化
  • 確定狀態集合
  • 確定外部時間和變遷條件
  • 檢查邏輯完整性:終點可達性、循環分析

System Sequence Diagrams


閱讀書上第10章

SSD

  • 用例文本、系統事件作爲輸入,SSD中的操作作爲操作契約和對象設計的輸入
  • 對於用例的一個特定場景,外部參與者產生的時事件,其順序和系統之內的事情
  • ”:“和下劃線表示其爲實例

Operation Contracts


閱讀書上第11章

sections of contract

  • operation:操作的名稱與參數
  • cross reference:發生此操作的用例
  • precondition:執行操作之前,系統或對象狀態的重要假設
  • postcondition:完成操作之後,領域模型對象的狀態

system operation

  • 在畫SSD時,其中的系統事件調用系統操作

postconditions

  • 描述領域模型中狀態的改變,包括實例創建/建立或取消關聯/改變屬性
  • 描述後置條件,可以使得系統操作的效果更加明顯

如何編寫contract(契約)

  1. 從SSD中確定系統操作
  2. 當系統操作複雜時,在用例中不清楚,就創建操作契約
  3. 使用以下類別來描述後置條件
    • 創建和刪除實例/修改屬性/形成和清除關聯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章