




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
11.一般架構(gòu)設(shè)計(jì)vs.敏捷設(shè)計(jì)2.敏捷設(shè)計(jì)的主要觀點(diǎn)3.架構(gòu)的表述(Representation)與溝通(Communication)4.如何表述(Represent)”足夠好的架構(gòu)”呢?5.復(fù)習(xí):代碼造形的角色6.敏捷架構(gòu)師:<一般架構(gòu)設(shè)計(jì)>也能敏捷起來(lái)7.敏捷架構(gòu)師+敏捷開(kāi)發(fā)者8.敏捷架構(gòu)師的素養(yǎng)9.架構(gòu)師團(tuán)隊(duì)+敏捷迭代10.結(jié)語(yǔ)21.一般架構(gòu)設(shè)計(jì)vs.敏捷設(shè)計(jì)一般架構(gòu)設(shè)計(jì):”DesignisCode”在一般的架構(gòu)設(shè)計(jì)里,架構(gòu)設(shè)計(jì)是完整的,架構(gòu)師設(shè)計(jì)完成整體架構(gòu)之后,在交給開(kāi)發(fā)者來(lái)編程,迅速落實(shí)為代碼(DesignisCode),進(jìn)行必要的測(cè)試,給予回饋。當(dāng)需求有所變更時(shí),開(kāi)發(fā)者需要同時(shí)維護(hù)設(shè)計(jì)與代碼,雙重負(fù)擔(dān),開(kāi)發(fā)者敏捷不起來(lái)。敏捷設(shè)計(jì):”CodeisDesign”反之,在敏捷設(shè)計(jì)里,將架構(gòu)設(shè)計(jì)被切分為許多部份,分散于整個(gè)開(kāi)發(fā)流程之中,包括規(guī)劃、編程、測(cè)試、重構(gòu)等各階段;讓設(shè)計(jì)直接表現(xiàn)于代碼里(CodeisDesign),避免開(kāi)發(fā)者同時(shí)維護(hù)設(shè)計(jì)與代碼的負(fù)擔(dān),讓開(kāi)發(fā)者敏捷起來(lái)。2.敏捷設(shè)計(jì)的主要觀點(diǎn)在敏捷開(kāi)發(fā)里,流行的敏捷設(shè)計(jì)觀點(diǎn)是:“敏捷是把原來(lái)架構(gòu)設(shè)計(jì)里的詳細(xì)設(shè)計(jì)放到了編碼的過(guò)程中,開(kāi)發(fā)人員要有架構(gòu)師的思維,架構(gòu)師的預(yù)先架構(gòu)設(shè)計(jì)要<正好足夠>?!崩?,2009年7月6日陳序明先生在<<IT168>>上發(fā)表的文章里,就說(shuō)到:敏捷開(kāi)發(fā)把原先軟件過(guò)程前期的架構(gòu)設(shè)計(jì),分散到了整個(gè)敏捷開(kāi)發(fā)軟件過(guò)程中。架構(gòu)設(shè)計(jì)包含兩方面:1)架構(gòu);2)設(shè)計(jì)。其中設(shè)計(jì)中的詳細(xì)設(shè)計(jì)需要大量的時(shí)間,包含詳細(xì)的流程,API,數(shù)據(jù)結(jié)構(gòu)等設(shè)計(jì)。但軟件開(kāi)發(fā)階段的Code編碼階段,同樣蘊(yùn)含了很多詳細(xì)設(shè)計(jì)的內(nèi)容。換句話(huà)說(shuō),現(xiàn)在敏捷開(kāi)發(fā)提倡Codeis3design,而以前是Designiscode。但是開(kāi)發(fā)人員維護(hù)一套Design,外加一套Code,不堪重負(fù),效率低。所以,現(xiàn)在是CodeisDesign盛行,敏捷盛行。基于這兩種原因,敏捷中將傳統(tǒng)的架構(gòu)設(shè)計(jì)分成:架構(gòu)+設(shè)計(jì): (1)敏捷開(kāi)發(fā)的架構(gòu)保留架構(gòu)部分; (2)轉(zhuǎn)移設(shè)計(jì)到Code編碼階段、重構(gòu)階段、UnitTest階段等。而詳細(xì)設(shè)計(jì)階段,則在Code編碼和UT單元測(cè)試階段進(jìn)行。這個(gè)階段重構(gòu)很重要,重構(gòu)使你的軟件架構(gòu)和組件結(jié)構(gòu)自然呈現(xiàn)。所以在敏捷開(kāi)發(fā)中架構(gòu)設(shè)計(jì)的內(nèi)容發(fā)生了變化:敏捷開(kāi)發(fā)中止于架構(gòu),輕詳細(xì)設(shè)計(jì)。但詳細(xì)設(shè)計(jì)不是消失不見(jiàn)了,而是轉(zhuǎn)移到了開(kāi)發(fā)階段,也即是:Codeisdesign。這樣既能擁抱變化,規(guī)避風(fēng)險(xiǎn),又Don'tRepeatYourself。其意味著,敏捷開(kāi)發(fā)將傳統(tǒng)的架構(gòu)設(shè)計(jì)分成:架構(gòu)+設(shè)計(jì)。敏捷開(kāi)發(fā)的架構(gòu)師,將架構(gòu)部分做到”足夠好”即可。然后,將(詳細(xì))設(shè)計(jì)轉(zhuǎn)移到代碼撰寫(xiě)階段、重構(gòu)階段、以及單元測(cè)試階段等。簡(jiǎn)而言之,在敏捷中,架構(gòu)設(shè)計(jì)僅止于”足夠好”的架構(gòu),不進(jìn)行詳細(xì)設(shè)計(jì)。但詳細(xì)設(shè)計(jì)仍然存在,只是轉(zhuǎn)移到了開(kāi)發(fā)階段而已。這些詳細(xì)設(shè)計(jì)需要花費(fèi)大量的時(shí)間,包含詳細(xì)的流程、數(shù)據(jù)結(jié)構(gòu)等設(shè)計(jì);而且在編程階段,也蘊(yùn)含了很多詳細(xì)設(shè)計(jì)的內(nèi)容。如果直接將設(shè)計(jì)表現(xiàn)于代碼中(Codeisdesign),就能避免開(kāi)發(fā)人員同時(shí)既要維護(hù)一套設(shè)計(jì),又要維護(hù)一套代碼;可大幅減輕開(kāi)發(fā)者的負(fù)擔(dān),提升效率。3.架構(gòu)的表述(Representation)與溝通(Communication)在敏捷開(kāi)發(fā)里,架構(gòu)師與開(kāi)發(fā)者的溝通,是非常關(guān)鍵的。包括:?架構(gòu)師以EIT等代碼造形表述設(shè)計(jì);讓開(kāi)發(fā)者直接對(duì)應(yīng)到代碼。代碼造形就如同專(zhuān)塊,建筑師敘述如何以磚塊組合出形形色色的建筑物;施工者就燒出專(zhuān)塊,并按步就班組合起來(lái)。?架構(gòu)師和開(kāi)發(fā)者都能從簡(jiǎn)單組合出復(fù)雜。亦即:造形很簡(jiǎn)單,內(nèi)涵可復(fù)雜,重復(fù)地組合。?讓用戶(hù)獲得從簡(jiǎn)單中叫出復(fù)雜的滿(mǎn)足感。亦即:優(yōu)質(zhì)的用戶(hù)體驗(yàn)。4.如何表述(Represent)”足夠好的架構(gòu)”呢?架構(gòu)設(shè)計(jì)被切分為”足夠好的架構(gòu)”和”詳細(xì)設(shè)計(jì)”兩個(gè)部分,那么這兩部4分又如何相互銜接呢?其實(shí)大家都知道,架構(gòu)師最關(guān)鍵的任務(wù)就是:接口(Interface)設(shè)計(jì)。所以,”足夠好架構(gòu)”的核心部分就是:接口的定義(Definition)和表述(Representation)。那么,有什么有效的方法能清晰而明確地定義和表述接口設(shè)計(jì)呢?答案是:代碼造形(CodeForm)。5代碼造形能直接對(duì)映到程序語(yǔ)言的結(jié)構(gòu),具有高度的精確性(Precision),架構(gòu)師能準(zhǔn)精確地傳達(dá)設(shè)計(jì)的涵義。架構(gòu)師以<代碼造形>表述架構(gòu),基于共同詞匯,提升了共識(shí)(SharedUnderstanding),開(kāi)發(fā)者很容易理解其架構(gòu)的設(shè)計(jì)涵意。所以,代碼造形能大幅提升開(kāi)發(fā)者的效率;而且迅速配合需求變更、架構(gòu)創(chuàng)新(或重構(gòu))設(shè)計(jì),大幅提升了整體團(tuán)隊(duì)的敏捷性。☆61.一般架構(gòu)設(shè)計(jì)vs.敏捷設(shè)計(jì)2.敏捷設(shè)計(jì)的主要觀點(diǎn)3.架構(gòu)的表述(Representation)與溝通(Communication)4.如何表述(Represent)”足夠好的架構(gòu)”呢?5.復(fù)習(xí):代碼造形的角色6.敏捷架構(gòu)師:<一般架構(gòu)設(shè)計(jì)>也能敏捷起來(lái)7.敏捷架構(gòu)師+敏捷開(kāi)發(fā)者8.敏捷架構(gòu)師的素養(yǎng)9.架構(gòu)師團(tuán)隊(duì)+敏捷迭代75.復(fù)習(xí):代碼造形的角色代碼造形的涵意顧名思義,代碼造形就是代碼層級(jí)的設(shè)計(jì)造形(Form)。代碼造形就是開(kāi)發(fā)者常用的詞匯(Vocabulary),其能直接對(duì)映(Map)到程序語(yǔ)言的基本結(jié)構(gòu),此結(jié)構(gòu)大多定義成為關(guān)鍵詞(Keyword)。例如,指令(Instruction)、函數(shù)(Function)和類(lèi)(Class)。代碼造形的特征代碼造形的特征如下:o單一的造形,架構(gòu)師以它敘述形形色色的設(shè)計(jì),開(kāi)發(fā)者直接將它落實(shí)為代碼。就如同專(zhuān)塊,建筑師敘述如何以磚塊組合出形形色色的建筑物;施工者就燒出專(zhuān)塊,并按步就班組合起來(lái)。o讓生產(chǎn)者(架構(gòu)師+開(kāi)發(fā)者)從簡(jiǎn)單組合出復(fù)雜。亦即:造形很簡(jiǎn)單,內(nèi)涵可復(fù)雜,重復(fù)地組合。o讓用戶(hù)獲得從簡(jiǎn)單中叫出復(fù)雜的滿(mǎn)足感。亦即:優(yōu)質(zhì)的用戶(hù)體驗(yàn)。以<類(lèi)>(Class)造形為例o造形很簡(jiǎn)單:軟件的類(lèi)(Class)造形,內(nèi)部只有2種要素:函數(shù)(Function)和屬性(Attribute);其要素之間的關(guān)系也能很清晰。o內(nèi)涵可復(fù)雜:在軟件系統(tǒng)里,各種不同內(nèi)涵,可以透過(guò)類(lèi)造形來(lái)呈現(xiàn)出來(lái)。類(lèi)造形就像集裝箱,可以容納各種多變得復(fù)雜內(nèi)涵。o重復(fù)地組合:類(lèi)造形像積木一樣,定義了明確的組合關(guān)系(例如”繼承(Inheritance)”關(guān)系、”結(jié)合(Association)”關(guān)系等)。于是,人們能將拿類(lèi)造形來(lái)重復(fù)組合成為復(fù)雜的大系統(tǒng)。代碼造形在溝通上的用處(Precision),架構(gòu)師能準(zhǔn)精確地傳達(dá)設(shè)計(jì)的涵義。o因?yàn)榇a造形是開(kāi)發(fā)者的詞匯,架構(gòu)師以<代碼造形>表述架構(gòu),基于共同詞匯,提升了共識(shí)(SharedUnderstanding),開(kāi)發(fā)者很容易理解其架構(gòu)的設(shè)計(jì)涵意。o所以,代碼造形能大幅提升開(kāi)發(fā)者的效率;而且迅速配合需求變更、架構(gòu)創(chuàng)8新(或重構(gòu))設(shè)計(jì),大幅提升了整體團(tuán)隊(duì)的敏捷性。o架構(gòu)師如同媽媽?zhuān)褂胟idlanguage來(lái)與小孩交談,非常有助于小孩語(yǔ)言天份的開(kāi)發(fā)。同樣地,架構(gòu)師以<代碼造形>來(lái)表述架構(gòu),來(lái)與開(kāi)發(fā)者交談;非常有助于開(kāi)發(fā)者設(shè)計(jì)能力的提升。o架構(gòu)師自由創(chuàng)意去思考架構(gòu)設(shè)計(jì)(加法設(shè)計(jì)),但是都以一致的<代碼造形>來(lái)表述架構(gòu)設(shè)計(jì)(減法設(shè)計(jì))。就如同唐詩(shī)的<七言絕句>造形,李白、杜甫、(Representation)。不但沒(méi)有傷害創(chuàng)意,而且還基于<詩(shī)同形>而相互激發(fā)創(chuàng)作的氛圍。o即使架構(gòu)尚未達(dá)到”足夠好”,只要能清晰而明確地表述,就能隨著敏捷迭代而互相切磋著磨而達(dá)到”足夠好”的境界了?;仡櫞a造形的演進(jìn)回顧1970年代的C語(yǔ)言,函數(shù)(Function)和數(shù)據(jù)結(jié)構(gòu)(DataStructure)是計(jì)算機(jī)語(yǔ)言的基本模塊(BasicBuildingBlock);因此IT系統(tǒng)分析&設(shè)計(jì)人員就以函數(shù)和數(shù)據(jù)結(jié)構(gòu)去發(fā)展建模方法和實(shí)現(xiàn)工具。例如當(dāng)年的結(jié)構(gòu)化(Structured)設(shè)計(jì)方法和數(shù)據(jù)庫(kù)(DataBase)系統(tǒng)等。當(dāng)時(shí)系統(tǒng)分析與設(shè)計(jì)的基本模塊是:?jiǎn)我坏暮瘮?shù)造形;并且能直接對(duì)映(Map)到代碼。到了1980-90年代,OOP成為業(yè)界主流,類(lèi)(Class)成為C++和Java等OOP語(yǔ)言的基本模塊。因而有了UML建模語(yǔ)言和OOAD(Object-OrientedAnalysisandDesign)方法問(wèn)世。于是,系統(tǒng)分析與設(shè)計(jì)的基本模塊擴(kuò)大為:?jiǎn)我坏念?lèi)造形;并且能直接對(duì)映(Map)到代碼。以此類(lèi)推,1995年Gamma推出了設(shè)計(jì)模式(DesignPatterns),成功地成為系統(tǒng)分析和設(shè)計(jì)的基本模塊。但是,設(shè)計(jì)模式花樣繁多,其幕后缺乏單一模式來(lái)組合出各種設(shè)計(jì)模式,無(wú)法直接對(duì)映到代碼。因而,設(shè)計(jì)模式未能擴(kuò)大系統(tǒng)分析和設(shè)計(jì)的基本模塊。至今,類(lèi)(Class)仍然是系統(tǒng)架構(gòu)師或分析師心中的基本設(shè)計(jì)模塊。于2012年5月,高煥堂老師提出了單一的EIT造形,來(lái)擴(kuò)大系統(tǒng)分析和設(shè)計(jì)的基本模塊;并且能直接對(duì)映(Map)到代碼。這EIT造形內(nèi)含3種要素:<E>對(duì)映到代碼的基類(lèi)(Super-class)、<I>對(duì)映到基類(lèi)的抽象函數(shù)(AbstractFunction)、而<T>則對(duì)映到代碼的子類(lèi)(Subclass),如下圖所示:9其中,接口就是一種抽象類(lèi),所以在本質(zhì)上,EIT造形就是由3個(gè)類(lèi)所構(gòu)成的,能直接對(duì)映到代碼(即3個(gè)類(lèi)的代碼)。EIT造形就像自然界的原子(Atom)造形或DNA螺旋造形一般,自然界的不同物質(zhì)都具有一致的簡(jiǎn)單造形,但其內(nèi)涵卻都可以不相同。其中,”EIT”名稱(chēng)是來(lái)自汽車(chē)的<引擎(Engine)、接口(Interface)、輪胎(Tire)>三種角色,及其之間的關(guān)系。EIT造形介于類(lèi)和設(shè)計(jì)模式之間。它是由3個(gè)類(lèi)所構(gòu)成的單一造形;它又能組合出各種設(shè)計(jì)模式,以及各種框架(Framework)?!?.一般架構(gòu)設(shè)計(jì)vs.敏捷設(shè)計(jì)2.敏捷設(shè)計(jì)的主要觀點(diǎn)3.架構(gòu)的表述(Representation)與溝通(Communication)4.如何表述(Represent)”足夠好的架構(gòu)”呢?5.復(fù)習(xí):代碼造形的角色6.敏捷架構(gòu)師:<一般架構(gòu)設(shè)計(jì)>也能敏捷起來(lái)7.敏捷架構(gòu)師+敏捷開(kāi)發(fā)者8.敏捷架構(gòu)師的素養(yǎng)9.架構(gòu)師團(tuán)隊(duì)+敏捷迭代10.結(jié)語(yǔ)6.敏捷架構(gòu)師:<一般架構(gòu)設(shè)計(jì)>也能敏捷起來(lái)在敏捷開(kāi)發(fā)里,把原來(lái)架構(gòu)設(shè)計(jì)里的詳細(xì)設(shè)計(jì)放到了編碼的過(guò)程中;所以,架構(gòu)師只要將架構(gòu)部分做到”足夠好”即可;而大部分的設(shè)計(jì)工作轉(zhuǎn)移到開(kāi)發(fā)者身上。相對(duì)上,架構(gòu)師處于配角地位,來(lái)支持開(kāi)發(fā)者,讓開(kāi)發(fā)工作更具有敏捷力。在一般(或傳統(tǒng))軟件開(kāi)發(fā)里,則反過(guò)來(lái),架構(gòu)師是主角;相對(duì)上,開(kāi)發(fā)者處于配角地位。如果開(kāi)發(fā)者,能夠來(lái)協(xié)助架構(gòu)師,讓架構(gòu)的關(guān)鍵部分(如平臺(tái)接口或團(tuán)隊(duì)接口的<I>部分)能迅速落實(shí)為代碼,進(jìn)行必要的測(cè)試,給予回饋。也能大幅提升了架構(gòu)師團(tuán)隊(duì)更具敏捷力。這意味著,敏捷思維不僅適用于開(kāi)發(fā)團(tuán)隊(duì)(架構(gòu)師是配角);也非常適用于架構(gòu)師團(tuán)隊(duì)(開(kāi)發(fā)者是配角)。7.敏捷架構(gòu)師+敏捷開(kāi)發(fā)者以上的”DesignisCode”和”CodeisDesign”看似對(duì)立的;其實(shí)”Design”與”Code”就如同太極的陰陽(yáng)兩儀,其界線(xiàn)并不是涇渭分明的。例如,有些團(tuán)隊(duì)里的開(kāi)發(fā)者并沒(méi)有足夠經(jīng)驗(yàn)和技能,來(lái)承擔(dān)”Code+Design”的雙重任務(wù)時(shí),若能及時(shí)發(fā)揮架構(gòu)師高度敏捷力,藉由EIT造形來(lái)表述架構(gòu),就能強(qiáng)化”DesignisCode”來(lái)分擔(dān)”CodeisDesign”的工作,卻是落實(shí)敏捷開(kāi)發(fā)的常見(jiàn)途徑。因之,架構(gòu)師和開(kāi)發(fā)者的敏捷力,必須兼而顧之,并且相輔相成的。簡(jiǎn)而言之:o敏捷架構(gòu)師針對(duì)關(guān)鍵部分(如平臺(tái)接口或團(tuán)隊(duì)接口的<I>部分),請(qǐng)求開(kāi)發(fā)者來(lái)協(xié)助編程,讓設(shè)計(jì)迅速落實(shí)為代碼(DesignisCode),進(jìn)行必要的測(cè)試,給予回饋。o敏捷開(kāi)發(fā)者,將細(xì)節(jié)設(shè)計(jì)被切分為許多部份,分散于整個(gè)開(kāi)發(fā)流程之中,包括規(guī)劃、編程、測(cè)試、重構(gòu)等各階段;讓設(shè)計(jì)直接表現(xiàn)于代碼里(CodeisDesign)。o如果上述理想的”CodeisDesign”途徑難以落實(shí)的情況下(常常源于團(tuán)隊(duì)組織結(jié)構(gòu)的限制),只要架構(gòu)能清晰表述和溝通,采取敏捷架構(gòu)師的”DesignisCode”的途徑,也能有效支持敏捷迭代過(guò)程的。8.敏捷架構(gòu)師的素養(yǎng)8.1架構(gòu)師的視角?以代碼造形思考設(shè)計(jì);讓開(kāi)發(fā)者直接對(duì)應(yīng)到代碼。代碼造形就如同專(zhuān)塊,建筑師敘述如何以磚塊組合出形形色色的建筑物;施工者就燒出專(zhuān)塊,并按步就班組合起來(lái)。?讓用戶(hù)獲得從簡(jiǎn)單中叫出復(fù)雜的滿(mǎn)足感。亦即:優(yōu)質(zhì)的用戶(hù)體驗(yàn)。8.2敏捷架構(gòu)師關(guān)鍵議題敏捷架構(gòu)設(shè)計(jì)的2個(gè)關(guān)鍵議題是:?架構(gòu)師團(tuán)隊(duì)如何給自己創(chuàng)造重構(gòu)的自由度,以及支持開(kāi)發(fā)者重構(gòu)的空間。?架構(gòu)設(shè)計(jì)如何迅速落實(shí)為代碼。敏捷架構(gòu)師的關(guān)鍵任務(wù):創(chuàng)造重構(gòu)的自由度架構(gòu)師團(tuán)隊(duì)如何給自己創(chuàng)造重構(gòu)的自由度,以及支持開(kāi)發(fā)者重構(gòu)的空間,是敏捷設(shè)計(jì)的關(guān)鍵議題。這種自由度,決定于架構(gòu)師是否能仔細(xì)分辨出:關(guān)注<未來(lái)的決策>與關(guān)注<今天決策的未來(lái)性>的微妙差異了。愈是能關(guān)注<今天決策的未來(lái)性>,而不是關(guān)注<未來(lái)的決策>,就愈能創(chuàng)造未來(lái)重構(gòu)的自由度。例如,EIT造形和框架的主角都是接口<I>,愈是關(guān)注<目前決策的未來(lái)性>時(shí),就愈會(huì)想去設(shè)計(jì)通用性(General)<E>和<I>來(lái)包容未來(lái)<T>的多變化。而一群<E&I>的巧妙組合,就成為框架了。由于EIT造形具有重復(fù)組合的特性,人們可以組合出多層級(jí)EIT造形體系的結(jié)構(gòu),進(jìn)而設(shè)計(jì)出多層級(jí)的框架,就能創(chuàng)造更大的重構(gòu)自由度。例如,上層EIT造形的<I>能包容用戶(hù)需求<T>的未來(lái)變化;而底層框架則能包容系統(tǒng)平臺(tái)特殊模塊<T>的未來(lái)變化。用戶(hù)需求與平臺(tái)模塊之間籍由兩層EIT造形的通用性<I>來(lái)銜接與組合,而創(chuàng)造了彈性的重構(gòu)空間。迅速落實(shí)為代碼“DesignisCode”依賴(lài)兩項(xiàng)重要的代碼層結(jié)構(gòu):?EIT造形(含類(lèi)造形)?框架(Framework)其中,EIT造形成為架構(gòu)思考的簡(jiǎn)單元素,然后從簡(jiǎn)單中組合出復(fù)雜架構(gòu),而框架則是產(chǎn)出的代碼層級(jí)的架構(gòu)(亦即,計(jì)算機(jī)可執(zhí)行架構(gòu))。換句話(huà)說(shuō),EIT造形能迅速落實(shí)為可執(zhí)行的代碼??蓤?zhí)行的代碼有兩種:框架和App。由強(qiáng)龍開(kāi)發(fā)框架代碼;而由地頭蛇開(kāi)發(fā)App代碼;這稱(chēng)為<強(qiáng)龍/地頭蛇>分工模式。這就是當(dāng)今Apple和Google應(yīng)用商店的分工模式。EIT造形既適用于強(qiáng)龍團(tuán)隊(duì),也適用于地頭蛇團(tuán)隊(duì);也能支持這兩種團(tuán)隊(duì)的敏捷開(kāi)發(fā)過(guò)程。☆1.一般架構(gòu)設(shè)計(jì)vs.敏捷設(shè)計(jì)2.敏捷設(shè)計(jì)的主要觀點(diǎn)3.架構(gòu)的表述(Representation)與溝通(Communication)4.如何表述(Represent)”足夠好的架構(gòu)”呢?5.復(fù)習(xí):代碼造形的角色6.敏捷架構(gòu)師:<一般架構(gòu)設(shè)計(jì)>也能敏捷起來(lái)7.敏捷架構(gòu)師+敏捷開(kāi)發(fā)者8.敏捷架構(gòu)師的素養(yǎng)9.架構(gòu)師團(tuán)隊(duì)+敏捷迭代10.結(jié)語(yǔ)9.架構(gòu)師團(tuán)隊(duì)+敏捷迭代基于愿景而設(shè)計(jì)足夠好(GoodEnough)架構(gòu),做為基礎(chǔ),盡快將設(shè)計(jì)落實(shí)成為代碼;然后以需求來(lái)進(jìn)行檢測(cè),將測(cè)試結(jié)果反饋回來(lái),修正和重構(gòu)設(shè)計(jì)和代碼,持續(xù)迭代循環(huán)下去。著名的敏捷專(zhuān)家FredGeorge說(shuō)道:o身為架構(gòu)師,我先實(shí)現(xiàn)系統(tǒng)里最艱難的部分。(Asanarchitect,Iwillimplementthemostdifficultpartsofasystem.)o我稱(chēng)它為”先驗(yàn)過(guò)程”,這過(guò)程檢視我的設(shè)計(jì)理念是否足夠好。(Icallit"pioneering",theprocesswhereIseeifanideainmyheadactuallyisagoodidea.)o在這先驗(yàn)過(guò)程的實(shí)踐中,我會(huì)不斷修正設(shè)計(jì)里念,直到有了感覺(jué)足夠好的設(shè)計(jì)模式。然后才讓開(kāi)發(fā)團(tuán)隊(duì)跟進(jìn);這項(xiàng)設(shè)計(jì)模式就是系統(tǒng)架構(gòu)了。((Iwillalwaysrefinetheideainthatfirstimplementation.ThenIfeelcomfortablelettingtherestoftheprogrammingteamfollowthatpattern.Thatisthearchitecture.)srefine…”)。架構(gòu)師在設(shè)計(jì)出simplesolution時(shí),已經(jīng)進(jìn)行了無(wú)數(shù)次心智內(nèi)的敏捷迭代了。10.結(jié)語(yǔ)10.1善用代碼造形無(wú)論是強(qiáng)龍開(kāi)發(fā)框架,或者地頭蛇開(kāi)發(fā)App,都可搭配敏捷開(kāi)發(fā)過(guò)程,來(lái)提高效率和質(zhì)量。在敏捷中,架構(gòu)設(shè)計(jì)僅止于”足夠好”的架構(gòu),不進(jìn)行詳細(xì)設(shè)計(jì),而將詳細(xì)設(shè)計(jì)轉(zhuǎn)移到了開(kāi)發(fā)階段。架構(gòu)設(shè)計(jì)被切分為”足夠好的架構(gòu)”和”詳細(xì)設(shè)計(jì)”兩個(gè)部分,那么這兩部分又如何相互銜接呢?其實(shí)大家都知道,架構(gòu)師最關(guān)鍵的任務(wù)就是:接口(Interface)設(shè)計(jì);所以”足夠好架構(gòu)”的核心部分就是:接口的定義(Definition)和表述(Representation)。那么,有什么有效的方法能清晰而明確地定義和表述接口設(shè)計(jì)呢?答案是:代碼造形(CodeForm)。10.2清晰表述”足夠好”的架構(gòu)在敏捷中,架構(gòu)設(shè)計(jì)僅止于”足夠好”的架構(gòu),不進(jìn)行詳細(xì)設(shè)計(jì)。但詳細(xì)設(shè)計(jì)仍然存在,只是轉(zhuǎn)移到了開(kāi)發(fā)階段而已。代碼造形能直接對(duì)映到程序語(yǔ)言的結(jié)構(gòu),具有高度的精確性(Precision),架構(gòu)師能準(zhǔn)精確地傳達(dá)設(shè)計(jì)的涵義。對(duì)于架構(gòu)師而言,只要能夠清晰而明確地表述,即使架構(gòu)尚未達(dá)到”足夠好”,也能隨著敏捷迭代而互相切磋著磨而達(dá)到”足夠好”的境界了。由于代碼造形是開(kāi)發(fā)者的詞匯,架構(gòu)師以<代碼造形>表述架構(gòu),基于共同詞匯,提升了共識(shí)(SharedUnderstanding),開(kāi)發(fā)者很容易理解其架構(gòu)的設(shè)計(jì)涵意。所以,代碼造形能大幅提升開(kāi)發(fā)者的效率;而且迅速配合需求變更、架構(gòu)創(chuàng)新(或重構(gòu))設(shè)計(jì),大幅提升了整體團(tuán)隊(duì)的敏捷性。對(duì)于開(kāi)發(fā)者而言,架構(gòu)師就如同媽媽?zhuān)褂胟idlanguage來(lái)與小孩交談,非常有助于小孩語(yǔ)言天份的開(kāi)發(fā)。同樣地,架構(gòu)師以<代碼造形>來(lái)表述架構(gòu),來(lái)與開(kāi)發(fā)者交談;非常有助于開(kāi)發(fā)者設(shè)計(jì)能力的提升。開(kāi)發(fā)者從其熟悉的簡(jiǎn)單<代碼造形>出發(fā),然后像堆積木一樣,逐漸培養(yǎng)從簡(jiǎn)單(造形)中<組合>出復(fù)雜(系統(tǒng))的能力。10.3善用EIT代碼造形提升敏捷性自從1996年Java問(wèn)世之后,接口(Interface)成為Java語(yǔ)言的關(guān)鍵詞(KeyWord)。于是,<接口>的位階已經(jīng)提升了,其與<類(lèi)>是同位階了,而不再隱藏于類(lèi)造形里。這意味著,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石材臺(tái)階施工方案
- 大橋鋼索地基施工方案
- 工業(yè)地坪施工方案
- 廣場(chǎng)石材工地施工方案
- 樹(shù)木淘汰 施工方案
- 房屋改造施工方案
- 店面施工方案
- 2025年度電子產(chǎn)品商標(biāo)許可及銷(xiāo)售代理合同
- 二零二五年度橋梁工程款抵頂設(shè)計(jì)費(fèi)合同
- 2025年度貨運(yùn)信息化建設(shè)合同規(guī)范
- 2025年贛州職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)一套
- 《英語(yǔ)史》課程教學(xué)大綱
- 智能鎖培訓(xùn)課程
- 2025年道路運(yùn)輸企業(yè)安全生產(chǎn)管理人員考試題(附答案)
- 2025年哈爾濱鐵道職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 視頻監(jiān)控采集設(shè)備安裝調(diào)試施工方案
- 小兒腸系膜淋巴結(jié)護(hù)理查房
- 【MOOC期末】《大學(xué)體育射箭》(東南大學(xué))中國(guó)大學(xué)慕課答案
- 2025年女職工權(quán)益保護(hù)法律知識(shí)競(jìng)賽題庫(kù)及答案(100題)
- 財(cái)務(wù)崗位招聘筆試題與參考答案(某大型國(guó)企)2025年
- 《海運(yùn)出口操作》課件
評(píng)論
0/150
提交評(píng)論