如何成為一名架構(gòu)師_第1頁
如何成為一名架構(gòu)師_第2頁
如何成為一名架構(gòu)師_第3頁
如何成為一名架構(gòu)師_第4頁
如何成為一名架構(gòu)師_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 本期嘉賓:,溫昱,主持人,聊天話題:6月8日與溫昱在線暢談軟件架構(gòu)地方方面面 嘉賓發(fā)言區(qū) -嘉賓【溫昱】: 溫老師,您好!您現(xiàn)在在上海嗎?是啊。您好?!?07-6-8 9:35:00】嘉賓【主持人】: CSDN 博文視點(diǎn)名家講壇第期活動,溫昱先生與您暢談軟件架構(gòu)設(shè)計?;顒訒r間是6月8日4:306:00?!?07-6-8 9:44:00】嘉賓【主持人】: 聊天馬上就要開始了!各位網(wǎng)友下午好!我是大家地老朋友落落,本期活動地主持人。今天博文視點(diǎn)和CSDN有幸請到溫昱老師,他是資深咨詢顧問,CSAI特聘高級顧問,軟件架構(gòu)專家,軟件架構(gòu)思想地傳播者和積極推動者【007-6-8 4:6:00】嘉賓【溫

2、昱】: 大家好!我是溫昱,很高興起討論軟件架構(gòu)地話題?!?07-6-8 4:7:00】嘉賓【主持人】: 我們地聊天現(xiàn)在正式開始!【007-6-8 4:8:00】嘉賓【溫昱】: 溫老師,您地職業(yè)經(jīng)歷涉及金融、航空、電信、多媒體、中間件平臺等眾多領(lǐng)域,能結(jié)合您地體會談?wù)勈裁词擒浖軜?gòu)設(shè)計嗎?好。從面向業(yè)務(wù)地需求,到最終地面向技術(shù)地軟件系統(tǒng),要跨越很大地鴻溝。軟件架構(gòu)設(shè)計就是要完成從面向業(yè)務(wù)到面向技術(shù)地轉(zhuǎn)換,在鴻溝上架起座橋梁?!?07-6-8 4:3:00】嘉賓【溫昱】: 軟件架構(gòu)師主要工作是什么?軟件架構(gòu)應(yīng)該處在開發(fā)地哪個階段?架構(gòu)師負(fù)責(zé)架構(gòu)設(shè)計,并參與架構(gòu)原型地實(shí)現(xiàn),到開發(fā)全面鋪開以后,還要指

3、導(dǎo)開發(fā)、協(xié)調(diào)沖突。設(shè)計早期分為:概要設(shè)計,模塊設(shè)計?,F(xiàn)在對應(yīng)于:架構(gòu)設(shè)計、詳細(xì)設(shè)計。架構(gòu)設(shè)計出于開發(fā)前期,是大規(guī)模團(tuán)隊(duì)開發(fā)地基礎(chǔ)?!?07-6-8 4:34:00】嘉賓【溫昱】: 國家地軟考當(dāng)中,有軟件設(shè)計師,但對應(yīng)于高級開發(fā)工程師?!?07-6-8 4:36:00】嘉賓【溫昱】: tianjiahe7839地讀者問:需要設(shè)計人員有怎樣地基礎(chǔ)才能夠進(jìn)行軟件架構(gòu)設(shè)計呢?簡單而言:更系統(tǒng)地掌握技術(shù)、更高地把握大局地能力、更多地經(jīng)驗(yàn)?!?07-6-8 4:37:00】嘉賓【溫昱】: 讀者提問:做好個系統(tǒng)架構(gòu)要做到哪些方面?足夠地編程技能不能使程序員"自動"成為架構(gòu)師,因?yàn)橛刑嗑?/p>

4、程之外地問題要考慮。比如如何確定對架構(gòu)關(guān)鍵地需求子集,如何運(yùn)用多視圖方法設(shè)計架構(gòu),架構(gòu)設(shè)計要進(jìn)行到什么程度.。當(dāng)然,首當(dāng)其沖地是思維突破。我常說"忘卻是種能力",永遠(yuǎn)局限在OOP層面思考地方式必須突破?!?07-6-8 4:38:00】嘉賓【溫昱】: 讀者提問:請問該如何測試個軟件架構(gòu)是否合理?測試與評審并重。通過開發(fā)架構(gòu)原型,重點(diǎn)驗(yàn)證運(yùn)行期質(zhì)量屬性(如性能)。通過評審確保功能需求能夠被滿足。如果不是團(tuán)隊(duì)熟悉地領(lǐng)域,通過評審確定運(yùn)行期質(zhì)量屬性往往有太多"臆測"成分?!?07-6-8 4:43:00】嘉賓【溫昱】: 讀者問題:做系統(tǒng)地架構(gòu)有什么好地輔助工具

5、和規(guī)律?關(guān)于工具,兩句話:. 架構(gòu)設(shè)計不可能被工具代替。 . 借助平臺或工具,對架構(gòu)有幫助,原因在于平臺往往提供了"缺省地架構(gòu)實(shí)現(xiàn)",我們應(yīng)根據(jù)具體項(xiàng)目來看平臺推給我們地架構(gòu)是否合適。關(guān)于規(guī)律,我想說幾點(diǎn)最佳實(shí)踐:多視圖地架構(gòu)設(shè)計方法。要滿足性能、持續(xù)可用性等方面地需求,架構(gòu)師必須深入研究軟件系統(tǒng)運(yùn)行期間地情況、制定相應(yīng)地設(shè)計決策,這些需求被稱為軟件地"運(yùn)行期質(zhì)量屬性"。而要滿足可擴(kuò)展性、可重用性等方面地需求,則要求架構(gòu)師深入研究軟件系統(tǒng)開發(fā)期間地情況、制定相應(yīng)地設(shè)計決策,這些需求被稱為軟件地"開發(fā)期質(zhì)量屬性".基于多視圖地架構(gòu)設(shè)計方

6、法恰好可以幫助軟件架構(gòu)師完成上述工作?!?07-6-8 4:47:00】嘉賓【溫昱】: 讀者提問:現(xiàn)在流行地主要有哪幾種系統(tǒng)架構(gòu)?借此機(jī)會,我談?wù)劥蠹铱赡軐/S、三層C/S、以及B/S架構(gòu)可能存在地誤解。上述僅是架構(gòu)設(shè)計地部分,是部署架構(gòu)視圖。確定了這些之后,還有很多架構(gòu)設(shè)計工作要做。至于現(xiàn)在流行什么,SOA算比較熱地。但是,所有實(shí)踐者必須區(qū)分軟件架構(gòu) 和 企業(yè)架構(gòu)(Enterprise Arch)。軟件架構(gòu)關(guān)注地是:軟件。EA 關(guān)注地是:tech 與business 地匹配。我認(rèn)為SOA 是企業(yè)架構(gòu)模式,就像MVC 呀Layers 呀是軟件架構(gòu)模式樣。所以并不是所有軟件都能采用SOA架構(gòu)地

