業務用例和系統用例
業務用例與系統用例具有同樣的特徵,因此編寫和評審用例的方法對兩者都適用。在業務用例中說明的東西,也會在系統用例中說明。這形成了系統用例和使用者用例之間的合作。但這樣帶來了兩個壞訊息。
第一個壞訊息:編寫者和讀者經常把二者弄混,可能把系統行為放入業務用例中,也可能把業務操作歸於系統用例。如果能夠商量著去做將會有所協助,但通常編寫者和讀者不會認識到這樣做的重要性。使用系統用例的讀者批評業務用例所處層次太高,但卻沒有認識到提供系統詳細行為細節不是業務用例應該做的。業務用例編寫者偶爾把系統行為細節寫入其中,結果導致業務主管對這類有詳細細節行為的文檔失去了興趣。
為了減少這種混亂,應該經常在用例模板中寫明用例範圍及層次,讓用例編寫者依此規則編寫,同時讓讀者瞭解這些規則。如果可以的話,盡量對用例使用表徵圖。對兩者使用稍微不同的模型和用完全不同的數字進行編號(如一組從1000開始對用例編號,另一組從1開始編號)。同時,編寫一些可以直接使用和可視化的構件。這樣就可以既能充分利用這種合作關係,又不會讓人混淆。
第二個壞訊息:完全且正確地串連系統和使用者用例不太值得。通常,業務用例編寫者應對業務過程到系統使用(通常沒有描述)進行描述。而在描述日常生活中客戶如何使用新系統之前,用例編寫者已經花光時間、財力、精力及熱情。而系統用例編寫者有時為了保持一致,會在業務過程中加一兩句,但是他們通常不願意重寫一個包含新系統功能的業務用例。
這樣就在系統用例和業務用例之間形成了空隙,即系統用例和業務用例之間不一致。FirePond的Rusty Walters對此評論如下。
在完整的業務用例展開為系統用例方面,我有一些成功的經驗。根據我的經驗,通常把業務用例分為3個層次:開始是少數幾個黑盒、雲朵級業務用例;然後很快轉換為白盒、雲朵級業務用例;最後展開為白盒、風箏級業務用例。
然而,在此過程中,看不到業務用例和系統用例之間清晰的串連。
在下面的論述中,FirePond的Rusty Walters闡述了他在業務過程用例方面的經驗。
◆ Rusty Walters:業務建模和系統需求 |
受益於早先曾經閱讀過你的書,我通過以前的嘗試能夠對問題合理規劃,並且能利用新的知識。 閱讀前的經曆: 在閱讀這本書之前,我從事過產品組中幾個應用程式功能需求文檔的編寫工作。 在一個應用程式開發中,我們編寫各個層次的系統用例,包括概要級、使用者級和子功能級。我們主要集中在系統功能方面。對建模後的結果也非常滿意,它非常易於理解。同時,我們也覺得沒有開發業務用例來展示整個環境的必要,系統概要用例就包括了我們全部的需求。 在另一個應用程式開發中,雖然還是同樣的開發組負責用例 |
建模,情況卻完全不同。回顧起來,我明白問題的癥結在於,不同組的成員從不同角度接近系統。我從業務過程到技術進行建模,有的人卻從技術到業務過程進行建模。毫無疑問,在兩組設計人員中,每個用例的設計範圍不清晰。 在從業務過程到技術進行建模的組中,他們從不編寫系統用例;而在從技術到業務過程進行建模的組中,他們也從不編寫業務用例。相反,由於兩組都希望直接利用對方編寫的用例,因此難免正面衝突和相互指責。由於當時對界定用例範圍層次沒有遠見並且缺少必要的理解,用例模型變得相當混亂。直到最後,整個小組對用例模型仍不滿意。 |
事實上,整個小組都知道這樣有問題,但卻不知道癥結何在。 閱讀後的經驗: 正如我在一個試圖理解和文檔化開發過程的小組中發現的,從核心業務到技術進行建模似乎不會導致什麼混亂。
我們一起討論業務過程及其內部工作方式(不包括軟、硬體系統)時,每一個人都很清楚。而混亂出現的地區確實與業務和部門的範圍有關係。 我們從業務中很概要級(雲朵級)的黑盒用例開始,大家對這些用例都很清楚,甚至包括那些從事底層建模的人。然後,如書本中所說的一樣,很快寫出很概要級(雲朵級)的白盒用例。 |
當我們決定討論下一低層次用例時,設計域(即我們是討論整個業務,還是某個部門)引發的混亂出現了。這個問題也與如何建立後續用例有關。在一個特殊的例子中,當我們認識到那些應該在調用用例中實現,而不應該作為當前用例的一部分後,刪除了上面兩個步驟。同時開發組也不打算把業務用例展開為系統用例需求。 雖然在會議期間很難注意和修正整個過程,但會後,對問題域的理解相對容易一些。在文檔化會議結果的過程中,我使用設計域語境圖,用表徵圖明每個用例的範圍和層次。如果圖足夠簡單,就會給讀者留下深刻印象,並直接浮現在讀者腦海中。 |
本文節選自《編寫有效用例》一書
[美]AlistairCockburn(阿利斯泰爾.科伯恩) 著
王雷,張莉譯
圖書詳細資料:http://blog.csdn.net/broadview2006/article/details/7736848