觀察實現(Realize)使用案例的系統內部物件之間的互動合作

使用案例(Use Case)是表達系統的外觀,即系統功能,以滿足參與者使用系統的目的。

使用案例是需求分析很重要的關鍵技術,也是採用以物件導向思維的方式來開發系統的重要前導工具。但請記得,使用案例無法表達系統內部的結構(Structure)。

系統內部有其結構的分析與設計。以物件導向思維的模式來開發系統時,結構的分析與設計即在於建立物件模型(Object Model),並利用互動(interaction)圖來描述物件之間的合作情形。

我們可以把使用案例當作是一個個小型的迷你系統,然後利用如下圖的表達方式,即以虛線的橢圓形連結實線的橢圓形,其內的名稱均填上同樣的使用案例名稱,例如 "Place Orader"。
虛線的橢圓形表達其內有許多各類不同角色的物件來參與完成,或稱之為實現(Realize)使用案例。

所以,虛線的橢圓形所參與的物件,已經牽涉到了系統內部的結構分析與設計。

觀察下圖,會發現參與實現使用案例的物件有不同的圖示表達,也就代表了系統內部的物件,不僅僅是從功能面來區分物件,更因為是觀察系統變更的程度而區分出物件的生命週期:

  • 處於系統及它的參與者(Actors)之間的界限(boundary)。
  • 系統使用的資訊(information)。
  • 系統的控制邏輯(control logic)。
  • 擔負控制邏輯的責任,是為 "控制物件(Control Object)"。
  • 基於擔負著分隔變動週期界線,是為 "邊界物件(Boundary Object)"。例如 UI Form 物件、負責連結資料庫的永續性物件(persistent object)。
  • 擔負領域(Domain)內企業邏輯(Business logic)的物件,稱之為 "實體或本質(Entity)物件"。整個物件群中,實體物件具最穩定的本質,因為一般它與領域上的概念(Domain Concept)是一致的,所以可重用性(Reuse) 的程度也是最高的。

使用案例的實現會包含上述三種分析類別的參與,使得系統更具彈性度與延展性。

系統內部物件之間的互動合作以實現使用案例

【分享】介面佳、功能強的 RSS Reader—RSS Bandit

從開始寫 Blog 以來,也常常至其他的 Blogg 站台瀏覽,看看他人的表達與想法,經常可以得到不同的觀點與各類資訊,收穫不少。

當然,當你固定會去多個 Blog 站台瀏覽,日漸地,你就不會想用瀏覽器去一個個點取,看看是否有新的新聞資訊;反之,我們會利用如以前的 News Reader 方式來 "訂閱" BBS News,同樣地,利用 RSS Reader 就可以訂閱眾多有提供 RSS 標準協定的站台。而今,所有的 Blog 平台均有支援此協定,包括知名的入口網站,如 Yahoo,也是提供 RSS 讓讀者訂閱每日新聞,甚至,國內最具知名的敗家指標網站 Mobile 01,也提供了 "本站新聞"、"新進文章"、"精華文章" 等三種 RSS 訂閱方式。

看來,RSS 訂閱的方式是如此地普遍,也可以說是現今獲取新知的最佳利器。

不過,我個人使用了許多的 RSS Reader,包括 Sharp Reader、ThunderBird、Firefox Sage(plug-in)…等,均不是很滿意(先說明,僅個人觀點),總覺得介面與功能等不如預期理想。

直至最近,朋友介紹,使用了 open-source project → RSS Bandit ,才總算滿意,並很愉快地利用該工具來訂閱 RSS 新聞了。

這套工具是以 open-source project 的方式在開發的,改版挺頻繁的。除了免費,尚提供原始程式碼可以修改。它是架構於 .NET Framework 上,所以,應該目前也只有 Windows-based 的系統,支援 .NET Framework 才可以執行的。
另外,它也提供多國語言介面,包括繁體/簡體中文。也支援 XSLT 的方式來客製化 UI(User Interface)。

關於 RSS Bandit 的一些資訊:
Screenshots
Online Documents
Download Page

同時呢,也打個廣告。:) 欲訂閱我的 Blog,其訂閱的網址可參考首頁。

RSS Bandit 的使用介面可以利用 XSLT 作高度的客製化。
RSS Bandit 使用者介面
(縮略圖,點擊圖片鏈接看原圖)

