之前,小編在《從瀑布式到 DevOps,開發(fā)流程經(jīng)歷了什么?》一文中,梳理了軟件開發(fā)流程的大致演變過程。
其實,在早期軟件開發(fā)還是“小作坊”作業(yè)的時候,沒有形成所謂的開發(fā)流程方法論,開發(fā)特別倚重個人能力,大多都雜亂無章,所以效率也不高。
20 世紀 70 年代,從瀑布式開發(fā)開始,開發(fā)流程有了一套自己的方法論。一路發(fā)展演進,先后涌現(xiàn)了敏捷和 DevOps 等新興理念。可以看出的是,軟件開發(fā)規(guī)模越來越大,要求的速度卻越來越快。
01 開發(fā)流程正在“提效”路上一去不回頭
上世紀50年代,一種項目管理三角(也稱的三重約束、鐵三角或項目三角)的模型開始被人們廣泛使用。
三角模型被用來約束項目的發(fā)展過程,它認為:
質(zhì)量工作是由該項目的預算、時間和功能來限制;
項目經(jīng)理可以約束之間的平衡;
一個約束的變化需要其他約束的變化來補償,否則質(zhì)量將受到影響。
例如,可以通過增加預算或縮小范圍來更快地完成項目。同樣,增加范圍可能需要相應增加預算和進度。削減預算而不調(diào)整時間表或范圍會導致質(zhì)量下降。也就是說,好、快、便宜(范圍、時間和成本),只能選擇兩個。
在早期,瀑布式開發(fā)與三角模型相關(guān)聯(lián),由此表明:軟件開發(fā)可以由應用程序創(chuàng)建或構(gòu)建所花費的時間長度來定義。
然而,在當時,創(chuàng)建、測試和部署軟件通常需要很長時間,因為在開發(fā)過程中沒有制衡。結(jié)果是軟件質(zhì)量不佳,存在缺陷和錯誤以及未滿足的時間表。因此,瀑布式開發(fā)的重點是軟件項目的長期計劃。
這種思維方式來自制造和工程,其中線性過程是有意義的——你先建墻,再建屋頂。同樣,軟件開發(fā)問題被視為可以通過計劃解決的問題。從開始到結(jié)束,開發(fā)過程都由路線圖明確定義,路線圖將導致產(chǎn)品的最終交付。
但是,瀑布式被認為是對軟件開發(fā)有害的,因為通常直到項目周期的最后階段才能確定其價值,并且在許多情況下項目都失敗了。此外,客戶直到項目結(jié)束才能看到可運行的軟件。
事情在敏捷時代發(fā)生了改變。
敏捷采取了一種不同的方法,不再規(guī)劃整個項目,承諾預計日期,并對計劃負責。而是假設(shè)并擁抱不確定性,改變被認為是滿足客戶需求的一種方式。
它定義了以下12條原則:
(引用)
1.我們的首要任務(wù)是通過早期和持續(xù)交付有價值的軟件來滿足客戶。
2. 歡迎不斷變化的需求,即使是在開發(fā)后期。
3. 敏捷流程利用變化來獲得客戶的競爭優(yōu)勢。
4. 頻繁地交付可工作的軟件,從幾周到幾個月不等,優(yōu)先考慮較短的時間范圍。
5.業(yè)務(wù)人員和開發(fā)人員必須在整個項目中每天一起工作。
6.圍繞積極的個人建立項目。
7. 為他們提供所需的環(huán)境和支持,并相信他們會完成工作。
8. 向開發(fā)團隊和在開發(fā)團隊內(nèi)部傳達信息最有效的方法是面對面交談。
9. 工作軟件是進度的主要衡量標準。
10. 敏捷流程促進可持續(xù)發(fā)展。贊助商、開發(fā)者和用戶應該能夠無限期地保持恒定的步伐。
11、對卓越技術(shù)和良好設(shè)計的持續(xù)關(guān)注可提高敏捷性。
12、團隊定期反思如何提高效率,然后相應地調(diào)整和調(diào)整其行為。
詳情可查看敏捷宣言網(wǎng)頁:https://agilemanifesto.org/principles.html
從敏捷開始,短時間和高效率成為開發(fā)理念中的一個重點。而 DevOps 則更進一步。
某種程度上,DevOps 是一種文化、一種心態(tài)、一種軟件開發(fā)或基礎(chǔ)架構(gòu)的方式,以及一種構(gòu)建和部署軟件和應用程序的方式。其中的精髓是:開發(fā)和運維之間沒有墻;它們同時工作,沒有孤島。
DevOps 正是基于精益和敏捷兩個實踐領(lǐng)域。雖然敏捷和 DevOps 有很多不同之處,但它們都尋求解決復雜問題、提高質(zhì)量并圍繞軟件設(shè)計進行創(chuàng)新。
與此同時,DevOps 加快了開發(fā)和運維人員之間的工作,還減少了Dev 和 Ops 之間的分工。這是因為DevOps 要求持續(xù)部署、交付和集成。團隊合作是一體的;問題和故障由開發(fā)、運維和其他實體共同擁有,例如質(zhì)量保證(QA)、測試、自動化等。
敏捷與 DevOps 的區(qū)別
總的來說,無論是敏捷還是DevOps,都旨在幫助團隊更快、更高效地工作,更快地交付高質(zhì)量產(chǎn)品和提高客戶滿意度。
02 天下武功唯快不破!
在敏捷時代,一批輕量的軟件工程方法和框架相繼誕生,它們共同的特點是,相對傳統(tǒng)軟件工程,都遵循演進和迭代的模型,過程更加輕量靈活,以 Scrum 和極限編程 (ExtremeProgramming) 為代表。
早期的敏捷專注的是研發(fā)交付階段,站在業(yè)務(wù)的角度,它的目標是幫助產(chǎn)品和研發(fā)團隊提升敏捷響應能力。但在 DevOps 時代,IT 不僅要保證產(chǎn)品的開發(fā)和交付,系統(tǒng)部署和運行同樣重要 。在敏捷開發(fā)的理念之上,又補上了運維的部分。
目前,DevOps 仍處于高速發(fā)展階段。南京大學軟件研發(fā)效能實驗室發(fā)布的DevOps ·云原生2021年度中國調(diào)查報告》顯示,2021年國內(nèi)企業(yè)的 DevOps 工具的普及程度較2019年有明顯上升趨勢。
因此,為了達到更快更好的開發(fā)目標,不斷有新式的開發(fā)工具涌現(xiàn)出來。
一方面,不同工具在各領(lǐng)域全面開花,一起助推 DevOps 的落地。比如JIRA、Trello等敏捷開發(fā)工具,Maven、NPM、Gradle等持續(xù)交付工具,Zabbix、Elastic、Grafana、Kafka、Ansible、Logstash、Prometheus等自動運維工具等等。
另一方面,一些集大成的工具也同時應用自動化、AI等技術(shù),以更好地實現(xiàn)功能。其中,飛算SoFlu 全自動軟件工程平臺便是其中的一個代表。
飛算SoFlu是近年發(fā)布的新一代 JAVA 開發(fā)工具,截至目前已在包括醫(yī)療、金融、制造、零售等在內(nèi)的多個行業(yè)使用。
全自動平臺可以通過降低準入門檻、人力成本和溝通成本,來極大提升企業(yè)的開發(fā)效率。以工具為核心,制訂好管理流程,利用科學的管理方法,讓程序員在操作工具時有規(guī)可循,從而降低管理風險和溝通風險。
以某大型國有企業(yè)開發(fā)的“百萬人使用級別的電商平臺”項目為例。此前,該企業(yè)組建數(shù)十人團隊完成開發(fā),上線后卻在功能性、穩(wěn)定性、安全性等方面問題不斷,且無法在短期內(nèi)修復。在使用飛算 SoFlu 全自動軟件工程平臺后,該企業(yè)僅投入 6 位研發(fā)人員 45 天就高效完成開發(fā)、測試、聯(lián)調(diào)、上線全流程任務(wù)。
具體來說,單就Excel表格文件解析這個高頻開發(fā)功能,這在之前,即使是一個經(jīng)驗豐富的程序員,也至少需要花費半天時間。但是飛算能夠?qū)r間壓縮到以分鐘計算:
1. 編程邏輯流程化,十分鐘完成開發(fā),完全不用敲代碼,拖拉拽即可完成后端開發(fā)。
2. 豐富的組件支持,涵蓋數(shù)據(jù)庫、redis、api、mongoDB、子流程組件等,支持循環(huán)、條件判斷、函數(shù)調(diào)用,通過拖拉拽的方式以及參數(shù)配置實現(xiàn)等同編寫復雜代碼的業(yè)務(wù)邏輯。
3.函數(shù)齊全,各種API函數(shù)應有盡有,快速解決業(yè)務(wù)及功能上的各種需求。