国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

持續(xù)集成在軟件開發(fā)過程中的應(yīng)用

2014-03-15 03:28:50邢曉偉
關(guān)鍵詞:線程代碼客戶端

邢曉偉

(中興軟創(chuàng)科技股份有限公司,江蘇 南京 210000)

持續(xù)集成是一種軟件開發(fā)實(shí)踐,即團(tuán)隊(duì)開發(fā)成員經(jīng)常集成他們的工作,通常每個(gè)成員每天至少集成一次,這就意味著每天可能會發(fā)生多次集成[1]。在實(shí)際使用中,持續(xù)交付主要關(guān)注于構(gòu)建、部署、測試和發(fā)布過程[2],每次集成都通過自動化的構(gòu)建(包括編譯、發(fā)布、自動化測試)來驗(yàn)證,從而盡快地發(fā)現(xiàn)集成錯誤。許多團(tuán)隊(duì)發(fā)現(xiàn)這個(gè)過程可以大大減少集成的問題,讓團(tuán)隊(duì)能夠更快地開發(fā)內(nèi)聚的軟件。在軟件業(yè),谷歌作為當(dāng)前科技領(lǐng)頭羊率先在內(nèi)部推行并使用了持續(xù)集成模式,在其內(nèi)部的持續(xù)集成系統(tǒng)中,數(shù)以億計(jì)的構(gòu)建動作會出發(fā)幾百萬自動化測試[3]。谷歌的先行開辟了快速開發(fā)領(lǐng)域的測試新模式。

1 持續(xù)集成開發(fā)模式

1.1 持續(xù)集成的目的

持續(xù)集成是用來解決隨著不斷提高軟件開發(fā)復(fù)雜度帶來的軟件質(zhì)量風(fēng)險(xiǎn)問題。為了快速響應(yīng)不斷變化的需求而提出的敏捷開發(fā)概念導(dǎo)致版本更新速度非???,而軟件內(nèi)部相互模塊間的干擾自然變得更加頻繁,這時(shí)候就需要嚴(yán)格的軟件測試。軟件測試不能等同于程序測試,軟件測試應(yīng)當(dāng)貫穿軟件生存周期全過程[4],持續(xù)集成在敏捷開發(fā)中可以保障快速適應(yīng)和軟件質(zhì)量,重點(diǎn)使得持續(xù)集成顯得尤其重要。

1.2 持續(xù)集成的方法

持續(xù)集成是為了達(dá)成快速質(zhì)量保障進(jìn)行的一種軟件開發(fā)實(shí)踐。它倡導(dǎo)開發(fā)團(tuán)隊(duì)必須經(jīng)常集成他們的工作,每天集成一次甚至發(fā)生多次集成。如果每次集成都需要人工完成其中的編譯、發(fā)布和測試就顯得成本太高。因此通過自動化的構(gòu)建來驗(yàn)證每次的集成,包括自動編譯、發(fā)布和測試,從而盡快地發(fā)現(xiàn)集成錯誤,這就是持續(xù)集成在實(shí)際應(yīng)用中需要解決的問題,它讓團(tuán)隊(duì)能夠更快地開發(fā)內(nèi)聚的軟件。

1.3 持續(xù)集成的特點(diǎn)

持續(xù)集成中無需太多的人工干預(yù),其任何一個(gè)環(huán)節(jié)都應(yīng)該是自動完成,從而減少重復(fù)過程以節(jié)省時(shí)間、費(fèi)用和工作量。

1.4 持續(xù)集成的價(jià)值

持續(xù)集成在需求不明確或是頻繁變更的情景中顯得尤其重要,持續(xù)集成的質(zhì)量能幫助團(tuán)隊(duì)進(jìn)行有效決策,同時(shí)建立團(tuán)隊(duì)對產(chǎn)品的信心。同時(shí)可以實(shí)時(shí)反饋出軟件的實(shí)際開發(fā)進(jìn)展,能夠很明確地給出當(dāng)前時(shí)間點(diǎn)以及哪些已經(jīng)完成的功能是可用可部署的。