可以點選某篇訂閱的文章,即可以在其內部的瀏覽器看到原網站所刊登的內容。
整合瀏覽器可以瀏覽原網站內容
(縮略圖,點擊圖片鏈接看原圖)

【分享】適合架站與上網雙重用途的無線AP基地台—Vigor 2900G

前言:

這幾天,已經無法忍受我的 Buffalo G54 無線AP 的頻繁當機,從原來約一星期當一次,到最近是每天會當二三次,我想,應該是網路流量的因素,導致 Buffalo 無法承受負擔。當機一發生,就必須關閉 G54 AP 的電源,然後重新開啟,很是麻煩~

我所申請的頻寬是 Hinet 3M/640K 固接式 ADSL,目前提供對外架站的主要服務有:

  • Blog and Wiki 平台
  • XOOPS2 Portal

參考我的 Blog 系統所提供統計表的數據,每天光是連結我的 Blog 系統就約有近 2000 人次之多,還未包括 XOOPS Portal 的人次統計。流量算來應該不大不小,640K 的上傳頻寬目前應該還可以應付。但,我是很懷疑,應該有很多是 Hack 攻擊的封包,如 Dos/DDos 等,因為,有時候 Blog 即使從內部瀏覽也是異常的緩慢(我是使用 Linux 架設的),但只要關閉無線 AP 一陣子,再重新啟動又會恢復正常。

而從內部連上網的電腦也有約 5 台之多。包括我的 Desktop PC、Notebook 無線連結、寶貝女兒們的電腦。上網的型態包括了使用 Browser 瀏覽與下載資料、玩線上遊戲(寶貝女兒們在玩的),也會利用 BT、Emule 等 P2P 軟體。

無論如何,一年半前所購買的 Buffalo G54 現在應該是無法承受現實的負荷,也該 "功成身退"了。(當初購買時,可算是高檔的無線 AP 產品)

為了能符合架站/上網的需求,當然,成本也是重要的考量,總是無法購買像企業級數十萬的 Firewall 硬體設備。希望數千元的產品能達成個人基本的期望:穩定不錯的效能及基本的安全防護

一開始所考量的產品是 Mobile 01 最近最熱的一台:SMC 7904WBRA。
網站的玩家們基本上對這台的口碑都蠻推崇的。不過,有趣的是,我打電話到 SMC 總公司,他們竟然不知道有這台,更何況是已經在網站上熱賣。他們是建議還可以先等一陣子,好像這台主要的目標不是 End User,而是打算與如中華電信合作,可以取代現有 ADSL Modem,成為無線AP/ADSL Modem 二合一的黑盒子。(除此之外,說真的,目前我應仍不需要內建 ADSL Modem 的功能)

退而求其次,想說購買 SMC 2804WBR 應該也不錯,PCHome 線上購物還熱賣到缺貨。想說隔天就衝到光華商場購買。

結果,前天晚上,一位網友留言推薦 Vigor 寬頻系列 AP。耶?從沒聽過這牌子,趕緊到各大網站爬文研究。包括 PCZone、PCDVD 等各指標網站,眾多玩家們大多蠻推薦該品牌,一致認同該品牌的穩定度是最有公信力的。有趣的是,大部分玩家們都會建議,不要買 D牌、P牌與A牌,呵,還真有趣。

Vigor 是國內廠商居易科技所生產的(以前從沒聽過),之前是在光華商場巴德商務網看過,嫌它體積龐大又長得蠻畸形的,也就沒有予以考慮。爬文的結果,比較令我注意的,Vigor 國內的代理商有位在各大網討論區名為 CheerX,暱稱小峰,寫了許多篇蠻不錯的文章。當然,也會做一些他牌與 Vigor 在功能、效能與穩定度等比較。在這裡,他還提供了 Vigor 全系列產品的討論區。覺得他在專業水平與服務的熱忱上,非常地用心,也能感受到他對 Vigor 產品的自信與保證。

買這類的產品,我是特別相信專業玩家給予的建議,昨天早上就與小峰先生通過電話,把我的需求告訴他。雖然他是經銷商身份,但仍有專業技術人員的耿直與水準,不厭其煩地回答我許多的問題,真不錯,不是只想單賣產品而已。聽了小峰先生的建議,我比較適合使用 Vigor 2900G。
它的規格是這樣的:

