系統設計:如何降低系統的複雜度

系統設計:如何降低系統的複雜度

如何降低系統的複雜性

工作了這麼多年,經歷了各種各樣的大大小小的系統的設計和編碼,如果有人問你,你覺得如何才能降低系統的複雜性?

捫心自問,這個問題也沒有標準的答案,只能是每個人都有自己的體會。但是,這其中還是有很多大家都認可的一些好的設計原則的。以下就是我個人的一些看法。

遵循SOLID原則:SOLID原則其實是面向對象設計的非常實用的原則,也是指導大家在設計系統的時候需要遵守的基本的原則。 舉個最簡單的例子,很多的編碼規範中都規定,一個類或者一個方法不能太長,原因其實就是太長的類或者方法一般都違反了SOLID原則中的單一指責這個標準。

使用DDD來應對複雜的業務系統:DDD最近幾年越來越收到青睞,特別是隨著微服務的盛行,大家越來越意識到DDD的重要性。關於DDD,自己可以去網上搜索一些資料,但是DDD在真正落地的時候往往會有一些困難。

持續性的保持軟件的質量

:軟件的質量包括可讀性,可維護性,可擴展性等等。一般一個軟件的生命週期都是很長的,如何能在整個軟件的生命週期內都保持很高的質量確實是很難的。因為這取決於很多的因素,比如開發人員的素質水平,團隊領導人的水平,架構師的水平,甚至是需求的工期。要保持高質量的軟件,就要時刻都保證軟件的質量。這麼做可能會導致短期的效率降低,但是從長期來看收益肯定是大於付出的。

採用分層的設計:對於複雜的系統,分層的設計是最常用的降低複雜度的手段。最典型的應用就是OSI的7層網絡模型。分層之後,每層的代碼都只負責完成單一的獨立的功能。而且每一層只和他的上層和下層有關係。這樣就大大降低了複雜度。

採用模塊化的設計:將一個複雜的系統就行拆分也是降低複雜度常用的手段。拆分之後的每個模塊只負責相對單一的功能。模塊之間的交互通過接口來實現。這樣就能降低系統的複雜性。

小結

上面說到的幾種降低軟件複雜性的方法相互之間並不是互相獨立的,他們之間是相輔相成的。比如對於一個複雜的軟件系統,可以按照功能把它分解為幾個獨立的子系統,這裡使用了模塊化的設計。在每個獨立的子系統中,還需要按照分層的思想來實現,這裡使用了分層的設計思想。當然在設計中還可以使用DDD的方法,同時還要遵循SOLID設計原則。

這只是自己的心得,歡迎吐槽。


分享到:


相關文章: