新四季網

用於對軟體開發服務徵求建議的系統以及方法

2023-05-21 20:27:01

專利名稱:用於對軟體開發服務徵求建議的系統以及方法
技術領域:
本發明涉及用於開發以及分送軟體的基於計算機的方法以及系統,更具體來講,涉及簡化軟體的分布式開發的方法以及系統。
背景信息在美國以及其他地方中,計算機已經變成人們日常生活的一部分,這包括在工作方面以及個人努力方面。這是因為通用計算機可以被編程來運行各種軟體程序,每種軟體程序均提供不同的處理以及連網功能。電腦程式設計員開發計算機代碼。一些公司僱用大量的電腦程式設計員基於公司的利益來開發代碼。
一個方法是僱用大量的程式設計師並且「在內部」開發軟體。雖然這樣提供了對程序設計人員團隊的重要控制,但是尋找、僱用以及維護這個團隊的花費上是相當高的。此外,當個體程式設計師離開公司時,還可能丟失大部分技術以及工業知識。作為選擇,許多公司把他們的編程工作「轉移」給諮詢公司或者合同僱員。這種方法減輕了公司管理個體僱員的負擔,然而工作的質量經常受到質疑,並且集成來自於很多外部供應商的工作的難題十分明顯。

發明內容
需要一種方式來進行組織以便獲得高質量的軟體,而不需要維護較大的、永久的軟體開發組織。已經提出的用於改善軟體開發的技術是代碼重新使用以及基於組件的設計。但是即使組織採用這種技術,他們仍需要依照可承受的方式獲得高質量組件。
總體上,本發明涉及激勵分布式軟體開發人員小組,他們彼此互不相關,以便參與高質量軟體的分布式開發。通常,開發人員的激勵可通過財政以及競賽獎勵來產生。所述開發人員的獨立性允許強制執行嚴格的設計以及質量分析,這也將產生很高質量(例如企業質量)的軟體。
在一個方面中,產品管理者將軟體程序的規範傳達給開發人員小組,所述開發人員可以是軟體體系結構設計師、設計者、編碼員等等。產品管理者響應傳達的規範接收一個或多個提交內容。每個提交內容至少部分基於所述提交內容滿足傳達的規範的程度來被評分。響應於所述得分,選擇其中一個提交內容,用於包括在軟體存儲庫中以便分送至公眾。可以將酬勞分配給提交了所述存儲庫中包括的設計或者代碼的開發人員。應該理解的是,所述軟體程序可以是任何種類的程序,例如包括但不限於組件、類、庫、應用或者上述內容的一個或多個的某些組合或者集合。
各種實施例可以包括一個或多個以下特徵。分配給開發人員的評級可以由在一個或多個編碼競賽中開發人員的成績而來,其中所述競賽也可以保持聯機。分配給開發人員的評級可以由開發人員在前提交的軟體程序設計而來。分配給開發人員的評級可以由開發人員在前提交的軟體程序而來。發送給所述開發人員的規範可以用於設計軟體程序。發送給所述開發人員的規範可以用於開發軟體程序。所述軟體程序可以是軟體組件。所述軟體程序可以是軟體應用、一個或多個軟體組件的組合或者軟體模塊之一。為開發人員得出的評級可用於確定應該接收規範的程式設計師子集。開發人員評級的存在可以確定是否將所述開發人員包括在應該接收規範的程式設計師子集中。所述開發人員可以提交軟體程序的設計。所述開發人員可以提交軟體程序的計算機代碼。所述開發人員可以是軟體設計師。所述開發人員可以是軟體程式設計師。提交內容的得分可以基於由不同於提交該提交內容的開發人員的開發人員評審的提交內容來推導。可以基於接收的最小得分來選擇所述提交內容以便包括到所述軟體存儲庫中。所述軟體存儲庫中包括的提交內容可以被保證在不同於用於原始提交內容的計算環境的計算環境中操作。
總的來說,本發明的另一個方面涉及補償進行設計或者開發軟體程序的開發人員。一種方法包括徵求多個開發人員對軟體程序的提交內容,響應所述徵求接收至少一個軟體程序,為所接收到的響應評分,基於所述得分選擇軟體程序以便分送至公眾,分送所述程序至公眾,並且分配一部分通過分送程序獲得的收益給開發人員,其中所述開發人員提交了所選的程序設計或者代碼。
實施例可以包括一個或多個以下特徵。在徵求開發人員之前,給所述開發人員評級。開發人員可以基於他們在聯機編碼競賽中的成績來評級。所述開發人員可以基於他們對軟體程序設計的在前提交內容來評級。所述開發人員可以基於他們在前提交的軟體程序來評級。所述軟體程序可以是軟體組件。所述軟體程序可以是軟體應用、軟體組件的組合或者軟體模塊。相反,或者例外,可以至少部分基於他們的評級或者依照其具有的評級來徵求程式設計師。來自於程序分送的收入的分配可以至少部分基於開發人員的評級來進行。來自於程序分送的收入分配可以至少部分基於開發人員開發軟體程序所花費的小時數目和/或基於開發人員參加的工作比例來進行。來自於程序分送的收入分配可以至少部分基於軟體程序被分送的次數和/或人員來進行。
在又一個方面中,本發明涉及用於實現上述方法的系統。例如,用於簡化軟體程序分布式開發的系統包括評級引擎,用於對軟體開發人員的技能進行評級;以及伺服器,用於向已經預先由評級引擎評級的開發人員傳達軟體規範。所述系統還包括伺服器,用於當開發人員提交軟體程序時接收它們,以及用於為提交的軟體程序評分的模塊。
在本發明此方面的一個實施例中,所述系統還可以包括評審模塊,用於允許開發人員評審由其他開發人員提交的提交內容和/或由評審委員會產生的評分卡。所述系統還可以包括存儲庫,用於存儲所述軟體程序以及所有相關聯的設計文檔。所述存儲庫可以包括聯機陳列室,用於顯示所述程序,並且還可以包括使用提交的軟體程序構造的樣品應用。所述存儲庫還可以包括用於向公眾演示軟體程序功能的模塊。
在本發明的另一個實施例中,所述系統還可以包括計算模塊,用於在已經預先提交了軟體程序的程式設計師當中分配收益。所述收入分配可至少部分基於程式設計師的評級。收入分配可以至少部分基於程式設計師設計或者開發軟體程序所花費的小時數目。所述收入分配例如可以至少部分基於軟體程序被分送的次數和/或人員來進行。
根據以下附圖、詳細說明以及權利要求書,本發明的其他方面以及優點將變得更明顯,所有這些內容僅僅是通過舉例來說明本發明的原理。
附圖簡述在所述附圖中,遍及不同的視圖,相同的參考標記通常涉及相同的部分。此外,所述附圖不必是按比例縮放的,而是當舉例說明本發明的原理時,通常將重點突出。


