2020年3月13日星期五

需求分析入門 - Automation

需求分析入門系列,今次寫的是「自動化」(Automation)。

很久以前就聽有人說過,如果有某個工序是在一個月內重覆超過5次,就已經值得考慮將它「自動化」。的確,沒有太多需要用腦的工序,不值得耗費人的時間去執行,除非這個工序需要精湛工藝,或者是因為原材料(source data)無法standardize,才需要人的介入實時判斷。如果現有工作都已經是跟著manual 做,就更加應該完全實現自動化。

系統上的「自動化」基本上可以分兩種,一種是event-driven 的,另一種是scheduled job。Event-driven 意指系統detect 到某種狀況的出現而發起的「自動執行」,例如收到客戶下單,系統背後進行一連串的操作,而scheduled job 則是定點時間進行。如果進行的是一連串的automated job,我們則用batch automation 形容。

要將人手執行的工序「自動化」, 首先是把routine執行的所有動作紀錄。這個跟早前另一篇章的「流程化」也頗為相似,不同的地方是「流程化」更著重的是整體流程,尤其是牽涉不同組織的操作,而這裏「自動化」則聚焦於個別工序。

初步紀錄後,通常會發現到工序大致上是按照一既定程序,若干中間步驟則會出現不同情況需要作出判斷。這裏可以把不同情況列出,寫得出的都盡量寫。寫需求的時候,我們也跟以上一樣,要先判斷是event-driven 還是scheduled automation,這會是程序的第一步。

完成以上幾步,基本上已經可以開始設計方案,實現automation。如果懂得programming的話,可以直接把步驟轉化成code level,未掌握好的話也可以先嘗試用logical statement 寫,再交由IT人員落實。

以下是一些common 的logical statement:

1. 「If-then-else」,主要用於邏輯判斷,可理解為如果發生某種情況,則做一些動作,否則則做另一些動作。如果並列有大量不同情況,則可用「case-if 」並用rule table表示執行上的不同。又如果邏輯之間有dependency,稍為進階的則可用把不同case 整合為「nested-if」。

2. 「Loop」,主要用於重覆執行一些步驟,當中又可以分為確切執行一定數量,或是持續執行直至達成某個條件。

3. 「When」,主要用來描術自動程序的啟動點,例如是某種情況發生,或者到了某個時間。

按現時Automation的成熟程度,要實現全自動化主要仍有兩大難點,一是數據不是formatted data,另一個就是工序牽涉多個系統。

原則上,如果用來作邏輯判斷的數據已經是formatted data,coding 會相對簡單得多,因為可以直接取用數據,如果不是的,就要考慮機構內的基建是否足夠方便轉化成formatted data,例如OCR,不能的話也只能繼續使用人手錄入數據。(但筆者的建議是源頭減廢,即在數據進入系統那刻開始就收集formatted data,詳情可看「無紙化」編)。至於牽涉多個系統的情況,則可以考慮用流程系統連接各個系統,但開發時間會較長,較新的方法是用RPA的工具協助。

今時今日,學懂一種programming language,就跟學懂一種國際語言般重要,而隨著世界大趨勢發展,可以想像未來懂基礎programming 基本上是必要的技能。對初學者而言,macro 算是比較易上手的language,而且excel 就已經有build-in 作coding 的平台,作為試驗學習性質就極之方便。如想要學習syntax,上Google也基本上用"How to xxxx"就可隨時找到,希望更多的人也可作出嘗試。

有一點在寫需求時切勿忘記,就是Automation 中可能出現的Exceptional Handling,簡單來說就是要為automate job 出現error 時的通報及恢復處理機制。千萬別以為系統自動化後就與人無關,Automation的作用是把重覆性的工序交由系統處理,但並不代表以後沒有人再需要為工序負責。在開發時候,可以建立一些手動重啟的切入點,也可以嘗試把簡單的重啟都設定為自動化。

另外是從項目管理的角度,切勿妄想可以一次過把所有工序都全自動化。「自動化」需要有計劃,大規模的「自動化」需要整體規劃然後分階段落實,另一方法則是由小做起,逐步將現有手工操作「自動化」。每一次的改變過程中都要仔細考慮所帶來的影響及風險,以及與整體操作的銜接。分階段落實可以每次聚焦個別板塊,由團隊成員評估方案,減低big-band 帶來的風險。

需求分析入門 - 相關篇章
電子表格
流程設計

沒有留言:

發佈留言