SDLC 或軟件開發(fā)生命周期是一組用于創(chuàng)建軟件應(yīng)用程序的步驟。這些步驟將開發(fā)過程劃分為可以分配、完成和衡量的任務(wù)。
什么是軟件開發(fā)生命周期?
軟件開發(fā)生命周期是將標(biāo)準(zhǔn)業(yè)務(wù)實(shí)踐應(yīng)用于構(gòu)建軟件應(yīng)用程序。它通常分為六到八個(gè)步驟:規(guī)劃、需求、設(shè)計(jì)、構(gòu)建、文檔、測試、部署、維護(hù)。一些項(xiàng)目經(jīng)理會根據(jù)項(xiàng)目的范圍合并、拆分或省略步驟。這些是為所有軟件開發(fā)項(xiàng)目推薦的核心組件。
SDLC 是一種衡量和改進(jìn)開發(fā)過程的方法。它允許對流程的每個(gè)步驟進(jìn)行細(xì)粒度分析。這反過來又有助于公司在每個(gè)階段最大限度地提高效率。隨著計(jì)算能力的提高,它對軟件和開發(fā)人員提出了更高的要求。公司必須 降低成本,更快地交付軟件,并滿足或超越客戶的需求。SDLC 通過識別低效率和更高的成本并修復(fù)它們以使其順利運(yùn)行來幫助實(shí)現(xiàn)這些目標(biāo)。
軟件開發(fā)生命周期如何運(yùn)作
軟件開發(fā)生命周期簡單地概述了將軟件應(yīng)用程序組合在一起所需的每項(xiàng)任務(wù)。這有助于減少浪費(fèi)并提高開發(fā)過程的效率。監(jiān)控還確保項(xiàng)目保持在正軌上,并繼續(xù)成為公司的一項(xiàng)可行投資。
許多公司會將這些步驟細(xì)分為更小的單元。計(jì)劃可能會分解為技術(shù)研究、市場研究和成本效益分析。其他步驟可以相互合并。測試階段可以與開發(fā)階段同時(shí)運(yùn)行,因?yàn)殚_發(fā)人員需要修復(fù)測試期間發(fā)生的錯(cuò)誤。
SDLC 的七個(gè)階段
1. 規(guī)劃
在規(guī)劃階段,項(xiàng)目負(fù)責(zé)人評估項(xiàng)目條款。這包括計(jì)算勞動力和材料成本、創(chuàng)建具有目標(biāo)目標(biāo)的時(shí)間表以及創(chuàng)建項(xiàng)目的團(tuán)隊(duì)和領(lǐng)導(dǎo)結(jié)構(gòu)。
規(guī)劃還可以包括利益相關(guān)者的反饋。利益相關(guān)者是從應(yīng)用程序中受益的任何人。嘗試從潛在客戶、開發(fā)人員、主題專家和銷售代表那里獲得反饋。
規(guī)劃應(yīng)明確定義應(yīng)用的范圍和目的。它繪制課程并安排團(tuán)隊(duì)有效地創(chuàng)建軟件。它還設(shè)置了界限,以幫助防止項(xiàng)目擴(kuò)展或偏離其最初目的。
2. 定義需求
定義需求被認(rèn)為是確定應(yīng)用程序應(yīng)該做什么及其需求的計(jì)劃的一部分。例如,社交媒體應(yīng)用程序需要能夠與朋友聯(lián)系。庫存程序可能需要搜索功能。
需求還包括定義構(gòu)建項(xiàng)目所需的資源。例如,一個(gè)團(tuán)隊(duì)可能會開發(fā)軟件來控制定制制造機(jī)器。機(jī)器是過程中的要求。
3. 設(shè)計(jì)和原型制作
設(shè)計(jì)階段模擬軟件應(yīng)用程序的工作方式。設(shè)計(jì)的一些方面包括:
- 架構(gòu)—— 指定編程語言、行業(yè)實(shí)踐、整體設(shè)計(jì)以及任何模板或樣板的
- 使用用戶界面—— 定義客戶與軟件交互的方式,以及軟件如何響應(yīng)輸入
- 平臺—— 定義軟件將運(yùn)行的平臺,例如 Apple、Android、Windows 版本、Linux 甚至游戲機(jī)
- 編程—— 不僅僅是編程語言,還包括在應(yīng)用程序中解決問題和執(zhí)行任務(wù)的方法
- 通信—— 定義應(yīng)用程序可以與其他資產(chǎn)通信的方法,例如作為中央服務(wù)器或應(yīng)用程序
- 安全的其他實(shí)例—— 定義為保護(hù)應(yīng)用程序而采取的措施,可能包括 SSL 流量加密、密碼保護(hù)和用戶憑據(jù)的安全存儲
原型制作可以是設(shè)計(jì)階段的一部分。原型就像迭代軟件開發(fā)模型中軟件的早期版本之一。它展示了應(yīng)用程序外觀和工作方式的基本概念。這種“動手”設(shè)計(jì)可以向利益相關(guān)者展示。使用反饋來改進(jìn)應(yīng)用程序。更改原型階段比重寫代碼以在開發(fā)階段進(jìn)行更改更便宜。
4. 軟件開發(fā)
這是程序的實(shí)際編寫。一個(gè)小項(xiàng)目可能由一個(gè)開發(fā)人員編寫,而一個(gè)大項(xiàng)目可能由幾個(gè)團(tuán)隊(duì)分解和工作。在此階段使用訪問控制或源代碼管理應(yīng)用程序。這些系統(tǒng)幫助開發(fā)人員跟蹤代碼的更改。它們還有助于確保不同團(tuán)隊(duì)項(xiàng)目之間的兼容性,并確保實(shí)現(xiàn)目標(biāo)。
編碼過程包括許多其他任務(wù)。許多開發(fā)人員需要提高技能或團(tuán)隊(duì)合作。發(fā)現(xiàn)并修復(fù)錯(cuò)誤和故障至關(guān)重要。任務(wù)通常會阻礙開發(fā)過程,例如等待測試結(jié)果或編譯代碼以便應(yīng)用程序可以運(yùn)行。SDLC 可以預(yù)見這些延遲,以便開發(fā)人員可以承擔(dān)其他職責(zé)。
軟件開發(fā)人員喜歡說明和解釋。文檔可以是一個(gè)正式的過程,包括為應(yīng)用程序連接用戶指南。它也可以是非正式的,例如源代碼中解釋開發(fā)人員為何使用特定程序的注釋。即使是努力創(chuàng)建簡單直觀的軟件的公司也可以從文檔中受益。
文檔可以是首次啟動時(shí)顯示的應(yīng)用程序基本功能的快速導(dǎo)覽。它可以是復(fù)雜任務(wù)的視頻教程。用戶指南、故障排除指南和常見問題解答等書面文檔可幫助用戶解決問題或技術(shù)問題。
5. 測試
在將應(yīng)用程序提供給用戶之前對其進(jìn)行測試至關(guān)重要。大部分測試都可以 自動化,例如安全測試。 其他測試只能在特定環(huán)境中進(jìn)行——考慮為復(fù)雜的部署創(chuàng)建模擬生產(chǎn)環(huán)境。測試應(yīng)確保每個(gè)功能都能正常工作。還應(yīng)測試應(yīng)用程序的不同部分以無縫協(xié)同工作——性能測試,以減少處理中的任何掛起或延遲。測試階段有助于減少用戶遇到的錯(cuò)誤和故障的數(shù)量。這導(dǎo)致更高的用戶滿意度和更好的使用率。
6. 部署
在部署階段,應(yīng)用程序可供用戶使用。許多公司更喜歡自動化部署階段。這可以像公司網(wǎng)站上的支付門戶和下載鏈接一樣簡單。它也可能是在智能手機(jī)上下載應(yīng)用程序。部署也可能很復(fù)雜。將公司范圍的數(shù)據(jù)庫升級到新開發(fā)的應(yīng)用程序就是一個(gè)例子。因?yàn)閿?shù)據(jù)庫使用了其他幾個(gè)系統(tǒng),集成升級可能需要更多的時(shí)間和精力。
7. 運(yùn)維
至此,開發(fā)周期基本結(jié)束。該應(yīng)用程序已完成并正在現(xiàn)場使用。但是,操作和維護(hù)階段仍然很重要。在此階段,用戶會發(fā)現(xiàn)測試期間未發(fā)現(xiàn)的錯(cuò)誤。這些錯(cuò)誤需要解決,這可能會催生新的開發(fā)周期。除了錯(cuò)誤修復(fù)之外,迭代開發(fā)等模型還計(jì)劃在未來版本中提供其他功能。對于每個(gè)新版本,都可以啟動一個(gè)新的開發(fā)周期。
SDLC 模型和方法解釋
瀑布
Waterfall SDLC 模型是經(jīng)典的開發(fā)方法。隨著每個(gè)階段的完成,項(xiàng)目會溢出到下一步。這是一個(gè)久經(jīng)考驗(yàn)的模型,并且有效。瀑布模型的一個(gè)優(yōu)點(diǎn)是可以在繼續(xù)之前評估每個(gè)階段的連續(xù)性和可行性。然而,它的速度是有限的,因?yàn)橐粋€(gè)階段必須在另一個(gè)階段開始之前完成。
敏捷
AGILE 模型由開發(fā)人員設(shè)計(jì),以將客戶需求放在首位。這種方法非常注重用戶體驗(yàn)和輸入。這解決了許多舊應(yīng)用程序使用起來晦澀難懂的問題。另外,它使軟件對客戶反饋的反應(yīng)非常迅速。敏捷尋求快速發(fā)布軟件周期,以應(yīng)對不斷變化的市場。這需要一個(gè)具有良好溝通能力的強(qiáng)大團(tuán)隊(duì)。由于過于依賴客戶反饋,它還可能導(dǎo)致項(xiàng)目偏離軌道。
迭代
在迭代開發(fā)模型中,開發(fā)人員快速創(chuàng)建軟件的初始基本版本。然后他們以小步驟(或迭代)審查和改進(jìn)應(yīng)用程序。這種方法最常用于非常大的應(yīng)用程序中。它可以快速啟動應(yīng)用程序并運(yùn)行以滿足業(yè)務(wù)需求。但是,此過程可能會迅速超出其范圍,并且可能會使用計(jì)劃外資源。
開發(fā)運(yùn)維
DevOps 安全模型將 操作(使用軟件的人員)納入開發(fā)周期。與敏捷一樣,這旨在提高應(yīng)用程序的可用性和相關(guān)性。該模型的一個(gè)顯著優(yōu)勢是實(shí)際軟件用戶對設(shè)計(jì)和實(shí)施步驟的反饋。一個(gè)缺點(diǎn)是它需要積極的協(xié)作和溝通。這些額外成本可以通過自動化部分開發(fā)過程來抵消。