代碼即犯罪現場

jopen 9年前發布 | 4K 次閱讀 代碼

原文  http://www.infoq.com/cn/news/2015/03/code-as-a-crime-scene


以近些年來涌現出的工具和相關文獻的數量來看,度量軟件的復雜度是軟件開發社區之中流行且常見的活動。 Adam Tornhill 從其工程和心理學背景出發,在 QCon倫敦 上建議大家在版本控制工具的幫助下把代碼當成一個犯罪現場看待。

Tornhill認為目前對軟件復雜度的度量是不完美的。于是他轉向從心理學知識中尋找答案。 地理罪犯分析 (Geographical offender profiling)調查法基于了這樣一個原則:罪犯的老窩往往就在他/她作案地點的邊界之內。

在諸如 CodeCity 等工具的幫助下,Tornhill將這一原則應用到代碼上。其背后的思想是為代碼創造地理呈現。區域和建筑物映射代碼的結構,如包或類。代碼屬性(如代碼行數或方法數量)決定區域和建筑物的尺寸。然后, Tornhill借助于版本控制工具,將這些代碼結構信息與代碼中他所謂的空間運動進行了結合。

版本控制工具提供了大量取證細節,諸如何人、何時、在版本庫的何處做了改變。將這一空間信息與代碼結構相結合,則突出了熱點。Tornhill宣 稱在一個案例分析中(40萬行代碼,89名開發人員,18000+次提交)有8個缺陷集中區域,72%的缺陷集中在4%的代碼中,用熱點精確定位了其中的 7個區域。

代碼即犯罪現場

一個熱點被高亮的代碼城市。

使用版本控制信息可以做時空耦合分析。如果兩個代碼文件在同一時間發生改變,這意味著文件之間是物理耦合的,例如:一個類調用另一個。然而它們可能只是邏輯形式上的耦合,常見的拷貝-粘貼就會出現這樣的結果。如果沒有時空耦合分析的話,會很容易忽略掉這些問題。

時空耦合分析在其它方面也很有用。當來自于不同團隊的人在同一時間改變不同組件時,它可以指出其變化模式。這個模式可以提示系統的體系結構和團隊結構之間的不一致,而這種不一致會導致從提出變更請求到部署上線之間更長的周期時間。

版本控制信息也可以用于挖掘知識的所有者和組件的所有權。如果一個開發人員是一個給定代碼文件或組件的主要提交者,那么我們可以有把握地認為他就 是這個組件的知識所有者,哪怕他不在負責這個組件的團隊中。這也意味著“撞車”將有跡可循并得以緩解。在更極端的案例中,知識所有者已經不在公司里了,那 么就會出現知識的缺口。這些技術幫助發現這些缺口并彌合它們。

代碼即犯罪現場

版本控制取證顯示組件的有效所有權。

Tornhill正就這一話題 寫一本書 ,目前在Beta狀態。The Pragmatic Bookshelf將于近期出版該書,預計出版日期是2015年3月10日。

查看英文原文: Your Code as a Crime Scene

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!