2010年11月5日 星期五

書摘 - 《寫給SA的UML/Use Case實務手冊》

 

參與者的特性:

  1. 參與者位於系統外部,它不屬於系統的一部分,所以我們不需要去建造參與者。
  2. 只有會使用系統,會跟系統互動,會跟系統交換資訊者,才會視系統的參與者。
  3. 參與者會啟動、參與使用案例,所以找到參與者,就可以引道我們找到使用案例。
  4. 我們雖然不需要建造參與者,但是卻需要考慮介面。系統需要提供介面讓參與者使用,或者系統需要使用到參與者提供的介面。

尋找參與者的問題表:

  1. 誰會來使用這個系統?
  2. 誰會來安裝這個系統?
  3. 誰會來啟動這個系統?
  4. 誰會來維護這個系統?
  5. 誰會來關閉這個系統?
  6. 那些其他的系統會來使用這個系統?
  7. 誰會從這個系統取得資訊?
  8. 誰會提供資訊給這個系統?
  9. 在預設的時間到時,有時麼事情會自動發生嗎?
  10. 那些其他的系統會與這個系統連線的?
  11. 可有硬體設備會與這個系統連線?
  12. 那些資料庫會與這個系統連線?
  13. 公司內部有哪些人員會來使用這個系統?
  14. 公司外部可有什麼樣的人士會來使用這個系統?
  15. 當特定的時間或事件發生時,這個系統需要自動通知什麼人,或者是自動通知其他系統嗎?

參與者種類表:

種類 細項 參與者
公司內部的人  
公司外部的人  
系統 其他系統(內部)  
其他系統(外部)  
硬體設備    
   

系統簡述:

  • 系統名稱:
  • 系統簡述:<用三兩句話點出系統的主要特色>
  • 重點整理:
    1. <最好可以使用條列式的方式,將討論到的或者想到重要的,一一條列下來,方便日後回顧。>

使用案例的問題表:

  1. 參與者想要從這個系統獲得什麼樣的功能?
  2. 這個系統儲存資訊嗎?那些參與者將建立、讀取、更新或刪除這些資訊?
  3. 當系統內部狀態有變動時,這個系統需要通知參與者嗎?
  4. 是否有什麼外部事件是這個系統需要知道的?當這些外部事件發生時,那些參與者會通知這個系統?
  5. 這個系統需要定期執行什麼工作嗎?
  6. 當發生了某些重要的外部事件時,這個系統需要自動執行什麼工作嗎?
  7. 這個使用案例的名稱夠明確嗎?是不是可以從這個使用案例的名稱,直接判斷出它的產出?
  8. 這個使用案例會有多樣產出結果嗎?還是這些產出結果,其實是在不同的時間點產出的?

使用案例要點表:

使用案例 要點 說明
名稱 產出  
重要步驟  
議題  

使用案例敘述最簡版:

  • 使用案例:<名稱>
  • 事件流程:
    1. <起始點>
    2.  
    3. <終結點>

替代流程的問題表:

  1. 在這個流程步驟上頭,是否還有其他替代的動作?
  2. 在這個流程步驟上頭,是否會發生什麼樣的錯誤?
  3. 在整個使用案例執行過程中,是否隨時可能發生其他未記錄在敘述中的動作?
  4. 參與者輸入資料時,是否會提供不完整的資料,需要重新補上的?
  5. 是否會出現錯誤的資料,需要特別處理的?
  6. 參與者是否會在操作期間,臨時中斷流程?
  7. 參與者是否會在使用案例期間,隨時取消互動?
  8. 參與者是否會想要挑選其他的執行方法?
  9. 參與者在流程執行過程中,會不會有需要協助的地方?
  10. 系統發生當機時,是否需要特殊的處置?
  11. 系統反應時間過長時,是否需要特殊的對應方法?

替代流程分類表:

  • 替代流程:
    • 替代1:不完整的資料
    • 替代2:錯誤的資料
    • 替代3:取消或中斷操作
    • 替代4:其他的執行方法
    • 替代5:需要協助
    • 替代6:系統當機或無回應

包含關係要點表:

  1. 需要共享的相同流程,才能夠獨立出來
  2. 暫存資料或者存取資料庫的動作,不要輕易獨立出來。
  3. 如果只是一兩句相同的流程敘述,不需要大費周章地獨立出來。

擴充關係要點表:

  1. 謹慎地使用擴充關係,避免因為濫用擴充關係,而讓使用案例圖變得很難理解。
  2. 擴充關係通常使用在系統上線之後的改版,可以在不變動已經寫好的使用案例敘述的情況下,利用擴充關係,加上一段新的使用案例敘述,以滿足新的需求。
  3. 不一定會執行的流程,可以放置在替代流程中;要是想要跟其他使用案例共用這段流程的話,也可以改用擴充關係。

