開發框架的的選擇和設計

理解什麼是框架
框架,即framework。其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。而且,框架一般是成熟的,不斷升級的軟件。
可以說,一個框架是一個可複用的設計構件,它規定了應用的體系結構,闡明瞭整個設計、協作構件之間的依賴關係、責任分配和控制流程,表現爲一組抽象類以及其實例之間協作的方法,它爲構件複用提供了上下文(Context)關係。因此構件庫的大規模重用也需要框架。
框架的概念最早起源於Smalltalk環境,其中最著名的框架是Smalltalk 80的用戶界面框架MVC(Model-View-Controller)。
框架目前還沒有統一的定義,其中Ralph Johnson所給出的定義基本上爲大多數研究人員所接受:
一個框架是一個可複用設計,它是由一組抽象類及其實例間協作關係來表達的 【Johnson 98】。
這個定義是從框架內涵的角度來定義框架的,當然也可以從框架用途的角度來給出框架的定義:
一個框架是在一個給定的問題領域內,一個應用程序的一部分設計與實現【Bosch 97】。
框架要解決的問題
框架要解決的最重要的一個問題是技術整合的問題,在J2EE的框架中,有着各種各樣的技術,不同的軟件企業需要從J2EE中選擇不同的技術,這就使得軟件企業最終的應用依賴於這些技術,技術自身的複雜性和技術的風險性將會直接對應用造成衝擊。而應用是軟件企業的核心,是競爭力的關鍵所在,因此應該將應用自身的設計和具體的實現技術解耦。這樣,軟件企業的研發將集中在應用的設計上,而不是具體的技術實現,技術實現是應用的底層支撐,它不應該直接對應用產生影響。
爲什麼要進行框架開發
框架的最大好處就是重用。框架之所以稱爲框架,是因爲它可以重用。在軟件組織中形成以框架爲核心的開發方式,在開發中使用框架,並在開發完成後改進框架。在這個反覆的過程中,重用的工作就已經開展起來了。面向對象系統獲得的最大的複用方式就是框架,一個大的應用系統往往可能由多層互相協作的框架組成。框架能重用設計。它提供可重用的抽象算法及高層設計,並能將大系統分解成更小的構件,而且能描述構件間的內部接口。這些標準接口使在已有的構件基礎上通過組裝建立各種各樣的系統成爲可能。只要符合接口定義,新的構件就能插入框架中,構件設計者就能重用構架;  框架還能重用分析。所有的人員若按照框架的思想來分析事務,那麼就能將它劃分爲同樣的構件,採用相似的解決方法,從而使採用同一框架的分析人員之間能進行溝通。
框架的再一個好處就是可以優化架構。軟件架構,亦即體系結構,包括組件元素、元素互助合作模式、基礎要求與限制。這說明架構的設計就是將各組件元素以某些理想的合作模式組織起來,以達成系統的基本功能和限制。框架其實就是在特定領域基於體系結構的可重用的設計,即框架是體系結構在特定領域下的應用。框架代表了一種優秀的軟件架構。框架定義了擴展方式,從而規範了框架的使用行爲。這使得軟件能夠保持整體架構的穩定性和一致性。
採用框架技術進行軟件開發的主要特點包括:領域內的軟件結構一致性好;建立更加開放的系統;重用代碼大大增加,軟件生產效率和質量也得到了提高;軟件設計人員要專注於對領域的瞭解,使需求分析更充分;存儲了經驗,可以讓那些經驗豐富的人員去設計框架和領域構件,而不必限於低層編程;允許採用快速原型技術;有利於在一個項目內多人協同工作;大粒度的重用使得平均開發費用降低,開發速度加快,開發人員減少,維護費用降低,而參數化框架使得適應性、靈活性增強。
框架對組織的作用
知識積累。框架的核心價值是對知識的積累。軟件開發是一項知識性的活動。但是知識存在於人的大腦中,是最難進行積累的。而在軟件開發中,代碼是最確定的知識,人和機器通過瀏覽代碼都能夠了解代碼所表達的意思,而且不會出現不同的理解。所以,從代碼出發進行知識的積累是最佳的辦法。框架就是這種思路的產出物。框架包含了大量的代碼,這些代碼是對某個特定問題領域中抽象概念及這些抽象概念之間關係的描述。所以,框架能夠勝任知識積累的工作。
保護資產。知識積累本身就是一項對資產的保護工作。而另一項很重要的保護工作就是軟件組織(尤其是企業)需要保證對知識的學習和改進是經過合法授權的。例如,知識的非法外流是任何組織都不希望看到的。將知識積累爲框架的形式有助於緩解這種情況。
框架好壞關係J2EE項目成敗
框架技術通過重用提高了軟件的生產效率,一個軟件系統由兩大部分組成: 針對本應用的新設計和可重用的軟件組件或框架。後者所佔比例越大,那需要實現的新設計或實現工作量就會越小,生產效率越高、成本越低。J2EE項目成敗主要取決於架構設計好壞以及合適框架的選擇,而不是體現在對技術的具體應用上(絕不能盲目的最求新技術,要記住:技術是爲了應用),常常有人將一個J2EE項目的失敗歸咎於後者,這可能是最大的誤導。
J2EE項目是通過框架、模式的設計運用達到控制軟件質量的目的的。雖然這是很多喜歡自由編程的程序員所不喜歡的,但是它帶來了穩定的軟件質量和可重用的組件,爲規模生產創造了條件。不僅如此,它還降低了對開發框架以外其他開發人員的技術要求,使大多數開發人員無需很高的技術,就能在已有的框架下進行開發,而且能大大縮短開發週期。根據自己項目領域特點,在J2EE框架下設計自己領域的應用框架,不僅可以提高在該領域軟件開發的效率,而且可以節約開發成本和維護成本。
框架的選擇和設計
理解了上述框架的作用和需要解決的問題後,設計和選擇框架的準則就很顯而易見了,關於技術上應該考慮的準則我這裏就不再贅述,只提出一下個人感覺應該考慮的幾個問題:
1:框架應該能夠對我們的開發過程提供更多、更好幫助。因爲使用框架的原始出發點就是爲了通過知識的重用提高開發效率。我們應該知道任何開發框架都不可能是十全十美的,也不可能是適應所有的應用場景的,也就是說任何開發框架都有它適用的範圍。因此我們絕不能爲了技術而技術,適用就好了,很難簡單的說那種技術或框架更好,沒有必要陷入技術的反覆比較和反覆選擇的深淵中。
2:學習曲線要平滑,技術是爲應用服務的,開發框架的學習一定要簡單,上手一定要快,對開發人員的要求不能太高。沒有什麼比使用能得到更深的體會。需要半個月或者一個月學習週期的框架,可能在還沒學會時項目就該結束了。
3: 一定要能得到很好的技術支持。在應用的過程中,或多或少都會出現這樣或者那樣的問題,如果不能很快很好的解決,會對整個項目開發帶來影響。一定要考慮綜合成本,其實這是目前應用開源軟件最大的問題,碰到問題除了死肯文檔就是查閱源代碼,或者是網上搜尋解決的辦法,通常一個問題就會導致一兩天的開發停頓,嚴重的甚至需要一個星期或者更長,項目的進度就很難控制了。
4:考慮對團隊要求的影響,使得組織的開發團隊易於組建和在不同開發組之間流動,以使那些優先需要解決的任務能夠解決。
5:絕對不能因爲個人對技術的好惡和對新技術的追求,而隨意使用到框架的設計和開發中。開發框架絕不是簡單的技術堆疊和拼奏,應該在團隊的共同選擇的基礎之上建立。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章