{程序員邀稿} 從軟體架構師(Architect)的觀點來看軟體開發流程

前言

筆者多年來輔導過諸多不同類型與不同領域的軟體開發專案,本身的職務是擔任軟體架構師(Architect)與顧問輔導。架構師不是只負責技術面的問題,更要兼顧到專案開發的過程中, 」人」 的互動所衍生而來的諸多問題,包括想法的歧異、見解的落差、不同的觀點與角度,甚至情緒問題等等,這些都需要與專案經理協同合作,一同來解決問題。

軟體的開發,最終目標雖然是 「完成高品質」 的軟體系統,但在進行階段過程中,所衍生出的兩大議題—專案管理(Project Management)與開發流程(Development Process),卻是首要需克服的階段目標。而該兩大議題,均是係以 「人」 為核心的考量,專案管理講究的是 「領導統御」、」人和」;開發流程重視的是 「調和 (凝聚團隊成員的觀點、角度,保持產出的一致性)」。專案管理的部分,筆者的角色比較不方便闡述(此一部份由專案管理者來論文比較妥當),倒是相關於開發流程的議題,筆者倒是可以把藉由所觀察到諸多各形的開發型態,以及個人的一些研究、學習、思考與體悟的心得提供給讀者參考之,文中內容會是筆者比較偏以 「主觀意義」 的表達。

變動無常的軟體專案

軟體系統的專案開發,特別的是,需求往往不明確,更何況是經常處於變動中,所以導致專案的範圍與規模無法界定,連帶也引起時程無法估算(人月? 神話吧)。那麼,是不是開發成本的成本也無法預估,而往往也因為成本與時程的低估,更容易導致品質不佳、粗製濫造的軟體系統。

正是由於軟體別於如硬體產業的變動性問題,使得在其它成熟領域的專案管理經驗,並不容易全盤導入至純粹是軟體的系統開發上。若是把軟體開發當成是知識與創新的產業,那麼一成不變且僵化的專案管理方式,並不妥當;除非是將軟體產業當成是軟體工廠,需求固定且明確,工作者(worker) 各司其職,負責實做局部的小功能,再由 「大一點」 的工作者,來組裝成大功能。請記得,這樣的方式,其假設前提是需求不容易變動,工作者也不太需要具備創新獨立思考的能力。

個人是很難相信需求不會變動,同時也認為正是因為軟體的多變性,才造就了更多的好機會,所以軟體的開發,不應該視善變為畏途,反而是把變動看成是理所當然,更是多添了許多的好機會。我們所要作的事情只是,如何將變動抑制或收斂在某一程度可以被控管的範圍內,同時,學會如何在某一問題領域(Problem Domain),重覆性、同質性高的軟體系統,來找出不容易變動的部分,成為系統的框架(framework),或稱之為主結構(Main-Structure)。而容易變動的部分,又是如何從主結構中抽離出來,爾後只花少許的 「工作量(effort)」,就可以輕而易舉的滿足客戶的需求。

很難嗎? 只要有兩個滿足的要素即可:一為開發的資源(包括成本與時程)多一點;另一為團隊對軟體的基礎養成與默契好一點。 但是好像要能滿足這兩點可真是困難,該如何才有可能達成這種 「夢幻」 的要件呢?

這就回到最現實 「人」 的因素了,要能爭取到多一點的開發資源,如果你沒有什麼誘因吸引老闆或業主(兩者可統稱為關係利益人, stakeholder),是不太容易的。專案的領導者總是要有 「實績」 才能讓關係利益人信賴並願意投入資源,而資源越多,當然專案成功的機會就更大。後文會提及,「反覆與漸增(I&I, Iteration and Incremental) 」,會是提升專案開發 「實績」 的好手段。

再探討另外一點,如何才能讓團隊成員對軟體的基礎養成與默契好一點? 默契要好,溝通必然要多,要能溝通多,當然就是要勇於把自己的想法給表達出來,而這些,則是有賴於專案領導者的支援與協調。總之,好的專案領導者是要能懂得 「觀察」 在整個專案開發的過程中,成員之間互動所衍生出的種種問題,然後找出 「解決方案」 來謀和 「人」 的問題;另外回到最根本的是,畢竟這是軟體的開發,軟體的基礎養成功夫不足,當然也不太可能作得好軟體開發,軟體人員持續的學習與成長,更會是軟體產業的命脈。

