Posted on 2010-11-01 15:36
瘋狂 閱讀(618)
評(píng)論(0) 編輯 收藏 所屬分類:
架構(gòu)
軟件架構(gòu)的選擇和設(shè)計(jì)并不是很容易做出的,一個(gè)成功的軟件架構(gòu)取決于N多的因素,軟件架構(gòu)這個(gè)詞向來(lái)就是最為模糊的一個(gè)詞,個(gè)人認(rèn)為軟件架構(gòu)實(shí)在是個(gè)很大的話題,業(yè)界一直采用的形象比喻就是建設(shè)房子時(shí)的房屋結(jié)構(gòu)圖,以軟件的角度來(lái)說(shuō),軟件架構(gòu)應(yīng)至少包括軟件開發(fā)時(shí)使用什么語(yǔ)言、形成軟件開發(fā)時(shí)可運(yùn)行的核心基礎(chǔ)框架、軟件應(yīng)用模塊的設(shè)計(jì)(包括模塊內(nèi)聚的功能、對(duì)外提供的服務(wù)等)、軟件測(cè)試的方法、軟件部署的方法以及團(tuán)隊(duì)開發(fā)的方法,那么怎么來(lái)選擇和設(shè)計(jì)軟件架構(gòu)呢,其衡量的因素是什么呢,個(gè)人認(rèn)為其中質(zhì)量和快速是衡量軟件架構(gòu)的選擇和設(shè)計(jì)是否成功的兩個(gè)最重要的因素。
為什么說(shuō)質(zhì)量和快速是兩個(gè)最重要的因素呢?首先來(lái)看看這里的質(zhì)量和快速分別包含了什么內(nèi)容:
質(zhì)量
軟件的質(zhì)量是軟件能否成功的非常非常重要的因素,就個(gè)人看來(lái),軟件質(zhì)量應(yīng)包括軟件功能性需求的實(shí)現(xiàn)、軟件非功能性需求的實(shí)現(xiàn)。
軟件功能性需求中最重要的就是要確定對(duì)于客戶而言商業(yè)價(jià)值最高的部分是什么,這一項(xiàng)對(duì)于軟件架構(gòu)而言的影響是軟件應(yīng)用模塊的設(shè)計(jì)上,而軟件應(yīng)用模塊的設(shè)計(jì)呢,通常要取決于可運(yùn)行的核心基礎(chǔ)框架的設(shè)計(jì)和實(shí)現(xiàn)上;
軟件非功能性需求則通常會(huì)包含很多要素,像軟件靈活性、可擴(kuò)展性、高響應(yīng)等,在這些眾多的要素中同樣要選擇出對(duì)于目前軟件最重要的要素是什么,這會(huì)影響到軟件架構(gòu)中的軟件開發(fā)語(yǔ)言的選擇、可運(yùn)行的核心基礎(chǔ)框架。
軟件的質(zhì)量還有需要考慮的要素就是軟件測(cè)試的方法了(這也會(huì)影響到選擇什么語(yǔ)言來(lái)開發(fā)軟件),這點(diǎn)對(duì)于軟件質(zhì)量而已,無(wú)疑是非常重要的一點(diǎn)。
快速
軟件能否快速開發(fā)完成也已經(jīng)成為了軟件能否成功的重要因素,快速開發(fā)完成的意思非常容易理解,但它其實(shí)很大的程度影響到了軟件架構(gòu)的選擇和設(shè)計(jì),很明顯的它將影響到軟件開發(fā)使用什么語(yǔ)言、軟件開發(fā)時(shí)可運(yùn)行的核心基礎(chǔ)框架、軟件部署的方法以及團(tuán)隊(duì)開發(fā)的方法等等,團(tuán)隊(duì)中的人很大程度上決定了軟件開發(fā)時(shí)使用什么語(yǔ)言(這個(gè)時(shí)候也要注意,其實(shí)什么語(yǔ)言會(huì)影響到開發(fā)的速度、開發(fā)的質(zhì)量等,例如erLang的設(shè)計(jì)目標(biāo)是為了可構(gòu)建容錯(cuò)的系統(tǒng)、c則更適合從底層控制整個(gè)系統(tǒng)的交互、java具備豐富的基礎(chǔ)庫(kù)、業(yè)界資源和更適合復(fù)雜業(yè)務(wù)的需求),至于核心基礎(chǔ)框架、部署的方法、團(tuán)隊(duì)開發(fā)的方法的設(shè)計(jì)都是為了快速這個(gè)目標(biāo)的。
從上面的兩個(gè)因素我們可以看到,要使得軟件高質(zhì)量且快速的完成,軟件架構(gòu)在選擇和設(shè)計(jì)上時(shí)非常重要的是尋找到一種平衡,所以軟件架構(gòu)要做到模式化其實(shí)并不容易。
在這里多說(shuō)下別的話,其實(shí)從上面所述能看出,去評(píng)論哪種語(yǔ)言會(huì)死是沒有什么意義的,并不會(huì)有一種語(yǔ)言放在任何環(huán)境下都適合,就像在互聯(lián)網(wǎng)網(wǎng)站的建設(shè)上,我想可能很多人都會(huì)選擇php+c或類似的語(yǔ)言體系,但大家其實(shí)可以仔細(xì)去想想,是不是網(wǎng)站的建設(shè)上一定要這樣的兩種語(yǔ)言才能承擔(dān)互聯(lián)網(wǎng)的高并發(fā)等需求呢,或許你更應(yīng)該做的是從該網(wǎng)站最重要的非功能性需求、團(tuán)隊(duì)等等因素來(lái)考慮,就像如果你的團(tuán)隊(duì)是java性質(zhì)的團(tuán)隊(duì),而網(wǎng)站最重要的非功能性需求又是支持業(yè)務(wù)的靈活性的話,那么我會(huì)覺得c這樣的過程化語(yǔ)言絕對(duì)不是這種情況下的最佳選擇,而java卻是這種情況下的最佳選擇,可能很多人會(huì)說(shuō)java太慢呀,什么的,其實(shí)并不盡然,很多時(shí)候靠硬件以及優(yōu)秀的架構(gòu)完全可以彌補(bǔ)掉java比c這樣的程序運(yùn)行相對(duì)更慢的毛病,:),這也算是給java的一個(gè)平反吧,呵呵,畢竟java相對(duì)c而言還有更大的好處那就是java程序的開發(fā)無(wú)論從質(zhì)量還是快速開發(fā)上肯定強(qiáng)于c,我這樣說(shuō)并不是說(shuō)一定要選擇java,我只是想說(shuō)明應(yīng)該根據(jù)什么樣的情況來(lái)選擇和設(shè)計(jì)什么樣的架構(gòu),那才是最合理的,所以架構(gòu)永遠(yuǎn)都沒有最好的,只有最合適的,而這也是架構(gòu)師最難做的原因,架構(gòu)師在做架構(gòu)的設(shè)計(jì)和選擇時(shí)遵循的出發(fā)點(diǎn)就是保證軟件高質(zhì)量且快速的完成。
轉(zhuǎn)載自:http://m.tkk7.com/BlueDavy/archive/2007/10/11/151907.html