軟件開發模型(Software Development Model)是指軟件開發所有過程、活動和任務的結構框架算法
2.1. 邊作邊改模型(Build-and-Fix Model) 缺點:需求不明,開發難;缺乏規劃和設計以及文檔,維護難編程
2.2. 瀑布模型(Waterfall Model)是一個項目開發架構,開發過程是經過設計一系列階段順序展開的(從一個階段「流動」到下一個階段); 缺點:文檔驅動 系統可能不知足客戶的需求。api
2.3. 快速原型模型(Rapid Prototype Model): 迅速建造一個能夠運行的軟件原型 缺點:關注知足客戶需求 可能致使系統設計差、效率低,難於維護數組
2.4. 增量模型(Incremental Model):把待開發的軟件系統模塊化,將每一個模塊做爲一個增量組件,從而分批次地分析、設計、編碼和測試這些增量組件 缺點:待開發的軟件系統須要能被模塊化。數據結構
2.5.螺旋模型(Spiral Model):採用一種週期性的方法來進行系統開發,強調風險分析;特別適用於龐大、複雜並具備高風險的系統 缺點:風險驅動 風險分析人員須要有經驗且通過充分訓練架構
2.6.演化模型(evolution model):屬於迭代開發方法;實際上就是從初始的原型逐步演化成最終軟件產品的過程,特別適用於對軟件需求缺少準確認識的狀況。框架
2.7.噴泉模型(fountain model):是一種以用戶需求爲動力,以對象爲驅動的模型,主要用於描述面向對象的軟件開發過程。缺點:在開發過程當中須要大量的開發人員,不利於項目的管理。模塊化
2.8.智能模型(四代技術(4GL)):也稱爲「基於知識的軟件開發模型」,它把瀑布模型和專家系統結合在一塊兒,利用專家系統來幫助軟件開發人員的工做。測試
2.9.混合模型(hybrid model):把幾種不一樣模型組合成一種混合模型ui
2.10.RAD(快速應用開發)模型:是一個增量型的軟件開發過程模型。強調極短的開發週期。
三者之間的聯繫: http://www.jianshu.com/p/224d8fc4d0f0
(1) 單一職責原則(SRP):一個類,最好只作一件事,只有一個引發它變化的緣由(低耦合、高內聚)
(2)開放封閉原則(OCP):原則的核心;對擴展開放,對修改封閉的;實現開放封閉原則的核心思想就是對抽象編程,而不對具體編程
(3)里氏替換原則(LSP):子類能夠替換父類而且出如今父類可以出現的任何地方;實現的方法是面向接口編程
(4)依賴倒置原則(DIP):其核心思想是:依賴於抽象;具體而言就是高層模塊不依賴於底層模塊,兩者都同依賴於抽象;抽象不依賴於具體,具體依賴於抽象
(5)接口隔離原則(ISP):使用多個小的專門的接口,而不要使用一個大的總接口。分離的手段主要有如下兩種:委託分離/多重繼承分離(較好)
a.什麼是數據結構
數據結構具體指同一類數據元素中,各元素之間的相互關係,
b. 組成
數據的邏輯結構:包括集合結構,線性結構,樹形結構,圖形結構
數據的存儲(物理)結構: (又稱映像),包括 順序、連接、索引、散列
數據的運算結構:包括檢索、插入、刪除、更新和排序
c.經常使用結構
線性表( 數組,鏈表),棧,隊列,樹,圖,堆,散列表
參考:http://blog.jobbole.com/110835/ http://www.jianshu.com/p/230e6fde9c75