新竹某科技大廠的 Kick-off 系統開發顧問輔導

昨日一整天在新竹某科技大廠展開為期三個月的系統開發暨人員技能培訓的顧問輔導。團隊主要輔導人員,包括 Ringle, Arthur, Steve 與我都一同參與這第一次的 Kick-off 輔導 Meeting;爾後是每一星期至少一次 On-Site 對該資訊單位,約 20多位的開發人員從某一 Web Portal 系統開發實務過程中,協助關於系統架構/需求分析/結構設計/程式實作的技能/技術輔導。

輔導對象的資訊開發人員大都只有 VB6 的程式撰寫經驗,而新系統的開發卻是 Web Portal by ASP.NET MVC & C#.NET 物件化的語言。

有趣的是對方負責總體專案管控的 Manager 以為今天我們過去只是先了解下他們系統大致的功能需求而已;殊不知,我跟他們說今天就要產出可執行的程式碼!他們都露出驚異不容易置信的表情。

所以早上先從大業務流程的分析,產出 Eriksson-Penker 的火箭圖;再針對其一的作業流程產出以人本角度的活動圖。然後就是從其中規劃使用案例模型,分析主要的使用案例以及使用系統的參與者,還有與外部系統整合的參與者。

閱讀全文 »

[系統分析] 從 GUI 畫面分析使用者的操作目的 (Use Cases) – 以 Twitter 為例

這是上一期「系統分析設計與實作」課程的一位美女學員-Isis 的案例作品。她對 Use Case (使用案例)用於系統需求分析情有獨鍾,而且相當積極的學習與詢問問題。

不過可能待在業界許久,一開始對 Use Case 這類講究目標導向的分析方法並不容易理解,總是不自覺就鑽入到細節,或是聯想到實作面議題。所以就不容易抓到 Use Case 的分析主軸-界定參與者 (actor)使用系統的操作目的,以及實現該目的的操作程序。

我使用了幾種方法,包括如何從企業流程的分析找出使用案例,或要求綜覽閱讀 Use Case 的經典名著「Writting Effective Use Case」(再針對她提問的問題回應),甚至乾脆從某一個實際的專業問題領域 (problem domain)著手,但效果仍不彰。

畢竟大部分軟體人員少對所謂的「抽象 (abstraction)」技能下功夫。抽象是需要經由思考、閱讀、觀察等長期日積月累才得以鍛鍊而成的。

所以換一種較具象的方法,從現實各網站的使用者操作畫面中,完成下列的系統分析工作:

  • 界定系統範圍 (system boundary),並給予系統命名。
  • 規劃功能模組 (functional module),這是邏輯性的功能分類。
  • 從每一張畫面表單,透過所提供的資訊,以及要求使用者輸入的資料欄位中,藉以分析其背後的操作目的,也就是使用案例。

我先給她系統規模較小的 Twitter 案例,要她完成上述三項重點工作,而先不用撰寫使用案例陳述 (use case description)。雖然使用案例陳述才是實現系統功能的主要程序,但可以先等系統功能的界定有了初步釐清與共識後再來描述相對的實現步驟,這對使用 Use Case 分析的 SA 而言,比較能有循序的分析節奏,才不致亂了套。

耶!!這方法還真對 IS 的性向,不到兩天就完成了我看了也覺得很有創意的分析。經由她的首肯,我就把她的案例作品分享上來。

圖、範例-從Twitter畫面操作找出 Use Cases

圖、範例-從Twitter畫面操作找出 Use Cases

閱讀全文 »

RogueLike in Linux C++-專案設定與GitHub

參考教學:
Complete roguelike tutorial using C++ and libtcod - part 1: setting up

本篇文章主要有三個重點:

  1. 改用 Makefile 編譯 g++。
  2. 使用 GitHub 版控。
  3. 執行第一支 main.cpp 程式 (可以移動行走)。

改用 Makefile 編譯 g++

嘗試使用 Code::Block & CodeLite 等 IDE 均不滿意,想說既然是在 Linux 環境下,還是熟習較基本的編譯環境以及使用 Vim 開發,如此爾後的可控制性也會較好 (越來越喜歡這類命令列的指令模式,初學困難但會倒吃甘蔗)。

使用最普及的 Makefile 來編寫 c++ 的編譯腳本。目前對其語法並不熟悉,就是先針對現在的專案目錄結構,可以順利編譯位於 src/ 資料夾下的 main.cpp,以及可以執行所編譯產出的執行檔即可。

SRCDIR = src
INCDIR = include
LIBDIR = lib
CPP = g++
 
# CFLAGS = -O2 -s -w -std=c++11 -I$(INCDIR)/nwbd -I$(INCDIR)/tcod
CFLAGS = -g -Wall -std=c++11 -I$(INCDIR)/tcod
 
