免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

OO系統(tǒng)設(shè)計(jì)師之路--設(shè)計(jì)模型系列(1)--軟件架構(gòu)和軟件框架

 miky 2009-05-19
OO系統(tǒng)設(shè)計(jì)師之路--設(shè)計(jì)模型系列(1)--軟件架構(gòu)和軟件框架
 

2009-05-13 作者:coffeewoo 來(lái)源:coffeewoo的blog

 

軟件架構(gòu)是一種思想,一個(gè)系統(tǒng)藍(lán)圖,對(duì)軟件結(jié)構(gòu)組成的規(guī)劃和職責(zé)設(shè)定。而軟件框架是一個(gè)實(shí)現(xiàn),一個(gè)半成品,是針對(duì)一個(gè)特定問(wèn)題的解決方案和輔助工具。

這一篇講軟件架構(gòu)和軟件框架在UML設(shè)計(jì)過(guò)程中所起的作用。本系列文章不是專門討論軟件架構(gòu)和軟件框架的,所以不會(huì)深入講怎么做軟件架構(gòu)和軟件框架。另一個(gè)原因是筆者尚無(wú)這個(gè)自信能夠在這里班門弄斧講軟件架構(gòu)。之所以要講,是因?yàn)樵谠O(shè)計(jì)過(guò)程中,設(shè)計(jì)類必然會(huì)受到軟件架構(gòu)和框架的約束。從分析類到設(shè)計(jì)類,軟件架構(gòu)和框架是不得不考慮的一個(gè)重要因素。

軟件架構(gòu)和軟件框架是一回事兒?jiǎn)??相信有相?dāng)一部分人搞不清楚這個(gè)問(wèn)題,也會(huì)有相當(dāng)一部分人認(rèn)為是一回事兒,只是不同的叫法而已。架構(gòu)的英文原文是Architecture,而框架呢,則是Framwork。顯然這是兩個(gè)完全不同的詞兒。從技術(shù)上講,IT有一個(gè)職業(yè)是架構(gòu)師,架構(gòu)師代表了軟件技術(shù)人員最高的職業(yè)頂峰,卻從沒(méi)有聽說(shuō)過(guò)有軟件框架師的。所以肯定的說(shuō),軟件架構(gòu)和軟件框架是兩回事兒。

那么什么是軟件架構(gòu),什么又是軟件框架呢?軟件架構(gòu)是一種思想,一個(gè)系統(tǒng)藍(lán)圖,對(duì)軟件結(jié)構(gòu)組成的規(guī)劃和職責(zé)設(shè)定。而軟件框架是一個(gè)實(shí)現(xiàn),一個(gè)半成品,是針對(duì)一個(gè)特定問(wèn)題的解決方案和輔助工具。因此,架構(gòu)是一個(gè)邏輯的構(gòu)成,而框架是一個(gè)可用的半成品。比如說(shuō),J2EE規(guī)范描述了一系列邏輯部件,描述了這些部件的職責(zé)和它們的規(guī)范,約定了這些部件之間交互的接口和協(xié)議、標(biāo)準(zhǔn),規(guī)劃出一個(gè)如何利用這些邏輯部件來(lái)實(shí)現(xiàn)一個(gè)應(yīng)用系統(tǒng)的藍(lán)圖。J2EE是一個(gè)軟件架構(gòu)。而根據(jù)這一設(shè)想,各產(chǎn)商開發(fā)出了各自的產(chǎn)品,包括開發(fā)工具和應(yīng)用容器,開發(fā)者利用這些工具和容器就能方便的開發(fā)出符合J2EE規(guī)范的應(yīng)用程序。這些工具和容器就是軟件框架。再比如,MVC是一個(gè)設(shè)計(jì)模式,它將應(yīng)用程序劃分為實(shí)體,控制和視圖三個(gè)邏輯部件,我們可以說(shuō)它是一個(gè)軟件架構(gòu)。而Strus,JSF,WEBWork等分別以自己的方式實(shí)現(xiàn)了這一架構(gòu),提供了一個(gè)半成品,幫助開發(fā)人員迅速地開發(fā)一個(gè)符合MVC架構(gòu)的應(yīng)用程序,我們說(shuō)Strus,JSF,WEBWork是軟件框架。

在一個(gè)商業(yè)軟件的開發(fā)過(guò)程中,如何去設(shè)定軟件的架構(gòu)和框架,在設(shè)計(jì)過(guò)程中,軟件架構(gòu)和框架又是如何影響設(shè)計(jì)的呢?

軟件架構(gòu)在一個(gè)商業(yè)系統(tǒng)的開發(fā)過(guò)程中,是由軟件架構(gòu)師這一角色來(lái)完成的。架構(gòu)師要從很高的角度,根據(jù)應(yīng)用環(huán)境,用戶需求,公司技術(shù)發(fā)展要求等等來(lái)對(duì)這一個(gè)系統(tǒng)作出邏輯的劃分。例如是集中式還是分布式?采用什么中間件?采用何種技術(shù)體系?應(yīng)用什么標(biāo)準(zhǔn)?符合什么規(guī)范?軟件的層次是什么?傳輸協(xié)議是什么?與公司其它產(chǎn)品如何銜接?如何使公司產(chǎn)生核心競(jìng)爭(zhēng)力?可見(jiàn)一個(gè)架構(gòu)師對(duì)一個(gè)公司的重要性。