切分次系統使用案例的步驟表:

  1. 判斷原先的系統使用案例比較適合分配給哪個次系統,然後幫這個次系統新增一個同名的次系統使用案例。
  2. 再者,原先的系統使用案例敘述中,大部分的流程步驟,都留給這個同名的次系統使用案例。
  3. 然後,將不適合流在新的次系統使用案例中的其餘步驟切分出來,分配給其他次系統,形成其他次系統內部的次系統使用案例。在分派的時候,可以趁機再一次檢視並修訂使用案例敘述,成為新的次系統使用案例敘述。
  4. 接著,更新次系統的使用案例圖,以及重新整理次系統使用案例敘述。
  5. 最後,繪製其他次系統的使用案例圖,以及撰寫這些次系統使用案例敘述。

使用案例圖和使用案例敘述的完整性檢視:

  • 您是否有發現任何新的參與者?以及,是否有哪些參與者是不需要的?
  • 是否有任何參與者不小心被移進系統內了?或者,有任何事物應該位於系統內部,可是卻不小心被移到系統外了?
  • 是否所有參與者的名稱和說明都是有意義,而且閱讀者都能夠容易理解?
  • 您是否有發現任何新的使用案例?是否有遺漏掉任何使用案例呢?
  • 是否所有使用案例的名稱和敘述都是有意義,而且閱讀者都能夠容易理解?
  • 在所有的使用案例敘述中,是否至少描述了一條主要流程?
  • 在所有的使用案例敘述中,是否都有描述替代流程?

決定使用案例的細膩度:

  • 誰需要閱讀並且逼准這份使用案例敘述文件?
  • 誰需要使用這份使用案例敘述文件?
  • 這份使用案例敘述文件用來做什麼的?

 

估計工時=>

使用案例點計算公式:

  1.      未經調整的使用案例點=參與者總權重+使用案例總權重
  2.    技術複雜因子=0.6+(0.01*技術總權重)
  3.      環境因子=1.4+(-0.03*環境總權重)
  4.      使用案例點=未經調整的使用案例點*技術複雜因子*環境因子
  5.   工時=使用案例點*20人時(或28人時)

            參與者加權值:

  1.      簡單型參與者:這類型的參與者通常是其他系統,採用程是介面與我們所開發的系統互動。簡單型參與者的加權值是1。
  2. 一般型參與者:這類型的參與者有兩種:第一種是採用特殊協定互動的其他系統;第二種是採用文字模式互動的人類使用者。普通型參與者的加權值是2。
  3. 複雜型參與者:這類型的參與者就是我們常見的人類使用者,採用豐富且親和力高的圖形介面。複雜型參與者的加權值是3。

       使用案例加權值(依業務量):

  1.      簡單型使用案例:這類型的使用案例擁有少於3個的業務量,它的加權值是5。
  2.  一般型使用案例:這類型的使用案例擁有4~7個的業務量,它的加權值是10。
  3.  複雜型使用案例:這類型的使用案例擁有多於7個的業務量,它的加權值是15。

       使用案例加權值(依物件量):

  1.      簡單型使用案例:這類型的使用案例使用了少於5種的分析物件,它的加權值是5。
  2. 一般型使用案例:這類型的使用案例使用了5~10種的分析物件,它的加權值是10。
  3. 複雜型使用案例:這類型的使用案例使用了多於10種的分析物件,它的加權值是15。

技術因子和加權值

(強烈等級評分:0是最弱的,3是中等強度,5是最強烈的等級。)

因子 說明 加權值 強烈等級 技術權重
T1

分散式系統

2    
T2

反應時間(連線)

1    
T3

終端使用者效能

1    
T4

複雜的內部處理

1    
T5

程式碼可重用程度

1    
T6

容易安裝

0.5    
T7

容易使用

0.5    
T8

便於攜帶

2    
T9

容易更改

1    
T10

同步性

1    
T11

包含特殊的安全機制

1    
T12

提供直接存取給第三方

1    
T13

特殊的使用者培訓設施要求

1    

環境因子和加權值

(強烈等級評分:0是最弱的,3是中等強度,5是最強烈的等級。)

因子 說明 加權值 強烈等級 技術權重
E1

熟悉循環式開發方法

1.5    
E2

應用領域的經驗

0.5    
E3

物件導向的經驗

1    
E4

分析師的能力

0.5    
E5

幹勁

1    
E6

穩定的需求

2    
E7

兼職的工作人力

-1    
E8

困難的程式語言

-1    

負面因子:

E1~E6,強烈等級低於3的個數;E7~E8,強烈等級高於3的個數;兩個數字加總,即為負面因子個數。

  1. ≦2:專案的總負面因子少於或等於2時,可以採用20人時來估算。
  2. 3~4:專案的總負面因子個數等於3或4時,可以採用28人時來估算。
  3. ≧5:專案的總負面因子個數大於或等於5時,專案失敗的可能性非常高,最好可以調整專案,直到專案的負面因子個數降到5以下為止。

沒有留言:

張貼留言