国产美女精品福利一区二区_国产尤物av尤物在线观看_中文字幕在线中文字幕二区_精品国产子伦久久久久久小说_手机在线黄色网址_亚洲一区二区精品

400-821-6015
行業(yè)資訊
您當(dāng)前的位置:首頁(yè) ? 行業(yè)資訊 ? 行業(yè)資訊
內(nèi)部資訊行業(yè)資訊

談?wù)劽艚蓍_(kāi)發(fā)、SCRUM、 DevOps及持續(xù)集成

發(fā)布日期:2022-04-29
1.

敏捷開(kāi)發(fā)

1.1 什么是敏捷?

       敏捷是用于描述軟件開(kāi)發(fā)方法的術(shù)語(yǔ),強(qiáng)調(diào)增量交付、團(tuán)隊(duì)協(xié)作、持續(xù)規(guī)劃和持續(xù)學(xué)習(xí)。"敏捷"一詞源于2001年《敏捷宣言》。宣言旨在確立指導(dǎo)軟件開(kāi)發(fā)更優(yōu)方法的原則。其核心是宣布代表敏捷運(yùn)動(dòng)基礎(chǔ)的4項(xiàng)價(jià)值觀:

  • 個(gè)體和交互 勝過(guò) 過(guò)程和工具
  • 可以工作的軟件 勝過(guò) 面面俱到的文檔
  • 客戶合作 勝過(guò) 合同談判
  • 響應(yīng)變化 勝過(guò) 遵循計(jì)劃

      依據(jù)以上四條價(jià)值觀,衍生出來(lái)更具體的十二大原則,作為對(duì)敏捷宣言更具實(shí)操性的解釋,其具體原則內(nèi)容如下:

      1) 最重要的是通過(guò)盡早和不斷交付有價(jià)值的軟件滿足客戶需要。

      2) 我們歡迎需求的變化,即使在開(kāi)發(fā)后期。敏捷過(guò)程能夠駕馭變化,保持客戶的競(jìng)爭(zhēng)優(yōu)勢(shì)。

      3) 經(jīng)常交付可以工作的軟件,從幾星期到幾個(gè)月,時(shí)間尺度越短越好。

      4) 業(yè)務(wù)人員和開(kāi)發(fā)者應(yīng)該在整個(gè)項(xiàng)目過(guò)程中始終朝夕在一起工作。

      5) 圍繞斗志高昂的人進(jìn)行軟件開(kāi)發(fā),給開(kāi)發(fā)者提供適宜的環(huán)境,滿足他們的需要,并相信他們能夠完成任務(wù)。

      6) 在開(kāi)發(fā)小組中最有效率也最有效果的信息傳達(dá)方式是面對(duì)面的交談。

      7) 可以工作的軟件是進(jìn)度的主要度量標(biāo)準(zhǔn)。

      8) 敏捷過(guò)程提倡可持續(xù)開(kāi)發(fā)。出資人、開(kāi)發(fā)人員和用戶應(yīng)該總是維持不變的節(jié)奏。

      9) 對(duì)卓越技術(shù)與良好設(shè)計(jì)的不斷追求將有助于提高敏捷性。

    10) 簡(jiǎn)單——盡可能減少工作量的藝術(shù)至關(guān)重要。

    11) 最好的架構(gòu)、需求和設(shè)計(jì)都源自自我組織的團(tuán)隊(duì)。

    12) 每隔一定時(shí)間,團(tuán)隊(duì)都要總結(jié)如何更有效率,然后相應(yīng)地調(diào)整自己的行為。

1.2 敏捷開(kāi)發(fā)概念與特點(diǎn)

      敏捷開(kāi)發(fā)是一種從1990年代開(kāi)始逐漸引起廣泛關(guān)注的新型軟件開(kāi)發(fā)方法,是一種應(yīng)對(duì)快速變化的需求的一種軟件開(kāi)發(fā)能力。它們的具體名稱、理念、過(guò)程、術(shù)語(yǔ)都不盡相同,相對(duì)于“非敏捷”,更強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密協(xié)作、面對(duì)面的溝通、頻繁交付新的軟件版本、緊湊而自我組織型的團(tuán)隊(duì)、能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法,也更注重軟件開(kāi)發(fā)中人的作用。