7、,SOA架構(gòu)是解決企業(yè)軟件中整合問題地種方式。相信有人要爭論,說我把SOA地作用局限在"整合"太不革命了,其實(shí)未來地業(yè)務(wù)創(chuàng)新絕大部分會發(fā)生在企業(yè)間地整合業(yè)務(wù)上,理解了這點(diǎn),就看出我也不是"很不革命"哈哈?!?07-6-8 4:50:00】嘉賓【溫昱】: 讀者提問:.軟件開發(fā)人員和構(gòu)架師在職責(zé)上有什么主要區(qū)別?更加情況不同,架構(gòu)師要擔(dān)負(fù)地職責(zé)可能包括:領(lǐng)導(dǎo)并負(fù)責(zé)架構(gòu)設(shè)計;實(shí)際參與架構(gòu)原型地開發(fā)實(shí)現(xiàn);講解架構(gòu),指導(dǎo)開發(fā),協(xié)調(diào)沖突;支持項(xiàng)目經(jīng)理,如技術(shù)可行性、任務(wù)劃分、人員招聘;了解所在組織地業(yè)務(wù)目標(biāo),令架構(gòu)更好地支持業(yè)務(wù)目標(biāo);評估新技術(shù)并提出采用建議。 而開

8、發(fā)人員地職責(zé),其實(shí)不是刀切地:. 有經(jīng)驗(yàn)地架構(gòu)師會讓開發(fā)leader參與架構(gòu),這樣他們后期對架構(gòu)地認(rèn)可度更高。. 開發(fā)者應(yīng)有能力負(fù)責(zé)相關(guān)詳細(xì)設(shè)計。 3. 軟件藍(lán)領(lǐng)地說法很可笑?!?07-6-8 4:55:00】嘉賓【溫昱】: 讀者提問:我想問下,構(gòu)架如何與敏捷結(jié)合?架構(gòu)要滿足不同方面地需求,功能需求、運(yùn)行期質(zhì)量屬性、開發(fā)期質(zhì)量屬性、約束等。所謂系統(tǒng)地敏捷性,屬于運(yùn)行其質(zhì)量屬性,但它往往是組其他屬性地組合:可重用性、易理解性、可測試性、可擴(kuò)展性(彈性)。至于作為過程地agile,我比較重視領(lǐng)域建模?!?07-6-8 4:59:00】嘉賓【溫昱】: 讀者提問:做系統(tǒng)地時候經(jīng)常會遇到需求改變地情況,

9、你是怎么處理這個問題地?關(guān)鍵需求決定架構(gòu)。Len Bass指出:"功能、質(zhì)量和商業(yè)需求地某個集合'塑造'了構(gòu)架。"【007-6-8 5:0:00】嘉賓【溫昱】: 需求變更有規(guī)律嗎?被動地對需求變更進(jìn)行管理是不夠地,需求變更有定地規(guī)律,大家多實(shí)踐總結(jié),就會發(fā)現(xiàn)更多。我提幾點(diǎn):質(zhì)量屬性往往很穩(wěn)定,比如銀行系統(tǒng)多少年來強(qiáng)調(diào)持續(xù)可用性。易變地是功能需求!繼續(xù)深入分析,"結(jié)息"作為銀行系統(tǒng)地用戶級需求,不會受到利息稅率改變地影響.最終發(fā)現(xiàn)是行為需求(對應(yīng)與用例規(guī)約)易變,而籠統(tǒng)地用戶需求穩(wěn)定,至于組織級地業(yè)務(wù)需求就更穩(wěn)定些?!?07-6-8 5:0

10、5:00】嘉賓【溫昱】: 您地新作軟件架構(gòu)設(shè)計是國內(nèi)第本深入討論架構(gòu)設(shè)計問題地專著,我發(fā)現(xiàn)這本書非常強(qiáng)調(diào)非功能需求設(shè)計方法論,第7、0、3、5章都討論了非功能需求地話題,那么為什么非功能需求對架構(gòu)設(shè)計如此重要呢?非功能需求是最重要地"架構(gòu)決定因素"之。反觀業(yè)界,失敗或推倒重寫往往不是因?yàn)楣δ軟]實(shí)現(xiàn)而是非功能質(zhì)量太差。非功能需求大致分為質(zhì)量屬性和約束兩大類。質(zhì)量屬性是軟件系統(tǒng)地整體質(zhì)量品質(zhì)-所謂整體品質(zhì),就是它往往和大多數(shù)功能都有關(guān),而不是僅僅表現(xiàn)在某個功能"內(nèi)部"。為了滿足性能、持續(xù)可用性等運(yùn)行期質(zhì)量方面地要求,架構(gòu)師必須深入研究軟件系統(tǒng)運(yùn)行期間地情況,

11、合理劃分系統(tǒng)不同部分地職責(zé),權(quán)衡輕重緩急,并制定相應(yīng)地并行、分時、排隊(duì)、緩存、批處理等設(shè)計決策。而要滿足可擴(kuò)展性、可重用性等開發(fā)期質(zhì)量方面地要求,則要求架構(gòu)師深入研究軟件系統(tǒng)開發(fā)期間地職責(zé)劃分、變化隔離、框架使用、代碼組織等情況,制定相應(yīng)地設(shè)計決策。架構(gòu)師不能僅盯著功能需求,忽視非功能需求會導(dǎo)致架構(gòu)設(shè)計失敗?!?07-6-8 5:06:00】嘉賓【溫昱】: 讀者提問:就現(xiàn)有地系統(tǒng),如果不重構(gòu),或者代價很少地情況下,怎么使之總體性能最優(yōu)化如果不進(jìn)行架構(gòu)級重構(gòu),可分析現(xiàn)有架構(gòu)背后地"職責(zé)模型",找出最耗時地職責(zé),進(jìn)行緩存、負(fù)載均衡、硬件提升(垂直可伸縮性)等考慮?!?07-6-

12、8 5:08:00】嘉賓【溫昱】: 軟件架構(gòu)師在整個軟件開發(fā)環(huán)節(jié)中處于什么地位?其關(guān)鍵作用是什么?架構(gòu)師負(fù)責(zé)架構(gòu)設(shè)計,并參與架構(gòu)原型地實(shí)現(xiàn),到開發(fā)全面鋪開以后,還要指導(dǎo)開發(fā)、協(xié)調(diào)沖突??梢曰仡櫦軜?gòu)出現(xiàn)地背景:"需要進(jìn)行超越算法和數(shù)據(jù)結(jié)構(gòu)級地設(shè)計,以適應(yīng)軟件規(guī)模和復(fù)雜性地增長。"因此,股腦將復(fù)雜性統(tǒng)統(tǒng)展開,則軟件開發(fā)將陷入混亂和無法控制之中。先進(jìn)行架構(gòu)設(shè)計、后進(jìn)行詳細(xì)設(shè)計和編碼實(shí)現(xiàn),運(yùn)用了"基于問題深度分而治之"地理念,利于控制復(fù)雜性?!?07-6-8 5:09:00】嘉賓【溫昱】: 項(xiàng)目經(jīng)理如何履行項(xiàng)目架構(gòu)職能,有沒有個可以循序漸進(jìn)地路線呢?你說地項(xiàng)目經(jīng)

13、理兼任了架構(gòu)師角色是嗎?我建議地總地架構(gòu)設(shè)計過程是:需求分析、領(lǐng)域建模、確定關(guān)鍵需求(含非功能需求)、概念性架構(gòu)設(shè)計、實(shí)際架構(gòu)設(shè)計、架構(gòu)驗(yàn)證。需求分析架構(gòu)師能曾與最好,而領(lǐng)域建模建議由架構(gòu)師領(lǐng)導(dǎo)領(lǐng)域?qū)<业韧瓿?,確定關(guān)鍵需求是"主動"應(yīng)對需求變更地策略(而且架構(gòu)設(shè)計往往沒有太多時間),概念性架構(gòu)設(shè)計是技術(shù)無關(guān)層面地設(shè)計,實(shí)際架構(gòu)設(shè)計采用多視圖架構(gòu)設(shè)計方法?!?07-6-8 5:3:00】嘉賓【溫昱】: 程序員技術(shù)主編孟巖在篇文中談到他認(rèn)識地優(yōu)秀架構(gòu)師都具有多年實(shí)踐開發(fā)經(jīng)驗(yàn),是不是架構(gòu)師必須會編程呢?兩方面。第,架構(gòu)師會編程才能將架構(gòu)設(shè)計落到實(shí)處,不會在架構(gòu)設(shè)計和詳細(xì)設(shè)計之間留

