Blog

「軟體需求分析與塑模」- 流程與活動

本文收錄於 我的電子書「軟體需求分析與塑模 – 第一章、需求分析概觀」。

實現企業層級系統功能的主要組成元素是「人」,也就是多個不同角色的內部工作者 (internal worker) 在不同的時間點合作接續以完成所屬職掌的工作。

當為了履行一個企業需求,可能需一連串的活動 (activities) 循序接力達成。當然活動的執行需要有特定的參與人員,也就是會有多種不同角色 (role) 或組織 (organization) 參與。這一連串的活動即構成作業流程 (business process)。

Jacobson 為企業流程 (business process) 作了一個簡單的定義:

Put simply, a business process is the set of internal activities performed to serve a customer.
Object Advantage》, Ivar Jacobson, 1994
(簡單地說,企業流程就是要能夠服務客戶的一連串企業內部的活動)

而關於「活動 (activity)」的定義 (from Wiki):

Activity is a major task that must take place in order to fulfill an operation contract.
(活動是一個必須履行的主要工作,為以滿足一個操作上的契約。)

參考下圖範例係利用 UML 活動圖 (activity diagram) 繪製傳統人工「訂購-出貨」作業流程。從該案例可以得知,這一連串從訂購到出貨的活動,會有多個不同組織部門的工作人員參與。當完成這一連串活動後,即滿足主要的企業需求-「訂購商品」。

圖例、傳統人工訂購-出貨作業流程

「軟體需求分析與塑模」- 什麼是系統功能

本文收錄於 我的電子書「軟體需求分析與塑模 – 第一章、需求分析概觀」。

系統 (system) 是由一組互動 (interacting) 或獨立的元件 (component) 所組成的整合體 (integrated whole)。

系統功能 (system functions),即為某一整合體所提供給外界 (參與者或外部系統)的一連串服務 (services)。

把企業 (business) 當成一個整合體,並藉以分析該整合體所提供的功能需求,以及組成該整合體的組成元素。這樣以企業為標的的分析塑模方式,稱為「企業塑模 (business modeling)」。

把資訊系統 (information system) 當成一個整合體,並藉以分析該整合體所提供的系統功能,以及組合該整合體的結構元素。這樣以資訊系統為標的的分析塑模方式,稱為「資訊系統塑模 (information system modeling)」。

把企業或資訊系統當為一個整合體,便可以採用相同的手法,如利用 UML (Unified Modeling Language) 語法,來分析系統需求。

「企業」與「資訊系統」兩者的關係即為,「資訊系統」為組成「企業」內部結構的其中之一的元素 (element)。而當把焦點轉移至資訊系統,探究其中所提供的系統需求 (系統功能)時,則再將「資訊系統」這個結構元素放大,並從「外」的需求分析,與「內」的結構設計來看待資訊系統的分析、設計,乃至於實作了。

參考上節範例,「診療服務」為企業的系統需求,如果企業架構師規劃了三個資訊系統 (組成元素) 的支援,參考如下圖,架構師可以利用 UML 使用案例圖表 (use case diagram) 規劃每一個資訊系統各有其需實現的系統功能,以及資訊系統之間的關係是透過介面 (interface)的連接達成所謂的「SOA (service-oriented architecture)」架構。

圖例、表達資訊系統的系統功能

至於資訊系統是如何實現系統功能,又如何連接其它外部系統,那就是所謂的系統 (這裡就是指資訊系統了) 結構設計與實作的議題了。

「軟體需求分析與塑模」– 企業需求源自於企業價值

本文收錄於 我的電子書「軟體需求分析與塑模 – 第一章、需求分析概觀」。

企業需求要能提供價值 (value),如此才得以讓企業有獲利行為而能永續經營。

「價值」的呈現取決於在創新、成本、效率等因子的調和。這些因子經常是由內部工作者 (internal-worker)、產品、系統、軟體與流程 (process)等所提供並滿足其需求。最終目的當然在於讓企業創造「利潤 (profit)」。

例如,「仁心慈善醫院」是一家企業 (business),其中最主要的核心價值係提供 「醫療」的服務 (service)。為了提供「醫療」這個主要服務,企業內部必然會有多個內部工作者的協同合作,包括「醫師」、「護士」、「藥劑師」、「行政人員」… 等;涵蓋的作業流程可能有「掛號」、「看診」、「住出院」、「領藥」… 等;且為了增進處理效率與節省人力,會導入由 產品/軟硬體 所組成的資訊系統 (information system),成為工作者的協力夥伴。

除了文字陳述紀錄外,可以藉由視覺化的圖形塑模 (visualization diagram modeling),更容易表達焦點。

例如,我們可以使用 UML「使用案例圖 (use case diagram)」表達企業所提供的主要服務 (企業層級的系統功能),以及使用「業務流程圖 (business process diagram)」表達實現 (realize) 企業系統功能的主要組成元素 (內部工作者、資訊系統、主要作業流程)。

圖例、表達企業提供的主要服務

圖例、表達實現企業需求內部的主要組成元素

