PS;這部分內容第一次接觸.但是依照前面專題<3>所講.它是設計使用案例圖的基礎.位於需求萃取之後.做需求分析時用的方法.
1 事件分析相關概念
事件分析啟動了物件導向開發過程並作為後續模型開發的基礎,是確定使用者所需系統功能的強大技術。事件分析包含一些基本概念:事件、事件流、資料流。
1.事件
事件是在特定的時間發生的事情,並且啟動或觸發了系統的預置響應。事件分為外部、內部和定時三類。外來事件是發生在系統邊界外的事件。如讀者借書、顧客取款、學生選課等。
內部事件是發生在系統邊界內的事件。例如,當庫存商品的數量低於設定點時發出警示屬於內部事件。在涉及各對象動態行為的即時系統和協調系統中,內部事件很重要。
定時事件是發生在預定時間的事件。最常見的定時事件是觸發周期性的輸出的事件。例如,每個月的第三天為僱員發薪,每周一上午九點之前給經理呈報每周銷售報告。
2.事件流
事件流是指不包含與應用相關的細節特徵值的資訊流。它僅僅通知系統特定事件的發生並觸發系統響應,系統響應所需的所有必要資料都已經被儲存在系統內部了。
定時事件總是伴隨事件流。例如,定時事件“到了產生客戶消費賬單的時候了”,產生客戶消費賬單所需的資料已經在系統內部,不需要外部輸入。
3.資料流
資料流包含與應用程式相關的具有描述事件細節特徵值的資料元素。
例如,客戶從銀行取款,取款請求包括:賬戶、取款日前、取款額等資料。航空訂票請求包括:乘客姓名、乘坐日期、航班號、座位號、服務等級、航線裡程等資料。
資料流在事件分析中有兩個作用:它的到來觸發系統響應;它包含的資料是系統產生所需響應所必需的。系統響應所產生的資料流可以只包含一兩條資料項目,也可以是包含詳細資料項目的複雜報告。
PS: 資料流和結構化設計中資料流圖比較相似.
2 業務事件分析原理1.事件驅動原理
以事件的方式來理解系統行為採用的是“刺激-響應”方式。事件驅動系統的基本行為模式如下:
(1)系統空閑等待,直到有事件來觸發系統行為;
(2)事件發生時系統做出完整響應;
(3)響應完成後,系統繼續等待其他事件發生。
以提供館藏文獻查詢的圖書館自助查詢終端為例。查詢終端在圖書館預置位置等待讀者輸入查詢條件;讀者通過查詢條件進行查詢;查詢終端輸出查詢結果。
從事件分析的角度來看,系統就像自助查詢終端,等待輸入查詢條件或者觸發以執行預置動作。為了響應事件,系統或系統中的一些對象必須能夠識別發生的事件。事件的發生建置事件流,以訊號形式通知系統發生了特定事件。對於外來事件,進入系統的訊息必須同時包含特定資料以使系統正確響應。
根據分析人員的目的和系統開發階段不同,事件可以以不同規模和不同的細節程度來描述。例如,“客戶取款”是系統級的進階、大範圍事件,“輸入取款金額”(客戶在ATM上按鍵)是低級、小範圍事件。系統級的進階事件一般包含多個低級事件。研究系統需求時主要研究在系統整體層級上的事件,這些系統級事件被稱為業務事件。
2.“刺激-響應” 觀點
業務事件分析考察資訊處理系統所採用的是“刺激-響應”觀點。刺激就是系統的輸入,通報系統內容中事件發生的訊息或訊號。有些響應是包含預置訊息或訊號的系統輸出,另一些響應則在系統內部儲存空間中儲存資料。圖1是從“刺激-響應”觀點來看的外來事件。
圖1 外來事件及其組件
系統輸入和輸出是系統與其環境交流的惟一方式。這裡把系統想象成黑盒子,隱藏其內部發生的事情。系統獲知其環境發生事情的惟一方式就是通過接收到的包含所發生事件必要資訊的訊息來感知。外來事件獲知系統響應的惟一方式是來自黑盒子內部的訊息。具有訊息功能的刺激和響應的價值在於其傳播的資訊,這些訊息可以被歸入事件流或資料流。
事件是一個整體,事件分析時要著重於整體而非各部分。事件不同於事件的組件,系統輸入、系統的動作或行為、系統輸出作為事件的組件,自身都不是事件。
基於“刺激-響應”觀點,為獲得對使用者需求的精確理解,需要通過確定以下資訊來進行業務事件分析:
(1)系統需要響應的所有事件;
(2)與每個事件相關聯的刺激(系統輸入,事件流或資料流);
(3)所需的響應(系統輸出);
(4)對每個刺激進行響應所需的動作或行為。
3 業務事件分析方法1.描述業務事件
進行事件分析時,需要用精確地語言來確定和描述業務事件。用短語進行事件描述,可以獲得清晰地理解。下面提供每種類型事件(主要關注外來事件和定時事件)描述的特定樣式。
(1)描述外部業務事件
外來事件描述採用一個完整的主動語態句子。
例如:學生查詢成績;客戶從銀行賬戶中取款;顧客購買商品。
當指定外來事件時,句子的主語表示人、組織或環境中的系統,句子的謂語通常表示系統輸入——通知系統事件發生的訊息。
(2)描述定時業務事件
定時事件的描述採用短語“到……的時間了”或者“該……了”的樣式。
例如:到產生學校公修課程表的時間了。這和“產生學校公修課程表”不一樣,“產生學校公修課程表”表述了系統的動作(當事件發生時系統應該做的事情)而不是事件。
這裡,當指定定時事件時,句子的謂語通常表示系統的輸出——描述系統對事件響應的訊息。
2.確定參與者
參與者是提供系統輸入或接收系統輸出的人、組織或者其它系統。
確定參與者需要:
(1)找到提供系統輸入或者接收系統輸出的人、組織或環境中的系統;
(2)為參與者命名。
參與者的名字是描述該參與者的名詞或名詞短語。事件“學生查詢成績”中發出查詢請求的參與者是學生。
3.確定系統的輸入和輸出
系統輸入是通知系統需要瞭解的事件內容的訊息,是系統必須響應的刺激。系統輸出是系統為了響應事件而產生的訊息。
確定系統的輸入和輸出需要:
(1)找到與事件相關聯的進入或離開系統的資訊;
(2)為系統的輸入和輸出命名。
輸入和輸出的名字採用能描述包含在輸入或輸出中資訊的名詞(或名詞短語)。主要著重於輸入和輸出的資訊,而不強調動作。成績管理系統中,查詢請求包含了學號和課程資訊。
一般來說,輸入和輸出都被當作資料流。在物件導向系統中,輸入用訊息來表示;輸出可以用訊息或輸出對象來表示。需要注意,有時候外來事件只是在系統中儲存資料而不產生相應的輸出。
4.確定系統的動作
系統的動作是對事件作出響應時必須執行的一個動作或行為。
確定系統的動作需要:
(1)找到對事件作出響應時必須執行的動作或行為;
(2)為系統的動作命名。
動作的名字是該事件描述中包含的動詞短語。事件“學生借書”中系統的動作是借書。
當確定了事件、參與者、系統輸入和輸出、系統動作後,用事件表列出它們對於理解是很有協助的。
4 業務事件分析樣本
為了深入理解使用事件分析方法建立事件模型的過程,下面以一個高校公修課選課系統為例來進行事件分析。
1.高校公修課選課的背景
根據教務處的時間期限,每個學期的高校公修課班級計劃列表都在學生選課日期之前制定出來。根據這個時間期限,大學裡的每個系必須向教務處提交該學期的本系公修課班級計劃列表。這些列表中資訊綜合在一起形成最終的學校公修課班級計劃列表。學校公修課班級計劃列表被分發給各個系辦公室和每位教授,而學生可以在學校布告欄看到。
在預選課期間,學生對自己要選的班級提出請求(通過選課單方式)。每個班級請求包含學生的學號以及學生要選擇的公修課的班級號(註:一門課程可分多個班級)。如果該班級不能選,學生可以嘗試選擇同類課程的其他班級。當學生選擇了儘可能多(達到最大允許值)的班級後,學生獲得一份列印出來的班級列表。該列表顯示了學產生功選定的所有班級。
列出了所含學生的名字和學號的每個班級花名冊被列印出來後送給每位任課教授。
2.高校公修課選課系統的事件模型
根據背景描述,需要進行業務事件分析建置事件表。
(1)確定業務事件
高校公修課選課過程包含幾項活動:首先院系需要制定並向學校教務處本系公修課程開課計劃列表(開多少門課,每門課程分幾個班,每個班計劃人數、上課時間、地點、任課教師等資訊);然後學校教務處統計匯總、檢查審批並發布學校公修課班級計劃列表,院系、教授、學生可以看到;學生根據學校公修課程選課規則選擇班級,並獲得自己成功選定的所有班級列表;最後,教務處根據選課情況,列印出每個班級的花名冊送給相應的任課教授。總體分析後,我們確定四個必須的業務事件,並用推薦格式來描述:
1)系提交公修課班級計劃列表。這是一個外來事件,系統直到收到系提交的包含在班級計劃中的資訊後才作出響應。各系單獨上交系公修課班級計劃,系統將儲存資訊以備將來使用。
2)到產生學校公修課班級計劃列表的時間了。這是一個定時事件,當所有系都提交了所需要的資訊後學校公修課班級計劃列表才能產生 。
3)學生選擇班級。這是一個外來事件,系統完成每個學生選擇最大允許班級的請求並產生每個學生的班級列表,系統內部將這些資訊記錄下來。系統在學生完成班級選擇後可立即為其產生班級列表,並不需要等到所有學生都選擇完畢。
4)到產生班級花名冊的時間了。這是一個定時事件,當所有學生都完成班級選擇後系統用儲存的資料產生班級花名冊。事實上班級花名冊可以再某個班級被選滿後立即產生,這並不妨礙事件類型的確定。
(2)確定參與者
這個過程中需要知道誰提供系統輸入或從系統獲得輸出。
在外來事件“系提交公修課班級計劃列表”中,可以看出系向高校公修課選課系統提供了各系打算提供的各班級計劃資訊。系是這個事件的一個參與者。這個事件描述的句子主語是“系”。如果外來事件的描述恰當,那麼主語一般就是提供系統輸入的參與者。在“學生選擇班級”事件中,學生就是提供班級選擇資訊的參與者。“到產生學校公修課班級計劃列表的時間了”、“到產生班級花名冊的時間了”兩個定時事件由時間來觸發,認為不需要參與者提供外部輸入。
分析接收系統輸出的參與者,事件“系提交公修課班級計劃列表”只儲存資訊沒有輸出;事件“到產生學校公修課班級計劃列表的時間了”中,系、教授和學生收到了學校公修課班級計劃列表;“學生選擇班級” 事件中,學生收到了班級列表;“到產生班級花名冊的時間了”事件中,班級花名冊發到了各任課教授手中。
四個事件中,識別出系、學生和教授三個參與者。
(3)確定系統輸入和輸出
根據業務事件描述,在這裡確定並命名系統的輸入和輸出。在高校公修課選課系統中有兩個輸入:系公修課班級計劃列表(事件“系提交公修課班級計劃列表”),選擇班級請求(事件“學生選擇班級”)。三個輸出:學校公修課班級計劃列表(事件“到產生學校公修課班級計劃列表的時間了”),學生班級列表(事件“學生選擇班級”),班級花名冊(事件“到產生班級花名冊的時間了”)。
(4)確定系統動作
高校公修課選課系統中有四個業務事件,系統必須執行的一個動作或行為對這四個事件作出響應。這四個動作是:提交公修課班級計劃列表(事件“系提交公修課班級計劃列表”),產生學校公修課班級計劃列表(事件“到產生學校公修課班級計劃列表的時間了”),選擇班級(事件“學生選擇班級”),產生班級花名冊(事件“到產生班級花名冊的時間了”)。
通過業務事件分析結果,用事件表來表示事件模型。對於每個事件,事件表包含了相關的參與者、輸入和輸出、系統動作。表1所示的是高校公修課選課系統的事件表。
表1 高校公修課選課系統的事件表
事件編號 |
事件描述 |
系統輸入 |
提供輸入的參與者 |
系統動作 |
系統輸出 |
接收輸出的參與者 |
1. |
系提交公修課班級計劃列表 |
系公修課班級計劃列表 |
系 |
提交公修課班級計劃列表 |
|
|
2. |
到產生學校公修課班級計劃列表的時間了 |
|
|
產生學校公修課班級計劃列表 |
學校公修課班級計劃列表 |
學生 系 教授 |
3. |
學生選擇班級 |
選擇班級請求 |
學生 |
選擇班級 |
學生班級列表 |
學生 |
4. |
到產生班級花名冊的時間了 |
|
|
產生班級花名冊 |
班級花名冊 |
教授 |
業務事件分析中建立的是忽略了系統實現技術的基本模型,分析人員不能假設設計人員選擇何種實現技術,必須以能夠容許多種實現方式的方法來陳述需求。業務事件分析中,系統具有完美的內部技術,訊息在系統中即時流動,系統能立即且無誤地作出響應,儲存的資料沒有意外發生,這些假設協助分析人員進行事件建模,專註本質而忽略一些次要細節。