大型軟件項(xiàng)目需要很多人的能力合作,花費(fèi)一年或數(shù)年的時間才能完成。為了提高工作效率,保證工作質(zhì)量,軟件開發(fā)人員的組織、分工與管理是一項(xiàng)十分重要和復(fù)雜的工作,它直接影響到軟件項(xiàng)目的成功與失敗。首先,由于軟件開以人員的個人素質(zhì)與差異很大,因此對軟件開發(fā)人員的選擇、分工十分關(guān)鍵。1970年,Sackman對12名程序員用兩個不同的程序進(jìn)行試驗(yàn),結(jié)論是:程序排錯、調(diào)試時間差別為18:1;程序編制時間差別為15:1;程序長度慶功別為6:1;程序運(yùn)行時間差別為13:1。近年來,隨著軟件開發(fā)方法的提高、工具的改善,上述差異可能會減小,但軟件人員的合理選擇及分工,充分發(fā)揮每個人的特長和經(jīng)驗(yàn)顯然是十分重要的。其次,因?yàn)檐浖a(chǎn)品不易理解、不易維護(hù),因此軟件人員的組織方式十分關(guān)鍵。一個重要的原則是,軟件開發(fā)人員的組織結(jié)構(gòu)與軟件項(xiàng)目開發(fā)模式和軟件產(chǎn)品的結(jié)構(gòu)相對應(yīng),這樣可以達(dá)到軟件開發(fā)的方法、工具、與人的統(tǒng)一,從而降低管理系統(tǒng)的復(fù)雜性,有利于軟件開發(fā)過程的管理與質(zhì)量控制。按樹形結(jié)構(gòu)組織軟件開發(fā)人員是一個比較成功的經(jīng)驗(yàn)。樹的根是軟件項(xiàng)目經(jīng)理和項(xiàng)目總的技術(shù)負(fù)責(zé)人。理想的情況是項(xiàng)目經(jīng)理和技術(shù)負(fù)責(zé)人由一個人或一個小組擔(dān)任。樹的結(jié)點(diǎn)是程序員小組,為了減少系統(tǒng)的復(fù)雜性、便于項(xiàng)目管理,樹的結(jié)點(diǎn)每層不要超過7個,在此基礎(chǔ)上盡量降低樹的層數(shù)。程序員小組的人數(shù)應(yīng)視任務(wù)的大小和完成任務(wù)的時間機(jī)時定,一般是2~5人。為降低系統(tǒng)開發(fā)過程的復(fù)雜性,程序員小組之間,小組內(nèi)程序員之間的任務(wù)界面必須清楚并盡量簡化。
按“主程序員”組織軟件開發(fā)小組是一條比較成功的經(jīng)驗(yàn)?!爸鞒绦騿T”應(yīng)該是“超級程序員”。其他成員,包括程序員、后備工程師等,是主程序員的助手。主程序員負(fù)責(zé)規(guī)劃、協(xié)調(diào)和審查小組的全部技術(shù)活動。程序員負(fù)責(zé)軟件的分析和開發(fā)。后備工程師是主程序員的助手,必要時能代替主程序員領(lǐng)導(dǎo)小組的工作并保持工作的連續(xù)性。軟件開發(fā)小組還可以根據(jù)任務(wù)需要配備有關(guān)專業(yè)人員,如數(shù)據(jù)庫設(shè)計人員、遠(yuǎn)程通信和協(xié)調(diào),提高了工作效率。這種形式的成敗主要取決于程序員的技術(shù)和管理水平。除了按主程序員負(fù)責(zé)的程序員小組組織開發(fā)人員外,還可以按“無我程序設(shè)計”建立軟件民主開發(fā)小組。這各組織形式強(qiáng)調(diào)組內(nèi)成員人人平等,組內(nèi)問題均由集體討論決定。這種組織形式有利于集思廣益、互相取長補(bǔ)短,但工作效率比較低。
軟件項(xiàng)目或軟件開以小組可以配置若干個秘書、軟件工具員、測試員、編輯和律師等到。秘書負(fù)責(zé)維護(hù)和軟件配置中的文檔、源代碼、數(shù)據(jù)及所依附的各種磁介質(zhì);規(guī)范并收集軟件開發(fā)過程中的數(shù)據(jù);規(guī)范并收集可重用軟件,對它們分類并提供檢索機(jī)制;協(xié)助軟件開發(fā)小組準(zhǔn)備文檔,對項(xiàng)目中的各種參數(shù),如代碼行、成本、工作進(jìn)度等,進(jìn)行估算;參與小組的管理、協(xié)調(diào)和軟件配置的評估。大型軟件項(xiàng)目需專門配置一個或幾個配置管理人員,專門負(fù)責(zé)軟件項(xiàng)目的程序、文檔和數(shù)據(jù)的各種版本控制,保證軟件系統(tǒng)的一致性與完整性。軟件開發(fā)小組內(nèi)部和小組之間經(jīng)常交流情況和信息,以便減少誤解,刪除軟件中的個人特征,提高軟件的質(zhì)量.
軟件項(xiàng)目的開發(fā)實(shí)踐表明,軟件開發(fā)各個階段所需要的技術(shù)人員類型、層次和數(shù)量是不同的。軟件項(xiàng)目的計劃與分析階段只需要少數(shù)人,主要是系統(tǒng)分析員、從事軟件系統(tǒng)論證和概要設(shè)計的軟件高級工程師和項(xiàng)目高級管理人員。概要設(shè)計時要增加一部分高級程序員,詳細(xì)設(shè)計時,要增加軟件工程師和程序員,在編碼和測試階段還要增加程序員、軟件測試員。在此過程中軟件開發(fā)管理人員和各類專門人員逐漸增加,到測試階段結(jié)束時,軟件項(xiàng)目開發(fā)人員的數(shù)量達(dá)到頂峰。軟件運(yùn)行初期,參加軟件維護(hù)的人員比較多,過早解散軟件開發(fā)人員會給軟件維