圖1是依照本發明的具有伺服器的分布式軟體開發系統的實施例框圖。
圖2是依照本發明的分布式軟體開發小組的一個實施例的框圖。
圖3是依照本發明的分布式軟體開發小組的第二實施例的框圖。
圖4是依照本發明的當開發軟體程序時由有效的軟體開發小組執行的步驟的實施例流程圖。
圖5依照本發明由有效的軟體開發小組的成員執行的步驟的實施例的流程圖。
圖6由軟體設計的有效成員執行的圖5步驟的實施例的更加詳細的流程圖。
圖7由軟體程序設計小組的有效成員執行的圖5步驟的實施例的更加詳細的流程圖。
圖8是依照本發明用於簡化軟體程序的開發和/或區別的圖1伺服器的實施例的更加詳細的框圖。
圖9是依照本發明用於簡化規範的傳遞和以及提交內容的接收和評分的圖1伺服器的實施例的更詳細框圖。
圖10是依照本發明的軟體目錄的實施例框圖。
圖11是依照本發明的與第一公司以及第二公司通信的軟體目錄系統的實施例的框圖。
圖12是依照本發明的舉例說明修改軟體組件的軟體目錄系統的實施例的框圖。
圖13是依照本發明的補償數據結構的實施例框圖。
圖14是依照本發明舉例說明用於分布式軟體開發小組的基於酬勞的補償結構的實施例的表。
圖15是依照本發明舉例說明用於分布式軟體開發小組的基於酬勞的補償結構的另一個實施例的表。
圖16是依照本發明舉例說明由伺服器支持的滑動比例酬勞補償結構的實施例的線性圖表。
詳細說明參照圖1,在一個實施例中,分布式軟體開發系統101包括至少一個伺服器104,以及至少一個客戶端108,108』,108」,通稱為108。如圖所示,所述分布式軟體開發系統101包括三個客戶端108,108』,108」,但是這只是為了舉例說明的目的,並且其意指可以存在任何數量的客戶端108。所述客戶端108最好作為在個人計算機(例如具有INTEL處理器或者APPLE MACINTOSH的PC)上運行的軟體來實現,所述個人計算機能夠運行這種作業系統,諸如來自於Redmond,Washington的微軟公司MICROSOFT WINDOWS系列的作業系統,來自於California,Cupertino的Apple Computer的MACINTOSH作業系統,以及各種的UNIX作業系統,諸如來自於SUN MICROSYSTEMS的SUN SOLARIS以及來自於NorthCarolina(以及其他),Durham的RED HAT公司的GNU/Linux。所述客戶端108還可以在這種硬體上實現,所述硬體諸如智能或無智能終端、網絡計算機、無線電設備、信息設備、工作站、小型計算機、大型計算機或者其他計算裝置,將其作為通用計算機或者專用硬體裝置來操作,以便在分布式軟體開發系統101中充當客戶端108來單獨使用。
通常,在一些實施例中,客戶端108可以由軟體開發人員來操作,並且可以由參與軟體開發的軟體開發人員使用。客戶端108還可以由所述軟體開發人員開發的軟體的客戶來操作。在各種實施例中,客戶端計算機108包括瀏覽器116、客戶端軟體120或者兩個都包括。所述瀏覽器116允許客戶端108依照網頁請求來請求網頁(例如從所述伺服器104)。網頁的例子是包括計算機可執行的或者可翻譯的信息、圖形、音響、文本和/或視頻的數據文件,其可以被顯示、執行、播放、處理、流送和/或存儲,並且可以包含到其他網頁的鏈路或者指針。在一個實施例中,客戶端108的用戶從所述伺服器104人工地請求網頁。作為選擇,客戶端108自動地利用所述瀏覽器116進行請求。可以商業可得的瀏覽器軟體116的例子是由Washington,Redmond的微軟公司提供的INTERNET EXPLORER,以及由California,Mountain View的NetscapeCommunications公司提供的NETSCAPE NAVIGATOR。
在一些實施例中,所述客戶端108還包括客戶端軟體120。所述客戶端軟體120向客戶端108提供允許軟體開發人員參與編碼競賽的功能。所述客戶端軟體120可以依照各種形式實現,例如,它可以是下載到客戶端108並且結合所述瀏覽器116運行的Java小程序,或者所述客戶端軟體120可以是獨立應用的形式,依照諸如Java的多平臺語言或者依照本地處理器可執行代碼來實現。在一個實施例中,如果在所述客戶端108上執行,那麼客戶端軟體120打開網絡連接,以便經由通信網絡112連接到伺服器104,並且經由該連接與伺服器104通信。所述客戶端軟體120以及瀏覽器116可以是單個客戶端-伺服器接口124的一部分;例如,所述客戶端軟體可以作為瀏覽器116的「插件程序」來實現。
通信網絡112連接客戶端108與伺服器104。所述通信可以經由任何介質進行,諸如標準電話線、LAN或者WAN鏈路(例如,T1、T3、56kb、X.25)、寬帶連接(ISDN、幀中繼(Frame Relay)、ATM)、無線鏈路等等。優選的是,所述網絡112可以支持TCP/IP協議通信,以及由瀏覽器116進行的HTTP/HTTPS請求,並且客戶端軟體120和伺服器104之間的連接可以經由這種TCP/IP網絡進行通信。然而,所述網絡的類型不是限制性的,任何適當的網絡都可以使用。可以充當通信網絡112的網絡的典型實例包括無線或者有線的基於乙太網的內聯網、局域或者廣域網(LAN或者WAN),和/或通稱為網際網路的全球通信網,這些網絡可以適應許多不同的通信介質和協議。
伺服器104與客戶端108交互。所述伺服器104最好在一個或多個伺服器類計算機上實現,所述計算機具有足夠的存儲器、數據存儲器和處理能力,並且可以運行伺服器類作業系統(例如SUN Solaris、GNU/Linux、MICROSOFT WINDOWS NT)。根據裝置的容量和用戶數目以及用戶的規模,還可以使用不同於此處描述的其他類型的系統硬體和軟體。例如,所述伺服器104可以屬於伺服器場或者伺服器網絡的一部分,其是一個或多個伺服器的邏輯組。作為另一個例子,可以存在多個伺服器104,其可以彼此關聯或者彼此連接,或者多個伺服器可以獨立地操作,但是共享數據。在進一步的實施例中,並且作為具有代表性的大規模系統,應用軟體可以依照組件來實現,依照在不同的伺服器計算機上、在相同的伺服器上運行的不同組件,或者某些組合。
所述伺服器104可以包括競賽伺服器,如Lydon等人申請的序號為10/041,393、題為「Systems and Methods for Coding Competitions」的一併待決的美國專利申請中所描述的那樣。
在一個實施例中,所述伺服器104使有效的開發小組能夠進行軟體程序的分布式軟體開發。所述軟體程序可以是任何種類的機器命令,例如包括但不限於組件、類、庫、應用、小程序、邏輯表、數據塊或者這些內容的任意一個或多個的一個或多個任意組合或集合。在一個實施例中,所述軟體程序可以是軟體組件。通常,軟體組件是可以作為應用的可重用構建單元的功能性軟體模塊。正如幾個例子,軟體組件包括但不局限於以下這種組件,諸如圖形用戶界面、小型利息計算器、資料庫管理器的界面、保險統計表計算、DNA檢索函數、為了機器製造零件的目的製造數字控制工具機的接口、公共/私人密鑰加密算法以及用於登錄並且與主機應用通信的函數(例如,保險調節以及銷售點(POS)產品跟蹤)。在一些實施例中,為了需要的服務這些組件相互通信(例如經由通信網絡112)。組件的特殊例子是JavaBean,其是依照Java程序設計語言編寫的組件。組件還可以依照任何其他語言編寫,包括但不限於VisualBasic、C++、Java、以及C#」。
在一個實施例中,所述軟體程序可以是應用。在一些實施例中,應用可以由一個或多個軟體組件組成。在一個實施例中,所述軟體應用由使用如下所述的方法預先開發的軟體組件組成。在一些實施例中,所述應用包括完全新的軟體程序。在一些實施例中,所述應用包括新的軟體程序以及預先開發的軟體組件的組合。
參照圖2,軟體開發小組可用於開發軟體組件。在一個實施例中,所述軟體開發小組200包括產品管理者202。產品管理者202是組件開發和部署組件的管理者。所述產品管理者202可以執行市場調查以便識別可能對市場有用的組件。例如,所述產品管理者202可以執行對工業的研究,以便確定公司是否找到具有確定特徵的有用組件,並且規定這種組件的需求。所述產品管理者202還可以規定(但不限於)諸如項目花費、項目安排以及項目風險的項。在一個實施例中,所述產品管理者202為所述項目創建項目計劃,其可以包括估計的項目花費、進度、描述範圍的需求文檔以及項目風險。
設計師(也稱為「設計者」)208設計所述軟體組件。設計師208最好是充當一個或多個其他組員204,212,216的指導者並且與他們進行協作的資深開發人員,以便設計組件的體系結構。設計師208還可以創建用於滿足由產品管理者202例如在需求文檔中、或者通過與產品管理者202的其他通信而提出的組件需求的測試用例。所述設計師208最好以最大化軟體組件的潛在重用的方式來設計所述組件。因此所述設計師208可以例如基於但不局限於有效的接口數目、所述組件與其他組件的兼容性以及組件的每個設計的執行速度來設計軟體組件。
然後,一個或多個QA開發人員216,216』(通稱為216)為所述組件開發測試計劃。測試計劃可以包括正常以及極限輸入以便模擬生產以及壓力。在一個實施例中,QA開發人員216使用由產品管理者202編寫的需求規範以及由設計師208編寫的設計規範來開發測試計劃。QA開發人員216試圖識別所述規範中的潛在的問題區域,並且朝向一個或多個那些區域來修補QA測試。此外,所述QA開發人員216可以與其他組員通信以便改善或者討論測試計劃。一旦完成,可以由所述設計師208和/或產品管理者202來評審測試計劃,以便驗證測試計劃將充分地測試組件需求。
然後,一個或多個開發人員222,222』(通稱為222)開發組件以符合規範描述的需求。在一個實施例中,所述開發人員222向設計師208提交對象模型,諸如依照統一建模語言(UML)的模型。一旦設計師208批准所述對象模型,開發人員222就開發代碼以實現組件。所述開發人員使用測試計劃來確定實現的代碼滿足所述需求。當所述開發人員222完成所述代碼,設計師208和/或產品管理者202評審所述代碼。在一個實施例中,所述設計師208評審所述編碼,例如但不局限於確定功能、風格、編碼標準的遵守、性能以及穩定性。
一旦所述組件被開發,依照測試計劃所述QA開發人員216測試完成的組件,並且驗證它是可接受的。
雖然圖中所示的軟體開發小組200包括一個產品管理者202、一個設計師208、兩個QA開發人員216,216』以及兩個開發人員222,222』,但是應該理解的是,這只是示例性的目的,並且開發人員222和QA開發人員216的數目將取決於特定的項目。還應該理解的是,軟體開發小組200的一個或多個成員可以操作一個或多個客戶端108,並且經由通信網絡112與伺服器104通信,如圖1所示。
在一些實施例中,所述軟體開發小組200由彼此沒有關係的開發人員組成。例如,所述開發人員222未必是已知的(或者如果他們相互認識,那麼將非常熟悉)QA開發人員216或者產品管理者202。此特殊的實施例的優勢之一是開發人員更加情願參與由其他人開發的軟體設計或者組件的無偏見同等評審。此外,在一些實施例中,評審過程可以是保持不記名的,以便開發人員不知道他們評審的是誰的工作。開發小組200的評審工作遵守嚴格的開發過程,並以這樣的方式極大地增強最終產品的質量。在一個實施例中,同等評審過程依照駐留在伺服器104上的開發環境來實現。在另一個實施例中,例如可是使用其他類型的開發環境,所述同等評審可以使用個體開發人員的計算機來執行。
現在參照圖3,在圖2實施例的變化中,產品管理者302主持開發小組300,其由分布式開發人員組(此處使用以包括設計者、設計評審者、開發人員、開發評審者等等)組成。例如,所述設計者以及開發人員可以是專致力於合作電腦程式編制和分布式軟體開發的組織或者集體的成員。在一個實施例中,所述產品管理者302簡化這種開發人員組當中的初始討論,所述組可以包括潛在的或者實際的開發小組成員300。所述討論可以是一種協作,用於識別待開發的新的或者要改善的軟體組件的需求。在一些實施例中,所述討論在聯機論壇中進行,所述論壇可以由開發集體中的開發人員訪問。在一個實施例中,通過從滿足其他標準並且參與這種討論的那些人中選擇用於構建/設計304和開發310委員會的參與方,以此來鼓勵參與這種論壇。
開發人員312可以請求加入開發小組300,所述產品管理者302可以要求開發人員312加入開發小組300,或者它們的某些組合。在一些實施例中,產品管理者302通過向提供了質量提交內容的開發人員312提供現金補償或者獎品,來創建對參與所述開發小組的開發人員312的激勵。在一些實施例中,所述產品管理者302通過鼓勵開發人員312之間的競賽來向參與的開發人員312創建激勵。例如,在一些實施例中,所述開發人員312通過參與確定的開發小組來接受增加的評級。
所述開發小組300包括體系結構評審委員會304。所述體系結構評審委員會304包括一個或多個開發人員312,用於評審來自於軟體設計師328的設計提交內容。所述體系結構評審委員會最好具有少量(例如小於十個)的成員,例如三個成員,但是也可以是任意的數量。通常,所述評審委員會只為一個或者少數相關項目形成。在一些實施例中,評審委員會可以形成更長的時間,但是在工作人員的變化也是可能可以幫助保持質量的。
優選的是,通過所述產品管理者302、體系結構評審委員會304、或別的方式將體系結構評審委員會成員之一選擇為主要評審委員會成員308。如果委員會304被設立了更長時間,那麼通常來說,為每個組件或者組件的相關組分配主要評審委員會成員308,但是主要評審委員會成員308也可以對該委員會304評審的所有組件是同一個,這取決於成員的有效性和技能。所述主要評審委員會成員308負責協調和管理委員會304的活動。
在一個實施例中,通過所述產品管理者302請求滿足特定規範的組件設計提交內容,並且通過所述體系結構評審委員會304判斷設計者328給出的設計提交內容。所述主要評審委員會成員308在體系結構評審委員會304的其他成員評審他們以前,篩選所述設計提交內容,以便允許其餘的評審委員會只判斷最佳提交內容。在一些實施例中,所述篩選過程包括基於它們滿足規範中略述的需求的程度來為所述提交內容評分。在一些實施例中,使用評分卡文檔化得分,其可以是文件、電子數據表、聯機表格、資料庫或者其他電子文件。
在一個實施例中,所述主要評審委員會成員308通知體系結構評審委員會304一個或多個提交內容已經通過了篩選過程,並且所述體系結構評審委員會304評審所述設計提交內容。在一些實施例中,所述體系結構評審委員會304基於規範中文檔化的需求來評審提交內容。在一些實施例中,所述體系結構評審委員會304為所述提交內容評分。在一些實施例中,使用評分卡文檔化得分,其可以是文件、電子數據表、聯機表格、資料庫或者其他電子文件。
在一些實施例中,來自於所述主要評審委員會成員308以及體系結構評審委員會304的其他成員的得分和評審被合併為最終評審和得分。在一些實施例中,所述合併可以包括編譯一個或多個文檔中包含的信息。這種合併可以通過主要評審委員會成員308、體系結構評審委員會304的其他成員來執行,或者在一個示範性的實施例中,使用駐留在伺服器104(圖1)上的基於計算機的系統來執行所述合併。在一些實施例中,所述產品管理者302解決體系結構評審委員會304之間的差異或者異議。
在一個實施例中,將具有最高組合得分的設計選為將用於實現的成功設計。將獎金和/或認可給予所述設計者。在一個實施例中,對設計者的一部分支付被扣留,直到開發評審結束。例如,所述設計者可以在設計評審結束收到75%的支付,並且在開發評審之後被支付25%。還可以對其他人提交的設計進行獎勵和/或認可。
在一些實施例中,除評審所述提交內容以外,體系結構評審委員會304還可以識別對規範的有用修改或者應該包括到所述設計中的設計。所述主要評審委員會成員308文檔化附加需求,並且將此信息傳達給提交設計的設計者328。在一個實施例中,所述主要評審委員會成員308合併來自於評審委員會304的評論。設計者328可以更新所述設計並且重新提交它以供所述體系結構評審委員會304評審。此過程可以重複,直到主要評審委員會成員308相信所述設計已經滿足所有必要的需求。
一旦所述體系結構評審委員會304確認設計已經足以闡明規範的需求,所述主要評審委員會成員308就通知產品管理者302這種設計已經通過了設計評審過程。所述產品管理者302因此能使用所述設計來徵求對滿足規範的設計的軟體組件的提交內容。例如,所述產品管理者302可以對網絡站點或者郵件名單的實現進行有效的設計。所述產品管理者302依照所述設計請求實現的組件。
所述開發小組300還包括開發評審委員會310,其類似於所述體系結構評審委員會304。所述開發評審委員會可以在完成並且選擇所述設計時馬上形成,或者可以在不同的時間選出,例如在形成體系結構評審委員會304的時候。開發評審委員會310的成員資格可以與設計評審委員會304的相同,或者與其相重疊,不過根據質量維護觀點來看,這未必是合乎需要的。在一些實施例中,不選擇所述開發評審委員會310,直到接收到對開發項目的提交內容。
所述開發評審委員會310包括一個或多個開發人員312,用於評審來自於軟體程式設計師322的開發提交內容。所述開發評審委員會310最好具有少量(例如小於十個)的成員,例如三個成員,但是也可以是任意的數量。通常,所述開發評審委員會310隻為一個或者少數相關項目而形成。在一些實施例中,評審委員會可以被形成更長時間,但是在工作人員方面的變化(以及評審委員會的繼續競賽)可以幫助維持質量。
優選的是,通過所述產品管理者302、開發評審委員會310、或其他方式將開發評審委員會310成員之一選擇為主要開發評審委員會成員316。如果委員會310被設立了更長時間,那麼通常來說,將開發委員會成員310被指派為主要開發評審委員會成員316,並且為每個組件或者組件的相關組指派開發委員會成員310,但是所述主要開發評審委員會成員316也可以對於該委員會310評審的所有組件相同,這取決於成員的有效性和技能。所述主要開發評審委員會成員316負責協調和管理委員會310的活動。
在一個實施例中,所述主要開發評審委員會成員316在由開發評審委員會310的其他成員評審提交內容以前篩選提交的組件。在一些實施例中,所述篩選過程包括基於它們滿足設計規範中略述的需求的程度來為所述提交內容評分。在一些實施例中,使用評分卡文檔化所述得分。所述評分卡可以是一文件、電子數據表、聯機表格、資料庫或者其他電子文件。
在一個實施例中,所述主要開發評審委員會成員316通知其他開發評審委員會成員310一個或多個提交內容已經通過了所述篩選過程。在一個實施例中,開發評審委員會310的成員評審提交的組件。在一些實施例中,所述主要開發評審委員會成員316基於在如上所述的設計文件中文檔化的詳細需要來評審所述提交內容。在一些實施例中,所述開發評審委員會310為所述提交內容評分。在一些實施例中,使用評分卡文檔化所。所述評分卡可以是一文件、電子數據表、聯機表格、資料庫或者其他電子文件。
在一些實施例中,所述得分可以基於所述組件在一個或更多測試例中的執行情況。在一些實施例中,測試例可以包括用於確定當組件具有有效輸入數據時接收的結果的準確性的測試。在一些實施例中,測試例可以包括用於確定當裝備有無效輸入數據時所述組件是否表現正確的測試。在一些實施例中,測試例可以包括用於確定所述組件如何響應大量輸入數據的測試。
在一些實施例中,來自於所述主要開發評審委員會成員316以及所述開發評審委員會310的得分和評審被合併為最終評審。在一些實施例中,所述合併可以包括編譯一個或多個文檔中包含的信息。在一個實施例中,所述產品管理者302合併所述信息。在一些實施例中,所述主要開發評審委員會成員316合併所述信息。在一個示範性的實施例中,所述合併使用電腦程式來執行,其也可以駐留在伺服器104上。在一些實施例中,所述產品管理者302解決開發評審委員會成員310之間的差異或者異議。
一旦所述開發評審委員會310確認實現的組件滿足所述規範的需求,並且具有足夠的質量,那麼主要開發評審委員會成員316通知所述產品管理者302所述組件已經完成開發評審過程。在一個實施例中,將具有最高組合得分的實現方式選為將使用的成功組件。將獎金和/或其它認可給予所述程式設計師。還可以對亞軍進行獎勵和/或認可。成功組件因此能被歸入軟體存儲庫,以便由其他程式設計師訪問和使用。如下文將進一步討論的,在設計和實現所述組件過程中的參與方可以作為使用開發組件的收益的百分比來支付與他們的貢獻相當的量。
在一些實施例中,開發評審委員會310的成員可以識別對組件中應該包括的實現方式的修改。所述主要開發評審委員會成員316文檔化所述附加需求,以便程式設計師322可以更新和重新提交。此過程可以重複直到所述主要開發評審委員會成員316相信所述組件被完成。
還參照圖4,在一個實施例中,所述產品管理者302確定開發項目的範圍(步驟408),如上所述。所述項目經理302(可能與設計師308配合)生成組件、多個組件、或者將開發的應用、以及開發時間安排和預算的規範(步驟412)。
在一個實施例中,所述產品管理者302主持合作論壇以便確定潛在的開發項目的範圍。在一些實施例中,所述信息可以是對新的軟體組件的思想,並且在一些實施例中,所述信息可以是對現存的軟體組件的附加需求。在一些實施例中,所述信息可以是對由預先開發的軟體組件組合組成的軟體應用的思想。所述合作論壇可以包括開發人員、顧客、預期的顧客、或者對開發軟體組件感興趣的其他人。在一個實施例中,所述合作論壇是一種聯機論壇,其中參與方可以發送思想、詢問、建議或者其他信息。在一些實施例中,只有論壇成員的子集可以向論壇發送建議。一旦所述產品管理者302確定收集了所述軟體組件的必要需求,所述產品管理者302就可以創建組件的需求規範。所述產品管理者302在那個時候可以選擇性地終止所述合作論壇。
在一個實施例中,所述規範定義了商業計劃、穩定的硬體和/或軟體平臺、或者其他體系結構約束。例如,所述規範可以定義網絡裝置、伺服器以及通用的基礎結構,以便支持項目和產品的開發和生產。所述規範還可以識別組件必須依照其進行編制的語言,軟體組件的功能概述、邊界約束、效率需求、計算機平臺需求、接口要求、性能標準、測試例需求和/或組件的文件需求。在一些實施例中,所述規範可以包括將支付給提交最佳設計的設計者的適量貨幣。
一旦完成所述規範,所述產品管理者302向其他組員傳達所述規範(步驟416)。此傳達可以經由通信網絡112(圖1)進行,諸如經由電子郵件消息來執行,在瀏覽器116可訪問的網頁上經由新聞組、傳真或者其他通信方式來發送。所述產品管理者302可以與設計師208和/或任何其他組員212,216通信,以便獲得對所述規範的評價和/或建議。在一個實施例中,所述產品管理者302向開發評審委員會310的一個或多個成員傳達所述規範。在一個實施例中,所述開發評審委員會310依照如上所述的方法選擇所述主要開發評審委員會成員316。所述開發評審委員會還可以評審(並且在一些實施例中選擇)主要開發評審委員會成員316的工作。所述主要開發評審委員會成員316然後開發對組件的測試計劃(步驟420),如上所述。所述程式設計師322然後開發用於滿足由所述規範描述的所有需求的組件(步驟424)。一旦開發了所述組件,主要開發評審委員會成員316就測試完成的組件(步驟428)。如果所述軟體組件通過主要開發評審委員會成員316的測試(並且在一些實施例中是主要設計師評審委員會成員308和/或產品管理者302),那麼將所述組件添加到組件目錄(步驟432)。
在一個實施例中,所述產品管理者302可以證明組件可以在多個計算環境中操作(步驟436),其中所述計算環境可以包括硬體平臺、作業系統、應用伺服器、連網協議、資料庫管理系統等等的變化或者組合。例如,讓開發的軟體組件在運行WINDOWS 2000 Server的基於Intel的PC上操作、並且證明SQLServer資料庫可以在具有Oracle資料庫的SUN Solaris伺服器上操作,這是十分有益的。所述證明可以由作為證明庫一部分的評級開發成員來進行。所述證明庫能訪問伺服器104,以便在多個平臺組合上測試組件。在一些實施例中,所述證明庫包括被選擇以便證明組件的開發人員,並且對於每個完成了的證明將給予他們額定金額的補償。所選擇的開發人員可以是用於開發的開發人員或者其他開發人員。
在一個實施例中,所述主要體系結構評審委員會成員308測試組件的功能,並且評審由所述開發小組200產生的可交付的內容,諸如原始碼以及文檔。此外,如果所述組件足以通過設計師的測試,那麼所述主要體系結構評審委員會成員308可以向產品管理者302傳達最後審批。所述產品管理者302還可以在批准它們進入組件目錄以前獨自驗證可交付的內容。在一些實施例中,所述組件可以由不同於提交組件的開發人員的開發人員來評審。
此外,在一些實施例中,所述組件基於組件在各種測試中執行的好壞來進行評分,其中所述各種測試是開發小組300應用於所述組件的。例如,所述產品管理者302可以使用伺服器104(圖1)來使組件經歷一個或多個將開發小組300每個成員的貢獻作為目標的測試,。使用此目標測試的結果,所述產品管理者302(例如使用伺服器104)可以獲得每個組員的組件開發得分,其因此能用來確定這種組員是否將用於後續組件開發項目。組員的評級是這樣一種過程,其包括但是不局限於組件的性能、按期遞送、任務完成以及可交付的有效性。
然後所述開發小組300可以確定如果所述組件的評分未曾達到上面預定的分值,那麼不將所述組件添加到組件目錄。在一個實施例中,如果不添加所述組件,那麼開發小組300的成員(例如開發人員322)在組件上所作的工作而得到補償不會象組件獲得較高得分那樣高。補償例如可以是以下形式現金補償、假期、有形對象、無形的對象或者其任意的組合。
參照圖5,開發人員依照他們在編碼競賽中的成績、他們在設計、測試或者編碼組件中的成績、以及其它可能的因素,有選擇性地被評級(步驟508)。所述產品管理者302向開發人員傳達規範(步驟512)。在一些實施例中,所述產品管理者302隻向具有評級的開發人員傳達所述規範,或者向評級值超過預定最小值的開發人員傳達。
開發人員響應所述規範創建設計或者組件,並且提交那些設計或者組件給產品管理者302、主要體系結構評審委員會成員308或者主要開發評審委員會成員316以供評審(步驟516)。
每個提交內容因此能基於質量標準被評分,所述質量標準例如但不局限於功能、風格、編碼標準的遵守、性能以及穩定性(步驟520)。一旦評估了每個提交內容,就將一個提交內容選為成功提交內容(步驟524)。然後所述產品管理者302使用如下所述的任何方法分配一部分收入給創作成功提交內容的開發人員(步驟528)。
參照圖6,在一個特殊的實施例中,產品管理者302進行市場調查(步驟602)以便確定對特定軟體組件的需要。基於研究結果,所述產品管理者302規定軟體組件的設計要求(步驟604)。
所述產品管理者302識別(其可以包括選擇)體系結構評審委員會304的成員(步驟606),並且向體系結構評審委員會304提供所述規範(步驟608)。在一個實施例中,所述產品管理者302將所述規範置於網絡伺服器上,以便可以由體系結構評審委員會304訪問。
所述體系結構評審委員會304可以是早已確定的,作為持久體系結構評審委員會304,或者所述體系結構評審委員會304成員可以被識別為此特定組件的體系結構評審委員會304成員。在一個實施例中,所述體系結構評審委員會304成員由產品管理者302通過他們的專業技術、他們的評級以及他們參與此能力所表示的意願的一個或多個來選擇。在一個實施例中,所述體系結構評審委員會304成員因為他們在評審委員會304中的參與而獲得補償。
在一個實施例中,所述體系結構評審委員會304對公眾成員開放。在另一個實施例中,所述體系結構評審委員會304限於已經參與至少一個設計或者編碼競賽,並且基於他們的競賽成績被選擇性地預先鑑定的軟體設計師(步驟610)。在另一個實施例中,只有一個或多個競賽中出色的設計者才有參與體系結構評審委員會304的資格。
例如,一系列競賽可用於從大量競賽者中識別出色的開發人員。作為選擇,可以要求體系結構評審委員會304成員周期地具有在此過程中選擇的組件。一旦所述產品管理者302提供所述體系結構評審委員會成員對所述規範的訪問,委員會成員304就評審所述規範以便理解所述設計要求(步驟612)。所述委員會成員304可以請求澄清或者修正規範,並且所述產品管理者302可以響應。以這種方式,所述評審委員會成員304確信他們理解他們將評估的組件的需求。
當所述體系結構評審委員會304已經評審了設計需求規範時,將所述需求提供給設計者。在一些實施例中,在被授權訪問所述設計規範之前,軟體設計師308,308′以及308」(通稱為308)如上所述基於評級、技能或者其他標準被預先鑑定。所述產品管理者302或者體系結構評審委員會304的成員賦予滿足預先鑑定要求的設計者對規範的訪問權。在一些實施例中,訪問可以通過網頁(其可以要求對訪問的認證)、通過電子郵件或者其他技術來授權。所述設計者308可以評審所述規範(步驟616,616』以及616」)以及開發設計(步驟618,618』以及618」)。當設計者308已經完成了他的或者她的設計時,設計者308向體系結構評審委員會304提交所述設計(步驟620,620』以及620」)。
所述設計可以採用多個形式,這取決於指定的組件。通常,組件的規範將包括設計需求。在一個實施例中,所述設計包括類圖,其可以依照統一建模語言(UML),例如使用Poseideon Computer Aided SoftwareEngineering(CASE)工具來開發,所述工具可以從德國的Gentleware AGof Hamburg購買到。所述設計還包括使用用例圖以及順序圖。所述設計還包括編寫用於描述所述設計的組件設計規範、所要求的算法列表以及用於設計中類的分類存根。所述設計還包括可用於測試程序的功能測試。在這種實施例之一中,所述功能測試是與測試基礎結構的JUnit兼容的測試。JUnit是用於測試Java軟體的開放式源軟體,其可以從www.sourceforge.net中獲得。
所述體系結構評審委員會304評審接收到的設計(步驟622)。在一個實施例中,此評審包括由主要評審者進行的第一篩選評審,然後通過評審委員會的其他成員進行進一步評審。第一篩選評審確定包括設計所要求的元素(例如,類、用例以及順序圖、組件規範、所要求的算法、分類存根以及功能測試)。
篩選評審還可以確定完整的呈現了這些元素。例如就類圖而言,並且依照特定的類定義,篩選評審可以確定下述內容的一項或所有(1)所述類定義提供類用途的描述性概述,(2)子程序包以及被創建以便區分功能,(3)類範圍匹配類用途,(4)存在程序設計技術的正確並且有效的使用,諸如繼承以及抽象,(5)正確地使用接口,(6)為所述組件定義適當的構造函數,以及(7)適當地使用類修飾,諸如最後的、靜態的。就變量定義而言,所述篩選評審例如還可以確定(1)正確定義變量作用域,(2)為效率和靈活性之間的平衡適當地定義類型分配,以及(3)將所有變量定義具有初始值。此外,例如就方法定義而言,所述篩選評審可以確定(1)正確定義範圍,異常被適當地操作並且使用,正確地使用修飾,使用返回值類型,正確地定義方法參數,以及按照需求規範中申明的應用編程接口(API)是有效的。
所述篩選評審例如還可以驗證在所述設計中所有公共方法存在的用例圖,並且驗證每個用例存在的順序圖。就測試例而言,所述篩選評審例如還可以驗證提供給每個順序圖的功能測試例,以及驗證它們好像是適合於那些圖。
在一個實施例中,所述初始篩選將條目的數目減少到評審委員會用於評審的可管理的數目,諸如5個條目。
所述體系結構評審委員會評估所述設計以便確定他們是否符合所述規範(步驟624)。在進行初始篩選的實施例中,評審委員會的成員均執行評審以便評估提交內容。
在一些實施例中,例如基於設計的質量以及它符合規範中說明的需求的好壞,所述體系結構評審委員會304可以計算提交內容的得分。例如,評審委員會成員將確定是否可以進行以下操作並且到何種程度(1)所述設計解決了在功能說明中詳細描述的需求,(2)所述設計有效地使用所有需求的技術(例如,語言、所要求的組件等等),(3)所述設計結合有效的標準設計模式以及方法論,(4)所述設計平衡設計模式的使用以及所期望組件用途的原理,(5)除了最初打算的用途,所述設計解決結合附加功能以及特徵。
在一些實施例中,每個體系結構評審委員會成員還嚴格地評估設計元素的程度。例如,就類圖而言,具體來講,例如就類定義而言,所述體系結構評審委員會成員評估所述類圖是否精確地並且徹底地描述了所要求的組件元素。所述委員會成員還評估所述設計是否適當的賦予所期望的組件用途以及吞吐量需求。就變量定義而言,所述委員會成員評估變量類型是否適合於所期望的組件用途,並且確定所使用的變量是否滿足最小值和最大值參數。就方法定義而言,所述委員會成員評估以下內容的程度(1)定義的方法正確陳述在所述需求規範中定義的API需求,(2)所述方法提供對定義變量的訪問以及正確封裝,以及(3)所述異常定義是預期的異常的詳表。所述委員會成員還可以評估(1)是否很好地定義了類關係,(2)用例表是否徹底地描述了類用途,(3)所述順序圖是否徹底地描述了類之間的順序交互,(4)所述組件規範是否向待實現的此設計提供了足夠的信息,是否詳細描述了對於所定義的方法應該如何處理非法參數,並且是否詳細描述了所定義方法拋出的異常,以及(5)那些測試例是否徹底地並且精確地闡明組件功能。所述委員會成員因此能給每個條目指定總體得分。
例如,所述體系結構評審委員會304成員可以使用圖1的伺服器104來向其他委員會成員錄製和傳達他們的組件設計評估。在一個實施例中,所述委員會成員使用在線的評估表格來評估每個組件。所述委員會成員的評估因此能被識別,並且接到由委員會成員評級的組件。
在一個實施例中,所述體系結構評審委員會304成員還可以使用圖1的伺服器104來使設計經歷一個或多個測試,所述一個或多個測試把規範中定義的個體需求作為目標。使用這些目標測試結果,體系結構評審委員會304的成員(例如使用伺服器104)可以獲得每個提交內容的設計得分。基於提交內容的評估,所述體系結構評審委員會304選擇一個設計作為成功提交內容(步驟626)。
在一些情況下,基於由評審者識別的附加思想和問題,需要對設計進行修改,即使所述設計具有很高的得分。在一個實施例中,所述體系結構評審委員會304將所述設計送回給提交了成功設計的設計者308,以及修改建議、對確定修改的明確指示或者其他命令等等。在一些實施例中,所述主要體系結構評審委員會成員進行修改。所述設計者308將所述改變併入設計(步驟628),並且向體系結構評審委員會304重新提交所述設計(步驟630)。然後所述體系結構評審委員會304執行所述設計的最終質量控制評審(步驟632),並且向產品管理者302發送設計。所述產品管理者302因此能基於所述成功設計來使用該設計徵求開發軟體組件(步驟634),例如參照圖7進一步說明的那樣。所述產品管理者302還可以支付成功設計者308報酬,所述報酬或者是一般的收費,或者使用如下所述的方法。
參照圖7,軟體設計一旦是有效的,例如通過使用圖6的方法或其他,那麼所述設計可用於簡化軟體組件的開發。
所述產品管理者302識別開發評審委員會310的成員(步驟702)。此可選擇性地包括為所述組件在前或者當前選擇的開發評審委員會。所述產品管理者302將所述設計提供給開發評審委員會310(步驟704)。在一個實施例中,所述產品管理者302將所述設計置於網絡伺服器上,以便可以由開發評審委員會訪問。
所述開發評審委員會310可以早已作為持久開發評審委員會310被確定,或者所述開發評審委員會310成員可以作為特定組件或者組件組的開發評審委員會成員被識別。在一個實施例中,所述開發評審委員會10成員由產品管理者302根據他們的專業技術、他們的評級以及他們參與此能力所表示的意願的來選擇。在一個實施例中,所述開發評審委員會成員在將所述軟體組件提交之後被選擇,以便給予所有開發人員提交組件的時機。在一個實施例中,所述開發評審委員會310成員因為他們在評審委員會310中的參與而獲得補償。此補償可以是認可的形式,一般費用或者按小時的費用,或者是由組件產生的收益的百分比。
在一個實施例中,所述開發評審委員會310對公眾成員開放。在另一個實施例中,所述開發評審委員會310限於已經參與至少一個設計或者編碼競賽的軟體開發人員,並且基於他們的競賽成績被選擇性地預先鑑定(步驟710)。在另一個實施例中,只有一個或多個競賽中出色的開發人員才有參與開發評審委員會310的資格。
例如,一系列競賽可用於從大量競賽者中識別出色的開發人員。作為選擇,開發評審委員會310成員可以被要求最近已經提交了一個或多個成功組件或者設計。一旦所述產品管理者302授權所述開發評審委員會310對所述規範的訪問,委員會成員就評審所述規範以便理解所述開發要求,如上所述(步驟708)。所述開發評審委員會成員310可以請求澄清或者修正規範,並且所述產品管理者302可以響應。以這種方式,所述開發評審委員會310可確信他們將評估的組件的需求。
在一些實施例中,在被授權訪問所述設計之前,所述軟體開發人員(也稱為程式設計師)314,314』和314」(通稱為314)也被預先鑑定(步驟710、710』以及710」),這與如上所述的委員會成員相似(例如評級等等)或者不同。然後所述產品管理者302或者開發評審委員會310的成員授權那些滿足預先鑑定要求的開發人員對設計的訪問權。在一些實施例中,所述訪問可以通過以下方式被授權,所述方式為開發人員314輸入密碼,開發人員314操縱用於檢驗開發人員資格的特定網頁,產品管理者302將所述規範利用電子郵件發送給開發人員314,或者其他類似手段。
一旦授權對規範進行訪問,所述開發人員314因此能評審所述規範(步驟712,712』以及712」),並且開始開發與發送的設計一致的軟體組件(步驟714,714』以及714」)。一旦開發人員314已經完成開發他們的軟體組件,所述開發人員314就向開發評審委員會310提交所述組件(步驟716,716以及716」)。
在一些實施例中,所述組件歷經同等評審過程。所述同等評審過程允許開發人員測試並且評審由其他開發人員開發的組件。例如,開發人員314可以創建軟體組件,並且在提交之前,開發人員314」可以使所述組件經歷一個或多個測試以便確定組件的質量。如上所述,所述開發人員314,314』以及314」通常具有最小值,或者彼此沒有優先的關係。在一個示範性的實施例中,所述開發人員使用在線的綽號而不是他們的真實身份。因為所述組件歷經此獨立的並且不記名的同等評審過程,所以提交的組件質量將會很好。
所提交的組件可以採用多個形式,這取決於規定的組件。通常,組件的規範將包括開發組件的需求。在一個實施例中,開發的組件包括原始碼,其可以依照Java程序設計語言來編寫,例如使用來自於California,Santa Clara的Sun Microsystems的Java 2 MicroEdition(J2ME)開發平臺。所述組件還包括單元測試例,並且相對於測試例記錄成功文檔化的執行過程。所述組件還包括文檔。在這種實施例之一中,所述文件一致於Javadoc類型文檔。所述組件還包括使用指南。
所述開發評審委員會310評審接收到的組件(步驟718)。在一個實施例中,此評審包括由主要評審者進行的第一篩選評審,然後通過開發評審委員會310的其他成員進行進一步評審。第一篩選評審確定設計所要求的元素被包括並且是起作用的(例如,原始碼、單元測試例、文件、記錄文件以及使用指南)。
篩選評審還可以確定這些元素是完整的。例如就原始碼而言,所述篩選評審可以確定以下項的任意或者所有(1)明顯地註解所有公共方法;(2)包括所需要的標記諸如「@_author」、「@_param」、「@_returm」、「@_throws」以及「@_version」;(3)填充版權標記;(4)所述原始碼跟隨Java語言的標準編碼約定,諸如由Sun Microsystems出版的那些;(5)將4個空格縮格用於代替tab縮格;以及(6)在所述類圖中找到的所有類、方法以及變量定義被精確地依照原始碼表示。所述開發篩選評審例如還可以驗證存在於所述設計中所有公共方法的單元測試例,並且每個單元測試由一種測試程序正確地識別。
在一個實施例中,所述初始開發篩選過程將條目的數目減少到開發評審委員會310評審的可管理數目,諸如5個條目。
所述開發評審委員會310評估組件以便確定它們是否符合所述設計(步驟720)。在進行初始篩選的實施例中,評審委員會的成員均執行評審以便評估所提交的組件。
所述開發評審者相對於所述設計評估組件編碼。在一個實施例中,例如就所述組件而言,所述評審者評估以下內容的程度(1)所述實現闡明在組件設計文檔中詳細描述的功能;(2)所述實現正確使用所有要求的技術(例如語言、所需要的組件等等)以及程序包;(3)所述實現正確地實現所要求的算法;(4)所述實現已經依照設計中的定義正確實現(而非修改)公共應用編程接口(API),沒有附加公共分類、方法或者變量。
例如就類定義而言,所述評審者評估按照設計文件中的定義實現的分類的程度(例如包括修飾、類型以及命名規則)並且評估所定義的分類是否被實現。例如就變量定義以及方法定義而言,所述評審者評估所有變量以及方法按照設計文件中的定義來實現的程度(例如包括修改量、類型以及命名規則)。例如就關係而言,所述評審者評估所述實現正確映射分類關係的程度。
所述評審者還可以通過執行代碼評審來進一步評估所述編碼。例如,所述評審者可以確定在實現中定義的對象類型是所期望用途的最佳選擇的程度,例如是否本應代替數組類型而使用向量類型。所述評審者可以確定存在任何不必要的循環、或者粗略的對象實例化或者變量分配的程度。例如就測試例而言,所述評審者可以確定以下內容的程度(1)所述單元測試例徹底地測試所有方法以及構造函數;(2)所述單元測試例正確地使用安裝和卸載方法以便配置測試環境;(3)用於單元測試例的文件存在於指定目錄中;(4)在測試完成之後,單元測試例沒有在文件系統上留下臨時文件。
所述評審者甚至可以通過進行準確性、故障以及壓力測試來進一步評估所述編碼。準確性測試可以當提供有效輸入時測試輸出結果的準確性。準確性測試還可以確認配置數據。故障測試用於當所述組件具有無效輸入時測試校正故障行為,所述無效輸入諸如錯誤的數據以及不正確的使用。壓力測試用於測試組件大量操作的能力,但是將其作為吞吐量的性能來測試這種特徵。失效的測試被歸入組件的評估,例如作為得分減少。每個評審者因此能根據此評估為組件分配總體得分。
在一個實施例中,所述開發評審委員會成員310可以使用圖1的伺服器104來使所述設計經歷一個或多個測試,所述一個或多個測試例如把設計中定義的個體需求作為目標。使用這些目標測試的結果,開發評審委員會的成員(例如使用伺服器104)可以獲得每個提交內容的總得分。
例如,所述開發評審委員會成員310可以使用圖1的伺服器104來向其他委員會成員錄製和傳達他們的組件設計評估。在一個實施例中,所述委員會成員使用在線的評估表格來評估每個組件。所述委員會成員的評估因此能被識別,並且組件自動地被接收的委員會成員得分評級。基於提交內容的評估,所述開發評審委員會310選擇一個設計作為成功提交內容(步驟722)。
在一些情況下,對於成功組件可能需要修改。在這些情況下,所述開發評審委員會310將所述組件送回給提交了成功組件的組件開發人員314,以及修改建議、對確定修改的明確指示或者其他命令等等。所述開發人員314將一些或者所有改變併入組件(步驟724),並且向開發評審委員會310重新提交組件(步驟726)。所述開發評審委員會310因此能執行組件的最終質量控制評審(步驟728),並且向產品管理者302發送所述組件。所述產品管理者302因此能在組件目錄中包括所述組件,如下所述,並且進行有效組件的分送(步驟730)。所述產品管理者302還可以給予成功開發人員314報酬,這可以使用如下所述的任一項方法(步驟732)。
參照圖8,所述伺服器104可以包括多個模塊,用於簡化組件的開發和/或區別。例如,組件開發子系統800可以簡化如上所述的開發過程。所述組件開發子系統800利用開發小組200簡化組件開發,並且與許多不同的模塊通信,以便實現分布小組開發過程。
在一個實施例中,並且如以下更加詳細所描述的,所述伺服器104可以包括組件目錄804。所述組件目錄804存儲由開發小組200開發的組件。在一個實施例中,所述組件目錄804向潛在的買方提供與有效組件有關的信息的目錄或者指南。例如,在選擇特殊的組件以前,伺服器104的顧客可以瀏覽組件目錄804的指南以及與組件目錄804中每個組件有關的信息。一旦所述伺服器104(或者組件目錄804的管理員)接收所需要的費用支付或者組件的授權信息,所述伺服器104就經由通信網絡112下載所述組件至客戶端108。以下將參照圖10進一步描述所述組件目錄。
所述伺服器104還包括通信工具808。在一個實施例中,所述通信工具808是用於簡化開發小組200的組員204,208,212,216之間通信的工具。通信工具808的例子包括但是不局限於能夠在組員204,208,212,216之間實時通信(例如閒談)的模塊、新聞組、在線會議以及文檔合作工具。
此外,所述伺服器104還可以包括組件孵化器812。所述組件孵化器812是能夠使用戶提交組件建議或者組件的修改的模塊,其可以稍後作為市場調查的基礎。
所述伺服器104可以包括需求設計子系統816。所述需求設計子系統816使所述產品管理者204以及設計師208能瀏覽和評價需求規範。在進一步的實施例中,所述需求設計子系統816使產品管理者204以及設計師208能創建、編輯、下載、上載和/或批准規範中的需求(例如,經由通信網絡112)。在一個實施例中,所述需求設計系統可以共享並且操縱UML中的模型。
所述伺服器104另外包括開發傳送子系統820。所述開發傳送子系統820使所述伺服器104或者產品管理者204能與潛在的開發小組成員通信,以便促進開發項目並且開發有助於形成組件目錄的貢獻者社團。在一個實施例中,所述開發傳送子系統820向潛在的開發小組成員顯示廣告。在一個實施例中,所述廣告使用文本、圖形、視頻和/或音響來描述項目。所述廣告還可以描述在所述開發小組200中有效的職位。通信技術的例子包括但不限於在伺服器的網絡站點上發送這些廣告,顯示有關所述項目的統計量(例如,給開發小組成員的計劃酬勞報酬、參與此項目的開發小組成員、每周有效的開發小時)。此外,在一個實施例中,所述開發傳送子系統820接受與開發項目相關聯的查詢。在進一步的實施例中,開發傳送子系統820建議競賽成員基數的成員形成處理查詢的開發小組。所述開發傳送子系統820例如可以分析編碼競賽成員基數的每個成員的評級,在前開發項目的在前貢獻,在前組件開發項目的貢獻質量(例如,基於在完成組件時給予每個開發小組成員204,208,212,216的得分,如上所述),以及當推薦競賽成員基數的成員作為開發小組200的一部分時的當前有效潛在組員。所述產品管理者204可以或者不可以是剛才描述的廣告職位。
所述伺服器104還包括管理子系統824。所述管理子系統824是用於向開發小組成員(例如開發人員212、QA開發人員216)分配收益的模塊。在一個實施例中,開發小組成員在組件許可或者組件拷貝出售上賺得酬勞。在進一步的實施例中,所述管理子系統824使所述產品管理者204以及設計師208能瀏覽項目的查詢,並且基於來自於所述伺服器104(即開發傳送子系統820)的推薦來選擇項目組。所述管理子系統824還可以跟蹤開發小組200生產的可交付產品(例如,原始碼、文檔以及方案),和/或能夠在開發組件之後對開發小組成員204,208,212,216進行評審。所述管理子系統824還可以掃描開發小組成員信息,諸如但不局限於歷史、編碼競賽評級以及在先的工作經歷。在一些實施例中,所述管理子系統824可以例如經由圖形用戶界面向產品管理者204和/或設計師208顯示所述開發小組成員信息。
所述伺服器104還包括軟體設計子系統828。所述軟體設計子系統828能夠使組員204,208,212,216之間彼此合作。更具體地說並且在一個實施例中,所述軟體設計子系統828使組員204,208,212,216能瀏覽設計文件和/或評論所述設計文件,所述設計文件諸如對象圖(例如,類圖以及用例圖等等)。在另一個實施例中,所述軟體設計子系統828使開發小組成員204,208,212,216能經由通信網絡112創建、下載、上載和/或編輯設計文檔和/或體系結構文檔。
此外,所述伺服器還包括組件開發環境(CDE)832。所述CDE 832使組員204,208,212,216以及組件的潛在買方能通過將組件連結在一起來創建應用。在一個實施例中,所述CDE 832是一種基於網頁的應用(例如,小程序或者插件程序應用)。在另外的實施例中,所述CDE 832被歸入所述客戶端軟體120。所述CDE 832還能夠將組件從如下所述的測試組件的QA應用轉換為集成模塊(也如下所述),以便創建較大組件或者應用。所述CDE 832還能夠將獨立的組件從QA移動至生產,和/或將應用或者較大組件移動到生產。所述CDE 832可以另外併入商業可得的集成開發環境(IDE)軟體。
所述伺服器104另外包括質量保證(QA)應用836。所述QA應用836能夠測試所有應用和/或組件。在一個實施例中,所述QA應用836執行由QA開發人員216開發的測試例。此外,所述QA應用836可以對組件或者應用執行自動測試,以便可以驗證和/或測量存儲器利用率、線程利用率、諸如I/O利用率以及處理器負載之類的機器統計量。另外,所述QA應用836可以通過性能、設計和/或功能為所述組件評分。此外,所述QA應用836可以是用於同時測試多個組件的檢測設備。
在一個實施例中,所述伺服器104可以包括封裝應用840。所述封裝應用840在可下載的文件(例如.ZIP文件、Java Archive(.JAR文件)或者動態連結庫(.DLL)文件)中封裝可交付的內容(例如,源文件、可執行的文件、文檔和/或支持材料(例如XML,DDL))。在一個實施例中,當顧客從所述組件目錄購買組件時,所述封裝應用840將這些可交付內容封裝到可下載的文件中。所述封裝應用840然後下載所述文件至客戶端108。
所述伺服器104還包括組件陳列室844。所述組件陳列室844通過提供與所述組件有關的信息來同意組件的許可(和/或拷貝出售)以及使用。所述組件陳列室844還可以提供例如但不局限於表明組件用途、表明研究實例、提供相關組件以及應用列表以及提供與標價和/或許可有關的信息的能力。
雖然如上依照獨立的子系統以及模塊進行了描述,但是這僅僅是為了舉例說明的目的,作為選擇,這些子系統以及模塊可以合併為一個或多個模塊或者子系統。例如,在另一個實施例中,所述組件開發模塊800可以執行如上所述的許多功能。此外,如上所述的一個或多個子系統可以位於遠離其他模塊的地方(例如,在伺服器場中的另一個伺服器104上執行)。
參照圖9,所述開發傳送子系統820包括網絡伺服器902。所述產品管理者204可以使用網絡伺服器902來向軟體小組200發送設計或者分送的規範。所述伺服器104還包括評級引擎904。在一個實施例中,所述評級引擎904為一個或多個編碼競賽中的每個參與方計算評級。在其他實施例中,所述評級引擎可以基於各個成員對項目的貢獻來計算項目組200的成員評級。所述伺服器104還包括接收模塊906。在一個實施例中,所述接收模塊906接收由項目組200的成員提交給開發傳送子系統820的計算機軟體設計。作為選擇,所述接收模塊906簡化從開發人員212的提交內容的接收,所述開發人員212競爭開發小組200中的職位。所述伺服器104還包括評分模塊908。在一個實施例中,所述體系結構評審委員會304使用所述評分模塊908來評估由軟體設計師308提交的多個軟體設計。另外,所述開發評審委員會310可以使用評分模塊908來評估由程式設計師314提交的多個軟體組件。所述伺服器104還包括評審模塊910。另外,開發人員可以使用評審模塊910來評審來自於其他開發人員的提交內容。在一個實施例中,所述網絡伺服器902、評級引擎904、接收模塊906、評分模塊908以及評審模塊都駐留在所述伺服器104上。作為選擇,所述網絡伺服器902、評級引擎904、接收模塊906、評分模塊908以及評審模塊910可以駐留在其他伺服器或者遠程設備上。
參照圖10,所述組件目錄804包括組件存儲庫1004。所述組件存儲庫1004是用於伺服器104可以公布以及賣給買方的那些組件的集中存儲器。在一個實施例中,將所述組件目錄804存儲在伺服器104上。作為選擇,所述組件目錄804可以存儲在另一個伺服器或者遠程存儲裝置上(例如,資料庫伺服器)。在一些實施例中,所述組件存儲庫1004向希望購買組件或者其信息的潛在買方提供用戶接口,通常,所述用戶接口生成由買方使用以便與所述伺服器104通信的客戶端軟體120或者瀏覽器116的代碼。
所述組件目錄804另外包括信息模塊1008。所述信息模塊1008向所述組件存儲庫1004提供與所述組件有關的信息。例如,所述信息模塊1008可以提供或者包括列出伺服器104支持組件的表,伺服器104存儲在所述組件存儲庫1004中。此外,所述信息模塊1008還可以向組件存儲庫1004提供每個組件的文檔,諸如但不局限於組件的存儲器需求、效率、在QA測試中接收的得分以及開發小組200的成員。在一個實施例中,所述信息模塊1008與所述組件存儲庫1004通信,以便向所述組件存儲庫1004提供組件信息,以便例如使潛在的買方在選擇期間可以瀏覽組件信息(例如性能)。
所述組件目錄804還包括更新跟蹤模塊1012。所述更新跟蹤模塊1012確保組件存儲庫包含組件的最新版本。在一個實施例中,當確定對顧客預先購買的組件進行修改時,所述組件目錄804接收改變。所述更新跟蹤模塊1012確保修改的組件被存儲在所述組件存儲庫1004中。在一些實施例中,所述更新跟蹤模塊1012警告產品管理者204或者設計師208所述修改。在又一實施例中,為了更加有效的更新,所述更新跟蹤模塊1012隻將組件修改部分發送到組件存儲庫1004。在進一步的實施例中,如果修改了組件,那麼所述更新跟蹤模塊1012將消息發送給已經預先購買了組件在前版本的所有顧客,以便通知顧客可以獲得新的版本,以及此版本和在前版本之間的不同。
所述組件目錄804另外包括從屬跟蹤模塊1016。所述從屬跟蹤模塊1016跟蹤在應用中連結在一起的組件之間的從屬關係。例如,組件買方從伺服器104購買組件A。組件A是由組件B、C和D組成的較大組件。如果組件C隨後被修改,那麼在一個實施例中,所述伺服器104通知所述買方組件C已經修改,並且組件C與組件A失去依賴關係。然而,所述買方對組件A感興趣。如果所述買方只更新組件C,那麼買方的組件A不可以操作,除非買方下載更新的組件B和D。所述從屬跟蹤模塊1016是用於跟蹤這種從屬關係的模塊。在一些實施例中,所述從屬跟蹤模塊1016通知顧客有關從屬關係。
所述組件目錄804還包括集成模塊1020。在一個實施例中,所述集成模塊1020集成組件目錄804中的組件以便形成較大組件或者應用。例如,所述產品管理者204可以確定存在對特殊的組件A的需要。如果所述產品管理者204認識到在組件目錄204中不存在組件A,但是認識到存在也許能使用其他組件創建組件A的那些其他組件,那麼產品管理者204可以計劃項目以便創建組件A。在一個實施例中,所述集成模塊1020便於將多個組件集成為一個較大的組件。
例如並且參照圖11,組件目錄系統1100包括操作第一客戶端108的第一公司1104以及操作第二客戶端108』的第二公司1108。所述公司1104,1108經由通信網絡112與所述伺服器104通信。所述伺服器104包括組件目錄804,並且所述組件目錄804包括更新跟蹤模塊1012。雖然沒有舉例說明,每個客戶端108,108』都包括各自的瀏覽器116,116』,所述伺服器104包括如在圖8中所述的模塊(例如組件陳列室844),並且所述組件目錄804包括如上在圖10中所述的模塊(例如信息模塊1008)。
在一個實施例中,所述伺服器104分別向第一以及第二公司1104,1108發送遠程上載跟蹤模塊1112,1112』(通稱為1112)。當公司1104,1108修改存儲在組件目錄804中的組件時,每個遠程上載跟蹤模塊1112與上載跟蹤模塊1012通信。另外,所述遠程上載跟蹤模塊1112還使公司(例如1104,1108)能將他們的組件添加到組件目錄804,由此使所述組件對於其他公司可用。在一些實施例中,所述遠程上載跟蹤模塊1112可以依照各種形式來實現,例如,它可以是下載到客戶端108並且結合所述瀏覽器116和/或客戶端軟體120運行的Java小程序,或者所述遠程上載跟蹤模塊1112可以是獨立應用的形式,依照諸如Java的多平臺語言或者依照本地處理器可執行代碼來實現。此外,所述遠程上載跟蹤模塊1112可以作為客戶端軟體120來實現。
在一個實施例中,第一公司1104產生組件1116的第一版本。在一個實施例中,所述遠程上載跟蹤模塊1112然後自動地將所述組件1116經由通信網絡112發送到伺服器104(例如,上載跟蹤模塊1012),以便添加到組件目錄804中。作為選擇,如果第一公司1108希望提交組件到組件目錄804,並且由此使所述組件對於其他公司可利用(例如第二公司1108),那麼所述遠程上載跟蹤模塊1112查詢第一公司1108(例如第一公司1104的僱員)。例如,所述遠程上載跟蹤模塊1112經由對話框查詢第一公司1104(例如,在所述瀏覽器116或者客戶端軟體120上顯示)。如果第一公司1104同意所述查詢(例如,從用於將組件1116添加到組件目錄804的會話中選擇YES),那麼所述遠程更新跟蹤模塊1112向所述伺服器104發送組件1116,如箭頭1120所示。在一個實施例中,所述遠程上載跟蹤模塊1112具有選項(例如複選框),以便將完成的組件發送到伺服器104。一旦選擇了所述選項,那麼遠程上載跟蹤模塊1112不查詢第一公司1104,而是自動地將完成的組件發送到伺服器104,並且如此這樣執行,直到未選擇選項。另外,雖然朝向第一公司1104修改,但是所述描述還適用於第二公司1108。在另一個實施例中,諸如酬勞談判、工作確定等等的其他功能可以在將第三方組件添加到組件目錄804以前進行。
在一個實施例中,所述上載組件在添加到組件目錄804之前經歷此處所述的QA過程。在一個實施例中,當接收組件1116的第一版本時,所述伺服器104使組件1116經歷圖4中如上所述的一個或多個步驟。例如,所述伺服器104在沒有對組件執行QA測試時,不添加組件1116到組件目錄804中(步驟428)。在另外的實施例中,所述伺服器104不添加所述組件1116到組件目錄804,直到設計師208向所述產品管理者204提供最後批准。由此,如果組件1116的版本1不滿足設計師208(和/或產品管理者204)的嚴格編碼標準需求,那麼不將所述組件1116添加到組件目錄408。在進一步的實施例中,所述伺服器104通知第一公司1104所述組件1116不滿足組件目錄804條目中所要求的標準。所述伺服器104可以另外提供第一公司1104在組件1116中發現的問題。
如果所述組件1116滿足伺服器的需求,並且因此被添加到所述組件目錄804,那麼伺服器104因此能在組件目錄804中顯示組件1116,以便潛在的購買。由此,如果第二公司1108瀏覽組件目錄804(例如,經由組件陳列室844),那麼第二公司1108可以購買所述組件1116的版本1。在出售之後,所述伺服器104隨後發送所述組件1116到第二公司1108,以箭頭1124說明。在一個實施例中,第一公司1104可以因為組件版本1的任何出售而得以補償。
參照圖12,在一個實施例中,第二公司1108購買組件的版本1,並且隨後修改所述組件1116,依照修改箭頭1128示出。例如,修改被改進(例如效率增加、減小內存需求)、刪除(例如不必要的步驟或者特徵)以及向所述組件1116的添加(例如,免費贈送的特徵或功能)。修改的另一個例子是組件1116到另一個組件(例如較大組件)中的集成。響應所述修改,組件1116的版本1例如變成組件1116』的版本1.1。在一個實施例中,所述遠程更新跟蹤模塊1112將消息發送到伺服器104,用於聲明第二公司1108已經修改了組件1116。在進一步的實施例中,所述遠程更新跟蹤模塊1112然後向伺服器104發送(或者例如查詢以及發送)修改的版本1.1,如箭頭1132所示。當收到組件1116』的版本1.1時,所述伺服器104和/或開發小組成員通過執行圖4中示出的步驟來確定修改的組件1116』是否可以添加到組件目錄804。在一個實施例中,當組件1116』的版本1.1.添加到組件目錄804中時,版本1.1.替換組件1116的版本1。作為選擇,組件1116』的版本1.1被作為另一個組件添加到組件目錄804中。組件1116』的版本1.1的置換或者添加可以取決於相對於組件版本1的改變量。此外,所述更新跟蹤模塊1012可以通知預先購買組件1116的版本1的每個顧客更新方案1.1已經添加到所述組件目錄804。其他模塊1008,1016,1020還可以通知顧客例如有關附加從屬關係以及可得到的信息。另外,在一些實施例中,第二公司1108因為許可/出售組件1116』的第二版本的拷貝而得以補償。
在一個實施例中,對軟體產品(例如組件或者軟體應用)起作用的開發小組(例如208,212,216)的成員,因為他們對產品起的作用而獲得報酬。雖然優選的是軟體組件,但是由分布式軟體開發系統101開發的產品可以是任何軟體應用或者智慧財產權類型。在一個實施例中,並且如對於圖8所述內容,伺服器104的開發傳送子系統820發送項目清單以及項目清單中的項目描述,諸如在廣告中。所述廣告或者發送例如可以包括每個開發小組成員的貢獻,開發小組成員因為對所述項目所起的作用而接收的費用以及整個開發小組的總體貢獻。
在一個實施例中,開發小組的成員基於他們對產品的貢獻以及通過許可或者出售產品的拷貝而賺得的收益來接收酬勞。伺服器104的所述管理子系統824(上述參照圖8所描述的)跟蹤具體特徵來確定將給予開發小組成員的酬勞數額。在這種實施例之一中,所述費用是對酬勞的預付款,這意味著在預付款足數之前不支付酬勞。
在一個實施例中,並且參照圖13,所述伺服器104(例如所述管理子系統824)跟蹤項目和/或每個開發小組成員的總收益1304、開發小組成員貢獻1308、開發小組成員酬勞百分比1310、酬勞庫百分比1311、酬勞庫1312以及酬勞1316。
在一個實施例中,所述貢獻1308是在開發工作前面規定的預定的量。在另一個實施例中,每個成員的貢獻1308通過時間量、技能水平(由在前得分、競賽評級、經驗或者組合確定)或者開發小組成員工作程度來確定。在另一個實施例中,所述貢獻1308通過開發小組成員貢獻的有用性來確定。期望的開發小組成員(例如208,212,216)成比例的貢獻是開發小組成員的酬勞百分比1310。在一個實施例中,所述開發小組成員的酬勞百分比1310通過按照被期望以便由所有開發小組成員來開發可交付內容(例如,組件以及相關文件)的總工作貢獻,來劃分為被期望以便由開發小組成員需要來實現她的任務的總工作貢獻1308來確定。如果改變了所述組件,諸如升級或者另外修改,那麼可以將開發小組成員的酬勞百分比1310因所述修改的版本而進行調整,以便反映新的貢獻劃分。
在一個實施例中,為產品選擇酬勞庫百分比1311。所述酬勞庫百分比1311是總收益1304的百分比(例如每年、每季度或者每月的收益),所述百分比將被保留給特許使用金1316,該獎金將給予對所述產品起作用的開發小組。在一個實施例中,每個產品的預期酬勞庫百分比1311在有效規範文檔中被提出。在一些實施例中,所述酬勞庫百分比1311可以取決於其他事務因素,諸如時間或者產品的流行。然後,所述酬勞庫1312是產品的部分收益1304,其中所述產品依照特許使用金1316將分送到開發所述產品的開發小組成員。在一個實施例中,所述酬勞庫1312通過將酬勞庫百分比1311乘以總收益1304來進行確定,其中所述總收益是預定時間周期期間通過產品的出售或許可而收到的。
所述管理子系統824跟蹤數據結構1324中的信息。在一個實施例中,存在過剩產品,其存儲在所述組件目錄804中。此外,已經致力於或者正在致力於一個或多個項目的人數是相當大的。為了跟蹤用於精確確定每個開發小組成員對產品的貢獻1308的補償的信息,採用了伺服器104的所述管理子系統824。
在一些實施例中,所述伺服器104跟蹤並且存儲滑動比例酬勞1320,這基於這樣一種選擇,其中當他們同意對項目的作用時,開發小組成員可以確定組員的初始補償報酬量(例如設定費用)。以下根據圖16更詳細地描述所述滑動比例酬勞1320。在一個實施例中,所述管理子系統824在補償數據結構1324中存儲此信息1304、1308、1312、1316、1320。所述數據結構1324例如可以存儲在伺服器的存儲器中,或者存儲在外存儲器中和/或永久性存儲器中。
例如並且參照圖14,酬勞補償表1400包括三個開發小組成員1404,即成員1、成員2以及成員3,他們都是開發小組的貢獻者。例如,成員1可以是設計師208,成員2可以是開發人員212,並且成員3可以是質量保證(QA)開發人員216。依照此實施例,成員1的貢獻1308是100小時,成員2的貢獻1308是200小時,並且成員3的貢獻1308是300小時。在此例子中,每個成員(例如成員1、成員2、成員3)的貢獻1308可以通過每個成員需要的小時的期望值來確定(如通過產品管理者204確定)。在其他實施例中,所述貢獻1308例如可以通過花費的小時實際數目、編寫或者測試的設計的模型或者代碼的實際金額等等來進行確定。
在此例子中,開發小組的貢獻1308的總數1410是600小時。所述開發小組成員酬勞百分比1310是被總貢獻除的每個成員貢獻1308。在此例子中,總貢獻是(100+200+300)=600小時。然後,所述開發小組成員酬勞百分比1310對於成員1(100/600)=17%;對於成員2(200/600)=33%;並且對於成員3(300/600)=50%。
在此例子中,總收益1304是$20,000。此產品的酬勞庫百分比1311是5%。所述酬勞庫1312因此是($20,000×5%=)$1,000。由此,每個開發小組成員1404賺得的酬勞1316是酬勞庫1312的他們的酬勞百分比1310。具體來講,成員1接收($1,000×17%=)$170,成員2接收($1,000×33%=)$330,而成員3接收($1000×50%=)$500。在一些實施例中,當接收產品的附加收入時,這些特許使用金1324往往依照類似方式進行提取。
參照圖15,在繼續的例子中,通過三個組員1404生產的產品被修改並且更新為另一個版本。新版本可以是圖11中描述的組件1116的版本1.1,或者集成到另一個產品中。所述附加工作通過組員1504執行(例如,成員4以及成員5),並且還通過成員3,而不是成員2以及成員1來執行。所述酬勞被調節以便將新的開發小組成員的貢獻包括在酬勞1316的確定中。在此例子中,成員4的貢獻是50小時,而成員5的貢獻也是50小時。由此,因為兩個附加成員1504的貢獻,貢獻量總數1410增加到750小時。所述開發小組成員酬勞百分比1310是被總貢獻除的每個成員(成員1、成員2、成員3、成員4、成員5)的貢獻。
那麼所述開發小組成員酬勞百分比1310是對於成員1(100/750)=13.33%;對於成員2(200/750)=26.66%;對於成員3(350/750)=46.66%;對於成員4(507750)=6.66%,而對於成員5(50/750)=6.66%。
此外,在此例子中,修改產品生成的總收益1304是$30,000。此產品的酬勞庫百分比1311是5%。所述酬勞庫1312因此是($30,000×5%=)$1500。每個開發小組成員1508接收酬勞庫1312的他們的酬勞百分比1310成員1接收($1500×13.33%=)$200。成員2接收($1500×26.66%=)$400。成員3接收($1500×46.66%=)$700,這高於前述的酬勞1316,所述酬勞1316是在成員3的附加貢獻1308以前、成員3已經預先接收到的。在一些實施例中,當接收產品的附加收入時,這些特許使用金1316往往依照類似方式進行提取。
還參照圖16,在一些實施例中,所述開發小組成員可以通過調節他們的滑動比例酬勞1320來調節他們接收(作為酬勞1316)的收益量。具體來講,所述伺服器104(例如產品管理者204)可以實現滑動比例1606,其使組員能選擇設定費用1608的數額以及開發小組成員酬勞百分比1310的數額,以便開發小組成員可以接受產品成功的或多或少的風險。增加的費用1608將導致酬勞減少,反之亦然,並且因此減少了收到的酬勞1316。由此,所述組員選擇的費用1608數額對應於酬勞選擇1612。滑動比例1606的端點是設定費用1608以及開發小組成員酬勞百分比1310的最大值,它們是所述組員可以因為他們對項目的貢獻1308而得到的。在示出的滑動比例1606中,設定費用1608的值在滑動比例1606的上半部表示,並且開發小組成員酬勞百分比1310在滑動比例1606的下半部表示。在一個實施例中,當請求費用時,潛在的組員酬勞因為設定費用的選擇而被調節。為了確定滑動比例酬勞1320,這往往替換由組員接收到的酬勞1316,伺服器104依照酬勞庫1312並且依照由組員進行的酬勞選擇1612來成倍增加組員的開發小組成員酬勞百分比1310。由此,滑動比例酬勞1320將是總收益1304乘以所述酬勞庫百分比1311乘以開發小組成員酬勞百分比1310乘以酬勞選擇百分比1612。
使用在圖16中舉例說明的例子,根據圖15的成員2、成員3以及成員5,如果成員2在設定費用1608中選擇接收其100%的補償,那麼成員2將在其他可應用方面得到0%的酬勞。由此,因為成員2選擇所有其酬勞作為設定費用1608,所以成員2具有新的滑動比例酬勞1320(26.66%×1500×0%=)零,其替換圖15中所示的酬勞1316。
在此例子中,成員3選擇最高酬勞選擇1612(例如100%)。因此,成員3的滑動比例酬勞1320是(46.66%×1500×100%=)$700。在另一個實施例中,成員5選擇得到50%的可能費用1608以及50%的酬勞1316。由此,成員5的滑動比例酬勞1320是(6.66%×1500×50%=)$50。
在一個實施例中,設定費用1608的量直接涉及開發小組成員酬勞百分比1310的減少。由此,在設定費用1608中增加20%可以減少開發小組成員酬勞百分比1310 20%。在其他實施例中,在設定費用1608方面的變化不直接與開發小組成員酬勞百分比1310方面的變化相關。例如,伺服器104可以將常量次數與費用1608方面的增加相乘,以便即使費用1608方面的輕微增加相當於開發小組成員酬勞百分比1310方面的較大增加,以便為期望風險而調節它。作為選擇,伺服器104可以指定一個常量,根據設定費用1608的方面的變化、將反比關係應用於開發小組成員酬勞百分比1310方面的變化。此外,在設定費用1608和開發小組成員酬勞百分比1310之間可以存在任何關係。由此,所述伺服器104可以將一個或多個數學函數應用於確定相對於其他變量變化的一個變量的變化。
在一個實施例中,所述開發小組成員酬勞百分比1310和酬勞庫百分比1311(例如前述的兩個例子中的5%)對於每個有效產品可以是不同的,並且均隨時易受伺服器104向上的或者向下的調整。在進一步的實施例中,所述產品管理者204和/或所述設計師208可以改變這些百分比1310、1311。
此外,在一個實施例中,可以在支出以前測量收益(例如總收額)。在另一個實施例中,可以在支出之後確定收益(例如,淨收益、佣金等等)。
在一個示範性的實施例中,所述分布式軟體開發系統101在生命技術產業中被採用。第一生物技術公司開發一種新的分子集合,以下稱為集合A、B和C,並且相信一個或多個所述分子可以有效預防特殊的疾病,以下稱為疾病X。然而,所述生物技術公司沒有蛋白質數據,所述蛋白質數據用於確定分子A、B和/或C是否有效預防疾病X。在一個實施例中,所述產品管理者204研究所述產業,並且隨後開發小組將用於為每個分子特徵建模的軟體組件添加到組件目錄804。在一些實施例中,所述開發小組還創建用於為疾病、諸如疾病X建模的一個或多個組件。所述生物技術公司可以瀏覽組件目錄804中的組件,並且確定使用一個或多個組件例如來構建分子間相互作用的模型,並且確定分子對特殊疾病的有效性。在一些實施例中,所述伺服器104生產用於提供有關特殊基因或者分子的數據的數據倉庫的組件。在一個實施例中,所述生物技術公司使用組件從生物技術機器中讀出數據,所述生物技術機器用於讀取細胞和/或基因的數據。所述組件還可以存儲從生物技術機器讀出的數據。
總的來說,在一個方面中,本發明涉及一種用於確定協作開發產品的第一貢獻者的酬勞的方法,所述產品通過第一貢獻者以及至少一個其他貢獻者開發。所述方法包括接收表示每個第一貢獻者以及至少一個其他貢獻者的每個、對協作開發的產品作出貢獻的值。所述方法包括通過對所接收的值求和來計算貢獻者以及至少一個其他貢獻者作出的總貢獻。所述方法包括基於所確定的第一貢獻者的貢獻價值與所計算的總貢獻的比值,確定第一開發人員的開發人員酬勞百分比。所述方法包括從協作開發的產品獲得的收益中,為協作開發的產品分配酬勞庫;並且通過將酬勞庫與開發人員酬勞百分比相乘來確定第一貢獻者的酬勞數額。
在一個實施例中,分配酬勞庫包括為協作開發的產品規定酬勞庫百分比,並且將協作開發的產品獲得的收益乘以酬勞庫百分比。在各種實施例中,得到的收益可以是在減少支出以前或者以後的收益。
雖然此處參照軟體進行了描述,並且對於當根據軟體組件實現時有用,但是協作開發的產品可以是用於具體實現智慧財產權的任何種類的有形或無形對象。在一個實施例中,所述產品包括至少一個計算機軟體組件。在這種實施例之一中,所述產品包括由至少一個計算機軟體組件組成的計算機應用程式。在其他實施例中,所述產品包括集成電路設計以及計算機硬體裝置的至少一個。在一個實施例中,所述貢獻是產品管理、設計、體系結構、編碼以及質量保證測試的至少一個。
在一個實施例中,所述接收步驟包括從系統管理員、鍵盤輸入或者數據存儲器(例如硬碟,存儲器)以及軟體對象的至少一個中接收。在一個實施例中,所述方法通過計算機至少部分地響應協作開發工作的貢獻者貢獻價值的輸入來執行。在一個實施例中,表示貢獻的值是基於規定貢獻所需工作的估計的預定值。在另一個實施例中,表示貢獻的值是基於實際貢獻的測量(例如代碼行、花費小時)。在各種實施例中,所述方法的步驟可以用於後續或者修改產品,其中所述產品包括附加貢獻者的貢獻。在這種情況下表示貢獻的值可以是原始產品的貢獻或者是對隨後的或者修改的產品的貢獻。
總的來說,在另一個方面中,本發明涉及一種系統,用於執行許多貢獻者以及許多產品的方法步驟。所述系統使用此處所述的信息以及技術,以便能夠跟蹤與這些產品以及開發人員相關聯的信息,以便依照貢獻者的酬勞分配收益。總的來說,在另一個方面中,本發明涉及一種系統,用於簡化分布式組件的開發,包括組件目錄、分送的開發環境以及酬勞計算系統。
總的來說,在另一個方面中,本發明涉及一種組件目錄系統,其包括本地組件存儲器,用於存儲組件以及與所述組件相關的信息;用戶界面模塊,用於提供與組件有關的信息;更新跟蹤模塊,用於跟蹤對組件的更新;從屬跟蹤模塊,用於跟蹤組件從屬關係;以及集成模塊,用於識別可以集成的組件。在一個實施例中,所述系統還包括遠程模塊,用於提供與存儲在遠程系統上的組件有關的信息,並且使所述組件可為組件目錄的用戶所獲得,就好像他們都包含在本地組件存儲器中似的。
權利要求
1.一種用於簡化軟體程序的分布式開發的方法,包括(a)提供對多個開發人員的技能評級;(b)向多個開發人員的子集傳達軟體程序的規範;(c)響應傳達的規範來接收至少一個提交內容;(d)推導出至少一個提交內容的得分;並且(e)基於推導的得分、選擇至少一個提交內容之一用以包含在軟體存儲庫中。
2.如權利要求1所述的方法,其中所述評級基於編碼競賽的結果。
3.如權利要求2所述的方法,其中所述編碼競賽是聯機編碼競賽。
4.如權利要求1所述的方法,其中所述評級基於在前提交的設計軟體程序。
5.如權利要求1所述的方法,其中所述評級基於在前提交的軟體程序。
6.如權利要求1所述的方法,其中所述規範用於軟體程序的設計。
7.如權利要求1所述的方法,其中所述規範用於軟體程序的開發。
8.如權利要求1所述的方法,其中所述軟體程序是軟體組件。
9.如權利要求1所述的方法,其中所述軟體程序可以是一個或多個軟體組件、軟體應用、軟體組件的組合或者軟體模塊。
10.如權利要求1所述的方法,其中多個開發人員的子集是基於開發人員的技能評級來確定的。
11.如權利要求10所述的方法,其中多個開發人員的子集是基於開發人員具有的評級來確定的。
12.如權利要求1所述的方法,其中所述提交內容是對軟體程序的設計。
13.如權利要求1所述的方法,其中所述提交內容是軟體程序的計算機代碼。
14.如權利要求1所述的方法,其中所述開發人員是軟體設計師。
15.如權利要求1所述的方法,其中所述開發人員是軟體程式設計師。
16.如權利要求1所述的方法,其中推導至少一個提交內容得分的步驟還包括由不同於提交所述提交內容的開發人員的開發人員來評審所述提交內容。
17.如權利要求1所述的方法,其中所述提交內容必須接收一個選擇的最小得分,以便包含在軟體存儲庫中。
18.如權利要求1所述的方法,其中所述軟體存儲庫中包括的提交內容可以被保證在不同於用於原始提交內容的計算環境的計算環境中操作。
19.一種用於補償軟體開發人員的方法,包括(a)徵求多個開發人員對計算機軟體程序的提交內容;(b)從多個開發人員的至少一個中接收提交內容;(c)推導每個提交內容的得分;(d)基於分配給所述提交內容的得分、選擇提交內容的子集來包含在存儲庫中,以便分送給公眾;(e)響應所選擇的提交內容、將根據分送至少一個軟體程序的一部分收入分配給多個開發人員的至少一個。
20.如權利要求19所述的方法,還包括在步驟a)之前,對所述軟體開發人員評級。
21.如權利要求20所述的方法,其中所述軟體開發人員基於他們在聯機編碼競賽中的成績來評級。
22.如權利要求20所述的方法,其中所述軟體開發人員基於在前提交的設計軟體程序來被評級。
23.如權利要求20所述的方法,其中所述軟體開發人員基於在前提交的軟體程序來被評級。
24.如權利要求19所述的方法,其中所述軟體程序是軟體組件。
25.如權利要求19所述的方法,其中所述軟體程序可以是一個或多個軟體應用、軟體組件的組合或者軟體模塊。
26.如權利要求19所述的方法,其中所述開發人員至少部分基於他們的評級來被徵求。
27.如權利要求26所述的方法,其中所述開發人員基於所述開發人員具有的評級來被徵求。
28.如權利要求19所述的方法,其中選擇提交內容子集的步驟還包括將一個提交內容識別成功的提交內容。
29.如權利要求19所述的方法,其中所述收入至少部分基於開發人員的評級來分配。
30.如權利要求19所述的方法,其中所述收入至少部分基於多個開發人員的至少一個花費在編碼軟體程序的小時數目來分配。
31.如權利要求19所述的方法,其中所述收入至少部分基於分送所述軟體程序的次數來分配。
32.一種用於簡化軟體程序的分布式開發的系統,包括評級引擎,用於對軟體開發人員的技能評級;伺服器,用於向多個開發人員傳達規範,所述開發人員已經預先在編碼競賽中被評級;接收模塊,用於接收由開發人員開發的軟體程序;以及評分模塊,用於評估接收到的軟體程序。
33.如權利要求32所述的系統,還包括評審模塊,用於允許開發人員評審由其他開發人員提交的提交內容。
34.如權利要求32所述的系統,還包括存儲庫,用於存儲評估的軟體程序。
35.如權利要求34所述的系統,還包括聯機陳列室,用於顯示存儲在存儲庫中的軟體程序。
36.如權利要求34所述的系統,還包括樣品應用,至少部分根據存儲在存儲庫中的軟體程序來構造。
37.如權利要求34所述的系統,還包括演示模塊,用於演示存儲在所述存儲庫中的軟體程序的特徵。
38.如權利要求32所述的系統,還包括計算模塊,用於在開發小組之中分配收益。
39.如權利要求38所述的系統,其中所述計算模塊至少部分基於開發人員的評級來分配收入。
40.如權利要求38所述的系統,其中所述計算模塊至少部分基於多個開發人員的至少一個花費在編碼軟體程序的小時數目來分配收入。
41.如權利要求38所述的系統,其中所述計算模塊至少部分基於所述軟體組件被分送的次數來分配收入。
全文摘要
本發明涉及一種用於開發軟體的方法和系統。在一個實施例中,所述方法用於簡化軟體組件的分布式開發,包括提供對開發人員的技能評級,向開發人員的子集傳達軟體程序的規範,從開發人員那裡來接收提交內容,為所述提交內容評分,並且選擇一個提交內容包含在軟體存儲庫中。在另一個實施例中,用於補償軟體開發人員的方法包括徵求軟體開發人員對計算機軟體程序的提交內容;響應所述提交內容從開發人員那裡接收軟體組件,評估所接收的軟體組件,選擇將潛在分送給公眾的一個或多個提交內容,並且將來自於所述分送的收入分配給開發人員。
文檔編號G06Q10/00GK1679034SQ03813237
公開日2005年10月5日 申請日期2003年4月7日 優先權日2002年4月8日
發明者J·M·休斯 申請人:託普科德公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