[程式設計] AI助力軟體專案正向生成,註釋編寫的革命

徐少俠發表於2023-12-05

引言

軟體專案質量直接影響著使用者體驗和企業效益。隨著軟體的應用範圍不斷擴大,提高軟體質量的重要性也日益凸顯。傳統上,軟體工程師通常採用自下而上的開發模式,自行設計實現程式碼並進行測試,這給質量把控帶來一定難度。而註釋與知識管理在這個過程中可以發揮重要作用。

註釋作為程式碼的重要附屬檔案,可以記錄開發者思路和實現細節,為後期維護和學習提供幫助。透過註釋可以解讀程式碼功能和邏輯關係,有效提升程式碼可讀性。同時,註釋還可以記錄專案知識,成為軟體知識體系的重要組成部分。

然而,傳統上軟體專案註釋管理存在一定問題。一是註釋分類標準欠缺統一,內容質量參差不齊。二是註釋與程式碼脫節更新頻繁。這給專案質量把控和知識傳承帶來不利影響。隨著人工智慧技術的發展,可以考慮利用AI輔助實現自上而下的開發模式,提升註釋和知識管理水平。

本文從註釋與知識管理兩個視角出發,探討如何利用AI技術提升軟體專案質量。首先分析註釋型別與內容規範問題;然後探討自上而下開發模式及AI助手機制;最後展望未來研究方向,旨在為軟體工程引入新的思路。

行業大佬的態度

Mozilla研究人員對開源專案的註釋進行分析分類,提出了6種常見註釋型別,包括描述功能、語義、約束、設計、測試和維護等註釋,每種註釋都有其明確的編寫特點和最佳化軟體開發的作用。
Linux核心作為開源程式發展歷史最悠久的專案之一,制定了詳細的程式碼註釋規範要求,明確定義了每行程式碼必須配套編寫相應註釋的強制性原則。
Google開源專案強調公共函式和結構的文件註釋完備性,不僅可以生成API文件,還有利於新人理解程式碼、降低維護成本。該公司研發的工具可以自動掃描註釋生成文件網站。
Python官方文件中專門討論了註釋的最佳實踐寫法,比如註釋開頭應明確目的,後續也可以補充更新歷史,這有助於程式碼review和持續改進。
微軟Research的一項論文統計分析了開源專案的資料,發現程式碼註釋充分程度高的專案,其程式碼變更更穩定,Bug缺陷也較少。因此註釋對專案質量有正向影響。
GitHub的資料分析報告中發現,與程式碼量相比,專案的維護更新頻率更與文件註釋的完備性正相關。這可能是因為註釋可以減少開發者的理解成本。
“開放式軟體設計”中提出的7項原則包括使用恰當的文件,因為完善的文件註釋可以明確軟體系統的架構、介面和功能, thus提高整個專案的可維護性。

Mozilla的規範細節

Mozilla研究人員透過對開源專案的註釋進行分類,總結出6類常見註釋及其特點,如下所示:

  • 功能註釋 描述程式碼的功能或目的,通常位於函式或類的開頭。
  • 語義註釋 描述程式碼的語義,例如變數的含義、常量的值、函式的引數或返回值等。
  • 約束註釋 描述程式碼的約束,例如函式的引數型別、返回值型別、變數的取值範圍等。
  • 設計註釋 描述程式碼的設計或架構,例如模組之間的關係、介面的使用等。
  • 測試註釋 描述程式碼的測試用例或測試方法,用於幫助開發人員和測試人員驗證程式碼的正確性。
  • 維護註釋 描述程式碼的維護資訊,例如作者、更新日期、修改內容等。

功能註釋是最重要的註釋型別,它可以幫助開發人員快速理解程式碼的功能和目的。語義註釋可以幫助開發人員理解程式碼的含義,約束註釋可以幫助開發人員避免錯誤,設計註釋可以幫助開發人員理解程式碼的整體結構,測試註釋可以幫助開發人員驗證程式碼的正確性,維護註釋可以幫助開發人員維護程式碼。Mozilla 建議開發人員在編寫程式碼時,儘量使用這 6 類註釋,以提高程式碼的可讀性、可維護性和可測試性。

我們認為尤其是功能註釋(函式註釋),顯然是用於應更注重描述函式業務行為意義,而不是函式的具體實現細節

  1. 業務行為相對穩定,易於保持註釋同步;
  2. 提高註釋可讀性和重用性;
  3. 有利於理解系統整體業務流程。

自上而下模式下的知識管理

在傳統的軟體開發模式中,我們通常採用自下而上的開發方式:開發者根據自己的設計首先實現程式碼,然後另行編寫註釋檔案。這給知識管理和質量把控帶來一定難題。一方面,由於註釋與程式碼並非同步生成,很難保證它們在實現和表達上的一致性。註釋內容難免會與程式碼實際情況脫節,無法充分記錄和傳承重要設計思路與知識。另一方面,自下而上模式難以規範化註釋的編寫過程和內容標準。開發者每個人編寫註釋的風格不同,很難保證專案整體註釋的質量和完整性。這給日後程式碼維護和沿續開發帶來不利影響。
與此同時,隨著人工智慧技術的發展,我們可以借鑑產品開發中的自上而下思路,採取新的模式。即在進行需求和設計階段,利用AI助手自動提取關鍵資訊,並在此基礎上同步生成註釋詳盡的程式碼框架。這樣可以使註釋內容豐富,結構清晰,並與程式碼高度一致。同時也大幅提高了開發效率。當然,關鍵還是需要研發智慧機制,並建立完善的知識管理規範。但總體來說,這是值得我們積極探索的新正規化,可能會給軟體工程帶來重大影響。

註釋規範與AI生成機制研究

規範高質量的註釋內容是實現“正向生成”模式的關鍵一環。國內外已有一些初步探索成果,但整體來說,我們面臨著如何構建完善的註釋知識體系和自動生成機制的挑戰。目前,一些開源專案和公司已經提出一定的註釋標準模板,比如Github和Facebook的做法,這為後續工作奠定了基礎。我們可以在此基礎上,構建更全面系統的註釋知識圖譜,詳細記錄各類元素和屬性之間的定義與關係。最終的目標是軟體專案開發的“正向生成”理論和實踐的成熟與普及。
與此同時,隨著人工智慧技術的發展,利用深度學習方法研發註釋自動生成模型也是必要的。這類模型可以透過學習大量歷史專案中的註釋規範和語義特徵,來自動產生符合標準的初步註釋內容。
但是,由於不同專案之間知識結構和表達方式存在差異,僅靠模型也難完全替代人工智慧。因此,我們需要探索人機協同的工作模式,讓AI助手提出初稿註釋,然後由人工進行檢查和最佳化,透過迭代不斷完善產出。同時也可以開放模型,實現社群參與共同進步。
只有透過持續研究,我們才有望在未來幾年內推出更成熟的註釋知識管理體系和自動生成解決方案。一旦這套“正向生成”的新正規化得到驗證和應用,將極大提高軟體專案的開發效率和產品質量。這將引領整個行業發展。