如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。
顯示具有 專案管理 標籤的文章。 顯示所有文章
顯示具有 專案管理 標籤的文章。 顯示所有文章

2019年6月2日

"南山境界之亂-百億新系統導入出包" 之評論

作者: Fred F.M. Wang (FW知識瑣記) 日期: 2019/6/2 最近修訂日 : 2023-1-17

"南山人壽花費約100億元與德國大廠SAP(思愛普)合作,建置「境界成就新系統」,自去年9月上線後,卻頻頻出包,讓保戶和業務員都「凍未條」。因為系統出錯未發出通知,有客戶因此未繳費導致保單被停效,業務人員因為系統錯帳,佣金被扣住,影響考核。金管會已出面協調,要南山在2週內評估新、舊系統平行測試,甚至恢復舊系統的可能性。…"

一個大型的資訊系統導入的專案,造成企業的災難,筆者在20多年前首次參與SAP ERP導入時期,就時有所聞。
(ref : 15 famous ERP disasters, dustups and disappointments)

沒想到經過這麼多年,還是發生這類災難,聽到又是熟悉的"SAP"。

令我驚訝的是居然會向不曾設計過壽險資訊系統的SAP採購。造成四年多預算不斷追加達100億元,甚至上線後,系統成本還不斷增加預算。

研究媒體報導發現,導入系統過程可能有幾大問題 :
1 缺乏嚴謹的評估 : 是否評估廠商有相關產業經驗? 資訊系統功能是否符合產業的需求? 不能太過相信廠商的行銷語言。是否資訊系統的基礎環境也納入評估? 如作業系統,資料庫,工具軟體與硬體環境等。廠商評估,可行性評估,成本效益評估,這些都是事先必須做好的。

另外,每個產業都有其特殊性,公司作業與流程也會有一些特殊性,這些可能就是企業的核心競爭力所在,要針對這些特殊部分,評估其作業方式及流程與標準化的SAP套裝軟體的差異,若SAP無法做到,要花多少成本透過客製化做到? 或用可以用其他低成本的解決方案達成? 硬將企業特有重要的作業硬套上不合身的軟體,可能會影響到原有的作業,造成錯誤,效率低落,甚至降低企業競爭力。(2023-1-17)

2 缺乏嚴格的專案管理 : 大型專案應嚴格執行與控管九大專案管理領域,特別是否有做好變更管理,包括是否定義好新流程參與的角色,所有參與的人員是否熟悉系統流程與操作介面。

3 顧問團隊能力不足,花大錢請來外國來的和尚不一定會唸經,除了顧問專業能力外,溝通是否順暢是很重要的環節。

發生上面的問題,一個大型專案,縱使有高層的強力支持,往往也會失敗收場。

另外,提供給當老闆的兩句話,沒有任何的成功經驗是可以直接複製的,只能學習。

因為過去成功的經驗而自大,忽視了新環境的差異,往往會造成更大的失敗。

新聞來源 :
2019-04-26 中時電子報,境界之亂延燒 南山還有苦頭吃
2019-05-03 財訊,尹衍樑最大的投資 最艱困的一役
2019-05-24 信媒體,扣不到錢就說保單失效! 南山人壽百億新系統出包 工會高喊杜英宗下台

2011年12月8日

[專案管理] 解救您的專案 - 如何面對不斷變更的需求


作者: Fred Wang 原作日期: 2011/10/2
       如何面對不斷變更的需求,要了解為何客戶會不斷變更他的需求,有沒有可能是派來談需求的代表,對業務的需求不夠了解,專業能力不夠,提出的需求代表性不足,提出的不是最終用戶的需要,也許是對系統化過程經驗不足,也可能是尚未成熟的需求(只有想法),或許是新業務或變動大的業務,尚無法訂定明確的需求。這些問題要先了解,才能真正找到問題的根源。(先確認到底專案所有相關影響人有哪些,他們的期望與需求各是什麼,客戶的代表是否有足夠的授權)
       解決不斷變更的需求,需要建立一些管理程序,而這些管理程序也要看雙方合作的經驗與信任的關係,如果合作經驗少,信任度尚未建立,需求分析與變更管理的過程都需要更嚴謹(成本較高)的方式來進行。