2 設(shè)計(jì)原理及特點(diǎn)

持續(xù)集成平臺的建設(shè)目標(biāo)是:在給定成本、進(jìn)度的前提下,在架構(gòu)設(shè)計(jì)上需要具有適用、有效、可靠、可互操作。這些目標(biāo)有助于提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率,減少維護(hù)的困難。同時(shí)需要功能上滿足持續(xù)集成的需求,必須具備相應(yīng)的調(diào)度、執(zhí)行、統(tǒng)計(jì)、推送等持續(xù)集成的基礎(chǔ)功能,在性能上需要能及時(shí)有效的完成流程各個(gè)環(huán)節(jié),盡量降低一輪集成的時(shí)間,基于以上要求,在架構(gòu)上選擇了C/S(Client/Server)與B/S(Browser/Server) 的組合模式,以達(dá)到性能與使用性的最優(yōu)。在功能設(shè)計(jì)上,采用分層設(shè)計(jì)和開發(fā),在不同的層次實(shí)現(xiàn)不同的業(yè)務(wù)功能,即便于開發(fā)也便于后期各模塊之間的調(diào)度。

2.1 架構(gòu)模式

持續(xù)集成作為一個(gè)系統(tǒng)化的平臺,不僅要提供用戶的介入平臺,也需要提供完善的服務(wù)器運(yùn)行維護(hù)管理,這就對軟件的架構(gòu)提出了很高的要求,經(jīng)過論證,決定將整體的軟件分為用戶界面與服務(wù)器管理兩部分,分別采用B/S與C/S架構(gòu)。其中提供給客戶使用的部分為B/S模式,主要考慮到用戶數(shù)量眾多,頻繁的客戶端升級與安裝將占用太多的維護(hù)成本。而用來調(diào)用相關(guān)的代碼檢查、編譯、部署的部分則采用C/S架構(gòu),由一個(gè)主控與多個(gè)客戶端構(gòu)成,這樣既能提高運(yùn)行效率,也方便在服務(wù)器上進(jìn)行統(tǒng)一部署。

2.1.1 B/S架構(gòu)模式 B/S結(jié)構(gòu)最大的優(yōu)點(diǎn)就是只要安裝有瀏覽器即可在任何地方進(jìn)行操作,不用安裝其他任何專門的軟件。只要有一臺能上網(wǎng)的電腦就能使用,客戶端幾乎零維護(hù)。系統(tǒng)的擴(kuò)展性非常容易,只要能上網(wǎng),再由系統(tǒng)管理員分配一個(gè)用戶名和密碼,就可以使用了。但是B/S架構(gòu)依賴瀏覽器,而瀏覽器的版本繁多,很多瀏覽器核心架構(gòu)差別也很大,導(dǎo)致對于網(wǎng)頁的兼容性有很大影響,尤其是在CSS[注]CSS:一種樣式設(shè)計(jì)語言。布局、JavaScript[注]JavaScript:一種客戶端腳本語言。腳本執(zhí)行等方面,會有很大影響?;谶@樣各種問題,目前本系統(tǒng)在內(nèi)部推廣時(shí),推薦使用安裝最廣泛的IE8瀏覽器。

2.1.2 C/S架構(gòu)模式 C/S結(jié)構(gòu),是大家熟知的軟件系統(tǒng)體系結(jié)構(gòu),通過將任務(wù)合理分配到Client端和Server端,降低了系統(tǒng)的通訊開銷,需要安裝客戶端才可進(jìn)行管理操作。

客戶端和服務(wù)器端的程序不同,用戶的程序主要在客戶端,服務(wù)器端主要提供數(shù)據(jù)管理、數(shù)據(jù)共享、數(shù)據(jù)及系統(tǒng)維護(hù)和并發(fā)控制等,客戶端程序主要完成用戶的具體的業(yè)務(wù)。