關於 UML (unified modeling language) 的基本介紹,以及應用在企業與資訊系統需求面的分析 Know-how,參閱後述的章節內容。

在 Gitlab 平台簡單創建 GitBook 電子書的步驟

GitLab 提供了 gitbook儲庫 的範本,只要用戶 Fork 該專案,如此就可以建立屬於自己的 GitBook 文檔網站。不過這方式我不太喜歡,需要修改專案名稱等相關屬性,然後也要編輯「README.md」、「SUMMARY.md」內容,如此就會造成 commit 歷史紀錄一開始較為雜亂。 (雖然也可以清除,但又要額外的步驟。)

除了 Fork 的方式,其實也可以自己手動新增空白的專案,然後再針對 GitLab CI (Continuous Integration) 設定並加入執行的腳本內容即可。 (其實就是 gitbook 儲庫內的 .gitlab-ci.yml 內容)

整理下創建 GitBook 網站@GitLab 平台的步驟:

  1. 新增空白專案
    這應該不用說吧,與 GitHub 新增專案的方式幾乎是一樣。大概就是注意下儲庫的存取改為「Public」,然後預設新增一「README.md」檔案,該檔案也是 GitBook 所必要的檔案。

    新增 GitLab 空白專案

  2. 閱讀全文 »

關於 GitBook 平台的改版與 GitLab 替代的考量

GitBook 有兩種含意:一為 GitBook 文件平台;另一則為 採以 Node.js 所開發的命令列工具,用以製作基於 Git/Markdown 所產出精美的電子書文件。

就在今年四月底,Gitbook 平台 (Github 旗下之一),推出所謂的 V2 大改版,改版幅度之大,連帶影響到既有廣大的 V1 開源用戶,預計今年10月左右就要關閉 V1 的使用,強制改版至 V2。但更為難受的是它的 售價策略,Free 方案竟只縮減為只能創建一個「space」,也就是只能創建一本電子書;而付費方案最低則為每個月要支付 7美金 (5 user)!

這肯定會引發一大波開源用戶的出走潮!畢竟絕大多用戶都是基於開源分享的精神將自己的創作 (程式碼/文件) 置於 Github/GitBook 的。 (關於這次 GitBook 大改版,可參考對岸這篇:如何看待 GitBook 的改版?)

所以,要製作開源的電子書在 GitBook 平台短期內 (預期這風波會造成大量用戶的質疑抱怨)並非理想的方案。退而求其次,尋求替代可提供免費文件的平台,並基於 gitbook 工具所製作的電子書,那就非 GitLab 平台莫屬!

GitLab 也有兩種含意:一為 GitLab Inc. 所提供幾乎與 Github 一樣的介面與服務;另一則為該家公司所釋放出基於網路的Git倉庫管理工具,且具有wiki和issue跟蹤功能,可方便私人建構所屬的私有 Git 儲庫平台。

而且 GitLab Inc. 背後可是有強大的金主:Google!所以也不用擔心會有突然關閉或如 Github 那樣不可思議的收費方案。 (額,Github 被微軟收購的,這應該大家都知道吧~。)

要在 GitLab 平台發佈基於 gitbook 工具所製作的電子書並不困難,官方也提供了一個 gitbook 儲庫 (repository) 範本 (可參考它所產出的 靜態文件網頁),可依照該儲庫的 README 說明並 fork 該儲庫即可開始建構所屬自己的電子書。

嗯,其實我個人不太喜歡使用 Fork 的方式當成自己專案的起點,下一篇就來分享下如何在 GitLab 新增專案並配置成可被持續發佈的 GitBook 文件網站。 (其實步驟比想像得還簡單)

ArchLinux 跑 Virtualbox Seamless 無縫模式@Windows 10

原來以為透過 WSL 執行 ArchLinux 是在 Windows 10 系統內執行 Linux 相關應用程式會是理想的解決方案。但,當我在 WSL 要安裝 XFCE 桌面環境卻是問題多多 (Console 模式則很正常)。雖然仍可以啟動 XFCE 並跑應用程式,但我查看 Log 卻是錯誤訊息一堆,大都與 DBus、GTK 等相關的問題,查找 Google 卻是沒看出所以然。看來現階段在 WSL 跑 Linux 還不太完美 (另外還有效能的問題),所以只好先關閉 WSL,等待下一次 Windows 10 釋出較大改版再來試裝。

退而求其次,只好還是在虛擬機上執行 ArchLinux 了。這次我不使用 Vmware 了,占用系統資源太多 (雖然它執行虛擬系統效能會好上很多),改嘗試使用 Virtualbox 並透過它的 Seamless 無縫模式執行 Linux 應用程式。

這是我第一次使用 Virtualbox,不過安裝虛擬系統倒是很簡單,網路分享安裝文件很多。大概幾個選項,勾選 3D 加速、動態配置儲存空間 (最大空間設為 32Gb)、4GB RAM、切了單核2線程 (我的 Intel CPU 是 i7-7700hq 八核心),這樣就可以在虛擬機環境下安裝 ArchLinux 了。

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal