可復用性

復用又叫重用,是重複使用的意思。目前,一般軟體的復用率並不高,尤其在國內。

復用的重要性
復用的好處:
1. 較高的生產效率。(以及隨之而來的成本降低)
2. 較高的軟體質量。(錯誤可以更快的被糾正)
3. 恰當的使用復用可以改善系統的可維護性。
傳統的復用
1、代碼的剪貼復用:最初步的復用,每塊代碼分散在各處,獨立的演變,仍需要針對每一塊修改和測試。這種復用帶來的好處很有限。
2、算法的復用:在已有的成熟算法中選擇一個比自己重新開發一個好的多。比如排序算法。這就是算法的復用。
3、數據結構的復用:
比如佇列、棧、鍊表,在實踐中得到了大量的套用
傳統的復用種類各有優點也有各自的缺陷。(LY註:有哪些優勢和缺陷呢?)
可維護性與復用的關係
傳統復用方案的致命缺陷是復用常常以破壞可維護性為代價的。
因此我們要支持可維護性的復用,即在保持甚至提高系統的可維護性的同時,實現系統的復用。(LY註:舊有復用方式的缺陷是為了復用破壞了可維護性,或者說支持那些維護性差的復用。歸根到底是因為,將不應該復用在一起的東西復用在了一起。設計上就出現了混亂。良好的設計不應該出現這種後果。而現在我們僅考慮支持可維護性的復用。將相關的東西放在一起,不相關的部分即使看似相同可以復用,也不能這樣做。因為這種可復用其實是偶然的,以後系統一旦變化,這種所謂的“相同”就消失了。不知道我這個理解是否正確。)
面向對象設計的復用
在面向對象語言中,語言具有的良好特性,使得細節的復用變得簡單成熟而不再是重點。復用的重點在於帶有商業邏輯的抽象層次上。這是提高復用性同時保持和提高可維護性的關鍵。
抽象層次應是較為穩定的,是復用的重點。抽象層次的模組相對獨立於具體層次。這樣具體層次內部的變化就不會影響到抽象層次,抽象層次的模組復用會較為容易。
在面向對象設計中,可維護性復用以設計原則和設計模式為基礎。
對可維護性的支持
針對三個目標,可擴展性、靈活性、可插入性。
1. 提高復用性,可以提高可擴展性。允許一個具有同樣接口的新類替代舊類,是對抽象接口的復用。客戶端依賴於抽象接口,而不是一個具體實現類,使得這個具體類可以被別的具體類替換,而不影響客戶端。這提高了系統的可擴展性。
系統可擴展性由“開-閉”原則、里氏代換原則依賴倒轉原則和組合/聚合復用原則所保證。(LY:“開-閉”原則,是指一個軟體實體應當對擴展開放,對修改關閉,即可以在不修改的情況下擴展。里氏代換原則,是指任何基類可以出現的地方,子類一定可以出現。依賴倒轉原則,是指要依賴於抽象,不要依賴於實現。合成/聚合復用原則,是指要儘量使用合成/聚合,而不是繼承關係來達到復用目的。)
2. 提高復用性,可以提高靈活性。模組相對獨立,通信儘可能少。這樣當一個模組修改時,對別的模組的影響很小。
這由“開-閉”原則、迪米特法則接口隔離原則保證的。
(LY註:迪米特法則,是指一個軟體實體應該與儘可能少的其他實體發生相互作用。 接口隔離原則,是指應當為客戶端提供儘可能小的單獨的接口,而不要提供大的總接口)
3. 提高復用性,可以提高系統的可插入性。當一部分不再滿足需要時,可以將舊的部分拔出,新的部分插入。
可插入性由“開-閉”原則、里氏代換原則、依賴倒轉原則和組合/聚合復用原則所保證。
這樣,在提高一個系統可維護性的同時,提高了這個系統的可復用性。具體的設計原則有:
l “開-閉”原則
l 里氏代換原則
l 依賴倒轉原則
l 接口隔離原則
l 組合/聚合復用原則
l 迪米特法則
這些原則首先是復用的原則,遵循這些原則可以有效提高系統的復用性,同時提高系統的可維護性。

幫助

設計模式是將OO設計理論套用到實踐中的例子。設計模式分為創建模式、結構模式和行為模式。設計模式本身不能保證系統的可復用性和可維護性。但是通過學習這些設計模式的思想可以提高設計師的水平,加強與同行的交流,從而幫助設計師提高系統設計的可復用性和可維護性。

相關搜尋

熱門詞條

聯絡我們