1.    需求蒐集與分析
a.專業的了解 : 系統分析師不僅僅只是蒐集客戶的需求了解客戶業務流程,還須對客戶的產業與專業領域有更多的了解,最好也懂得以一些大型系統作為最佳案例,例如SAP ERP各模組功能,在需求討論的過程可以提供客戶一個比較好與正確的引導,以期能讓客戶對需求考慮完整周詳,減少未來的需求變更。當然要求SA具備專業顧問級的能力,可能不太容易,但是這個能力的大小將直接影響專案的進行。一些大型專案(在中大型公司)會引進專業顧問,將業務流程標準化與合理化再進行系統化。
b.需求溝通會議 : 需求的提出與需求變更,透過正式的需求溝通會議進行,任何決議都有紀錄,紀錄都有簽字,且須通知主管,而不是一通電話或eMail私底下就決定,如此會讓客戶(需求提出者),更審慎地制定需求與嚴格地面對變更。
c.雛型化需求確認 : 由於使用者的需求變化大,也許是業務面變化大,也許是新的業務需求,可以採用雛形化的需求確認方法,透過多次需求訪談,快速雛型建立與確認,將需求談定。如果系統龐大,則應該區分功能模組,逐一確認模組。d.
d.使用高生產力的工具 : 由於雛型開發法可能的成本高於瀑布法,因此,使用可以快速開發雛形且未來容易轉換成實際系統的工具才有較好的生產力。
e.累積經驗 : 最好每次專案可以累積一些雛形,樣板或模組化的功能,不同應用領域累積不同的專業經驗與設計雛形,可以讓這個過程能夠更為快速。當然對於需求不明確的專案,專案經理必須估較長的需求確認時程,與雙方談定需求確認的方法,以避免爭議。(需求合理性是另外一個議題)
2.     系統設計
需求變更是專案過程中常見的現象,因為需求變更造成整個架構變更,全部或多數程式要重寫,都是系統設計開發人員要設法避免的。因此有經驗的設計開發人員會採取彈性的設計與開發手法,預先考慮可能的變更,提供系統較好的彈性,重點列出如下 :
a.彈性的架構 : 將系統設計得更為彈性,讓變更時的影響最小,設計的彈性包括系統架構每一層次都獨立化(如使用者介面與商業邏輯,資料處理區隔, Web設計上Javascript, CSS, HTML區隔,使用MVC架構等)
b.程式模組化 : 系統的開發最理想的是像堆積木般,將既成的模塊加以組合就可以完成整個系統,也就是採用庫存程式庫,再加以組裝。或是先用標準的庫存程式建立半成品(標準次系統),在上面加以客製化的程式來完成整個成品。
c.參數化設計 : 系統中可能變動的部分予以參數化,可以透過一個設定檔或介面進行變更,這些參數可能是系統參數或由使用者自行變更的業務參數。
這些能力與開發團隊累積的開發與系統架構的經驗與累積的程式庫有關。
3.    變更管理
a.將變更管理列入合約 : 專案一開始就跟客戶談好變更的方式與流程,而且要在合約中註明。另外,上線後提供多久或多少次的變更支援,在合約訂定保固的條文。
b.保留彈性的時間 : 專案時程最好也留下一些彈性的時間可以面對一些小型的變更,而會影響時程的大型變更就須雙方談定否則不能貿然進行。
c.變更過程要有變更記錄 : 專案會議需有會議記錄外,變更也需有變更紀錄以記錄需求變更的原因,變更的單位與負責人,主管,進行變更的影響分析,造成的成本增加,對專案時程的影響等,且必須雙方負責主管同意才能進行變更。
特別是對專案越後期的變更,造成影響越大,如果沒有做好變更管理,釐清責任,將大幅提高專案的風險。
       如同軟體品質管理,要做到多嚴謹,訂定怎樣的品質標準與要投入的成本多少有關,需求與變更管理也是一樣,都應該有成本觀念。多數專案的失敗,往往發生不斷延長的時程與不斷增加的成本。
推薦相關閱讀 :
1.    怎樣控制需求變更 , ITEye, 2008/11/5

2006年3月15日

專案管理平台Open Source首選為DotProject

專案管理平台Open Source首選為DotProject 適合中小型On-line project management, 功能較其他完備,
目前已經到2.01版

其他還有 :
使用PHP技術的專案管理平台 : more.groupware, phpScheduleIt, phpCollab, NetOffice, phpaga
使用Java技術的專案管理平台 : Track + Task Tracker , XPlanner
使用Java技術的專案管理工具: GanttProject (適合個人使用, 與MS-Project類似)

下面文章是去年安裝DotProject 1.0.2版的經驗分享
----------------------------------------------------
專案管理平台DotProject經驗分享

說 明 : PHP web-based project management framework that includes modules for companies, projects, tasks (with Gantt charts), forums, files, calendar, contacts, tickets/helpdesk, multi-language support, user/module permissions and themes

