應用程式的規劃(Web、Windows、Mobile系統)
想像一件事,你的老板走過來跟你說:
- 我們剛拿到一個案子,今有一出資者希望能夠建置一個系統,這個系統可以記錄毛孩的一生:出生、晶片號碼、就養、成長、疫苗施打、節育、就醫等…
- 我們剛接到一個學校委託建立一個線上課程系統,這個系統可以讓老師建立各項教學課程,讓學生選修,老師可以管理學生的上課記錄,線上出題…
當下,你很雀躍地回應老板,好喔…,只是,接著下來的事情要怎麼進行? 很明顯地,我們要建立一個完善的規畫案,那這個規畫案要怎麼寫呢?
如何建立一個最有用的計畫呢?
1.建立明確可行的目標,制定實現目標的工作步驟
通常,目標的建立要從探索金主/贊助者的想要與需要下手,需求的探索需要反覆地來回進行,直到我們可以定義出實現目標的各項步驟。
Q: 想要(want)跟需要(need)不同之處?
2.Start small, grow later
做一個應用系統,不要一開始就想得太大、太複雜,先從應用系統需要的核心功能開始,然後在後續的專案逐步成長出所需要的系統特性。
我們的策略應該是要先建立一個最小可用的應用系統 (MVP, Minimum Viable Product ),然後分階段來實現或完善整個系統。
定義應用系統的目標
建立一個應用系統會像一個倒三角形,由模糊的目標制定、清楚具體的目標、最後轉換出具體可行的步驟清單。 假
高階目標
一開始,我們先有一個模糊性的目標:
- 上架學校所有的課程
這是學校的想法/目標/目的,我們必須再往下挖掘出這個想法的具體細節,學校高層說要上架學校課程,說起來簡單,但要做的事情可不少…,身為系統分析師的你,第一個想法會希望把系統目標再具體的描述出來。
更具體的目標
接著,我們開始構思這個線上課程系統需要幾個功能:
- 列出所有線上課程
- 允許使用者可以瀏覽線上課程
接著,我們再加上這個系統需要的進一步功能:
- 列出所有線上課程
- 允許使用者可以瀏覽線上課程
- 管理課程內容
- 處理課程的選修、退選
基本上,就這樣一條一條把我們需要的系統功能列出來。一般來說,要建立一個系統的目標,系統分析師還需要有該領域的基本知識 (domain knowledge),領域知識的理解可以透過幾個方式:
- 訪談關鍵人物 (key man)
- 收集與研究作業流程文件
- 實地觀察相關的作業
另外一種作法就是納入領域的專家為工作團隊成員,這種方法稱作Domain driven design,領域驅動設計。
再進一步具體的目標
接著,我們再根據上面的功能清單,列出每一個功能的子功能:
一、列出所有線上課程(Courses)
- 檢視課程總覽(課程名稱、班級)
- 檢視個課程的教學內容(lessons)
二、允許使用者可以瀏覽線上課程
為了讓使用者/學生可以瀏覽課程,我們需要處理學生帳號部份:
- 學生帳號(登入、登出、學生基本資料等)
- 顯示修課清單
通常,在一個學校的系統,學生的帳號建立是透過系統管理者介面整批建立學生帳號,不會由不特定的使用者進行系統使用者註冊。
不過,一個系統的帳號註冊功能可以透過另一個系統進行帳號資料的自動註冊,不需要手動,也就是說,這個系統就像是一般的線上系統,帳號相關功能有註冊(新增)、基本資料維護等。
課程管理系統是一個獨立的系統,學生資料管理是一個獨立的系統,系統間可以因業務需要進行互動,也就是說,學生資料管理系統是課程管理系統的其中一個外部系統,這之後,我們在畫系統的環境圖就會很清楚地標示出來。
更完整地將"允許使用者可以瀏覽線上課程"這個功能寫下來:
允許使用者可以瀏覽線上課程
- 學生帳號(登入、登出、學生基本資料等)
- 顯示修課清單
- 檢視課程總覽(課程名稱、班級)
- 檢視個課程的教學內容(lessons)
- 課程修課記錄(作業、測驗等)
- 詢問助教/教師或給予課程回饋
我們在構思這個系統的時候,需要把這個系統不同的使用者角色找出來,上面的功能是學生端,那麼學生在可以開始進行課程活動的前提是要先有"課程",因此,我們需要一個課程管理功能:
三、課程管理
- 指定課程管理者/課程管理安全限制
- 建立/編輯/刪除課程
- 建立/編輯/刪除教學內容
四、選修課程功能
- 列出學生可以選修的課程
- 確認選修課程
最終的目標清單
- 列出所有線上課程(Courses)
- 檢視課程總覽(課程名稱、班級)
- 檢視個課程的教學內容(lessons)
- 瀏覽線上課程
- 學生帳號(登入、登出、學生基本資料等)
- 顯示修課清單
- 檢視課程總覽(課程名稱、班級)
- 檢視個課程的教學內容(lessons)
- 課程修課記錄(作業、測驗等)
- 詢問助教/教師或給予課程回饋
- 管理課程
- 指定課程管理者/課程管理安全限制
- 建立/編輯/刪除課程
- 建立/編輯/刪除教學內容
- 選修課程
- 列出學生可以選修的課程
- 確認選修課程