軟件代碼審查標準制定及執(zhí)行_第1頁
軟件代碼審查標準制定及執(zhí)行_第2頁
軟件代碼審查標準制定及執(zhí)行_第3頁
軟件代碼審查標準制定及執(zhí)行_第4頁
軟件代碼審查標準制定及執(zhí)行_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第一章軟件代碼審查標準制定的重要性與現(xiàn)狀第二章代碼審查標準的構(gòu)建方法論第三章代碼審查標準的執(zhí)行機制第四章代碼審查標準的工具鏈整合第五章代碼審查標準的持續(xù)改進第六章代碼審查標準的全球化與本地化01第一章軟件代碼審查標準制定的重要性與現(xiàn)狀從錯誤中學習:代碼審查的必要性在軟件開發(fā)領域,代碼審查是一種被廣泛認可的質(zhì)量保證手段。然而,許多企業(yè)仍然忽視了代碼審查的重要性,導致了大量的軟件缺陷和安全漏洞。以2023年某金融科技公司為例,由于未進行有效的代碼審查,一個簡單的空指針異常導致了系統(tǒng)宕機,直接經(jīng)濟損失超過500萬美元。這一事件不僅給公司帶來了巨大的經(jīng)濟損失,也嚴重影響了公司的聲譽。根據(jù)IEEESpectrum2023年的報告,83%的軟件缺陷源于代碼審查階段未能發(fā)現(xiàn)。這一數(shù)據(jù)清晰地表明,代碼審查是預防軟件缺陷、提升代碼質(zhì)量、降低維護成本的關鍵環(huán)節(jié)。然而,許多企業(yè)在實際操作中,由于缺乏明確的標準和流程,導致代碼審查流于形式,無法發(fā)揮其應有的作用。代碼審查標準制定的重要性在于,它能夠為代碼審查提供明確的指導,確保審查的一致性和有效性。通過制定標準,企業(yè)可以明確審查的內(nèi)容、流程和方法,從而提高審查的質(zhì)量和效率。同時,標準制定還能夠幫助企業(yè)建立一套完整的代碼審查體系,包括技術規(guī)范、流程模板、工具集等,從而全面提升代碼質(zhì)量。在制定代碼審查標準時,企業(yè)需要考慮多個因素,包括技術棧、團隊規(guī)模、業(yè)務需求等。例如,對于使用Java、Python、Go等多種編程語言的團隊,需要制定相應的編碼規(guī)范和審查標準;對于大型團隊,需要建立一套完善的審查流程和工具鏈;對于有特定業(yè)務需求的團隊,需要制定相應的業(yè)務邏輯審查標準。此外,代碼審查標準制定還需要考慮企業(yè)的文化和價值觀。例如,一些企業(yè)強調(diào)創(chuàng)新和快速迭代,可能會在審查標準中給予更多的靈活性;而一些企業(yè)強調(diào)嚴謹和穩(wěn)定,可能會在審查標準中給予更多的嚴格性。因此,企業(yè)在制定代碼審查標準時,需要根據(jù)自身的實際情況進行調(diào)整和優(yōu)化。總之,代碼審查標準制定是提升代碼質(zhì)量、降低維護成本、預防軟件缺陷的重要手段。企業(yè)需要高度重視代碼審查標準的制定,并根據(jù)自身的實際情況進行調(diào)整和優(yōu)化,以確保代碼審查的有效性和一致性。當前標準制定的缺失缺乏明確的標準60%的中小型企業(yè)無明確的審查流程,導致審查工作缺乏方向和依據(jù)。審查覆蓋率不足大型科技公司(如Meta)審查覆蓋率僅達65%,遠低于理想水平。標準與實際脫節(jié)現(xiàn)行標準往往過于理論化,缺乏對實際業(yè)務場景的考慮,導致標準難以落地。缺乏培訓和支持審查人員缺乏必要的培訓和支持,導致審查質(zhì)量參差不齊。工具使用不當過度依賴靜態(tài)掃描工具,而忽視了動態(tài)分析和人工審查的重要性。缺乏反饋機制審查結(jié)果未能及時反饋給開發(fā)人員,導致問題重復出現(xiàn)。標準制定的具體維度技術規(guī)范靜態(tài)代碼分析規(guī)則(如SonarQube標準)設計模式遵循度(如SOLID原則)代碼風格規(guī)范(如GoogleJavaStyleGuide)安全漏洞掃描規(guī)則(如OWASPTop10)流程模板審查輪次分配(Triage→Detailed→Final)缺陷分類矩陣(P0/P1/P2優(yōu)先級)審查時間預算(每人每天審查代碼量)審查記錄模板(含問題描述、解決方案等)工具集GitLabCI/CD集成Phabricator代碼注釋規(guī)范CodeClimateAPI審查打分卡文化保障審查時間計入KPI缺陷發(fā)現(xiàn)獎勵機制代碼規(guī)范培訓代碼審查社區(qū)建設標準制定的短期收益代碼審查標準的制定和執(zhí)行能夠為企業(yè)帶來顯著的短期收益。首先,通過明確的標準和流程,代碼審查的效率和質(zhì)量得到了顯著提升。根據(jù)相關數(shù)據(jù),標準實施后6個月內(nèi),企業(yè)的缺陷發(fā)現(xiàn)率提升了30%,這意味著更多的缺陷在開發(fā)階段就被發(fā)現(xiàn)并修復,從而減少了后期維護成本。其次,代碼重復率下降了25%。通過標準的制定,企業(yè)能夠鼓勵開發(fā)人員重用已有的代碼和組件,從而避免了重復開發(fā),提高了開發(fā)效率。此外,代碼質(zhì)量的提升也使得代碼的可維護性得到了改善,從而降低了維護成本。除了上述短期收益外,代碼審查標準的制定還能夠帶來其他方面的收益。例如,通過標準的制定,企業(yè)能夠培養(yǎng)出一支高水平的開發(fā)團隊,從而提高企業(yè)的核心競爭力。此外,標準的制定還能夠促進企業(yè)文化的建設,提高員工的團隊合作精神和溝通能力。綜上所述,代碼審查標準的制定和執(zhí)行能夠為企業(yè)帶來顯著的短期收益,包括提升代碼質(zhì)量、降低維護成本、提高開發(fā)效率等。因此,企業(yè)應該高度重視代碼審查標準的制定,并根據(jù)自身的實際情況進行調(diào)整和優(yōu)化,以確保代碼審查的有效性和一致性。02第二章代碼審查標準的構(gòu)建方法論從現(xiàn)狀診斷到持續(xù)優(yōu)化:構(gòu)建方法論代碼審查標準的構(gòu)建是一個復雜的過程,需要從現(xiàn)狀診斷到持續(xù)優(yōu)化形成閉環(huán)。首先,企業(yè)需要對當前的代碼審查現(xiàn)狀進行全面的診斷,包括審查流程、工具使用、人員技能等方面。通過診斷,企業(yè)可以發(fā)現(xiàn)問題所在,為標準的構(gòu)建提供依據(jù)。在診斷的基礎上,企業(yè)需要制定一個合理的標準構(gòu)建計劃。這個計劃應該包括標準的范圍、目標、時間表等。例如,企業(yè)可以根據(jù)自身的實際情況,制定一個分階段的構(gòu)建計劃,逐步完善代碼審查標準。在標準構(gòu)建過程中,企業(yè)需要采用多種方法和技術。例如,企業(yè)可以采用問卷調(diào)查、訪談、數(shù)據(jù)分析等方法,收集員工的意見和建議。此外,企業(yè)還可以采用原型設計、用戶測試等方法,驗證標準的可行性和有效性。在標準構(gòu)建完成后,企業(yè)需要對其進行持續(xù)的優(yōu)化。通過收集員工的反饋,企業(yè)可以發(fā)現(xiàn)問題并及時進行調(diào)整。此外,企業(yè)還可以根據(jù)技術的發(fā)展和業(yè)務的變化,對標準進行更新和改進??傊a審查標準的構(gòu)建是一個持續(xù)的過程,需要企業(yè)不斷診斷、計劃、實施和優(yōu)化。通過合理的構(gòu)建方法論,企業(yè)可以建立一個有效的代碼審查體系,提升代碼質(zhì)量,降低維護成本。標準構(gòu)建的障礙分析技術瓶頸多語言團隊難以統(tǒng)一規(guī)則,審查工具與IDE集成度不足。組織因素跨部門協(xié)作困難,領導層支持力度不夠。歷史遺留問題舊代碼庫審查復雜度指數(shù)級增加,遺產(chǎn)工具鏈與新生工具沖突。文化因素審查被積壓在待辦列表,技術債務工具使用率低。技能不足審查人員缺乏必要的技能和經(jīng)驗,導致審查質(zhì)量參差不齊。資源限制缺乏必要的資源支持,如時間、資金、工具等。分階段構(gòu)建框架診斷階段現(xiàn)狀掃描(如SonarQube掃描)缺陷類型統(tǒng)計工具兼容性測試人員技能評估設計階段規(guī)則優(yōu)先級排序(如FMEA矩陣)審查模板設計缺陷分類矩陣審查人矩陣驗證階段小范圍試點缺陷漏檢率測試工具性能調(diào)優(yōu)員工反饋收集發(fā)布階段分批次推廣培訓材料開發(fā)反饋收集機制標準更新計劃標準構(gòu)建的里程碑代碼審查標準的構(gòu)建是一個逐步完善的過程,每個階段都有明確的里程碑,確保標準的構(gòu)建效果。在診斷階段,企業(yè)需要對當前的代碼審查現(xiàn)狀進行全面的診斷,包括審查流程、工具使用、人員技能等方面。通過診斷,企業(yè)可以發(fā)現(xiàn)問題所在,為標準的構(gòu)建提供依據(jù)。在診斷的基礎上,企業(yè)需要制定一個合理的標準構(gòu)建計劃。這個計劃應該包括標準的范圍、目標、時間表等。例如,企業(yè)可以根據(jù)自身的實際情況,制定一個分階段的構(gòu)建計劃,逐步完善代碼審查標準。在標準構(gòu)建過程中,企業(yè)需要采用多種方法和技術。例如,企業(yè)可以采用問卷調(diào)查、訪談、數(shù)據(jù)分析等方法,收集員工的意見和建議。此外,企業(yè)還可以采用原型設計、用戶測試等方法,驗證標準的可行性和有效性。在標準構(gòu)建完成后,企業(yè)需要對其進行持續(xù)的優(yōu)化。通過收集員工的反饋,企業(yè)可以發(fā)現(xiàn)問題并及時進行調(diào)整。此外,企業(yè)還可以根據(jù)技術的發(fā)展和業(yè)務的變化,對標準進行更新和改進。總之,代碼審查標準的構(gòu)建是一個持續(xù)的過程,需要企業(yè)不斷診斷、計劃、實施和優(yōu)化。通過合理的構(gòu)建方法論,企業(yè)可以建立一個有效的代碼審查體系,提升代碼質(zhì)量,降低維護成本。03第三章代碼審查標準的執(zhí)行機制從任務分配到效果驗證:執(zhí)行機制代碼審查標準的執(zhí)行是一個復雜的過程,需要建立一套完善的執(zhí)行機制,確保審查的有效性和一致性。首先,企業(yè)需要建立一套合理的任務分配機制。這個機制應該能夠根據(jù)員工的技能和經(jīng)驗,將審查任務分配給合適的審查人員。例如,企業(yè)可以根據(jù)員工的技能水平,將審查任務分配給高級工程師或資深工程師。在任務分配的基礎上,企業(yè)需要建立一套審查流程。這個流程應該包括審查的步驟、時間表、質(zhì)量控制等。例如,企業(yè)可以制定一個審查流程,包括Triage、Detailed、Final三個階段,每個階段都有明確的時間表和質(zhì)量控制要求。在審查過程中,企業(yè)需要建立一套質(zhì)量控制機制。這個機制應該能夠及時發(fā)現(xiàn)和糾正審查中的問題。例如,企業(yè)可以建立一套審查記錄制度,記錄每個審查任務的審查結(jié)果,以便于后續(xù)的跟蹤和改進。在審查完成后,企業(yè)需要建立一套效果驗證機制。這個機制應該能夠驗證審查的效果,確保審查的有效性。例如,企業(yè)可以定期進行審查效果評估,評估審查的缺陷發(fā)現(xiàn)率、修復率等指標,以便于后續(xù)的改進??傊a審查標準的執(zhí)行是一個持續(xù)的過程,需要企業(yè)不斷優(yōu)化執(zhí)行機制,確保審查的有效性和一致性。通過合理的執(zhí)行機制,企業(yè)可以建立一個有效的代碼審查體系,提升代碼質(zhì)量,降低維護成本。執(zhí)行中的系統(tǒng)性風險工具風險過度依賴靜態(tài)掃描工具,而忽視了動態(tài)分析和人工審查的重要性。流程風險審查時間分配不均,缺陷分類混亂。文化風險審查被積壓在待辦列表,技術債務工具使用率低。技能不足審查人員缺乏必要的技能和經(jīng)驗,導致審查質(zhì)量參差不齊。資源限制缺乏必要的資源支持,如時間、資金、工具等。溝通不暢審查人員與開發(fā)人員之間溝通不暢,導致問題解決不及時。有效的執(zhí)行框架任務分配智能匹配算法(基于技能圖譜)負載均衡(如ElasticStack案例)優(yōu)先級隊列(如Kubernetes審查規(guī)則)定期審查計劃(如每周審查會議)執(zhí)行監(jiān)控實時看板(如GitLabMergeRequest監(jiān)控)審查時長統(tǒng)計(含異常檢測)問題類型分布熱力圖審查質(zhì)量評分卡反饋閉環(huán)雙向反饋機制(審查人→被審查人)缺陷修復時效SLA(如P0需4小時響應)改進積分系統(tǒng)定期回顧會議技術支撐AI輔助審查(如DeepMindCodeBERT模型)自動化回歸(如Selenium腳本)審查知識圖譜自動化審查工具執(zhí)行中的關鍵指標代碼審查標準的執(zhí)行效果需要通過一系列關鍵指標來衡量,這些指標可以幫助企業(yè)評估審查的效果,并進行相應的改進。首先,審查通過率是一個重要的指標,它反映了審查的有效性。理想情況下,審查通過率應該達到85%以上,這意味著大多數(shù)代碼都能夠通過審查,表明代碼質(zhì)量較高。其次,缺陷修復率也是一個重要的指標,它反映了審查的修復效果。理想情況下,缺陷修復率應該達到95%以上,這意味著大多數(shù)缺陷都能夠得到及時修復,從而減少了對業(yè)務的影響。除了上述指標外,審查時間也是一個重要的指標,它反映了審查的效率。理想情況下,審查時間應該控制在3小時以內(nèi),這意味著審查人員能夠在合理的時間內(nèi)完成審查任務。此外,代碼復用率也是一個重要的指標,它反映了審查的復用效果。理想情況下,代碼復用率應該達到35%以上,這意味著審查人員能夠發(fā)現(xiàn)并重用已有的代碼和組件,從而減少重復開發(fā),提高開發(fā)效率。綜上所述,代碼審查標準的執(zhí)行效果需要通過一系列關鍵指標來衡量,這些指標可以幫助企業(yè)評估審查的效果,并進行相應的改進。04第四章代碼審查標準的工具鏈整合從孤立的工具到協(xié)同的生態(tài):工具鏈整合代碼審查工具鏈的整合是一個復雜的過程,需要將各種工具整合到一個協(xié)同的生態(tài)系統(tǒng)中。首先,企業(yè)需要選擇合適的工具。這個選擇應該基于企業(yè)的技術棧、團隊規(guī)模、業(yè)務需求等因素。例如,對于使用Java、Python、Go等多種編程語言的團隊,需要選擇能夠支持多種語言的工具。在工具選擇的基礎上,企業(yè)需要建立一套工具鏈整合方案。這個方案應該包括各種工具的集成方式、數(shù)據(jù)交換格式、配置方法等。例如,企業(yè)可以建立一套工具鏈整合方案,將GitLabCI/CD、Phabricator、CodeClimate等工具整合到一個協(xié)同的生態(tài)系統(tǒng)中。在工具鏈整合過程中,企業(yè)需要解決各種技術問題。例如,企業(yè)需要解決不同工具之間的兼容性問題,解決數(shù)據(jù)交換問題,解決配置問題等。在工具鏈整合完成后,企業(yè)需要對其進行持續(xù)的優(yōu)化。通過收集員工的反饋,企業(yè)可以發(fā)現(xiàn)問題并及時進行調(diào)整。此外,企業(yè)還可以根據(jù)技術的發(fā)展和業(yè)務的變化,對工具鏈進行更新和改進??傊?,代碼審查工具鏈的整合是一個持續(xù)的過程,需要企業(yè)不斷優(yōu)化整合方案,確保工具鏈的有效性和協(xié)同性。通過合理的工具鏈整合,企業(yè)可以建立一個高效的代碼審查體系,提升代碼質(zhì)量,降低維護成本。工具選型的常見誤區(qū)過度依賴單一工具過度依賴靜態(tài)掃描工具,導致漏檢率上升。忽略團隊技能工具選擇未考慮團隊技能,導致使用效率低下。配置復雜工具配置過于復雜,導致實施困難。缺乏標準化工具之間缺乏標準化,導致數(shù)據(jù)交換困難。更新不及時工具更新不及時,導致功能缺失。忽視成本工具鏈成本過高,企業(yè)無法負擔。最佳工具鏈架構(gòu)靜態(tài)分析SonarQube核心引擎語言插件(Java/Go/Python)自定義規(guī)則集安全漏洞掃描規(guī)則(如OWASPTop10)動態(tài)分析Valgrind內(nèi)存檢測AFL++模糊測試JMeter壓力測試代碼覆蓋率分析(如JaCoCo)代碼質(zhì)量CodeClimateAPIESLintPylintDockerfileLinter協(xié)作平臺GitLabCI/CDGitHubActionsJenkins流水線審查知識庫(如Confluence)工具鏈的ROI分析代碼審查工具鏈的ROI分析表明,雖然工具鏈的實施需要一定的投資,但能夠帶來顯著的回報。首先,工具鏈的實施能夠減少人工審查的時間,從而降低人力成本。例如,通過自動化審查工具,企業(yè)可以減少審查人員的工作量,從而節(jié)省人力資源。其次,工具鏈的實施能夠提高審查的效率,從而減少審查周期。例如,通過自動化審查工具,企業(yè)可以快速發(fā)現(xiàn)代碼中的缺陷,從而減少缺陷修復時間。此外,工具鏈的實施還能夠提高代碼質(zhì)量,從而減少后期維護成本。例如,通過靜態(tài)分析工具,企業(yè)可以及時發(fā)現(xiàn)代碼中的缺陷,從而減少缺陷修復成本。綜上所述,代碼審查工具鏈的ROI分析表明,工具鏈的實施能夠帶來顯著的回報,包括降低人力成本、提高審查效率、提高代碼質(zhì)量等。因此,企業(yè)應該高度重視代碼審查工具鏈的實施,并根據(jù)自身的實際情況進行投資。05第五章代碼審查標準的持續(xù)改進從靜態(tài)標準到動態(tài)進化:持續(xù)改進循環(huán)代碼審查標準的持續(xù)改進是一個動態(tài)的過程,需要建立一套完善的改進機制,確保標準的持續(xù)優(yōu)化。首先,企業(yè)需要建立一套改進的反饋機制。這個機制應該能夠收集員工的反饋,包括審查過程中的問題、改進建議等。例如,企業(yè)可以建立一套反饋系統(tǒng),收集員工的反饋,并進行分析和處理。在反饋機制的基礎上,企業(yè)需要建立一套改進的評估機制。這個機制應該能夠評估改進的效果,確保改進的有效性。例如,企業(yè)可以建立一套評估系統(tǒng),評估改進的效果,并進行相應的調(diào)整。在評估機制的基礎上,企業(yè)需要建立一套改進的實施方案。這個方案應該能夠?qū)嵤└倪M措施,確保改進的執(zhí)行。例如,企業(yè)可以建立一套實施方案,實施改進措施,并跟蹤改進效果。在實施方案的基礎上,企業(yè)需要建立一套改進的迭代機制。這個機制應該能夠持續(xù)改進標準,確保標準的持續(xù)優(yōu)化。例如,企業(yè)可以建立一套迭代機制,持續(xù)改進標準,并跟蹤改進效果。總之,代碼審查標準的持續(xù)改進是一個動態(tài)的過程,需要企業(yè)不斷反饋、評估、實施、迭代,確保標準的持續(xù)優(yōu)化。通過持續(xù)改進,企業(yè)可以建立一個有效的代碼審查體系,提升代碼質(zhì)量,降低維護成本。標準改進的滯后現(xiàn)象組織文化滯后部分團隊對改進持抵觸態(tài)度,導致改進推進困難。資源分配滯后改進需要額外資源,但企業(yè)未能及時分配。技術棧不匹配現(xiàn)有工具鏈不支持新語言特性,導致改進受阻。缺乏改進計劃沒有明確的改進計劃,導致改進方向不明確。缺乏改進指標沒有明確的改進指標,導致改進效果難以衡量。缺乏改進文化企業(yè)缺乏持續(xù)改進的文化,導致改進動力不足。PDCA改進循環(huán)計劃階段技術雷達掃描風險矩陣改進路線圖改進目標設定執(zhí)行階段改進試點改進實施改進監(jiān)控改進效果跟蹤檢查階段改進效果評估改進問題收集改進效果驗證改進反饋收集處置階段改進措施調(diào)整改進成果固化改進經(jīng)驗總結(jié)下一輪改進計劃改進的量化成果代碼審查標準的持續(xù)改進能夠帶來顯著的量化成果。首先,通過改進,企業(yè)能夠減少缺陷數(shù)量,從而降低維護成本。例如,通過改進,企業(yè)能夠減少缺陷修復時間,從而減少缺陷修復成本。其次,通過改進,企業(yè)能夠提高代碼質(zhì)量,從而減少后期維護成本。例如,通過改進,企業(yè)能夠減少代碼中的缺陷,從而減少后期維護成本。此外,通過改進,企業(yè)能夠提高審查效率,從而減少審查周期。例如,通過改進,企業(yè)能夠快速發(fā)現(xiàn)代碼中的缺陷,從而減少審查周期。綜上所述,代碼審查標準的持續(xù)改進能夠帶來顯著的量化成果,包括減少缺陷數(shù)量、提高代碼質(zhì)量、提高審查效率等。因此,企業(yè)應該高度重視代碼審查標準的持續(xù)改進,并根據(jù)自身的實際情況進行改進。06第六章代碼審查標準的全球化與本地化從單一標準到多元適配:全球化與本地化策略代碼審查標準的全球化與本地化是一個復雜的過程,需要建立一套有效的策略,確保標準在全球范圍內(nèi)的一致性和本地化。首先,企業(yè)需要建立一套全球化標準。這個標準應該能夠覆蓋全球范圍內(nèi)的審查要求,包括安全標準、隱私標準、技術規(guī)范等。例如,企業(yè)可以建立一套全球化標準,覆蓋OWASPTop10、GDPR要求、ISO26262標準等。在全球化標準的基礎上,企業(yè)需要建立一套本地化策略。這個策略應該能夠根據(jù)不同地區(qū)的要求,對全球化標準進行調(diào)整。例如,企業(yè)可以根據(jù)不同地區(qū)的要求

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論