抽象的層次

2021-04-14 02:33:17 字數 1173 閱讀 5678

軟體開發之所以複雜,是因為業務需求與程式語言之間存在的巨大鴻溝,有太多的變數。

你無法清晰和準確的描述你所想要的東西,而即便你能,你也很難最後實現出來的東西是不是你所想要的。因為,在軟體業,巨集觀的業務需求很多時候竟然是程式設計師決定的,要確定乙個特性具體會怎樣體現,你竟然不得不去看源**。就好比說,製作一架太空梭,你不得不從每乙個螺絲釘開始考慮。軟體太虛幻了,以至於你無法從外觀上看出,乙個exe程式到底是遊戲呢,還是文書處理,或者會格式化你的硬碟。所以,軟體的變數太多了,你無法掌控。

軟體的靈活是好處,也是壞處。開發人員總是說,你想要怎樣都可以,只要你告訴我,就能給你實現出來,幾乎沒有任何的成本。既然這樣沒有成本,所以外部的需求總是在變,今天這樣明天那樣。

軟體的外部行為是無法**的,所以我認為病毒是會永遠存在的,就像好人和壞人你從來不能完全分清。這種無法**性,同時也給模組之間的配合帶來了很大的障礙,就像你不知道如何跟乙個無法捉摸的人合作一樣。於是,就像人與人之間建立了契約關係一樣,軟體業也開始有了介面的概念。軟體模組的外部行為,於是由其介面進行描述,這樣的配合就好多了。

對外行為已經公開了,那麼自己對外的要求呢?如何表達對世界的意圖?

抽象又幾個層次,首先你會先建立乙個函式來封裝複雜的操作。 在後來,你會建立更加的完備的**框架來處理同樣領域的各種問題。接著,是用一種抽象的模式來囊括不同領域的類似問題。最後,你會發明一種特定的語言來方便表達。解決方案從開始到後來變得越越抽象,但是適應範圍也越廣,表達也更簡潔。

以為業務需求與程式語言之間存在的巨大鴻溝,彌補起來就會有偏差,我們需要在中間不斷的設立參照物,或者是中間產物。共產主義尚且還有分三步走呢,何況軟體開發。這種中間的參照物就是函式庫,**框架,模式和語言,一層層的轉換,而且要保證每一層之間轉換的準確性。

所以軟體開發,就是不斷地從高層次的抽象不斷向下轉換,而每乙個抽象上都要把自己的意圖準確表達。現在的程式語言也在往這方面發展,企圖在不增加新的抽象層的情況下,對現有語言進行改造。比如.net裡的attribute程式設計,還有xaml裡使用標籤來描述介面布局和程式行為。這就是所謂的declarative程式設計,與以前用很多**來描述的imperative程式設計有很大不同。declarative程式設計的最大優點是,它準備的表達了自己的意圖,而imperative程式設計就很難琢磨。前者對開發工具的支援也比較好,而後者則要求開發工具有很高的智慧型!

一時興起,胡言亂語了一番。以上想法,多來自去年看過的《software factory》。 

抽象的層次

軟體開發之所以複雜,是因為業務需求與程式語言之間存在的巨大鴻溝,有太多的變數。你無法清晰和準確的描述你所想要的東西,而即便你能,你也很難最後實現出來的東西是不是你所想要的。因為,在軟體業,巨集觀的業務需求很多時候竟然是程式設計師決定的,要確定乙個特性具體會怎樣體現,你竟然不得不去看源 就好比說,製作...

OVS 埠抽象層次(四十)

struct vport抽象的是ovs中datapath層的每個埠,通過它將ovs中的各種資料結構與port關聯起來,而結構體netdev vport 就是vport和底層真實網路裝置結構net device的入口,關鍵資料結構如下 對網路裝置的封裝。struct netdev vport 那麼如何...

資料抽象分為幾個層次,各個層次的作用分別是什麼

物理層 最低層次的抽象,描述資料實際上如何儲存的。物理層詳細描述複雜的底層資料結構,是開發dbms的資料庫 商應該研究的事情。邏輯層 比物理層次稍高的層次的抽象,描述資料庫中儲存什麼資料以及這些資料間存在什麼關係。因而整個資料庫可通過少量相對簡單的結構來描述。雖然簡單的邏輯層結構的實現涉及到複雜的物...