第二章 分析方法
本章節以權限控制模組為例,說明SA的分析方法,SA分析的第一步就是資料建模,將ER圖建立起來。
權限控制是通用性最高的模組,基本上不管什麼業務系統,都需要權限控制模組,權限控制模組基本上只管兩件事:
1. 什麼人可以使用什麼功能
2. 什麼人可以操作什麼資料
所謂的「什麼人」精確地來說應該是「具備某種特性的一群人,一個授權群組」,這個特性可能是某個部門,例如:財務部的使用者;也可能是某種角色,例如:一般使用者或系統管理者;更有可能是某個任務小組,例如:外包的賣場內宣傳人員等。以「什麼人可以使用什麼功能」這件事來說,其實就等於:系統中,存在許多「授權群組」,每一個授權群組,針對系統中的「功能」具備不同的「功能授權」。用授權群組來定義人的種類,再用功能授權來界定這種人可以使用那些功能。
跟SA打交道久了,你會發現SA對「名詞」和「動詞」十分敏感,常常一段描述需求的說明,SA會反來覆去地用不同的文字重新敍述,這是因為SA希望找到最適切的名詞和動詞,用以說明一個功能,這種不斷重覆的過程,就稱為資料建模Data Modeling,利用抽象化的思考方式,以資料間的關係來模擬業務關係。
找到合適的動詞和名詞後,SA會試著用它們,定義模組中需要使用到的物件,例如授權群組authorization group簡稱auth_group,功能Function簡稱Fun,功能授權function authorization簡稱fun_auth等,並試著以表格式的方式,觀察資料間的關係。
圖一、資料結構模擬 示意圖
對於每一個名詞或動詞,SA會各以一個表格加以代表,圖一是SA在模擬「什麼人可以使用什麼功能」這件事。我們可以看到總共有五個功能,系統管理員與財務部人員各可以使用三個功能,其中有一個功能有重覆。
確認後的每個名詞與動詞,都可以用表格為代表。SA接下來要將每一個表格,轉化為資料庫中的資料表table,每一個資料表,就代表一個名詞或動詞,學術一點的講法,每個資料表,就是資料庫中的一個實體Entity。
以圖一為例,auth_group 和 fun_auth兩個實體間,有一個欄位是相同的,我們可以想像中間有一條由左到右的線,將兩張資料表連接起來,這條線代表兩張表間,有一個欄位的資料相同,資料是由左方複製到右方,這條線稱為一個關連Relation。
現代的資料庫,都是以這樣的概念進行組合,所以資料庫系統,也被稱為關連式資料庫。
確認實體的概念後,SA就需要將資料表的結構設計出來,圖二是fun資料表的設計SQL及其相對應的實體圖。
圖二、Fun資料表設計 及其實體Entity圖
每一個模組,由哪些實體構成,都是SA人員設計的心血結晶,而一個模組之所以是一個模組,就是因為模組內的實體及實體間的關連性比較高,無法獨立抽取出來,只能以模組為單位,進行切割;以權限控制模組為例,需要九個實體,才可以將權限控制這件事說清楚。
圖三、簡單權限ER圖
經過長期的分析及多次的使用後,SA人員可以做出如圖三的實體關連圖(ER圖)。每張ER圖都是SA人員的最高機密。因為它代表SA人員對一件事情,或一個模組的認知。同一個模組,不同的SA人員來分析,都會得到大體相同,細節卻略有差異的ER圖。
當模組一次又一次地被重覆使用後,SA人員的認知就一次又一次地被驗證是否正確,好的ER圖設計除了要正確外,還要能夠搭配各種不同的業務系統使用,它必需非常有彈性,這樣才算是優良的設計。
以圖三這張ER圖為例,它最開始的版本在2004年被提出,到現在2017年,已經被許多業務系統使用過。當然,每個系統的需求都略有差異,但主要的實體資料表卻都沒有改變,已經算是非常成熟的設計。