两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

用于軟件開(kāi)發(fā)的系統(tǒng)和方法

文檔序號(hào):6655332閱讀:300來(lái)源:國(guó)知局
專利名稱:用于軟件開(kāi)發(fā)的系統(tǒng)和方法
技術(shù)領(lǐng)域
本申請(qǐng)涉及用于開(kāi)發(fā)和發(fā)布軟件的基于計(jì)算機(jī)的方法和系統(tǒng),更加具體地說(shuō)涉及便于軟件分布式開(kāi)發(fā)的方法和系統(tǒng)。
背景技術(shù)
在美國(guó)和其它地方,計(jì)算機(jī)在工作場(chǎng)所和在個(gè)人努力中已經(jīng)變成人們?nèi)粘I畹囊徊糠帧_@是因?yàn)榭蓪?duì)通用計(jì)算機(jī)進(jìn)行編程以運(yùn)行各種軟件程序,每個(gè)軟件程序會(huì)提供不同的處理和網(wǎng)絡(luò)功能。計(jì)算機(jī)程序設(shè)計(jì)人員開(kāi)發(fā)計(jì)算機(jī)代碼。一些公司雇用大量的計(jì)算機(jī)程序設(shè)計(jì)人員為了公司的利益開(kāi)發(fā)代碼。
一個(gè)處理方案是雇傭大量的程序設(shè)計(jì)人員并在“內(nèi)部”開(kāi)發(fā)軟件。雖然這對(duì)編程職員提供了相當(dāng)大的控制,但發(fā)現(xiàn)、雇用和維持這種工作人員可能是成本不允許的。另外,隨著個(gè)體編程人員離開(kāi)公司,大量的技術(shù)和工業(yè)知識(shí)也隨之丟失??蛇x擇的,許多公司通過(guò)咨詢公司或合同工“外購(gòu)”他們的程序設(shè)計(jì)。該方案解除了公司管理單個(gè)雇員的負(fù)擔(dān),然而工作的質(zhì)量和連貫性可能是令人質(zhì)疑的,并且對(duì)來(lái)自許多外部分銷商的整合工作的挑戰(zhàn)可能也是重大的。

發(fā)明內(nèi)容
組織機(jī)構(gòu)需要獲得高質(zhì)量的軟件,同時(shí)確保使用適當(dāng)?shù)馁|(zhì)量措施來(lái)開(kāi)發(fā)代碼。已經(jīng)提出來(lái)用于改進(jìn)軟件開(kāi)發(fā)的技術(shù)是代碼重新使用和基于子系統(tǒng)的設(shè)計(jì)。但是即使組織機(jī)構(gòu)采用這種技術(shù),他們?nèi)孕枰钥蓳?dān)負(fù)的起的方式獲得高質(zhì)量的子系統(tǒng)。
總的來(lái)說(shuō),本發(fā)明涉及提供基礎(chǔ)設(shè)施、過(guò)程控制和人力來(lái)使用可重復(fù)的、結(jié)構(gòu)化模型開(kāi)發(fā)軟件,以便將軟件開(kāi)發(fā)從專門(mén)的、自定義開(kāi)發(fā)行動(dòng)轉(zhuǎn)變成流線式、可預(yù)測(cè)制造操作。通常來(lái)說(shuō),該目標(biāo)可在一個(gè)典型實(shí)現(xiàn)過(guò)程中可通過(guò)將軟件設(shè)計(jì)功能從軟件開(kāi)發(fā)功能分離開(kāi)、提供嚴(yán)格的復(fù)核過(guò)程并使用競(jìng)爭(zhēng)模型,由此選擇許多分布的、不相關(guān)的和有動(dòng)機(jī)的設(shè)計(jì)或程序。
另外,可雇傭軟件開(kāi)發(fā)公司來(lái)只執(zhí)行整個(gè)過(guò)程的一部分。例如,可雇用顧問(wèn)公司為解決某一商業(yè)需要的應(yīng)用程序開(kāi)發(fā)功能性規(guī)范,或使境外編程機(jī)構(gòu)來(lái)構(gòu)建根據(jù)所述規(guī)范的軟件。已經(jīng)在每個(gè)步驟精確定義了輸入和輸出的多步驟軟件開(kāi)發(fā)制造過(guò)程滿足嚴(yán)格的質(zhì)量控制要求,并將每個(gè)過(guò)程輸出編成較大產(chǎn)品的子組件部件的目錄,這允許實(shí)現(xiàn)靈活性而不會(huì)犧牲質(zhì)量??稍诟鱾€(gè)點(diǎn)進(jìn)入(或退出)這種過(guò)程,同時(shí)開(kāi)發(fā)者的獨(dú)立性在沒(méi)有“事務(wù)政見(jiàn)”或其它偏袒的情況下允許增強(qiáng)嚴(yán)格的設(shè)計(jì)和質(zhì)量分析,這接下來(lái)會(huì)導(dǎo)致質(zhì)量非常高(例如,企業(yè)級(jí)質(zhì)量)的軟件。
在一個(gè)方面,用于軟件程序例如,組件,應(yīng)用程序、模塊或程序庫(kù)設(shè)計(jì)的規(guī)范被傳送給第一多個(gè)開(kāi)發(fā)者,他們?cè)谝恍┣闆r中在地理上可以是分布的。作為響應(yīng),從所述多個(gè)開(kāi)發(fā)者的一個(gè)子集接收可包括或可不包括諸如用于軟件程序的要求文檔、活動(dòng)示圖、案例文檔、測(cè)試案例、原型或UML文檔的項(xiàng)的設(shè)計(jì)。用于對(duì)接收的設(shè)計(jì)進(jìn)行復(fù)核的設(shè)計(jì)復(fù)核過(guò)程被推動(dòng),并至少部分的基于所述結(jié)果,選擇一個(gè)設(shè)計(jì)。所述選擇的設(shè)計(jì)被傳送給第二多個(gè)開(kāi)發(fā)者(其在一些情況中可不同于所述第一多個(gè)軟件開(kāi)發(fā)者),并響應(yīng)所述傳送的設(shè)計(jì),從所述第二多個(gè)軟件開(kāi)發(fā)者中的每一個(gè)接收一個(gè)軟件程序,其在一些情況中可包括源代碼、目標(biāo)代碼或編譯代碼。推動(dòng)軟件復(fù)核過(guò)程以對(duì)每個(gè)接收的程序進(jìn)行復(fù)核,并至少部分的基于其復(fù)核選擇一個(gè)程序。
各個(gè)實(shí)施例可包括一個(gè)或多個(gè)下列特征。開(kāi)發(fā)者的技能等級(jí)(skill rating)可從開(kāi)發(fā)者在一項(xiàng)或多項(xiàng)編碼競(jìng)賽中的成績(jī)得出,其可(整體或部分的)保持在線。例如,可至少部分的基于已經(jīng)獲得在一項(xiàng)或多項(xiàng)競(jìng)賽中接收的最低等級(jí)來(lái)選擇所述第一多個(gè)軟件開(kāi)發(fā)者。分派給開(kāi)發(fā)者的等級(jí)可從與一個(gè)或多個(gè)設(shè)計(jì)或程序相關(guān)的分?jǐn)?shù)(整體或部分的)得出。可使一個(gè)難度等級(jí)與所述軟件程序相關(guān),并在一些實(shí)施例中,可至少部分的基于與所述設(shè)計(jì)或程序相關(guān)的難度等級(jí)來(lái)對(duì)開(kāi)發(fā)者進(jìn)行定級(jí)。
在傳送規(guī)范之前,可從請(qǐng)求開(kāi)發(fā)軟件程序的實(shí)體接收規(guī)范的一部分。在一些情況中,可使用在線應(yīng)用程序例如使用互聯(lián)網(wǎng)來(lái)傳送規(guī)范。所述方法還可包括對(duì)提交了被選擇的設(shè)計(jì)或程序的軟件開(kāi)發(fā)者進(jìn)行獎(jiǎng)賞,例如使用金錢(qián)獎(jiǎng)賞和/或增加的技能等級(jí)。
可通過(guò)多個(gè)復(fù)核人員來(lái)執(zhí)行設(shè)計(jì)復(fù)核和/或軟件復(fù)核過(guò)程,所述多個(gè)復(fù)核人員在一些情況中可能先前已經(jīng)在一項(xiàng)計(jì)算機(jī)編程競(jìng)賽中進(jìn)行了定級(jí),并且可能已經(jīng)獲得一個(gè)高于預(yù)定的最低等級(jí)的等級(jí)。在多個(gè)復(fù)核人員參與設(shè)計(jì)復(fù)核或軟件復(fù)核的情況下,所述設(shè)計(jì)和/或軟件復(fù)核過(guò)程可包括將來(lái)自多個(gè)復(fù)核人員的每一個(gè)的分?jǐn)?shù)匯總成一個(gè)總的等級(jí),并可基于該總的分?jǐn)?shù)選擇一個(gè)設(shè)計(jì)或程序。所述設(shè)計(jì)復(fù)核過(guò)程可包括一項(xiàng)或多項(xiàng)活動(dòng),例如讀取設(shè)計(jì)文檔、完成復(fù)核表格(其在一些情況中可以是在線表格)和標(biāo)明將要由提交所述設(shè)計(jì)的軟件開(kāi)發(fā)者并入到設(shè)計(jì)中的改變??筛鶕?jù)復(fù)核人員的判斷力將所述改變指定為強(qiáng)制性的或選擇性的。在一些實(shí)施例中,可產(chǎn)生申訴以對(duì)分配給一個(gè)軟件開(kāi)發(fā)者的設(shè)計(jì)和/或程序的分?jǐn)?shù)進(jìn)行爭(zhēng)辯??砂l(fā)布所選擇的程序,并在一些情況中,可提供對(duì)發(fā)布的程序的支持。
總體而言,本發(fā)明的另一個(gè)方面涉及一種分布式軟件開(kāi)發(fā)方法。所述方法包括對(duì)分布式軟件開(kāi)發(fā)團(tuán)體提供軟件開(kāi)發(fā)系統(tǒng),從一個(gè)實(shí)體接收產(chǎn)生一個(gè)軟件程序的請(qǐng)求;和通過(guò)所述軟件開(kāi)發(fā)團(tuán)體的至少一個(gè)子集使用所述軟件開(kāi)發(fā)系統(tǒng)推動(dòng)開(kāi)發(fā)所述軟件程序。所述為開(kāi)發(fā)者提供的軟件開(kāi)發(fā)系統(tǒng)包括使用結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)推動(dòng)軟件程序開(kāi)發(fā)和測(cè)試的軟件開(kāi)發(fā)軟件;所述結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)在一些情況下包括多個(gè)階段,例如規(guī)范階段、設(shè)計(jì)階段、開(kāi)發(fā)階段、測(cè)試階段和支持階段;與軟件開(kāi)發(fā)軟件進(jìn)行通信的通信服務(wù)器,用于將軟件開(kāi)發(fā)軟件發(fā)送給分布式軟件開(kāi)發(fā)團(tuán)體;和復(fù)核部門(mén),包括一個(gè)或多個(gè)能夠確定所述分布式軟件開(kāi)發(fā)團(tuán)體所開(kāi)發(fā)的軟件的質(zhì)量的編程人員。
各個(gè)實(shí)施例可選擇的包括一個(gè)或多個(gè)下列特征。軟件程序可以是可從組件、應(yīng)用程序、模塊和程序庫(kù)的組中選擇的程序。在一些實(shí)施例中,可基于軟件開(kāi)發(fā)者參與一個(gè)或多個(gè)編碼競(jìng)賽或他們開(kāi)發(fā)的設(shè)計(jì)和代碼來(lái)對(duì)他們進(jìn)行定級(jí)。為了推動(dòng)開(kāi)發(fā)過(guò)程的分布式性質(zhì),軟件開(kāi)發(fā)系統(tǒng)的一個(gè)或多個(gè)組件在地理上可以是分布式的,并且可使用互聯(lián)網(wǎng)或其它網(wǎng)絡(luò)來(lái)施行發(fā)布。作為一個(gè)非限制示例,編程人員用于開(kāi)發(fā)計(jì)算機(jī)代碼的客戶軟件可以是可下載的小程序(例如,java小程序)的形式。
復(fù)核部門(mén)可包括先前例如在編碼競(jìng)賽中或通過(guò)對(duì)他們已經(jīng)開(kāi)發(fā)的設(shè)計(jì)和/或代碼進(jìn)行定級(jí)的編程人員??捎蓮?fù)核部門(mén)通過(guò)復(fù)核諸如設(shè)計(jì)文檔、源代碼、目標(biāo)代碼、編譯代碼、類定義和方法的項(xiàng)來(lái)確定軟件的質(zhì)量。所述開(kāi)發(fā)環(huán)境可推動(dòng)這種諸如設(shè)計(jì)模型(例如,UML模型)、案例模型和計(jì)算機(jī)代碼的項(xiàng)的開(kāi)發(fā)以及計(jì)算機(jī)代碼的編譯和測(cè)試。所述方法還可包括從所述軟件開(kāi)發(fā)團(tuán)體的一個(gè)子集接收開(kāi)發(fā)的軟件程序,并在一些情況下選擇將要遞送給所述實(shí)體的接收程序中的一個(gè)或多個(gè)。可對(duì)提交所述一個(gè)或多個(gè)選擇軟件程序的開(kāi)發(fā)者進(jìn)行補(bǔ)償,在一些情況中,使用金錢(qián),和在一些情況中通過(guò)增加的技能等級(jí)。
在另一個(gè)方面中,本發(fā)明提供一種評(píng)估軟件程序的計(jì)算機(jī)化方法。所述方法包括將用于開(kāi)發(fā)軟件程序的請(qǐng)求傳送給一組軟件開(kāi)發(fā)者;并作為響應(yīng),從所述軟件開(kāi)發(fā)者組的子集中的每一個(gè)接收一個(gè)候選軟件程序和用于測(cè)試所接收的候選軟件程序的一個(gè)或多個(gè)測(cè)試案例。所述方法還包括使用從所述軟件開(kāi)發(fā)者組的子集中的兩個(gè)或多個(gè)接收的測(cè)試案例對(duì)每個(gè)接收的軟件程序進(jìn)行測(cè)試;和至少部分的基于測(cè)試的結(jié)果對(duì)接收的候選軟件程序進(jìn)行記分。
各實(shí)施例可包括一個(gè)或多個(gè)下列特征。軟件開(kāi)發(fā)者在地理上可以是分布式的,并在一些情況中,可能已經(jīng)在一項(xiàng)或多項(xiàng)編碼競(jìng)賽中進(jìn)行了定級(jí)。所述候選軟件程序可包括源代碼、目標(biāo)代碼、編譯代碼、類定義、方法、應(yīng)用程序和組件。所提交的測(cè)試案例可包括將用作候選軟件程序的輸入的樣本數(shù)據(jù)。
在又一個(gè)方面中,本發(fā)明涉及用于執(zhí)行剛剛所述的方法的系統(tǒng)。例如,一種用于評(píng)估軟件程序的功能性的系統(tǒng)包括通信服務(wù)器,用于將開(kāi)發(fā)軟件程序的請(qǐng)求傳送給一組軟件開(kāi)發(fā)者,并作為響應(yīng),從所述開(kāi)發(fā)者的子集中的每一個(gè)接收一個(gè)候選軟件程序和用于測(cè)試所接收的程序的一個(gè)或多個(gè)測(cè)試案例;測(cè)試服務(wù)器,用于使用從所述軟件開(kāi)發(fā)者的子集中的兩個(gè)或多個(gè)接收的測(cè)試案例對(duì)每個(gè)接收的軟件程序進(jìn)行測(cè)試;和與測(cè)試服務(wù)器通信的記分服務(wù)器,用于至少部分的基于從測(cè)試服務(wù)器接收的測(cè)試結(jié)果對(duì)接收的候選軟件程序進(jìn)行記分。
在本發(fā)明的該方面的一個(gè)實(shí)施例中,軟件開(kāi)發(fā)者在地理上可以是分布式的,并在一些情況中所述開(kāi)發(fā)者先前已經(jīng)進(jìn)行了定級(jí)。所接收的候選軟件程序可包括源代碼、目標(biāo)代碼、編譯代碼、類定義、方法、應(yīng)用程序和組件,并且所提交的測(cè)試案例可包括將用于候選軟件程序的輸入的樣本數(shù)據(jù)。
本發(fā)明的其它方面和優(yōu)點(diǎn)通過(guò)附圖、詳細(xì)說(shuō)明和權(quán)利要求將變得顯而易見(jiàn),附圖、詳細(xì)說(shuō)明和權(quán)利要求的全部?jī)H僅借助示例闡釋了本發(fā)明的原理。