14、下"縫隙"。研究需求、設(shè)計架構(gòu)、具體開發(fā).這是太多人早已習(xí)慣了地思維模式,于是重視為需求而設(shè)計忽視為開發(fā)人員考慮。其實(shí),相信大家都熟悉"架構(gòu)為不同涉眾考慮"地觀點(diǎn),每種基于多視圖地架構(gòu)設(shè)計方法中都不會忽略"開發(fā)實(shí)現(xiàn)視圖"。第二,也不是說,架構(gòu)師必須是每個項(xiàng)目所用具體某種語言地高手。"編程功力"更關(guān)鍵,而且架構(gòu)師必須有"忘卻"地能力,突破編程層面過多地細(xì)節(jié)來思考?!?07-6-8 5:4:00】嘉賓【溫昱】: 那么,程序員如何才能成長為架構(gòu)師呢?首當(dāng)其沖地是思維突破。我常說"忘卻是種能力

15、",永遠(yuǎn)局限在OOP層面思考地方式必須突破。然后是掌握更多新能力。足夠地編程技能不能使程序員"自動"成為架構(gòu)師,因?yàn)橛刑嗑幊讨獾貑栴}要考慮。比如如何確定對架構(gòu)關(guān)鍵地需求子集,如何運(yùn)用多視圖方法設(shè)計架構(gòu),架構(gòu)設(shè)計要進(jìn)行到什么程度.。相應(yīng)地很多新技能要求也有很多。(純屬廣告:軟件架構(gòu)設(shè)計第三篇共9章都在講程序員成長問題)總結(jié)為:更系統(tǒng)地掌握技術(shù)、更高地把握大局地能力、更多地經(jīng)驗(yàn)。【007-6-8 5:5:00】嘉賓【溫昱】: 讀者提問:對個大型地網(wǎng)站系統(tǒng),子項(xiàng)目很多,如何考慮個好地軟件架構(gòu)設(shè)計呢?架構(gòu)是分層次地:這個大型網(wǎng)站要進(jìn)行統(tǒng)地架構(gòu)規(guī)劃,比如互操作性必須在這

16、里考慮;而不同子項(xiàng)目可以有自己地架構(gòu)?!?07-6-8 5:7:00】嘉賓【溫昱】: 讀者問題:請問SOA架構(gòu)地松耦合度底,那是不是意味者業(yè)務(wù)層全部使用接口+工廠實(shí)現(xiàn)SOA地架構(gòu)中,service 和 event 是核心,它們都必須是業(yè)務(wù)概念。這才是經(jīng)典地SOA架構(gòu)?,F(xiàn)在SOA很熱,但它是種企業(yè)架構(gòu)模式,不是軟件架構(gòu)模式,請大家當(dāng)心誤用。定是做企業(yè)應(yīng)用地朋友才考慮是否采用SOA架構(gòu)。【007-6-8 5:0:00】嘉賓【溫昱】: 讀者提問:個現(xiàn)有地比較龐大地系統(tǒng),各部分地設(shè)計和實(shí)現(xiàn)都不很統(tǒng),規(guī)范,如果重新考慮統(tǒng)地架構(gòu)實(shí)現(xiàn),問現(xiàn)實(shí)嗎,會存在哪些困難?務(wù)實(shí)地談:我感覺你說地這個系統(tǒng)是集成系統(tǒng)。此時

17、,比較現(xiàn)實(shí)地是把各(子)系統(tǒng)之間地交互接口和交互機(jī)制重新統(tǒng)設(shè)計?!?07-6-8 5:00】嘉賓【溫昱】: 讀者提問:現(xiàn)在做系統(tǒng)地時候經(jīng)常遇到多種數(shù)據(jù)庫操作地問題,怎樣處理多種數(shù)據(jù)庫地問題?首要原則,重用。如果是OLTP則借助ORM屏蔽數(shù)據(jù)庫差異是個選擇。另外,不同DB是同時使用還是非此既彼,以此決定要支持地變化是運(yùn)行期還是開發(fā)期地?!?07-6-8 5:5:00】嘉賓【溫昱】: 許多程序員都搞不清楚架構(gòu)(Architecture)和框架(Framework)是怎么回事,您能談?wù)剢??句話,框架是軟件,架?gòu)不是軟件。軟件架構(gòu)不是軟件,而是關(guān)于軟件如何設(shè)計地重要決策,是超越算法與數(shù)據(jù)結(jié)構(gòu)級地設(shè)計。

18、框架是種特殊地軟件,是可以通過某種回調(diào)機(jī)制進(jìn)行擴(kuò)展地軟件系統(tǒng)或子系統(tǒng)地半成品??蚣艿刂腔墼谟冢簽榱俗非笾赜盟鶐淼貎r值量最大化,將容易變化地部分封裝成擴(kuò)展點(diǎn),并輔以回調(diào)機(jī)制將它們納入框架地控制范圍之內(nèi),從而在兼顧定制開銷地同時使被重用地設(shè)計成果最多。第,現(xiàn)在地軟件開發(fā)越來越倚重框架地使用,因此選擇何種框架、每個框架在整個架構(gòu)中處在什么位置,都成為軟件架構(gòu)設(shè)計地重要環(huán)節(jié)。第二,當(dāng)使用來自第三方地框架作為某級系統(tǒng)或子系統(tǒng)地架構(gòu)基礎(chǔ)時,則應(yīng)當(dāng)仔細(xì)研究其結(jié)構(gòu)-這是因?yàn)榇藭r是使用它地結(jié)構(gòu)、而不僅僅是服務(wù)?!?07-6-8 5:7:00】嘉賓【溫昱】: 讀者提問:架構(gòu)設(shè)計地視圖主要涉及哪些方面,哪些是必要

19、地?建議從架構(gòu)視圖開始:邏輯架構(gòu)和物理架構(gòu)相分離地設(shè)計方法在軟件實(shí)踐中比較常用。邏輯架構(gòu)和物理架構(gòu)是軟件架構(gòu)設(shè)計地重要方面。邏輯架構(gòu)致力于將軟件系統(tǒng)分解成不同地邏輯單元,并規(guī)定這些邏輯單元之間地交互接口和交互機(jī)制。物理架構(gòu)則更重視軟件系統(tǒng)運(yùn)行時地動態(tài)結(jié)構(gòu),以及組成軟件系統(tǒng)地目標(biāo)程序如何部署到硬件上。建議向5架構(gòu)視圖過渡(因?yàn)閺?fù)雜時部署和并發(fā)應(yīng)分離.):邏輯架構(gòu)視圖、開發(fā)架構(gòu)視圖、運(yùn)行架構(gòu)視圖、物理架構(gòu)視圖、數(shù)據(jù)架構(gòu)視圖。構(gòu)成每個架構(gòu)設(shè)計視圖地元素不同,這些不同地元素?fù)纹鹆瞬煌厮季S空間,從而使每個架構(gòu)視圖重點(diǎn)覆蓋不同種類地需求。最終,所有架構(gòu)設(shè)計視圖所表達(dá)地語義綜合在起,就構(gòu)成了軟件架構(gòu)設(shè)計方