﹡VPN防火牆路由器
﹡硬體加密
﹡三星32位元高效能ARM9處理器 8MB RAM 2MB FLASH
﹡(4埠交換器+USB列印伺服器)
﹡完整VPN功能CLIENT+SERVER功能32通道 硬體加解密
﹡QOS頻寬管理功能
﹡802.11G 54M 無線網路 可更換天線

嘿,定價 $5900 的產品,內建處理器,提供的是硬體 Firewall 功能,又有 VPN 功能、印表伺服功能、802.11 /a/b/g 的無線上網,提供的功能實在不可不謂之強大!

昨日通過電話後,下午就衝過去新店買一台回來。
對這類產品,我可連一般玩家的身份都搆不上,所以,僅從 End User 的角度來看待,請各位高級玩家們多多包涵,不要以太嚴謹的專業角度來看待本文。

同時,我也想嘗試模仿在 Mobile 01 標準的敗家文章寫法,即提供大量的數位產品照片,利用看圖來說故事 :)

包裝、產品與設定畫面圖片:

這是 Vigor 2900G 的包裝盒,我覺得挺精緻的。
Vigor 2900G 的包裝盒

繼續閱讀 »

站在問題擁有者的角度來看待問題—本人的實例探討

關於 "問題是誰的"、"問題是什麼"、"要如何應對解決問題",以及觀點的問題,讓我想起約兩年前,我帶小朋友去看電腦軟體資訊展時所發生的實際案例,利用該案例,到可以好好地來探討與反思上述這些議題。

那時候我還在待在某公司資訊部門。我的老闆給了我世貿電腦軟體資訊展的免費入場卷,所以,特定請了星期一假日,同時也幫我的大女兒(她當時上小一)請假,我們父女倆興高采烈準備去軟體資訊展購買一些便宜又大碗的兒童電玩遊戲。

沒有星期假日去的原因是知道週六假日的人潮一定特別多。果不其然,星期日看電視新聞時,看到人潮之擁擠,根本就是寸步難行。

當時星期一早上約九點多,準備要入場,沒想到卻被警衛攔住,原因是:小朋友不准入場。
同時,我也有看到幾個父母親也是悻悻然在旁邊,無法入場。而我第一個的反應,是情緒馬上衝上來,氣憤難平,非常大聲地吼叫(是非常地大聲喔):找你們承辦單位的主管來!
因為,我知道,若是我愚昧地與警衛爭吵,會造成給警衛一個問題:他要如何盡責阻擋他所認知的 "不合法" 的入場者。

為什麼我會如此生氣呢?因為,星期六、日電視新聞才播出有許多父母親帶著小朋友逛軟體資訊展,沒有理由星期一無法帶小朋友入場參觀展覽。
而我特地讓我的小蓁妮請假,為的是讓她能夠可以快快樂樂的買她喜歡的兒童電玩。承辦單位如此漠視小朋友的權益,尤其是這種明顯不合理的現象,更是讓我非常非常地忿忿不平。

因為大聲地吼叫,早已驚動承辦單位的大部分工作人員,約有 4、5 人吧,大部份是女性工作人員,她們委婉地解釋:是因為顧慮到小朋友的安全,所以才禁止小朋友入場。
我一聽到這種理由,更是極度地氣憤,星期六、日人潮特別洶湧,也沒有禁止,結果星期一~五卻是限制小朋友入場。

嘿,這其中一定有問題,所以我就更要找出這個問題的根源是什麼

那些工作人員仍舊就是同一副口吻:因為安全理由。
我當然無法接受,但,我也知道,當我的抗議與衝動造成了給這些工作人員的問題是:該如何說服這位 "無理又暴躁的參觀者離開?

而我的問題從:如何帶小朋友入場參觀? 更演變成:如何表達與抗議對漠視消費者尤其是兒童權益的承辦單位?

當時的情勢已是相當緊張,也吸引眾多人圍觀,我還是知道,與這些工作人員爭吵意義不大,我的用意就是要能找出關鍵人物的主管來。

