今天看到一篇舊的討論,獨孤木發起的 一個既有的系統想要進行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高不高? • 這