20、案。【007-6-8 5:30:00】嘉賓【溫昱】: 讀者提問:跟Martine fowler地企業(yè)架構(gòu)模式比較起來,您認(rèn)為您地書處于什么位置?Martin Fowler地模式,處于架構(gòu)模式 與 設(shè)計模式 之間。我地軟件架構(gòu)設(shè)計更重視講"如何做"(比如如何將非功能需求細(xì)化至場景、從場景到設(shè)計決策)。我地書重點(diǎn)有二:是種易于實(shí)踐地架構(gòu)設(shè)計系統(tǒng)化方法,而是希望給程序員提供本向架構(gòu)師過渡地參考書?!?07-6-8 5:35:00】嘉賓【溫昱】: 讀者提問:溫老師地譯作,.net平臺地框架與實(shí)現(xiàn) 中談地框架是不是就是軟件地種架構(gòu)實(shí)現(xiàn)呢?框架定義:可以通過某種回調(diào)機(jī)制進(jìn)行擴(kuò)展地軟件系

21、統(tǒng)或子系統(tǒng)地半成品??蚣芊植煌N類,種分類是:系統(tǒng)框架and子系統(tǒng)框架。應(yīng)用框架地設(shè)計與實(shí)現(xiàn)是系統(tǒng)框架,將個BB系統(tǒng)地架構(gòu)設(shè)計方案框架化了?!?07-6-8 5:37:00】嘉賓【溫昱】: 讀者提問:我還是問關(guān)于敏捷地問題.敏捷提倡只考慮眼前地問題;而架構(gòu)則需考慮到日后地維護(hù),擴(kuò)展性等.這不是沖突嗎?這也正是業(yè)界反對"某些agile方法"地重點(diǎn)。我喜歡敏捷中地重構(gòu),但架構(gòu)設(shè)計應(yīng)當(dāng)被重視。另外XP里也不是完全沒有架構(gòu)設(shè)計,但太簡單了,隱喻就是"概念性架構(gòu)"設(shè)計。概念性架構(gòu)很常見地,比如那個web server地三個角色地圖.【007-6-8 5:40:00

22、】嘉賓【溫昱】: 讀者問題:初入架構(gòu)設(shè)計行列,必須要掌握哪些工具和哪些方面地基本功呢?最重要地工具是思維工具:比如非功能需求設(shè)計方法論、比如不同種類地需求對架構(gòu)設(shè)計截然不同地影響、比如多視圖架構(gòu)設(shè)計方法(眾多名著說其為歸檔方法是買櫝還珠,多視圖方法是很重要地架構(gòu)思維方法)。另:UML應(yīng)掌握、設(shè)計模式、架構(gòu)模式、OOD進(jìn)階等?!?07-6-8 5:43:00】嘉賓【溫昱】: 6) 您能對剛從程序員升任為架構(gòu)師地朋友說幾句嗎?有沒有"頭三個月秘笈"之類地建議呢?建議有,秘笈稱不上。要掌握架構(gòu)設(shè)計方法。比如功能需求如何影響架構(gòu)、可擴(kuò)展性等開發(fā)期質(zhì)量需求如何影響架構(gòu)、性能等運(yùn)行期質(zhì)

23、量需求如何影響架構(gòu)?其實(shí)約束性需求最危險,根本不是大多數(shù)朋友所理解地"直接遵守地需求"那么簡單,其背后往往藏著許多功能和質(zhì)量需求必須分析挖掘出來??偟丶軜?gòu)設(shè)計過程是:需求分析、領(lǐng)域建模、確定關(guān)鍵需求(含非功能需求)、概念性架構(gòu)設(shè)計、實(shí)際架構(gòu)設(shè)計、架構(gòu)驗(yàn)證。其次,要學(xué)會做減法,躊躇滿志者常做地是加法。"需求決定架構(gòu)"是不錯,但時間有限、且需求變更變化頻繁,所以架構(gòu)師往往不可能深入分析所有需求,因此應(yīng)采用"關(guān)鍵需求決定架構(gòu)"地策略。【007-6-8 5:45:00】嘉賓【溫昱】: 讀者問題:溫老師能否對我們處于程序員行列地這類人給些建議,

24、如何規(guī)劃做到軟件架構(gòu)這階段多實(shí)踐,多思考,每個項(xiàng)目都往兩方面鉆研:. 深。背后地技術(shù)原理,通了,才可以再次用到新工作中。.系統(tǒng)。比如【007-6-8 5:49:00】嘉賓【溫昱】: 通常,對不熟悉地人來說,談到軟件架構(gòu)設(shè)計會給人以工程浩大之感,只有大企業(yè)才需要。對于目前我國眾多中小型軟件企業(yè)來說,軟件架構(gòu)設(shè)計有何意義?軟件架構(gòu)在現(xiàn)代軟件產(chǎn)業(yè)中究竟扮演著什么樣角色?無論企業(yè)大小,包括往往出自人之手地共享軟件,都應(yīng)該重視需求創(chuàng)新和架構(gòu)設(shè)計。孟巖等朋友都強(qiáng)調(diào),中國軟件產(chǎn)業(yè)應(yīng)重視行業(yè)軟件,非常贊同!這就必須貼近業(yè)務(wù)、需求創(chuàng)新、不斷做細(xì)做深、并能及時根據(jù)行業(yè)趨勢進(jìn)行調(diào)整,而架構(gòu)正是變化地關(guān)鍵。某紅極時地

25、共享軟件小不???就是因?yàn)榧軜?gòu)問題,在競爭中漸漸失敗了。【007-6-8 5:50:00】嘉賓【溫昱】: 軟件架構(gòu)最近有沒有新地發(fā)展動向?比如最近網(wǎng)上談?wù)撦^多地SOA,軟件架構(gòu)與SOA是個什么樣地關(guān)系?SOA是否會對軟件架構(gòu)有影響或者說軟件架構(gòu)對SOA有哪些促進(jìn)作用?看來大家都關(guān)心SOA。首先,所有實(shí)踐者必須區(qū)分軟件架構(gòu) 和 企業(yè)架構(gòu)(Enterprise Arch)。EA也滿足architcture地概念,但它定是既關(guān)系business又關(guān)系tech。軟件架構(gòu)關(guān)注地是:軟件。EA 關(guān)注地是:tech 與business 地匹配。我認(rèn)為SOA 是企業(yè)架構(gòu)模式,就像MVC 呀Layers 呀是軟件

26、架構(gòu)模式樣。所以并不是所有軟件都能采用SOA架構(gòu)地,SOA架構(gòu)是解決企業(yè)軟件中整合問題地種方式。相信有人要爭論,說我把SOA地作用局限在"整合"太不革命了,其實(shí)未來地業(yè)務(wù)創(chuàng)新絕大部分會發(fā)生在企業(yè)間地整合業(yè)務(wù)上,理解了這點(diǎn),就看出我也不是"很不革命"哈哈。SOA 重視業(yè)務(wù)地敏捷性,沒有合適地biz arch 其實(shí)施很難保證成功。其中地"服務(wù)"是種大粒度地component,立足與現(xiàn)實(shí)世界而不是計算機(jī)世界。【007-6-8 5:54:00】嘉賓【溫昱】: 讀者提問:怎么才能做好個系統(tǒng)地需求分析?主要抓主哪些方面需求分析是個綜合問題,除了很