總算,他們承辦主管願意見我,也請我帶到一個辦公室內溝通,同時,也有安全人員、工作人員等一同進入。不過,我也不是沒有同伴,有一個爸爸聲援我,也與我隨之進入。(這讓我也比較安心,免得被圍毆,呵呵…)

承辦的主管也是一位女性,她還是同樣的藉口:顧慮到安全的因素,而且已有與世貿負責場地承租的單位簽立契約,不准 120 公分以下的小朋友進場。

我說,好吧,我堅持請世貿承辦場地出租的主管過來,請他帶契約書,我要親自察看。也達成我的用意:同時將問題連動到另一個關鍵的人物進來,讓這個問題變得越來越混亂。

三請四請,那位主管才心不甘情不願過來(他可能覺得,這關我何事?)。
我看了契約書,的確是條目上寫了星期一至五,限制小朋友入場。但是,同時,我也找到了真正問題的根源,站在承辦單位的立場上,他們的問題是:因為星期一至五小朋友進場的人數不多,而若仍准許小朋友入場的話,必須要多負擔 10 幾萬的兒童意外保險費。
嘿,承辦單位只願意投保星期六、日的兒童意外險,因為星期六、日父母親會帶小朋友來。而為了利益考量,所以星期一至五就不願意投保而禁止小朋友入場了。

為了找出這問題的根源,我個人舌戰約 7’8 位包含主管與工作人員,辯論了約兩個多鐘頭(說真的,這類的辯論,對我實在輕而易舉,即使一個對多個人)。另外一位爸爸,早已不耐煩,已早早離去了。
甚至到最後,他們的安全人員,有點語帶威脅的口吻,他們也不怕我去告他們,於法,他們站得住腳,而若我仍無理取鬧的話,他們甚至要請警察過來處理。

於法,我還真無法找出對我有利的條件。我知道,即使不合情、不合理,但法治國家所依賴處理的準則,仍舊是以"法"為唯一標準。

所以重新思考我的問題,我已經表達出抗議與不滿,大概也可以適可而止了。但,這並非是我原本想要的,我原來的問題仍是:如何帶小朋友進場參觀展覽?

因為已經知道問題的根源是什麼了,我重新擬定解決問題的策略,既然 "於法無據",那麼,就 "動之以情"、"說之以理"。

我告訴那位主管:
"情"、"理"、"法",中國人仍是優先講究人情與道理。為了不讓我的寶貝女兒失望,特別請假帶她來參觀她最喜歡的軟體資訊展,這是為人父母都會心甘情願為自己的孩子們來去謀求小朋友的幸福與快樂。妳拒絕了我,我並沒關係,但妳卻是傷到了一顆小朋友童稚的心靈。

喚醒那位主管的同理心,我想,她應該也是一位媽媽,所以能感受小朋友失望時候的心情。但,如何也不能讓她太為難呢?
解決方案意外的簡單,我就寫一張切結書,若小朋友入場後,有任何意外,由家長自行負責。

折騰了三個多小時,總算可以帶著我的寶貝女兒進入展覽場參觀了。整個展覽場就真的只有我帶小朋友而已。
諷斥的是,有許多兒童美語的攤位,這些業務看到有小朋友,馬上笑臉迎人來推銷教材。我問他們,你們不覺得奇怪?怎麼都沒有其他的小朋友?他們這才突然驚覺:對喔,怎麼都沒看到小朋友?等我把事情的原委告訴他們後,建議他們,若要作小朋友的生意,應該是要去與承辦單位據理力爭,讓小朋友平常也可以入場。

逛不到一個鐘頭,一方面整個興致也沒了,另一方面展覽的內容還真是無聊,也沒有買到中意的電玩遊戲。
回到辦公室,向哪位主管取回切結書,還不錯,她還蠻和善的,問說逛得如何,好不好玩啊等等。
就這樣,爭執與辯論了 3 個多小時,而整個展覽的參觀還不到一個小時!

回想,若我能冷靜地面對當時情況,也不用把問題提升到要抗議及爭論這種不合理的現象(在台灣,不合理的事情多不勝屬,爭也爭不完)。思考我真正要解決的問題,並同時站在對方的觀點思考問題,找出問題的根源,冷靜找出應對的解決方案。那麼,我應該不需要耗費那麼多的心力與發那麼大的脾氣,就可以快速地而愉快地解決我的問題了:帶小朋友參觀軟體應用展。