在附圖中,相同的參考符號(hào)通常在不同的圖中指代相同的部分。而且,所述附圖不一定是按比例繪制的,相反,重點(diǎn)一般是放在闡釋本發(fā)明的原理。
圖1為根據(jù)本發(fā)明的具有一個(gè)服務(wù)器的分布式軟件開(kāi)發(fā)系統(tǒng)的一個(gè)實(shí)施例的方框圖;圖2為根據(jù)本發(fā)明一個(gè)實(shí)施例的軟件開(kāi)發(fā)域的一個(gè)實(shí)施例的方框圖;圖3為表示根據(jù)本發(fā)明一個(gè)實(shí)施例的在開(kāi)發(fā)軟件程序的過(guò)程中所執(zhí)行的步驟的流程圖;圖4為表示本發(fā)明一個(gè)實(shí)施例的整體操作的流程圖;圖5為表示根據(jù)本發(fā)明一個(gè)實(shí)施例的使用多個(gè)測(cè)試案例的提交項(xiàng)產(chǎn)生的軟件測(cè)試環(huán)境的方框圖;圖6為如圖5所示的測(cè)試環(huán)境的一個(gè)實(shí)施例的更詳細(xì)的示圖;圖7為如圖1所示的用于推動(dòng)軟件程序的開(kāi)發(fā)和/或測(cè)試的服務(wù)器的一個(gè)實(shí)施例的方框圖。
具體實(shí)施例方式
參照?qǐng)D1,在一個(gè)實(shí)施例中,分布式軟件開(kāi)發(fā)系統(tǒng)101包括至少一個(gè)服務(wù)器104,和至少一個(gè)客戶端108、108’、108”,總的由108指代。如圖所示,所述分布式軟件開(kāi)發(fā)系統(tǒng)包括三個(gè)客戶端108、108,、108”,但這僅僅是用于示例的目的,并且可以預(yù)期有任何數(shù)量的客戶端108??蛻舳?08優(yōu)選的被實(shí)現(xiàn)為在個(gè)人計(jì)算機(jī)(例如,帶有INTEL處理器的PC或APPLE MACINTOSH)上運(yùn)行的軟件,其能夠運(yùn)行這樣的操作系統(tǒng),例如來(lái)自華盛頓雷蒙德的微軟公司的MICROSOFT WINDOWS操作系統(tǒng)家族、來(lái)自加利福尼亞Cupertino的蘋(píng)果計(jì)算機(jī)的MACINTOSH操作系統(tǒng)和各種各樣的Unix,例如來(lái)自SUN MICROSYSTEMS的SUNSOLARIS、來(lái)自北卡羅萊納州的達(dá)勒姆(Durham)的RED HAT公司的GNU/Linus(和其它系統(tǒng))。也可在諸如智能或啞終端、網(wǎng)絡(luò)計(jì)算機(jī)、無(wú)線裝置、無(wú)線電話、信息設(shè)備、工作站、小型機(jī)、大型計(jì)算機(jī)或其它計(jì)算裝置的硬件上實(shí)現(xiàn)這種客戶端108,可將所述硬件操作為通用計(jì)算機(jī)或在分布式軟件開(kāi)發(fā)系統(tǒng)中僅用作客戶端108的專用硬件裝置。
通常,在一些實(shí)施例中,軟件開(kāi)發(fā)者可操作和使用客戶端108以加入到各種軟件開(kāi)發(fā)活動(dòng)中。軟件開(kāi)發(fā)活動(dòng)的例子包括但不局限于軟件開(kāi)發(fā)項(xiàng)目、軟件設(shè)計(jì)項(xiàng)目、測(cè)試軟件程序、創(chuàng)建和/或編輯文檔、參與編程競(jìng)賽等等。還可通過(guò)要求軟件開(kāi)發(fā)商開(kāi)發(fā)軟件的實(shí)體(例如客戶)來(lái)操作客戶端108??蛻艨墒褂每蛻舳?08來(lái)復(fù)核軟件開(kāi)發(fā)商開(kāi)發(fā)的軟件、公布用于軟件程序開(kāi)發(fā)的規(guī)范、測(cè)試軟件模塊、察看有關(guān)開(kāi)發(fā)商的信息,以及此處所述的其它活動(dòng)。還可由作為客戶和軟件開(kāi)發(fā)商之間的中間人的服務(wù)商來(lái)操作客戶端108。
在各種實(shí)施例中,客戶計(jì)算機(jī)108包括網(wǎng)頁(yè)瀏覽器116、客戶軟件120,或二者都包括。網(wǎng)頁(yè)瀏覽器116允許客戶端108使用網(wǎng)頁(yè)請(qǐng)求來(lái)請(qǐng)求一個(gè)網(wǎng)頁(yè)或其它可下載的程序、小應(yīng)用程序或文檔(例如,從服務(wù)器104)。網(wǎng)頁(yè)的一個(gè)示例是包括計(jì)算機(jī)可執(zhí)行或可解釋的信息、圖形、聲音、文本和/或視頻的數(shù)據(jù)文件,可對(duì)所述數(shù)據(jù)文件進(jìn)行顯示、執(zhí)行、播放、處理、流傳送和/或存儲(chǔ),并且其可包含到其它網(wǎng)頁(yè)的鏈接或指針。在一個(gè)實(shí)施例中,客戶端108的用戶手動(dòng)地從服務(wù)器104請(qǐng)求網(wǎng)頁(yè)。可選擇的,客戶端108使用網(wǎng)頁(yè)瀏覽器116自動(dòng)地產(chǎn)生請(qǐng)求。商業(yè)上可獲得的網(wǎng)頁(yè)瀏覽器軟件116的例子是由微軟公司提供的INTERNET EXPLORER、由AOL/Time Warner提供的NETSCAPENAVIGATOR或由Mozilla Foundation提供的FIREFOX。
在一些實(shí)施例中,客戶端108還包括客戶端軟件??蛻舳塑浖?20對(duì)客戶端108提供允許軟件開(kāi)發(fā)商參與、監(jiān)督、促進(jìn)或觀察上述軟件開(kāi)發(fā)活動(dòng)的功能??梢愿鞣N形式來(lái)實(shí)現(xiàn)客戶端軟件120,例如可以下載到客戶端108上并結(jié)合網(wǎng)頁(yè)瀏覽器116運(yùn)行的Java小應(yīng)用程序的形式,或者客戶端軟件120可以是以多平臺(tái)語(yǔ)言(例如,Java)或以本機(jī)處理器可執(zhí)行代碼實(shí)現(xiàn)的單機(jī)應(yīng)用程序的形式。在一個(gè)實(shí)施例中,如果在客戶端108上執(zhí)行,客戶端軟件120打開(kāi)通過(guò)通信網(wǎng)絡(luò)112到服務(wù)器104的網(wǎng)絡(luò)連接并通過(guò)那個(gè)連接與服務(wù)器104通信??蛻舳塑浖?20和網(wǎng)頁(yè)瀏覽器116可以是單一客戶服務(wù)器接口124的一部分;例如,可將客戶端軟件實(shí)現(xiàn)為網(wǎng)頁(yè)瀏覽器116的“插件程序”。
通信網(wǎng)絡(luò)112將客戶端108與服務(wù)器104連接??赏ㄟ^(guò)任何媒體例如,標(biāo)準(zhǔn)電話線、LAN或WAN連接(例如T1、T3、56kb、X.25)、寬帶連接(ISDN,F(xiàn)rame Relay,ATM)、無(wú)線連接(802.11,藍(lán)牙等),等等來(lái)進(jìn)行通信。優(yōu)選的,網(wǎng)絡(luò)112可攜載TCP/IP協(xié)議通信,并且通過(guò)網(wǎng)頁(yè)瀏覽器116進(jìn)行的HTTP/HTTPS請(qǐng)求和客戶端軟件120和服務(wù)器104之間的連接可在這種TCP/IP網(wǎng)絡(luò)上進(jìn)行通信。然而網(wǎng)絡(luò)的類型并不是限制的,任何適當(dāng)?shù)木W(wǎng)絡(luò)都可使用??捎米魍ㄐ啪W(wǎng)絡(luò)112或是其一部分的網(wǎng)絡(luò)的非限制示例包括基于以太網(wǎng)的無(wú)線或有線內(nèi)聯(lián)網(wǎng)、局域網(wǎng)或廣域網(wǎng)(LAN或WAN)和/或已知為互聯(lián)網(wǎng)的全球通信網(wǎng),所述網(wǎng)絡(luò)可適應(yīng)許多不同的通信媒體和協(xié)議。
服務(wù)器104與客戶端108相互作用。服務(wù)器104優(yōu)選地實(shí)現(xiàn)在一個(gè)或多個(gè)服務(wù)器級(jí)計(jì)算機(jī)上,所述服務(wù)器級(jí)計(jì)算機(jī)具有充足的存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)和處理能力并且運(yùn)行一個(gè)服務(wù)器級(jí)操作系統(tǒng)(例如SUNSolaris、GNU/Linux和微軟視窗操作系統(tǒng)家族)。根據(jù)設(shè)備容量和用戶數(shù)量以及用戶基數(shù)的大小也可使用除此處所述之外的其它類型的系統(tǒng)硬件和軟件。例如,服務(wù)器104可以是有一個(gè)或多個(gè)服務(wù)器組成的邏輯組或者可以是其一部分,例如服務(wù)器群(server farm)或服務(wù)器網(wǎng)絡(luò)。作為另一個(gè)例子,可以有多個(gè)服務(wù)器104,這些服務(wù)器可彼此相關(guān)或連接,或者多個(gè)服務(wù)器可使用共享數(shù)據(jù)獨(dú)立的操作。在另一個(gè)實(shí)施例中且典型的是在大規(guī)模系統(tǒng)中,可在組件中執(zhí)行應(yīng)用軟件,其中不同的組件運(yùn)行在不同的服務(wù)器計(jì)算機(jī)上、相同的服務(wù)器上或某一種組合。
在一些實(shí)施例中,服務(wù)器104還可包括例如在由Lydon等人提出的標(biāo)題分別為“Systems and Methods for Coding Competitions”和“Apparatus and System for Facilitating Online CodingCompetitions”的美國(guó)專利第6569012和6761631號(hào)中所述的競(jìng)爭(zhēng)服務(wù)器,所述專利文獻(xiàn)通過(guò)整體參考而被并入本文。
在一個(gè)實(shí)施例中,服務(wù)器104和客戶端108允許通過(guò)一個(gè)或多個(gè)開(kāi)發(fā)者對(duì)軟件程序進(jìn)行分布軟件開(kāi)發(fā),所述開(kāi)發(fā)者可以與或者可以不與請(qǐng)求軟件程序開(kāi)發(fā)的實(shí)體相關(guān)。軟件程序可以是用于機(jī)器的任何種類的指令,例如包括但不局限于組件、類、程序庫(kù)、應(yīng)用程序、小應(yīng)用程序、腳本、邏輯表、數(shù)據(jù)塊或這些當(dāng)中的任一個(gè)或多個(gè)的任意組合或集合。
在一個(gè)實(shí)施例中,軟件程序是軟件組件。通常,軟件組件是一個(gè)功能軟件模塊,其可以是一個(gè)應(yīng)用程序的可重用構(gòu)建塊。一個(gè)組件可具有任何功能或功能性。正如一些示例,軟件組件可包括,但不局限于諸如圖形用戶接口工具、小型計(jì)算器、數(shù)據(jù)庫(kù)管理器的接口、用于保險(xiǎn)統(tǒng)計(jì)表計(jì)算、DNA搜索功能、為了加工制造部件的目的制造數(shù)字控制機(jī)器的接口、公共/私密密鑰加密運(yùn)算和用于注冊(cè)和與主機(jī)應(yīng)用程序進(jìn)行通信的功能(例如,保險(xiǎn)調(diào)整和銷售點(diǎn)(POS)產(chǎn)品跟蹤)的組件。在一些實(shí)施例中,組件為了所需的服務(wù)而彼此通信(例如,通過(guò)通信網(wǎng)絡(luò)112)。組件的一個(gè)具體例子是JavaBean,其是以Java編程語(yǔ)言編寫(xiě)的組件。也可以任何其他語(yǔ)言編來(lái)寫(xiě)組件,包括但不局限于Visual Basic,C++,Java和C#。
在一個(gè)實(shí)施例中,軟件程序是應(yīng)用程序。應(yīng)用程序可以包括一個(gè)或多個(gè)軟件組件。在一個(gè)實(shí)施例中,軟件應(yīng)用程序包括使用此處所述的方法先前開(kāi)發(fā)的軟件組件。在一些實(shí)施例中,應(yīng)用程序完全包括新的軟件程序。在一些實(shí)施例中,應(yīng)用程序包括新軟件程序和先前開(kāi)發(fā)的軟件程序的組合。
參照?qǐng)D2,可使用軟件開(kāi)發(fā)域204來(lái)提供具有高質(zhì)量軟件的實(shí)體。可通過(guò)各種方法從分布式編程人員團(tuán)體識(shí)別和/或選擇一個(gè)或多個(gè)開(kāi)發(fā)者,并且隨后將其用于開(kāi)發(fā)軟件組件。例如,開(kāi)發(fā)者可以是培養(yǎng)協(xié)作計(jì)算機(jī)編程和分布式軟件開(kāi)發(fā)的組織、企業(yè)或團(tuán)體的雇員、顧問(wèn)或成員,并且在一些情況中,開(kāi)發(fā)者彼此可能不具有其它正式或非正式的關(guān)系。在一些實(shí)施例中,一個(gè)或多個(gè)開(kāi)發(fā)者可作為負(fù)責(zé)組織和協(xié)調(diào)其他開(kāi)發(fā)者的工作量的產(chǎn)品經(jīng)理。產(chǎn)品經(jīng)理也可以指定項(xiàng)目,例如但不局限于項(xiàng)目成本、項(xiàng)目安排和項(xiàng)目風(fēng)險(xiǎn)。在一個(gè)實(shí)施例中,產(chǎn)品經(jīng)理對(duì)于項(xiàng)目產(chǎn)生一個(gè)項(xiàng)目計(jì)劃,其可包括但不局限于估計(jì)項(xiàng)目成本和日程,以及例如說(shuō)明項(xiàng)目范圍和風(fēng)險(xiǎn)的要求文檔。
在一些實(shí)施例中,開(kāi)發(fā)者可包括體系結(jié)構(gòu)設(shè)計(jì)者、設(shè)計(jì)師、程序師、質(zhì)量保證工程師、以及其他軟件開(kāi)發(fā)角色,如在Hughes提出的標(biāo)題為“Method and Systems for Software Development”的未決美國(guó)專利申請(qǐng)序列第10/408402號(hào)中所述,所述專利申請(qǐng)通過(guò)整體參考而被并入本文。
在一個(gè)實(shí)施例中,軟件開(kāi)發(fā)域204包括通信服務(wù)器216、一個(gè)或多個(gè)結(jié)構(gòu)化的開(kāi)發(fā)方法學(xué)220、軟件開(kāi)發(fā)軟件224和復(fù)核部門(mén)228。通信服務(wù)器提供通過(guò)其外部實(shí)體208、程序員團(tuán)體212和復(fù)核部門(mén)208可彼此交互的渠道,例如以設(shè)計(jì)或功能表提供文件編制、提交軟件、得出和提供反饋、復(fù)核提交的軟件和潛在的評(píng)價(jià)提交的軟件。在一些實(shí)施例中,通信服務(wù)器是或用作如上所述的服務(wù)器104的一部分,而在其它情況中通信服務(wù)器可以是單獨(dú)的服務(wù)器,其可通過(guò)應(yīng)用程序服務(wù)提供商(ASP)、互聯(lián)網(wǎng)服務(wù)提供商(ISP)或其他第三方來(lái)操作和/或外購(gòu)。
結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220提供用于軟件程序開(kāi)發(fā)的框架。方法學(xué)220指定一個(gè)共用詞匯表、一組固定的可交付產(chǎn)品(deliverables)、開(kāi)發(fā)階段或步驟、用于一個(gè)或多個(gè)步驟的輸入和輸出以及開(kāi)發(fā)過(guò)程的其他方面。例如,方法學(xué)220將開(kāi)發(fā)過(guò)程分為體系架構(gòu)和設(shè)計(jì)階段以及開(kāi)發(fā)和測(cè)試階段。另外,在該特定的非限制示例中,在啟動(dòng)任何開(kāi)發(fā)工作之前,對(duì)體系架構(gòu)和設(shè)計(jì)階段的輸出例如類圖、測(cè)試案例、技術(shù)規(guī)范和其它設(shè)計(jì)文檔進(jìn)行提交、復(fù)核和最終確定。一旦選擇和批準(zhǔn)了一組設(shè)計(jì)文檔,則所述設(shè)計(jì)文檔將被用作開(kāi)發(fā)階段的輸入。在開(kāi)發(fā)和設(shè)計(jì)階段,開(kāi)發(fā)者基于設(shè)計(jì)文檔創(chuàng)建源代碼、腳本、文件編制和其它可交付產(chǎn)品。通過(guò)在開(kāi)始開(kāi)發(fā)之前確保高質(zhì)量的設(shè)計(jì)文檔,開(kāi)發(fā)者被提供他們正被要求開(kāi)發(fā)的項(xiàng)目的一個(gè)完整和精確的表述。另外,通過(guò)使用結(jié)構(gòu)化方法學(xué),參與者(例如,開(kāi)發(fā)者212、實(shí)體208)能夠有效的進(jìn)行通信,并且知道每個(gè)處理步驟的輸出以及可對(duì)其進(jìn)行驗(yàn)證。通過(guò)提供公共定義和一組已知的輸入,例如使用情況,和一組輸出,例如,期望結(jié)果,并且通過(guò)便于基于團(tuán)體的開(kāi)發(fā),開(kāi)發(fā)者彼此可有效和高效的彼此交互,因此降低了生產(chǎn)高質(zhì)量軟件所需的成本和時(shí)間。
軟件開(kāi)發(fā)軟件224提供用于執(zhí)行方法學(xué)220的操作機(jī)構(gòu),和開(kāi)發(fā)者能夠進(jìn)行開(kāi)發(fā)、測(cè)試、提交和驗(yàn)證軟件設(shè)計(jì)和軟件程序中的一項(xiàng)或多項(xiàng)的軟件開(kāi)發(fā)環(huán)境。在一些實(shí)施例中,如圖所示,軟件224的組件可駐留在服務(wù)器104上,而一些組件可包括在駐留在如上所述的客戶端上的客戶軟件中。軟件開(kāi)發(fā)軟件224可選擇性的包括例如一個(gè)或多個(gè)開(kāi)發(fā)庫(kù),開(kāi)發(fā)者從開(kāi)發(fā)庫(kù)能夠訪問(wèn)先前開(kāi)發(fā)的組件和文件編制模板;提供關(guān)于編程項(xiàng)、語(yǔ)法和功能的信息的文件編制特征;還允許開(kāi)發(fā)者識(shí)別和校正編程錯(cuò)誤的編譯程序;和甚至版本控制和代碼管理功能。
圖3給出了例如使用上述的軟件開(kāi)發(fā)域204開(kāi)發(fā)軟件的方法的一個(gè)實(shí)施例的概略圖。通信服務(wù)器216接收描述軟件程序的期望功能的規(guī)范(步驟304),所述規(guī)范然后被分發(fā)給分布式程序員團(tuán)體212(步驟308)。所述團(tuán)體212中的一個(gè)或多個(gè)程序員基于在所述規(guī)范中描述的功能性產(chǎn)生詳述所述程序的技術(shù)方面的設(shè)計(jì),并且一旦完成,就在服務(wù)器104處接收設(shè)計(jì)(步驟312)。然后所提交的設(shè)計(jì)接受設(shè)計(jì)復(fù)核過(guò)程(步驟316),由此將所述設(shè)計(jì)與所述規(guī)范進(jìn)行比較,并對(duì)其所規(guī)定的功能性的執(zhí)行情況和與結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220的兼容情況進(jìn)行評(píng)估。響應(yīng)所述評(píng)估,可選擇一個(gè)“最好”的提交設(shè)計(jì)(步驟320),并且如果有至少一個(gè)滿足質(zhì)量的提交,則可使選擇的設(shè)計(jì)對(duì)于分布式程序員團(tuán)體212可用(步驟324)。大量程序員中的每一個(gè)(或者,在一些情況中,為每個(gè)程序員團(tuán)隊(duì))提交一個(gè)他們確信符合所述設(shè)計(jì)和結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220的要求的軟件程序。在服務(wù)器104處接收軟件程序(步驟328)并使程序接受軟件復(fù)核處理(步驟332)以確定哪個(gè)提交的程序最符合所述分布式設(shè)計(jì)和結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220。一旦通過(guò)復(fù)核,一個(gè)(或者在一些情況下多于一個(gè),或者如果沒(méi)有程序是充分高質(zhì)量的則一個(gè)也沒(méi)有)程序被標(biāo)識(shí)為“獲勝”的提交項(xiàng)(步驟336)。
圖4給出了上述的一般方法的一個(gè)可能實(shí)施例。在一些這種實(shí)施例中,通過(guò)服務(wù)商400來(lái)監(jiān)視和管理開(kāi)發(fā)過(guò)程。服務(wù)商400可以是能夠執(zhí)行此處所述的功能的任何個(gè)體、組或?qū)嶓w。在一些情況中,可根據(jù)例如對(duì)先前提交的軟件設(shè)計(jì)和/或程序獲得的典型分?jǐn)?shù)或在軟件編程競(jìng)賽中獲得較高等級(jí)從分布式開(kāi)發(fā)團(tuán)體208中選擇服務(wù)商400。在其它情況中,可由請(qǐng)求開(kāi)發(fā)軟件程序的實(shí)體(例如實(shí)體208)來(lái)指定或提供服務(wù)商400,并由此監(jiān)督設(shè)計(jì)和開(kāi)發(fā)過(guò)程以進(jìn)一步確保最終的產(chǎn)品將與規(guī)范相稱。
最初,服務(wù)商400從希望具有軟件程序、應(yīng)用程序、組件或?yàn)榱似渥陨砝骈_(kāi)發(fā)的其它資產(chǎn)的實(shí)體(未示)接收輸入。所述實(shí)體可以是尋求具有一個(gè)或多個(gè)供內(nèi)部使用而設(shè)計(jì)和/或開(kāi)發(fā)的計(jì)算機(jī)程序或者作為計(jì)劃在商業(yè)上進(jìn)行銷售的較大型應(yīng)用程序的一部分的公司。在一些情況中,所述實(shí)體會(huì)提供詳細(xì)的規(guī)范,并在其它情況中,可只提供一個(gè)功能需求的列表。所述服務(wù)商從外部實(shí)體接收要求(步驟406)、規(guī)范(步驟408),或者在一些情況中兩者都接收。然而,如果沒(méi)有提供規(guī)范,或者如果規(guī)范需要修訂以使其符合方法學(xué),則所述服務(wù)商可根據(jù)要求開(kāi)發(fā)規(guī)范(步驟410)。在一些情況中,可要求開(kāi)發(fā)團(tuán)體407(例如圖2中的開(kāi)發(fā)團(tuán)體212)中的一個(gè)或多個(gè)成員來(lái)開(kāi)發(fā)規(guī)范,并且在一些情況中可提交多個(gè)規(guī)范,其中只有一個(gè)規(guī)范被選擇作為最后的規(guī)范,用于指導(dǎo)設(shè)計(jì)和開(kāi)發(fā)工作。
在一個(gè)實(shí)施例中,規(guī)范定義了商業(yè)計(jì)劃和穩(wěn)定的硬件和/或軟件平臺(tái)或其它體系結(jié)構(gòu)約束。例如,規(guī)范可定義網(wǎng)絡(luò)設(shè)備、服務(wù)器和通常的基礎(chǔ)結(jié)構(gòu)以支持項(xiàng)目和產(chǎn)品的開(kāi)發(fā)和生產(chǎn)。所述規(guī)范還能夠標(biāo)識(shí)必須以其或使用其對(duì)組件進(jìn)行編程的語(yǔ)言或工具、軟件組件的功能概要、邊界條件、效率要求、計(jì)算機(jī)平臺(tái)/環(huán)境要求、接口要求、性能標(biāo)準(zhǔn)、測(cè)試案例要求和/或組件的文檔編制要求。在一些實(shí)施例中,所述規(guī)范可包括將支付給提交與規(guī)范相適應(yīng)的最佳設(shè)計(jì)和/或程序的設(shè)計(jì)者的錢(qián)數(shù)。
在一些情況中,所述規(guī)范被分配一個(gè)難度等級(jí),或者服務(wù)商、實(shí)體或規(guī)范的其他鑒別者確信根據(jù)所述規(guī)范產(chǎn)生可理解的設(shè)計(jì)將有多困難的一些類似的指標(biāo)。在一些情況中,難度等級(jí)也可以基于確信完成所述任務(wù)所需的工作量,和完成任務(wù)所分配的時(shí)間??梢匀魏芜m當(dāng)?shù)姆绞奖硎倦y度等級(jí),例如以數(shù)字形式(例如,1到10的等級(jí))、字母等級(jí)或類似“容易”、“中等”或“困難”的說(shuō)明。例如,用于復(fù)雜基因序列算法設(shè)計(jì)的規(guī)范在1到10的等級(jí)上可具有9的難度等級(jí),而在文件中執(zhí)行對(duì)特定文本搜索的簡(jiǎn)單組件可被分配難度等級(jí)為2。如果有附加的實(shí)際約束,例如如果在兩天內(nèi)需要該搜索組件,則由于緊的時(shí)間約束而可選擇性的增加難度等級(jí)。在一些實(shí)施例中,可部分根據(jù)與所述規(guī)范相關(guān)的難度等級(jí)來(lái)產(chǎn)生或調(diào)整給予提交選擇的設(shè)計(jì)的設(shè)計(jì)者的獎(jiǎng)勵(lì)(例如,錢(qián)、技術(shù)等級(jí)等)。
一旦規(guī)范被接收(或開(kāi)發(fā)),則服務(wù)商400(或在一些情況中為項(xiàng)目經(jīng)理)根據(jù)開(kāi)發(fā)方法學(xué)220對(duì)規(guī)范進(jìn)行復(fù)核以確定它是否滿足完整規(guī)范的要求。方法學(xué)可包括最優(yōu)方法的活動(dòng)、模板、指南和有助于軟件體系結(jié)構(gòu)設(shè)計(jì)者、程序員和開(kāi)發(fā)者以一致和有效的方式產(chǎn)生優(yōu)質(zhì)代碼的標(biāo)準(zhǔn)。這種方法學(xué)的使用減少了重新思考和再生成編程文檔編制和構(gòu)造的需要,從而減少了項(xiàng)目持續(xù)時(shí)間、成本并提高了質(zhì)量和組件可重用性。
一旦完成,就通過(guò)通信服務(wù)器212將所述規(guī)范分發(fā)給一個(gè)或多個(gè)開(kāi)發(fā)者404、404’、404”(總體為404),其可以是諸如圖2中所示的團(tuán)體的分布式程序員團(tuán)體的成員。在一個(gè)非限制示例中,開(kāi)發(fā)者404彼此不相關(guān)。例如,開(kāi)發(fā)者可不具有共同的職員,可在世界范圍內(nèi)在地理上分散開(kāi)發(fā)者,并且在一些情況中先前彼此并不相互交流。然而,作為團(tuán)體212的成員,開(kāi)發(fā)者404可能已經(jīng)加入一個(gè)或多個(gè)競(jìng)賽,和/或先前已經(jīng)提交了接受復(fù)核的軟件制品(artifact)。該方案允許實(shí)體208有權(quán)訪問(wèn)大量備用的認(rèn)證的軟件開(kāi)發(fā)者。
可通過(guò)諸如網(wǎng)絡(luò)112(圖1)的通信網(wǎng)絡(luò)來(lái)進(jìn)行通信,例如通過(guò)電子郵件、即時(shí)信息、文本信息、可通過(guò)網(wǎng)頁(yè)瀏覽器116進(jìn)行訪問(wèn)的網(wǎng)頁(yè)上的公告(posting)、通過(guò)新聞組、傳真或任何其他適當(dāng)?shù)耐ㄐ?。在一些?shí)施例中,可伴隨獎(jiǎng)賞、報(bào)酬的指示或?qū)τ谔峤贿x擇的軟件設(shè)計(jì)的設(shè)計(jì)者可獲得的其他認(rèn)可來(lái)進(jìn)行規(guī)范的通信。在一些情況中,報(bào)酬的數(shù)量和/或類型可隨時(shí)間改變,或者隨參與成員的增加或減少而改變,或二者同時(shí)發(fā)生。在一些情況中,可向多個(gè)設(shè)計(jì)者獎(jiǎng)賞不同的數(shù)量,例如較大的獎(jiǎng)賞給予最好的設(shè)計(jì),而較小的獎(jiǎng)賞給予次位的設(shè)計(jì)。接收獎(jiǎng)賞的設(shè)計(jì)人員的數(shù)量可例如基于參加設(shè)計(jì)項(xiàng)目或其它類似屬性的設(shè)計(jì)人員的數(shù)量。
可通過(guò)各種方法來(lái)選擇規(guī)范的接受者。在一些實(shí)施中,團(tuán)體成員可能已經(jīng)表達(dá)了參與一個(gè)開(kāi)發(fā)項(xiàng)目的興趣,而在一些情況中可基于在編碼競(jìng)賽中的先前成績(jī)、以前開(kāi)發(fā)的項(xiàng)目或測(cè)量軟件開(kāi)發(fā)者的編程技能的其它方法來(lái)選擇個(gè)體。例如,分布式程序員團(tuán)體的成員可以是先前已經(jīng)加入在線編程競(jìng)賽的程序員。在這種情況下,參與者的編程技能可根據(jù)他們的成績(jī)或者作為一個(gè)團(tuán)隊(duì)單獨(dú)的,或者關(guān)于其他程序員來(lái)進(jìn)行定級(jí),并且可使用所述等級(jí)來(lái)確定哪些程序員適合接收新規(guī)范的通知或?qū)νㄖ龀鲰憫?yīng)。
在一個(gè)實(shí)施例中,服務(wù)商400在各個(gè)參與者(外部實(shí)體208、開(kāi)發(fā)者404等)之間主持一個(gè)合作論壇以確定、討論設(shè)計(jì)特征或關(guān)于設(shè)計(jì)特征進(jìn)行合作。合作論壇可由開(kāi)發(fā)者、用戶、預(yù)期客戶或在開(kāi)發(fā)某一軟件中感興趣的其它人員構(gòu)成。在一個(gè)實(shí)施例中,合作論壇是參與者可公布想法、問(wèn)題、提議或其它信息的在線論壇。在一些實(shí)施例中,只有論壇成員的子集可向論壇發(fā)布建議。
一旦接收規(guī)范,一個(gè)或多個(gè)開(kāi)發(fā)者404每個(gè)都會(huì)根據(jù)規(guī)范來(lái)開(kāi)發(fā)軟件設(shè)計(jì)(步驟412、412’和412”)??墒褂萌魏芜m當(dāng)?shù)拈_(kāi)發(fā)系統(tǒng)來(lái)進(jìn)行軟件設(shè)計(jì)的開(kāi)發(fā),例如通過(guò)通信服務(wù)器216提供的軟件開(kāi)發(fā)軟件224、通過(guò)開(kāi)發(fā)者404提供的開(kāi)發(fā)環(huán)境或其某種組合。當(dāng)開(kāi)發(fā)者404滿意其設(shè)計(jì)滿足規(guī)定的要求并符合結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220時(shí),她會(huì)例如通過(guò)通信服務(wù)器216、傳真、電子郵件、郵件或其它類似方法來(lái)提交她的設(shè)計(jì)。
為了確定哪個(gè)設(shè)計(jì)將被用作用于軟件程序的設(shè)計(jì),使用設(shè)計(jì)復(fù)核過(guò)程(步驟414)。該設(shè)計(jì)復(fù)核可以任意種方式來(lái)進(jìn)行。在一些情況中,服務(wù)商400可將復(fù)核過(guò)程委派給分布式程序員團(tuán)體的一個(gè)或多個(gè)成員或者是所述實(shí)體的被任命者。在一些實(shí)施例中,設(shè)計(jì)復(fù)核過(guò)程包括用作對(duì)來(lái)自軟件設(shè)計(jì)者的設(shè)計(jì)提交項(xiàng)進(jìn)行復(fù)核的設(shè)計(jì)復(fù)核部門(mén)的一個(gè)或多個(gè)開(kāi)發(fā)者404。設(shè)計(jì)復(fù)核部門(mén)優(yōu)選的具有較小數(shù)量(例如少于十)的成員,例如三個(gè)成員,但也可以是任何數(shù)量。通常,復(fù)核部門(mén)只被形成用于一個(gè)或較小數(shù)量的相關(guān)項(xiàng)目,例如三個(gè)項(xiàng)目。在一些實(shí)施例中,復(fù)核部門(mén)可被形成用于延長(zhǎng)的時(shí)間,但人員配備的變化也可有助于保持質(zhì)量。
優(yōu)選的,通過(guò)服務(wù)商400和/或項(xiàng)目經(jīng)理、復(fù)核部門(mén)的成員,和/或請(qǐng)求軟件程序的外部實(shí)體將設(shè)計(jì)復(fù)核部門(mén)成員中的一個(gè)成員選擇為主要復(fù)核部門(mén)成員。在一些情況中,服務(wù)商400或服務(wù)商400的代表作為主要復(fù)核部門(mén)成員。主要復(fù)核部門(mén)成員負(fù)責(zé)對(duì)所述部門(mén)的活動(dòng)的協(xié)調(diào)和管理。
在一個(gè)實(shí)施例中,通過(guò)設(shè)計(jì)復(fù)核部門(mén)來(lái)判斷用于軟件設(shè)計(jì)的提交項(xiàng)。在一些實(shí)施例中,主要復(fù)核部門(mén)成員在設(shè)計(jì)復(fù)核部門(mén)的其他成員復(fù)核設(shè)計(jì)提交項(xiàng)之前對(duì)它們進(jìn)行篩選以允許復(fù)核部門(mén)的剩余成員只判斷提交項(xiàng)中的最好項(xiàng)。在一些實(shí)施例中,所述篩選過(guò)程包括根據(jù)它們滿足在規(guī)范中所列舉的形式要求(例如,提交的格式和元素)的程度來(lái)對(duì)提交項(xiàng)進(jìn)行記分。在一些實(shí)施例中,使用記分卡對(duì)分?jǐn)?shù)提供文件編制,其可以是文檔、電子表格、在線表格、數(shù)據(jù)庫(kù)或其它電子文檔。在一些情況中,所述設(shè)計(jì)復(fù)核部門(mén)還可以驗(yàn)證開(kāi)發(fā)者404的匿名使得不能從他們的提交項(xiàng)來(lái)辨別它們的身份。
篩選復(fù)核可確定是否包括所要求的設(shè)計(jì)元素(例如,類、使用情況和序列圖、組件規(guī)范、所要求的算法、類存根和功能測(cè)試)。篩選復(fù)核還可確定這些元素完整的呈現(xiàn)了。例如關(guān)于類圖,尤其是類定義,篩選復(fù)核可確定下列中的任一個(gè)或全部(1)類定義提供類的用途的描述性概述,(2)為了分離功能性已經(jīng)產(chǎn)生了子分組,(3)類范圍匹配類用途,(4)對(duì)編程技術(shù)(例如繼承性和抽象)存在適當(dāng)?shù)暮陀行У氖褂茫?5)正確使用接口,(6)對(duì)組件定義適當(dāng)?shù)臉?gòu)造函數(shù),和(7)適當(dāng)使用類修飾語(yǔ),例如,最終的和靜態(tài)的。篩選復(fù)核也可例如關(guān)于變量定義確定(1)變量范圍被正確定義,(2)對(duì)于效率和靈活性之間的平衡適當(dāng)定義類型分配,和(3)使用初始值定義所有變量。另外,關(guān)于方法定義,例如,篩選復(fù)核可確定(1)范圍被正確定義,(2)例外情況被正確處理和使用,(3)修飾語(yǔ)被適當(dāng)使用,(4)使用返回類型,(5)方法論證被適當(dāng)定義,和(6)如在所述要求規(guī)范中陳述的應(yīng)用程序接口(API)是可用的。
篩選復(fù)核還可例如驗(yàn)證對(duì)于設(shè)計(jì)中的所有公共方法是否存在使用情況圖,和對(duì)于每個(gè)使用情況都存在序列圖。篩選復(fù)核還可例如關(guān)于測(cè)試案例驗(yàn)證是否對(duì)每個(gè)序列圖都提供了功能測(cè)試案例,和所述功能測(cè)試案例對(duì)于那些圖是否為適當(dāng)?shù)摹8鶕?jù)所指定的程序,所述設(shè)計(jì)可采用多種形式。典型的,所述規(guī)范將包括用于設(shè)計(jì)的要求。在一個(gè)實(shí)施例中,所述設(shè)計(jì)要求包括類圖,其可以通用建模語(yǔ)言(UnifiedModeling Language(UML))開(kāi)發(fā),例如使用可從德國(guó)漢堡的GentlewareAG獲得的Poseideon計(jì)算機(jī)輔助軟件工程(CASE)工具。所述設(shè)計(jì)要求還可包括使用情況(use-case)圖和序列(sequence)圖。設(shè)計(jì)要求還可包括描述設(shè)計(jì)的編寫(xiě)組件設(shè)計(jì)規(guī)范、所要求的算法的列表和用于設(shè)計(jì)中的類的類存根。所述設(shè)計(jì)要求還包括能夠用于測(cè)試所述程序的功能測(cè)試。在一個(gè)這種實(shí)施例中,功能測(cè)試是與JUnit測(cè)試基礎(chǔ)設(shè)施兼容的測(cè)試。JUnit是用于測(cè)試Java軟件的開(kāi)放源軟件,其可從www.sourceforge.net獲得。
在一個(gè)實(shí)施例中,主復(fù)核部門(mén)成員通知設(shè)計(jì)復(fù)核部門(mén)一個(gè)或多個(gè)提交項(xiàng)已經(jīng)通過(guò)初始篩選過(guò)程(步驟416),然后設(shè)計(jì)復(fù)核部門(mén)更詳細(xì)的評(píng)估設(shè)計(jì)提交項(xiàng)。在一些實(shí)施例中,設(shè)計(jì)復(fù)核部門(mén)基于在規(guī)范中經(jīng)文檔編制的要求來(lái)復(fù)核提交項(xiàng)。在一些實(shí)施例中,設(shè)計(jì)復(fù)核部門(mén)對(duì)提交項(xiàng)進(jìn)行記分(步驟418)。在一些實(shí)施例中,使用記分卡對(duì)分?jǐn)?shù)進(jìn)行文檔編制,其可以是任何形式,包括文檔、電子表格、在線表格、數(shù)據(jù)庫(kù)或其它電子文檔。
在一些實(shí)施例中,來(lái)自主復(fù)核部門(mén)成員和設(shè)計(jì)復(fù)核部門(mén)中的其它成員的分?jǐn)?shù)和復(fù)核被匯總成最終的復(fù)核和分?jǐn)?shù)。在一些實(shí)施例中,所述匯總可包括對(duì)包含在一個(gè)或多個(gè)文檔中的信息進(jìn)行編譯。可通過(guò)主復(fù)核部門(mén)成員、設(shè)計(jì)復(fù)核部門(mén)的其它成員來(lái)執(zhí)行這種匯總,或者在一個(gè)典型實(shí)施例中,使用駐留在服務(wù)器104(圖1)上的基于計(jì)算機(jī)的系統(tǒng)來(lái)執(zhí)行匯總。在一些實(shí)施例中,服務(wù)商400或主復(fù)核部門(mén)成員在設(shè)計(jì)復(fù)核部門(mén)成員之間解決不相符或不一致。
在一個(gè)實(shí)施例中,具有最高組合分?jǐn)?shù)的設(shè)計(jì)被選作為將被用于執(zhí)行的獲勝設(shè)計(jì)(步驟420)。將獎(jiǎng)賞、報(bào)酬和/或贊譽(yù)給予設(shè)計(jì)者。在一個(gè)實(shí)施例中,給予設(shè)計(jì)者的部分報(bào)酬被扣留直到開(kāi)發(fā)復(fù)核結(jié)束。例如,設(shè)計(jì)者可接收75%的報(bào)酬直到設(shè)計(jì)復(fù)核結(jié)束,并在代碼復(fù)核之后再支付25%。也可以對(duì)其他提交的設(shè)計(jì)給予獎(jiǎng)賞、報(bào)酬和/或認(rèn)可。例如,提交第二和第三好設(shè)計(jì)的設(shè)計(jì)者也可以接收?qǐng)?bào)酬,在一些情況中所述報(bào)酬可少于獲勝設(shè)計(jì)者的報(bào)酬。也可以對(duì)創(chuàng)造性使用技術(shù)、提交唯一測(cè)試案例或其它這種提交給予報(bào)酬。在一些實(shí)施例中,軟件開(kāi)發(fā)者可競(jìng)爭(zhēng)分配給他們的設(shè)計(jì)、程序或其它提交的分?jǐn)?shù)。
在一些情況中,被公布的設(shè)計(jì)被分配一個(gè)難度等級(jí),或者外部實(shí)體、服務(wù)商400或設(shè)計(jì)的一些評(píng)估者相信產(chǎn)生滿足所選擇的設(shè)計(jì)要求的軟件程序或組件將有多難的一些類似的指示。類似于分配給所述規(guī)范的難度等級(jí),分配給一個(gè)設(shè)計(jì)的難度等級(jí)在一些情況中也可以化為在確信完成所述任務(wù)所需的工作量,和完成任務(wù)所分配的時(shí)間的因素。在一些實(shí)施例中,授予提交選擇的設(shè)計(jì)的設(shè)計(jì)者(例如,金錢(qián)、技術(shù)等級(jí)等)的認(rèn)可可部分基于與所述規(guī)范相關(guān)的難度等級(jí)來(lái)進(jìn)行調(diào)節(jié)。
在一些實(shí)施例中,除了對(duì)提交項(xiàng)進(jìn)行復(fù)核之外,設(shè)計(jì)復(fù)核部門(mén)可標(biāo)識(shí)在進(jìn)入開(kāi)發(fā)階段之前應(yīng)包括在設(shè)計(jì)中的對(duì)設(shè)計(jì)的有用修改。主復(fù)核部門(mén)成員對(duì)所述額外的要求進(jìn)行文檔編制,并將該信息傳送給提交所述設(shè)計(jì)的設(shè)計(jì)者404。在一個(gè)實(shí)施例中,主復(fù)核部門(mén)成員對(duì)來(lái)自復(fù)核部門(mén)的評(píng)論進(jìn)行匯總。開(kāi)發(fā)者404可更新設(shè)計(jì)并重新提交它以供設(shè)計(jì)復(fù)核部門(mén)進(jìn)行復(fù)核。該過(guò)程可重復(fù)直到主復(fù)核部門(mén)成員確信所述設(shè)計(jì)已經(jīng)滿足所有所需要求。
一旦設(shè)計(jì)復(fù)核部門(mén)確認(rèn)一項(xiàng)設(shè)計(jì)已經(jīng)充分解決了規(guī)范的要求,主復(fù)核部門(mén)成員通知服務(wù)商400、產(chǎn)品經(jīng)理、或外部實(shí)體這種設(shè)計(jì)已經(jīng)通過(guò)了設(shè)計(jì)復(fù)核過(guò)程。然后就可向開(kāi)發(fā)團(tuán)體407公布和/或發(fā)布設(shè)計(jì)(步驟422)以請(qǐng)求提交與所述設(shè)計(jì)一致的軟件程序。例如,服務(wù)商400可使得設(shè)計(jì)在網(wǎng)站上和/或在用于執(zhí)行的郵件發(fā)送清單上可用,并根據(jù)所述設(shè)計(jì)請(qǐng)求組件。
在一個(gè)可選擇實(shí)施例中,并且作為系統(tǒng)靈活性的示例,所述實(shí)體開(kāi)發(fā)軟件設(shè)計(jì)并將所述設(shè)計(jì)提供給服務(wù)商400作為直接到開(kāi)發(fā)過(guò)程的輸入。服務(wù)商400接收設(shè)計(jì)(步驟424)并選擇性的啟動(dòng)如上所述的復(fù)核過(guò)程以確定設(shè)計(jì)滿足結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220的標(biāo)準(zhǔn)。使用該方案,希望保持對(duì)軟件開(kāi)發(fā)過(guò)程(例如,體系結(jié)構(gòu)、平臺(tái)、編碼標(biāo)準(zhǔn)等)的設(shè)計(jì)階段的控制的實(shí)體可利用內(nèi)部或其它資源例如商業(yè)和系統(tǒng)分析員來(lái)開(kāi)發(fā)與他們的標(biāo)準(zhǔn)相適應(yīng)的設(shè)計(jì),然后利用分布的開(kāi)發(fā)團(tuán)體212來(lái)開(kāi)發(fā)最終產(chǎn)品。通常,該選擇性方案在機(jī)構(gòu)內(nèi)部保持軟件開(kāi)發(fā)過(guò)程的各設(shè)計(jì)方面,并“外購(gòu)”開(kāi)發(fā)過(guò)程的制造方面使得開(kāi)發(fā)域204能夠使用可重復(fù)的、結(jié)構(gòu)化開(kāi)發(fā)方法和開(kāi)發(fā)團(tuán)體212來(lái)開(kāi)發(fā)軟件程序。類似的,實(shí)體208可只要求開(kāi)發(fā)域204的服務(wù)來(lái)開(kāi)發(fā)軟件設(shè)計(jì),并隨后使用其他資源,例如內(nèi)部的程序員或境外開(kāi)發(fā)者來(lái)開(kāi)發(fā)代碼。
通過(guò)保持多個(gè)實(shí)體和到開(kāi)發(fā)過(guò)程之中和之外的出口點(diǎn)所提供的靈活性允許外部實(shí)體在逐情況或逐階段的基礎(chǔ)上判定是否從開(kāi)始到結(jié)束利用開(kāi)發(fā)域204,(即通過(guò)測(cè)試和支持的規(guī)范)或者只使用域204用于所述過(guò)程的特定階段(即,代碼開(kāi)發(fā)、規(guī)范開(kāi)發(fā)、軟件設(shè)計(jì)開(kāi)發(fā)、測(cè)試、支持等)。
仍參照?qǐng)D4,被選擇和經(jīng)認(rèn)可的設(shè)計(jì)被公布和提供給分布式程序員團(tuán)體212的成員。如上所述,通過(guò)所述規(guī)范,可將所述設(shè)計(jì)發(fā)送給整個(gè)團(tuán)體或只發(fā)送給選擇的團(tuán)體成員。在將設(shè)計(jì)發(fā)送給選定成員的形式下,選擇過(guò)程可基于任何適當(dāng)?shù)臉?biāo)準(zhǔn)或其組合,所述標(biāo)準(zhǔn)例如但不局限于編程競(jìng)賽中的過(guò)去的成績(jī)、先前提交的軟件程序的質(zhì)量、在設(shè)計(jì)開(kāi)發(fā)中的復(fù)雜情況,或通過(guò)服務(wù)商400、實(shí)體208和提交獲勝設(shè)計(jì)的設(shè)計(jì)者、其他設(shè)計(jì)者或團(tuán)體212的其他成員的特定請(qǐng)求。在一些實(shí)施例中,設(shè)計(jì)的傳送是可伴隨提交選擇軟件程序的開(kāi)發(fā)者和/或亞軍可獲得的獎(jiǎng)賞、報(bào)酬或和其他認(rèn)可的指示。在一些情況中,報(bào)酬的數(shù)量和/或類型可隨時(shí)間變化,或者隨參與者數(shù)量的增加或減少而變化。
每個(gè)開(kāi)發(fā)者404都開(kāi)發(fā)滿足選定設(shè)計(jì)要求的軟件代碼(步驟426、426’和426”),并當(dāng)完成時(shí),將代碼例如提交給服務(wù)商400或服務(wù)器。如上所述,開(kāi)發(fā)者404可使用各種各樣的編碼技術(shù)、語(yǔ)言和開(kāi)發(fā)環(huán)境來(lái)開(kāi)發(fā)軟件,只要代碼例如滿足設(shè)計(jì)規(guī)定的功能和體系結(jié)構(gòu)方面和結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220所描繪的質(zhì)量和依照句法的標(biāo)準(zhǔn)。在一些實(shí)施例中,開(kāi)發(fā)者404可使用通過(guò)通信服務(wù)器216提供的軟件開(kāi)發(fā)軟件以有助于開(kāi)發(fā)任務(wù)。因?yàn)殚_(kāi)發(fā)軟件224和開(kāi)發(fā)方法學(xué)220都被保持在開(kāi)發(fā)域204內(nèi),所以方法學(xué)220的許多編碼和質(zhì)量控制要求都可被構(gòu)建到軟件224中,這更有助于開(kāi)發(fā)者404以有效的方式開(kāi)發(fā)優(yōu)質(zhì)代碼。
為了確定哪個(gè)軟件程序?qū)⒈蛔罱K選作為將要遞交給實(shí)體208的程序,使用代碼復(fù)核過(guò)程(步驟428),所述代碼復(fù)核過(guò)程可以任何適當(dāng)?shù)姆绞竭M(jìn)行。在一些實(shí)施例中,代碼復(fù)核過(guò)程包括作為代碼復(fù)核部門(mén)起作用的一個(gè)或多個(gè)開(kāi)發(fā)者404對(duì)從軟件開(kāi)發(fā)者提交的軟件程序進(jìn)行復(fù)核。代碼復(fù)核部門(mén)優(yōu)選的具有較少數(shù)量的成員(例如,少于十),例如三個(gè)成員,但也可是任何數(shù)量。通常,代碼復(fù)核部門(mén)被形成只用于一個(gè)或較小數(shù)量的相關(guān)項(xiàng)目,例如三個(gè)項(xiàng)目,然后解散以允許所述成員參與其它的設(shè)計(jì)復(fù)核部門(mén)、代碼復(fù)核部門(mén),或者參與作為設(shè)計(jì)者和/或開(kāi)發(fā)者本身。在一些實(shí)施例中,復(fù)核部門(mén)可被形成用于延長(zhǎng)的時(shí)間,但人員配備的變化也可幫助保持質(zhì)量。
優(yōu)選的,通過(guò)服務(wù)商404和/或項(xiàng)目經(jīng)理、復(fù)核部門(mén)的成員和/或請(qǐng)求軟件程序的外部實(shí)體將代碼復(fù)核部門(mén)成員的一個(gè)成員選作為主代碼復(fù)核成員。在一些情況中,服務(wù)商400或服務(wù)商400的代表當(dāng)作主代碼部門(mén)成員。主代碼部門(mén)成員負(fù)責(zé)對(duì)所述部門(mén)的活動(dòng)的協(xié)調(diào)和管理。
在一個(gè)實(shí)施例中,通過(guò)代碼復(fù)核部門(mén)來(lái)判斷提交的軟件程序。在一些實(shí)施例中,主復(fù)核部門(mén)成員在代碼復(fù)核部門(mén)的其他成員復(fù)核代碼提交項(xiàng)之前對(duì)它們進(jìn)行篩選以允許代碼部門(mén)的剩余成員只判斷提交中的最好項(xiàng),例如滿足最低要求的那些提交項(xiàng)。在一些實(shí)施例中,所述篩選過(guò)程包括根據(jù)它們滿足在選定設(shè)計(jì)中所概述的形式要求(例如,提交的格式和元素)的程度來(lái)對(duì)提交記分。在一些實(shí)施例中,使用記分卡對(duì)分?jǐn)?shù)進(jìn)行文件編制,其可以是文檔、電子表格、在線表格、數(shù)據(jù)庫(kù)或其它電子文檔。
在一些實(shí)施例中,例如,關(guān)于軟件代碼,代碼復(fù)核員基于下列程度對(duì)代碼進(jìn)行記分(1)提交的代碼解決如在組件設(shè)計(jì)文檔中所詳述的功能性的程度;(2)提交的代碼正確的使用所有所需要的技術(shù)(例如,語(yǔ)言、所要求的組件等)和數(shù)據(jù)包的程度;(3)提交的代碼恰當(dāng)?shù)膶?shí)現(xiàn)所要求的算法的程度;(4)沒(méi)有使用額外的公共類、方法或變量,所提交的代碼已經(jīng)正確執(zhí)行(并未修改)如在所述設(shè)計(jì)中所定義的公共應(yīng)用程序接口(API)的程度。
關(guān)于源代碼,例如,篩選復(fù)核可確定下列中的任一個(gè)或全部;(1)所有公用方法是否被清楚的評(píng)論;(2)是否包括所要求的標(biāo)記(例如,“@author”,“@param”,“@return”,“@throws”和“@version”;(3)版權(quán)標(biāo)記是否被轉(zhuǎn)移(populated);(4)源代碼是否遵從用于Java語(yǔ)言的標(biāo)準(zhǔn)編碼規(guī)則,例如由Sun Microsystems所公開(kāi)的那些標(biāo)準(zhǔn)編碼規(guī)則;(5)是否使用4個(gè)空格縮進(jìn)來(lái)代替列表縮進(jìn);和(6)在類圖中發(fā)現(xiàn)的所有類、方法和變量定義在源代碼中是否被精確代表。代碼復(fù)核也可例如用于驗(yàn)證對(duì)于所述設(shè)計(jì)中的所有公用方法是否都存在單元測(cè)試案例,并且每個(gè)單元測(cè)試由測(cè)試程序正確地標(biāo)識(shí)。
關(guān)于類定義,例如,復(fù)核者可基于如在設(shè)計(jì)文檔(例如,包括修飾語(yǔ)、類型和命名注釋)中所定義的實(shí)現(xiàn)類的程度和是否實(shí)現(xiàn)定義的類來(lái)評(píng)價(jià)代碼。關(guān)于變量定義和方法定義,例如,復(fù)核者可確定如在設(shè)計(jì)文檔(例如,包括修飾語(yǔ)、類型和命名注釋)中所定義的執(zhí)行所有變量和方法的程度。關(guān)于關(guān)系,例如,復(fù)核者可確定所述實(shí)現(xiàn)適當(dāng)?shù)挠成漕愱P(guān)系的程度。
復(fù)核者可進(jìn)一步基于代碼檢查來(lái)評(píng)價(jià)代碼。例如,復(fù)核者可確定在代碼中所定義的對(duì)象類型對(duì)于計(jì)劃使用是最好的選擇的程度-例如是否應(yīng)該使用矢量類型而不是數(shù)組類型。復(fù)核者可確定存在任何不必要的循環(huán)的程序、或疏忽的對(duì)象例化或變量分配。
復(fù)核者還可檢查測(cè)試案例。關(guān)于測(cè)試案例,例如,復(fù)核者可確定(1)單元測(cè)試案例完全測(cè)試所有方法和構(gòu)成部分的程度;(2)單元測(cè)試案例適當(dāng)?shù)氖褂门渲煤筒鹦斗椒▉?lái)配置測(cè)試環(huán)境的程度;(3)在單元測(cè)試案例中使用的文件出現(xiàn)在指定目錄中的程度;(4)在完成測(cè)試之后,單元測(cè)試案例不會(huì)在文件系統(tǒng)上留下臨時(shí)文件的程度。
復(fù)核者可使用測(cè)試案例例如由開(kāi)發(fā)者404、其他開(kāi)發(fā)者、復(fù)核者、服務(wù)商400、實(shí)體208以及其他群體開(kāi)發(fā)的測(cè)試案例對(duì)代碼運(yùn)行測(cè)試。復(fù)核者甚至可進(jìn)一步通過(guò)實(shí)行精確性、失敗和重點(diǎn)測(cè)試來(lái)評(píng)價(jià)代碼。精確性測(cè)試對(duì)提供有效輸入時(shí)得到的最終輸出的精確性進(jìn)行測(cè)試。精確性測(cè)試也可用于證實(shí)配置數(shù)據(jù)。失敗測(cè)試對(duì)組件被提供有無(wú)效輸入例如壞數(shù)據(jù)和不正確的使用時(shí)的正確失敗行為進(jìn)行測(cè)試。重點(diǎn)測(cè)試對(duì)于大量操作的組件容量進(jìn)行測(cè)試,但測(cè)試此特性作為吞吐量的性能。在組件的評(píng)估中包括失敗的測(cè)試,例如作為分?jǐn)?shù)縮減(scorereduction)。然后復(fù)核者就可基于該評(píng)估對(duì)組件分配一個(gè)整體分?jǐn)?shù)。
在一個(gè)實(shí)施例中,主復(fù)核部門(mén)成員通知代碼復(fù)核部門(mén)一個(gè)或多個(gè)提交項(xiàng)已經(jīng)通過(guò)了初始篩選步驟(步驟430),然后代碼復(fù)核部門(mén)就可更詳細(xì)的評(píng)估所述程序提交項(xiàng)。在一些實(shí)施例中,代碼復(fù)核部門(mén)可基于在選定設(shè)計(jì)中被文件編制的設(shè)計(jì)要求來(lái)復(fù)核所述提交項(xiàng)。代碼復(fù)核部門(mén)然后就可根據(jù)評(píng)估的結(jié)果來(lái)對(duì)提交項(xiàng)進(jìn)行記分(步驟432)。在一些實(shí)施例中,使用記分卡來(lái)對(duì)分?jǐn)?shù)進(jìn)行文件編制,其可以是任何適當(dāng)?shù)难b置,例如文檔、電子表格、在線表格、數(shù)據(jù)庫(kù)或其它電子文檔。
在一些實(shí)施例中,來(lái)自主代碼復(fù)核部門(mén)成員和代碼復(fù)核部門(mén)其他成員的分?jǐn)?shù)和復(fù)核被匯總成一個(gè)最終的復(fù)核和分?jǐn)?shù)。在一些實(shí)施例中,匯總可包括對(duì)一個(gè)或多個(gè)文檔中包括的信息進(jìn)行編譯。這種匯總可通過(guò)服務(wù)商400、主代碼部門(mén)成員、代碼復(fù)核部門(mén)的其他成員來(lái)執(zhí)行,或者在一個(gè)典型實(shí)施例中,使用駐留在服務(wù)器104(圖1)上的基于計(jì)算機(jī)的系統(tǒng)來(lái)執(zhí)行匯總。在一些實(shí)施例中,服務(wù)商400或主復(fù)核部門(mén)成員解決代碼復(fù)核部門(mén)成員之間的不相符或不一致。
在一個(gè)實(shí)施例中,具有最高總分的軟件程序被選作為獲勝程序(步驟434),其將被遞送給外部實(shí)體208作為最終產(chǎn)品(步驟436)。在一些實(shí)施例中,獎(jiǎng)賞、報(bào)酬和/或認(rèn)可被給予提交獲勝程序的軟件開(kāi)發(fā)者。也可有用于其它提交的程序的獎(jiǎng)賞、報(bào)酬和/或認(rèn)可。例如,提交第二和第三好的程序的編程者也可接收?qǐng)?bào)酬,所述報(bào)酬在一些情況中可少于獲勝編程者的報(bào)酬。也可對(duì)創(chuàng)造性使用技術(shù)、提交唯一測(cè)試案例或其它這種提交給出報(bào)酬。在一些實(shí)施例中,軟件開(kāi)發(fā)者可對(duì)分配給他們的程序、測(cè)試案例或其它提交項(xiàng)的分?jǐn)?shù)進(jìn)行競(jìng)爭(zhēng)。
在一些實(shí)施例中,除了復(fù)核提交項(xiàng)之外,代碼復(fù)核部門(mén)可標(biāo)識(shí)在發(fā)布之前應(yīng)該包括在一個(gè)選定軟件程序中的對(duì)程序有用的修改。主代碼復(fù)核部門(mén)成員對(duì)附加要求進(jìn)行文件編制,并將該信息傳送給提交所述代碼的開(kāi)發(fā)者404。在一個(gè)實(shí)施例中,主代碼復(fù)核部門(mén)成員對(duì)來(lái)自復(fù)核部門(mén)的意見(jiàn)進(jìn)行匯總。開(kāi)發(fā)者404可更新所述程序并重新提交它以供代碼復(fù)核部門(mén)復(fù)核用。該過(guò)程可重復(fù)直到主復(fù)核部門(mén)成員確信所述程序已經(jīng)滿足所有所需的要求并滿足在結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220中規(guī)定的標(biāo)準(zhǔn)。
在一些實(shí)施例中,在已經(jīng)將軟件發(fā)送給一個(gè)或多個(gè)實(shí)體208之后,可以用增強(qiáng)性、發(fā)布后的程序缺陷修復(fù)(post-delivery bug fixes)、額外的功能性來(lái)更新軟件或者可對(duì)其進(jìn)行修改以在其它的計(jì)算環(huán)境或平臺(tái)中進(jìn)行操作。在這種情況中,域204對(duì)先前發(fā)布的軟件產(chǎn)品提供跟蹤和更新(步驟438),如在由Hughes于2003年4月7日申請(qǐng)的標(biāo)題為“Method and Systems for Software Development”的未決美國(guó)專利申請(qǐng)序列第10/408402號(hào)中所述,所述文件通過(guò)整體參考而被并入本文。
例如,在一個(gè)實(shí)施例中,一個(gè)實(shí)體委托開(kāi)發(fā)軟件組件,并在完成所述組件時(shí),將所述組件的版本1發(fā)布給實(shí)體208。隨后,第二實(shí)體208請(qǐng)求開(kāi)發(fā)一個(gè)執(zhí)行相同功能的類似組件,然而為了滿足第二實(shí)體的特定要求,需要對(duì)所述組件做出一些修改。修改例如是對(duì)組件進(jìn)行的改進(jìn)(例如,效率增加,較小的存儲(chǔ)器要求)、刪除(例如,不需要的步驟或特征)和添加(例如,贈(zèng)送的特征或功能)。修改的另一個(gè)例子是將所述組件整合成另一個(gè)組件(例如,更大的組件)。響應(yīng)對(duì)修改組件的請(qǐng)求,一個(gè)新版本的組件(例如,版本1.1)被開(kāi)發(fā)并將其發(fā)布給第二實(shí)體208。在一個(gè)實(shí)施例中,向第一實(shí)體208發(fā)送說(shuō)明一個(gè)更新版本的組件是可用的信息。在另外的實(shí)施例中,用于開(kāi)發(fā)新版本的組件的成本可在期望接收所述新版本的原始組件(版本1)的接受者以及啟動(dòng)新版本開(kāi)發(fā)的實(shí)體之間分擔(dān)。另外,在一些實(shí)施例中,要求開(kāi)發(fā)新版本的實(shí)體208被補(bǔ)償許可/銷售所述第二版組件的拷貝。
如上所述,在一些實(shí)施例中,開(kāi)發(fā)者404除了提交完整的軟件程序之外還提交一個(gè)或多個(gè)測(cè)試案例。測(cè)試案例的目的是提供程序相對(duì)于其得以運(yùn)行的樣本數(shù)據(jù)和期望輸出,并且可將所述程序的實(shí)際輸出與所述期望輸出進(jìn)行比較。通過(guò)提交多個(gè)測(cè)試案例,可獨(dú)立測(cè)試許多不同的方案,因此特定的處理錯(cuò)誤或疏忽可被識(shí)別出來(lái)。例如,計(jì)算用于貸款的分期付款表的程序可能需要例如利率、本金數(shù)量、支付范圍和支付頻率的輸入數(shù)據(jù)。每個(gè)數(shù)據(jù)元素都可能需要進(jìn)行檢查,使得空集、零、負(fù)數(shù)、小數(shù)、特殊字符等都被考慮并調(diào)用適當(dāng)?shù)腻e(cuò)誤檢查和信息。另外,應(yīng)該核實(shí)數(shù)學(xué)運(yùn)算,并且還應(yīng)核實(shí)極端的輸入值,例如長(zhǎng)支付周期、每日支付、非常大或非常小的本金數(shù)量和極小的利率。在一些版本中,可開(kāi)發(fā)一個(gè)測(cè)試案例來(lái)檢查這些案例中的每一個(gè),然而在其它版本中,可有益的為每種錯(cuò)誤類型提供單獨(dú)的測(cè)試案例。在某些實(shí)施例中,可將多個(gè)測(cè)試案例隨后并入到一個(gè)較大的測(cè)試程序(例如,腳本、命令解釋程序(shell)或其它高級(jí)程序)中并且共同或同時(shí)運(yùn)行。
通常,在開(kāi)發(fā)者進(jìn)行編碼時(shí)可鼓勵(lì)他們開(kāi)發(fā)測(cè)試案例,使得他們能夠考慮他們編碼時(shí)的邊界和錯(cuò)誤條件??捎幸娴氖褂糜梢粋€(gè)或多個(gè)或者全部其他提交者開(kāi)發(fā)的測(cè)試案例來(lái)測(cè)試每個(gè)提交的程序以覆蓋盡可能多的錯(cuò)誤條件。
參考圖5,在一個(gè)證實(shí)性實(shí)施例中,每個(gè)開(kāi)發(fā)者404、404’和404”都響應(yīng)傳送的軟件設(shè)計(jì)和/或上面涉及的規(guī)范分別對(duì)開(kāi)發(fā)域204提交軟件程序502、502’和502”。除了提交程序之外,開(kāi)發(fā)者404還提交一個(gè)或多個(gè)測(cè)試案例506、506’和506”。例如,當(dāng)開(kāi)發(fā)者1404提交程序1502時(shí),她還提交測(cè)試案例1A和測(cè)試案例1B,統(tǒng)稱為506。開(kāi)發(fā)者2404’和開(kāi)發(fā)者3404’也這么做,使得所有這三個(gè)開(kāi)發(fā)者404都完成他們的提交之后,開(kāi)發(fā)域204包括一個(gè)提交池508,其包括三個(gè)提交的程序和六個(gè)測(cè)試案例。即使可能開(kāi)發(fā)者1404相對(duì)于她的程序502運(yùn)行她所提交的測(cè)試案例1A和1B506,還可能出現(xiàn)的情況是分別由開(kāi)發(fā)者2404’和開(kāi)發(fā)者3404”提交的測(cè)試案例506’和506”會(huì)致力于由開(kāi)發(fā)者1404沒(méi)有預(yù)期的案例或數(shù)據(jù)。因此,在試圖識(shí)別每個(gè)提交的程序的所有潛在錯(cuò)誤過(guò)程中可有利的相對(duì)于每個(gè)提交的程序運(yùn)行由所有開(kāi)發(fā)者提交的每個(gè)測(cè)試案例。在一些版本中,可從提交池508中排除提交的測(cè)試案例的一個(gè)子集,或者不使用它們,因?yàn)樗鼈兪侵貜?fù)的、不會(huì)測(cè)試所需的特征或者是不正確的。如果這么做,可將提交池508中的測(cè)試案例的一個(gè)子集用于測(cè)試提交的程序。因?yàn)槌绦虮桓訃?yán)格的測(cè)試(即,使用由多個(gè)開(kāi)發(fā)者提交的一套測(cè)試案例),所以最終得到的程序的質(zhì)量可能高于僅通過(guò)開(kāi)發(fā)選擇程序的那些開(kāi)發(fā)者測(cè)試的程序的質(zhì)量。
參照?qǐng)D6,提交池508中的測(cè)試案例被應(yīng)用于提交程序502、502’、502”。在一些情況中,池508中的所有測(cè)試案例被應(yīng)用于每個(gè)提交的程序,而在一些版本中只使用提交測(cè)試案例的一個(gè)子集。在一些實(shí)施例中,通過(guò)相對(duì)于它運(yùn)行第一測(cè)試案例而可從爭(zhēng)用排除某些程序,使得隨后的測(cè)試案例是不需要的。在一些版本中,測(cè)試案例對(duì)一個(gè)程序的每次應(yīng)用都會(huì)導(dǎo)致一個(gè)分?jǐn)?shù)604。然后就可將對(duì)于測(cè)試案例對(duì)提交程序的每次應(yīng)用的分?jǐn)?shù)604列成表并匯總成一個(gè)對(duì)于那個(gè)特定程序的組合的或整體的分?jǐn)?shù)。一些測(cè)試案例具有比其他測(cè)試案例高或低的權(quán)重,使得對(duì)于一個(gè)特定測(cè)試案例的分?jǐn)?shù)可更有效的表示程序的整體質(zhì)量,或者結(jié)果更有意義。在其它情況中,分?jǐn)?shù)可以是二元的,-即通過(guò)的測(cè)試接收分?jǐn)?shù)“1”,而失敗的測(cè)試接收分?jǐn)?shù)“0”。在一些實(shí)施例中,列表和匯總可在服務(wù)器104上自動(dòng)進(jìn)行。
在一些實(shí)施例中,提交設(shè)計(jì)和/或開(kāi)發(fā)代碼的開(kāi)發(fā)者按照對(duì)他們提交項(xiàng)的分?jǐn)?shù)來(lái)進(jìn)行定級(jí)。根據(jù)提交之前每個(gè)開(kāi)發(fā)者的等級(jí)、被提交的設(shè)計(jì)或程序的分配難度等級(jí)和產(chǎn)生提交的其他開(kāi)發(fā)者的數(shù)量來(lái)計(jì)算等級(jí)。應(yīng)該理解提交可以是一個(gè)設(shè)計(jì)、程序或其它計(jì)算機(jī)軟件資產(chǎn),或者在一些情況中為許多不同的資產(chǎn)。根據(jù)提交之前的每個(gè)開(kāi)發(fā)者的等級(jí)和一個(gè)恒定標(biāo)準(zhǔn)等級(jí)(例如,1200)來(lái)對(duì)每個(gè)開(kāi)發(fā)者計(jì)算一個(gè)技能等級(jí),和根據(jù)它們的變動(dòng)性(volatility)和標(biāo)準(zhǔn)評(píng)分來(lái)對(duì)每個(gè)開(kāi)發(fā)者計(jì)算一個(gè)偏差。
通過(guò)評(píng)估開(kāi)發(fā)者的提交項(xiàng)對(duì)其他開(kāi)發(fā)者的提交項(xiàng)的期望分?jǐn)?shù)并對(duì)每個(gè)開(kāi)發(fā)者的期望成績(jī)進(jìn)行等級(jí)評(píng)定來(lái)計(jì)算提交設(shè)計(jì)或程序的那個(gè)開(kāi)發(fā)者的期望成績(jī)。復(fù)核者可通過(guò)使用任何數(shù)量的方法(包括,但不限于上述的那些方法)來(lái)給提交項(xiàng)記分。
根據(jù)提交軟件的分?jǐn)?shù)和來(lái)自其他開(kāi)發(fā)者的提交項(xiàng)的分?jǐn)?shù)(例如,是否是相同的程序或者一個(gè)或多個(gè)具有類似的難度等級(jí)的其他程序),對(duì)每個(gè)開(kāi)發(fā)者進(jìn)行等級(jí)評(píng)定,并根據(jù)他們對(duì)當(dāng)前提交項(xiàng)的等級(jí)和其他開(kāi)發(fā)者的等級(jí)來(lái)計(jì)算實(shí)際的成績(jī)。在一些情況中,來(lái)其其他開(kāi)發(fā)者的供比較的提交項(xiàng)用于相同的程序。在一些情況中,來(lái)自其他開(kāi)發(fā)者的提交項(xiàng)是具有類似難度或范圍的提交項(xiàng)。
還可從開(kāi)發(fā)者的數(shù)量、每個(gè)開(kāi)發(fā)者在提交設(shè)計(jì)或程序之前的等級(jí)、開(kāi)發(fā)者在提交之前的平均等級(jí)和在提交之前每個(gè)開(kāi)發(fā)者的等級(jí)的變動(dòng)性來(lái)計(jì)算競(jìng)爭(zhēng)因數(shù)。
那么每個(gè)開(kāi)發(fā)者就可使用他們舊的等級(jí)、競(jìng)爭(zhēng)因數(shù)和他們的實(shí)際分?jǐn)?shù)和期望分?jǐn)?shù)之間的差異來(lái)評(píng)定他們的成績(jī)。該成績(jī)?cè)u(píng)定可根據(jù)先前從開(kāi)發(fā)者接收的提交項(xiàng)數(shù)量進(jìn)行加權(quán),并且可將其用于計(jì)算開(kāi)發(fā)者的新的等級(jí)和變動(dòng)性。在一些情況中,開(kāi)發(fā)者成績(jī)對(duì)一個(gè)提交項(xiàng)的影響可被包覆(capped)使得任何一個(gè)提交項(xiàng)都不會(huì)對(duì)開(kāi)發(fā)者的等級(jí)具有極度重要的影響。在一些情況中,開(kāi)發(fā)者的分?jǐn)?shù)可被最大包覆,使得具有最大可能的等級(jí)。通過(guò)估計(jì)每個(gè)開(kāi)發(fā)者對(duì)其他開(kāi)發(fā)者的期望成績(jī)并對(duì)每個(gè)參與者的期望成績(jī)進(jìn)行等級(jí)排序排序來(lái)計(jì)算每個(gè)開(kāi)發(fā)者的期望成績(jī)??赏ㄟ^(guò)服務(wù)商400、實(shí)體208、復(fù)核部門(mén)成員或自動(dòng)使用例如駐留在服務(wù)器104上的軟件使用任何數(shù)量的方法對(duì)提交項(xiàng)和參與者進(jìn)行記分。
在一個(gè)實(shí)施例中,授予的點(diǎn)數(shù)取決于完成提交的難度。服務(wù)器還可根據(jù)與服務(wù)器提供設(shè)計(jì)的時(shí)間相比的服務(wù)器接收開(kāi)發(fā)者的提交項(xiàng)的時(shí)間來(lái)調(diào)節(jié)授予開(kāi)發(fā)者的點(diǎn)值。在一個(gè)實(shí)施例中,授予一個(gè)開(kāi)發(fā)者的總點(diǎn)數(shù)如等式1所示授予的總點(diǎn)數(shù)=MP*(((.7*TT2))/(10*PT2+TT2)) 等式1
在等式1中,PT是開(kāi)發(fā)者開(kāi)發(fā)提交項(xiàng)(即,產(chǎn)生計(jì)算機(jī)代碼)所花費(fèi)的時(shí)間,TT是用于對(duì)所有提交項(xiàng)進(jìn)行編碼所分配的總時(shí)間,MP是對(duì)于開(kāi)發(fā)提交項(xiàng)可獲得的最大點(diǎn)。在一個(gè)實(shí)施例中,可獲得的最大點(diǎn)數(shù)是對(duì)于開(kāi)發(fā)者實(shí)際上不可獲得的服務(wù)器的參考系。更加具體的,對(duì)于被授予最大點(diǎn)數(shù)的開(kāi)發(fā)者來(lái)說(shuō),開(kāi)發(fā)者應(yīng)該必須幾乎花費(fèi)零秒來(lái)讀取設(shè)計(jì)、開(kāi)發(fā)他們的提交項(xiàng)和將它提交給服務(wù)器。例如,如果有一個(gè)設(shè)計(jì)被分配了三小時(shí),并且花費(fèi)開(kāi)發(fā)者1個(gè)小時(shí)對(duì)該問(wèn)題進(jìn)行編碼,那么如果代碼正確執(zhí)行,則TT=180、PT=60和將被授予近似63%的總點(diǎn)數(shù)MP。
在一個(gè)實(shí)施例中,如果提交項(xiàng)通過(guò)所有測(cè)試數(shù)據(jù)都能正確執(zhí)行,則開(kāi)發(fā)者接收對(duì)于所述提交項(xiàng)的該點(diǎn)數(shù)(例如,可獲得總數(shù)的63%),而如果提交項(xiàng)使用所有測(cè)試數(shù)據(jù)并不能正確執(zhí)行,則開(kāi)發(fā)者沒(méi)有接收的點(diǎn)數(shù)。在其它實(shí)施例中,對(duì)于部分正確的提交項(xiàng)給予部分信譽(yù)。例如,在一個(gè)實(shí)施例中,提交項(xiàng)根據(jù)測(cè)試數(shù)據(jù)的百分比來(lái)接收點(diǎn)數(shù)。在另一個(gè)實(shí)施例中,根據(jù)提交項(xiàng)正確執(zhí)行的測(cè)試數(shù)據(jù)的百分比對(duì)接收的點(diǎn)數(shù)進(jìn)行換算。在一些實(shí)施例中,例如在競(jìng)爭(zhēng)或由多個(gè)回合構(gòu)成的比賽中,服務(wù)器對(duì)于每個(gè)回合都跟蹤授予每個(gè)開(kāi)發(fā)者的點(diǎn)。服務(wù)器還可對(duì)每個(gè)開(kāi)發(fā)者計(jì)算運(yùn)行總數(shù),假定在每個(gè)完整的競(jìng)爭(zhēng)回合中都授予點(diǎn)??蓪⒃撨\(yùn)行總數(shù)用于排除低分?jǐn)?shù)開(kāi)發(fā)者。
在一個(gè)實(shí)施例中,在完成一個(gè)或多個(gè)競(jìng)爭(zhēng)回合之后,服務(wù)器可對(duì)開(kāi)發(fā)者分配一個(gè)等級(jí)。典型的在競(jìng)賽或比賽完成時(shí)進(jìn)行等級(jí)的分配。例如,競(jìng)爭(zhēng)可由一個(gè)回合構(gòu)成,或者可由多個(gè)回合構(gòu)成,例如以比賽的形式。因此,在競(jìng)爭(zhēng)由問(wèn)題發(fā)布、開(kāi)發(fā)、復(fù)核和測(cè)試步驟的一次反復(fù)或者一個(gè)以上的回合組成的實(shí)施例中,在對(duì)每個(gè)開(kāi)發(fā)者授予總點(diǎn)數(shù)之后,服務(wù)器對(duì)每個(gè)開(kāi)發(fā)者分配一個(gè)等級(jí)。在競(jìng)爭(zhēng)包括多個(gè)回合(例如,比賽)的一個(gè)實(shí)施例中,在開(kāi)發(fā)者完成比賽之后,服務(wù)器對(duì)每個(gè)開(kāi)發(fā)者分配一個(gè)等級(jí)。
所述等級(jí)提供了可用于以圖表示開(kāi)發(fā)者的技能、知識(shí)和能力的量度。如下面更加詳細(xì)描述的,在一個(gè)實(shí)施例中服務(wù)器使開(kāi)發(fā)者的等級(jí)以在競(jìng)賽(例如,具有一個(gè)或多個(gè)回合)期間授予開(kāi)發(fā)者的總點(diǎn)數(shù)為基礎(chǔ)。所述等級(jí)可以是分?jǐn)?shù)、級(jí)別或任何其它類型的定級(jí)技術(shù)。雖然參照計(jì)算機(jī)代碼的開(kāi)發(fā)和提交進(jìn)行了說(shuō)明,這種方法也可應(yīng)用于對(duì)軟件的開(kāi)發(fā)或硬件設(shè)計(jì)、數(shù)據(jù)模型、應(yīng)用程序、組件和作為使用上述的方法學(xué)的結(jié)果產(chǎn)生的其它工作產(chǎn)品進(jìn)行定級(jí)。
在一個(gè)實(shí)施例中,外部實(shí)體208致力于接收開(kāi)發(fā)的設(shè)計(jì)或代碼,以及獲得開(kāi)發(fā)者的等級(jí),并在一些情況中只接收等級(jí)。例如,外部實(shí)體208可請(qǐng)求開(kāi)發(fā)者加入開(kāi)發(fā)過(guò)程,以便對(duì)開(kāi)發(fā)者進(jìn)行定級(jí),并且可對(duì)他們的技能進(jìn)行客觀的評(píng)估以用于更大的值的將來(lái)的項(xiàng)目,或者確定哪個(gè)開(kāi)發(fā)者是更熟練的。另外,請(qǐng)求者可能對(duì)開(kāi)發(fā)的設(shè)計(jì)或代碼具有一定的興趣,并且可能對(duì)將開(kāi)發(fā)的智力財(cái)產(chǎn)用于其商業(yè)或其它方面產(chǎn)生一定的興趣。
可極有益的使用較高定級(jí)的人員、使用上述的過(guò)程,作為設(shè)計(jì)復(fù)核過(guò)程中的設(shè)計(jì)復(fù)核員和/或代碼復(fù)核過(guò)程中的代碼復(fù)核員。實(shí)行代碼復(fù)核的一個(gè)傳統(tǒng)問(wèn)題是復(fù)核人員的能力未被建立。通過(guò)技術(shù)不熟練的開(kāi)發(fā)者進(jìn)行的復(fù)核可導(dǎo)致不適當(dāng)?shù)膹?fù)核。通過(guò)使用所述過(guò)程僅選擇具有充分熟練技能的開(kāi)發(fā)者(如通過(guò)所述過(guò)程確定的)作為復(fù)核人員,所述過(guò)程本身會(huì)保證其成功。
在一個(gè)實(shí)施例中,由一個(gè)組織內(nèi)的軟件開(kāi)發(fā)團(tuán)體來(lái)采用該軟件開(kāi)發(fā)過(guò)程。由所述團(tuán)體執(zhí)行的開(kāi)發(fā)通過(guò)使用該過(guò)程來(lái)實(shí)行。所述團(tuán)體中的每個(gè)開(kāi)發(fā)者具有一個(gè)等級(jí),并且開(kāi)發(fā)者進(jìn)行工作以改進(jìn)和/或保持他們的等級(jí)。具有較高等級(jí)的開(kāi)發(fā)者可參與復(fù)核(例如,設(shè)計(jì)復(fù)核過(guò)程或代碼復(fù)核過(guò)程)。在一個(gè)實(shí)現(xiàn)過(guò)程中,開(kāi)發(fā)者接收額外的利益和/或補(bǔ)償用于獲得較高的等級(jí)。類似的,開(kāi)發(fā)者可接收額外的利益和/或補(bǔ)償用于復(fù)核過(guò)程中的這種參與。該示例中的請(qǐng)求者是直接負(fù)責(zé)軟件開(kāi)發(fā)的產(chǎn)品或程序經(jīng)理。
在另一個(gè)實(shí)現(xiàn)過(guò)程中,外部的組織(例如,顧問(wèn))可使用上述的系統(tǒng)和方法來(lái)對(duì)一個(gè)開(kāi)發(fā)團(tuán)體的開(kāi)發(fā)能力進(jìn)行評(píng)估和定級(jí)。以這種方式,所述顧問(wèn)就可依靠他們本身而且依靠與已經(jīng)加入或正在加入該系統(tǒng)的其他組織進(jìn)行交往的其他開(kāi)發(fā)者來(lái)對(duì)開(kāi)發(fā)者進(jìn)行定級(jí)。評(píng)估者提供評(píng)估服務(wù)并如上所述的進(jìn)行匯報(bào)。該方案的一個(gè)益處是如果復(fù)核者私人不認(rèn)識(shí)開(kāi)發(fā)者,智力財(cái)產(chǎn)的評(píng)分更不可能發(fā)生偏差,并且將任何一個(gè)開(kāi)發(fā)者的技能與大量開(kāi)發(fā)者進(jìn)行比較而可對(duì)那個(gè)開(kāi)發(fā)者技能等級(jí)關(guān)于他或她等同的人提供一個(gè)更加精確的表述。
參照?qǐng)D7,服務(wù)器104可包括多個(gè)便于軟件規(guī)范、設(shè)計(jì)和程序的傳送和開(kāi)發(fā)的模塊和子系統(tǒng)。通信服務(wù)器704的一個(gè)例子是便于在如上所述的網(wǎng)絡(luò)112上進(jìn)行HTTP/HTTPS和其它類似網(wǎng)絡(luò)通信的網(wǎng)頁(yè)服務(wù)器。通信服務(wù)器704包括便于在分布的程序員團(tuán)體212、外部實(shí)體208、服務(wù)商400和復(fù)核部門(mén)成員(通常稱作“用戶”)之間進(jìn)行通信的工具。通信工具的例子包括,但不局限于,能夠在開(kāi)發(fā)者404之間進(jìn)行實(shí)時(shí)通信(例如,聊天)的模塊、新聞組、在線會(huì)議和文檔協(xié)作工具。服務(wù)商400和/或外部實(shí)體208還可使用通信服務(wù)器704來(lái)公布設(shè)計(jì)或規(guī)范以將其發(fā)布給分布程序員團(tuán)體212。
另外,服務(wù)器104例如還包括便于軟件開(kāi)發(fā)域204和設(shè)計(jì)和開(kāi)發(fā)過(guò)程的軟件開(kāi)發(fā)環(huán)境702,和支持域204的子系統(tǒng)和模塊。例如,服務(wù)器104可包括開(kāi)發(fā)公布子系統(tǒng)708、管理子系統(tǒng)712、復(fù)核部門(mén)子系統(tǒng)7014、測(cè)試子系統(tǒng)716、記分子系統(tǒng)720、方法學(xué)數(shù)據(jù)庫(kù)724和發(fā)布子系統(tǒng)728。
在一個(gè)實(shí)施例中,開(kāi)發(fā)公布子系統(tǒng)708允許系統(tǒng)的用戶公布規(guī)范、提交設(shè)計(jì)、公布選擇的設(shè)計(jì)、提交軟件程序和測(cè)試案例和公布用于發(fā)布的選擇軟件程序。公布子系統(tǒng)708根據(jù)其任務(wù)來(lái)識(shí)別用戶,和根據(jù)個(gè)體安全性和訪問(wèn)權(quán)限確定那些功能可以被訪問(wèn)、項(xiàng)目當(dāng)前所處的開(kāi)發(fā)階段等。例如,如果一個(gè)特定的項(xiàng)目正處于設(shè)計(jì)開(kāi)發(fā)階段,則公布子系統(tǒng)708可確定發(fā)起所述項(xiàng)目的外部實(shí)體有權(quán)對(duì)規(guī)范進(jìn)行讀/寫(xiě)訪問(wèn),并且如果需要能夠重新公布一個(gè)更新的規(guī)范。服務(wù)商400可以有權(quán)對(duì)規(guī)范進(jìn)行讀取訪問(wèn),以及訪問(wèn)歸因于他們可以支持的其他外部實(shí)體。在一些實(shí)施例中,整個(gè)分布的程序員團(tuán)體可能查看當(dāng)前所有未決的規(guī)范,然而公布子系統(tǒng)可將完整讀取訪問(wèn)僅限制于滿足如上所述的一個(gè)或多個(gè)技能或定級(jí)標(biāo)準(zhǔn)的那些開(kāi)發(fā)者。一旦提交了設(shè)計(jì),就可將對(duì)提交設(shè)計(jì)的訪問(wèn)進(jìn)一步僅限制于復(fù)核部門(mén)成員,或者在一些情況中限制于所述過(guò)程中的其他參與者。
開(kāi)發(fā)公布子系統(tǒng)708還允許服務(wù)器104或其他參與者與可能的開(kāi)發(fā)者進(jìn)行通信以促進(jìn)開(kāi)發(fā)項(xiàng)目和使參與開(kāi)發(fā)過(guò)程的程序員團(tuán)體發(fā)展。在一個(gè)實(shí)施例中,開(kāi)發(fā)公布子系統(tǒng)708對(duì)可能的開(kāi)發(fā)者顯示廣告。在一個(gè)實(shí)施例中,廣告使用文本、圖形、視頻和/或聲音來(lái)說(shuō)明項(xiàng)目。通信技術(shù)的例子包括,但不局限于在服務(wù)器網(wǎng)站上公布這些廣告、顯示關(guān)于項(xiàng)目的統(tǒng)計(jì)數(shù)據(jù)(例如,支付給開(kāi)發(fā)者的計(jì)劃特許權(quán)使用費(fèi)、參與該項(xiàng)目的開(kāi)發(fā)者、每周可用的開(kāi)發(fā)時(shí)間)。此外,在一個(gè)實(shí)施例中,開(kāi)發(fā)公布子系統(tǒng)708接收與開(kāi)發(fā)項(xiàng)目相關(guān)的詢問(wèn)。在另外的實(shí)施例中,開(kāi)發(fā)公布子系統(tǒng)708對(duì)特殊的開(kāi)發(fā)者提出開(kāi)發(fā)機(jī)會(huì)。開(kāi)發(fā)公布子系統(tǒng)708可例如分析分布團(tuán)體的每個(gè)成員的等級(jí)、對(duì)先前開(kāi)發(fā)的項(xiàng)目的先前貢獻(xiàn)、對(duì)先前組件開(kāi)發(fā)項(xiàng)目的貢獻(xiàn)質(zhì)量(例如,基于如上所述的對(duì)每個(gè)開(kāi)發(fā)者的提交項(xiàng)所給出的分?jǐn)?shù))和開(kāi)發(fā)者進(jìn)行參與的當(dāng)前可用性。
服務(wù)器104還包括一個(gè)管理子系統(tǒng)712。管理子系統(tǒng)712是使用軟件開(kāi)發(fā)環(huán)境204跟蹤設(shè)計(jì)和開(kāi)發(fā)項(xiàng)目的過(guò)程的模塊。管理子系統(tǒng)712還便于系統(tǒng)的新用戶進(jìn)行注冊(cè),并根據(jù)其對(duì)各個(gè)項(xiàng)目所具有的角色對(duì)用戶指定適當(dāng)?shù)陌踩院驮L問(wèn)權(quán)限。在一些形態(tài)中,管理子系統(tǒng)712還可編輯和跟蹤軟件開(kāi)發(fā)環(huán)境204和系統(tǒng)用戶的操作統(tǒng)計(jì)。例如,為了確定將要授予提交獲勝設(shè)計(jì)的開(kāi)發(fā)者的適當(dāng)補(bǔ)償,管理子系統(tǒng)712可復(fù)核先前完成的項(xiàng)目并指定一個(gè)類似的現(xiàn)金獎(jiǎng)賞。類似的,在公布設(shè)計(jì)或程序的難度等級(jí)是非常高的情況下,管理子系統(tǒng)712可復(fù)核關(guān)于個(gè)體程序員的信息以確定歷史上關(guān)于類似項(xiàng)目執(zhí)行良好的那些開(kāi)發(fā)者。另外,管理子系統(tǒng)712可用于分析從外部實(shí)體提供的規(guī)范開(kāi)發(fā)操作程序所需的整體吞吐時(shí)間。這可幫助系統(tǒng)用戶設(shè)置適當(dāng)?shù)倪f送日期和與新項(xiàng)目相關(guān)的成本。
服務(wù)器104還包括復(fù)核部門(mén)子系統(tǒng)714。復(fù)核部門(mén)子系統(tǒng)714允許復(fù)核部門(mén)成員、外部實(shí)體、服務(wù)商和在某些情況下的分布團(tuán)體中的開(kāi)發(fā)者對(duì)來(lái)自其他開(kāi)發(fā)者的提交項(xiàng)進(jìn)行復(fù)核,如上所述。在一個(gè)實(shí)施例中,通信服務(wù)器704、開(kāi)發(fā)公布子系統(tǒng)708、管理子系統(tǒng)712、復(fù)核部門(mén)子系統(tǒng)714、測(cè)試子系統(tǒng)、記分子系統(tǒng)和方法學(xué)數(shù)據(jù)庫(kù)都駐留在服務(wù)器104上。可選擇的,軟件開(kāi)發(fā)環(huán)境204的這些組件可駐留在其它服務(wù)器或遠(yuǎn)程設(shè)備上。
服務(wù)器104另外還包括一個(gè)測(cè)試子系統(tǒng)716。測(cè)試子系統(tǒng)716允許對(duì)提交的程序、應(yīng)用程序和/或組件進(jìn)行測(cè)試。在一個(gè)實(shí)施例中,復(fù)核部門(mén)、服務(wù)商400和/或外部實(shí)體208使用測(cè)試服務(wù)器708來(lái)復(fù)核、評(píng)估、篩選和測(cè)試提交的設(shè)計(jì)和軟件程序。測(cè)試子系統(tǒng)716還可如上所述的相對(duì)于一些或全部提交程序執(zhí)行開(kāi)發(fā)者404開(kāi)發(fā)和提交的測(cè)試案例。另外,測(cè)試子系統(tǒng)716可對(duì)組件或應(yīng)用程序執(zhí)行自動(dòng)的測(cè)試,例如用于驗(yàn)證和/或測(cè)量存儲(chǔ)器使用率、線程使用率、機(jī)器統(tǒng)計(jì)數(shù)據(jù)(例如I/O使用率和處理器載荷)。另外,測(cè)試子系統(tǒng)716可通過(guò)性能、設(shè)計(jì)和/或功能性來(lái)評(píng)價(jià)組件。測(cè)試子系統(tǒng)716可以是用于同時(shí)測(cè)試多個(gè)程序的測(cè)試裝具模塊(harness)。
服務(wù)器104還包括一記分子系統(tǒng)720。在一個(gè)實(shí)施例中,記分子系統(tǒng)720根據(jù)測(cè)試子系統(tǒng)716的結(jié)果對(duì)提交項(xiàng)計(jì)算分?jǐn)?shù),并在一些實(shí)施例中,對(duì)在一個(gè)或多個(gè)編碼競(jìng)賽、先前開(kāi)發(fā)提交項(xiàng)或二者中的每個(gè)參與者的評(píng)分進(jìn)行定級(jí)。在其它實(shí)施例中,記分子系統(tǒng)720可根據(jù)其對(duì)項(xiàng)目的貢獻(xiàn)來(lái)計(jì)算開(kāi)發(fā)者的等級(jí)。
服務(wù)器104還包括一個(gè)方法學(xué)數(shù)據(jù)庫(kù)724。方法學(xué)數(shù)據(jù)庫(kù)724存儲(chǔ)與結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)220相關(guān)的數(shù)據(jù)。在一個(gè)實(shí)施例中,方法學(xué)220可規(guī)定從開(kāi)發(fā)項(xiàng)目的一個(gè)階段過(guò)渡到下一個(gè)所需的特定輸入和輸出。例如,方法學(xué)200可指示為了完成項(xiàng)目的規(guī)范階段并且是設(shè)計(jì)階段,必須完成項(xiàng)目的檢查表。另外,方法學(xué)數(shù)據(jù)庫(kù)724可存儲(chǔ)能夠用于將來(lái)項(xiàng)目的模板的樣本文檔、設(shè)計(jì)和代碼示例,并由此對(duì)新項(xiàng)目利用標(biāo)準(zhǔn)化的、可重復(fù)的和可預(yù)測(cè)的處理框架。該標(biāo)準(zhǔn)化減小了與從事新的軟件開(kāi)發(fā)項(xiàng)目相關(guān)的風(fēng)險(xiǎn),縮短了新開(kāi)發(fā)項(xiàng)目的整體持續(xù)時(shí)間和提高了最終產(chǎn)品的質(zhì)量和可靠性。
服務(wù)器104還包括發(fā)布子系統(tǒng)728。發(fā)布子系統(tǒng)728可跟蹤和存儲(chǔ)與已經(jīng)使用域204產(chǎn)生的軟件產(chǎn)品(例如,規(guī)范、設(shè)計(jì)、開(kāi)發(fā)的程序)相關(guān)的數(shù)據(jù)。在一個(gè)實(shí)施例中,發(fā)布子系統(tǒng)728包括有關(guān)請(qǐng)求產(chǎn)品的實(shí)體208、域204的入口點(diǎn)和出口點(diǎn)、有效日期例如請(qǐng)求日期和遞交日期、參與產(chǎn)品開(kāi)發(fā)的開(kāi)發(fā)者的姓名和/或昵稱的說(shuō)明性信息。發(fā)布子系統(tǒng)728還可包括關(guān)于產(chǎn)品的詳細(xì)功能信息,例如用于開(kāi)發(fā)產(chǎn)品的技術(shù)、受支持計(jì)算環(huán)境以及其它信息。在一些實(shí)施例中,可對(duì)先前發(fā)布的軟件產(chǎn)品進(jìn)行更新和修補(bǔ),如上所述。在這種情況中,發(fā)布子系統(tǒng)728可方便的識(shí)別具有較舊版本產(chǎn)品的實(shí)體208,隨后在可應(yīng)用的情況下傳送和發(fā)布更新的版本。在一些情況中,發(fā)布子系統(tǒng)728還可用作源代碼管理系統(tǒng),由此允許先前開(kāi)發(fā)的軟件產(chǎn)品的各種版本分支成具有共同起源的不同軟件產(chǎn)品。
雖然上面說(shuō)明為獨(dú)立的子系統(tǒng)和模塊,但這只是用于典型的目的,并且這些子系統(tǒng)和模塊可選擇的結(jié)合到一個(gè)或多個(gè)模塊或子系統(tǒng)中。另外,上述的一個(gè)或多個(gè)子系統(tǒng)也可與其他模塊遠(yuǎn)程設(shè)置(例如,在服務(wù)器組中的另一個(gè)服務(wù)器104上執(zhí)行)。
雖然此處已經(jīng)參照軟件進(jìn)行了說(shuō)明并在關(guān)于軟件組件執(zhí)行時(shí)可使用,但合作開(kāi)發(fā)的產(chǎn)品可以是任何種類的體現(xiàn)知識(shí)產(chǎn)權(quán)的有形或無(wú)形對(duì)象。作為非限制示例,所述技術(shù)可用于計(jì)算機(jī)硬件和電子設(shè)計(jì),或其它設(shè)計(jì),例如架構(gòu)、建筑或景觀設(shè)計(jì)??墒褂盟黾夹g(shù)的其它非限制示例包括所有種類的寫(xiě)入文檔和內(nèi)容的開(kāi)發(fā),例如文檔編制和論文或期刊文章(不管是在線的還是紙式的)、調(diào)查論文、原稿、多媒體內(nèi)容、法律文獻(xiàn)以及更多。
權(quán)利要求
1.一種用于開(kāi)發(fā)軟件程序的計(jì)算機(jī)化方法,所述方法包括將用于軟件程序設(shè)計(jì)的規(guī)范傳送給第一多個(gè)開(kāi)發(fā)者;響應(yīng)傳送的規(guī)范,從所述第一多個(gè)軟件開(kāi)發(fā)者的子集中的每一個(gè)接收用于軟件程序的設(shè)計(jì);推動(dòng)設(shè)計(jì)復(fù)核過(guò)程以對(duì)每個(gè)接收的設(shè)計(jì)進(jìn)行記分;至少部分的基于在設(shè)計(jì)復(fù)核過(guò)程中的其分?jǐn)?shù)從接收的設(shè)計(jì)中選擇一個(gè)設(shè)計(jì);將選擇的設(shè)計(jì)傳送給第二多個(gè)軟件開(kāi)發(fā)者;響應(yīng)傳送的設(shè)計(jì)從所述第二多個(gè)軟件開(kāi)發(fā)者的子集中的每一個(gè)接收軟件程序;推動(dòng)軟件復(fù)核過(guò)程以對(duì)每個(gè)接收的程序進(jìn)行記分;和至少部分的基于在軟件復(fù)核過(guò)程中的其分?jǐn)?shù)從接收的程序中選擇一個(gè)程序。
2.如權(quán)利要求1所述的方法,其中所述軟件程序包括從組件、應(yīng)用程序、模塊和程序庫(kù)的組中選擇的一個(gè)程序。
3.如權(quán)利要求1所述的方法,其中所述第一多個(gè)軟件開(kāi)發(fā)者中的每一個(gè)在一個(gè)或多個(gè)編碼競(jìng)爭(zhēng)中被定級(jí)。
4.如權(quán)利要求3所述的方法,其中至少部分的基于具有在一個(gè)或多個(gè)編碼競(jìng)爭(zhēng)中接收的最低等級(jí)來(lái)選擇所述第一多個(gè)開(kāi)發(fā)者。
5.如權(quán)利要求1所述的方法,其中至少部分的基于與一項(xiàng)設(shè)計(jì)或一個(gè)程序相關(guān)的分?jǐn)?shù)對(duì)所述開(kāi)發(fā)者進(jìn)行定級(jí)。
6.如權(quán)利要求1所述的方法,還包括使一難度等級(jí)與軟件程序相關(guān)。
7.如權(quán)利要求6所述的方法,其中至少部分的基于與設(shè)計(jì)或程序相關(guān)的難度等級(jí)對(duì)開(kāi)發(fā)者進(jìn)行定級(jí)。
8.如權(quán)利要求1所述的方法,其中所述多個(gè)軟件開(kāi)發(fā)者在地理上是分布式的。
9.如權(quán)利要求1所述的方法,其中所述第一多個(gè)開(kāi)發(fā)者和第二多個(gè)開(kāi)發(fā)者是不同的。
10.如權(quán)利要求1所述的方法,其中所述軟件程序設(shè)計(jì)包括要求文檔、活動(dòng)圖、案例文檔、測(cè)試案例、原型和UML文檔中的一個(gè)或多個(gè)。
11.如權(quán)利要求1所述的方法,其中使用在線應(yīng)用程序來(lái)傳送所述規(guī)范。
12.如權(quán)利要求11所述的方法,其中所述在線應(yīng)用程序通過(guò)互聯(lián)網(wǎng)進(jìn)行通信。
13.如權(quán)利要求1所述的方法,還包括對(duì)提交選擇設(shè)計(jì)的軟件開(kāi)發(fā)者進(jìn)行獎(jiǎng)賞。
14.如權(quán)利要求13所述的方法,其中所述獎(jiǎng)賞是金錢(qián)。
15.如權(quán)利要求13所述的方法,其中所述獎(jiǎng)賞是增加的技能等級(jí)。
16.如權(quán)利要求1所述的方法,還包括對(duì)提交選擇程序的軟件開(kāi)發(fā)者進(jìn)行獎(jiǎng)賞。
17.如權(quán)利要求16所述的方法,其中所述獎(jiǎng)賞是金錢(qián)。
18.如權(quán)利要求16所述的方法,其中所述獎(jiǎng)賞是增加的技能等級(jí)。
19.如權(quán)利要求1所述的方法,還包括在傳送規(guī)范之前,從請(qǐng)求開(kāi)發(fā)軟件程序的實(shí)體接收所述規(guī)范的至少一部分。
20.如權(quán)利要求1所述的方法,其中通過(guò)多個(gè)復(fù)核人員來(lái)執(zhí)行設(shè)計(jì)復(fù)核過(guò)程。
21.如權(quán)利要求20所述的方法,其中在一項(xiàng)計(jì)算機(jī)編程競(jìng)爭(zhēng)中對(duì)所述多個(gè)復(fù)核人員中的每一個(gè)進(jìn)行定級(jí)。
22.如權(quán)利要求21所述的方法,其中所述多個(gè)復(fù)核人員中的每一個(gè)的等級(jí)高于一預(yù)定最小等級(jí)。
23.如權(quán)利要求20所述的方法,其中所述設(shè)計(jì)復(fù)核過(guò)程包括將來(lái)自所述多個(gè)復(fù)核人員中的每一個(gè)的分?jǐn)?shù)匯總成一個(gè)總馮并基于所述總分來(lái)選擇一個(gè)設(shè)計(jì)。
24.如權(quán)利要求1所述的方法,其中通過(guò)多個(gè)復(fù)核人員來(lái)執(zhí)行軟件復(fù)核過(guò)程。
25.如權(quán)利要求24所述的方法,其中在一項(xiàng)計(jì)算機(jī)編程競(jìng)爭(zhēng)中對(duì)所述多個(gè)復(fù)核人員中的每一個(gè)進(jìn)行定級(jí)。
26.如權(quán)利要求25所述的方法,其中所述多個(gè)復(fù)核人員中的每一個(gè)的等級(jí)高于一預(yù)定最小等級(jí)。
27.如權(quán)利要求23所述的方法,其中所述軟件復(fù)核過(guò)程包括將來(lái)自所述多個(gè)復(fù)核人員中的每一個(gè)的分?jǐn)?shù)匯總成一個(gè)總分并基于所述總分來(lái)選擇一個(gè)程序。
28.如權(quán)利要求1所述的方法,其中所述推動(dòng)的設(shè)計(jì)復(fù)核包括讀取設(shè)計(jì)文檔、完成復(fù)核表格、和標(biāo)識(shí)要由提交所述設(shè)計(jì)的軟件開(kāi)發(fā)者并入到所述設(shè)計(jì)中的改變中的一項(xiàng)或多項(xiàng)。
29.如權(quán)利要求28所述的方法,其中所述復(fù)核表格是在線表格。
30.如權(quán)利要求28所述的方法,其中所標(biāo)識(shí)的改變按照復(fù)核人員的判斷力被指定為強(qiáng)制性的或選擇性的。
31.如權(quán)利要求1所述的方法,其中所接收的程序包括源代碼、目標(biāo)代碼和編譯代碼中的一項(xiàng)或多項(xiàng)。
32.如權(quán)利要求1所述的方法,還包括發(fā)布所選擇的程序。
33.如權(quán)利要求32所述的方法,還包括為發(fā)布的軟件程序提供支持。
34.如權(quán)利要求1所述的方法,其中還包括從對(duì)分配給他們的設(shè)計(jì)的分?jǐn)?shù)進(jìn)行爭(zhēng)辯的軟件開(kāi)發(fā)者接收申訴。
35.如權(quán)利要求1所述的方法,其中還包括從對(duì)分配給他們的程序的分?jǐn)?shù)進(jìn)行爭(zhēng)辯的軟件開(kāi)發(fā)者接收申訴。
36.一種分布式軟件開(kāi)發(fā)方法,包括對(duì)分布式軟件開(kāi)發(fā)團(tuán)體提供軟件開(kāi)發(fā)系統(tǒng),所述系統(tǒng)包括使用結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)推動(dòng)軟件程序開(kāi)發(fā)和測(cè)試的軟件開(kāi)發(fā)軟件;使用用于將軟件開(kāi)發(fā)軟件發(fā)送給分布式軟件開(kāi)發(fā)團(tuán)體的軟件進(jìn)行通信的通信服務(wù)器;復(fù)核部門(mén),包括一個(gè)或多個(gè)能夠確定所述分布式軟件開(kāi)發(fā)團(tuán)體所開(kāi)發(fā)的軟件的質(zhì)量的程序員;從一個(gè)實(shí)體接收產(chǎn)生一個(gè)軟件程序的請(qǐng)求;和通過(guò)所述軟件開(kāi)發(fā)團(tuán)體的至少一個(gè)子集使用所述軟件開(kāi)發(fā)系統(tǒng)推動(dòng)開(kāi)發(fā)所述軟件程序。
37.如權(quán)利要求36所述的方法,其中所述軟件程序是從組件、應(yīng)用程序、模塊和程序庫(kù)的組中選擇的程序。
38.如權(quán)利要求36所述的方法,其中基于軟件開(kāi)發(fā)者參與一個(gè)或多個(gè)編碼競(jìng)爭(zhēng)來(lái)對(duì)他們進(jìn)行定級(jí)。
39.如權(quán)利要求36所述的方法,其中所述軟件開(kāi)發(fā)系統(tǒng)在地理上是分布式的。
40.如權(quán)利要求39所述的方法,其中所述地理分布通過(guò)互聯(lián)網(wǎng)來(lái)管理。
41.如權(quán)利要求36所述的方法,其中所述軟件開(kāi)發(fā)系統(tǒng)被執(zhí)行為java小應(yīng)用程序。
42.如權(quán)利要求36所述的方法,其中所述復(fù)核部門(mén)由在編碼競(jìng)爭(zhēng)中被定級(jí)的程序員構(gòu)成。
43.如權(quán)利要求36所述的方法,其中由復(fù)核部門(mén)至少部分通過(guò)對(duì)設(shè)計(jì)文檔、源代碼、目標(biāo)代碼、編譯代碼、類定義和方法的復(fù)核來(lái)確定軟件的質(zhì)量。
44.如權(quán)利要求36所述的方法,其中所述結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)包括多個(gè)階段。
45.如權(quán)利要求44所述的方法,其中所述多個(gè)階段包括規(guī)范階段、設(shè)計(jì)階段、開(kāi)發(fā)階段、測(cè)試階段和支持階段中的一個(gè)或多個(gè)。
46.如權(quán)利要求36所述的方法,其中所述開(kāi)發(fā)環(huán)境促使下列中的一項(xiàng)或多項(xiàng)執(zhí)行UML模型的開(kāi)發(fā)、案例模型的開(kāi)發(fā)、計(jì)算機(jī)代碼的開(kāi)發(fā)、計(jì)算機(jī)代碼的編譯和計(jì)算機(jī)代碼的測(cè)試。
47.如權(quán)利要求36所述的方法,還包括從所述軟件開(kāi)發(fā)團(tuán)體的子集接收開(kāi)發(fā)的軟件程序。
48.如權(quán)利要求47所述的方法,還包括基于軟件程序的質(zhì)量選擇將要遞送給所述實(shí)體的接收程序中的一個(gè)或多個(gè)。
49.如權(quán)利要求48所述的方法,還包括對(duì)提交一個(gè)或多個(gè)選擇軟件程序的開(kāi)發(fā)者進(jìn)行獎(jiǎng)賞。
50.如權(quán)利要求49所述的方法,其中所述獎(jiǎng)賞是金錢(qián)。
51.如權(quán)利要求49所述的方法,其中所述獎(jiǎng)賞是增加的技能等級(jí)。
52.一種評(píng)估軟件程序的計(jì)算機(jī)化方法,包括步驟將用于開(kāi)發(fā)軟件程序的請(qǐng)求傳送給一組軟件開(kāi)發(fā)者;響應(yīng)傳送的請(qǐng)求,從所述軟件開(kāi)發(fā)者組的子集中的每一個(gè)接收一個(gè)候選軟件程序和用于測(cè)試所接收的候選軟件程序的一個(gè)或多個(gè)測(cè)試案例;使用從所述軟件開(kāi)發(fā)者組的子集中的兩個(gè)或多個(gè)接收的測(cè)試案例對(duì)每個(gè)接收的軟件程序進(jìn)行測(cè)試;和至少部分的基于測(cè)試步驟的結(jié)果對(duì)接收的候選軟件程序進(jìn)行記分。
53.如權(quán)利要求52所述的方法,其中軟件開(kāi)發(fā)者在地理上是分布式的。
54.如權(quán)利要求52所述的方法,其中在一項(xiàng)編碼競(jìng)爭(zhēng)中對(duì)軟件開(kāi)發(fā)者進(jìn)行定級(jí)。
55.如權(quán)利要求52所述的方法,其中所接收的候選軟件程序包括源代碼、目標(biāo)代碼、編譯代碼、類定義、方法、應(yīng)用程序和組件中的一個(gè)或多個(gè)。
56.如權(quán)利要求52所述的方法,其中所提交的測(cè)試案例包括將用于候選軟件程序的輸入的樣本數(shù)據(jù)。
57.一種用于評(píng)估軟件程序的功能性的計(jì)算機(jī)化系統(tǒng),包括通信服務(wù)器,用于將開(kāi)發(fā)軟件程序的請(qǐng)求傳送給一組軟件開(kāi)發(fā)者,并響應(yīng)傳送的請(qǐng)求,從所述軟件開(kāi)發(fā)者組的子集中的每一個(gè)接收一個(gè)候選軟件程序和用于測(cè)試所接收的候選軟件程序的一個(gè)或多個(gè)測(cè)試案例;測(cè)試服務(wù)器,用于使用從所述軟件開(kāi)發(fā)組的子集中的兩個(gè)或多個(gè)接收的測(cè)試案例對(duì)每個(gè)接收的軟件程序進(jìn)行測(cè)試;和與測(cè)試服務(wù)器通信的記分服務(wù)器,用于至少部分的基于從測(cè)試服務(wù)器接收的測(cè)試結(jié)果對(duì)接收的候選軟件程序進(jìn)行記分。
58.如權(quán)利要求57所述的系統(tǒng),其中軟件開(kāi)發(fā)者在地理上是分布式的。
59.如權(quán)利要求57所述的系統(tǒng),其中在一項(xiàng)或多項(xiàng)編碼競(jìng)爭(zhēng)中對(duì)軟件開(kāi)發(fā)者進(jìn)行定級(jí)。
60.如權(quán)利要求57所述的系統(tǒng),其中所接收的候選軟件程序包括源代碼、目標(biāo)代碼、編譯代碼、類定義、方法、應(yīng)用程序和組件中的一個(gè)或多個(gè)。
61.如權(quán)利要求57所述的系統(tǒng),其中所提交的測(cè)試案例包括將用于候選軟件程序的輸入的樣本數(shù)據(jù)。
全文摘要
本發(fā)明涉及用于開(kāi)發(fā)軟件的方法和系統(tǒng)。在一個(gè)實(shí)施例中,一種用于開(kāi)發(fā)軟件的方法包括將用于軟件程序設(shè)計(jì)的規(guī)范傳送給第一多個(gè)開(kāi)發(fā)者;響應(yīng)于規(guī)范,從所述開(kāi)發(fā)者的一個(gè)子集接收設(shè)計(jì);推動(dòng)設(shè)計(jì)復(fù)核過(guò)程以對(duì)設(shè)計(jì)進(jìn)行記分;基于其分?jǐn)?shù)選擇一個(gè)設(shè)計(jì);將選擇的設(shè)計(jì)傳送給第二多個(gè)軟件開(kāi)發(fā)者;響應(yīng)所述設(shè)計(jì),從所述第二多個(gè)軟件開(kāi)發(fā)者的子集接收軟件程序;推動(dòng)軟件復(fù)核過(guò)程以對(duì)所述程序進(jìn)行記分;和基于其分?jǐn)?shù)選擇一個(gè)程序。在另一個(gè)實(shí)施例中,一種用于分布式軟件開(kāi)發(fā)的方法包括對(duì)一分布式開(kāi)發(fā)團(tuán)體提供一軟件開(kāi)發(fā)系統(tǒng),所述系統(tǒng)包括使用結(jié)構(gòu)化開(kāi)發(fā)方法學(xué)的軟件開(kāi)發(fā)軟件;通信服務(wù)器,和復(fù)核部門(mén),用于確定所提交的軟件的質(zhì)量;接收產(chǎn)生一個(gè)軟件程序的請(qǐng)求;和通過(guò)所述分布的開(kāi)發(fā)團(tuán)體的子集使用所述軟件開(kāi)發(fā)系統(tǒng)推動(dòng)開(kāi)發(fā)所述程序。
文檔編號(hào)G06Q10/00GK101091173SQ200580008184
公開(kāi)日2007年12月19日 申請(qǐng)日期2005年1月14日 優(yōu)先權(quán)日2004年1月15日
發(fā)明者J·M·休斯 申請(qǐng)人:托普科德公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
获嘉县| 河北区| 招远市| 岳池县| 兴和县| 古交市| 平陆县| 盐津县| 四子王旗| 临桂县| 监利县| 漳平市| 社会| 四川省| 四会市| 纳雍县| 平邑县| 安化县| 博客| 德安县| 扬州市| 红河县| 南安市| 盘锦市| 高尔夫| 滦平县| 阿坝县| 长垣县| 南川市| 闻喜县| 静宁县| 大新县| 哈尔滨市| 托克托县| 大荔县| 普安县| 连江县| 汝南县| 滦南县| 雷州市| 文昌市|