在數(shù)字化時代,軟件的穩(wěn)定性與安全性構(gòu)筑企業(yè)值得信賴的護(hù)城河。作為全球領(lǐng)先的軟件開發(fā)工具提供商,Qt Group正致力于通過其創(chuàng)新的Axivion Suite工具,助力企業(yè)在醫(yī)療器械、汽車等受高度監(jiān)管領(lǐng)域精準(zhǔn)識別或避免軟件侵蝕,確保軟件項(xiàng)目的長期可維護(hù)性和可擴(kuò)展性。
上海2024年9月3日 /美通社/ -- 就像巖石和山脈會受到自然侵蝕,今天的全球軟件也在遭受侵蝕。每天,開發(fā)者們都發(fā)現(xiàn)自己軟件的混亂程度越來越高,而這些軟件的架構(gòu)卻鮮少有人清楚理解。隨著AI產(chǎn)業(yè)發(fā)展駛?cè)搿翱燔嚨馈保覀儙缀鯖]有時間去理清這些混亂。
近幾年,軟件頻繁出現(xiàn)問題。僅2023年,國內(nèi)網(wǎng)購、網(wǎng)約車、社交應(yīng)用等平臺或應(yīng)用多次發(fā)生崩潰,引發(fā)媒體報道,甚至登上不同平臺的熱搜榜。在全球范圍,Crowdstrike軟件更新導(dǎo)致的"微軟藍(lán)屏"事件可能是今年最引人注目的一個。
然而,開發(fā)者們卻在維持這個搖搖欲墜的紙牌屋上投入了大量時間?;?,000多位美國、英國、法國、德國和新加坡開發(fā)者和行政高管的調(diào)研報告《開發(fā)者系數(shù)(The Developer Coefficient)》指出,開發(fā)者每周平均工作41.1小時,其中三分之一的時間用于解決技術(shù)債務(wù);超過40%的時間用于維護(hù)。
這實(shí)際上反映出大量時間被用于非創(chuàng)新性工作。Qt Group的QA業(yè)務(wù)總監(jiān)Juan Rodriguez對此深感擔(dān)憂:"我們目睹著軟件架構(gòu)的逐漸衰敗,因?yàn)榭萍夹袠I(yè)要求開發(fā)者不斷向前推進(jìn),譬如鋪設(shè)新的鐵軌,然而他們身后的鐵軌卻在逐漸崩潰。"
什么是軟件侵蝕
我們大多數(shù)人并沒有注意到軟件侵蝕。這是軟件內(nèi)部結(jié)構(gòu)的一種無形降級。它使得軟件的可讀性、可維護(hù)性、可擴(kuò)展性和可復(fù)用性變得困難,甚至可能威脅到系統(tǒng)的功能安全。
軟件開發(fā)是一個不斷累積的過程。新的依賴關(guān)系總是被引入到軟件的各個部分中。但有時候,新的代碼并非必要,反而使得代碼庫越來越臃腫,越來越難以理解、修改和維護(hù)。我們之所以稱之為Dependency Hell(地獄依賴)并非沒有原因。在實(shí)施功能或修復(fù)錯誤時,弄清楚哪些更改是必要的需要極大耐心和技巧。
軟件侵蝕的雪球效應(yīng)
添加功能和快捷方式會逐步增加軟件復(fù)雜性,每次迭代都在無形中侵蝕著軟件架構(gòu)的完整性。
開發(fā)者在工作流中添加了快捷方式,導(dǎo)致代碼庫日益臃腫。想要一個新的功能?有可能會因此破壞一些東西。如果重新設(shè)計產(chǎn)品的某個方面,可能會引發(fā)一系列破壞性反應(yīng),影響到其他原本相互獨(dú)立的團(tuán)隊(duì)。每次改動都可能帶來意想不到的連鎖反應(yīng)。
開發(fā)者可能會因?yàn)轭~外的維護(hù)工作而感到沮喪,進(jìn)而再次添加一個快捷方式。如此反復(fù),直到代碼庫變得像極其不穩(wěn)定的真人版疊疊樂游戲。每個人都害怕成為那個讓整個結(jié)構(gòu)崩塌的人。這就是開發(fā)者在面對日益復(fù)雜的代碼庫時所面臨的挑戰(zhàn)。
"這就是軟件侵蝕的本質(zhì),"Qt Group的Juan Rodriguez總結(jié)道,"無處不在的復(fù)雜性使得即使是發(fā)布最簡單的新功能也變得痛苦無比。從長期來看,這種情況會對效率和可擴(kuò)展性造成嚴(yán)重?fù)p害。"
我們是否忘了測試左移?
許多公司取了一種令人失望的"補(bǔ)救"措施。他們增加修復(fù)錯誤的時間,或者雇傭更多的QA工程師來減輕開發(fā)者負(fù)擔(dān)。然而,這些都只是在玩"打地鼠"游戲,新錯誤在被修復(fù)前并不存在,就像是用昂貴的創(chuàng)可貼來處理嚴(yán)重的傷口。
更明智的做法應(yīng)該是重新架構(gòu)代碼庫。對于只有兩年代碼歷史的公司來說,這可能相對容易,但對于那些擁有二十年遺留代碼的公司呢?即便他們完成了這項(xiàng)艱巨的任務(wù),如果第一次沒有真正吸取教訓(xùn),軟件侵蝕的循環(huán)就會再次開始。
從開發(fā)者在維護(hù)上投入的時間來看,這些教訓(xùn)似乎還沒有被充分吸取。軟件侵蝕的問題依然存在,我們甚至可以預(yù)見,AI代碼助手也面臨同樣的問題。除非每個行業(yè)都能自覺地從一開始就將QA緊密地融入到開發(fā)過程中。
Juan Rodriguez建議:"從設(shè)計階段就開始考慮這些問題,而不是等到所有的代碼都寫完之后再開始。"在編寫新代碼的時候,就要運(yùn)行靜態(tài)代碼分析和功能測試。即便已經(jīng)做了所有這些事情,但效果并不理想。如果是這樣的話,那就回到起點(diǎn),從宏觀層面去審視軟件架構(gòu),而不是只關(guān)注細(xì)節(jié)層次。架構(gòu)是否達(dá)到預(yù)期?在產(chǎn)品中定義的第一個組件是什么?組件之間如何通信?
當(dāng)您運(yùn)行靜態(tài)代碼分析并理解在哪里復(fù)制了代碼;當(dāng)您運(yùn)行架構(gòu)并理解依賴關(guān)系在哪里;當(dāng)您運(yùn)行功能測試并獲得結(jié)果,您就開始理解了問題的所在。這并不是選擇其中一個或另一個的問題。所有的軟件產(chǎn)品最終都應(yīng)該能夠從多種來源獲取洞察。只有這樣,才能回到起點(diǎn),重新架構(gòu),以避免重蹈覆轍。
"遺憾的是,似乎很少有人真正知道自己實(shí)施的架構(gòu)是什么樣," Juan Rodriguez認(rèn)為,"如果我們理解自己的軟件架構(gòu),那么新增任何功能,都可以根據(jù)自己對架構(gòu)的理解來構(gòu)建軟件。那時,就不再需要走捷徑了。"
Axivion Suite:解決軟件侵蝕的利器
Axivion Suite 是Qt Group專為解決軟件侵蝕問題而設(shè)計的工具,通過靜態(tài)代碼分析、架構(gòu)驗(yàn)證和依賴關(guān)系管理,有效應(yīng)對軟件架構(gòu)侵蝕。它能自動檢測代碼中的潛在問題,確保代碼符合預(yù)期設(shè)計,避免架構(gòu)偏離。通過對軟件架構(gòu)的全面分析,Axivion Suite幫助開發(fā)者理解和修復(fù)架構(gòu)中的違規(guī)行為,防止復(fù)雜性和依賴關(guān)系的增加。此外,Axivion Suite還提供實(shí)時反饋,幫助開發(fā)者在早期階段發(fā)現(xiàn)并修復(fù)錯誤,從而提高軟件的可維護(hù)性和可靠性,特別適用于醫(yī)療和汽車等對軟件質(zhì)量要求高的行業(yè)。
理解并解決軟件侵蝕問題,是每一個重視軟件質(zhì)量的企業(yè)都應(yīng)該關(guān)注的課題。Axivion Suite提供了強(qiáng)大工具,幫助企業(yè)從根本上解決這一問題。讓我們一起,構(gòu)建更加穩(wěn)定和高效的軟件系統(tǒng)。