【DevOps】軟件開發生命週期

大家好,我是高勝寒,一個在教培行業不忘初心的人,本文是【循序漸進學運維】DevOps工具篇的第一篇文章

【循序漸進學運維】DevOps工具篇 主要針對的是DevOps常用的工具,比如jenkins,gitlab, docker等工具的結合使用。


軟件開發的生命週期,又叫做SDLC, 主要集成了

  1. 計劃和需求分析
  2. 設計項目架構
  3. 開發和編程
  4. 測試
  5. 部署。

1. 計劃和需求分析

我們拿到一個項目,它到底要做什麼樣的功能。每個軟件的開發生命週期模型都是從分析開始, 討論最終的產品的要求。

a) 計劃

1) 確定軟件的開發總目標
2) 給出軟件的功能,性能,可靠性以及接口等方面的設想
3) 對可供開發使用的資源,成本,以及可取得的效益和開發進度做出估計
4) 指定完成開發任務的實施計劃

b) 需求分析

軟件研發的類型不同,需求來源也不同,針對產品的軟件開發,需要做好市場調研。 比如確定軟件系統的功能,性能,數據,和界面要求等

在這一階段,主要的產出物有兩個: 一個是項目開發計劃,一個是軟件需求說明書。 有的公司可能會有一個可行性分析報告。

2. 設計項目架構

第二階段主要是設計階段,系統架構和滿意狀態,就是你要做成什麼樣子,有什麼功能。
明確軟件系統是由哪些模塊組成的,這些模塊的層次結構,調用關係,以及模塊的功能,同時確定數據結構和數據庫結構。

這個階段的產出物有: 概要設計說明書,數據庫設計說明書,接口設計,詳細設計說明書

3. 開發和編程(實現階段)

編碼就是把模塊的控制結構轉化爲程序代碼,該階段需要編碼規範。
一般由項目經理帶領我們的開發人員進行開發,根據項目的大小和複雜程度,可能需要數月或者更長的時間完成。

4. 測試

測試是爲了保證軟件質量,該階段產生的文檔主要有軟件測試計劃、測試用例、軟件測試報告。

測試一般由測試人員測試,一些小的項目也可以是開發人員進行測試,測試主要分爲:

  • 功能測試

  • 代碼測試

  • 壓力測試

  • 單元測試: 開發自測,包含各個單元模塊,具體到類,函數

  • 集成: 各個單元組合測試,接口是否正確,數據是否正常傳遞

  • 系統測試: 把整個系統搭建起來,根據規格說明書需求對應測試,看各個功能模塊是否與需求相符,系統運行是否ok

5. 部署(進化階段)

發佈就是完成軟件開發並把已開發的軟件系統安裝到客戶的服務器上,並進行相關的維護, 根據用戶的情況,可能需要對某功能進行修改,bug修復,功能增加等
這個階段其實就是上線及線上bug反饋
說來也怪,bug的生命週期和軟件開發週期一樣:

  • bug發現並提出
  • bug的確認和分析
  • 設計bug的修改方案
  • bug修復階段
  • 測試bug是否修復成功
  • 修復完成後上線
    然後進入下一輪的bug發現並提出階段,週而復始,所以很多新入行的開發人員,第一年就是在不聽的發現bug,修復bug,不會讓你涉及到更多核心內容。

該階段產生的文檔主要有項目開發總結報告、用戶手冊、應用軟件清單、源代碼清單、維護文檔。

案例

公司準備做一個軟件,可以幫助用戶在回答知乎文章的時候,提高點贊率和收藏量。能夠實時的發現熱門問答和有潛力的問答,能夠根據一些參數生成分數供用戶參考。能夠判斷種草的購物鏈接是否還存在,能夠自動提升知乎鹽值分數,以及一些其他功能(此案例只是舉例)

  1. 需求: 對知乎用戶進行訪談,需求文檔撰寫,用戶確認, 3天
  2. 設計(該要設計2天)
  3. 編碼(30-40天)
  4. 測試(7天)
  5. 接項 (5天)

當然每個項目都不一樣,軟件各個生命階段週期的大致分佈

計劃與需求分析: 10 --25%

設計項目架構: 20%~25%
開發與編碼: 15%~25%
測試與部署: 30~40%

軟件開發模型

1. 概念

軟件開發模型(Software Development Model)是指軟件開發全部過程、活動和任務的結構框架

2. 分類
a 瀑布模型

瀑布模型是最著名和最常用的軟件開發模型,但目前已經不太適合現在的開發了。就像汽車生產流水線一樣,各個部門各司其職,工作按照順序展開。如同瀑布流水,逐層下落。

特點: 階段時具有順序性和依賴性,前一個階段完成,才能進行後一個階段。
簡單易用和容易理解,根據里程碑去檢查實現的目標。

缺點:

  • 不適應用戶需求的變化,
  • 各個階段的劃分完全固定,階段之間產生大量的文檔,極大的增加了工作量
b. 敏捷模型

敏捷開發的核心是迭代開發+增量開發

迭代開發: 將開發過程拆分成多個小週期,每次小開發都是同樣 流程
增量開發: 軟件的每個版本,都會增加一個用戶可以感知的完整功能,根據新增功能劃分迭代。

特點:及時瞭解市場需求,降低產品不合適市場的風向。

瀑布和敏捷開發的理解

假設我們要建10棟樓

瀑布模型: 打好10棟樓的地基-蓋好10層-封頂-交付

花費的時間長,出現問題不容易修改,無法儘快適應市場變化

敏捷開發: 打好1棟樓地基-蓋好10層-封頂-交付。
週期快,及時根據市場需求更新

後記

很多學員畢業後去了公司,我找人收集了他們公司現有的開發模型,發現大多數公司的開發模型就是沒有模型,完全是混亂狀態。

在留言區聊聊你們公司正在用的開發模型吧,我是高勝寒,一個教培行業不忘初心的人。歡迎點贊收藏,我們下片文章再見!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章