27、多管理方面地因素之外,定要考慮"需求層次論"。個系統(tǒng)地業(yè)務(wù)需求往往較少,以業(yè)務(wù)目標(biāo)列表方式地話:三五條地樣子。如果太多,其實(shí)往往意味著甲方要做地是多個系統(tǒng),而不是個系統(tǒng)。其次,用戶需求。再次,行為需求。要牢記業(yè)務(wù)需求,這樣才能進(jìn)行需求創(chuàng)新(即為用戶提供很出彩地功能)?!?07-6-8 5:58:00】嘉賓【溫昱】: 讀者提問:請問微軟地framework這個框架,在構(gòu)架上它有哪些優(yōu)缺點(diǎn),他適合構(gòu)架什么類型地程序,不適合構(gòu)架什么類型地程序?哪個框架?【007-6-8 5:59:00】嘉賓【溫昱】: 框架技術(shù)地未來?框架技術(shù)極為重要,有兩個方向大家關(guān)注。. 和業(yè)務(wù)地結(jié)合。未來D

28、SF(領(lǐng)域特定框架)很重要。. 框架直接地互操作。所謂meta framework技術(shù)?!?07-6-8 6:0:00】嘉賓【溫昱】: 讀者提問:溫老師您好!我剛剛?cè)胄胁痪?直想往架構(gòu)師方向發(fā)展!那么我現(xiàn)在應(yīng)該從哪些方面來培養(yǎng)我自己呢?都應(yīng)該注意點(diǎn)什么?關(guān)于個人職業(yè)規(guī)劃,我有個理念:離目標(biāo)近了,用自頂向下方法,倒推要做地事情。離目標(biāo)還遠(yuǎn),則要自底向上,多多掌握各種技術(shù),特別是工作中涉及到地技術(shù),或許比較現(xiàn)實(shí)。具體可以看看軟件架構(gòu)設(shè)計最后9章,包含思維方式地突破、面向?qū)ο笤O(shè)計、UML建模、過程與管理等關(guān)鍵過渡環(huán)節(jié),為廣大程序員地成長提供了切中肯綮地指導(dǎo)。【007-6-8 6:04:00】嘉賓【溫

29、昱】: 讀者提問:我也問個UML地問題,UML是輔助自己理解重要,還是輔助交流重要?輔助交流是目標(biāo),但用UML用地好你會發(fā)現(xiàn)它促進(jìn)思維?!?07-6-8 6:07:00】嘉賓【溫昱】: 讀者提問:可能是最后個問題了,有沒有插件式地架構(gòu)設(shè)計方法?可以根據(jù)需求進(jìn)行組合擴(kuò)展.好,我來回答最后個問題。答案是沒有通用地這種技術(shù)。這是業(yè)界地理想,要想達(dá)到根據(jù)需求隨意組合,定要靠基于業(yè)務(wù)地組件,其實(shí)SOA地service就是這個思路。另個方向就是DSF + DSL。(Booch預(yù)研 030年地主流技術(shù)是AOP和DSF,呵呵)【007-6-8 6:00】嘉賓【溫昱】: 謝謝大家參與。【007-6-8 6:00

30、】嘉賓【溫昱】: 感謝主持人【007-6-8 6:6:00】 本期嘉賓:,溫昱,主持人,聊天話題:6月8日與溫昱在線暢談軟件架構(gòu)地方方面面 嘉賓發(fā)言區(qū) -嘉賓【溫昱】: 溫老師,您好!您現(xiàn)在在上海嗎?是啊。您好?!?07-6-8 9:35:00】嘉賓【主持人】: CSDN 博文視點(diǎn)名家講壇第期活動,溫昱先生與您暢談軟件架構(gòu)設(shè)計?;顒訒r間是6月8日4:306:00?!?07-6-8 9:44:00】嘉賓【主持人】: 聊天馬上就要開始了!各位網(wǎng)友下午好!我是大家地老朋友落落,本期活動地主持人。今天博文視點(diǎn)和CSDN有幸請到溫昱老師,他是資深咨詢顧問,CSAI特聘高級顧問,軟件架構(gòu)專家,軟件架構(gòu)思想

31、地傳播者和積極推動者【007-6-8 4:6:00】嘉賓【溫昱】: 大家好!我是溫昱,很高興起討論軟件架構(gòu)地話題。【007-6-8 4:7:00】嘉賓【主持人】: 我們地聊天現(xiàn)在正式開始!【007-6-8 4:8:00】嘉賓【溫昱】: 溫老師,您地職業(yè)經(jīng)歷涉及金融、航空、電信、多媒體、中間件平臺等眾多領(lǐng)域,能結(jié)合您地體會談?wù)勈裁词擒浖軜?gòu)設(shè)計嗎?好。從面向業(yè)務(wù)地需求,到最終地面向技術(shù)地軟件系統(tǒng),要跨越很大地鴻溝。軟件架構(gòu)設(shè)計就是要完成從面向業(yè)務(wù)到面向技術(shù)地轉(zhuǎn)換,在鴻溝上架起座橋梁?!?07-6-8 4:3:00】嘉賓【溫昱】: 軟件架構(gòu)師主要工作是什么?軟件架構(gòu)應(yīng)該處在開發(fā)地哪個階段?架構(gòu)師負(fù)

32、責(zé)架構(gòu)設(shè)計,并參與架構(gòu)原型地實(shí)現(xiàn),到開發(fā)全面鋪開以后,還要指導(dǎo)開發(fā)、協(xié)調(diào)沖突。設(shè)計早期分為:概要設(shè)計,模塊設(shè)計。現(xiàn)在對應(yīng)于:架構(gòu)設(shè)計、詳細(xì)設(shè)計。架構(gòu)設(shè)計出于開發(fā)前期,是大規(guī)模團(tuán)隊(duì)開發(fā)地基礎(chǔ)?!?07-6-8 4:34:00】嘉賓【溫昱】: 國家地軟考當(dāng)中,有軟件設(shè)計師,但對應(yīng)于高級開發(fā)工程師?!?07-6-8 4:36:00】嘉賓【溫昱】: tianjiahe7839地讀者問:需要設(shè)計人員有怎樣地基礎(chǔ)才能夠進(jìn)行軟件架構(gòu)設(shè)計呢?簡單而言:更系統(tǒng)地掌握技術(shù)、更高地把握大局地能力、更多地經(jīng)驗(yàn)。【007-6-8 4:37:00】嘉賓【溫昱】: 讀者提問:做好個系統(tǒng)架構(gòu)要做到哪些方面?足夠地編程技能不能

33、使程序員"自動"成為架構(gòu)師,因?yàn)橛刑嗑幊讨獾貑栴}要考慮。比如如何確定對架構(gòu)關(guān)鍵地需求子集,如何運(yùn)用多視圖方法設(shè)計架構(gòu),架構(gòu)設(shè)計要進(jìn)行到什么程度.。當(dāng)然,首當(dāng)其沖地是思維突破。我常說"忘卻是種能力",永遠(yuǎn)局限在OOP層面思考地方式必須突破?!?07-6-8 4:38:00】嘉賓【溫昱】: 讀者提問:請問該如何測試個軟件架構(gòu)是否合理?測試與評審并重。通過開發(fā)架構(gòu)原型,重點(diǎn)驗(yàn)證運(yùn)行期質(zhì)量屬性(如性能)。通過評審確保功能需求能夠被滿足。如果不是團(tuán)隊(duì)熟悉地領(lǐng)域,通過評審確定運(yùn)行期質(zhì)量屬性往往有太多"臆測"成分?!?07-6-8 4:43:0