敏捷開(kāi)發(fā)是用于描述迭代軟件開(kāi)發(fā)的術(shù)語(yǔ)。敏捷開(kāi)發(fā)通常與傳統(tǒng)或瀑布開(kāi)發(fā)形成對(duì)比,在傳統(tǒng)或瀑布開(kāi)發(fā)中,大型項(xiàng)目是按照該計(jì)劃進(jìn)行規(guī)劃和執(zhí)行的。

      敏捷開(kāi)發(fā)以用戶的需求進(jìn)化為核心,采用迭代、循序漸進(jìn)的方法進(jìn)行軟件開(kāi)發(fā)。在敏捷開(kāi)發(fā)中,軟件項(xiàng)目在構(gòu)建初期被切分成多個(gè)子項(xiàng)目,各個(gè)子項(xiàng)目的成果都經(jīng)過(guò)測(cè)試,具備可視、可集成和可運(yùn)行使用的特征。換言之,就是把一個(gè)大項(xiàng)目分為多個(gè)相互聯(lián)系,但也可獨(dú)立運(yùn)行的小項(xiàng)目,并分別完成,在此過(guò)程中軟件一直處于可使用狀態(tài)。迭代軟件開(kāi)發(fā)縮短了軟件開(kāi)發(fā)生命周期。

1.3 敏捷開(kāi)發(fā)流程

      敏捷開(kāi)發(fā)團(tuán)隊(duì)以較小的增量執(zhí)行整個(gè)軟件開(kāi)發(fā)生命周期,通常稱為沖刺(sprint)。沖刺通常有1-4周長(zhǎng)。每次沖刺交付產(chǎn)品級(jí)代碼都需要敏捷的開(kāi)發(fā)團(tuán)隊(duì)來(lái)應(yīng)對(duì)加速的步伐。所有編碼、測(cè)試和質(zhì)量驗(yàn)證都必須在每個(gè)沖刺階段完成。各團(tuán)隊(duì)間應(yīng)密切協(xié)作,否則可能會(huì)導(dǎo)致失敗甚至慘敗。

圖1:敏捷開(kāi)發(fā)流程示意圖

      敏捷開(kāi)發(fā)團(tuán)隊(duì)幾個(gè)關(guān)鍵的成功因素:

      1. 細(xì)化需求列表

      2. 早期并高頻集成

      3. 盡量避免技術(shù)缺陷

