跳到主要內容

發表文章

如果怕賠錢,就不要開公司就不會賠錢了

今天看到一篇舊的討論,獨孤木發起的 一個既有的系統想要進行architecture的調整,你們認為該怎麼做比較好呢? 有點長,中間有許多明言,例如:"如果怕賠錢,就不要開公司就不會賠錢了"、"好公司通常都是大公司。因為好,所以有機會變大"等等。 怕以後找不到,所以先摘結論下來,獨孤前輩,請莫怪。 問題: 你現在的工作是要把一套系統從Notes轉到J2EE下面,你是一個project manager,你在進行planning時,有什麼該特別注意的地方呢? 1.這種調整architecture的案子,跟一般全新的專案有什麼不一樣呢? 2.有什麼risk是要特別注意的呢? 3.假設如果要整個案子porting到J2EE下面,根據你的估計,整個做完要花兩年,三千萬。客戶說,我們今年只有一千萬,明年後年還各有一千萬。在這種預算有限的狀況下,你會建議客戶怎麼做? 如果要分期上線,你建議怎麼區分不同的release?依功能面,還是照其他的層面?對他們最大的效益是什麼? 分好幾個phase(大的iteration)來release的話,會有什麼要考慮的? ------------------------------------------ 背景說明: 1你面對的系統,沒有up-to-date 的design document,只有一套正在running 的系統。 2.user除了想要把現有系統的功能轉過來以外,還想包一些enhancement在scope裡面。這些系統因為現在還在operate,所以得要考慮data migration,也要考慮怎麼做parallel run。 ------------------------------------------ 參考答案(截至目前為止的回應加上我自己的參考答案) 1.1 沒有現成的design,那麼在做頭一個release時,會需要做現有系統的reverse engineering。 關於reverse engineering應考慮下列問題: • reverse engineering會不會遇到什麼困難? • 有沒有什麼tool? • 要花多少effort? • 有沒有適當的人選可以做這件事情? • 如果沒有的話,有沒有什麼backup plan? • risk高不高? • 這...

Ubuntu 6.06 LTS

昨天把NB上的Ubuntu 5.10升級到6.06 LTS,完全使用線上安裝,真是太帥了  目前Windows沒有辦法做到這種程度的線上升級吧! 因 為昨天升到半夜才裝好,今天才有時間測試,果然不負眾望,比以前更快,效果更好。我的顯卡是SIS,在5.10剛進X會有些雜訊,這版已經完全正常。 Firefox用1.5.0.3,希望能盡快升到1.5.0.4。加上Sun合作,成為唯一內建官方JVM的Linux,這點讓使用者方便太多。 我用的仿OSX的Theme雖然沒有Aqua那麼美,但目前的速度與穩定性,算是user friendly的OS。前陣子FreeBSD才說要改善桌面環境,Ubuntu是很好的學習對象,當然,最好的仍是Mac。

Mock Object Pattern

Mock字面上的意思就是膺品,也就是假貨。Mock Object是產生一個與原來class相同的物件。 用途是在Unit Test時,測待class可能有相依的元件,在不易使用或呼叫的情況下,使用Mock Object取代這些元件;例如Business Logic元件會呼叫DAO元件,在此時使用Mock Object可以省掉許多麻煩與時間,直接將值回傳,避免資料庫裏的資料與當初設定時不同。 範例: 原來class: publci class Transaction { ... } Mock Object class: private class MockTransaction extends Transaction { ...} Mock Object就這麼簡單,可以提昇Unit Test的效率。 但隨著系統的發展及變更,Mock Object會跟著越來 越多,反而造成Mock Object維護不易,因此聰明的程序員就想出用AOP來節省時間,最後開發出Mock Object工具。 參考資料: Unit testing with mock objects MockObjects.com Java: Mock Object工具橫向比較(上) Mock Object工具橫向比較(下) EasyMock MockCreator jMock Virtual Mock Objects using AspectJ with JUNIT .Net: Mock Objects to the Rescue! Test Your .NET Code with NMock NMock

Null Object Pattern

在寫程式時,有時候需要傳回空值,例如員工資料查無此人時,但是傳回null常會造成不方便並容易會出錯。這種時候,可以導入Null Object以避免此情形,Refactoring : Introduce Null Object 。 參考: Null Object Design Pattern 但在"Agile Software Development"第17章中,建議不要直接有NullCustomer,而改用Customer.NULL這種做法。寫法如下: public interface Customer { public boolean buy(Object o); public static final Customer NULL = new Customer() { public boolean buy(Object o) { return false}; } } 這種做法,可以確保只有單一的null customer。

又一個炒作?

認識我的人都知道,平常我很低調,不過因為朋友提到,就順便寫下來,也作為一個預言。 今天同學阿瑋提到一個新聞:" Web 2.0/紅透半邊天!網站服務爭相推~ ", 我的想法和他一樣,都是在炒作。 Web 2.0是Oreilly提出的,誠如文中蕃薯藤營運長蕭景登所言,Web 2.0是一個概念。但是,Google有本事弄出個AJAX,至少讓使用者的感覺改變。Hemidemi算有一些,但是今天吵得最大聲的PXHome呢? 我不做評論,開頭就說過我很低調,不像暗黑殺手。我只能說,會有人出來罵。

Firefox 1.5.0.4

昨天看到Firefox 1.5.0.4出現,當時還不能自動更新,今天果然出現自動更新。最好的消息是,許久以來在OS X上Spaces貼Link會crash的bug修好了