安裝環境 : Apache 1.3.x, PHP 4.x,5.x (should enable GD)
測試網址: http://www.dotproject.net/demo/
測試帳號: demo/demo (使用者帳號) admin/admin (管理者帳號)

參考網址 :
Official Site :
http://www.dotproject.net

SourceForge :
. http://sourceforge.net/projects/dotproject/
. Modules : http://sourceforge.net/projects/dotmods/

目前Release的modules有 :
. HelpDesk
. Backup 資料庫備份用
. Links
. Journal
. Chinese - big5 Patch (and other language patchs)

開發中的modules有 :
. Inventory
. Timecard

標準功能有 :
. Companies : 公司
. Projects : 含Gantt Chart
. Tasks : 工作
. Forums : 可以設定Watches, Watch point有新的內容, 可主動發信件通知
. Contacts : 連絡人
. Departments : 部門
. Tickets : 問題追縱單管理, 可以將問題以送eMail的方式通知後續處理者
. User Admin : 使用者管理, 含權限設定
. System Admin : 系統管理, 可設定及安裝模組
. Help

各個功能間有交戶關係, 具備中小型On-line project management的功能, 值得推薦

2005年6月15日

J2EE專案10大風險

J2EE專案10大風險
原文在 http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-ten.html
避免本文所列之10大J2EE風險,確保企業級Java專案成功

