破解軟體設計的複雜性

2021-04-16 02:16:10 字數 819 閱讀 2685

破解軟體設計的複雜性

在很多人眼裡,設計可能會顯得很神秘。其實設計和解題是一回事,只要把其中的規律弄清楚了,就能順應規律的指引自然而然的得出結論。只不過任何事情都是由前提條件的,設計的前提就是方**的指導加上廣泛的領域知識(不是指業務領域,對軟體設計來說就是軟體解決方案)。生活中要做各種各樣的選擇,設計也是。

與軟體相關的設計,不管是架構方面、gui設計還是最終**,都是在和複雜性抗爭。人類大腦畢竟能同時處理的事件並不多,所以要借助於一些科學的工具來幫組我們理清複雜的關係,各種各樣的設計方法學也就應運而生了。

1、分而治之。這是算法學上的重要議題,它的核心思想是化解。依據乙個總體標準,把複雜的事物化解為小的概念的集合。這些小的概念之間可能也會有各種各樣的關係存在,這個關係就是分解標準的乙個體現。

2、層次結構。很多事物都呈現出層次結構,這正好適合我們的思維習慣。它和分而治之有相似的地方,都是化整為零的思維方法。我們在分析複雜事物的時候多是結合分而治之和層次劃分,這樣慢慢的把乙個複雜的整體描畫出來。實際的過程多半是一種遞迴的模式,因為實際的複雜性也會在某種層面上呈現出遞迴的特性。

3、自頂向下/自底向上。這兩種方法給出的是一種思維的方向,也就是說,我們對一些系統可以採用分解的辦法(自頂向下),對另一些系統可能會採用整合的辦法(自底向上)。自頂向下的核心思想是分解,自底向上的核心的聚合。

有了這些大的思維方向,再結合一些實用工具(各種各樣的圖和符號),就能在複雜性面前不至於懼怕了。科學的東西,總是要用科學的方法。設計就是先把問題弄複雜,再把問題弄簡單。第乙個階段是模型的建立,乙個越來越豐滿的原模型就預示著越來越複雜的問題被搞定。第二個階段是對映,把複雜的模型對映到解空間。當每個細節都被對映過去的時候,問題已經簡單化了。

軟體設計的哲學 第八章 降低複雜性

目錄 本章介紹了另一種思考如何建立更深層次類的方法。假設您正在開發乙個新模組,並且發現了乙個不可避免的複雜性。哪個會更好呢 應該讓模組的使用者處理複雜性,還是應該在模組內部處理複雜性?如果複雜性與模組提供的功能有關,那麼第二個答案通常是正確的。大多數模組的使用者都比開發人員多,所以開發人員比使用者遭...

軟體設計的哲學 第八章 降低複雜性

目錄本章介紹了另一種思考如何建立更深層次類的方法。假設您正在開發乙個新模組,並且發現了乙個不可避免的複雜性。哪個會更好呢 應該讓模組的使用者處理複雜性,還是應該在模組內部處理複雜性?如果複雜性與模組提供的功能有關,那麼第二個答案通常是正確的。大多數模組的使用者都比開發人員多,所以開發人員比使用者遭罪...

軟體固有的複雜性

brooks曾指出 愛因斯坦認為自然界必定存在著簡單的解釋,因為上帝不是反覆無常或隨心所欲的。軟體工程師沒有這樣的信仰來提供安慰。許多必須控制的複雜性是隨心所欲的複雜性。定義軟體的複雜性。軟體確實有較為簡單的軟體,系統簡單,沒有什麼複雜的變化,甚至不需要系統的學習,你就可以寫出乙個和他一樣的軟體或比...