思特沃克軟件技術(shù)有限公司(ThoughtWorks Inc.)(以下簡(jiǎn)稱ThoughtWorks)是一家有16年歷史的IT咨詢公司,全球員工超過1000人。ThoughtWorks在全球擁有6家分公司,分布在美國(guó),加拿大,英國(guó),印度,澳大利亞和中國(guó),為全球客戶提供服務(wù)。
ThoughtWorks雇用非凡的人才,致力于為客戶提供高價(jià)值的技術(shù)咨詢,開發(fā)過程改進(jìn)咨詢和高質(zhì)量的軟件交付服務(wù)。
ThoughtWorks是先進(jìn)技術(shù)的實(shí)踐者,在軟件開發(fā)技術(shù)領(lǐng)域積累了豐富的實(shí)踐經(jīng)驗(yàn)。ThoughtWorks幫助客戶解決技術(shù)架構(gòu)方面的難題,并幫助客戶交付高質(zhì)量的軟件。
ThoughtWorks是敏捷方法和軟件精益方法的最早實(shí)踐, 針對(duì)客戶實(shí)際情況幫客戶定制適應(yīng)性的開發(fā)過程,使客戶更有效的應(yīng)用到企業(yè)級(jí)和分布式項(xiàng)目中。ThoughtWorks通過咨詢服務(wù)幫助客戶進(jìn)行定制并采用敏捷實(shí)踐,幫助客戶減少成本浪費(fèi),提高上線速度,并使商業(yè)價(jià)值最大化。
ThoughtWorks的行業(yè)經(jīng)驗(yàn)涉及:銀行,電信,互聯(lián)網(wǎng),零售,金融,醫(yī)療,能源,供應(yīng)鏈和貿(mào)易等。ThoughtWorks樂于和客戶分享業(yè)界成功經(jīng)驗(yàn),和客戶一起分析實(shí)際問題,幫助客戶進(jìn)行重大決策。
ThoughtWorks Studios是我們的產(chǎn)品部門,其目標(biāo)是幫助客戶提升敏捷軟件開發(fā)的水平。ThoughtWorks以其超過300個(gè)的項(xiàng)目交付經(jīng)驗(yàn)幫助客戶建立全球分布式軟件開發(fā)團(tuán)隊(duì)持續(xù)并持續(xù)交付商業(yè)價(jià)值。
ThoughtWorks的軟件生命周期管理套件包括這些工具: Mingle(敏捷項(xiàng)目管理和協(xié)作)、Cruise(持續(xù)集成和發(fā)布管理)、Twist(功能測(cè)試自動(dòng)化)。
藉著服務(wù)于6大洲22個(gè)國(guó)家的175家客戶,ThoughtWorks Studios 的產(chǎn)品致力于幫助開發(fā)團(tuán)隊(duì)提高生產(chǎn)力并推動(dòng)軟件開發(fā)藝術(shù)的提升。
我們有幸采訪到了ThoughtWorks公司的李彥輝老師和許偉老師
采訪ThoughtWorks公司—李彥輝老師 
JavaEye:1.李彥輝老師,您好,您是什么時(shí)候加入ThoughtWorks公司的,進(jìn)入公司后的感受如何?
李老師:我是2007年加入Thoughtworks的。 進(jìn)入公司后感覺這種平等、開放的態(tài)度以及追求卓越的精神很符合自己的個(gè)性,所以我很喜歡在這里工作。
JavaEye:2.可以介紹下敏捷開發(fā)的一些實(shí)踐嗎?
李老師:我自己常用的一些實(shí)踐包括TDD、重構(gòu)、簡(jiǎn)單設(shè)計(jì)、持續(xù)集成等。在我看來,TDD確保我編碼前理解了需求,并保持設(shè)計(jì)的簡(jiǎn)單性;然后TDD帶來的大量自動(dòng)化單元測(cè)試保證了持續(xù)集成的有效性,讓我在重構(gòu)代碼時(shí)得到及時(shí)并有效的反饋,進(jìn)而更有信心通過不斷的重構(gòu)來達(dá)到簡(jiǎn)單設(shè)計(jì)。
JavaEye:3.對(duì)目前敏捷開發(fā)在國(guó)內(nèi)的發(fā)展現(xiàn)狀,能做一個(gè)簡(jiǎn)單的評(píng)價(jià)嗎?
李老師:比起兩年前我加入Thoughtworks的時(shí)候,我覺得現(xiàn)在國(guó)內(nèi)越來越多的人已經(jīng)或多或少地了解了敏捷,他們的問題已經(jīng)從Why轉(zhuǎn)向了How,這點(diǎn)可以從今年的敏捷中國(guó)大會(huì)看得出來。
JavaEye:4.目前您致力于構(gòu)建、測(cè)試、部署方面的研究,能說明下他們的特點(diǎn)以及在開發(fā)的過程中需要注意的事項(xiàng)嗎?
李老師:傳統(tǒng)的構(gòu)建包括產(chǎn)品的編譯、打包, 但在今天的持續(xù)集成上下文中構(gòu)建涵蓋軟件開發(fā)周期中更多的階段,比如測(cè)試和部署。一個(gè)好的構(gòu)建過程往往包含大量的自動(dòng)化測(cè)試,甚至自動(dòng)化部署。從開發(fā)的角度來看,構(gòu)建、測(cè)試和部署都是對(duì)編碼工作的反饋,都需要被納入到開發(fā)人員的考慮范圍。
JavaEye:5.早在一年前,ThoughtWorks就發(fā)布cruise軟件,可以簡(jiǎn)單的介紹一下嗎?
李老師:Cruise是Thoughtworks基于自己多年的持續(xù)集成經(jīng)驗(yàn)所構(gòu)建的。早在2007年我們的同事Dave Farely就發(fā)布了一篇文章介紹部署管道(The Deployment Pipeline)的概念,用來建模軟件開發(fā)過程中管道式的活動(dòng),比如典型的開發(fā)、測(cè)試、部署等。Cruise提出的構(gòu)建管道的概念幫助軟件開發(fā)團(tuán)隊(duì)更好的管理整個(gè)開發(fā)流程,提供更好的項(xiàng)目可見性。Cruise迄今為止發(fā)布了7個(gè)版本,目前最新版是1.3.2。
JavaEye:6.能為大家列舉一些使用cruise的成功案例嗎?
李老師:Cruise項(xiàng)目組自身應(yīng)該算一個(gè)吧:) 另外我們還有一個(gè)大客戶在印度那邊,開發(fā)人員有170多個(gè),同時(shí)維護(hù)3個(gè)版本,16個(gè)部署環(huán)境,260臺(tái)構(gòu)建機(jī)器,他們?cè)贑ruise的幫助下做到了平均每6周交付一次 。
JavaEye:7.您對(duì)JavaEye網(wǎng)站有什么評(píng)價(jià)嗎?可以說說您對(duì)JavaEye的建議和期望嗎?
李老師:JavaEye是一個(gè)很好的技術(shù)交流平臺(tái),ThoughtWorks也有很多同事上JavaEye。我覺得一個(gè)技術(shù)平臺(tái)最大的價(jià)值在于溝通交流優(yōu)秀的軟件開發(fā)實(shí)踐,幫助大家共同提高,希望JavaEye能在這方面做得越來越好。
采訪ThoughtWorks公司—許偉老師 
JavaEye:1.許偉老師,您好,您是什么時(shí)候加入ThoughtWorks公司的,進(jìn)入公司后的讓您感受最深的是什么?
許老師:我是2008年五月加入ThoughtWorks的, 之前我是一家創(chuàng)業(yè)型外包公司的技術(shù)負(fù)責(zé)人. 我們當(dāng)時(shí)一直用手工測(cè)試, 而且部署比較頻繁, 每次有了新的功能,就部署到客戶的測(cè)試機(jī)器上.這樣客戶可以了解最新做出來的東西是不是他想要的, 然后可能對(duì)需求進(jìn)行更改. 開始的時(shí)候, 因?yàn)檫M(jìn)度比較緊,每次都是到快下班的時(shí)候才完成開發(fā)工作, 然后在本地簡(jiǎn)單測(cè)試后開始部署到美國(guó)的服務(wù)器,之后再手工測(cè)試, 如果發(fā)現(xiàn)有問題, 再匆忙的修改, 然后再部署, 再測(cè)試... 每次都花很長(zhǎng)時(shí)間, 可能到晚上11, 12點(diǎn), 幾次之后我們決定以后的部署最遲在下午2點(diǎn)前進(jìn)行, 但這也意味著這天下午所有的人都不能繼續(xù)開發(fā), 因?yàn)殡S時(shí)可能發(fā)現(xiàn)bug, 就需要修改代碼.
于是我們總結(jié)了主要問題有:
1. 測(cè)試環(huán)境和部署環(huán)境不同. 本地Windows, 服務(wù)器Linux,本地程序能運(yùn)行, 但部署后失敗了, 比如權(quán)限, 服務(wù)器設(shè)置, 數(shù)據(jù)庫(kù)連接信息等等各種環(huán)境相關(guān)的原因
2. 本地測(cè)試不夠,因?yàn)槿斯y(cè)試花時(shí)間太長(zhǎng), 所以部署前就只選比較重要的功能進(jìn)行測(cè)試, 以前的功能可能被最近的改動(dòng)破壞了,但是沒有測(cè)到
我當(dāng)時(shí)聽說了自動(dòng)測(cè)試和持續(xù)集成, 但是沒有任何經(jīng)驗(yàn). 于是找了JUnit的資料, 嘗試寫了一些核心業(yè)務(wù)邏輯的測(cè)試, 覺得很難寫, 大部分的代碼在準(zhǔn)備數(shù)據(jù), 測(cè)試也不容易維護(hù), 于是就放棄了. 之后又安裝了Cruise Control, 因?yàn)閾?jù)說通過它能解決我們的這種問題, 但用了以后什么好處都沒有感覺到, 于是又放棄了.
后來我加入了ThoughtWorks, 發(fā)現(xiàn)原來測(cè)試可以這么寫, 持續(xù)集成要這么做! 有了測(cè)試以后, 持續(xù)集成自然就在團(tuán)隊(duì)里重要起來, 每個(gè)人都會(huì)關(guān)心集成的結(jié)果, 不然總會(huì)有人在辦公室里用所有人都能聽到的聲音說"XXX, Build Fail 了".
目前我感受最深的有兩個(gè)方面: 公司氛圍上每個(gè)人都在不斷的想更好地辦法來改進(jìn), 開發(fā)實(shí)踐上一定要有自動(dòng)測(cè)試和持續(xù)集成.
JavaEye:2.目前在國(guó)內(nèi)使用敏捷開發(fā)的公司多嗎?使用敏捷開發(fā)又能帶來哪些好處呢?
許老師:目前我知道的已經(jīng)使用敏捷開發(fā)的國(guó)內(nèi)公司不是很多, 但是有越來越多的公司開始關(guān)注敏捷開發(fā).
我目前接觸到的項(xiàng)目都會(huì)有需求變更, 如果我們?cè)谝婚_始就把這種變化處理好,會(huì)比項(xiàng)目全部做完后再處理成本低得多.
敏捷開發(fā)源自Toyota的精益思想, 它提倡以人為本, 持續(xù)改進(jìn), 通過較快的迭代實(shí)現(xiàn)頻繁交付, 這樣能夠和客戶做到很好的溝通, 減少對(duì)需求理解的不一致, 客戶也可以及時(shí)調(diào)整需求來滿足業(yè)務(wù)的變化. 每一個(gè)迭代過程都是一個(gè)完整的瀑布流程, 包括需求分析, 設(shè)計(jì), 編碼, 測(cè)試, 部署等. 這樣我們可以一直思考一個(gè)問題:"什么是客戶真正需要的, 做這件事會(huì)給客戶帶來什么好處", 這樣可以有限的精力放到最重要的事情上, 并降低開發(fā)過程中的風(fēng)險(xiǎn), 最終給客戶帶來更大的價(jià)值.
JavaEye:3.對(duì)敏捷實(shí)踐的推廣以及未來的發(fā)展前景,能談?wù)勀目捶▎幔?/span>
許老師:越來越多的人發(fā)現(xiàn)了項(xiàng)目中可能存在的各種問題, 比如:需求變更, 不同人對(duì)需求理解的偏差, 理解不一致而導(dǎo)致的交付風(fēng)險(xiǎn)等. 我覺得這些問題問題分為兩類 : 需求變化 和 溝通問題.
如果需求一定要變化, 那我們只能改變自己去適應(yīng)他, 改變的越早, 成本越小.溝通如果有問題, 一方面我們可以增加溝通的頻率, 另一方面我們可以換一種方式, 一百句話可能不如一幅圖更能表達(dá)清楚意思, 而一百幅圖也不如讓不同的人操作一下已有的軟件更能理解項(xiàng)目做成了什么樣子.
敏捷實(shí)踐就是在解決這些問題, 通過每個(gè)迭代的交付品, 客戶可能發(fā)現(xiàn)了新的需求或者發(fā)現(xiàn)已有需求并沒有帶來真正的價(jià)值; 開發(fā)人員與客戶可以對(duì)需求達(dá)成一致, 如果有了偏差, 就及時(shí)更正; 所有的人都知道項(xiàng)目的最新狀態(tài), 每個(gè)人都可以問:這么做對(duì)不對(duì), 能夠給客戶帶來什么好處?
另外, 敏捷提倡的是持續(xù)改進(jìn), 他并沒有強(qiáng)制規(guī)定必須這么做或是那么做, 每個(gè)項(xiàng)目可以根據(jù)自己的情況, 選取不同的實(shí)踐. 選取一個(gè)實(shí)踐也沒有硬性限制必須怎么做, 不同的項(xiàng)目還是要根據(jù)自身情況進(jìn)行調(diào)整.
我認(rèn)為實(shí)施敏捷是為了解決問題, 而不是為了敏捷而敏捷. 如果我們?cè)陂_發(fā)過程中發(fā)現(xiàn)了潛在的問題, 并且能夠找到辦法解決它, 那我個(gè)人覺得就無(wú)所謂敏捷不敏捷, 如果不能解決, 那可以參考各種敏捷實(shí)踐, 看可不可以解決自己的問題.
我個(gè)人認(rèn)為敏捷= 每個(gè)人都在想不斷改進(jìn)的氛圍 + 一些已經(jīng)驗(yàn)證的較好實(shí)踐. 簡(jiǎn)單來說, 你發(fā)現(xiàn)有一個(gè)問題需要解決, 而別人已經(jīng)通過某種方法解決了, 那你就可以參考解決方法. 我覺得這是一種很淳樸的解決方法或改進(jìn)過程, 所以我對(duì)敏捷的未來前景比較看好.
JavaEye:4.了解到您發(fā)起了很多開源的項(xiàng)目,您能介紹下嗎?
許老師:我目前發(fā)起的開源項(xiàng)目主要是兩個(gè), 一個(gè)是代碼生成器, 一個(gè)是軟件升級(jí)時(shí)升級(jí)數(shù)據(jù)庫(kù)的工具(DB deploy for c++).
代碼生成器是在我以前做外包項(xiàng)目時(shí)開發(fā)的. 當(dāng)時(shí)很多項(xiàng)目都采用Struts + Spring + JDBC結(jié)構(gòu), 項(xiàng)目的核心業(yè)務(wù)不是很多, 但是為了支撐這些核心業(yè)務(wù), 需要有很多輔助模塊, 每個(gè)模塊可能都需要列表, 增刪改等簡(jiǎn)單功能. 為了這些簡(jiǎn)單功能, 實(shí)現(xiàn)每個(gè)模塊需要增加十多個(gè)文件, 文件內(nèi)容相似卻不同, 相似是結(jié)構(gòu)相似, 不同在字段不同. 現(xiàn)在如果用RoR,或者Symfony, 他們都生成了很多代碼用來簡(jiǎn)化這種重復(fù)工作, 我做得代碼生成器也類似, 通過讀取數(shù)據(jù)庫(kù)信息, 生成代碼. 要生成什么樣的代碼需要用戶自行設(shè)計(jì), 這樣可以滿足不同項(xiàng)目的需要. 一句話來描述就是可以讓所有的語(yǔ)言都可以使用類似RoR里代碼生成的功能. 關(guān)于代碼生成器, 從我接觸到的人里, 一半人喜歡,一半人覺得沒用, 這點(diǎn)就看個(gè)人喜好了. 另外, 在<程序員修煉之道>這本書中也介紹了代碼生成器.
另一個(gè)工具是數(shù)據(jù)庫(kù)升級(jí)工具, 我在Java項(xiàng)目中用到了DBDeploy. 通過它可以根據(jù)最新的軟件版本自動(dòng)升級(jí)或降級(jí)已有的數(shù)據(jù)庫(kù), 但我用C++開發(fā)的項(xiàng)目就沒有類似的庫(kù),所以我就把DBDeploy 移植到了C++上, 所以這實(shí)際上是一個(gè)移植項(xiàng)目.
JavaEye:5.談?wù)勀鷮?duì)開源的看法?
許老師:現(xiàn)在我知道的大部分人都在使用開源軟件, 很多人也給開源社區(qū)貢獻(xiàn)了自己的力量. 如果沒有開源, 我們每個(gè)人就得開發(fā)自己專有的的struts, spring, hibernate, 使用昂貴的數(shù)據(jù)庫(kù)和操作系統(tǒng). 而我們現(xiàn)在可以找到數(shù)不盡的開源軟件, 從操作系統(tǒng), 編譯器, 數(shù)據(jù)庫(kù), 應(yīng)用服務(wù)器, 云計(jì)算, 到很多實(shí)用小工具. 我認(rèn)識(shí)的很多人都在使用Linux. 所以我覺得如果你不想用盜版, 又不想花錢, 那就用開源軟件吧, 你總能找到適合自己的工具的, 如果實(shí)在找不到, 而你又需要, 那你可以自己寫, 然后貢獻(xiàn)出來, 讓其他人方便的去用.
JavaEye:6.這次您將作為ThoughtWorks持續(xù)集成培訓(xùn)的講師,可以向大家簡(jiǎn)單的介紹一下持續(xù)集成嗎?
許老師:簡(jiǎn)單的說, 持續(xù)集成是對(duì)每次代碼或配置的改動(dòng)都進(jìn)行編譯, 測(cè)試, 檢查本次改動(dòng)有沒有破壞已有的功能.
我對(duì)持續(xù)集成在項(xiàng)目中扮演的的角色這么認(rèn)為: 持續(xù)集成是項(xiàng)目開發(fā)的一面鏡子, 你可以從中發(fā)現(xiàn)項(xiàng)目潛在的問題, 并進(jìn)行改進(jìn). 比如, 如果寫單元測(cè)試很困難, 可能說明當(dāng)前的類職責(zé)太多, 程序結(jié)構(gòu)可以改進(jìn); 如果最近失敗的比較頻繁, 說明代碼變得不穩(wěn)定, 發(fā)布的風(fēng)險(xiǎn)變大, 如果不能在一臺(tái)干凈的機(jī)器上編譯, 可能說明編譯對(duì)機(jī)器環(huán)境有依賴, 不同機(jī)器編譯出的結(jié)果不同...
通過持續(xù)集成, 可以降低項(xiàng)目發(fā)布的風(fēng)險(xiǎn), 如果有問題, 盡早發(fā)現(xiàn), 盡早改正.
JavaEye:7.據(jù)統(tǒng)計(jì),開源項(xiàng)目幾乎都實(shí)施了持續(xù)集成的工作,想必一定有他的過人之處,為什么它能吸引這么多的開源項(xiàng)目呢?
許老師:首先持續(xù)集成是一個(gè)溝通的工具, 每一個(gè)項(xiàng)目的參與人員都可以知道項(xiàng)目的最新進(jìn)展, 最近修改的什么功能, 其次它又是一個(gè)檢查工具, 每個(gè)人提交的代碼都會(huì)強(qiáng)制經(jīng)過一系列相同的驗(yàn)證過程, 從編譯, 打包, 各種各樣的測(cè)試, 到部署. 這樣一定程度上保證了代碼的質(zhì)量, 并且隨時(shí)可以找到一個(gè)比較穩(wěn)定的版本. 最后通過持續(xù)集成,我們可以把一部分比較復(fù)雜, 手工處理容易出錯(cuò)的過程自動(dòng)化, 比如部署, 來減少人為失誤.
不只是開源項(xiàng)目, 很多商業(yè)項(xiàng)目也都在使用持續(xù)集成. 持續(xù)集成是需要付出成本的. 但是隨著項(xiàng)目周期變長(zhǎng), 人數(shù)增多, 我們從持續(xù)集成中得到的收益就越大. 開源項(xiàng)目一般都是在比較長(zhǎng)的時(shí)間內(nèi), 同時(shí)有很多人開發(fā), 并且開發(fā)人員可能不固定, 所以更需要持續(xù)集成的支持.
JavaEye:8.在使用持續(xù)集成的過程中一定會(huì)遇到很多的問題,我們應(yīng)該注意些什么呢,能簡(jiǎn)單的介紹下嗎?
許老師:我個(gè)人覺得這個(gè)問題是關(guān)于持續(xù)集成的基本實(shí)踐, 因?yàn)槊恳粋(gè)實(shí)踐都是在解決一個(gè)或多個(gè)問題.
一些常見的問題包括: 構(gòu)建流程不清晰, 構(gòu)建時(shí)間很長(zhǎng), 只有特定人員關(guān)心構(gòu)建結(jié)果, 構(gòu)建失敗后繼續(xù)提交代碼, 在某個(gè)開發(fā)機(jī)器上運(yùn)行構(gòu)建等等.
那對(duì)于這些問題, 我們應(yīng)該怎么做呢?
首先, 應(yīng)用持續(xù)集成的過程, 是一個(gè)對(duì)現(xiàn)有的開發(fā)流程進(jìn)行分析和改進(jìn)的過程, 當(dāng)項(xiàng)目比較大時(shí), 我們需要一個(gè)清晰的流程來進(jìn)行階段性構(gòu)建, 比如, 單元測(cè)試, 打包, 集成測(cè)試, 用戶驗(yàn)收測(cè)試, 性能測(cè)試, 部署, 不同的項(xiàng)目都有自己特定的具體流程,通過這種流程劃分, 我們可以清晰的知道自己的構(gòu)建流程, 并且知道每一次構(gòu)建都到了什么程度.
其次, 每個(gè)人都要關(guān)心構(gòu)建的結(jié)果, 怎么來保證這一點(diǎn)呢? 項(xiàng)目組可以有一個(gè)約定, 如果構(gòu)建失敗, 所有人都要停止提交, 或者把構(gòu)建修好, 或者把最近的改動(dòng)撤銷. 這樣每個(gè)人都會(huì)關(guān)心構(gòu)建結(jié)果, 因?yàn)槿绻愕男薷氖箻?gòu)建失敗了, 那會(huì)影響整個(gè)團(tuán)隊(duì)的進(jìn)度.
再次, 要有一個(gè)簡(jiǎn)單有效的方式來報(bào)告失敗, 這樣構(gòu)建失敗的時(shí)候整個(gè)團(tuán)隊(duì)都能夠方便的知道結(jié)果, 然后相應(yīng)的人員就可以進(jìn)行修復(fù).
因?yàn)闀r(shí)間關(guān)系, 這里只是簡(jiǎn)單介紹, 關(guān)于持續(xù)集成實(shí)踐的具體內(nèi)容, 我們會(huì)在培訓(xùn)中進(jìn)行具體的分析和介紹.
JavaEye:9.您對(duì)JavaEye網(wǎng)站有什么評(píng)價(jià)嗎?可以說說您對(duì)JavaEye的建議和期望嗎?
許老師:我覺得JavaEye給我們提供了一個(gè)很好的交流平臺(tái), 但我個(gè)人覺得里面應(yīng)該有一個(gè)地方來發(fā)廣告貼, 比如我在前一家公司的時(shí)候, 總是想找一個(gè)好些的論壇(比如JavaEye, csdn)發(fā)招聘貼,但總是被刪掉. 我覺得這種招聘帖可以分為企業(yè)客戶和未驗(yàn)證客戶, 在不同的地方展示. 純屬個(gè)人想法, JavaEye應(yīng)該有自己的定位.(re:JavaEye目前有提供付費(fèi)的招聘服務(wù))
個(gè)人介紹 
李彥輝,ThoughtWorks咨詢師,在大規(guī)模企業(yè)應(yīng)用開發(fā)和互聯(lián)網(wǎng)應(yīng)用開發(fā)方面有6年經(jīng)驗(yàn),對(duì)于程序設(shè)計(jì)和敏捷開發(fā)方法的理論和實(shí)踐方面有較深認(rèn)識(shí)。目前致力于研究和傳播構(gòu)建、測(cè)試、部署方面的最佳實(shí)踐。
許偉,ThoughtWorks咨詢師,擁有6年企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn),對(duì)于程序設(shè)計(jì)和敏捷開發(fā)方法的實(shí)踐有較深認(rèn)識(shí)。加入ThoughtWorks之前作為項(xiàng)目經(jīng)理成功交付了多個(gè)企業(yè)應(yīng)用項(xiàng)目。目前發(fā)起了Thelei Code Generator和DBDeploy For C++等多個(gè)開源項(xiàng)目,現(xiàn)從事敏捷軟件開發(fā),關(guān)注于敏捷實(shí)踐在軟件開發(fā)中的應(yīng)用,致力于敏捷實(shí)踐的推廣。
ThoughtWorks資深講師為您揭秘-持續(xù)集成之道 
2009年11月19日-20日,ThoughtWorks將在北京舉行持續(xù)集成的培訓(xùn)大會(huì),講解如何使用Cruise進(jìn)行持續(xù)集成開發(fā)。相信身為企業(yè)核心的你一定不會(huì)錯(cuò)過!
鏈接:http://www.javaeye.com/news/10959-thoughtworks
11月19日(周四、全天)、11月20日(周五、上午半天)
北京京儀大酒店
每天7小時(shí) (9:00-12:00,13:30-17:30),上午半天(9:00-12:00)
課程名稱:持續(xù)集成之道-使用Cruise培訓(xùn)課程
課程介紹:
軟件項(xiàng)目需要敏捷,企業(yè)更需要敏捷。一支敏捷的團(tuán)隊(duì)能夠在項(xiàng)目中收獲成功,而一家敏捷的企業(yè)能夠在市場(chǎng)的風(fēng)雨中屹立不倒。
在敏捷實(shí)踐中存在一種名為“持續(xù)集成”的實(shí)踐。持續(xù)集成(ContinuousIntegration,CI)是“節(jié)能減排”的一種重要體現(xiàn),是一種綠色實(shí)踐,它在拒絕浪費(fèi),降低產(chǎn)品研發(fā)風(fēng)險(xiǎn),提高軟件質(zhì)量方面起到了舉足輕重的作用。尤其是對(duì)企業(yè)級(jí)用戶來說,它大大的降低了開發(fā)成本和周期。
從全世界范圍的軟件研發(fā)趨勢(shì)來看,開源項(xiàng)目都實(shí)施了持續(xù)集成的工作,大量商用軟件的研發(fā)工作也在逐漸擁抱這一敏捷實(shí)踐。
通過本課程你將會(huì)學(xué)到如何搭建有效的持續(xù)集成環(huán)境,來幫助減少開發(fā)中的集成問題,提高代碼質(zhì)量以及整個(gè)團(tuán)隊(duì)的溝通和協(xié)作。你也會(huì)發(fā)現(xiàn),一個(gè)好的持續(xù)集成環(huán)境如何扮演團(tuán)隊(duì)中溝通樞紐的角色。
培訓(xùn)目標(biāo)
理解持續(xù)集成的要點(diǎn)及原則
能夠在自己的組織中搭建持續(xù)集成環(huán)境,運(yùn)行自動(dòng)化測(cè)試,收集并報(bào)告構(gòu)建結(jié)果
能夠識(shí)別并解決持續(xù)集成中的常見問題
了解Cruise的特性和用法
培訓(xùn)對(duì)象
本課程適合公司技術(shù)負(fù)責(zé)人,項(xiàng)目經(jīng)理,資深開發(fā)人員。
課程內(nèi)容
持續(xù)集成的要點(diǎn)和原則
持續(xù)集成的準(zhǔn)備工作
搭建持續(xù)集成環(huán)境
構(gòu)建策略和最佳實(shí)踐
構(gòu)建結(jié)果通知機(jī)制
自動(dòng)化測(cè)試
自動(dòng)化代碼分析
與問題追蹤工具集成
自動(dòng)化發(fā)布管理
分布式構(gòu)建
在大型項(xiàng)目中應(yīng)用持續(xù)集成
安徽新華電腦學(xué)校專業(yè)職業(yè)規(guī)劃師為你提供更多幫助【在線咨詢】