軟體開發模式

2021-08-30 07:05:14 字數 3037 閱讀 8009

[b]摘要:[/b]軟體開發模式是為了解決頻繁的軟體需求變更和軟體技術更新而形成的解決方案總結。軟體開發模式可以根據軟體開發階段被劃分為多種型別,每種型別的模式的意義和用途也是不同的。本文試圖對軟體開發模式及其性質進行剖析,並簡單闡述其在軟體開發過程中所起到的作用。

[b]一、什麼是軟體開發模式[/b]

軟體開發模式是個意義很廣泛的感念。從技術方面來講,軟體開發模式是設計軟體的基本思想和套路;從工程方面來講,軟體開發模式也是滿足商業資訊化和電子化的首選的手段和方法。通俗的講,軟體開發模式就是為開發出滿足業務需要的軟體而選擇的一種實現方式。一般情況下,人們會參考公認的最佳實踐並根據當前的具體情況,借助先進的輔助技術手段,形成符合專案所需的模式體系。

[b]二、軟體開發模式也在不斷變化[/b]

軟體開發模式與軟體本身一樣,是會隨時間不斷變化的。人們在創造出軟體開發模式這個概念的時候,就已經預示著它並不是一成不變的了。原因是,軟體開發模式是因軟體而生的,是依附於軟體的開發過程的。軟體開發模式最初被創造出來的目的是,以不變的模式來應對多變的軟體需求。可惜,事實證明,這是不可能的。當下,計算機軟體技術在以每一到兩年的週期翻新著。幾乎每個月甚至每天,軟體需要應對的問題都是不同的。需求的層出不窮和軟體技術的推陳出新讓軟體開發者們應接不暇。於是,人們從以往的經驗和問題求解過程中提取出了所謂模式的東西,使得在再遇到類似問題或情景的時候能夠有可以參考甚至現成的最優解決方案。可惜,這種最優的解決方案是相對的。世界上也許存在著對一般問題的通解,但絕對不會存在針對所有類似問題的特解。更何況,在軟體領域中,解決方案所依託的技術基礎和思想原則本身就是在不斷演化和變革。這也就意味著,軟體開發模式也是需要隨著時間的推移,隨著軟體技術的更新,不斷的進行演化或者被完全淘汰。

[b]三、軟體開發模式的分類[/b]

那麼軟體開發模式多包括什麼呢?人們從軟體開發過程中總結出了固有模式,以求獲得解決或者決策通用問題的通解。從開發階段的不同來對軟體開發模式進行劃分是比較通用的一種方法。

在軟體需求調研階段,人們根據軟體使用者的需求設計出軟體的整體框架和總體技術要求,並在不斷的改進中形成了針對某種系統需求或者軟體體系結構的通用方案。這種方案在日後可能會成為軟體產品的一部分,也可能被作為通用解決方案的基石。這種對軟體整體進行設計的模式就叫做架構模式。

在軟體設計階段,人們開始用先進的軟體設計思想(如物件導向設計思想)來定義軟體各功能的名稱、介面和互動方式。人們根據對以往經驗的總結逐漸形成了所謂的最佳設計方法。依據這種設計方法,人們可以在處理類似問題的時候充分借鑑之前的思想和套路以獲得公認的設計優勢和好處,並可以根據具體需要進行演進和更新。這種通用的設計方式即為設計模式。

在軟體實現階段,開發人員經常會遇到與具體實現方式有關的大大小小的決策,比如:這個地方該用迴圈語句還是條件語句?我該把這些東西塞到乙個類裡嗎?等等。每個人都會在開發過程中不斷的自問並試圖盡量快速的得到答案。那麼,在實現中的很多方式都是非常通用的,是具有普遍意義的。人們把這些可以通用的實現方式叫做實現模式。在軟體開發模式中,實現模式最為穩定,但同時它也是很重要的。

[b]四、軟體開發模式的用途[/b]

軟體開發模式為了解決通用問題而生的,下面來說說主要的幾個層次的軟體開發模式都能夠解決那些問題。

先說說實現模式。所謂實現模式,就是我們在程式設計過程中的一些習慣和較好的實現方式的總結。這種模式或多或少的會體現在團隊的一些編碼規範中。實現模式比較注重細節,它的核心思想是符合良好的編碼習慣和較佳的實現規範。目的是使得團隊中的**風格開起來整齊劃一。

更好的貫徹實現模式有五點好處:

1、使得團隊成員能夠很容易的閱讀另一位成員的**,成員之間很容易進行交叉測試,leader很容易review**;

