自上而下,自下而上

2021-05-09 11:18:36 字數 905 閱讀 3111

很多書籍在描述解決乙個特定的問題的時候經常會提到自上而下和自下而上的解決方式。自上而下指的是先勾勒出解決問題的大綱,然後根據這個大綱在把問題細分,逐步解決問題。自下而上則在解決問題的時候沒有初始的大綱,先解決區域性問題,然後在組合各個區域性的解決方案,從而解決最終的問題。它們很好地總結了解決問題的方式,但是自上而下和自下而上從來都是跟具體情況相關的。什麼時候該自上而下,什麼時候該自下而上是很值得考量的。那麼具體應該怎麼來做呢?

自上而下適合已經有了全域性概念的情況。如在軟體設計中,如果實現對這個行業已經有了深入的了解,而且對所要做的產品已經有了乙個清晰的概念,那麼自上而下的方法會非常有效,這時候採用瀑布開發方**是非常合適的。

自下而上是在全域性還沒有清晰的了解或根據不知道全域性或者以後的發展的形勢的情況。而現實中這樣的問題很典型,也非常多。所以很多時候我們都會不自覺地採用自下而上的方法來解決問題。但是這個方法的缺陷是,風險很大。解決這種缺陷的方式就是將問題的解決在時間域上劃分為多個階段,在每個子階段對結果進行檢驗。在軟體設計中,典型的方**就又統一軟體過程,xp等。軟體開發中的問題絕大多數屬於這種情況,所以軟體開發很適合採用了分階段的自下而上的解決問題的方式。

還有一種方式那就是自上而下和自下而上的結合,在不了解全域性的情況,首先採用自下而上的方法來解決問題,當對問題有了更深入地了解之後,就採用自上而下的方法來進行。這種方法,顯而易見比上面兩種方式在一般的情況下都更有優勢。它的缺陷是,我們很難知道什麼程度才是自下而上和自上而下的分界點點。不過還是有辦法解決的,那就是通過一定的代價來換取。以軟體開發為例,原型開發方法就是如此,先以原型為代價,得到乙個比較清晰的全域性,然後採用自上而下的辦法進行架構設計,然後使用自下而上的方法來進行功能的開發。

所以我認為好的軟體開發方**就是在開發的過程中不斷地運用自上而下和自下而上的方法解決問題。就目前而言,我覺得原型開發方法和迭代開發方法的結合是適合絕大多數的應用場景的開發方**。

自上而下和自下而上

軟體開發方法當中,我比較喜歡這兩個方法。因為覺得比較適合我這種腦力不夠用的人。自上而下就是說,從抽象到具體。先定義好各個功能,然後再用具體的內容去填充這些功能 自下而上則相反,是從具體到抽象。我感覺,我們不同的人看世界的層次是不同的。不管學習什麼,新手總是比較注重細節,而層次越高的人看的東西則越抽象...

強人工智慧基本問題 自上而下,還是自下而上。

版本 0.1 人類智慧型在巨集觀上有心理學,微觀上有分子生物學等學科研究。但每個方向研究到一定階段就停滯了,沒有哪個學科能告訴我們 為什麼能有智慧型,如何才能產生智慧型。即使已經了解了大腦的很多知識,人類智慧型仍然是個黑盒子。對黑盒的研究,要麼從外部觀察其行為,然後來模擬其結構,可稱為自上而下的研究...

自上而下的軟體開發和自下而上的軟體開發

自上而下 top down 開發模式是指從乙個應用的最高點開始開發。從最高點逐步往下層編碼,直到開發完所有的任務。一旦寫完了最下層的 開發任務就完成了。使用這種方式,你需要設計 編寫出所有你需要的但還沒有實現模擬介面 服務 偽 自下而上 bottom up 開發模式是指從乙個應用的最底層開始開發。這...