幾個可能是軟體開發流程的問題點

正是由於 「變動無常」 的軟體開發專案,有些人的想法是想要 「凍結」 住需求,然後依照固定不變的製程,一個階段接續下一個階段以循序式 (Sequential)的開發產出 (artifacts),例如預估一年開發期的專案,三個月的系統分析(SA, System Analysis)、三個月的系統設計(SD, System Design),六個月的實做與測試(Implement and Test),這樣的開發方式稱之為 「瀑布式(Waterfall)」 的開發流程,參考如圖1。 繼續閱讀 »

我的 Firefox 跑得跟飛得一樣~

這一篇:[心得]有2G以上RAM的可以參考,我的環境與該篇作者類似,就是我的桌上型電腦,是跑 2GB 的主記憶體,開完機後,即使跑許多的應用程式(Vmware 除外),仍剩下有 1GB 左右的記憶體。本來以為把 WindowsXP 的虛擬記憶體關閉,就只會使用 RAM,結果關掉反而會造成某些應用程式無法執行,還有,IE 預設的暫存檔位置,是指向系統硬碟的暫存目錄上,仍會使用到實體的硬碟。

上述討論串,有許多的網友們提供了如何活用主記憶體的心得,真是不錯,我才知道,其實切一小塊主記憶體,當作 "硬碟",其實,這在 APPLE 時代,就曾提出的 Solution,也就是 RAM DISK (虛擬硬碟) 的觀念。然後把 IE 的暫存目錄給指向 DISK 的磁碟代號(例如 R:\),哇! 以後開啟 IE 後,你的硬碟就再也不會燈一直閃來閃去,跑去實體硬碟頻繁的讀取。

登出或關機怎麼辦? 目前許多 RAM Disk Utility,都有提供屆時會自動 Copy 虛擬硬碟的資料回到實體硬碟上,甚至有些還會提供 Image File 的方式,並且事先預設好儲存的大小與位置,所以開關機讀寫時很快,幾乎不會影響到正常開關機的速度。

要切多大呢? 我個人只切了 168MB 的記憶體當作 RAM DISK,因為只打算給 IE 暫存目錄用的,事實上,在 IE 的設定上,也只是設了 72MB 給暫存目錄用,綽綽有餘,所以額外的空間,就給本文的主題,Firefox 來使用。

若是系統的暫存目錄,例如 C:\TEMP, C:\TMP 等,RAM DISK 最好是設 1GB 以上(太小會出問題,系統暫存空間不足)的空間,那麼效能絕對是超好,要解壓縮、燒錄軟體 …等,就不會使用到實體的硬碟當暫存空間了。此時 RAM DISK 的磁碟代號最好是設與 IE 暫存所在的磁碟是不一樣的,因為系統的暫存並不需要關機後再保存,直接消失並沒有關係,否則開關機時,還要再讀取 1GB 左右的暫存空間,哪可是真的會花上許多的時間了。另外因我有虛擬 PC 執行的需求,所以常態的主記憶體會保持在 700MB 以上左右,跑一個 VMWare 系統大概切個 512(or 768) MB 就足夠了,而如此當然也沒有辦法再切 1GB 記憶體給 RAM DISK 當作是系統主暫存空間了,我是建議大概有 3GB 主記憶體的玩家,就可以考慮這樣的 Solution 了。

前述提及,切了 168MB 給 IE 暫存目錄,還剩下近 100MB 左右的虛擬硬碟空間,後來想到,乾脆就重新安裝 Firefox,然後就是直接給安裝到 RAM DISK 內就好了,連啟動時,也不會再需要硬碟執行的機會了,整個瀏覽的速度,呼~ 跟飛得一樣,包括執行、瀏覽到關閉,完全都不會動用到一點點硬碟的讀取! 既環保(保護硬碟)效能又是絕佳。

