软件设计原则总结
軟件設計基本原則:
(1) 可靠性
? ? ??用軟件系統規模越做越大越復雜,其可靠性越來越難保證。應用本身對系統運行的可靠性要求越來越高,軟件系統的可靠性也直接關系到設計自身的聲譽和生存發展競爭能力。軟件可靠性意味著該軟件在測試運行過程中避免可能發生故障的能力,且一旦發生故障后,具有解脫和排除故障的能力。?
?
(2) 健壯性
? ? ??健壯性又稱魯棒性,是指軟件對于規范要求以外的輸入能夠判斷出這個輸入不符合規范要求,并能有合理的處理方式。
(3) 可修改性
? ? ??要求以科學的方法設計軟件,使之有良好的結構和完備的文檔,系統性能易于調整。
(4) 容易理解
? ? ??軟件的可理解性是其可靠性和可修改性的前提。它并不僅僅是文檔清晰可讀的問題,更要求軟件本身具有簡單明了的結構。這在很大程度上取決于設計者的洞察力和創造性,以及對設計對象掌握得透徹程度,當然它還依賴于設計工具和方法的適當運用。
(5) 程序簡便
(6) 可測試性
? ? ??可測試性就是設計一個適當的數據集合,用來測試所建立的系統,并保證系統得到全面的檢驗。
(7) 效率性
? ? ??軟件的效率性一般用程序的執行時間和所占用的內存容量來度量。在達到原理要求功能指標的前提下,程序運行所需時間愈短和占用存儲容量愈小,則效率愈高。
(8) 標準化原則
? ? ??在結構上實現開放,基于業界開放式標準,符合國家和信息產業部的規范。
9)先進性
? ? ??滿足客戶需求,系統性能可靠,易于維護。
10)可擴展性
? ? ??軟件設計完要留有升級接口和升級空間。對擴展開放,對修改關閉。
軟件設計七大重要原則:
1、單一職責原則(SRP)
? ? ? 就一個類而言,應該僅有一個引起它變化的原因。如果一個類承擔的職責過多,就等于把這些職責耦合在一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到意想不到破壞。軟件真正要做的許多內容,就是發現職責并把那些職責相互分離。如果你能夠想到多于一個的動機去改變一個類,那么這個類就具有多于一個的職責,就應該考慮類的職責分離。
2、開放封閉原則(OCP)
? ? ??軟件實體(類、模塊、函數等)應該可以擴展,但是不可以修改,即對于擴展是開放的,對于更改是封閉的。運用開放-封閉原則可以使得軟件面對需求的改變卻可以保持相對穩定,從而使得軟件可以在第一個版本以后不斷推出新的版本。換句話說,當面對需求,對程序的改動是通過增加新的代碼進行的,而不是更改現有的代碼。無論模塊多么封閉,都會存在一些無法對之封閉的變化。既然不可能完全封閉,設計人員必須對于他設計的模塊應該對哪種變化封閉做出選擇。他必須先猜測出最有可能發生的變化種類,然后構造抽象來隔離這些變化,等到變化發生時立即采取行動。于是,在我們最初編寫代碼時,假設變化不會發生。當變化發生時,我們就創建抽象來隔離以后發生的同類變化。
開放-封閉原則是面向對象設計的核心所在,遵循這個原則可以帶來面向對象技術所聲稱的巨大好處,也就是可維護、可擴展、可復用、靈活性好。開發人員應該僅對程序中呈現出頻繁變化的那些部分做出抽象,然后,對于應用程序中的每個部分都刻意地進行抽象同樣不是一個好主意。拒絕不成熟的抽象和抽象本身一樣重要。
3、里氏代換原則(LSP)
? ? ??定義:子類型必須能夠替換掉它們的父類型。也就是說,一個軟件實體如果使用的是一個父類的話,那么一定適用于其子類,而且它覺察不出父類對象和子類對象的區別,即在軟件里面,把父類都替換成它的子類,程序的行為沒有變化。只有當子類可以替換掉父類,軟件單位的功能不受到影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。
4. 依賴倒置原則(DIP)
? ? ??1、高層模塊不應該依賴低層模塊,兩個都應該依賴抽象。
2、抽象不應該依賴細節,細節應該依賴抽象。
換句話說,就是要針對接口編程,不要對實現編程。依賴倒置原則是面向對象設計的標志,用哪種語言編寫程序不重要,如果編寫時考慮的都是如何針對抽象編程而不是針對細節編程,即程序中所有的依賴關系都是終止于抽象類或者接口,那就是面向對象的設計,反之就是過程化的設計了。
正是有了里氏代換原則,才使得依賴倒置原則成為可能。由于子類型的可替換性才使得使用父類類型的模塊在無需修改的情況下就可以擴展。
5、接口隔離原則(ISP)
? ? ??這一原則好象是單一職責原則的升級版,接口隔離原則強調的是當一個服務類需要被即有共同功能需求又有不同功能需求的客戶類使用時,不能在服務類中加進它的客戶不需要的方法,比如在服務類A的客戶中, B類客戶需要F方法,而C類客戶則不需要F方法,這時不能簡單地把F方法加到服務類A中以滿足B類客戶的需求,而應分離接口;比如另設計一個服務類D,其中包含F方法,并把共用的功能委托給A實現,這樣B客戶可以使用D,而C客戶繼續使用A;對這一原則我有所保留的是:如果F方法對C類沒有影響,直接加到A類中也無防,而且這種情況是很普遍。
6.合成/聚合復用原則
? ? ??在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分;新的對象通過這些向對象的委派達到復用已有功能的目的.這個設計原則有另一個簡短的表述:要盡量使用合成/聚合,盡量不要使用繼承。
7.迪米特法則
? ? ??又叫最少知識原則。如果兩個類不必彼此直接通信,那么這兩個類就不應當發生直接的相互作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。該法則首先強調的前提是在類的結構設計上,每一個類都應該盡量降低成員的訪問權限,即一個類包裝好自己的private狀態,不需要讓別的類知道的字段或行為就不要公開。迪米特法則的根本思想,是強調了類之間的松耦合。類之間的耦合越弱,越有利于復用,一個處在弱耦合的類被修改,不會對有關系的類造成波及。
轉載于:https://www.cnblogs.com/xiaxianfei/p/5336721.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
- 上一篇: Azure 怎么开通FTP
- 下一篇: JAVA Web.xml 加载顺序