持續集成概念


一. 軟件開發生命周期(Software Development Life Cycle)主要包括以下幾個階段。

分析請求:分析用戶請求,才能知道要開發什么樣的軟件。

設計 :針對用戶請求,進行設計軟件架構等。

執行:任務分派開始開發。

測試 : 測試軟件的功能、代碼等。

演變或者維護:發布和后期維護,如補丁更新等。


二. 軟件開發中的瀑布開發模型,如下圖:


從上圖可以看到,開發階段是按順序來的。


瀑布模型的劣勢:

  • 開發生命周期可能持續一年或者更長時間。
  • 存在着世大的不確定性
  • 不適合那些新特性更新頻繁的項目。比如,電子商務項目
  • 持續集成的執行都是在開發階段完成后,往往后面會存在很多問題,尤其針對於大項目而言。
  • 沒有向后的可追溯性。
  • 在不同階段稱量進展是非常困難的,因為開發步驟相當於是線性的。后面肯定無法預估。


瀑布模型的優勢:(試用於以下類型的項目)

  • 項目的初期布局有很好的文檔和非常的固定(很少變動)
  • 有足夠的金錢去維持管理團隊,測試團隊,開發團隊,構建和釋放團隊,等。
  • 該技術是固定的,沒有變動的。
  • 沒有什么模糊的需求,也是最重要的。需求在需求分析階段有之外,在其它任何階段都沒有。


三. 敏捷的救援

敏捷意味着快速、簡單。 敏捷是開發的一種方法,它是通過組織內各團隊合作來完成的。敏捷背后的原則是增量、快速、靈活的軟件開發。提升了計划的靈活性。


1. 敏捷模型的12個原則

(1)通過早期有用的軟件進行持續交付來達到客戶滿意度。

(2)適應不斷變化的開發需求,甚至在軟件開發后期。

(3)軟件交付頻繁(可能幾周或者一個月內)

(4)在企業、人員、開者者之間密切的合作

(5)項目干系人應該是被信任的

(6)面對面的溝通方式是最好的交流方式

(7)正在開發軟件是程序測量的標准

(8)可持續的發展,能夠保持一個一致的步伐

(9)持續關注卓越的技術和良好的設計

(10)簡單

(11)組織內部的團隊成員

(12)適應不斷變化的環境


2. 敏捷開發工作方式

在敏捷開發進程中,軟件被分成多個功能或者模塊,這些功能是在迭代中進行持續交付的。每次迭代持續三個禮拜,包括在不同區域同時工作的團隊,比如計划,需求分析,設計,代碼,單元測試和可接受性測試。

    這樣的一個結果就是,沒有任何人是空閑的。這和瀑布模型是完全不同的,瀑布模型是開發人員在非常忙的時候,測試人員和其它人員都比較空閑。 下圖描述了敏捷開發模型。

從上圖可以看出,模型像個圈一樣,不停的進行迭代。相當於以前工作是串行的,現在是並行的一樣。


3. 敏捷開發的優勢

  • 功能可以被快速的開發和演示。
  • 資源請求更少。
  • 促進團隊合作和交叉訓練。
  • 適用於那些需求經常改變的項目。
  • 簡約的文檔
  • 更少或者沒有計划。
  • 並行開發:功能開發可以並行來做。


四. CI的元素

1. 版本控制系統


2. 分支策略:GitFlow是另一種使用多個分支管理代碼的方式。 如下圖所示:


GitFlow完全的架構圖如下 :

483cc922-1c02-4608-9f0d-b9cbc2f89c6a


3. CI 工具

此處使用的是jenkins。 還有其它如Build Forge, Bamboo 和 TeamCity.


4. 自動觸發的構建


5. 代碼覆蓋率測試

代碼覆蓋的測試方式:

Type of coverage Description
Function The number of function called out of the total number of functions defined
Statement The number of statements in the program that are truly called out of the totoal number
Branches The number of branches of the control structures executed
Condition The number of Boolean sub-expressions that are being tested for a ture and false value
Line The number of lines of source code that are being tested out of the total number of lines present inside the code


代碼覆蓋率測試工具:

Language Tools
Java Atlassian Clover, Cobertura, JaCoCo
C#/.NET OpenCover, dotCover
C++ OpenCppCoverage,gcov
Python Coverage.py
Ruby SimpleCov


6. 靜態代碼質量分析


7. 自動化測試


8. 二進制庫工具


9. 自動打包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM