風(fēng)險(xiǎn)5: 選擇了錯(cuò)誤的提供商
項(xiàng)目階段:
提供商選擇
影響階段:
設(shè)計(jì)、開(kāi)發(fā)、穩(wěn)定化/負(fù)載測(cè)試,成熟化
對(duì)系統(tǒng)的影響:
可伸縮性、性能、可維護(hù)性及穩(wěn)定性
癥狀:
開(kāi)發(fā)人員要使用更多的時(shí)間來(lái)處理工具方面的問(wèn)題,而不是很有成效地使用這些工具
為了應(yīng)付已知的和未知的問(wèn)題,而不得不進(jìn)行顯著的系統(tǒng)重新設(shè)計(jì)
在不同的工具之間很難進(jìn)行集成(應(yīng)用服務(wù)器與IDE工具,IDE工具與調(diào)試器,源碼控制與合成工具,等等)
對(duì)于IDE工具和調(diào)試器等,開(kāi)發(fā)人員往往排斥它們,而推崇自己所喜歡的工具
規(guī)避方案:
為了避免風(fēng)險(xiǎn)5,你需要一個(gè)很好的提供商選擇過(guò)程,風(fēng)險(xiǎn)10的規(guī)避也適用于此。
要真正衡量一種IDE工具是否最合適的方法是真正地進(jìn)行使用。而唯一來(lái)評(píng)估一種J2EE應(yīng)用的方法是建立一種概念試驗(yàn)來(lái)進(jìn)行證明,在試驗(yàn)中要包含你的應(yīng)用框架。事實(shí)上,你也不希望在花費(fèi)了3個(gè)月時(shí)間進(jìn)行了培訓(xùn)和開(kāi)發(fā)后,在使用時(shí)又發(fā)現(xiàn)一些bug。
假設(shè)在開(kāi)發(fā)到一半的時(shí)候,突然發(fā)現(xiàn)你的工具集有問(wèn)題,那么你早應(yīng)該知道,有些工具確實(shí)比另一些更重要。如果你所選的應(yīng)用服務(wù)器不能充分滿(mǎn)足你的需要,你只好修改原先的設(shè)定。如果IDE不好,則需要設(shè)置最低限度的代碼標(biāo)準(zhǔn),并讓開(kāi)發(fā)人員任意選擇他們認(rèn)為最為有效的工具。
備注:
要真正了解到哪一個(gè)供應(yīng)商對(duì)一項(xiàng)特殊的任務(wù)來(lái)說(shuō)最合適,其實(shí)并不是一件一次性決定的事情。你需要不斷地跟蹤與評(píng)估這個(gè)市場(chǎng)。例如,在過(guò)去的一年里我用過(guò)4種不同的IDE工具,這取決于我使用了什么樣的應(yīng)用服務(wù)器、平臺(tái),是否使用EJB等。
風(fēng)險(xiǎn)6: 不了解你的提供商
項(xiàng)目階段:
提供商選擇
影響階段:
提供商選擇階段后面的所有階段:設(shè)計(jì)、開(kāi)發(fā)、穩(wěn)定化/負(fù)載測(cè)試、成熟化
對(duì)系統(tǒng)的影響:
可維護(hù)性、可伸縮性、性能
癥狀:
開(kāi)發(fā)所用周期超過(guò)了最壞預(yù)測(cè)的周期1/3以上
提供商已經(jīng)提供了某項(xiàng)功能,但開(kāi)發(fā)者在不知道的情況下重新進(jìn)行了該項(xiàng)功能的開(kāi)發(fā)
規(guī)避方案:
為了規(guī)避這樣的風(fēng)險(xiǎn),你可以盡可能地訂閱提供商的網(wǎng)上資源,例如郵件列表、新聞組、版本信息(尤其是其中的bug修復(fù)補(bǔ)丁的說(shuō)明等),你能從中得到無(wú)法估量之多的收獲。
一旦你已經(jīng)選定了提供商,那么立即就要投資進(jìn)行培訓(xùn),并且盡可能趕在項(xiàng)目啟動(dòng)以前。然后,逐漸在團(tuán)隊(duì)中建立起對(duì)此提供商的認(rèn)識(shí)及信任。試著建立幾個(gè)EJB并部署一下,再用你的表示層技術(shù) (Swing GUI, JSP等)來(lái)調(diào)用它們。如果你既要搭建開(kāi)發(fā)環(huán)境,又要同時(shí)在實(shí)現(xiàn)項(xiàng)目目標(biāo),就會(huì)產(chǎn)生一些不必要的沖突。實(shí)際上,我也見(jiàn)到過(guò)一直沒(méi)有進(jìn)行構(gòu)建過(guò)程的情況:“我們沒(méi)有時(shí)間?!币虼?,這些工作必須提早進(jìn)行。有些人會(huì)說(shuō):“我們的計(jì)劃中沒(méi)有為我們提供這些時(shí)間?!蔽业幕卮鹗牵骸澳愕挠?jì)劃中并沒(méi)有不給你時(shí)間使你不這么做啊。”
備注:
在J2EE世界里,各提供商產(chǎn)品的技術(shù)兼容性究竟如何?讓我們看一下IBM和BEA的具體分析吧。兩者都分別在各自的應(yīng)用服務(wù)器中支持EJB 1.1。那么,實(shí)際上BEA WebLogic 5.1和IBM WebSphere 3.5究竟有多少相似之處呢?
BEA WebLogic和IBM WebSphere的系統(tǒng)配置和管理方式幾乎完全不同。
IBM在WebSphere中采用了全面的GUI環(huán)境,而與之相對(duì)的是,BEA 在WebLogic中提供一整套命令行。
IBM WebSphere使用IIOP來(lái)和CORBA異常進(jìn)行通訊,這些異常對(duì)程序員來(lái)說(shuō)是可見(jiàn)的;WebLo