自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

很有意思,如何把代碼看成一個(gè)犯罪現(xiàn)場

開發(fā) 后端 前端 移動(dòng)開發(fā)
些年來涌現(xiàn)出的工具和相關(guān)文獻(xiàn)的數(shù)量來看,度量軟件的復(fù)雜度是軟件開發(fā)社區(qū)之中流行且常見的活動(dòng)。Adam Tornhill 從其工程和心理學(xué)背景出發(fā),在 QCon 倫敦上建議大家在版本控制工具的幫助下把代碼當(dāng)成一個(gè)犯罪現(xiàn)場看待。

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

Tornhill 認(rèn)為目前對(duì)軟件復(fù)雜度的度量是不***的。于是他轉(zhuǎn)向從心理學(xué)知識(shí)中尋找答案。地理罪犯分析(Geographical offender profiling)調(diào)查法基于了這樣一個(gè)原則:罪犯的老窩往往就在他/她作案地點(diǎn)的邊界之內(nèi)。

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

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

一個(gè)熱點(diǎn)被高亮的代碼城市。

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

時(shí)空耦合分析在其它方面也很有用。當(dāng)來自于不同團(tuán)隊(duì)的人在同一時(shí)間改變不同組件時(shí),它可以指出其變化模式。這個(gè)模式可以提示系統(tǒng)的體系結(jié)構(gòu)和團(tuán)隊(duì)結(jié)構(gòu)之間的不一致,而這種不一致會(huì)導(dǎo)致從提出變更請(qǐng)求到部署上線之間更長的周期時(shí)間。

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

版本控制取證顯示組件的有效所有權(quán)。

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

責(zé)任編輯:林師授 來源: infoQ 編譯
相關(guān)推薦

2021-10-28 19:35:02

代碼main方法

2020-12-12 13:50:16

云開發(fā)

2021-01-27 13:54:05

開發(fā)云原生工具

2018-06-24 16:39:28

Tomcat異常線程

2024-03-18 08:14:07

SpringDAOAppConfig

2024-05-20 01:10:00

Promise變量

2010-04-09 11:24:59

Oracle 排序

2023-05-15 09:16:18

CSSCSS Mask

2015-01-05 10:13:37

2009-08-26 17:53:31

C# DropDown

2022-03-21 10:21:50

jQuery代碼模式

2022-07-11 13:09:26

mmapLinux

2021-03-25 06:12:55

SVG 濾鏡CSS

2012-05-22 10:12:59

jQuery

2022-08-15 22:34:47

Overflow方向裁切

2020-03-10 14:59:16

oracle數(shù)據(jù)庫監(jiān)聽異常

2022-05-20 07:36:02

LiveTerm工具

2021-02-20 16:01:26

Github前端開發(fā)

2022-06-15 07:21:47

鼠標(biāo)指針交互效果CSS

2017-12-15 10:50:40

Kotlin語法糖程序員
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)