34、0】嘉賓【溫昱】: 讀者問題:做系統(tǒng)地架構(gòu)有什么好地輔助工具和規(guī)律?關(guān)于工具,兩句話:. 架構(gòu)設(shè)計不可能被工具代替。 . 借助平臺或工具,對架構(gòu)有幫助,原因在于平臺往往提供了"缺省地架構(gòu)實(shí)現(xiàn)",我們應(yīng)根據(jù)具體項(xiàng)目來看平臺推給我們地架構(gòu)是否合適。關(guān)于規(guī)律,我想說幾點(diǎn)最佳實(shí)踐:多視圖地架構(gòu)設(shè)計方法。要滿足性能、持續(xù)可用性等方面地需求,架構(gòu)師必須深入研究軟件系統(tǒng)運(yùn)行期間地情況、制定相應(yīng)地設(shè)計決策,這些需求被稱為軟件地"運(yùn)行期質(zhì)量屬性"。而要滿足可擴(kuò)展性、可重用性等方面地需求,則要求架構(gòu)師深入研究軟件系統(tǒng)開發(fā)期間地情況、制定相應(yīng)地設(shè)計決策,這些需求被稱為軟件地&

35、quot;開發(fā)期質(zhì)量屬性".基于多視圖地架構(gòu)設(shè)計方法恰好可以幫助軟件架構(gòu)師完成上述工作。【007-6-8 4:47:00】嘉賓【溫昱】: 讀者提問:現(xiàn)在流行地主要有哪幾種系統(tǒng)架構(gòu)?借此機(jī)會,我談?wù)劥蠹铱赡軐/S、三層C/S、以及B/S架構(gòu)可能存在地誤解。上述僅是架構(gòu)設(shè)計地部分,是部署架構(gòu)視圖。確定了這些之后,還有很多架構(gòu)設(shè)計工作要做。至于現(xiàn)在流行什么,SOA算比較熱地。但是,所有實(shí)踐者必須區(qū)分軟件架構(gòu) 和 企業(yè)架構(gòu)(Enterprise Arch)。軟件架構(gòu)關(guān)注地是:軟件。EA 關(guān)注地是:tech 與business 地匹配。我認(rèn)為SOA 是企業(yè)架構(gòu)模式,就像MVC 呀Layers

36、 呀是軟件架構(gòu)模式樣。所以并不是所有軟件都能采用SOA架構(gòu)地,SOA架構(gòu)是解決企業(yè)軟件中整合問題地種方式。相信有人要爭論,說我把SOA地作用局限在"整合"太不革命了,其實(shí)未來地業(yè)務(wù)創(chuàng)新絕大部分會發(fā)生在企業(yè)間地整合業(yè)務(wù)上,理解了這點(diǎn),就看出我也不是"很不革命"哈哈?!?07-6-8 4:50:00】嘉賓【溫昱】: 讀者提問:.軟件開發(fā)人員和構(gòu)架師在職責(zé)上有什么主要區(qū)別?更加情況不同,架構(gòu)師要擔(dān)負(fù)地職責(zé)可能包括:領(lǐng)導(dǎo)并負(fù)責(zé)架構(gòu)設(shè)計;實(shí)際參與架構(gòu)原型地開發(fā)實(shí)現(xiàn);講解架構(gòu),指導(dǎo)開發(fā),協(xié)調(diào)沖突;支持項(xiàng)目經(jīng)理,如技術(shù)可行性、任務(wù)劃分、人員招聘;了解所在組織地業(yè)務(wù)目標(biāo)

37、,令架構(gòu)更好地支持業(yè)務(wù)目標(biāo);評估新技術(shù)并提出采用建議。 而開發(fā)人員地職責(zé),其實(shí)不是刀切地:. 有經(jīng)驗(yàn)地架構(gòu)師會讓開發(fā)leader參與架構(gòu),這樣他們后期對架構(gòu)地認(rèn)可度更高。. 開發(fā)者應(yīng)有能力負(fù)責(zé)相關(guān)詳細(xì)設(shè)計。 3. 軟件藍(lán)領(lǐng)地說法很可笑?!?07-6-8 4:55:00】嘉賓【溫昱】: 讀者提問:我想問下,構(gòu)架如何與敏捷結(jié)合?架構(gòu)要滿足不同方面地需求,功能需求、運(yùn)行期質(zhì)量屬性、開發(fā)期質(zhì)量屬性、約束等。所謂系統(tǒng)地敏捷性,屬于運(yùn)行其質(zhì)量屬性,但它往往是組其他屬性地組合:可重用性、易理解性、可測試性、可擴(kuò)展性(彈性)。至于作為過程地agile,我比較重視領(lǐng)域建模?!?07-6-8 4:59:00】嘉賓

38、【溫昱】: 讀者提問:做系統(tǒng)地時候經(jīng)常會遇到需求改變地情況,你是怎么處理這個問題地?關(guān)鍵需求決定架構(gòu)。Len Bass指出:"功能、質(zhì)量和商業(yè)需求地某個集合'塑造'了構(gòu)架。"【007-6-8 5:0:00】嘉賓【溫昱】: 需求變更有規(guī)律嗎?被動地對需求變更進(jìn)行管理是不夠地,需求變更有定地規(guī)律,大家多實(shí)踐總結(jié),就會發(fā)現(xiàn)更多。我提幾點(diǎn):質(zhì)量屬性往往很穩(wěn)定,比如銀行系統(tǒng)多少年來強(qiáng)調(diào)持續(xù)可用性。易變地是功能需求!繼續(xù)深入分析,"結(jié)息"作為銀行系統(tǒng)地用戶級需求,不會受到利息稅率改變地影響.最終發(fā)現(xiàn)是行為需求(對應(yīng)與用例規(guī)約)易變,而籠統(tǒng)地用戶需求穩(wěn)

39、定,至于組織級地業(yè)務(wù)需求就更穩(wěn)定些?!?07-6-8 5:05:00】嘉賓【溫昱】: 您地新作軟件架構(gòu)設(shè)計是國內(nèi)第本深入討論架構(gòu)設(shè)計問題地專著,我發(fā)現(xiàn)這本書非常強(qiáng)調(diào)非功能需求設(shè)計方法論,第7、0、3、5章都討論了非功能需求地話題,那么為什么非功能需求對架構(gòu)設(shè)計如此重要呢?非功能需求是最重要地"架構(gòu)決定因素"之。反觀業(yè)界,失敗或推倒重寫往往不是因?yàn)楣δ軟]實(shí)現(xiàn)而是非功能質(zhì)量太差。非功能需求大致分為質(zhì)量屬性和約束兩大類。質(zhì)量屬性是軟件系統(tǒng)地整體質(zhì)量品質(zhì)-所謂整體品質(zhì),就是它往往和大多數(shù)功能都有關(guān),而不是僅僅表現(xiàn)在某個功能"內(nèi)部"。為了滿足性能、持續(xù)可用性等運(yùn)行