1.4 敏捷方法與最佳實(shí)踐

       敏捷是一種尋找軟件開(kāi)發(fā)方法的態(tài)度。敏捷方法中沒(méi)有一種方法適用于所有情況,而"敏捷"一詞已經(jīng)代表與宣言中的價(jià)值陳述一致的各種敏捷方法與最佳實(shí)踐。

       敏捷方法是一個(gè)囊括了各種框架和方法的涵蓋性術(shù)語(yǔ),它指的是符合《敏捷宣言》價(jià)值觀和原則的任何方法、技術(shù)、框架、手段或?qū)嵺`。敏捷方法(通常稱為敏捷框架)是軟件開(kāi)發(fā)生命周期階段(規(guī)劃、執(zhí)行和交付)的綜合方法。它規(guī)定了一套在明確的指導(dǎo)和原則下完成工作的方法。

      敏捷方法主要包括SCRUM方法、DSDM 方法、水晶方法、特性驅(qū)動(dòng)方法和 SCRUMBAN 等。例如Scrum是最常見(jiàn)的敏捷框架。持續(xù)集成(Continuous Integration,CI)是常見(jiàn)的敏捷工程實(shí)踐方法。

需要說(shuō)明的是,敏捷方法與最佳實(shí)踐并不承諾解決每一個(gè)問(wèn)題,但他們確實(shí)承諾建立一個(gè)文化和環(huán)境,通過(guò)協(xié)作,不斷的規(guī)劃和學(xué)習(xí),并快速迭代交付高質(zhì)量的軟件,最終滿足客戶需求。


2. 

SCRUM方法

2.1 SCRUM綜述

       Scrum 是團(tuán)隊(duì)用于管理其工作的框架,將敏捷原則作為一套具體的工件、實(shí)踐和角色,通常用于敏捷軟件開(kāi)發(fā)。具體來(lái)說(shuō),Scrum 是用于開(kāi)發(fā)、交付和持續(xù)支持復(fù)雜產(chǎn)品的一個(gè)框架,是一個(gè)增量的、迭代的開(kāi)發(fā)過(guò)程。Scrum起源于軟件開(kāi)發(fā)項(xiàng)目,Scrum包括了一系列實(shí)踐和預(yù)定義角色的過(guò)程骨架。Scrum中的主要角色包括同項(xiàng)目經(jīng)理類似的Scrum主管角色負(fù)責(zé)維護(hù)過(guò)程和任務(wù),產(chǎn)品負(fù)責(zé)人代表利益所有者,開(kāi)發(fā)團(tuán)隊(duì)包括了所有開(kāi)發(fā)人員。雖然Scrum是為管理軟件開(kāi)發(fā)項(xiàng)目而開(kāi)發(fā)的,它同樣可以用于運(yùn)行軟件維護(hù)團(tuán)隊(duì),或者作為計(jì)劃管理方法,適用于任何復(fù)雜的或是創(chuàng)新性的項(xiàng)目。如Scrum 目前已被用于開(kāi)發(fā)軟件、硬件、嵌入式軟件、交互功能網(wǎng)絡(luò)、自動(dòng)駕駛、學(xué)校、政府、市場(chǎng)、管理組織運(yùn)營(yíng),以及日常生活中更廣泛的產(chǎn)品開(kāi)發(fā)領(lǐng)域。

2.2 SCRUM流程

       Scrum整個(gè)開(kāi)發(fā)流程(見(jiàn)圖2) 由若干個(gè)短的迭代周期組成,一個(gè)短的迭代周期稱為一個(gè)Sprint,每個(gè)Sprint的建議長(zhǎng)度是一至四周。在Scrum中,使用產(chǎn)品Backlog來(lái)管理產(chǎn)品的需求,產(chǎn)品backlog是一個(gè)按照商業(yè)價(jià)值排序的需求列表,列表?xiàng)l目的體現(xiàn)形式通常為用戶故事。Scrum團(tuán)隊(duì)總是先開(kāi)發(fā)對(duì)客戶具有較高價(jià)值的需求。在Sprint中,Scrum團(tuán)隊(duì)從產(chǎn)品Backlog中挑選最高優(yōu)先級(jí)的需求進(jìn)行開(kāi)發(fā)。挑選的需求在Sprint計(jì)劃會(huì)議上經(jīng)過(guò)討論、分析和估算得到相應(yīng)的任務(wù)列表,我們稱它為Sprint backlog。在每個(gè)迭代結(jié)束時(shí),Scrum團(tuán)隊(duì)將提交潛在可交付的產(chǎn)品增量。

圖2 Scrum流程圖

2.3 SCRUM框架

      Scrum框架包括3個(gè)角色、3個(gè)工件、5個(gè)事件、5個(gè)價(jià)值:3個(gè)角色:產(chǎn)品負(fù)責(zé)人(Product Owner)、Scrum Master、開(kāi)發(fā)團(tuán)隊(duì)3個(gè)工件:產(chǎn)品Backlog(Product Backlog)、SprintBacklog、產(chǎn)品增量(Increment)5個(gè)事件:Sprint(Sprint本身是一個(gè)事件,包括了如下4個(gè)事件)、Sprint計(jì)劃會(huì)議(Sprint Planning Meeting)、每日站會(huì)(Daily Scrum Meeting)、Sprint評(píng)審會(huì)議(Sprint Review Meeting)、Sprint回顧會(huì)議(Sprint Retrospective Meeting)

       5個(gè)價(jià)值:承諾 – 愿意對(duì)目標(biāo)做出承諾、專注– 把你的心思和能力都用到你承諾的工作上去、開(kāi)放– Scrum 把項(xiàng)目中的一切開(kāi)放給每個(gè)人看、尊重– 每個(gè)人都有他獨(dú)特的背景和經(jīng)驗(yàn)、勇氣– 有勇氣做出承諾,履行承諾,接受別人的尊重


3.

DevOps

3.1 DevOps 定義

      DevOps 是開(kāi)發(fā) (Dev) 和運(yùn)營(yíng) (Ops) 的復(fù)合詞,是一組過(guò)程、方法與系統(tǒng)的統(tǒng)稱,用于促進(jìn)開(kāi)發(fā)(應(yīng)用程序/軟件工程)、技術(shù)運(yùn)營(yíng)和質(zhì)量保障(QA)部門之間的溝通、協(xié)作與整合。

3.2 DevOps 發(fā)展背景

      傳統(tǒng)的軟件組織將開(kāi)發(fā)、IT運(yùn)營(yíng)和質(zhì)量保障設(shè)為各自分離的部門。在這種環(huán)境下如何采用新的開(kāi)發(fā)方法(例如敏捷軟件開(kāi)發(fā)),這是一個(gè)重要的課題:按照從前的工作方式,開(kāi)發(fā)和部署不需要IT支持或者QA深入的、跨部門的支持,而卻需要極其緊密的多部門協(xié)作。然而DevOps考慮的還不止是軟件部署。它是一套針對(duì)這幾個(gè)部門間溝通與協(xié)作問(wèn)題的流程和方法[9]。

      以下幾方面因素可能促使一個(gè)組織引入DevOps:

      1、使用敏捷或其他軟件開(kāi)發(fā)過(guò)程與方法

      2、業(yè)務(wù)負(fù)責(zé)人要求加快產(chǎn)品交付的速率

      3、虛擬化和云計(jì)算基礎(chǔ)設(shè)施(可能來(lái)自內(nèi)部或外部供應(yīng)商)日益普遍

      4、數(shù)據(jù)中心自動(dòng)化技術(shù)和配置管理工具的普及

      5、有一種觀點(diǎn)認(rèn)為,占主導(dǎo)地位的“傳統(tǒng)”美國(guó)式管理風(fēng)格(“斯隆模型 vs 豐田模型”)會(huì)導(dǎo)致“煙囪式自動(dòng)化”,從而造成開(kāi)發(fā)與運(yùn)營(yíng)之間的鴻溝,因此需要DevOps能力來(lái)克服由此引發(fā)的問(wèn)題。

      DevOps經(jīng)常被描述為“開(kāi)發(fā)團(tuán)隊(duì)與運(yùn)營(yíng)團(tuán)隊(duì)之間更具協(xié)作性、更高效的關(guān)系”。由于團(tuán)隊(duì)間協(xié)作關(guān)系的改善,整個(gè)組織的效率因此得到提升,伴隨頻繁變化而來(lái)的生產(chǎn)環(huán)境的風(fēng)險(xiǎn)也能得到降低。

      在云計(jì)算、大數(shù)據(jù)等技術(shù)顛覆性趨勢(shì)繼續(xù)在應(yīng)用經(jīng)濟(jì)下發(fā)揮作用的同時(shí),DevOps也已經(jīng)穩(wěn)健地在業(yè)務(wù)思維方式中占有一席之地,并將扮演主要角色。在應(yīng)用驅(qū)動(dòng)、云連接、移動(dòng)化的大環(huán)境下,對(duì)于很多公司來(lái)說(shuō)DevOps是助力業(yè)務(wù)增值戰(zhàn)略的第一步。

      緊跟行業(yè)趨勢(shì)、進(jìn)行新的技術(shù)變革往往會(huì)帶來(lái)發(fā)展的陣痛,DevOps也同樣要經(jīng)歷這一過(guò)程。中國(guó)及全球各地的企業(yè)正在認(rèn)識(shí)到DevOps可以助力軟件開(kāi)發(fā)速度加快,軟件應(yīng)用質(zhì)量提升,更重要的是與業(yè)務(wù)目標(biāo)更完美地結(jié)合。

3.3 DevOps 文化

       1) 協(xié)作、可見(jiàn)性和一致性

       健康的 DevOps 文化的一個(gè)標(biāo)志是團(tuán)隊(duì)間能夠協(xié)作,首要的便是可見(jiàn)性。開(kāi)發(fā)和 IT 運(yùn)營(yíng)等不同團(tuán)隊(duì)必須能夠相互分享 DevOps 流程、優(yōu)先級(jí)和關(guān)注點(diǎn)。這些團(tuán)隊(duì)還必須能夠共同規(guī)劃工作,并統(tǒng)一與業(yè)務(wù)相關(guān)的成功目標(biāo)和衡量標(biāo)準(zhǔn)。

       2) 范圍和責(zé)任的轉(zhuǎn)變

       當(dāng)團(tuán)隊(duì)統(tǒng)一時(shí),他們擁有所有權(quán)并參與其他生命周期階段,而不僅僅是他們的角色對(duì)應(yīng)的階段。例如,開(kāi)發(fā)人員不僅要對(duì)開(kāi)發(fā)階段的創(chuàng)新和質(zhì)量負(fù)責(zé),還要對(duì)他們的改變?cè)谶\(yùn)營(yíng)階段帶來(lái)的性能和穩(wěn)定性負(fù)責(zé)。同時(shí),IT 操作員一定要在規(guī)劃和開(kāi)發(fā)階段中考慮治理、安全性和符合性。

       3) 縮短發(fā)布周期

       DevOps 團(tuán)隊(duì)通過(guò)短周期發(fā)布軟件保持敏捷。因?yàn)檫M(jìn)度是漸進(jìn)式的,縮短發(fā)布周期可以讓計(jì)劃和風(fēng)險(xiǎn)管理更容易,同時(shí)也減少了對(duì)系統(tǒng)穩(wěn)定性的影響。縮短發(fā)布周期還可以讓組織適應(yīng)和應(yīng)對(duì)不斷變化的客戶需求和競(jìng)爭(zhēng)壓力。

       4) 持續(xù)學(xué)習(xí)

       高績(jī)效的 DevOps 團(tuán)隊(duì)形成了一種成長(zhǎng)思維。他們快速失敗,然后將經(jīng)驗(yàn)教訓(xùn)融入到他們的流程中,不斷改進(jìn),提高客戶滿意度,加速創(chuàng)新和適應(yīng)市場(chǎng)。DevOps 是一個(gè)旅程,所以總有成長(zhǎng)的空間。

3.4 DevOps 和應(yīng)用程序生命周期

      DevOps 影響應(yīng)用程序生命周期的規(guī)劃、開(kāi)發(fā)、交付和運(yùn)營(yíng)階段。每個(gè)階段都依賴于其他階段,并且這些階段并非特定于角色。在真正的 DevOps 文化中,每個(gè)角色在某種程度上說(shuō)都涉及各個(gè)階段如圖 4。

圖 4 DevOps 和應(yīng)用程序生命周期

3.5 DevOps 做法

      除了形成 DevOps 文化之外,團(tuán)隊(duì)還通過(guò)在整個(gè)應(yīng)用程序生命周期中實(shí)施特定做法,以充分利用 DevOps。
  1. 持續(xù)集成和持續(xù)交付 (CI/CD)
  2. 版本控制
  3. 敏捷軟件開(kāi)發(fā)
  4. 基礎(chǔ)結(jié)構(gòu)即代碼
  5. 配置管理
  6. 持續(xù)監(jiān)控

      其中一些做法有助于加速、自動(dòng)化和改進(jìn)特定階段。有的跨越幾個(gè)階段,幫助團(tuán)隊(duì)創(chuàng)建提高生產(chǎn)效率的無(wú)縫進(jìn)程。

3.6 DevOps 工具

      無(wú)論是縱向集成還是橫向集成,DevOps都需要通過(guò)工具鏈與持續(xù)集成、交付、反饋與優(yōu)化進(jìn)行端到端整合。如華為的軟件開(kāi)發(fā)云服務(wù), 基于二十幾年的研發(fā)實(shí)踐,融合DevOps理念方法,為企業(yè)提供一站式的云上開(kāi)發(fā)工具平臺(tái)。華為軟件開(kāi)發(fā)云提供項(xiàng)目管理、配置管理、代碼檢查、編譯構(gòu)建、測(cè)試、部署、發(fā)布等端到端地覆蓋全軟件生命周期的相關(guān)服務(wù)。類似的DevOps 工具數(shù)不勝數(shù),常見(jiàn)的DevOps 生態(tài)圈工具如圖 5。

圖 5 DevOps 生態(tài)圈工具

3.7 DevOps 與Agile 的關(guān)聯(lián)

       DevOps 和 Agile 都是用于生產(chǎn)產(chǎn)品、進(jìn)行發(fā)布或發(fā)行的現(xiàn)代軟件開(kāi)發(fā)框架。DevOps 是一種文化,促進(jìn)軟件開(kāi)發(fā)和維護(hù)中所有角色之間的協(xié)作。Agile 是一種開(kāi)發(fā)方法,在需求不斷變化的常見(jiàn)現(xiàn)實(shí)中保持工作效率和促進(jìn)發(fā)布。DevOps 和 Agile 并不是相互排斥的,而是經(jīng)常搭配使用。


4.

持續(xù)集成

4.1 持續(xù)集成背景

      集成軟件的過(guò)程不是新問(wèn)題,如果項(xiàng)目開(kāi)發(fā)的規(guī)模比較小,比如一個(gè)人的項(xiàng)目,如果它對(duì)外部系統(tǒng)的依賴很小,那么軟件集成不是問(wèn)題,但是隨著軟件項(xiàng)目復(fù)雜度的增加(即使增加一個(gè)人),就會(huì)對(duì)集成和確保軟件組件能夠在一起工作提出了更多的要求-要早集成,常集成。早集成,頻繁的集成幫助項(xiàng)目在早期發(fā)現(xiàn)項(xiàng)目風(fēng)險(xiǎn)和質(zhì)量問(wèn)題,如果到后期才發(fā)現(xiàn)這些問(wèn)題,解決問(wèn)題代價(jià)很大,很有可能導(dǎo)致項(xiàng)目延期或者項(xiàng)目失敗。

4.2 持續(xù)集成定義

      大師Martin Fowler對(duì)持續(xù)集成是這樣定義的:

      持續(xù)集成是一種軟件開(kāi)發(fā)實(shí)踐,即團(tuán)隊(duì)開(kāi)發(fā)成員經(jīng)常集成它們的工作,通常每個(gè)成員每天至少集成一次,也就意味著每天可能會(huì)發(fā)生多次集成。每次集成都通過(guò)自動(dòng)化的構(gòu)建(包括編譯,發(fā)布,自動(dòng)化測(cè)試)來(lái)驗(yàn)證,從而盡快地發(fā)現(xiàn)集成錯(cuò)誤。許多團(tuán)隊(duì)發(fā)現(xiàn)這個(gè)過(guò)程可以大大減少集成的問(wèn)題,讓團(tuán)隊(duì)能夠更快的開(kāi)發(fā)內(nèi)聚的軟件。

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

  • 減少風(fēng)險(xiǎn)

        一天中進(jìn)行多次的集成,并做了相應(yīng)的測(cè)試,這樣有利于檢查缺陷,了解軟件的健康狀況,減少假定。

  • 減少重復(fù)過(guò)程

       減少重復(fù)的過(guò)程可以節(jié)省時(shí)間、費(fèi)用和工作量。說(shuō)起來(lái)簡(jiǎn)單,做起來(lái)難。這些浪費(fèi)時(shí)間的重復(fù)勞動(dòng)可能在我們的項(xiàng)目活動(dòng)的任何一個(gè)環(huán)節(jié)發(fā)生,包括代碼編譯、數(shù)據(jù)庫(kù)集成、測(cè)試、審查、部署及反饋。通過(guò)自動(dòng)化的持續(xù)集成可以將這些重復(fù)的動(dòng)作都變成自動(dòng)化的,無(wú)需太多人工干預(yù),讓人們的時(shí)間更多的投入到動(dòng)腦筋的、更高價(jià)值的事情上。

  • 任何時(shí)間、任何地點(diǎn)生成可部署的軟件

       持續(xù)集成可以讓您在任何時(shí)間發(fā)布可以部署的軟件。從外界來(lái)看,這是持續(xù)集成最明顯的好處,我們可以對(duì)改進(jìn)軟件品質(zhì)和減少風(fēng)險(xiǎn)說(shuō)起來(lái)滔滔不絕,但對(duì)于客戶來(lái)說(shuō),可以部署的軟件產(chǎn)品是最實(shí)際的資產(chǎn)。利用持續(xù)集成,您可以經(jīng)常對(duì)源代碼進(jìn)行一些小改動(dòng),并將這些改動(dòng)和其他的代碼進(jìn)行集成。如果出現(xiàn)問(wèn)題,項(xiàng)目成員馬上就會(huì)被通知到,問(wèn)題會(huì)第一時(shí)間被修復(fù)。不采用持續(xù)集成的情況下,這些問(wèn)題有可能到交付前的集成測(cè)試的時(shí)候才發(fā)現(xiàn),有可能會(huì)導(dǎo)致延遲發(fā)布產(chǎn)品,而在急于修復(fù)這些缺陷的時(shí)候又有可能引入新的缺陷,最終可能導(dǎo)致項(xiàng)目失敗。

  • 增強(qiáng)項(xiàng)目的可見(jiàn)性

       持續(xù)集成讓我們能夠注意到趨勢(shì)并進(jìn)行有效的決策。如果沒(méi)有真實(shí)或最新的數(shù)據(jù)提供支持,項(xiàng)目就會(huì)遇到麻煩,每個(gè)人都會(huì)提出他最好的猜測(cè)。通常,項(xiàng)目成員通過(guò)手工收集這些信息,增加了負(fù)擔(dān),也很耗時(shí)。持續(xù)集成可以帶來(lái)兩點(diǎn)積極效果:

       (1)有效決策:持續(xù)集成系統(tǒng)為項(xiàng)目構(gòu)建狀態(tài)和品質(zhì)指標(biāo)提供了及時(shí)的信息,有些持續(xù)集成系統(tǒng)可以報(bào)告功能完成度和缺陷率。

       (2)注意到趨勢(shì):由于經(jīng)常集成,我們可以看到一些趨勢(shì),如構(gòu)建成功或失敗、總體品質(zhì)以及其它的項(xiàng)目信息。

       建立團(tuán)隊(duì)對(duì)開(kāi)發(fā)產(chǎn)品的信心

       持續(xù)集成可以建立開(kāi)發(fā)團(tuán)隊(duì)對(duì)開(kāi)發(fā)產(chǎn)品的信心,因?yàn)樗麄兦宄闹烂恳淮螛?gòu)建的結(jié)果,他們知道他們對(duì)軟件的改動(dòng)造成了哪些影響,結(jié)果怎么樣。

4.4 持續(xù)集成的要點(diǎn)

  1. 統(tǒng)一的代碼庫(kù)
  2. 自動(dòng)構(gòu)建
  3. 自動(dòng)測(cè)試
  4. 每個(gè)人每天都要向代碼庫(kù)主干提交代碼
  5. 每次代碼遞交后都會(huì)在持續(xù)集成服務(wù)器上觸發(fā)一次構(gòu)建
  6. 保證快速構(gòu)建

  7. 模擬生產(chǎn)環(huán)境的自動(dòng)測(cè)試

  8. 每個(gè)人都可以很容易的獲取最新可執(zhí)行的應(yīng)用程序

  9. 每個(gè)人都清楚正在發(fā)生的狀況

  10. 自動(dòng)化的部署

4.5 持續(xù)集成的原則

  1. 所有的開(kāi)發(fā)人員需要在本地機(jī)器上做本地構(gòu)建,然后再提交到版本控制庫(kù)中,從而確保他們的變更不會(huì)導(dǎo)致持續(xù)集成失敗。

  2. 開(kāi)發(fā)人員每天至少向版本控制庫(kù)中提交一次代碼。

  3. 開(kāi)發(fā)人員每天至少需要從版本控制庫(kù)中更新一次代碼到本地機(jī)器。

  4. 需要有專門的集成服務(wù)器來(lái)執(zhí)行集成構(gòu)建,每天要執(zhí)行多次構(gòu)建。

  5. 每次構(gòu)建都要100%通過(guò)。

  6. 每次構(gòu)建都可以生成可發(fā)布的產(chǎn)品。

  7. 修復(fù)失敗的構(gòu)建是優(yōu)先級(jí)最高的事情。

  8. 測(cè)試是未來(lái),未來(lái)是測(cè)試。

4.6 持續(xù)集成的工作流程

      持續(xù)集成(Continuous integration,簡(jiǎn)稱CI)是軟件的開(kāi)發(fā)和發(fā)布標(biāo)準(zhǔn)流程中最重要的部分。作為一種開(kāi)發(fā)實(shí)踐,在CI中可以通過(guò)自動(dòng)化等手段高頻率地去獲取產(chǎn)品反饋并響應(yīng)反饋的過(guò)程。簡(jiǎn)單來(lái)說(shuō),就是持續(xù)不斷地(一天多次)將代碼合并(集成)到主干源碼倉(cāng)庫(kù),讓產(chǎn)品可以快速迭代,同時(shí)保持高質(zhì)量。

      持續(xù)集成強(qiáng)調(diào)對(duì)于開(kāi)發(fā)人員的每個(gè)提交,立刻進(jìn)行構(gòu)建、掃描、(單元)測(cè)試。根據(jù)結(jié)果,我們可以確定新代碼和原有代碼能否正確地集成在一起。如一個(gè)完整的CI系統(tǒng)應(yīng)該包含3個(gè)基本模塊:

      一個(gè)可以自動(dòng)構(gòu)建的過(guò)程,自動(dòng)編譯代碼,可以自動(dòng)分發(fā),部署和測(cè)試。

      一個(gè)代碼倉(cāng)庫(kù),例如Git。

      一個(gè)持續(xù)集成的服務(wù)器。

      如圖 3是典型的持續(xù)集成流程圖。


3持續(xù)集成流程圖

      正如圖3持續(xù)集成流程所示,通用的持續(xù)集成(CI)流程主要包括:

  1. 簽出代碼:

     從源碼管理系統(tǒng)里簽出或者克隆最新的代碼到本地開(kāi)發(fā)環(huán)境

  1. 提交(commit):

      基于主干分支創(chuàng)建一個(gè)新的功能分支,并在此分支編寫代碼,并向倉(cāng)庫(kù)提交代碼

  1. 測(cè)試(第1輪):
    代碼倉(cāng)庫(kù)對(duì)commit操作配置了鉤子(hook), 每一次提交代碼都會(huì)觸發(fā)測(cè)試。
    單元測(cè)試(針對(duì)函數(shù)或模塊的測(cè)試)和功能測(cè)試(集成測(cè)試)將會(huì)被執(zhí)行、根據(jù)需要設(shè)置是否執(zhí)行端對(duì)端測(cè)試。
    一般來(lái)說(shuō),這些測(cè)試也會(huì)被打包到代碼里。

  2. 構(gòu)建(build):
    通過(guò)測(cè)試(第1輪)后,將源碼轉(zhuǎn)換為可以運(yùn)行的實(shí)際代碼,比如安裝依賴,配置各種資源等。

      實(shí)現(xiàn)一個(gè)CI流程的唯一必要條件便是得有一個(gè)自動(dòng)構(gòu)建系統(tǒng)。
      源代碼一般是自包含構(gòu)建的,即CI流程所需的構(gòu)建腳本是放在源碼倉(cāng)庫(kù)里的。

  1. 測(cè)試(第2輪):
    以自動(dòng)化為主的全面測(cè)試,包括單元測(cè)試和集成測(cè)試,必要時(shí)做端對(duì)端測(cè)試,確保新版本的每一個(gè)更新點(diǎn)都必須測(cè)試到。

  2. 合并:
    通過(guò)測(cè)試(第2輪)后,將代碼更新集成到主干。

  3. 回滾:
    如果當(dāng)前版本發(fā)生問(wèn)題,就回滾到上一個(gè)版本的構(gòu)建結(jié)果
    一般來(lái)說(shuō),CI服務(wù)器會(huì)配置成在遇到故障時(shí)發(fā)送郵件相關(guān)人員,可以快速知曉故障并且盡快采取更正措施。

4.7 持續(xù)集成注意事項(xiàng)

       當(dāng)需要代碼變更并集成時(shí),開(kāi)發(fā)者會(huì)從基礎(chǔ)代碼庫(kù)復(fù)制以進(jìn)行作業(yè),其他開(kāi)發(fā)者提交代碼的變更至來(lái)源代碼庫(kù),并透過(guò)副本的方式取代來(lái)源代碼庫(kù)的代碼。不只變更目前的代碼庫(kù),新的代碼也可以新增成為程序庫(kù)、其它共享資源與潛在沖突。

       當(dāng)分支代碼開(kāi)發(fā)者進(jìn)行主線重新集成時(shí),當(dāng)分支代碼保持在取出狀態(tài)時(shí)間越長(zhǎng),就愈容易遭遇集成多重沖突的風(fēng)險(xiǎn)以及集成失敗。因?yàn)樗麄兡玫降氖歉北荆援?dāng)開(kāi)發(fā)者將代碼提交到代碼庫(kù)時(shí),首先必須更新代碼以反映他們?cè)诖a庫(kù)中的更改。代碼庫(kù)包含的更改越多,開(kāi)發(fā)人員在提交自己的更改前必須運(yùn)行的基礎(chǔ)工作就越多。

      最終,該程序庫(kù)也許變成非常不同于開(kāi)發(fā)者的目標(biāo)代碼,他們進(jìn)入有時(shí)候被稱為合并地獄或集成地獄的階段,這時(shí)候開(kāi)發(fā)者所花費(fèi)的集成時(shí)間,將超過(guò)最初代碼開(kāi)發(fā)的時(shí)間。

      持續(xù)集成涉及預(yù)先集成與預(yù)先與經(jīng)常性的集成,借此來(lái)避免掉入集成地獄的陷阱,實(shí)踐的目標(biāo)是減少重工、減少成本與時(shí)間。

      持續(xù)集成補(bǔ)充的實(shí)踐是在提交代碼之前,每個(gè)開(kāi)發(fā)人員必須運(yùn)行一個(gè)完整的構(gòu)建并通過(guò)所有的單元測(cè)試、集成測(cè)試。當(dāng)持續(xù)集成服務(wù)器偵測(cè)到代碼有新的提交時(shí),必須經(jīng)常性與自動(dòng)化的進(jìn)行此類單元測(cè)試或集成測(cè)試任務(wù)。代碼每次集成到主干之前,必須通過(guò)自動(dòng)化測(cè)試,以便快速發(fā)現(xiàn)和定位錯(cuò)誤。值得注意的是,持續(xù)集成并不能消除錯(cuò)誤,而是讓它們非常容易發(fā)現(xiàn)和改正。


轉(zhuǎn)載汽車電子相關(guān)文章

轉(zhuǎn)自汽車電子與軟件


上海創(chuàng)程車聯(lián)網(wǎng)絡(luò)科技有限公司版權(quán)所有 滬ICP備11045498號(hào)-1   技術(shù)支持:網(wǎng)站建設(shè)
主站蜘蛛池模板: 久久久久久无码大片A片 | 91免费播放人人爽人人快乐 | 伊人久久综合精品一区二区三区 | 国产一区网站 | 天堂av无码av一区二区三区 | 亚洲人成无码网站久久99热国产 | 欧洲激情视频 | 国产精品日本欧美一区二区三区 | 亚洲欧美日韩中文视频 | 国产精品女同一区二区三区 | 久久丁香五月丁中文精品 | 玩弄人妻少妇500系列视频 | 欧美日韩高清无码 | 日日操网 | 日本一区二区视频免费 | 野花WWW成人免费视频 | 91麻豆精品国产综合久久久 | 邻居少妇太爽了A片在线观看动漫 | 四虎WWW成人影院观看 | 色女人综合网 | 人人妻人人澡人人爽欧美一区九九 | 99久久自偷自偷国产精品不卡 | 欧美大黄大色一级毛片 | 黄色免费观看视频网站 | 国产夜色精品一区二区av | 伊人222综合网图片 亚洲永久经典 | 亚洲黑人精品一区在线观看 | 亚洲乱熟 | 蜜桃视频在线观看免费视频网站WWW | 艹逼大片 | 天天操狠狠操夜夜操 | 久久久久无码国产精品一区乞丐 | 日韩一区二区在线看 | 亚洲私人无码综合久久网 | 人人妻人人爽人人澡欧美一区 | 一区二区三区四区免费看 | 专干老熟女300部 | 黑人精品xxx一区 | 欧美xxxx精品 | 91久久精品夜夜躁日日躁欧美 | 精品一卡二卡三卡 |