• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      社交化軟件開(kāi)發(fā)問(wèn)答中的交互過(guò)程研究

      2017-06-29 12:00:33趙文耘
      關(guān)鍵詞:回答者提問(wèn)者開(kāi)發(fā)者

      王 海 彭 鑫 于 涵 趙文耘

      (復(fù)旦大學(xué)軟件學(xué)院 上海 201203) (復(fù)旦大學(xué)上海市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室 上海 201203)

      社交化軟件開(kāi)發(fā)問(wèn)答中的交互過(guò)程研究

      王 海 彭 鑫 于 涵 趙文耘

      (復(fù)旦大學(xué)軟件學(xué)院 上海 201203) (復(fù)旦大學(xué)上海市數(shù)據(jù)科學(xué)重點(diǎn)實(shí)驗(yàn)室 上海 201203)

      在軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站上,解決問(wèn)題的過(guò)程并非簡(jiǎn)單的一問(wèn)一答,而經(jīng)常包含著一個(gè)復(fù)雜的交互過(guò)程。深刻理解軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站的問(wèn)答特點(diǎn)及其交互過(guò)程,對(duì)于提高問(wèn)題和回答質(zhì)量、改進(jìn)交互效率以及開(kāi)發(fā)相關(guān)的自動(dòng)化輔助工具都有著重要的意義。從StackOverflow中問(wèn)題的目的和意圖、基本要素以及所包含的交互方式三個(gè)角度開(kāi)展研究,抽樣并分析1 001個(gè)問(wèn)題,總結(jié)出問(wèn)題的7種類型、8個(gè)要素和10類交互方式。根據(jù)研究結(jié)果,對(duì)軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站的使用者、開(kāi)發(fā)者以及輔助問(wèn)答工具的研究者提出了相應(yīng)的建議。

      軟件開(kāi)發(fā) 問(wèn)答 StackOverflow 社會(huì)學(xué)習(xí) 交互

      0 引 言

      現(xiàn)代軟件開(kāi)發(fā)所涉及的技術(shù)體系越來(lái)越復(fù)雜,軟件開(kāi)發(fā)人員經(jīng)常會(huì)碰到各種無(wú)法解決的技術(shù)問(wèn)題,需要通過(guò)各種方法進(jìn)行求助。隨著各種問(wèn)答網(wǎng)站的興起,軟件開(kāi)發(fā)人員也正越來(lái)越多地依賴于在線問(wèn)答而非個(gè)別請(qǐng)教的方式進(jìn)行軟件開(kāi)發(fā)問(wèn)題求助。除了基本的問(wèn)答功能外,這些網(wǎng)站還提供了諸如用戶積分、點(diǎn)贊、正確答案標(biāo)記等社交功能。

      軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站上的問(wèn)答過(guò)程并非簡(jiǎn)單的一問(wèn)一答,而是經(jīng)常包含復(fù)雜的交互式問(wèn)答過(guò)程。這是由多方面的原因引起的,例如:提問(wèn)者無(wú)法準(zhǔn)確表達(dá)自己的意思或遺漏重要的信息,需要進(jìn)一步補(bǔ)充和澄清;提問(wèn)者在已有回答基礎(chǔ)上繼續(xù)追問(wèn)其他相關(guān)的問(wèn)題;回答者需要提問(wèn)者確認(rèn)給出的解答或其他信息。很多問(wèn)題都是在問(wèn)答雙方(回答者可能不止一人)持續(xù)的交互過(guò)程中逐步得到澄清和解答的。因此,深刻理解軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站的交互過(guò)程對(duì)于提高問(wèn)題和回答質(zhì)量、改進(jìn)交互效率以及開(kāi)發(fā)相關(guān)的自動(dòng)化輔助工具都有著重要的意義。

      在目前的軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站中,StackOverflow(簡(jiǎn)稱SO)是最活躍、使用最廣泛的網(wǎng)站之一。SO的用戶可以通過(guò)直接搜索相關(guān)問(wèn)題解決自己在軟件開(kāi)發(fā)技術(shù)學(xué)習(xí)或開(kāi)發(fā)實(shí)踐中遇到的困難。如果無(wú)法找到相關(guān)的問(wèn)題或已有的回答不令人滿意,用戶可以提出新的問(wèn)題并等待其他用戶進(jìn)行解答。此外,用戶也可以回答其他人提出的問(wèn)題。已有的經(jīng)驗(yàn)研究結(jié)果表明,SO上有超過(guò)92%的問(wèn)題得到了解答,而這些問(wèn)題收到答案所需時(shí)間的中位數(shù)僅為11分鐘[1]。

      因此,本文以SO為例,對(duì)社交化軟件開(kāi)發(fā)問(wèn)答中的交互過(guò)程進(jìn)行了經(jīng)驗(yàn)研究。本文的研究圍繞以下3個(gè)方面的研究問(wèn)題RQ(Research Question)展開(kāi):

      RQ1:按照提問(wèn)的目的進(jìn)行區(qū)分,軟件開(kāi)發(fā)人員經(jīng)常會(huì)問(wèn)到哪些不同類型的軟件開(kāi)發(fā)問(wèn)題?

      RQ2:一個(gè)完整、清晰的軟件開(kāi)發(fā)問(wèn)題陳述應(yīng)當(dāng)包含哪些基本要素?

      RQ3:?jiǎn)柎痣p方經(jīng)常采取哪些交互行為和交互方式來(lái)進(jìn)行問(wèn)題澄清和回答?

      RQ1主要針對(duì)提問(wèn)者各種不同的提問(wèn)目的和意圖,例如尋求實(shí)現(xiàn)方法或出錯(cuò)解決方案等。問(wèn)題的意圖不清可能導(dǎo)致回答者以及其他用戶無(wú)法準(zhǔn)確理解問(wèn)題的含義。而RQ2則針對(duì)不同類型的問(wèn)題完整、準(zhǔn)確地描述所需的必要成分。例如,一個(gè)標(biāo)題為“連接數(shù)據(jù)庫(kù)時(shí)碰到困難了,該怎么解決”的問(wèn)題意圖可能是獲取連接數(shù)據(jù)庫(kù)的樣例代碼,那么提問(wèn)者應(yīng)該提供諸如數(shù)據(jù)庫(kù)、開(kāi)發(fā)語(yǔ)言之類的信息,而回答者則需要給出示例代碼。同樣標(biāo)題的問(wèn)題意圖也可以是連接數(shù)據(jù)庫(kù)代碼出錯(cuò)需要進(jìn)行排除,那么此時(shí)提問(wèn)者應(yīng)該提供諸如錯(cuò)誤日志這樣的信息,而回答者則需要提供解決建議并持續(xù)指導(dǎo)提問(wèn)者解決問(wèn)題。RQ3針對(duì)問(wèn)答雙方的整個(gè)交互過(guò)程,包括交互策略、澄清及確認(rèn)信息等,目的是理解在此過(guò)程中問(wèn)答雙方(回答者可能不止一人)如何相互溝通從而最終完成整個(gè)問(wèn)答過(guò)程。

      為了回答上述三個(gè)研究問(wèn)題,本文從SO數(shù)據(jù)集中隨機(jī)挑選了1 001個(gè)軟件開(kāi)發(fā)問(wèn)題作為樣本進(jìn)行研究并詳細(xì)分析了其中的每一個(gè)樣本。根據(jù)經(jīng)驗(yàn)研究結(jié)果,本文將常見(jiàn)的軟件開(kāi)發(fā)問(wèn)題進(jìn)行了分類,歸納了不同類型的問(wèn)題極其所需要的內(nèi)容要素,還對(duì)常見(jiàn)的問(wèn)答雙方交互方式進(jìn)行了分析。在此基礎(chǔ)上,本文根據(jù)經(jīng)驗(yàn)研究結(jié)果對(duì)社交化軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站的使用者、開(kāi)發(fā)者以及輔助問(wèn)答工具的研究者提出了相應(yīng)的建議。

      1 背景介紹

      StackOverflow(SO)是針對(duì)專業(yè)程序員的問(wèn)答網(wǎng)站,建立于2008年。由于完全免費(fèi)并且開(kāi)放注冊(cè),在之后的幾年內(nèi)SO得以快速發(fā)展。

      在SO上,問(wèn)題和答案都是由用戶發(fā)出。然而和其他論壇不同的是,SO并不鼓勵(lì)討論,用戶發(fā)布內(nèi)容的唯一目的就是獲得答案。因此SO的頁(yè)面都是針對(duì)解決具體技術(shù)問(wèn)題而設(shè)計(jì)的。注冊(cè)用戶可以在網(wǎng)頁(yè)上提出或者回答問(wèn)題。為了更清晰地描述問(wèn)題或者給出答案,用戶還可以修改其他用戶發(fā)出的問(wèn)題或者答案。

      在SO上,一個(gè)問(wèn)題包含標(biāo)題、正文、評(píng)分、評(píng)論以及標(biāo)簽5個(gè)部分。用戶可以給一個(gè)問(wèn)題投贊成票或者反對(duì)票,贊成票和反對(duì)票的差值就是問(wèn)題評(píng)分。問(wèn)題標(biāo)簽用于刻畫(huà)問(wèn)題的領(lǐng)域或話題,一般由用戶提供,主要目的是幫助用戶更方便地找到感興趣的問(wèn)題。

      SO上的一個(gè)問(wèn)題可以有多個(gè)答案,每個(gè)答案都包括答案正文、答案評(píng)分和答案評(píng)論3個(gè)部分。和問(wèn)題類似,答案也可以被投贊成票和反對(duì)票,兩者的差值就是答案評(píng)分。默認(rèn)情況下,答案將根據(jù)評(píng)分由高到低顯示。此外,提問(wèn)者可以把一個(gè)答案標(biāo)記成“已接受”。接受一個(gè)答案并不是必須的,但無(wú)論采用什么排序方式,只要存在已接受的答案,這個(gè)答案就會(huì)被排列在最前面。

      用戶可以通過(guò)問(wèn)題和答案的評(píng)論與其他人進(jìn)行交流。這些評(píng)論通常被用來(lái)澄清問(wèn)題或答案。每一條評(píng)論也都有一個(gè)評(píng)分以衡量其有用程度。與問(wèn)題和答案不同的是,評(píng)論只可以被贊成而不能反對(duì)。

      除了上面這些主要要素外,SO還有名聲和徽章系統(tǒng)。用戶可以在帖子被贊成時(shí)獲得名聲。高名聲可以為用戶帶來(lái)諸如使用高級(jí)工具等權(quán)限。名聲和徽章系統(tǒng)鼓勵(lì)了用戶積極參與,提供高質(zhì)量的問(wèn)題和答案,以此提升整個(gè)網(wǎng)站的問(wèn)題質(zhì)量。

      截至2016年2月2日,SO已經(jīng)擁有大約1 100萬(wàn)個(gè)問(wèn)題,1 800萬(wàn)個(gè)回答,4 500萬(wàn)條評(píng)論以及4萬(wàn)多個(gè)標(biāo)簽。此外,SO目前擁有大約510萬(wàn)用戶,平均每天被訪問(wèn)820萬(wàn)次并有8千多個(gè)新問(wèn)題被提出。

      2 研究過(guò)程

      2.1 概 覽

      本文的研究包含三個(gè)步驟。第一步是數(shù)據(jù)準(zhǔn)備,統(tǒng)計(jì)了數(shù)據(jù)集的一些基本情況。第二步是前導(dǎo)研究,本文的第一和第三作者在SO上隨機(jī)挑選了100個(gè)問(wèn)題進(jìn)行閱讀和分析。根據(jù)這100個(gè)問(wèn)題,總結(jié)出了3個(gè)分析角度并設(shè)計(jì)了一個(gè)問(wèn)卷用以收集數(shù)據(jù)。最后一步是深入分析,對(duì)通過(guò)隨機(jī)分層抽樣得到的1 001個(gè)問(wèn)題進(jìn)行細(xì)致分析。一共有10名研究生參與到最后一步中。他們被邀請(qǐng)閱讀這些問(wèn)題并完成調(diào)查問(wèn)卷已收集數(shù)據(jù)。通過(guò)分析收集到的數(shù)據(jù),得以回答三個(gè)研究問(wèn)題。

      2.2 數(shù)據(jù)準(zhǔn)備

      本文使用的數(shù)據(jù)來(lái)自StackExchange官方發(fā)布的公開(kāi)數(shù)據(jù)集。這類數(shù)據(jù)由StackExchange每2到3個(gè)月發(fā)布一次。本文所使用的數(shù)據(jù)集發(fā)布于2013年9月,下文將這個(gè)包含所有問(wèn)題的數(shù)據(jù)集稱為全集。

      在全集中,一共有來(lái)自2 332 403個(gè)用戶的5 648 975個(gè)問(wèn)題和10 284 554個(gè)答案,平均每個(gè)問(wèn)題1.82個(gè)答案。在全集中, 90.0%的問(wèn)題擁有答案。在這些擁有答案的問(wèn)題中,有“已接受”答案的問(wèn)題比例是66.7%。這個(gè)比例并不是很高,這是因?yàn)榻邮芤粋€(gè)答案并不是必須的。

      本文還統(tǒng)計(jì)了問(wèn)題和答案的評(píng)分?jǐn)?shù)據(jù)。所有問(wèn)題的平均評(píng)分是1.59,標(biāo)準(zhǔn)差是9.46。所有答案的平均評(píng)分是2.07,標(biāo)準(zhǔn)差是10.1。圖1(a)和圖1(b)展示了全集中問(wèn)題和答案的評(píng)分分布。所有擁有“已接受”答案的問(wèn)題的平均評(píng)分是2.07,而所有“已接受”的答案的平均評(píng)分是3.31。

      除了問(wèn)題和答案,本文還統(tǒng)計(jì)了評(píng)論相關(guān)的數(shù)據(jù)。問(wèn)題評(píng)論一共有8 726 252條,平均每個(gè)問(wèn)題3.04條評(píng)論;答案評(píng)論一共有13 937 529條,平均每個(gè)答案2.7條。上述所有數(shù)據(jù)如表1所示。

      本文的研究需要分析SO上問(wèn)答過(guò)程中的交互行為。由于交互行為無(wú)法通過(guò)自動(dòng)化的手段進(jìn)行分析,本文選擇人工對(duì)這些問(wèn)答進(jìn)行閱讀和分析。因此,作為分析對(duì)象被選取的問(wèn)答不能超出研究者的知識(shí)范圍。由于本研究中所有參與者都擁有超過(guò)三年的Java開(kāi)發(fā)經(jīng)驗(yàn),研究對(duì)象被限制在所有被標(biāo)記了Java標(biāo)簽的問(wèn)題中。下文將這個(gè)被選取的數(shù)據(jù)集稱為樣本集。樣本集中的各項(xiàng)統(tǒng)計(jì)量如圖1和表1所示。

      圖1 問(wèn)題和答案評(píng)分分布圖

      2.3 前導(dǎo)研究

      前導(dǎo)研究的目的是找出本文需要收集哪些數(shù)據(jù)以回答三個(gè)研究問(wèn)題。首先,本文的第一和第三作者通過(guò)人工閱讀并討論的方式對(duì)SO上的問(wèn)題進(jìn)行了研究。在討論之后,總結(jié)出需要關(guān)注的三個(gè)方面:?jiǎn)栴}類型、問(wèn)題要素以及交互行為。第三節(jié)將對(duì)這三個(gè)方面進(jìn)行介紹。

      表1 全集和樣本集的統(tǒng)計(jì)數(shù)據(jù)

      問(wèn)題的內(nèi)容和形式是由用戶以自然語(yǔ)言的方式給出的,無(wú)法通過(guò)自動(dòng)化的方式從中收集數(shù)據(jù)。因此在之后的深入分析中,10名研究生將被邀請(qǐng)輔助進(jìn)行數(shù)據(jù)收集工作。然而,由于沒(méi)有參與之前的討論,他們很難準(zhǔn)確地分析問(wèn)答并從中收集數(shù)據(jù)。為了幫助他們更準(zhǔn)確地收集數(shù)據(jù),本文設(shè)計(jì)了一個(gè)問(wèn)卷。在設(shè)計(jì)完問(wèn)卷之后,一位博士生和一位研究生被邀請(qǐng)來(lái)幫助改進(jìn)問(wèn)卷。該博士生擁有豐富的研究經(jīng)驗(yàn),而碩士生則擁有豐富的SO使用經(jīng)驗(yàn)。20個(gè)隨機(jī)抽取的SO上的問(wèn)題被分配給兩人分別獨(dú)自閱讀。閱讀后他們?yōu)槊總€(gè)問(wèn)題完成一份問(wèn)卷。通過(guò)對(duì)比兩組問(wèn)卷的結(jié)果并與兩位進(jìn)行討論,對(duì)調(diào)查問(wèn)卷進(jìn)行了調(diào)整。

      最終的問(wèn)卷包含五個(gè)部分。第一部分是用來(lái)收集問(wèn)題的基本信息,包括問(wèn)題的編號(hào)和問(wèn)題標(biāo)題。其他一些基本信息可以從數(shù)據(jù)集中自動(dòng)抽取,因此不需要被包含在問(wèn)卷中。問(wèn)卷的第二部分是和問(wèn)題類型相關(guān)的。這部分是一個(gè)多項(xiàng)選擇題,問(wèn)卷提供了在之前的討論中發(fā)現(xiàn)并總結(jié)出的問(wèn)題類型供選擇。如果填寫(xiě)者覺(jué)得閱讀的問(wèn)題并不屬于已經(jīng)提供的任何類型,他也可以選擇“其他”并填寫(xiě)一個(gè)新的類型。由于一個(gè)問(wèn)題有可能關(guān)注多個(gè)點(diǎn),因此問(wèn)題類型是多選的。問(wèn)卷的第三部分是關(guān)于問(wèn)題要素的。填寫(xiě)者可以從問(wèn)卷提供的候選項(xiàng)中選擇任意多個(gè)他們認(rèn)為問(wèn)題中包含的要素或通過(guò)選擇“其他”來(lái)提供其他要素。問(wèn)卷的第四部分是關(guān)于交互行為的,問(wèn)卷也提供了一些候選項(xiàng)。和問(wèn)題類型、問(wèn)題要素一樣,問(wèn)卷也為交互行為提供了“其他”選項(xiàng)。問(wèn)卷的最后部分是一個(gè)可選內(nèi)容。填寫(xiě)者可以在這部分填寫(xiě)任何他認(rèn)為值得注意的內(nèi)容。

      2.4 深入分析

      在收集數(shù)據(jù)之前,本文采用分層采樣的方法選取了樣本。這個(gè)分層采樣遵循以下規(guī)則:

      ? 采樣的全集是樣本集。

      ? 采樣過(guò)程是一個(gè)根據(jù)問(wèn)題評(píng)分的按比例分層采樣。

      ? 每層的抽樣都是隨機(jī)抽樣過(guò)程。

      根據(jù)以上規(guī)則,本文一共抽樣選取了1 001個(gè)問(wèn)題。每個(gè)評(píng)分區(qū)間的問(wèn)題數(shù)量如表2所示。

      表2 各個(gè)評(píng)分區(qū)間的問(wèn)題數(shù)量

      這1 001個(gè)問(wèn)題被分成10組,其中9組100個(gè),1組101個(gè)。這10組問(wèn)題被隨機(jī)分配給10名研究生并要求他們針對(duì)每個(gè)問(wèn)題填寫(xiě)一份在前導(dǎo)研究中設(shè)計(jì)的問(wèn)卷。在他們完成所有問(wèn)題的分析后,第一和第三作者人工檢查了所有“其他”選項(xiàng)和最后一部分可選內(nèi)容。對(duì)其中有異議的部分與問(wèn)卷填寫(xiě)者進(jìn)行了討論,達(dá)成一致意見(jiàn)后計(jì)入統(tǒng)計(jì)數(shù)據(jù)。

      3 研究結(jié)果

      本節(jié)將以定量和定性分析的方式呈現(xiàn)本文的研究結(jié)果,以回答三個(gè)研究問(wèn)題。

      3.1 問(wèn)題類型

      通過(guò)分析數(shù)據(jù),發(fā)現(xiàn)SO上的大部分問(wèn)題都可以和圖2所示的常見(jiàn)困難解決流程中某一個(gè)階段聯(lián)系起來(lái)。為了解決實(shí)現(xiàn)某個(gè)特定功能的問(wèn)題,開(kāi)發(fā)者需要先分析問(wèn)題的可行性分析(Feasibility Analysis),比如是否可以在特定環(huán)境或者通過(guò)特定途徑解決這個(gè)問(wèn)題。一旦確認(rèn)了問(wèn)題的可行性分析,開(kāi)發(fā)者就會(huì)開(kāi)始解決方案規(guī)劃(Solution Planning),這包括解決方法和需要使用的工具以及其他可能遇到技術(shù)問(wèn)題。然后開(kāi)發(fā)者會(huì)開(kāi)始實(shí)現(xiàn)規(guī)劃好的解決方案(Implementation)。實(shí)現(xiàn)完成后,如果發(fā)現(xiàn)了錯(cuò)誤,開(kāi)發(fā)者需要糾正這些錯(cuò)誤(Correction)。另一方面,開(kāi)發(fā)者需要對(duì)實(shí)現(xiàn)結(jié)果進(jìn)行評(píng)估(Evaluation)。如果他覺(jué)得目前的實(shí)現(xiàn)還不完善的話,他還會(huì)對(duì)其進(jìn)行計(jì)劃改進(jìn)(Improvement)并開(kāi)始新一輪的實(shí)現(xiàn)過(guò)程。

      圖2 常見(jiàn)的困難解決流程

      除了跟上述的六個(gè)解決困難的階段相關(guān)的問(wèn)題外,還有一類問(wèn)題是針對(duì)通用知識(shí)而非特定困難的。綜上,SO的大部分問(wèn)題都可以被歸類到以下七種類型中去。

      (1) 可行性分析

      開(kāi)發(fā)者會(huì)在可行性分析階段提出這類問(wèn)題,其目的是詢問(wèn)在特定環(huán)境下或者使用某種特定技術(shù)達(dá)到某種目標(biāo)的可行性。例如,在編號(hào)為17825860的問(wèn)題“How to read properties file from one project into another project?”中,開(kāi)發(fā)者詢問(wèn)是否可以從其他項(xiàng)目中讀取配置文件。

      (2) 解決方案規(guī)劃

      開(kāi)發(fā)者在解決方案規(guī)劃時(shí)提出此類問(wèn)題,其目的是了解應(yīng)用某個(gè)特定技術(shù)的最佳實(shí)踐或者尋求解決手頭問(wèn)題的工具。例如,在編號(hào)為9973066的問(wèn)題“Best Practices: JSON for data exchange for RESTful web services using Apache CXF”中,開(kāi)發(fā)者詢問(wèn)在新的場(chǎng)景中擴(kuò)展POJOs的JSON的最佳使用方法。

      (3) 實(shí)現(xiàn)

      開(kāi)發(fā)者在實(shí)施解決方案中遇到困難時(shí)會(huì)詢問(wèn)此類問(wèn)題。例如,在編號(hào)8908313的問(wèn)題“Writing correct JFrames for all Window Manager”中,開(kāi)發(fā)者詢問(wèn)為了適應(yīng)不同大小的屏幕和不同的分辨率,應(yīng)該如何設(shè)置JFrame窗口的大小。

      (4) 糾錯(cuò)

      開(kāi)發(fā)者在錯(cuò)誤分析或者糾正錯(cuò)誤和異常的時(shí)候會(huì)詢問(wèn)此類問(wèn)題。例如,在編號(hào)1305307的問(wèn)題“The activator for bundle is invalid”中,開(kāi)發(fā)者請(qǐng)求分析在開(kāi)發(fā)Eclipse插件時(shí)遇到非法的bundle activator的原因極其解決方案。

      (5) 評(píng)估

      開(kāi)發(fā)者在評(píng)估解決方案時(shí)為了得到其他人對(duì)于已經(jīng)實(shí)施的方案效用的反饋而詢問(wèn)此類問(wèn)題。例如,在編號(hào)為1584915的問(wèn)題“Java: Expected overhead of the RMI protocol”中,開(kāi)發(fā)者詢問(wèn)兩個(gè)RMI服務(wù)器之間850~1 100毫秒的傳輸時(shí)間是否正常。

      (6) 改進(jìn)

      開(kāi)發(fā)者為了得到對(duì)已有方案的改進(jìn)建議而提出此類問(wèn)題。例如,在編號(hào)為9738210的問(wèn)題“Java: Thread pool with many blocked tasks”中,開(kāi)發(fā)者詢問(wèn)為了減少內(nèi)存開(kāi)銷,對(duì)于他已有的線程池的實(shí)現(xiàn)有什么可能的改進(jìn)方案。

      (7) 通用知識(shí)

      開(kāi)發(fā)者為了了解一些軟件開(kāi)發(fā)時(shí)的通用知識(shí)而提出此類問(wèn)題。例如,在編號(hào)215497的問(wèn)題“In Java, what’s the difference between public, default, protected, and private?”中,開(kāi)發(fā)者詢問(wèn)在創(chuàng)建類和接口以及處理繼承關(guān)系時(shí)該如何使用這些修飾符。

      在深入分析階段,樣本中的大部分問(wèn)題都被歸類到上述一個(gè)或多個(gè)類型中。但是,還有30個(gè)問(wèn)題被標(biāo)記為“其他”。在人工查閱這些問(wèn)題后,發(fā)現(xiàn)每一個(gè)問(wèn)題都是可以被歸類到上述的7個(gè)類型中去的。例如,編號(hào)為2655239的問(wèn)題“Does C# have the same issues like Java with equals and getHashCode()?”一開(kāi)始被歸類為“其他”,經(jīng)過(guò)討論,本文認(rèn)為這是一個(gè)關(guān)于C#的通用知識(shí)的問(wèn)題,因此將其重新歸類為通用知識(shí)。

      圖3展示了在樣本中所有問(wèn)題的類型分布,同一個(gè)問(wèn)題可能由于有多個(gè)關(guān)注點(diǎn)而屬于多個(gè)類型。例如,開(kāi)發(fā)者可以在對(duì)某個(gè)實(shí)現(xiàn)的表現(xiàn)征求反饋的同時(shí)詢問(wèn)可能的提升方法。從分布中可以看出,實(shí)現(xiàn)類的問(wèn)題是最多的,占到了樣本的42.5%;其次是糾錯(cuò)類,占30.2%。其他幾類問(wèn)題的占比分別是可行性分析14.9%,解決方案規(guī)劃6.4%,評(píng)估3.3%,改進(jìn)5.1%以及通用知識(shí)6.6%。

      圖3 問(wèn)題類型分布

      3.2 問(wèn)題要素

      問(wèn)題要素是問(wèn)題的基本成分,他們是提問(wèn)者為了表達(dá)和澄清他的問(wèn)題而提供的內(nèi)容。問(wèn)題要素是回答者理解問(wèn)題所必要的信息。

      在前導(dǎo)研究和深入分析中一共辨識(shí)出了8種要素。這些要素之間的關(guān)系如圖4所示。

      (1) 當(dāng)前方案(Current Solution)

      這是對(duì)于當(dāng)前面對(duì)的問(wèn)題的已實(shí)現(xiàn)的方案。提問(wèn)者可以介紹其設(shè)想、設(shè)計(jì)、算法或者在解決方案中使用的方法。

      圖4 問(wèn)題要素及其關(guān)系

      (2) 場(chǎng)景(Scenario)

      這是問(wèn)題產(chǎn)生的場(chǎng)景。它可以是由當(dāng)前方案招致的真實(shí)場(chǎng)景,也可以是在可行性分析或解決方案規(guī)劃時(shí)所設(shè)想的場(chǎng)景。

      (3) 錯(cuò)誤(Error)

      這是在場(chǎng)景中報(bào)告出的錯(cuò)誤或者異常。

      (4) 輸出(Output)

      這是在場(chǎng)景產(chǎn)生的輸出內(nèi)容。

      (5) 環(huán)境(Environment)

      這是場(chǎng)景發(fā)生的環(huán)境,比如操作系統(tǒng)、網(wǎng)絡(luò)條件等。

      (6) 期望(Expectation)

      這是提問(wèn)者所期望的效果或者條件。例如,提問(wèn)者可以表達(dá)他對(duì)于解決方案的響應(yīng)時(shí)間或者承載能力的期望,也可是在解決方案中使用的技術(shù)的局限。

      (7) 可能方案(Possible Solution)

      這是提問(wèn)者提議的解決方案,目的是啟發(fā)回答者。例如,提問(wèn)者可以提議一個(gè)可能方案以期其可行性或效率。

      (8) 代碼(Code)

      這是表明在當(dāng)前方案或可能方案而給出的代碼片段。例如,提問(wèn)者可以提供他當(dāng)前實(shí)現(xiàn)中的代碼片段以幫助回答者分析他的錯(cuò)誤信息。

      在SO中,這些要素可以用不同的方式去描述。例如,除了文本描述、期望、當(dāng)前方案、場(chǎng)景和可能方案還可以用具體例子去描述;而錯(cuò)誤、輸出和環(huán)境則可以使用引用外部技術(shù)文檔的形式去描述。除此之外,提問(wèn)者還可能在沒(méi)有顯式提供問(wèn)題要素的情況下提出問(wèn)題。例如,提問(wèn)者可以在沒(méi)提及相關(guān)場(chǎng)景的情況下描述一個(gè)錯(cuò)誤。在這種情況下,可以認(rèn)為場(chǎng)景已經(jīng)隱含在問(wèn)題之中了。

      不同類型的問(wèn)題要素分布如圖5所示。圖5(b)展示了樣本中含有不同要素的問(wèn)題比例。從中可以看出,大部分問(wèn)題都有場(chǎng)景描述(77.8%)和代碼(61.3%)。但不同類型問(wèn)題的要素分布卻不盡相同,如圖5(c)至圖5(i)所示。從圖5(i)中可以看出,通用知識(shí)類問(wèn)題中含有場(chǎng)景要素的問(wèn)題比例是最低的(54.5%)。這是因?yàn)橥ㄓ弥R(shí)類的問(wèn)題通常是在學(xué)習(xí)而不是工作過(guò)程中產(chǎn)生的,而學(xué)習(xí)過(guò)程常常會(huì)缺乏具體的場(chǎng)景。

      含有代碼要素的問(wèn)題比例在不同的類型中差別很大:代碼要素在可行性分析類和解決方案規(guī)劃類的問(wèn)題中比例遠(yuǎn)遠(yuǎn)低于其在總體中的比例,分別是34.9%和37.5%;實(shí)現(xiàn)類、評(píng)估類和通用知識(shí)類的問(wèn)題比例則和總體相當(dāng),分別是54.4%、66.7%和56.1%;而剩下的糾錯(cuò)和改進(jìn)類的問(wèn)題則普遍含有代碼要素,其比例分別是86.1%和70.6%。這種現(xiàn)象是由于可行性分析類和解決方案規(guī)劃類的問(wèn)題通常是在實(shí)現(xiàn)之前發(fā)生的,這個(gè)階段幾乎沒(méi)有代碼可以展示。但是圖2所示流程僅僅是個(gè)通用過(guò)程,事實(shí)上很多項(xiàng)目中不同的階段是同步進(jìn)行的。例如編號(hào)為17237287的問(wèn)題“how can I wait 10 second without locking UI in Android”中,作者已經(jīng)編寫(xiě)了一些代碼,但是對(duì)于代碼中的關(guān)鍵功能——在不鎖定UI的情況下等待10秒——是否可以實(shí)現(xiàn)感到疑惑。因此即使是可行性分析類和解決方案規(guī)劃類的問(wèn)題也擁有一定比例的代碼要素。

      解決方案規(guī)劃類和改進(jìn)類的問(wèn)題擁有更高的當(dāng)前方案要素比例,分別是23.4%和39.2%。而這個(gè)要素在總體中的比例僅為5.7%。這個(gè)現(xiàn)象對(duì)于改進(jìn)類問(wèn)題是很直觀的,改進(jìn)類問(wèn)題就是在當(dāng)前方案的基礎(chǔ)上尋求改進(jìn)方案。而對(duì)于解決方案規(guī)劃類的問(wèn)題,一般來(lái)說(shuō)提問(wèn)者已經(jīng)有一個(gè)設(shè)想的方案了,他所疑惑的只是整體方案中的某些點(diǎn)。因此,他們會(huì)給出他們的當(dāng)前解決方案以得到更合適的答案。

      圖5 不同類型問(wèn)題中的要素分布

      含有錯(cuò)誤要素的問(wèn)題比例在糾錯(cuò)類問(wèn)題中特別高,達(dá)到了54.6%(總體中僅為19.1%)。這個(gè)現(xiàn)象很好解釋,糾錯(cuò)類問(wèn)題需要提問(wèn)者說(shuō)清楚他所遇到的錯(cuò)誤,而直接提供錯(cuò)誤內(nèi)容是最容易、最直接的方式。

      3.3 交互行為

      當(dāng)用戶想要回答某個(gè)問(wèn)題的時(shí)候,常常會(huì)出現(xiàn)不能理解問(wèn)題的情況。這時(shí)候,他們會(huì)采取一些行動(dòng)試圖獲得足夠的信息以回答問(wèn)題。最常見(jiàn)的和提問(wèn)者的交互方式就是在問(wèn)題下面編寫(xiě)評(píng)論。而提問(wèn)者則通常會(huì)通過(guò)修改問(wèn)題本身或者回復(fù)更多的評(píng)論來(lái)回應(yīng)。和問(wèn)題一樣,如果答案中有什么不清楚的地方,類似的行為也會(huì)在答案的評(píng)論中發(fā)生。

      對(duì)于編程相關(guān)的問(wèn)題,本文發(fā)現(xiàn)了一些特定的交互行為:

      (1) 澄清意圖

      一個(gè)問(wèn)題的意圖不總是清晰明確的,此時(shí)回答者會(huì)請(qǐng)求提問(wèn)者對(duì)問(wèn)題的意圖進(jìn)行詳細(xì)解釋。除此以外,回答者也有可能給出兩個(gè)猜想詢問(wèn)是否是其中之一。例如,在編號(hào)為263348的問(wèn)題“Best Practice - Swing, Database Access”中,有人評(píng)論道“Are you asking … ? Or are you asking…?”。

      (2) 尋求要素

      對(duì)于回答者來(lái)說(shuō),如果問(wèn)題缺少了某些必要的成分將很難給出準(zhǔn)確的答案,因此他可能會(huì)直接請(qǐng)求給出某種問(wèn)題要素。

      (3) 澄清要素

      在某些問(wèn)題中,問(wèn)題要素存在但是描述得不夠清楚,從而造成回答者對(duì)于這些要素感到困惑。此時(shí)回答者會(huì)要求提問(wèn)者澄清這些要素。提問(wèn)者可以通過(guò)在代碼中添加注釋或者貼出異常定義等方式來(lái)進(jìn)行澄清。

      (4) 澄清術(shù)語(yǔ)

      有些問(wèn)題中提問(wèn)者使用的術(shù)語(yǔ)可能具有歧義,此時(shí)回答者會(huì)請(qǐng)求提問(wèn)者給出術(shù)語(yǔ)的準(zhǔn)確定義。

      (5) 提供參考

      回答者有時(shí)會(huì)提供一些參考資料給提問(wèn)者使其能更好地理解問(wèn)題。例如,在編號(hào)為10228682的問(wèn)題“how to change the location of a value in a list in a hashmap in Java”中,有用戶評(píng)論道“Maybe I didn’t get your question …, From the API document…”。在API文檔的幫助下,提問(wèn)者知道了他所面臨的問(wèn)題的基礎(chǔ)知識(shí)從而能提供更多有用的信息。

      (6) 改善表述

      問(wèn)題的表述方式對(duì)于某些要素(尤其是代碼)是很重要的。但是冗長(zhǎng)的文字描述和復(fù)雜的代碼會(huì)使得其他用戶很難抓住其中的關(guān)鍵信息。因此其他用戶會(huì)建議提問(wèn)者以更好的方式表達(dá)他的問(wèn)題,比如高亮關(guān)鍵語(yǔ)句或者省略不必要的代碼段。

      (7) 嘗試

      回答者會(huì)建議提問(wèn)者進(jìn)行一些嘗試后再給出反饋,從而使其能夠更好地理解問(wèn)題。

      (8) 解釋

      回答者有時(shí)會(huì)向提問(wèn)者解釋一些知識(shí)。此類行為常常在回答問(wèn)題的時(shí)候發(fā)生,以幫助提問(wèn)者理解答案。有時(shí)候在問(wèn)題中也能觀察到這種行為,此時(shí)其目的和提供參考類似。

      (9) 分步建議

      回答者給出分步建議并在每一步后得到反饋以幫助提問(wèn)者解決問(wèn)題。

      (10) 質(zhì)疑問(wèn)題

      在一些少見(jiàn)的情況下,其他用戶會(huì)認(rèn)為問(wèn)題本身是沒(méi)有意義的。此時(shí)他們會(huì)和提問(wèn)者在評(píng)論中對(duì)問(wèn)題進(jìn)行討論。例如,在編號(hào)為10799170的問(wèn)題(Making an SSL http for localhost)中,雖然問(wèn)題是想知道如何實(shí)現(xiàn)安全協(xié)議,但評(píng)論中有一條寫(xiě)著“… If its localhost web app, why does it need to be secure http?”來(lái)質(zhì)疑問(wèn)題本身是否有意義。

      圖6展示了含有這些交互行為的問(wèn)題比例以及在各個(gè)類型的問(wèn)題中各自的比例。從圖6(b)中可以看出,解釋是回答者最常采取的行為,在總體中占到34.5%。這個(gè)現(xiàn)象表明答案常常是不夠清楚的,專家需要對(duì)答案進(jìn)行額外的解釋以幫助提問(wèn)者理解答案并解決問(wèn)題。除了解釋以外,澄清意圖、尋求要素、提供參考和嘗試也是很常見(jiàn)的行為,其在總體中的比例分別是18.1%,21.9%,24.7%以及21.2%。前三類行為是用來(lái)完善問(wèn)題的。數(shù)據(jù)表明,超過(guò)五分之一的問(wèn)題被要求補(bǔ)充要素。澄清意圖和提供參考則是為了搞清問(wèn)題的意圖,其中前者是直接詢問(wèn)這個(gè)意圖,而后者則是用參考來(lái)啟發(fā)提問(wèn)者。在答案能夠直接通過(guò)參考資料給出的時(shí)候,提供參考也是一種在評(píng)論中直接回答問(wèn)題的方式,這也是為什么含有提供參考的問(wèn)題比例在通用知識(shí)類問(wèn)題中相對(duì)較高了,達(dá)到了28.8%。

      嘗試這種行為也是被用來(lái)獲取關(guān)于問(wèn)題更多信息的。有時(shí)候提問(wèn)者很難完整地描述他所遇到的問(wèn)題,甚至不知道如何提供更多的信息。此時(shí),專家需要指導(dǎo)提問(wèn)者進(jìn)行一些嘗試并貼出結(jié)果作為參考。然而通過(guò)評(píng)論施行此類行為非常低效。雖然從數(shù)據(jù)來(lái)看這類行為是比較重要的,但是目前SO并沒(méi)有一個(gè)很方便的功能來(lái)輔助這類行為。盡管嘗試這類行為被廣泛使用,在通用知識(shí)類的問(wèn)題中卻并不常見(jiàn),其比例僅為7.6%。這是因?yàn)橥ㄓ弥R(shí)類的問(wèn)題一般來(lái)說(shuō)缺乏實(shí)踐,比如一個(gè)詢問(wèn)Java變量訪問(wèn)策略的問(wèn)題不需要進(jìn)行嘗試。

      澄清術(shù)語(yǔ)和表達(dá)建議是被使用的最少的行為,其在總體中的比例為1.9%和3.6%。澄清術(shù)語(yǔ)是為了解釋一個(gè)術(shù)語(yǔ),但是在大多數(shù)情況下,問(wèn)題中的術(shù)語(yǔ)是足夠清楚的。即使術(shù)語(yǔ)本身有二義性,結(jié)合問(wèn)題的上下文,也能推斷出這個(gè)術(shù)語(yǔ)在問(wèn)題中的含義。表達(dá)建議是為了修飾問(wèn)題的表述方式,包括語(yǔ)言、排版等,常見(jiàn)的例子是要求提問(wèn)者修改代碼以突出其中的關(guān)鍵部分。此類行為能幫助專家更快找到問(wèn)題中的有效信息,但是即使問(wèn)題的表述不夠好,專家還是能夠根據(jù)已有的問(wèn)題給出合適的答案。因此,并不是所有表述不好問(wèn)題中都有表達(dá)建議類的行為發(fā)生。

      圖6 不同類型問(wèn)題中的交互行為分布

      除了行為分布,本文還分析了交互行為對(duì)于評(píng)分的影響情況。由于交互行為是由回答者引導(dǎo)以回答問(wèn)題的,本文僅分析了其對(duì)答案評(píng)分的影響。表3展示了每一類問(wèn)題中擁有不同交互行為的問(wèn)題的最佳答案(標(biāo)記為已接受的答案,如果沒(méi)有則為最高評(píng)分的答案)平均分的標(biāo)準(zhǔn)差。標(biāo)準(zhǔn)差越大意味著不同交互行為對(duì)答案產(chǎn)生的影響越大。從表中可以看出,評(píng)估和通用問(wèn)題的最佳答案得分標(biāo)準(zhǔn)差較大,也就是說(shuō)不同的交互行為對(duì)于這兩類問(wèn)題的影響較大,因此本文對(duì)這兩類問(wèn)題進(jìn)行了重點(diǎn)分析。

      表3 每類問(wèn)題中含有不同交互行為的最佳答案平均得分的標(biāo)準(zhǔn)差

      圖7展示了評(píng)估和通用知識(shí)類問(wèn)題中含有各類交互行為的問(wèn)題的最佳答案的平均得分與這兩類問(wèn)題的最佳答案的平均得分的差值。從圖中可以看出,在評(píng)估類問(wèn)題中,擁有交互行為的問(wèn)題普遍有更高評(píng)分的最佳答案。而在所有交互行為中,澄清意圖和尋求要素這兩個(gè)意圖能大大提高答案的得分。這表明對(duì)于評(píng)估類問(wèn)題,意圖和要素可能是最重要的元素。

      不同于評(píng)估類問(wèn)題,尋求要素這種行為對(duì)于通用知識(shí)類問(wèn)題的貢獻(xiàn)就非常小了。而擁有澄清意圖行為的問(wèn)題甚至擁有更低的平均得分。在通用知識(shí)類問(wèn)題中,最突出的行為是質(zhì)疑問(wèn)題。這可能是由于通用知識(shí)類的問(wèn)題常常沒(méi)有標(biāo)準(zhǔn)答案而只是個(gè)人喜好的不同而已。例如,對(duì)于詢問(wèn)為什么Vim比Emacs好的問(wèn)題,就可能被Emacs的擁護(hù)者質(zhì)疑其意義。但是,這類問(wèn)題的答案可以詳細(xì)比較各自的好壞以及給出選擇的依據(jù),從而得到雙方支持者的贊同而得到更高的得分。

      圖7 評(píng)估類和通用知識(shí)類問(wèn)題含有各類交互行為的問(wèn)題最佳答案平均分偏差

      4 討 論

      本文探究了軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站上問(wèn)題的三個(gè)方面:類型、要素和交互行為,從1 001個(gè)問(wèn)題中收集數(shù)據(jù)并發(fā)現(xiàn)了不同類型的問(wèn)題,分析了問(wèn)題類型和其要素以及交互行為的關(guān)系。根據(jù)分析結(jié)果,可以給此類網(wǎng)站的使用者提出一些使用指導(dǎo),給其開(kāi)發(fā)者一些建議,還可以給試圖開(kāi)發(fā)自動(dòng)化問(wèn)答工具的研究者一些啟發(fā)。

      4.1 對(duì)提問(wèn)者和回答者的指導(dǎo)

      本文的研究顯示不同類型的問(wèn)題傾向于不同的要素。提問(wèn)者首先應(yīng)該明確自己詢問(wèn)的是哪類問(wèn)題,從而有傾向性地提供重要的要素。場(chǎng)景作為對(duì)提問(wèn)者面對(duì)的情況的描述,對(duì)幾乎所有類型的問(wèn)題都很重要,即使是通用知識(shí)類的問(wèn)題也有很高的比例含有場(chǎng)景描述。提問(wèn)者應(yīng)該描述清楚他們問(wèn)題的場(chǎng)景。場(chǎng)景以外的其他要素的重要性則取決于問(wèn)題的類型??尚行苑治鲱惖膯?wèn)題需要描述期望;解決方案規(guī)劃類的問(wèn)題需要描述可能方案;實(shí)現(xiàn)類的問(wèn)題中可能方案也比較重要;糾錯(cuò)類問(wèn)題則需要描述清楚錯(cuò)誤內(nèi)容;而改進(jìn)類問(wèn)題則對(duì)當(dāng)前方案要求比較高;實(shí)現(xiàn)類、糾錯(cuò)類、評(píng)估類和改進(jìn)類同時(shí)都要求給出代碼。

      對(duì)于回答者而言,本文的研究結(jié)果也能給予他們一定的指導(dǎo)。解釋是最常見(jiàn)的交互行為,這也意味著問(wèn)答網(wǎng)站上的回答常常會(huì)缺失詳細(xì)的信息。因此回答者在回答問(wèn)題的時(shí)候,應(yīng)該提供更具體內(nèi)容,而不是在評(píng)論中再對(duì)答案進(jìn)行解釋。澄清意圖和尋求要素這兩種行為是回答者在回答問(wèn)題之前直接向提問(wèn)者索求需要的信息,這兩種行為也很常見(jiàn)。也就是說(shuō),對(duì)于想要在SO上回答問(wèn)題的新人來(lái)說(shuō),當(dāng)對(duì)問(wèn)題有任何疑惑時(shí),應(yīng)該直接詢問(wèn)而不是猜測(cè)問(wèn)題的意思。而提供參考和嘗試是兩個(gè)偏向?qū)嵺`的幫助回答者理解問(wèn)題的方法,在對(duì)問(wèn)題有疑惑時(shí),即使采取這兩種方法可能并不能及時(shí)得到反饋,也應(yīng)該將他們納入可選的行動(dòng)之中。

      4.2 對(duì)軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站開(kāi)發(fā)者的建議

      數(shù)據(jù)表明,接近80%的問(wèn)題擁有場(chǎng)景這個(gè)要素,并且得分越高的問(wèn)題中含有場(chǎng)景要素的比例越高。這說(shuō)明場(chǎng)景對(duì)于澄清問(wèn)題有著非常重要的作用。然而,在許多問(wèn)題中,場(chǎng)景和其他諸如環(huán)境、現(xiàn)有方案等混雜在一起。為了更清楚地呈現(xiàn)問(wèn)題,可以設(shè)計(jì)一個(gè)特殊的UI元素以強(qiáng)調(diào)問(wèn)題的場(chǎng)景(例如使用深色背景)。此外含有場(chǎng)景的問(wèn)題擁有更高的平均得分,在用戶輸入問(wèn)題時(shí)也可以提供相應(yīng)的UI鼓勵(lì)用戶明確問(wèn)題的場(chǎng)景。例如在提問(wèn)頁(yè)面上提供專門的輸入框讓用戶闡述問(wèn)題場(chǎng)景。

      另一方面,提問(wèn)者和回答者的交互方式也是可以改進(jìn)的。在現(xiàn)有的機(jī)制中,評(píng)論幾乎是雙方交流的唯一選擇。這種方式對(duì)于問(wèn)詢類的行為(例如澄清意圖和尋求要素)來(lái)說(shuō)是很方便的,對(duì)于提供諸如參考材料的網(wǎng)址或者簡(jiǎn)單的解釋來(lái)說(shuō)也有一定的效果。然而,對(duì)于嘗試、分步建議這兩種同樣很重要的交互方式來(lái)說(shuō),通過(guò)評(píng)論進(jìn)行頻繁的交流就顯得沒(méi)那么高效了。問(wèn)答網(wǎng)站可以提供即時(shí)聊天系統(tǒng)供用戶使用。更進(jìn)一步,如果支持更豐富的內(nèi)容交互方式(例如遠(yuǎn)程桌面控制)就能幫助用戶更有效地進(jìn)行交流了。

      4.3 對(duì)開(kāi)發(fā)自動(dòng)化問(wèn)答工具的啟發(fā)

      自動(dòng)化問(wèn)答工具其實(shí)和問(wèn)答網(wǎng)站上的問(wèn)答不盡相同。理想情況下,當(dāng)程序員使用問(wèn)答工具時(shí),他應(yīng)該只需要輸入一個(gè)問(wèn)句而不是對(duì)問(wèn)題的詳細(xì)描述就能得到答案。而回答問(wèn)題所需要的必要信息則應(yīng)該有工具自動(dòng)收集。

      本文發(fā)現(xiàn)問(wèn)題類型是問(wèn)題的一個(gè)非常重要的元素。問(wèn)題的類型和問(wèn)題要素、交互行為都有著比較高的相關(guān)度。因此,問(wèn)答工具需要能夠識(shí)別出用戶的問(wèn)題類型。為了實(shí)現(xiàn)這個(gè)目的,NLP(自然語(yǔ)言處理)技術(shù)是可以考慮的方向。例如利用自然語(yǔ)言的語(yǔ)法模式來(lái)識(shí)別問(wèn)題類型。研究者可以通過(guò)人工定義或者機(jī)器學(xué)習(xí)的方式得到不同類型問(wèn)題的語(yǔ)法模式。當(dāng)用戶提出一個(gè)問(wèn)題時(shí),工具就可以將問(wèn)題和某個(gè)模式進(jìn)行匹配從而得到問(wèn)題的類型。

      知道問(wèn)題的類型后,就需要去收集回答問(wèn)題所需的必要信息,也就是問(wèn)題要素。下面列舉了一個(gè)問(wèn)答工具可以收集問(wèn)題要素的三個(gè)途徑。首先就是用戶提出的問(wèn)題本身,自然語(yǔ)言處理可以在這里被進(jìn)一步使用。然而,一個(gè)簡(jiǎn)單的問(wèn)句所包含的信息量是遠(yuǎn)遠(yuǎn)不夠的,因此工具需要通過(guò)其他兩個(gè)途徑獲取更多的信息。第二個(gè)途徑是自動(dòng)化的抓取信息。工具可以利用IDE插件等技術(shù)監(jiān)控用戶在編程中所采取的行動(dòng)以及行動(dòng)的結(jié)果,從而獲得場(chǎng)景、環(huán)境、代碼、錯(cuò)誤信息等要素。第三個(gè)途徑則是交互式地向用戶詢問(wèn)。工具可以根據(jù)上下文要求用戶手動(dòng)提供更多的信息。在交互式詢問(wèn)的過(guò)程中,工具除了簡(jiǎn)單地向用戶索求信息外,工具還可以采取更多的行為。跟人類回答者類似,工具也可以向用戶提供一些參考材料以啟發(fā)用戶提供信息。而跟問(wèn)答網(wǎng)站不一樣的是,自動(dòng)化工具可以以更為豐富和便利的形式向用戶提供這些參考材料。此外,工具還可以建議用戶進(jìn)行一些嘗試并自動(dòng)采集嘗試過(guò)程中的數(shù)據(jù),從而大大提高收集數(shù)據(jù)的效率。

      4.4 威脅因素

      本文的研究設(shè)計(jì)有一定的局限,會(huì)威脅到本文的結(jié)果。

      第一是本文采用的數(shù)據(jù)集是StackExchange官方發(fā)布的,這個(gè)數(shù)據(jù)集中并沒(méi)有包含SO上的所有信息。一些敏感信息會(huì)在數(shù)據(jù)集發(fā)布前被過(guò)濾。不過(guò),大部分被過(guò)濾的信息都是一些個(gè)人隱私數(shù)據(jù)(比如昵稱等),這些數(shù)據(jù)對(duì)本文的研究影響甚微。

      二是收集怎樣的數(shù)據(jù)是由本文的第一、第三兩位作者通過(guò)先導(dǎo)研究總結(jié)的,這受限于兩位作者的所學(xué)。然而,為了讓數(shù)據(jù)盡量全面,本文進(jìn)行了多而完善的討論。任何對(duì)于一個(gè)問(wèn)題的不確定或者不一致的看法,都會(huì)邀請(qǐng)其他資深研究人員或者SO使用者共同討論。同時(shí),在用以收集數(shù)據(jù)的問(wèn)卷設(shè)計(jì)完后,還邀請(qǐng)了一位博士和一位SO使用者試用并幫助改進(jìn)問(wèn)卷。通過(guò)這些機(jī)制,本文收集到了較為全面和公允的數(shù)據(jù)。

      第三是在深入分析過(guò)程中,本文使用的是問(wèn)卷形式人工收集數(shù)據(jù)。為了最小化因個(gè)人知識(shí)的局限而導(dǎo)致的偏差,本文采取了一些額外的措施。在收集數(shù)據(jù)之前,進(jìn)行了2小時(shí)的培訓(xùn),對(duì)問(wèn)卷中的每個(gè)選項(xiàng)都進(jìn)行了詳細(xì)的解釋。除此之外,本文的第一、第三作者以及參與先導(dǎo)試驗(yàn)的兩位研究者組成了一個(gè)顧問(wèn)小組。當(dāng)參與收集數(shù)據(jù)的人員對(duì)某個(gè)問(wèn)題有任何疑慮時(shí),至少可以找到一位顧問(wèn)幫助他分析問(wèn)題。在極少數(shù)情況下,如果顧問(wèn)本人對(duì)問(wèn)題不確定的話,整個(gè)顧問(wèn)小組就一起討論分析問(wèn)題。

      5 相關(guān)工作

      互聯(lián)網(wǎng)在軟件開(kāi)發(fā)中起到了越來(lái)越大的作用,在線問(wèn)答網(wǎng)站也被程序員越來(lái)越多得使用,StackOverflow則是此類網(wǎng)站中最具代表性的一個(gè)。因此,針對(duì)SO的研究已有很多。Christoph Treude等[2]分析了StackOverflow的數(shù)據(jù)并對(duì)用戶提出的問(wèn)題進(jìn)行了分類并探索哪些問(wèn)題被回答得很好,哪些問(wèn)題又沒(méi)有被回答。Seyed Mehdi Nasehi等[3]試圖找出SO上好的代碼樣例有什么特點(diǎn)。他們的結(jié)論是與樣例代碼一起給出的解釋和代碼本身同等重要。Amiangshu Bosu等[4]研究了SO上的表彰評(píng)分系統(tǒng)并對(duì)想在SO上獲得更高評(píng)價(jià)和評(píng)分的新用戶給出了一些建議。Blerina Bazelli等[5]則使用Linguistic Inquiry和Word Count(LIWC)分析SO上開(kāi)發(fā)者的個(gè)人特質(zhì)。他們發(fā)現(xiàn)獲得最高評(píng)價(jià)的作者(使用者)相比低評(píng)價(jià)的使用者更為外向。此外,擁有高評(píng)分問(wèn)題或答案的作者更少地表達(dá)他們的負(fù)面情緒。Benjamin V. Hanrahan等[1]專注于構(gòu)建困難問(wèn)題和專家的指示器以及探究復(fù)雜問(wèn)題是如何被多名專家處理和分發(fā)的。Dennis Schenk等[6]評(píng)估了SO上的知識(shí)經(jīng)濟(jì)系統(tǒng)的狀態(tài)。Shaowei Wang等[7]展示了問(wèn)題、開(kāi)發(fā)者及其行為的分布以及通過(guò)LDA生成的開(kāi)發(fā)者所屬話題的分布情況。Xin Xia等[8]提出了名為TagCombine的自動(dòng)標(biāo)簽推薦方法以分析軟件信息相關(guān)頁(yè)面的對(duì)象。他們使用SO評(píng)估了這個(gè)方法并得到了更好的標(biāo)簽推薦結(jié)果。Anton Barua等[9]使用LDA分析了SO上的文本內(nèi)容并得到了SO的一些話題和確實(shí)。

      除了StackOverflow以外,另一些網(wǎng)站也被用來(lái)分析用戶的行為。MathOverflow是一個(gè)類似于StackOverflow的網(wǎng)站,只是其目標(biāo)用戶是數(shù)學(xué)家或者數(shù)學(xué)研究者。Yla R. Tausczik等[10]在流程的層次理解了MathOverflow上的協(xié)作活動(dòng)并量化不同協(xié)作活動(dòng)對(duì)于解決方案質(zhì)量的影響。Yahoo!Answers是另一個(gè)被用于研究的問(wèn)答網(wǎng)站。Gyongyi Z等[11]分析了Yahoo!Answer的10個(gè)月的數(shù)據(jù)。他們研究了問(wèn)答系統(tǒng)中的活動(dòng)層次、角色、關(guān)注點(diǎn)、連接性和名聲系統(tǒng)并討論了此類服務(wù)的不同方面和可能的發(fā)展。Lada A. Adamic等[12]也對(duì)Yahoo!Answers進(jìn)行了研究。他們分析了論壇分類并根據(jù)內(nèi)容特點(diǎn)和用戶間的交互模式進(jìn)行了聚類。

      跟上述的所有研究不同的是,本文的研究關(guān)注于人類回答者能從軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站上會(huì)采取那些行為來(lái)回答問(wèn)題。由于人類可以獲得的信息很難使用自動(dòng)化的手段去抽取,而這些信息對(duì)于理解用戶的行為又至關(guān)重要。因此,本文通過(guò)人工閱讀的方式分析了SO上的1 001個(gè)問(wèn)題。最后,本文還為SO的用戶、開(kāi)發(fā)者以及問(wèn)答系統(tǒng)的研究者提供了一些指導(dǎo)和建議。

      6 結(jié) 語(yǔ)

      互聯(lián)網(wǎng)的發(fā)展使得開(kāi)發(fā)者越來(lái)越多地求助于軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站解決自己遇到的問(wèn)題,而StackOverflow是在程序員參與社會(huì)化學(xué)習(xí)中使用的最為廣泛的問(wèn)答網(wǎng)站[13]。SO上張貼的巨量的問(wèn)題和答案提供了研究編程領(lǐng)域提問(wèn)者-回答者交互行為研究的很好資源。本文對(duì)SO上的問(wèn)題進(jìn)行了閱讀并從中收集數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行了細(xì)致分析,一共發(fā)現(xiàn)了7個(gè)不同的問(wèn)題類型。不同的問(wèn)題類型又對(duì)不同的問(wèn)題要素有所偏好。此外,回答者會(huì)采取不同的交互行為去更好地理解問(wèn)題并給出答案。根據(jù)分析結(jié)果,本文針對(duì)軟件開(kāi)發(fā)在線問(wèn)答網(wǎng)站的使用者、開(kāi)發(fā)者以及問(wèn)答系統(tǒng)的研究者分別給出了指導(dǎo)和建議。

      將來(lái),我們會(huì)根據(jù)本文的分析結(jié)果構(gòu)建一個(gè)自動(dòng)化的問(wèn)答工具。這類工具將會(huì)在開(kāi)發(fā)者遇到困難時(shí)幫助其解決以提高開(kāi)發(fā)效率。

      [1] Hanrahan B V, Convertino G, Nelson L. Modeling problem difficulty and expertise in stackoverflow[C]//Proceedings of the ACM 2012 conference on Computer Supported Cooperative Work Companion. ACM, 2012: 91-94.

      [2] Treude C, Barzilay O, Storey M A. How do programmers ask and answer questions on the web?: Nier track[C]//Software Engineering (ICSE), 2011 33rd International Conference on. IEEE, 2011: 804-807.

      [3] Nasehi S M, Sillito J, Maurer F, et al. What makes a good code example?: A study of programming Q&A in StackOverflow[C]//Software Maintenance (ICSM), 2012 28th IEEE International Conference on. IEEE, 2012: 25-34.

      [4] Bosu A, Corley C S, Heaton D, et al. Building reputation in stackoverflow: an empirical investigation[C]//Proceedings of the 10th Working Conference on Mining Software Repositories. IEEE Press, 2013: 89-92.

      [5] Bazelli B, Hindle A, Stroulia E. On the personality traits of stackoverflow users[C]//2013 IEEE International Conference on Software Maintenance. IEEE, 2013: 460-463.

      [6] Schenk D, Lungu M. Geo-locating the knowledge transfer in StackOverflow[C]//Proceedings of the 2013 International Workshop on Social Software Engineering. ACM, 2013: 21-24.

      [7] Wang S, Lo D, Jiang L. An empirical study on developer interactions in StackOverflow[C]//Proceedings of the 28th Annual ACM Symposium on Applied Computing. ACM, 2013: 1019-1024.

      [8] Xia X, Lo D, Wang X, et al. Tag recommendation in software information sites[C]//Proceedings of the 10th Working Conference on Mining Software Repositories. IEEE Press, 2013: 287-296.

      [9] Barua A, Thomas S W, Hassan A E. What are developers talking about? an analysis of topics and trends in stack overflow[J]. Empirical Software Engineering, 2014, 19(3): 619-654.

      [10] Tausczik Y R, Kittur A, Kraut R E. Collaborative problem solving: A study of mathoverflow[C]//Proceedings of the 17th ACM conference on Computer supported cooperative work & social computing. ACM, 2014: 355-367.

      [11] Gyongyi Z, Koutrika G, Pedersen J, et al. Questioning yahoo! answers[R]. Stanford InfoLab ,2007.

      [12] Adamic L A, Zhang J, Bakshy E, et al. Knowledge sharing and yahoo answers: everyone knows something[C]//Proceedings of the 17th international conference on World Wide Web. ACM, 2008: 665-674.

      [13] Vassileva J. Toward social learning environments[J]. Learning Technologies, IEEE Transactions on, 2008, 1(4): 199-214.

      RESEARCH ON INTERACTION PROCESS OF QUESTION AND ANSWER IN SOCIAL SOFTWARE DEVELOPMENT

      Wang Hai Peng Xin Yu Han Zhao Wenyun

      (SchoolofSoftware,FudanUniversity,Shanghai201203,China) (ShanghaiKeyLaboratoryofDataScience,FudanUniversity,Shanghai201203,China)

      Online Q & A Web site software development, solve the problem of the process is not a simple question and answer, and often contains a complex interactive process. A deep understanding of the Q & A features of the Q & A Web site and its interactive processes are of great importance in improving the quality of questions and answers, improving interaction efficiency, and developing related automation aids. From the purpose and intent of the problem in StackOverflow, the basic elements, and the interaction to carry out research, sampling and analysis of 1 001 problems, summed up the problem of 7 types, 8 elements and 10 types of interaction. According to the research results, the corresponding suggestions are put forward to users, developers and researchers of the Q & A website.

      Software development Question and answer StackOverflow Social learning Interaction

      2016-05-13。國(guó)家自然科學(xué)基金項(xiàng)目(61370079)。王海,碩士生,主研領(lǐng)域:軟件維護(hù)。彭鑫,教授。于涵,碩士生。趙文耘,教授。

      TP311

      A

      10.3969/j.issn.1000-386x.2017.05.001

      猜你喜歡
      回答者提問(wèn)者開(kāi)發(fā)者
      接夢(mèng)話
      分答與知識(shí)共享
      快問(wèn)快答
      16%游戲開(kāi)發(fā)者看好VR
      CHIP新電腦(2016年3期)2016-03-10 13:06:42
      iOS開(kāi)發(fā)者調(diào)查
      電腦迷(2015年8期)2015-05-30 12:27:10
      iOS開(kāi)發(fā)者調(diào)查
      電腦迷(2015年4期)2015-05-30 05:24:09
      創(chuàng)新者:“孤獨(dú)的”提問(wèn)者
      天才與鍛煉(節(jié)選)
      高考模擬題精選之情景交際題參考答案
      安卓開(kāi)發(fā)者之煩惱
      南皮县| 温宿县| 广宁县| 潍坊市| 惠安县| 乐清市| 乌兰察布市| 泰宁县| 澄迈县| 曲阳县| 文昌市| 马边| 凯里市| 张北县| 九龙县| 临猗县| 高阳县| 隆德县| 当雄县| 沅江市| 武宁县| 鄂伦春自治旗| 泽普县| 北碚区| 宿迁市| 南投市| 清远市| 松潘县| 蒙城县| 沁源县| 九寨沟县| 江阴市| 宕昌县| 郁南县| 抚顺县| 金门县| 湖南省| 榕江县| 乡宁县| 宜春市| 简阳市|