小步快跑:逐步進化式的程序優化過程。
演進式設計,迭代式開發;
軟件——滿足功能需求;
軟件開發過程是一個由簡單到複雜循序漸進的過程。
對於變化,可以通過重構來適應變化。
當軟件因爲需求變更而開始逐漸退化時,運用軟件重構改善我們的結構,使之重新適應軟件需求的變化。
重構的方法:
拆分類、函數:單一職責原則。(分久必合、合久必分);
提高代碼複用率:封裝、抽取父類、類、函數;
發現程序可擴展點:開閉原則,過程的擴展與放置鉤子——運用模板模式增加可擴展點,面向切面的可擴展設計;
降低程序依賴度:接口與工廠模式;與外部系統解耦——適配器模式,方法的解耦——策略模式,過程的解耦——命令模式;
分層:
領域驅動設計:
1、TIPS
(1)什麼是重構
重構:改變軟件的內部結構,但要保證系統中的每個接口其輸入輸出不變;
貫穿整個重構過程的是不斷地測試(先手工測試,等條件成熟,進行代碼級的自動化測試)。修改一點點就進行一次測試。
(2)軟件重構第一步就是拆分。
當重複代碼被割裂成碎片時——繼承結合模板模式;
繼承的泛濫——橋接模式;
透明的功能擴展與設計——組合模式與裝飾模式;
解耦與自動化測試;
(3)什麼時候重構
重構讓程序可讀;
重構,纔好複用;
先重構,再擴展;
需求變更是我們去重構的主要動因。
當原程序不適應新的需求時,先重構系統使之首先適應新的需求,再去實現這些需求;
重構方法可分爲以下幾個層次:
方法的重構、對象的重構、對象間的重構、繼承體系間的重構、組織數據的重構、體系架構的重構;
(4)怎樣擁抱變化
領域纔是軟件系統的心;
領域模型分析方法;
領域驅動設計——使用領域模型與客戶一起設計;
(5)如何評價軟件質量
(6)領域驅動設計思想:
在面向對象的世界裏,我們設計的類、方法、關聯,應當與現實世界中的事物、行爲,及其相互的關係對應起來。現實世界有什麼事物,這些事物有什麼行爲,相互之間是什麼關係,則我們在軟件世界裏就應當設計什麼類、什麼方法和它們之間的關聯關係。
2、PS
(1)QTP
使用QTP的目的是想用它來執行重複的手工測試。
(2)軟件修改的四種動機
a、增加新功能;
b、原有功能有bug;
c、改善原有程序的結構;——提高軟件內部的質量;
d、優化原有系統的性能;
(3)什麼是高質量的軟件
易讀;保證維護容易;保證需求變更輕易進行,而不是大改——要做到,需要系統重構,持續不斷對內部質量進行優化改進;