我是到 Mozilla Taiwan 的 討論區Wiki 文件區找到官方下載的 Portable 版本,最新版本是 2.0.0.2,抓回來解壓縮到 RAM DISK 就可以執行了,很是方便。 Portable 版本安裝 Plugin 的方式與一般需執行安裝的版本是一樣的,你也不用作什麼特別的設計,搞得很複雜,只有高級玩家才會的設定方法,很簡單、很傻瓜。整個解壓縮、開啟 Firefox、安裝一些 plugin 包括 "同文堂"、"Tab Mix Plus"、"IE TAB"、"FlashGot"、"Super DragandGo"、"All-in-One Gestures" …等,過程很順,執行更是順暢,包括我測試登出後再登入執行,完全沒有問題,所有的設定都在。

本篇文章就是我在 Firefox 的環境下寫的, 2.0 以後的版本我覺得蠻不錯的(我已經有一年以上的時間沒碰過 Firefox 了),相較於之前 1.5 以前的版本,好像穩定與質感都比以往甚佳,最起碼我用了一天,還沒有當過。嗯,RAM DISK 的應用的確真的很不錯,我是考慮再去買條 1GB 的 RAM,然後乾脆也把系統暫存目錄給指向虛擬硬碟的磁碟,我想,這樣系統整體的效能應該會再更提昇,盡量啦,能少一些聽到硬碟的嘎嘎聲,爽度會更是上升的。 ;D

※補充※
Firefox 的暫存目錄也記得要設定位置到虛擬硬碟所在的磁碟。
在 Firefox 的位址欄中輸入 about:config,按下 Enter,然後右擊鼠標新建一個,名為 browser.cache.disk.parent_directory,類型為字串,再輸入新的路徑,例如 R:\temp即可;滑鼠雙擊 browser.cache.disk.capacity,預設為 0 (Portalbe 版本),修改暫存目錄的容量大小,我是設為 51200。