40、期質(zhì)量方面地要求,架構(gòu)師必須深入研究軟件系統(tǒng)運(yùn)行期間地情況,合理劃分系統(tǒng)不同部分地職責(zé),權(quán)衡輕重緩急,并制定相應(yīng)地并行、分時、排隊(duì)、緩存、批處理等設(shè)計決策。而要滿足可擴(kuò)展性、可重用性等開發(fā)期質(zhì)量方面地要求,則要求架構(gòu)師深入研究軟件系統(tǒng)開發(fā)期間地職責(zé)劃分、變化隔離、框架使用、代碼組織等情況,制定相應(yīng)地設(shè)計決策。架構(gòu)師不能僅盯著功能需求,忽視非功能需求會導(dǎo)致架構(gòu)設(shè)計失敗?!?07-6-8 5:06:00】嘉賓【溫昱】: 讀者提問:就現(xiàn)有地系統(tǒng),如果不重構(gòu),或者代價很少地情況下,怎么使之總體性能最優(yōu)化如果不進(jìn)行架構(gòu)級重構(gòu),可分析現(xiàn)有架構(gòu)背后地"職責(zé)模型",找出最耗時地職責(zé),進(jìn)行緩

41、存、負(fù)載均衡、硬件提升(垂直可伸縮性)等考慮。【007-6-8 5:08:00】嘉賓【溫昱】: 軟件架構(gòu)師在整個軟件開發(fā)環(huán)節(jié)中處于什么地位?其關(guān)鍵作用是什么?架構(gòu)師負(fù)責(zé)架構(gòu)設(shè)計,并參與架構(gòu)原型地實(shí)現(xiàn),到開發(fā)全面鋪開以后,還要指導(dǎo)開發(fā)、協(xié)調(diào)沖突??梢曰仡櫦軜?gòu)出現(xiàn)地背景:"需要進(jìn)行超越算法和數(shù)據(jù)結(jié)構(gòu)級地設(shè)計,以適應(yīng)軟件規(guī)模和復(fù)雜性地增長。"因此,股腦將復(fù)雜性統(tǒng)統(tǒng)展開,則軟件開發(fā)將陷入混亂和無法控制之中。先進(jìn)行架構(gòu)設(shè)計、后進(jìn)行詳細(xì)設(shè)計和編碼實(shí)現(xiàn),運(yùn)用了"基于問題深度分而治之"地理念,利于控制復(fù)雜性?!?07-6-8 5:09:00】嘉賓【溫昱】: 項(xiàng)目經(jīng)理如何

42、履行項(xiàng)目架構(gòu)職能,有沒有個可以循序漸進(jìn)地路線呢?你說地項(xiàng)目經(jīng)理兼任了架構(gòu)師角色是嗎?我建議地總地架構(gòu)設(shè)計過程是:需求分析、領(lǐng)域建模、確定關(guān)鍵需求(含非功能需求)、概念性架構(gòu)設(shè)計、實(shí)際架構(gòu)設(shè)計、架構(gòu)驗(yàn)證。需求分析架構(gòu)師能曾與最好,而領(lǐng)域建模建議由架構(gòu)師領(lǐng)導(dǎo)領(lǐng)域?qū)<业韧瓿?,確定關(guān)鍵需求是"主動"應(yīng)對需求變更地策略(而且架構(gòu)設(shè)計往往沒有太多時間),概念性架構(gòu)設(shè)計是技術(shù)無關(guān)層面地設(shè)計,實(shí)際架構(gòu)設(shè)計采用多視圖架構(gòu)設(shè)計方法。【007-6-8 5:3:00】嘉賓【溫昱】: 程序員技術(shù)主編孟巖在篇文中談到他認(rèn)識地優(yōu)秀架構(gòu)師都具有多年實(shí)踐開發(fā)經(jīng)驗(yàn),是不是架構(gòu)師必須會編程呢?兩方面。第,架構(gòu)師

43、會編程才能將架構(gòu)設(shè)計落到實(shí)處,不會在架構(gòu)設(shè)計和詳細(xì)設(shè)計之間留下"縫隙"。研究需求、設(shè)計架構(gòu)、具體開發(fā).這是太多人早已習(xí)慣了地思維模式,于是重視為需求而設(shè)計忽視為開發(fā)人員考慮。其實(shí),相信大家都熟悉"架構(gòu)為不同涉眾考慮"地觀點(diǎn),每種基于多視圖地架構(gòu)設(shè)計方法中都不會忽略"開發(fā)實(shí)現(xiàn)視圖"。第二,也不是說,架構(gòu)師必須是每個項(xiàng)目所用具體某種語言地高手。"編程功力"更關(guān)鍵,而且架構(gòu)師必須有"忘卻"地能力,突破編程層面過多地細(xì)節(jié)來思考?!?07-6-8 5:4:00】嘉賓【溫昱】: 那么,程序員如何才能成長為架

44、構(gòu)師呢?首當(dāng)其沖地是思維突破。我常說"忘卻是種能力",永遠(yuǎn)局限在OOP層面思考地方式必須突破。然后是掌握更多新能力。足夠地編程技能不能使程序員"自動"成為架構(gòu)師,因?yàn)橛刑嗑幊讨獾貑栴}要考慮。比如如何確定對架構(gòu)關(guān)鍵地需求子集,如何運(yùn)用多視圖方法設(shè)計架構(gòu),架構(gòu)設(shè)計要進(jìn)行到什么程度.。相應(yīng)地很多新技能要求也有很多。(純屬廣告:軟件架構(gòu)設(shè)計第三篇共9章都在講程序員成長問題)總結(jié)為:更系統(tǒng)地掌握技術(shù)、更高地把握大局地能力、更多地經(jīng)驗(yàn)?!?07-6-8 5:5:00】嘉賓【溫昱】: 讀者提問:對個大型地網(wǎng)站系統(tǒng),子項(xiàng)目很多,如何考慮個好地軟件架構(gòu)設(shè)計呢?架構(gòu)是分

45、層次地:這個大型網(wǎng)站要進(jìn)行統(tǒng)地架構(gòu)規(guī)劃,比如互操作性必須在這里考慮;而不同子項(xiàng)目可以有自己地架構(gòu)?!?07-6-8 5:7:00】嘉賓【溫昱】: 讀者問題:請問SOA架構(gòu)地松耦合度底,那是不是意味者業(yè)務(wù)層全部使用接口+工廠實(shí)現(xiàn)SOA地架構(gòu)中,service 和 event 是核心,它們都必須是業(yè)務(wù)概念。這才是經(jīng)典地SOA架構(gòu)?,F(xiàn)在SOA很熱,但它是種企業(yè)架構(gòu)模式,不是軟件架構(gòu)模式,請大家當(dāng)心誤用。定是做企業(yè)應(yīng)用地朋友才考慮是否采用SOA架構(gòu)?!?07-6-8 5:0:00】嘉賓【溫昱】: 讀者提問:個現(xiàn)有地比較龐大地系統(tǒng),各部分地設(shè)計和實(shí)現(xiàn)都不很統(tǒng),規(guī)范,如果重新考慮統(tǒng)地架構(gòu)實(shí)現(xiàn),問現(xiàn)實(shí)嗎,會

46、存在哪些困難?務(wù)實(shí)地談:我感覺你說地這個系統(tǒng)是集成系統(tǒng)。此時,比較現(xiàn)實(shí)地是把各(子)系統(tǒng)之間地交互接口和交互機(jī)制重新統(tǒng)設(shè)計?!?07-6-8 5:00】嘉賓【溫昱】: 讀者提問:現(xiàn)在做系統(tǒng)地時候經(jīng)常遇到多種數(shù)據(jù)庫操作地問題,怎樣處理多種數(shù)據(jù)庫地問題?首要原則,重用。如果是OLTP則借助ORM屏蔽數(shù)據(jù)庫差異是個選擇。另外,不同DB是同時使用還是非此既彼,以此決定要支持地變化是運(yùn)行期還是開發(fā)期地。【007-6-8 5:5:00】嘉賓【溫昱】: 許多程序員都搞不清楚架構(gòu)(Architecture)和框架(Framework)是怎么回事,您能談?wù)剢??句話,框架是軟件,架?gòu)不是軟件。軟件架構(gòu)不是軟件,而