作者:Humphrey Sheil
簡體中文翻譯參考:Blueski
繁體中文整理與翻譯 : Fred Wang (http://fredwang.blogspot.com)

風險1:沒有真正理解 Java, EJB, 和J2EE

這個問題可以分解為3個部分,以便於分析:
1. 沒有真正理解Java
症狀:
A 重複開發JDK核心API中的功能或Classes
B 不懂下列中的某些項目:
- 垃圾收集器 (train, generational, incremental, synchronous, asynchronous)
- 物件在何時能被進行垃圾收集 -- dangling references
- 使用的繼承機制及其優缺點
- over-riding和over-loading方法
- 為什麼java.lang.String 提供的性能不好
- Java中的Pass-by reference語意和EJB中pass-by value語意的比較
- 使用 == 或者使用equals() 方法 for nonprimitives (非基礎型態, 基礎型態primitives有char, byte, short, int, long, float, double, boolean )
- 在不同平臺上Java threads的運行順序方式(例如是否是pre-emptive方式)
- 新線程(Green thread)和本地線程(Native thread)的比較
- Hotspot技術(以及為什麼舊的性能調整技術降低了Hotspot 的優化效果)
- JIT,以及什麼時候好的JIT變得不好
- The Collections API
- RMI

解決方案:
需要不斷加強Java方面的知識,尤其是深入瞭解Java的優勢和不足之處。Java的存在價值已經遠不止是一種語言,了解平臺(JDK及工具等)也同樣重要。嚴格地說,你應該是經過認證的Java程式師,如果不是的話,也許有時會為還有那麼多不知道的內容而感到驚訝。另外,也可以加入Java的郵件列表(Mailing List)等。從同行中學到技術,這將是你最好的資源。


備註:
如果你或者團隊中的成員不真正瞭解程式語言和平臺,怎麼還能希望企業Java應用系統能夠成功呢?能幹的Java程式師之于EJB和J2EE,就像是鴨子之于水一樣。相反的,比較弱、沒有經驗的程式師只能開發出品質低劣的J2EE應用程式。

2. 沒有真正理解EJB
症狀:
- EJB在第一次被叫用後沒有再被叫用到(尤其是stateless session bean)
- 沒有重複利用價值的EJB
- 不理解開發者要做什麼,容器(Container)提供什麼
- EJB沒有依照規範定義(fire thread, 載入了native libraries,試圖執行I/O,等等)

解決方案:
要加強關於EJB方面的知識,可以找一個周末來閱讀EJB規範 (1.1版有314頁),然後閱讀2.0規範(524頁!),這樣可以瞭解到1.1沒有定義而在2.0規範中補充的內容。EJB開發者從18.1及18.2章節開始閱讀是比較合適的。

備註:
不要從供應商(Vender)的角度去看EJB,要確切地知道規範所支援的標準EJB模型和基於這些模型的特殊應用之間的區別。這也有助於移轉到別的供應商平台(或版本)的時候所用。

3. 沒有真正理解J2EE
症狀:
- "Everything is an EJB"的設計方式
- 用手工交易(transaction)管理取代了容器-提供(container-provided)的機制
- 自行設計安全機制 -- J2EE平臺在企業級計算中,從表示邏輯到後臺處理,已具有最完整的整合安全架構。

解決方案:
學習J2EE的關鍵元件,並且瞭解它們的優缺點,依次用它們替代每一個服務;“知識就是力量”在這裏行之有效。

備註:
只有知識能夠彌補這些問題。好的Java開發者會成為好的EJB開發者,此後也應逐漸成為J2EE得道高手。Java和J2EE知識掌握得越多,設計和開發工作就會越出色。在設計階段一切都會有條不紊。


風險2: 過度設計(Over-engineering) (採用 EJB或者不採用EJB)
症狀:
- 過於龐大的EJB
- 開發者無法解釋EJB做什麼,以及其間的關係
- 當需要重複使用某些EJB、元件或服務時, 卻無法做到
- EJB啟動了新的交易,而該交易本該由一個已存在的EJB啟動
- 為了安全,把資料分離級別(Data isolation levels)定得太高

解決方案:
過度工程化的解決之道就是極限編程 (XP)方法:用最小的設計和程式碼來滿足需求。除非明確知道今後可能的需求,如將來的負載要求,或者系統在最高負載下的表現,否則大可不必為系統將來的情況做太多考慮或猜測。另外,J2EE平臺已經定義了可擴充性(scalibility)及容錯(failover)等特性,可以讓伺服器系統為你進行處理。

在小型系統中,只包含一個個小元件,這些元件只做一件事,且只要把這件事做好,系統穩定性就已經得到了提高,而且,系統的可維護性會變得很強,在未來要增加功能以滿足新的需求也將變得容易。

備註:
除了上面所列方案之外,可以運用設計模式(Design Pattern) -- 它們可以顯著地改進你的系統設計。EJB模型也廣泛使用了設計模式。例如,每個EJB所帶的Home 介面就是Finder和Factory模式的實例。EJB的remote介面扮演了一種實際bean實現的Proxy,並且對於提供容器的能力也是至關重要的,這些容器截取叫用信號並提供如透明(transparent)的負載平衡的服務。

另外:僅僅是為了使用EJB而使用EJB是危險的。在你的應用系統中的某一部分可能並不需要EJB,甚至你的整個應用系統都不需要。這是過度工程化所走的極端,而且我確實也目睹了一些良好的servlet和JavaBean應用被重構為EJB,而這樣做並沒有很好的技術上的理由。


風險3: 沒有將商業邏輯與前端顯示邏輯分離
症狀:
- 過於龐大、不便的JSP程式
- 在商業邏輯改變的時候必須修改JSP
- 在要求改變使用者介面顯示的時候需要修改並重新配置EJB和其他後臺元件

解決方案:
J2EE平臺使你有機會將顯示邏輯和流程控制分離,進而與商業邏輯分離。這稱為Model 2架構。

備註:
使用一致性的設計來進行用戶介面框架(UI Framework)的連接(例如可以使用taglibs),這將幫助你避免邏輯分離的問題。不要擔心需要自己建構GUI framework, 已經有許多現成的應用可供選擇(例如Struts等, 對每一個分別進行評估,然後採用最合適的框架(framework)。


風險4: 沒有在開發環境中進行適當的配置
症狀:
- 經過多日或數周的時間才能轉到實際(Live)系統
- 上線過程仍存在大量的風險,有很多不確定性及主要的功能情境(scenario)沒有被測試到
- 實際(Live)系統中的資料和開發、測試中的資料不同
- 無法在開發者機器上進行建構 (Build)
- 應用行為在開發、測試及生產環境中各不相同

解決方案:
解決之道是忠實地複製實際(Live)環境到開發環境,讓開發環境接近於要上線的實際環境。如果未來環境是JDK 1.2.2及Solaris 7,那麼不要在JDK 1.3及Red Hat Linux上進行開發。對於所用的應用伺服器也是如此。不可預期的資料透過下面過程就不會發生:
- 資料核對(Validation)規則
- 系統行為測試
- 系統元件間的協定(特別包括:EJB-EJB間以及EJB-資料庫間)

最糟糕的是,這樣還可能發生異常、空指標,以及你從沒見過的問題。

備註:
開發人員常把安全性問題放到Test階段才開始解決。要防止這樣的陷阱產生,你也可以花費同樣多的時間在業務邏輯中改進安全性。

上線(Go live)是一個複雜的過程,其中充滿了技術性問題和非技術性問題。你可能會陷於想不到的問題中。開發及測試環境過程提供更多產生這些問題的機會,及發現這樣的問題的地方,利用它,就可以大大減少風險。

你做的專案越多,你就越能瞭解什麼是可行的,什麼是不可行的。盡量將工程問題記錄下來,以避免同樣的錯誤重複發生。



風險5: 選擇了不當的供應商
症狀:
- 開發人員要使用更多的時間來處理工具方面的問題,而不是很有成效地使用這些工具
- 為了應付已知的和未知的問題,而不得不進行大量的系統重新設計
- 在不同的工具之間很難進行整合(應用伺服器與IDE工具,IDE工具與除錯器,原始碼控制與建構(Build)工具,等等)
- 對於IDE工具和除錯器等,開發人員往往排斥它們,而推崇自己所喜歡的工具

解決方案:
為了避免風險5,你需要一個很好的供應商選擇程序,風險10的解決方案也適用於此。
要真正評估IDE工具的方法就是實際地使用它。而評估一種J2EE應用唯一的方法是建立一種概念試驗(POC)來進行證明,在試驗中要包含你的應用框架。你不會希望在花費了3個月時間進行了培訓和開發後,在使用時又發現一些bug。

假設在開發到一半的時候,突然發現你的工具集有問題,你就會發現工具的驗證比其他的事情更為重要。如果所選的應用伺服器不能充分滿足你的需要,你只好修改原先的設定。如果IDE不好,則需要設置最低限度的程式設計標準,並讓開發人員任意選擇他們認為最有效的工具。

備註:
要真正瞭解到哪一個供應商對一項特殊的任務來說最合適,其實並不是一件一次性決定的事情。你需要不斷地跟蹤與評估這個市場。例如,在過去的一年裏我用過4種不同的IDE工具,這取決於我使用了什麼樣的應用伺服器、平臺,是否使用EJB等。


風險6: 不瞭解你的供應商
症狀:
- 開發所用時間超過了最壞預測的時間1/3以上
- 供應商已經提供了某項功能,但開發者在不知道的情況下重新進行了該項功能的開發

解決方案:
為了避免這樣的風險,可以訂閱供應商的網上資源,例如郵件列表、新聞群組、版本資訊(尤其是其中的bug修復的說明等),你能從中得到無法估量的重要資訊。

一旦你已經選定了供應商,那麼立即就要投資進行培訓,並且盡可能趕在專案啟動以前完成。然後,逐漸在團隊中建立對此供應商的認識及信任。試著建立幾個EJB並部署一下,再用表示層技術 (Swing GUI, JSP等)來叫用它們。如果你既要建立開發環境,又要同時在實現專案目標,就會產生一些不必要的衝突。實際上,我也見到過一直沒有進行建構過程的情況:“我們沒有時間。”因此,這些工作必須提早進行。有些人會說:“我們的計劃中沒有為我們提供這些時間。”我的回答是:“你的計劃中並沒有不給你時間使你不這麼做啊。”

備註:
在J2EE世界裏,各供應商產品的技術相容性究竟如何?讓我們看一下IBM和BEA的具體分析吧。兩者都分別在各自的應用伺服器中支援EJB 1.1。那麼,實際上BEA WebLogic 5.1和IBM WebSphere 3.5究竟有多少相似之處呢?
1. BEA WebLogic和IBM WebSphere的系統配置和管理方式幾乎完全不同。
2. IBM在WebSphere中採用了全面的GUI環境,而與之相對的是,BEA 在WebLogic中提供一整套命令行。
3. IBM WebSphere使用IIOP來和CORBA異常進行通訊,這些異常對程式師來說是可見的;WebLogic根本沒有CORBA構造,而預設使用t3協定。
4. WebSphere和Visual Age銜接緊密,而WebLogic是IDE無關的,實際上,你幾乎可以使用任何的開發工具。

由此可見,差異還是相當多。如果你是一種應用伺服器的專家,並不意味著你就是所有應用伺服器的專家。這種差異主要在IDE,debugger,build工具,配置管理等等方面。具備某供應商的某項特殊工具的使用經驗,可以在評估該供應商的競爭對手產品時具有一些便利。但是,不要奢望在不同產品之間進行無縫(seamlessly)的轉移。因此,你不得不花費更多的時間在熟練掌握這些工具。


風險7: 設計中沒有充分考慮到可擴充性和產品性能
症狀:
- 無法忍受的緩慢速度
- 系統給伺服器端增加的沈重負擔,而無法利用到一些聚簇(Clustering)技術。

解決方案:
把精力集中於性能和可擴充性(Scability)方面的需求,明確開發要達到的性能指標。如果你需要每秒50個交易,而你的EJB設計只能提供40個,那你就需要考慮替代方案,諸如儲存過程,批次處理,或者重新考慮OLTP的設計。

盡可能讓你的供應商加入,他們應該非常清楚其產品的強項和弱處在哪裡,然後給你提供最直接的幫助。

備註:
本風險與風險2 (over-engineering)似乎有些衝突。實際上,兩者相互影響。 我對風險2給出的解決方案是,只在絕對必要的情況下才進行構建。而對與性能和可擴充性,你要預先劃分好什麼是必須要做的。

如果你認為強大的可擴充性是關鍵的需求,那首先需要選擇一個有很強的Cluster支援及Transactional Cache的應用伺服器。另外,應把業務物件(Business Object)設計為EJB,以充分利用伺服器架構的優勢。


風險8: 過時的開發過程
症狀:
- 專案計劃看上去類似瀑布模型: “首先進行系統設計,然後在一個很長的周期裏進行開發。”
- 由於沒有構建(build)程序,因此每次構建都像是噩夢
- 構建的日期等於損失開發的日期,因為什麼也沒有做成
- 在整合以前元件沒有分別被充分地測試過,而整合測試意味著將2個不穩定的元件放在一起,然後查看堆疊裏的追蹤(Trace)結果。

解決方案:
好的軟體方法學將提高你的軟體生命期。此前我已經提到XP方法,你可以在網上找到很多這方面的資料。

備註:
JUnit可以用來進行單元測試,Ant工具可以進行編譯與構建,這2種工具都對XP方法有很好的支援。


風險9: 沒有好的架構(Framework)
症狀:
- 核心庫中有Bug的部分在程式碼中使用了很多次。
- 沒有建立日誌(Logging)標準 -- 因此系統的輸出很難讀取或者解析。
- 不良且不一致的異常處理。在有些網站中甚至可以看到,低階的系統錯誤訊息直接顯示使用者,例如在使用者在他的購物車核帳時發送一條SQLException Stack Trace資訊,用戶接著會怎麼做?打電話給資料庫管理員要求修正primary key限制嗎?

以下工作已經以各種方式處理過,這些應該列為架構設計的首要目標。 
- 日誌(Logging)
- 異常處理 (Exception handling)
- 與資源的連接(資料庫,Naming service等)
- 建立JSP頁
- 資料正確性檢查(Data Validation)

解決方案:
我是一個輕架構(Lightweight Framework)的信徒和實踐者。我在JavaWorld 上的第一篇文章 -- "Frameworks Save the Day" -- 就是研討在企業Java環境中的架構。即使你已經開始開發,此時考慮一下架構仍然是值得的。可能你不得不忍受一下重構帶來的異常處理和日誌處理,但從長遠來看還是值得的,這樣既省時間又省錢。

備註:
思考一下架構及元件開發的可重用性區分不同等級。第一級別是plumbing,具有0.9以上的可重用比例,也就是說,有90%的專案可以對它重複利用。 服務越特殊,重用比例就越低。換句話說,我需要建立一個會計服務,以提供資源的使用及管理,並便於其他50%專案中可以對它們進行重複利用。對那些需要這些資源的專案開發者來說,能得到這些資源,那真是太棒了!


風險10: 根據市場宣傳決定專案計劃和設計,而非實際技術需求
症狀:
- 輕率地進行技術決策,認為EJB只是為了可移植性(portable)的目的
- 選擇供應商的時候沒有隨即進行產品的試用
- 在專案的生命周期內還需要更換工具

解決方案:
不要輕易相信專案外部的任何人的看法,這些人可能已經有一些既得利益,不要相信供應商的說法(除非你早已經瞭解),也不要相信白皮書。如果要取得關於應用伺服器的建議,可以在網上取得。還可以下載這些工具進行評估,用它們做一些原型(prototype),並執行一下其中的案例。(好的供應商都有這樣的案例)。

總而言之,你的專案選擇最好的供應商及工具需要時間,而你可能沒有太多的時間。你可以把選擇範圍限制在3-4個種,然後用一周時間進行比較和檢驗。最後從中選出比較滿意的工具和產品。

備註:
如果你缺少J2EE經驗,則可能會在專案前期就產生問題。在前期所確定的決策會影響整個過程,並進而影響專案的成功。好的J2EE諮詢專家將能夠幫助你選擇好的供應商,並為設計和開發刻劃出一個好的架構。

結論
總而言之,以上10大風險是企業級Java專案開發過程中將面對的主要困難。相信在你的旅程中一定還有更多的陷阱,相信上面所提到的風險已經涵蓋了主要的問題。最後按照優先順序重新列舉一下10大風險: 


- 沒有真正理解Java, 沒有真正理解EJB, 沒有真正理解J2EE
- 過度設計(Over-engineering)
- 沒有將業務邏輯和顯示邏輯相分離
- 沒有在開發環境中進行適當的配置
- 選擇了不當的供應商
- 不瞭解你的供應商
- 設計中沒有充分考慮到可擴充性和產品性能
- 過時的開發過程
- 沒有好的架構(Framework)
- 根據市場宣傳決定專案計劃和設計,而非實際技術需求

2005年3月25日

資訊系統導入專案的人員管理

資訊系統導入專案的人員管理
Fred Wang 2005/03/25 (http://fredwang.blogspot.com)

企業導入ERP等大型資訊系統導入, 往往因為牽涉流程及組織範圍很大, 費時很長, 導致團隊士氣低落, 這對人員及公司都有不利的影響, 在此時機若因士氣問題造成專案團隊人材流失, 將是一種危機, 檢討士氣低落的因素如下:

其一﹑錯誤的期望
1. 由於對資訊系統不當的期望與認知, 造成不當的架構及規劃, 專案團隊需為這些問題付出更多時間及精神來解決。
2. 顧問能力及主動性不足, 以至學習效率不彰, 對資訊系統無法深入瞭解, 人員需自行研讀及練習。

解決方式:
1. 應重新檢討或規畫與資訊系統整合的架構,選擇一項好的開發工具, 檢討分析及設計要升級的系統, 以免浪費團隊的時間及人力在目前錯誤的架構下解決問題。
2. 鼓勵人員自行學習(我想這是根本之道), 有正式的課程, 則予以派訓。

其二﹑人力分配
1. 由於新舊系統的更替, 工作型態逐漸改變, 每個人的工作分配將逐漸發生不均的現象。
2. 工作派任未及早規劃, 臨時的指派造成訓練不足及銜接不當。
3. 外包人員管理不易, 意願及能力不足分擔技術人員的負荷。

解決方式:
1. 工作及早重新檢視分配, 並做短中長期的規劃。
2. 有任何工作之派任應及早通知當事人, 並視其能力給予足夠的訓練。
3. 不宜過於依賴外包人力, 缺乏之人力, 以徵人長期培養能力為主 (否則, 外包人員離開後, 將留下更多難以解決的問題)


其三﹑工作之干擾

1. 工作環境過於吵雜, 無法安靜解決問題, 或規劃, 設計系統。
2. 會議過多, 減少的工作時間需加班來瀰補。
3. 電話對工作之中斷, 系統問題及程式設計, 若常受中斷, 效率及品質將降低。
4. 臨時交辦事項過多, 會造成正常工作之干擾及延遲。

解決方式:
1. 開發維護系統的工作者應有較安靜及區隔的環境, 任何人之互動應選擇討論區或會議室。
2. 主管人員有責任避免工作人員參與過多的會議, 以維持工作團隊的效率及品質。若可以, 主管人員應主動瞭解問題, 負擔與會的責任。
3. 電話可規劃服務專線, 工作人員輪流值班, 分緊急程度, 分交各人處理。
4. 應儘量減少臨時交辦事項, 或由主管人員自行解決。
5. 減少干擾的原則下, 鼓勵同仁多花時間(這時間是減少干擾下才能產生的), 深入新系統及開發環境或技術的瞭解﹐以奠定未來解決系統及業務問題與提昇系統使用效率的基礎。


其四﹑對技術專業之尊重
建議:
1. 主管人員對不瞭解的技術問題, 應徵詢技術人員, 或由技術人員進行評估 (勿聽信廠商行銷人員的話)。
2. 由於最終解決問題及承接系統的為技術人員, 有任何相關決策, 應徵詢技術人員, 或做可行性分析, 如有任何決定應及早通知技術人員, 使其及早學習及熟悉該技術。


其五﹑激勵
建議:
1. 由於工作分配及干擾等的問題, 部份人員需辛苦加班, 因為制度問題造成報酬與其辛苦不等值, 再較長的專案過程中, 若缺乏實質的獎勵, 將無法維持高效率的專案, 主管人員則應爭取獎勵的額度。(或由第一至第三點的解決方式, 減少加班問題)
2. 工作越辛苦越需激勵, 主管人員應運用管理技巧提昇全體員工士氣, 而非檢討同仁的缺失。
3. 由於導入的資訊系統是新的技術, 在這領域對所有人員而言大家都是新人﹐管理人員應激勵大家學習的興趣, 發現學習上的問題及障礙, 與解決或加強訓練。
4. 好的主管及好的工作伙伴是除了薪資福利外, 留住人材的重要因素, 建立一個快樂, 和諧的團隊關係是非常重要的。

結語:
劉邦勝項羽敗, 非項羽才華較低, 而在用人待人上不如劉邦, 團隊整體戰力端看管理人員如何用心經營。

2005年3月1日

DotProject安裝與設定問題與解決方法

DotProject安裝與設定問題與解決方法
Author : Fred Wang (http://fredwang.blogspot.com)
Date : 2005/03/01

問題一. 如何修改畫面上的文字, 例如: Companies要改成Organizations
答: dotProject安裝目錄下, locales/目錄內有許多*.inc檔案, 將上面的文字加上 =>"取代文字" 就可以了, 例如: locales/en/common.inc內 "Companies"=>"Organizations"

問題二. Links : 沒有圖像(icons)的問題
答: 將dotProject安裝目錄下, modules\files\images目錄內的folder5.png
複製到dotProject安裝目錄下的images目錄內就沒問題了

問題三.如何設定SMTP server, 啟動eMail Function
答: DotProject的eMail功能是透過PHP來傳送的, 更改php.ini 內容如下 :
[mail function]
; For Win32 only.
SMTP =
smtp_port = 25

; For Win32 only.
sendmail_from =

問題四.系統傳送的eMail中的連結由localhost轉成ip address
答: 系統傳送的eMail內容文字如下 :
There has been activity in a meeting minutes you are watching.
http://localhost/dotproject/index.php?m=forums&a=viewer&forum_id=4

這表示host設定不正確, 應該修改\dotproject\includes\config.php檔案
由
$dPconfig['base_url'] = http://localhost/dotproject;
更改為:
$dPconfig['base_url'] = "http:///dotproject";

問題五. 由於Edit Preference的問題一直無法解決, 因此即使安裝中文版, 也無法切換語系
答: 可以用另一種方法來達到中文化

步驟如下:
Step 1.將英文版的編碼由UTF8改成Big5 : locales\en\locales.php 內的 $locale_char_set = 'utf-8'; 改為$locale_char_set = 'big5';
Step 2.從SourceForge下載中文化的patch : 網址 http://sourceforge.net/projects/dotmods/
Step 3.解壓縮後將*.inc檔複製到 locales\en的目錄下, 將原來的檔案覆蓋
Step 4.此中文檔的common.inc與companies.inc內的中文為亂碼, 需要自行重翻譯, 其它若翻譯不好的可以自行更改
這樣就完成了!

問題六. 如何取消Tab及更改Company與Project模組內Tab順序
1. Company模組 : 取消Client => Vendor等Tab, 修改 modules\companies\index.php
2. Project模組: 更改Tab順序 => 修改 modules\projects\index.php 與 modules\projects\vw_idx_proposed.php 兩支程式

2005年2月25日

專案管理平台DotProject經驗分享

DotProject 1.0.2 經驗分享

Author : Fred Wang (fredwang@blogspot.com)

說明 : PHP web-based project management framework that includes modules for companies, projects, tasks (with Gantt charts), forums, files, calendar, contacts, tickets/helpdesk, multi-language support, user/module permissions and themes

安裝環境 : Apache 1.3.x, PHP 4.x,5.x (should enable GD)

測試網址: http://www.dotproject.net/demo/
測試帳號: demo/demo (使用者帳號) admin/admin (管理者帳號)

參考網址 :
Official Site :
http://www.dotproject.net

SourceForge :
. http://sourceforge.net/projects/dotproject/
. Modules : http://sourceforge.net/projects/dotmods/
目前Release的modules有 :
. HelpDesk
. Backup 資料庫備份用
. Links
. Journal
. Chinese - big5 Patch (and other language patchs)
開發中的modules有 :
. Inventory
. Timecard
標準功能有 :
. Companies : 公司
. Projects : 含Gantt Chart
. Tasks : 工作
. Forums : 可以設定Watches, Watch point有新的內容, 可主動發信件通知
. Contacts : 連絡人
. Departments : 部門
. Tickets : 問題追縱單管理, 可以將問題以送eMail的方式通知後續處理者
. User Admin : 使用者管理, 含權限設定
. System Admin : 系統管理, 可設定及安裝模組
. Help
各個功能間有交戶關係, 具備中小型On-line project management的功能, 值得推薦