相信大多軟件工程師在談及軟件架構(gòu)(software architecture)時立刻會聯(lián)想到數(shù)據(jù)結(jié)構(gòu)(data structure),這是正常的反應(yīng)。但是,有些工程師卻誤以為軟件架構(gòu)就完全是關(guān)于數(shù)據(jù)結(jié)構(gòu),這就不對了。之所以將軟件架構(gòu)與數(shù)據(jù)結(jié)構(gòu)在本文中并提討論,是為了讓我們對之有更清晰的認(rèn)識。讀者后面會明白,這種清晰的認(rèn)識對于我們的工作是有益的。
數(shù)據(jù)結(jié)構(gòu)在Wikipedia上的定義是:為了有效使用數(shù)據(jù)而在計(jì)算機(jī)中存儲和組織數(shù)據(jù)的特定方法。這一定義說明了為什么我們又稱之為算法。同樣是在Wikipedia上,我們能找到對于軟件架構(gòu)的定義:一個系統(tǒng)所需結(jié)構(gòu)的集合,包括軟件元素(element)、元素間的關(guān)系和屬性。定義中的“元素”是一個很寬泛的稱呼,即可以指軟件組件(component),也可以指一個獨(dú)立的子設(shè)備。
單從定義來看,軟件架構(gòu)與數(shù)據(jù)結(jié)構(gòu)具有不同的抽象層次,前者更放眼于功能,后者更著力于效率。為了讀者能更好地理解這種層次之別,讓我們以軟件開發(fā)流程中的兩個關(guān)鍵步驟為例加以說明。軟件開發(fā)的設(shè)計(jì)階段存在概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩大步驟,概要設(shè)計(jì)應(yīng)重點(diǎn)闡述軟件架構(gòu),而詳細(xì)設(shè)計(jì)應(yīng)著力于解釋數(shù)據(jù)結(jié)構(gòu)。我們都知道,在開發(fā)過程中概要設(shè)計(jì)先于詳細(xì)設(shè)計(jì),因而可以推測出軟件架構(gòu)處于更高的抽象層次。我看到過不少軟件概要設(shè)計(jì)文檔一上來就講數(shù)據(jù)結(jié)構(gòu),這是文檔的作者對于軟件架構(gòu)與數(shù)據(jù)結(jié)構(gòu)沒有加以明晰的緣故。
做軟件設(shè)計(jì)首當(dāng)其沖的不是數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),而是架構(gòu)設(shè)計(jì),這一點(diǎn)無論怎樣規(guī)模的軟件都正確。架構(gòu)設(shè)計(jì)強(qiáng)調(diào)的是設(shè)計(jì)概念(我有時也稱之為模型),即軟件“長什么樣”。對于實(shí)現(xiàn)同樣功能的軟件模塊,在有概念和沒有概念時所設(shè)計(jì)出來的數(shù)據(jù)結(jié)構(gòu)會很不一樣。即使采用的算法相同,但命名很有可能不同,且有概念的命名更具可讀性。因此,“先架構(gòu)后結(jié)構(gòu)”的方法,有助于寫出更具可維護(hù)性的代碼?,F(xiàn)實(shí)中,之所以存在大量難以維護(hù)的代碼,正是因?yàn)樵O(shè)計(jì)者省去了概念塑造這一步驟。
另一點(diǎn)需要指出的是,軟件架構(gòu)設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)對工程師的能力要求并不完全相同。軟件架構(gòu)設(shè)計(jì)需要更多的是概念能力,即將細(xì)節(jié)進(jìn)行一定的抽象和概括的能力。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)所需的能力卻是對于計(jì)算機(jī)體系結(jié)構(gòu)、編程語言和各種算法的掌握。
分清軟件架構(gòu)與數(shù)據(jù)結(jié)構(gòu)的意義在于:
1) 方便溝通。不至于他人在說軟件架構(gòu)時,我們卻只想著數(shù)據(jù)結(jié)構(gòu)。
2) 明白架構(gòu)設(shè)計(jì)的重要性。架構(gòu)設(shè)計(jì)用于引導(dǎo)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)是用來表達(dá)架構(gòu)的。
3) 理解架構(gòu)設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)所需的能力之別,而不至于認(rèn)為“數(shù)據(jù)結(jié)構(gòu)是軟件的一切”。
網(wǎng)站名稱:明晰軟件架構(gòu)與數(shù)據(jù)結(jié)構(gòu)
文章起源:http://jinyejixie.com/article8/gdpdop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、營銷型網(wǎng)站建設(shè)、做網(wǎng)站、微信公眾號、搜索引擎優(yōu)化、定制開發(fā)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源:
創(chuàng)新互聯(lián)