C/S結(jié)構(gòu)最大的優(yōu)勢在于其優(yōu)異的性能和穩(wěn)定的運(yùn)行能力,在系統(tǒng)實(shí)際選型時(shí)考慮到系統(tǒng)的執(zhí)行性能(不含展示部分,僅考慮后臺運(yùn)行模塊),分布式部署的C/S架構(gòu)自然就是首選。

2.2 總體功能

持續(xù)集成系統(tǒng)在架構(gòu)設(shè)計(jì)層面采用分層設(shè)計(jì)和開發(fā),降低模塊間的耦合度,使每一個(gè)子系統(tǒng)相對獨(dú)立,降低維護(hù)成本。分布式部署和調(diào)度,降低主機(jī)網(wǎng)絡(luò)等環(huán)境異常帶來的損失易于統(tǒng)計(jì)分析。

從我國民族體育發(fā)展來看,將其與旅游業(yè)態(tài)相結(jié)合尚處于起步階段。雖然高端定制民族體育旅游發(fā)展市場目標(biāo)明確,但是對于高端定制的發(fā)展要求較高,且不僅市場定位人群有限,而且在項(xiàng)目選擇,旅游產(chǎn)品服務(wù)質(zhì)量保證方面在均存在一定的問題。針對高端定制民族體育旅游發(fā)展中存在困難,希望能借助“互聯(lián)網(wǎng)+”時(shí)代的到來而得到解決,讓民族體育在時(shí)代洪流中大放異彩。

系統(tǒng)有BCL(Business Component Library)、 ZCIPA(Ztesoft Continuous Integration Platform Agent)、 ZCIPS(Ztesoft Continuous Integration Platform Server)3部分組成,互相獨(dú)立,又有內(nèi)在聯(lián)系,其中BCL管理所有的可用組件,ZCIPA負(fù)責(zé)接受服務(wù)器的指令并調(diào)用BCL中的組件來實(shí)現(xiàn)其命令,而ZCIPS主要作為一個(gè)計(jì)劃調(diào)度器的存在,在其中集成了配置頁面、命令調(diào)度、報(bào)告系統(tǒng)等。

使用此方案的目的是:1) 減少系統(tǒng)間的耦合;2) 集中式管理,分布式部署和調(diào)度;3) 核心數(shù)據(jù)數(shù)據(jù)庫存儲使得后期報(bào)表統(tǒng)計(jì)和質(zhì)量分析容易處理;4) BCL組件和ZCIPA分布式部署,降低主機(jī)異常帶來的損失;5) 日志分布部署,提高機(jī)器的利用率,減少對高性能主機(jī)的依賴;6) BCL組件可單獨(dú)使用。

2.3 數(shù)據(jù)存儲方式