站在問題擁有者的角度來看待問題—心得

這兩天把「你相通了嗎?」該書全看完了,然後,又重新再把這一本書從頭開始仔細地閱讀,很用心去思考關於 "問題是什麼" 這個主題。

簡單的寓言故事、簡單的哲理,就能構成如此深奧的智慧,而能協助你是如何看待問題、如何瞭解問題、如何解決問題。這本書的價值實在非凡!

其中,從該書我所得到最大的收穫就在於更明確地瞭解,當你站在問題解題者的角度時,更需要修鍊從各種不同角度的觀念來看待問題的本質。這樣的方式,我之前就已經常用,不過,卻無法很明確地去定義問題的擁有者是誰,自然,也就不容易站在問題擁有者的角度來看待問題了。

這是非常重要的關鍵,從問題擁有者的角度來看待問題時,你就能去定義問題是什麼,每一個問題的擁有者,看來起好像在討論同一件事,但各自的觀點與對問題的定義不同,所以其實很難期望能達成共識。
也不要說好聽的話,說是設身處地為他人著想。反正就是你會很容易看到當事人的問題是什麼,也會知道你所認知的問題與其他人所認知的其實不一樣,而這也正是團隊溝通時所經常發生的現象與衝突的本源。

站在每一個問題的擁有者的角度,來看待他們的問題,再去思考,當面對這些擁有問題的人來說,該如何應對並提供一種最佳的解決方案,以解決彼此之間對問題的期望與落差。

不要急著跳進去解決問題,從各種不同的角度來思考問題,找出對全體或整體最佳應對的解決方案。
釐清問題的關鍵性思維,就越能洞悉「問題的本質」。如此,解決問題的能力就會越來越純熟了。

Kenming’s Wiki 開放了!

原本就有計畫將我對軟體設計的許多心得與見解等寫成書籍出版。

平常一有想法及心得時,我可以很快地寫成單篇文章發表在我的 Blog 上。基本上,發表於 Blog 的文章是比較屬於隨性、未經修飾過的,相對地,也比較不會有心理的壓力。

但是,當打算寫一本比較完整架構的書籍時,說真的,光要構思如何先建立書籍的骨架,亦即書籍的目錄時,就傷透腦筋~ 瞻前顧後,想要表達得更加完整與周詳,就更難去動筆。(其實,這些還是心態問題,完美主義作祟)

嘿,現在有了 Wiki 這種概念的呈現,可就大大解決了我許久以來的這些困擾了。

原本以為 Wiki 是屬於多人共筆的功用而已,沒想到,原來 Wiki 被用在出版平台的建構也是非常地理想。

關於書籍寫作的方式,我漸漸有一些體會了。不一定要先建立完整的骨架(目錄結構),先有個雛形架構即可。然後,可以把目錄上的標題成為寫文章的主題,寫文章同時,可能又有另外的想法,是與原標題不一樣的,結果又衍生另一篇文章出來。此時,反而是先寫出文章內容才倒推回去整理出目錄標題來。

所以,目錄的標題與內容的寫作,不一定有絕對的先後順序,而是以循環漸進的方式來做修正與整理。這也正是軟體開發最重要的一個實務—Iteration。

而 Wiki 平台,正是能提供作者隨時隨地,只要上網透過瀏覽器,就可以很快速地來整理與修正書籍的目錄結構與編輯文章內容的最佳利器。(Wiki 有很獨特的寫作語法可以方便文章的排版)

同時,還有個好處,可以在實體書籍出版前,可以先讓讀者閱讀並可以提供建議與討論。循環漸進、回饋與修正,讓書籍架構與內容可以更加地完整,這正是我最大的收穫! :p

所以,若對爾後在我的 Wkiki 平台所寫的電子書有所建議時,歡迎可以在本篇文章給予迴響。或者,也可以參考我在 Wiki 公佈欄的訊息,欲加入 Wiki 的讀者,可以 email 給我您的帳號以方便全程參與文章內容的討論。(很抱歉,因個人的 Wiki 並未是開放成多人共筆的方式,所以,為了安全性,只好採人工 email 認證的措施)

Kenming’s Wiki 網址:
http://www.hsdc.com.tw/wiki/