搭乘高鐵到高雄一天來回的感想((2007/03/14) ~

應高雄某軟體開發公司希望協同我們一同拜訪客戶,洽談軟體教育訓練與相關合作事宜,所以今日早上一大早就搭乘高鐵到高雄去了... 前兩天購買的車票,早上 7:15,所以我不到六點就起床,然後開車到捷運站附近,想說在德州儀器後面有可以免費停車的位置,沒想到,既使這麼早,仍然被佔滿位置,不得已停在停車格,等晚上回來後,停車費開了 $240,真是傷。 :(

沒吃早餐,到了台鐵車站轉乘高鐵附近,地下街的店面只開了一家有賣小籠包與豆漿的小吃店,胡亂買了雜糧饅頭與黑豆漿,以及到車站大廳的 7-11 買了份報紙,差不到 10 分鐘,就趕緊上車。 這是我第一次坐上高鐵,實在有些不得已,我並不會想坐,但也不太希望前一天就到高雄來住在商務旅館。票價 NT$ 1490,我是覺得蠻貴的,我坐在三個人連在一起的座位,還好,是靠窗戶,不過坐起來的舒適度是與自強號感覺差不多,不好也不壞,我坐的車廂竟然是全滿,看起來商務人士頻繁的往返南北也是蠻多人的。倒是最重要的,速度,還真的挺快,板橋、桃園、新竹、台中、嘉義、台南、左營站都停,兩個小時就到了。到了左營終點站後,去上化妝室,相當乾淨,馬桶是坐式,可以抽取紙墊在馬桶上,衛生多了,有些不習慣的是,沒有垃圾桶,一切都是丟在馬桶內,手一揮感應器,就高速衝進去了。車票出口處旁、車站大廳內,有家 StartBuck,趕緊買了杯本日咖啡,品味一下,也順便提提神。

台北有點冷,但高雄天氣可真是好,溫差好像有 10 度左右。一同與該軟體公司專案經理到高雄港拜訪那家規模極為龐大的航運管理的公司後,中午一同到了「家樂福」地下室,有家「異能館」用餐,應該是上班時間的關係吧,人潮並不多,。高雄什麼都大,家樂福好大,一旁統一的 Shopping Mall 也超大,還有 IKEA、Cosco 怎麼也都開這麼大? 還有,連餐點也很大量,整個套餐含 $120 的飲料,也才 $240 左右,但是菜色相當實在,蠻好吃的,在台北應該吃不到便宜大碗又那麼好吃的套餐吧。

聊了一下,也與該公司技術人員們討論一下,交換一些意見,就準備回家了。本來是預訂 PM 6:30 的車次,不過四點左右就到高鐵左營站了,還好,可以換票,剛好可以趕上 17:00 的車次。

還有半個多小時,想說買個台鐵有名的「八角便當(那是我最為讚賞的便當)」,結果,台鐵雖然在另一旁,但是沒有任何零售商店,連賣報紙的都沒有。 而高鐵車站偌大的大廳,竟然只有兩個商店,一個是 7-11,另一個就是 StartBuck 了… ,蠻失望的,然後在上車時,又問了隨車的服務小姐,是否推車有賣便當,結果也是沒有!! 說真的,我是覺得這些基本的週邊設施配套,高鐵的確不足,感覺整體的規劃能力並不佳。

不過呢,最重要的還是:速度! 嗯,17:00 準時開,這次因為中途只停台中與板橋,到台北 18:40 就到了,約只要一個半小時的時間,這與我半年多前坐自強號到高雄時,要花上四個半小時的時間,整整省了三個小時,的確方便太多太多了。

還會再坐高鐵嗎? 我只希望,票價再便宜一些吧,其它週邊不足、服務不佳、訂位會重覆...等問題,是都還可以忍受啦,但是,來回這樣一趟要花上 $3000 元,若能降到 $2000 來回,嗯,就樣我甚至願意全家利用假日來個高雄一日遊的。 ;D

【好書分享】短線交易秘訣
短線交易秘訣 短線交易秘訣
Long-Term Secrets to Short-Term Trading

———————————–
作者: 賴利.威廉/著
譯者:周萱
出版社:財訊
ISBN: 9578390351

內容簡介
短線交易不僅能提供最大的財務報酬,也是對投資人的最大挑戰,需要隨時集中精神,保持警覺,並制定一套嚴謹的交易計畫。本書是知名技術分析師賴利.威廉斯,十年來所出版的第一本論述短線交易的著作。經由作者的專業引導,你將學習到市場是如何變動的;什麼是三大最具支配性的週期;什麼時候該出場,以及如何在你選定的時間範圍內緊抱獲利的合約等基本觀念。

本書到處充滿這位當今最受尊敬的市場行家所提出的真知灼見、精準規則、公式以及有效的建議,相信這是一本短線交易的重要鉅作。

本書是我在半年多前購買的,是連同「投資心理學」這本書一同購買的,而「投資心理學」一書,我早在半年多前就已經看完並已寫出書評,但就是這一本書,我卻遲至現在才寫書評,因為,我還沒看完,不是這本書不好,而是這本書的內容太棒了,內含的交易技巧與智慧雋語,有許多的部分,我並不太懂,事實上,這半年多的時間,我都是一直在思索箇中的道理。

本書的作者,賴利˙威廉斯(Larry Williams),與 Livermore、科斯托蘭尼,我發現到都有一個共同的特點,他們比一般 "聰明" 的投機者還來得有智慧太多了。請要瞭解,有智慧與聰明是兩回事,我看到太多 "聰明的笨蛋"了。"聰明的笨蛋" 的特徵是,在某一小個領域相當強悍,非常精通技巧,但就往往僅限於某一小個領域,卻往往見樹不見林,經常忽視掉自己看不到的茫點。但是 威廉斯 俱足比一般聰明的投機者所不一樣的地方就是,他懂得反思,他懂得觀察,他更懂得要敬畏這個市場,時常懷抱著戒慎恐懼的心態,尊重這個市場。

威廉斯在序言就提到了,期貨這個金融市場是一場利用贏家的優勢來發展策略,爭取更多的勝算,善用這些致勝的優勢,並隨時注意賭局裡的變化—是否出現新的競爭對方、新的創意和新的觀念。所以啦,這好像與國內投顧老師、分析師、眾多高級散戶玩家們追求高精確度的勝率是不一樣的根本心態了,威廉斯又繼續提道:「我們這類的投機客則會觀察未來的情況發展,但我們知道未來是不確定的,所以會善用適當的保本技巧來保護自己的部分,以贏得比賽。投機的藝術講究仔細的觀察,只做有把握的投資,不冒沒必要的風險。

我學到了,原來風險與資金的管理,還來得比勝率更為重要,再來,心態而影響對市場的操盤信念,更是首要修鍊的要項。威廉斯建立了一個相當有意思的信念系統,就是:我相信當前我所進型的交易一定會虧損...而且虧損得很慘。因為這樣悲觀的想法,讓他不致於因為對市場的樂觀預期,而造成買賣太頻繁,而且持有部位太久。

我原來所不懂本書內容的一些部分,包括威廉斯對於市場結構的解釋、價格與時間等。他針對每一個想法都獨立成一個章節,然後會用他所不擅長的數學(書中一再強調,他是數學白癡),對主要操盤的金融市場,寫程式來作統計圖表,目的是在於想法的印證與落實。我後來才突然發現到,其實每一個章節講述交易技巧的部分應該不是那麼重要,最重要的部分應該是在於,威廉斯是如何觀察市場,然後把想法透過統計數據來印證,然後又付諸行動...這才重要!! 懂得觀察、從市場中學習(不是只有學會某一種 "神奇的指標" 或是追隨某一位全能的先知),行動、落實、印證,這才會是能在市場生存並獲利的重要法門。

本書非常的精彩,但也不是那麼好懂,我花了半年的時間思索,也還沒有看完本書。威廉斯精彩的白話的自述方式,在在都充滿了老交易人的智慧。真正好的投機客喜愛刺激,也刻意去尋找刺激,他們會把它當成是某種理智的出擊。對了,那麼又為什麼想當投機客呢? 我投入投機事業,是因為我太懶而不願意工作;太老實而不願意偷竊。 ;)

解決本站中文顯示亂碼時的瀏覽器設定方式~

今天收到 yungyuc 的留言,告知使用某些瀏覽器瀏覽本站時,中文都會變成亂碼…
>您這個系統kmr xiy 用 Firefox 和 Seamonkey 看 (Windows/Linux 皆然),中文都會變成亂碼。IE 和 Opera 正常 (僅測試 Windows)。

其實這問題出現蠻久了,我的朋友在美國,即使使用 IE(英文版本) 瀏覽我的站台時,也是無法正確顯示中文,也有是網友反應,使用 Firefox 會出現亂碼,但在 Windows 系統下使用 IE 卻沒有問題... 一直都找不出問題的癥結在那裡,後來是本站的一位讀者給了解決方案(實在感謝他!)。不過,我仍不知原理到底為何? (我的 Blog 系統係為 utf-8 的正體中文編碼方式。)

先列出如何讓各種瀏覽器均可以正確顯示中文的設定方式:

  1. 打開 IE 瀏覽器,在選單中,選擇【工具】【網際網路選項】【一般】。
  2. 在最下列選項中,選擇【語言】,出現【語言喜好設定】對話框。
  3. 選擇【新增】,選擇語言為 zh-tw (中文(台灣))。
  4. 其它瀏覽器亦比照如同之設定方式,也就是一定要新增 "zh-tw" 語言,如此才會送出 Accept-Language:tw,而顯示正確的中文(utf-8)編碼。

正確顯示本站中文編碼的瀏覽器設定方式~

{閒聊} 安裝 Linux 二三事

這幾天忙著安裝 Linux 系統,主要是我本來有一台 P3 伺服器等級 CPU 的 PC。本來我的 Blog 系統就是架在家裡的,不過後來嫌系統管理麻煩,更主要的原因是常被 Hacker 侵入攻擊,不勝其擾,所以就將站台移轉至提供虛擬伺服器的 ISP 上。不過年前因為將 ADSL 升速,固定制租費不升反降,現在 4M/1M 的速率才 NT$1600/月,這讓我想起早期我架設 BBS 時代時,電話費一個月要付上 NT$4,500 來比的話,便宜得太多了。然後也想說這台 P3 擱置也是浪費,乾脆多加利用,架設個 Subversion 版本控管 and Groupware 等群組管理的系統,也方便團隊的系統開發。

我這台 P3 是伺服器等級的 CPU,當初這顆 CPU 就買了 NT$12,000,配置 512MB 的記憶體,而且買的是 Ultra SCSI 的介面卡與硬碟,一顆 32GB 的硬碟現在仍要好幾千元的。非常地穩,不過就是機殼的風扇吵了點,我想準備找個時間,把 PC 搬到光華商場「雷智電腦」,請老闆幫我改裝個靜音的機殼風扇。

做為伺服器的作業系統,當然最佳、最有效率的選擇就是 Linux OS 了。一開始我打算安裝的是 Fedora Core 6 系統,這也是我比較習慣安裝的系列了。由於這台舊電腦只有 CD Player,所以下載的是 CD 版本的 ISO 檔,再燒錄到 CD 空白片上。安裝過程極為不順,連續安裝了好幾次都失敗,後來才發覺是這台 CD Player 讀取有問題,換台我之前升級留下的一台 Plextor 12倍速燒錄的 CD 燒錄器,讀取就很順了。但安裝結束後,重開機後無法正常啟動,就出現了 "Kernel panic" 等錯誤訊息。依照錯誤訊息,從 google 查詢的結果,發現到是主機板 BIOS 老舊而造成與 Linux Kernel 不相容的可能性最大,不過,我也懶得查是啥問題了,況且我也沒有軟碟片升級這片主機板的 BIOS,所以,我想安裝 Novell 的 Open SuSE Linux 作業系統,這也是 Simon 大力推薦的套件。

不過在 mobile01 爬文時,不小心看到有人推薦國產免費的 Linux 套件— B2D Server,只要一片 CD 的容量,小而美,裝伺服系統是綽綽有餘了,而且看來 Debian 的架構在該位站長的維護下,推動得相當不錯,許多國中小資訊中心的系統,都是採用這套系統安裝的呢。下載回來安裝系統,唉,不曉得是否是 SCSI 裝置的問題還是什麼,就是在安裝畫面的首頁就給停住了,看來是無緣安裝這個系統了。

所以回到原點,準備安裝 Novell Open SuSE 10.2 的 Linux 系統。很奇怪,安裝過程就是相當不順,光第一片 CD,安裝到一大半後,就會出現無法讀取某某套件的錯誤訊息,後來不小心檢查了 MD5 checksum 後,才發現下載回來的檔案 checksum number 與原網站所提供的不符。更奇怪的是,我下載了國內外各個站台的 ISO 檔,永遠都是 checksum 不符,怪得很,檢查系統也沒有病毒...

找了 Simon,請他來家裡幫忙安裝,畢竟他可是 Linux 系統的行家。結果他帶來的是 DVD 版本,唉,都跟他說了,我這裡不能使用 DVD 的。Simon 後來想說透過網路安裝的方式,也就是將 DVD 安裝到我 Windows 系統的光碟上,然後利用 SMB 方式,mount 區域網路的光碟。耶! 這個方法有效,總算可以順利安裝完畢了。

SuSE Linux 的安裝方式很特別,介面也佳,相容度也很好,個人相當欣賞。現在剩下的工作就是安裝套件內的 PHP5, MYSQL 5,還有設定 Apache2, FTP, Suberversion, eGroupware 等應用伺服系統了。

Linux 系統蠻有趣的,我想改天再安裝個 SuSE Linux 的 Desktop,給安裝在 Vmware 的環境中,並且再安裝一些程式開發的平台,也方便授課時使用。同時我也打算未來新購的筆記型電腦,使用 Dual boot,安裝個 Vista and SuSE Linux Desktop。因為聽 Simon 說,SuSE Linux Desktop 不止跑 3D 嚇嚇叫,而且 2GB 的主記憶體,竟然可以同時跑四個 Vmware,效能極佳,更是可以充分發揮硬體的效能的。 ;D

Page 1 of 179123456789101112...203040...Last »