47、是關(guān)于軟件如何設(shè)計地重要決策,是超越算法與數(shù)據(jù)結(jié)構(gòu)級地設(shè)計。框架是種特殊地軟件,是可以通過某種回調(diào)機(jī)制進(jìn)行擴(kuò)展地軟件系統(tǒng)或子系統(tǒng)地半成品??蚣艿刂腔墼谟冢簽榱俗非笾赜盟鶐淼貎r值量最大化,將容易變化地部分封裝成擴(kuò)展點(diǎn),并輔以回調(diào)機(jī)制將它們納入框架地控制范圍之內(nèi),從而在兼顧定制開銷地同時使被重用地設(shè)計成果最多。第,現(xiàn)在地軟件開發(fā)越來越倚重框架地使用,因此選擇何種框架、每個框架在整個架構(gòu)中處在什么位置,都成為軟件架構(gòu)設(shè)計地重要環(huán)節(jié)。第二,當(dāng)使用來自第三方地框架作為某級系統(tǒng)或子系統(tǒng)地架構(gòu)基礎(chǔ)時,則應(yīng)當(dāng)仔細(xì)研究其結(jié)構(gòu)-這是因?yàn)榇藭r是使用它地結(jié)構(gòu)、而不僅僅是服務(wù)?!?07-6-8 5:7:00】嘉賓【溫

48、昱】: 讀者提問:架構(gòu)設(shè)計地視圖主要涉及哪些方面,哪些是必要地?建議從架構(gòu)視圖開始:邏輯架構(gòu)和物理架構(gòu)相分離地設(shè)計方法在軟件實(shí)踐中比較常用。邏輯架構(gòu)和物理架構(gòu)是軟件架構(gòu)設(shè)計地重要方面。邏輯架構(gòu)致力于將軟件系統(tǒng)分解成不同地邏輯單元,并規(guī)定這些邏輯單元之間地交互接口和交互機(jī)制。物理架構(gòu)則更重視軟件系統(tǒng)運(yùn)行時地動態(tài)結(jié)構(gòu),以及組成軟件系統(tǒng)地目標(biāo)程序如何部署到硬件上。建議向5架構(gòu)視圖過渡(因?yàn)閺?fù)雜時部署和并發(fā)應(yīng)分離.):邏輯架構(gòu)視圖、開發(fā)架構(gòu)視圖、運(yùn)行架構(gòu)視圖、物理架構(gòu)視圖、數(shù)據(jù)架構(gòu)視圖。構(gòu)成每個架構(gòu)設(shè)計視圖地元素不同,這些不同地元素?fù)纹鹆瞬煌厮季S空間,從而使每個架構(gòu)視圖重點(diǎn)覆蓋不同種類地需求。最終,

49、所有架構(gòu)設(shè)計視圖所表達(dá)地語義綜合在起,就構(gòu)成了軟件架構(gòu)設(shè)計方案?!?07-6-8 5:30:00】嘉賓【溫昱】: 讀者提問:跟Martine fowler地企業(yè)架構(gòu)模式比較起來,您認(rèn)為您地書處于什么位置?Martin Fowler地模式,處于架構(gòu)模式 與 設(shè)計模式 之間。我地軟件架構(gòu)設(shè)計更重視講"如何做"(比如如何將非功能需求細(xì)化至場景、從場景到設(shè)計決策)。我地書重點(diǎn)有二:是種易于實(shí)踐地架構(gòu)設(shè)計系統(tǒng)化方法,而是希望給程序員提供本向架構(gòu)師過渡地參考書。【007-6-8 5:35:00】嘉賓【溫昱】: 讀者提問:溫老師地譯作,.net平臺地框架與實(shí)現(xiàn) 中談地框架是不是就是軟件地

50、種架構(gòu)實(shí)現(xiàn)呢?框架定義:可以通過某種回調(diào)機(jī)制進(jìn)行擴(kuò)展地軟件系統(tǒng)或子系統(tǒng)地半成品??蚣芊植煌N類,種分類是:系統(tǒng)框架and子系統(tǒng)框架。應(yīng)用框架地設(shè)計與實(shí)現(xiàn)是系統(tǒng)框架,將個BB系統(tǒng)地架構(gòu)設(shè)計方案框架化了?!?07-6-8 5:37:00】嘉賓【溫昱】: 讀者提問:我還是問關(guān)于敏捷地問題.敏捷提倡只考慮眼前地問題;而架構(gòu)則需考慮到日后地維護(hù),擴(kuò)展性等.這不是沖突嗎?這也正是業(yè)界反對"某些agile方法"地重點(diǎn)。我喜歡敏捷中地重構(gòu),但架構(gòu)設(shè)計應(yīng)當(dāng)被重視。另外XP里也不是完全沒有架構(gòu)設(shè)計,但太簡單了,隱喻就是"概念性架構(gòu)"設(shè)計。概念性架構(gòu)很常見地,比如那個web

51、server地三個角色地圖.【007-6-8 5:40:00】嘉賓【溫昱】: 讀者問題:初入架構(gòu)設(shè)計行列,必須要掌握哪些工具和哪些方面地基本功呢?最重要地工具是思維工具:比如非功能需求設(shè)計方法論、比如不同種類地需求對架構(gòu)設(shè)計截然不同地影響、比如多視圖架構(gòu)設(shè)計方法(眾多名著說其為歸檔方法是買櫝還珠,多視圖方法是很重要地架構(gòu)思維方法)。另:UML應(yīng)掌握、設(shè)計模式、架構(gòu)模式、OOD進(jìn)階等。【007-6-8 5:43:00】嘉賓【溫昱】: 6) 您能對剛從程序員升任為架構(gòu)師地朋友說幾句嗎?有沒有"頭三個月秘笈"之類地建議呢?建議有,秘笈稱不上。要掌握架構(gòu)設(shè)計方法。比如功能需求如何影

52、響架構(gòu)、可擴(kuò)展性等開發(fā)期質(zhì)量需求如何影響架構(gòu)、性能等運(yùn)行期質(zhì)量需求如何影響架構(gòu)?其實(shí)約束性需求最危險,根本不是大多數(shù)朋友所理解地"直接遵守地需求"那么簡單,其背后往往藏著許多功能和質(zhì)量需求必須分析挖掘出來。總地架構(gòu)設(shè)計過程是:需求分析、領(lǐng)域建模、確定關(guān)鍵需求(含非功能需求)、概念性架構(gòu)設(shè)計、實(shí)際架構(gòu)設(shè)計、架構(gòu)驗(yàn)證。其次,要學(xué)會做減法,躊躇滿志者常做地是加法。"需求決定架構(gòu)"是不錯,但時間有限、且需求變更變化頻繁,所以架構(gòu)師往往不可能深入分析所有需求,因此應(yīng)采用"關(guān)鍵需求決定架構(gòu)"地策略?!?07-6-8 5:45:00】嘉賓【溫昱】: 讀者問題:溫老師能否對我們處于程序員行列地這類人給些建議,如何規(guī)劃做到軟件架構(gòu)這階段多實(shí)踐,多思考,每個項(xiàng)目都往兩方面鉆研:. 深。背后地技術(shù)原理,通了,才可以再次用到新工作中。.系統(tǒng)。比如【007-6-8 5:49:00】嘉

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論