2、在後期維護時會很容易領會原有**的意圖,並可以很容易的對原有**加以修改和重構;

3、可以讓新進入的開發者盡快了解團隊編碼風格並迅速融入其中;

4、可以使團隊看上去更專業,而不是一群無組織無紀律的散兵。

5、有了這麼一套帶有良好實現模式的編碼規範,就可以是團隊在最基本的技術層面上達成一致,可以大大地提高工作效率,避免了無謂的爭論。

良好的或者趨向良好的團隊都應該有自己的編碼規範,在書寫編碼規範時應注意因地制宜的吸收一些參考資料中的公認條款,而且可以根據具體情況加入一些團隊內部需要共享的原則。

下面來說說設計模式。希望提高自身技能的軟體開發人員都會主動地去接觸設計模式,因為那是許多前輩們總結出的軟體設計的最佳實踐參考。我相信真正的高階開發人員都至少讀過一本關於設計模式的書。當然軟體是多變的,設計模式也是如此。在真正理解和熟練運用設計模式之後,就可以根據自己的需要將原有模式進行演變,甚至創造出更好或更適合當時需要的模式來。設計是靈活的,設計模式只能作為實踐參考。所以,我在這裡不想過多地說怎樣去用模式來設計軟體。因為軟體設計是業務需求的跟隨者,是業務的技術級支持者。沒有了業務依託的**,最多也只能算是個demo程式而已。現在越多越多的軟體和框架的目標都在向更好地實現特定業務轉移。這是乙個趨勢,也是人們對軟體設計的觀念的進步。計算機是服務於人的,軟體理所當然也是。所以在學習設計模式的時候並不需要恪守陳規,要學會為了目的而設計,而不是為了設計而設計。軟體是有生命的,至少我堅信這一點。既然有生命就需要成長,從呱呱落地到成熟穩健是需要有乙個過程的。所以,不要在一開始就試圖去想象軟體以前應該需要怎樣的靈活性或者什麼樣的功能。因為在軟體行當裡,盲目的想象往往都不會成為現實。因而,與其費勁腦汁去過度設計,還不如集中精力優化現有的**。然後再根據需求的變化而動,只作足夠的,不做多餘的。

架構模式是更高階的話題。現有主流架構思想和框架,思想路線都是一樣的,即:把軟體功能的粒度變小,以提高軟體本身的靈活性,增加軟體功能的可重用特性。最近流行的web服務和面向服務架構模式都是為了更好的解決這方面問題而推出的。可見,軟體的多變給軟體開發者們帶來了多大的麻煩,以至於不斷會有新的、更好的架構體系和模式來試**決這一問題。當然,同樣隨著時間的推移,就得架構模式漸漸顯得力不從心,新的架構模式應運而生。這個過程同樣體現在了從web服務模式向面向服務架構模式的演化過程中。架構模式之所以不斷的進行著自我演進或者更新換代,它的最終目的還是欲使軟體的生命週期更長,更能適應將來的未知變化。雖然目標很難達到,但是主流架構模式的每次更新,都在向著目標大踏步前進。

[b]五、寫在最後[/b]

軟體開發模式的內容有很多,可以做的工作也很多。另外,軟體開發模式與軟體專案管理與開發團隊管理也有著千絲萬縷的聯絡。綜合運用、合理運用軟體開發模式才能更好的為快速、得當的解決業務需要和軟體問題帶來福音。

軟體開發模式

軟體的開發模式包括 大棒開發法 邊寫邊改法 瀑布法 快速原型法和螺旋模式法,它們的定義及特點如下 第一,大棒開發法。它是源於能量爆發創造宇宙,萬物都由能量和物質積聚而成的理論,但如果不是遵循某種正確的排列和組合,形成的將不是預先期望的事物 大棒模式與上述理論一樣 一大堆能量 這裡指開發軟體所需的人力...

軟體開發模式

軟體開發模式大概有11種,如下所示 邊做邊改模型 build and fix model 瀑布模型 wate ll model 快速原型模型 rapid prototype model 增量模型 incremental model 迭代模型 stagewise model 螺旋模型 spiral m...

軟體開發模式

瀑布模型式嚴格遵循預先計畫的需求分析 設計 編碼 整合 測試 維護的步驟順序進行。瀑布模型是以每個步驟所取得的成果作為衡量進度的方法 由於它的嚴格分級,所以在專案前期需求不明確或者需求頻繁更改時代價高昂,是不可行的。所以在開發的前期,需求設計越完美,則損失越少。迭代式開發值每次只設計和完成產品的一部...