可惜架構(gòu)師這一角色在很大程度上被誤解,架構(gòu)師這一稱謂也被濫用。知道幾個(gè)設(shè)計(jì)模式,用過(guò)幾個(gè)框架,有過(guò)幾個(gè)中間件或應(yīng)用服務(wù)器的經(jīng)歷,就號(hào)稱是架構(gòu)師了。也難怪有人說(shuō)架構(gòu)師己死。掌握以上技能的,在我看來(lái),只是經(jīng)驗(yàn)豐富的設(shè)計(jì)師而已。因?yàn)樗茏龅?,只是?yīng)用現(xiàn)成的技術(shù)。架構(gòu)師要做的,是發(fā)明J2EE規(guī)范,是創(chuàng)造SOA架構(gòu),是構(gòu)架出領(lǐng)先于市場(chǎng)的技術(shù)產(chǎn)品,是領(lǐng)導(dǎo)軟件技術(shù)潮流,是引導(dǎo)軟件技術(shù)發(fā)展趨勢(shì)。這種差別,就如同科學(xué)家和工程師的差別。

因此,在一般的中小企業(yè)里,如果沒(méi)有領(lǐng)先于業(yè)界的產(chǎn)品,沒(méi)有引導(dǎo)了市場(chǎng)的思想,沒(méi)有稱霸一方的應(yīng)用領(lǐng)域,就不需要架構(gòu)師這個(gè)角色,也產(chǎn)生不了架構(gòu)師。有幾個(gè)高級(jí)設(shè)計(jì)師,能緊緊跟住技術(shù)潮流,把先進(jìn)技術(shù)玩兒轉(zhuǎn)并應(yīng)用到自己的產(chǎn)品里,也就足夠了。也因此,在一般的商業(yè)系統(tǒng)開發(fā)過(guò)程中,軟件架構(gòu)這一個(gè)領(lǐng)域,最主要的工作是選擇適合自己的現(xiàn)成的軟件架構(gòu)。換句話說(shuō)是用好現(xiàn)有的技術(shù)。比如,決定采用J2EE架構(gòu)。再能做的一點(diǎn),是劃分軟件邏輯層次,決定使用的標(biāo)準(zhǔn)和規(guī)范。

作為例子,一個(gè)軟件架構(gòu)和商業(yè)系統(tǒng)開發(fā)過(guò)程中可以用這樣的形式來(lái)表述:

一個(gè)軟件架構(gòu)的表述例子:

有的讀者可能會(huì)說(shuō),沒(méi)什么難的嘛,我也懂,我們的項(xiàng)目也是這樣做的。呵呵,是的,在很多人心目的,架構(gòu)師做的可能就是這樣的工作??墒亲屑?xì)想想,雖然懂得這么多已經(jīng)不容易了,可這樣的人并不少見(jiàn),那不就是滿天都是架構(gòu)師了么?雖然這個(gè)工作的確是在做軟件架構(gòu),可是我認(rèn)為并不能稱為架構(gòu)師,頂多是高級(jí)設(shè)計(jì)師,懂得如何應(yīng)用現(xiàn)有技術(shù)而已。

好了,軟件架構(gòu)已經(jīng)定下來(lái)了,現(xiàn)在該由設(shè)計(jì)師(實(shí)際上,絕大多數(shù)公司里的架構(gòu)工作也是由設(shè)計(jì)師來(lái)做的)來(lái)決定每一個(gè)層次的具體框架設(shè)計(jì)了。下面的例子,是以Entity層作為例子來(lái)表述框架的。

Entity層框架的例子:

這個(gè)例子只給出了靜態(tài)圖。為了讓開發(fā)人沒(méi)明白這個(gè)設(shè)計(jì),還應(yīng)當(dāng)給出交互圖。例如,如果應(yīng)用程序增加一個(gè)VO,Business層怎么調(diào)用EntityControl,EntityControl如何分解VO,怎么訪問(wèn)Relationship,怎么處理PO,怎么訪問(wèn)DBControl層。也就是這些框架基類如何交互來(lái)完成業(yè)務(wù)要求。這個(gè)圖筆者就不再繪制了。建議有興趣的讀者設(shè)計(jì)自己的框架,并自己繪制這些交互圖。自己動(dòng)手認(rèn)識(shí)會(huì)更深。

架構(gòu)有了,框架也有了,對(duì)于設(shè)計(jì)類來(lái)說(shuō),架構(gòu)和框架形成了規(guī)范,設(shè)計(jì)類必須遵守這些規(guī)范,并了解如何使用框架的接口。當(dāng)然,這個(gè)架構(gòu)和框架僅僅是一個(gè)例子,現(xiàn)實(shí)中的架構(gòu)和框架可不僅僅這一點(diǎn),考慮的東西會(huì)更多,比如日志如何處理,事務(wù)如何處理,異常如何處理。每一個(gè)可能又都是一個(gè)框架。另外,如果選擇了某一個(gè)成熟產(chǎn)商的架構(gòu),例如Websphere,Weblogic,可能就不需要自己來(lái)設(shè)計(jì)架構(gòu)和框架了,這些產(chǎn)品已經(jīng)提供了。

這一篇就到這里。下一篇本來(lái)是應(yīng)當(dāng)講如何從分析類到設(shè)計(jì)類的,不過(guò)覺(jué)得好象沒(méi)什么可講,因?yàn)榭蚣芗热灰?guī)定了,并且正常的業(yè)務(wù)邏輯都已經(jīng)由框架處理了,分析類轉(zhuǎn)化成設(shè)計(jì)類應(yīng)當(dāng)是一件水到渠成的事情。筆者還在考慮下一篇該寫些什么,就暫不預(yù)告了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多