Java靈活性和可擴展性通常成對出現(xiàn)。程序的模型越是抽象,越要求靈活性和可擴展性。客戶在需求描述的初始階段往往對自己的業(yè)務(wù)模型并不熟悉??蛻舨皇菙?shù)學(xué)家和 計算機專家,他們對自己的需求很難抽象出一個精確的模型來,這使得他們只能給出一個模糊的抽象的業(yè)務(wù)模型。拙劣的程序員往往將用戶給的模糊模型根據(jù)自己的 理解后,定義出一個自己認(rèn)為準(zhǔn)確和精確的模型。在軟件提交后,用戶就會往往發(fā)現(xiàn)這不是我所要,或者是我要的,但只是其中情況的一種。于是,這兒添一點功 能,那兒添一點功能。程序設(shè)計的時候由于模型抽象層次不高,造成的靈活性和可擴展性比較差,這時程序員的末日來了。
因此一個好的程序員不僅僅是寫一段美觀高效的代碼,更重要是要有出眾的設(shè)計能力。良好的設(shè)計能給實現(xiàn)帶來很好的靈活性和可擴展性。高級的程序員首先應(yīng)該是一個高級的程序設(shè)計師,這樣的程序員不僅要有良好的需求分析能力,還要有高超的模式設(shè)計能力。
在獲知抽象的業(yè)務(wù)模型后,如何設(shè)計你的程序,使其具有高度的靈活性和可擴展性是每個程序員應(yīng)該關(guān)心的問題。在Java中,讓一個程序具有靈活性和可擴展性的方法不外乎以下幾種方式:
1.程序級別的靈活性,主要通過參數(shù)化配置程序低級別的靈活性。
2.高度可配置性,包括各種虛擬機參數(shù)、屬性文件和XML配置文件。
3.腳本。腳本是擴展復(fù)雜功能的利器,但對用戶的要求也比較高。通常應(yīng)該面向開發(fā)人員的工具產(chǎn)品?;蛘咴诋a(chǎn)品部署之前由現(xiàn)場實施人員來完成。
4.插件系統(tǒng)或者模塊化平臺。插件系統(tǒng)平臺從理論上提供了無數(shù)的可擴展性。比如Eclipse和NetBeans平臺。這兒是抽象的*點,產(chǎn)品可以一無用處,也可以無所不能。完全看市場有什么插件,用戶怎么配置。
靈活性和可擴展性固然有好處,但是不應(yīng)該成為需求采集和分析階段偷懶的依據(jù)。因為靈活性和可擴展性不是都是好的,任何事情都有雙面性。靈活性和可擴展性對于開發(fā)者來說減小的開發(fā)和維護成本,但是如果客戶服務(wù)做的不好,往往是客戶的噩夢。很明顯,這些問題包括:
1.易用性。越是靈活,用戶的使用難度就越大,如果沒有產(chǎn)品的現(xiàn)場實施人員的服務(wù),對于非計算機人專業(yè)用戶來說,這實際增加了他們使用的難度。 Eclipse的平臺正在展現(xiàn)這種問題,雖然它的用戶主要是開發(fā)者,即時插件文檔做得很好,但是很多人不得不抱怨Eclipse需要太多得配置和技巧。另 外典型的例子是Windows和Linux要求有不同能力的人來使用,原因在于,Linux的靈活性和可擴展性也是其易用性差的原因之一。
2.穩(wěn)定性。越是靈活和可擴展,其穩(wěn)定性越差。這主要是靈活性帶來的現(xiàn)實世界的排列組合太多了,版本之間的兼容性,大范圍開發(fā)者之間的協(xié)作就不可避免的差 了。作為這方面的例子應(yīng)該說eclips表現(xiàn)的比較明顯了。由于版本沖突的問題,造成Eclipse經(jīng)常因為不正確的配置插件而Crash。
3.性能。微內(nèi)核/插件模式設(shè)計的缺點表現(xiàn)在不同插件之間的交互性能損失上。Unix系統(tǒng)之所以沒有采取現(xiàn)代操作系統(tǒng)所提倡的微內(nèi)核模式,恐怕原因也在于此。
盡管有上面的缺點,現(xiàn)代軟件理論還是非常提倡靈活性和可擴展性的。靈活性和可擴展性付出的代價應(yīng)該在軟件服務(wù)中得到彌補。靈活性和可擴展性是現(xiàn)代軟件工程 著重解決的目標(biāo)之一,它不僅僅能提高軟件的質(zhì)量,也使得軟件開發(fā)過程的質(zhì)量得到提高。尤其是大型的軟件,模塊化不僅僅是靈活性和可擴展性的基礎(chǔ),也是軟件 開發(fā)協(xié)作的基礎(chǔ)。
只要一個電話
我們免費為您回電