Blog

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

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

系統 (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 了。

閱讀全文 »

安裝 ArchLinux @Windows 10 子系統 (WSL)

其實 Windows 10 早在去年就已具有可以在 Windows 環境下執行 Ubuntu 的機制,但還很陽春,效能不佳,問題多多。但從 Windows 10 1803 版本釋出後,WSL (Windows Subsystem for Linux) 已修正諸多問題並大幅提昇執行效能,使其執行原生 Linux 系統於 Windows 10 環境下成為可便利運行的方案。

所以,WSL 到底是什麼?這篇 Arch Wiki 上說明得很清楚:

「Windows 10 包含一個模擬 Linux 內核的子系統,使得 windows 可以運行 Linux 原生應用程序。這個子系統有點像反過來的 Wine,但是它比 Wine 更加底層。默認情況下,此子系統使用 Ubuntu 用戶空間,但是它可以被替換成 Arch。你需要使用一個現有的 Arch 安裝去構建一些軟件包。」

我個人是相當偏好 ArchLinux,因為可以高度客製化。安裝 ArchLinux 於 WSL 下相當簡單,因為國外已經有大神整理成安裝執行包,詳見 Github-ArchWSL。安裝該執行包前,需要先啟動 WSL 功能,使用 Administrator 開啟 PowerShell 命令列視窗,執行下列指令:

> Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

重新啟動,然後下載上述 ArchWSL 安裝包,解壓縮並置於準備安裝的目錄下 (我是設定於 C:\Linux\ArchLinux 目錄下)。再來依照執行 ARCH.exe,靜待安裝過程 (非常快),然後完成。

閱讀全文 »

軟體思維顧問

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

Personal