系統(tǒng)的核心數(shù)據(jù)采用關(guān)系型數(shù)據(jù)庫進(jìn)行集中存儲,同時(shí)使用了分布式日志存儲,所有的靜態(tài)配置數(shù)據(jù)以及接口數(shù)據(jù)都存儲在數(shù)據(jù)庫中。系統(tǒng)內(nèi)部主要采用的是數(shù)據(jù)庫接口的方式進(jìn)行信息傳遞,對外提供消息接口、文件接口等多種接口方式??蛻舳苏{(diào)度主要使用消息接口,而各個(gè)客戶端在完成其自身任務(wù)后通過表接口通知服務(wù)器進(jìn)展并記錄關(guān)鍵日志,相關(guān)的日志信息以文件方式存儲在各個(gè)客戶端本地,只有在有查詢需求的時(shí)候以文件接口的方式傳輸給服務(wù)器,有效降低了數(shù)據(jù)的傳輸量,提高了運(yùn)行效率。

2.4 任務(wù)調(diào)度

在系統(tǒng)中,為減少人工工作量,持續(xù)集成的流程處理都是推薦以定時(shí)計(jì)劃的形式存在,但是也包含手工拉起任務(wù)的方式。為了進(jìn)行統(tǒng)一調(diào)度處理,考慮到拉起進(jìn)程的時(shí)間消耗其實(shí)很少,主要的消耗是在客戶端,在服務(wù)器定義了一個(gè)唯一的任務(wù)調(diào)度線程(下稱主線程)。主線程負(fù)責(zé)拉起對應(yīng)的處理線程,而處理線程實(shí)時(shí)監(jiān)聽和調(diào)度對應(yīng)客戶端的處理結(jié)果。

系統(tǒng)中實(shí)際的任務(wù)調(diào)度模式如下:首先系統(tǒng)會在數(shù)據(jù)庫中加載所有的定時(shí)任務(wù),將其交給定時(shí)任務(wù)線程,該線程按照規(guī)則將其編制成帶派發(fā)的帶時(shí)間的任務(wù)列表,同時(shí)手工拉起的任務(wù)也在這個(gè)隊(duì)列中,在任務(wù)需要激活的時(shí)間點(diǎn)將其通過內(nèi)部消息隊(duì)列交給主線程,主線程按照任務(wù)生產(chǎn)相應(yīng)的處理線程,處理線程通過消息通知對應(yīng)的客戶端接受任務(wù),而客戶端按照消息命令拉起對應(yīng)的任務(wù)組件,從而完成整體的流程調(diào)度。

3 實(shí)際應(yīng)用結(jié)果及分析

持續(xù)集成和持續(xù)發(fā)布的理念提出后,首先看到的是當(dāng)前的發(fā)布模式與持續(xù)集成理念的不一致。當(dāng)前發(fā)布模式是制訂版本計(jì)劃在指定時(shí)間點(diǎn)完成規(guī)劃工作后發(fā)布,而持續(xù)集成和持續(xù)發(fā)布的理念提出,應(yīng)該隨時(shí)集成并且相應(yīng)地要做到隨時(shí)發(fā)布。因此需要以某個(gè)版本試點(diǎn)持續(xù)集成和持續(xù)發(fā)布的模式。

3.1 實(shí)際應(yīng)用

在系統(tǒng)基礎(chǔ)功能就緒以后,筆者團(tuán)隊(duì)選用了一個(gè)業(yè)務(wù)版本,將其部署在持續(xù)集成系統(tǒng)上,并進(jìn)行了監(jiān)控。執(zhí)行結(jié)果統(tǒng)計(jì)見表1。

表1 兩周內(nèi)運(yùn)行結(jié)果比較

3.2 結(jié)果分析

在實(shí)際使用中,有定時(shí)的郵件報(bào)告,可以實(shí)時(shí)看到代碼靜態(tài)檢查結(jié)果與回歸測試用例的運(yùn)行結(jié)果,使得開發(fā)人員在進(jìn)行代碼開發(fā)時(shí)有了很多的督促,從表1可以看出,CppCheck的結(jié)果在第一周集中整理時(shí)有較大的下降,而且,在之后的開發(fā)過程中,數(shù)量沒有上升,可見在其后的開發(fā)過程中,開發(fā)開始關(guān)注的代碼編寫規(guī)范問題,這使得代碼的可讀性得到了有效的保障。

再看版本制作,實(shí)際執(zhí)行時(shí)由于各種原因,并沒有每天都得到完整的結(jié)果,但是在成功運(yùn)行的3天中,可以確定這生成的3個(gè)版本是有效的。因此即使在成功率很低的情況下,在2周內(nèi)仍然獲取了3個(gè)可用版本,相比以前一個(gè)月才能出一個(gè)版本,效率得到了很大的提升。

在實(shí)際部署時(shí)也出現(xiàn)了不少問題,例如運(yùn)行時(shí)發(fā)現(xiàn)主機(jī)宕機(jī)、網(wǎng)絡(luò)故障、數(shù)據(jù)庫故障等經(jīng)常導(dǎo)致整個(gè)系統(tǒng)的運(yùn)行不正常。也發(fā)現(xiàn)有代碼編譯不通過的情況,在后繼的實(shí)施過程中,這些都是需要重點(diǎn)考慮解決的問題,應(yīng)該將非版本因素的影響降到最低,在出現(xiàn)版本質(zhì)量問題的時(shí)候也能夠及時(shí)有效地進(jìn)行反饋。

4 結(jié) 論

持續(xù)集成的開發(fā)模式是近年來新興的一種快速迭代的開發(fā)方式,能有效提高開發(fā)效率與版本質(zhì)量。持續(xù)集成主要考慮的問題有:多種工具的協(xié)調(diào)使用,快速的執(zhí)行速度,與各種平臺和環(huán)境的集成。在實(shí)際應(yīng)用中,以研發(fā)持續(xù)集成平臺的方式來實(shí)現(xiàn)。

持續(xù)集成作為一個(gè)系統(tǒng)平臺,有效地整合了軟件質(zhì)量保障的各個(gè)系統(tǒng)與功能。實(shí)現(xiàn)以下建設(shè)目標(biāo):1) 通過各種代碼編寫規(guī)范的檢查,提高并保障了代碼的可維護(hù)性。2) 通過對圈復(fù)雜度的檢查,降低了代碼的復(fù)雜度,提高了可修改性與可理解性。3) 通過定期頻繁的編譯與部署,保障了軟件版本的有效性。使得出現(xiàn)編譯與部署風(fēng)險(xiǎn)的可能性大大下降。4) 通過自動用例的定期執(zhí)行,保障了代碼功能的可靠性。5) 通過每天的版本發(fā)布使得需求的發(fā)布周期大大縮短,提高了系統(tǒng)的可追蹤性。6) 通過對代碼的扇入扇出度檢查,降低了扇入扇出度,提高了代碼的可移植性與可重用性。