# Determine if operating system is 32-bit or 64-bit
 ifeq ($(shell uname -m),x86_64)
 	# These are the definitions specific to 64-bit systems
	LFLAGS = -L$(LIBDIR)/x86_64 -ltcod -ltcodxx -Wl,-rpath=$(LIBDIR)/x86_64
 else
	#These are the definitions specific to 32-bit systems
 	LFLAGS = -L$(LIBDIR)/i386 -ltcod -ltcodxx -Wl,-rpath=$(LIBDIR)/i386
 endif
 
SUFFIXES: .o .hpp .cpp
 
all: clean tuto
 
tuto:
	@$(CPP) $(SRCDIR)/*.cpp -o tuto $(CFLAGS) $(LFLAGS)
 
clean:
	@rm -f tuto

閱讀全文 »

Vim 打造 Linux C++ 編程環境-vimrc 基本設定

打算採用 Vim 作為 Linux C++ 程式開發環境的原因有兩個:

  • CodeLite IDE 工具的專案目錄實在編得蠻糟糕的。
  • Vim 的佔用資源小 (在我的 Chromebook/Ubuntu 就可以命列列模式執行並編譯 C++),可攜性高 (任何一種 Linux 系統下載馬上可以執行),擴展彈性高 (透過 plugin)。

而 Vim 的主要缺點就是 學習曲線高!

不過它比較能如倒吃甘蔗般,當習慣那些鍵盤操作後 (可能要好幾年),撰寫如 C++ 程式可塑性高太多了。

Vim 所有設定資訊均在於 .vimrc 檔案 (位於如 Home目錄下)。該設定檔的設定主要有兩個重點:

  • 編輯器的基本屬性設定。 (如語法高亮、顯示行號、狀態顯示...等。)
  • 外部擴展功能 (透過 3rd party plugin),如 nerdtree/taglist 插件的目錄結構/程式源碼的展現。

關於安裝多種 Plugin 的管理,一般會透過如 Vundle 這類插件管理工具來統籌管理所有插件。

個人目前的初始 .vimrc 設定內容,全係參考對岸所撰寫的文章:
 o Vim改變生活,插件改變Vim (1) — 認識Vim
 o Vim改變生活,插件改變Vim (2) — 認識Vim

執行 Vim 後所呈現的效果如下圖:
.vimrc plugn & 環境建置 版本一

閱讀全文 »

Lubuntu vim 安裝繁體中文幫助手冊

最近迷上使用 vim 作為 Linux C++ Coding 的 IDE 開發平台。

原因是 vim 可塑性與可攜性極高,只要在任何 Linux 平台如 Ubuntu 利用 apt-get install vim 即可馬上安裝完成;然後可以將自行整理的 .vimrc 設定檔/plugin 等放置於 GitHub 即可利用 git clone 回來本機內,實在是太過方便了,這得以實行:

Coding Everyone, Coding Everywhere.

不過我對 vim 的使用知識近乎零,而且初期的學習陣痛期會持續一段時間 (使用 vim 可能要堅持好幾年,然後才能倒吃甘蔗般的流暢自然),所以必然會時常需要查找相關使用說明。除了查找 Google 外,透過內建的說明文檔隨時查詢鍵盤指令那更是絕對需要的。

內建當然是英文原文,不過對岸已經有提供了簡體中文化的專案:Vim Chinese Documentation

我這裡參考了這一篇:Vim 中文用戶手冊(繁體字),然後自行至上述簡體中文站台下載最新版本的 Vimcdoc-1.9.0,再利用 ConvertZ 工具轉成繁體中文 (文檔內容),並打包成繁體中文安裝包上傳至 MEGA 供下載:vimcdoc-1.9.0_tw.zip

在 Lubuntu 環境下的安裝方式蠻簡單,只要將下載的檔案解壓縮至 /tmp/ 資料夾下,然後執行下列安裝:

$ cd /tmp/vimcdoc-1.9.0
$ chmod +x vimcdoc.sh
$ sudo ./vimcdoc.sh -i

因為是用 root 身分,所以安裝後直接執行 vim 後 (不需設定 .vimrc)按 :help 即可出現繁體中文幫助手冊;各文件主題,只要打上如 :help tutor 即可查看該主題的完整說明。

完全不會使用 vim 的新手,可以透過內建的教學,利用 30 分鐘的時間學習對 vim 的基本操作與使用。只要在 XTerminal 執行 vimtutor 即可進行教學說明 (全繁體中文說明)。

Lubuntu 14.04 暨 CodeLite開發環境安裝摘記

目的

在 Vmware 環境下,創建 Lubuntu 64bit 系統並安裝必要應用程式以及具有 C++ 的開發環境 (使用 Gnu C/C++ & CodeLite IDE)。

使用 Lubuntru 的原因

  • 輕量 (lightweight)且執行效能佳的作業系統,只要配置 2GB RAM,就可以運轉得相當順暢。
  • 可充分享用 Ubuntu 所有官方支持的套件與儲庫,擴展性極佳。

Lubuntu 執行 PaleMoon 與 CodeLite

Lubuntu Install

閱讀全文 »

軟體思維顧問

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

Personal