漫談軟體開發過程

2021-09-11 14:47:06 字數 1667 閱讀 2276

乙個合理而又有效的軟體開發過程對軟體開發人員來說是至關重要的,決定著開發是痛苦的掙扎,還是不斷進步的喜悅。目前軟體開發一般過程包含以下幾個步驟:理解需求、架構設計、單元測試、監控埋點、整合測試、效能測試、文件樣例、上線流程和變更管理,下面我將針對以上幾個步驟進行詳細闡述。

需求向來就是軟體開發過程中最不好明確描述、易變的東西。對於乙個新的需求(或產品),我們應該先問自己為什麼要做這個需求(產品),多問自己why,如果做了需求(產品),會給公司或客戶帶來什麼價值,解決什麼痛點,而不是一上來就問怎麼做以及做什麼。

剛接觸架構設計的童鞋,會專注於細節中,我在這裡想向大家灌輸的理念是:大處著眼,小處著手(think big,but act small),也就是說軟體開發者首先要理清整體架構,否者,做出來的東西可能不能滿足我們的需求。

當領導讓你寫單元測試時,你可能會想這不是降低你的**生產率嗎?其實,長期來看,寫單元測試是很有必要的。如果後期我們需要對**進行變更或擴充套件時,這些單元測試能夠幫助我們做回歸測試,而且開發效率也會慢慢提高。如果沒有單元測試,可能在專案剛開始時編碼效率挺快的,但是隨著**越來越複雜,專案**出問題的概率會越來越高,甚至於當我們想擴充套件原來的**,發現根本不能擴充套件。因此,軟體開發者必須要寫單元測試。

相較於傳統軟體公司更加注重單元測試,網際網路公司更加強調實時監控。我們知道網際網路時代的流量非常大,而且使用者需求會隨時發生變化,即使我們花再多的時間去做測試,我們還是很難找到**中的缺陷。這就要求我們不僅要做單元測試,還要求我們去做監控(核心指標、框架呼叫鏈、日誌、告警通知等埋點)。監控其實是線上測試,線上反饋,它可以實時的告訴我們系統的健康狀況。

當各個模組開發測試完成之後,就需要整合各個模組。這裡需要我們注意的是每個模組單獨測試時沒問題的,但是整合時可能存在問題,這就要求做整合測試。在做整合測試時涉及到不同團隊成員的溝通協調,這就要求我們具有良好的溝通能力。

效能測試包括load testing(負載測試)、stress testing(壓力測試)、spile testing(尖峰測試)、scalability testing(擴充套件性測試)等。在網際網路時代效能測試是非常重要的,就如同我們人類一樣,當我們不給自己施加壓力,我們都不知道自己的潛力有多少,同時,也會暴露出自己的缺陷。只有經過多輪的、細粒度的效能測試才能保證產品上線後不會出現問題。

在我認識的很多開發人員中,他們認為編寫文件樣例沒什麼用。但是,我們生產出來的產品最終是要給使用者使用的,使用者從來不關心的架構設計的如何好、**寫的如何好,他們只關心文件樣例寫的怎麼樣,因為這些是他們要用的,如果我們不提供清晰的樣例,就會提高他們的理解難度。這就要求我們平時要養成產品思維。

經過上述這些步驟之後,接下來就是將產品推上線。而產品上線也需要一套流程:1. 開發人員將最終版本推送到版本控制系統中;2. 構建伺服器(jenkins)會定期的從版本控制器中抓取**來做單元測試,如果沒有問題,則將**傳送到測試環境中,測試環境通過之後,再將**傳送到效能測試伺服器進行非功能性的效能測試;3. 最後,將**發布到生產環境中。

如果我們需要對線上**進行修改,就需要變更管理。變更管理需要我們評估一下變更的影響, 對哪些人會有影響。同時,還需要有應急預案,如果變更失敗怎麼回退。通過上述方式盡量讓變更變得可控。

介紹完軟體開發的一般過程之後,我們發現這個過程適合大部分情況,但在一些特殊情況,比如緊急發布、線上有明顯事故等,需要我們快速的救火,在這種情況下我們就會繞開上述這些流程。

軟體開發過程

1.程式設計師寫出自認為沒有bug的 2.軟體測試,發現了20個bug。3.程式設計師修改了10個bug,並告訴測試組另外10個不是bug。4.測試組發現其中5個改動根本無法工作,同時又發現了15個新bug。5.重複3次步驟3和步驟4。6.鑑於市場方面的壓力,為了配合當初制定的過分樂觀的發布時間表,...

軟體開發過程

1.程式設計師寫出自認為沒有bug的 2.軟體測試,發現了20個bug。3.程式設計師修改了10個bug,並告訴測試組另外10個不是bug。4.測試組發現其中5個改動根本無法工作,同時又發現了15個新bug。5.重複3次步驟3和步驟4。6.鑑於市場方面的壓力,為了配合當初制定的過分樂觀的發布時間表,...

軟體開發過程

軟體生命週期 1 問題定義 使用者需要解決什麼問題?2 可行性分析 使用者需要解決的問題是否可行 技術可行性 市場可行性 3 需求分析 將使用者提出的問題進行細化 4 系統設計 確定細化問題的實現方法 5 編碼 依據需求和設計穩定進行開發,解決問題 6 測試 驗證是否已經解決使用者提出的問題 單元測...