通過續(xù)集成系統(tǒng),在軟件開發(fā)過程中達(dá)成持續(xù)集成的目的,實(shí)現(xiàn)快速實(shí)時(shí)的版本發(fā)布。問題快速發(fā)現(xiàn)快速解決,將軟件開發(fā)提升到一個(gè)新的階段。

[1] Paul M D,Steve M,Andrew G.持續(xù)集成:軟件質(zhì)量改進(jìn)和風(fēng)險(xiǎn)降低之道[M].王海鵬,譯.北京:機(jī)械工業(yè)出版社,2008:2-10

[2] 喬梁.持續(xù)交付的魅力[EB/OL].[2011-10-12].http://www.infoq.com/cn/zones/baidu-salon/content-16.html

[3] James W,Jason A,Jeff C.Google 軟件測試之道[M].黃利,李中杰,薛明,譯.北京:人民郵電出版社,2012:1-10

[4] Robert C M.敏捷軟件開發(fā):原則、模式與實(shí)踐[M].鄧輝,譯.北京:清華大學(xué)出版社,2003:98-119

[5] 徐仕成.持續(xù)集成在現(xiàn)代軟件開發(fā)中的應(yīng)用與研究[D].長沙:中南大學(xué),2007

猜你喜歡
線程代碼客戶端
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
縣級臺在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
傳媒評論(2018年4期)2018-06-27 08:20:24
孵化垂直頻道:新聞客戶端新策略
傳媒評論(2018年4期)2018-06-27 08:20:16
基于Vanconnect的智能家居瘦客戶端的設(shè)計(jì)與實(shí)現(xiàn)
電子測試(2018年10期)2018-06-26 05:53:34
淺談linux多線程協(xié)作
客戶端空間數(shù)據(jù)緩存策略
Linux線程實(shí)現(xiàn)技術(shù)研究
确山县| 双城市| 宜城市| 屏东市| 苏尼特左旗| 班玛县| 剑阁县| 金溪县| 泰顺县| 孝感市| 确山县| 北川| 瑞安市| 南召县| 建瓯市| 萍乡市| 龙江县| 丰台区| 富蕴县| 理塘县| 夏邑县| 余姚市| 赤水市| 武宁县| 定边县| 高要市| 邵武市| 福泉市| 栾川县| 刚察县| 石台县| 平安县| 沙田区| 灌云县| 淳化县| 哈密市| 昔阳县| 呼伦贝尔市| 龙川县| 临颍县| 井冈山市|