3 . 軟件開發(fā)的組織機構
無論是項目型公司還是產品型公司,從事軟件開發(fā)的組織或公司應該有一定的軟件開發(fā)組織結構。一個合理的軟件開發(fā)組織結構是確保軟件開發(fā)質量的基本保證,各個組織各負其責,可以確保軟件開發(fā)按擬訂的質量控制規(guī)則與軟件開發(fā)計劃進行,有利于軟件公司軟件質量與成本的控制。
3.1 軟件開發(fā)組織機構設置
一般而言,對于產品型軟件公司,其公司內部均會有一個類似與產品管理小組這樣的一個組織,一個專門負責產品發(fā)展的產品經理部門。而項目型公司則相對簡單一些,主要是針對項目進行定制開發(fā),一般對項目的發(fā)展方向不做控制。但從項目開發(fā)演變?yōu)榭赏茝V產品的另當別論。一般來講,下圖4是一個典型的軟件公司軟件開發(fā)的組織機構設置。
3.2 組織機構的職責分工
在上述的組織機構中,各職能組織有各自明確的責權范圍,完成各自的本職工作,各組織相互協(xié)調完成相應的軟件開發(fā)與維護工作。
公司產品管理組:對于產品型軟件公司而言,軟件產品是其生存與發(fā)展的基礎,公司對新產品立項、現有產品的發(fā)展方向及有關產品發(fā)展的重大決定均需由公司產品管理組來決定。
公司產品管理組一般由公司的執(zhí)行總裁、技術總監(jiān)、市場總監(jiān)、產品經理、研發(fā)經理及其他必要人員。
產品管理部門 :產品管理部門是界于研發(fā)部與市場部之間的一個橋梁部門。產品管理部門的主要職責是負責產品發(fā)展策略的制定與執(zhí)行,這里的執(zhí)行包括軟件開發(fā)前期的市場及需求調研,完成可行性分析報告,制定產品規(guī)格。參與軟件開發(fā)項目組,并完成相關工作。
* 軟件開發(fā)前期:用戶需求分析、功能描述、運行平臺與環(huán)境、市場定位、銷量預測與售價;
* 軟件開發(fā)后期:產品宣傳資料、產品培訓、促銷與支持t;
研 發(fā) 部 門:研發(fā)部是軟件開發(fā)的主體,主要任務是完成軟件或的項目的開發(fā)工作。其工作內容通過各職能組實現。主要包括:
* 功能規(guī)范:功能規(guī)范列表及用戶界面,確保寫出用戶手冊;
* 開發(fā)活動:包括設計、編碼、模塊集成、Alpha測試與文檔;
* 支持工作:軟件配置管理與問題報告數據庫;
* 項目計劃:定義項目里程碑;
* 軟件定版:IRL,
Architecture & QA:是軟件開發(fā)的質量控制機構,主要職責是負責軟件開發(fā)過程的質量控制。在軟件開發(fā)的各個階段,根據軟件開發(fā)設計規(guī)范對階段設計結果進行質量控制。及時發(fā)現問題、解決問題,確保進入下一階段的設計符合設計規(guī)范要求。實現軟件開發(fā)全程監(jiān)控。
Architecture & QA為非常設機構,主要由研發(fā)經理、產品經理、系統(tǒng)分析遠、測試經理等人員組成。根據項目進展需要,由研發(fā)經理召集進行項目階段評審。
軟 件開 發(fā) 組: 主要由各種角色的開發(fā)人員構成,完成開發(fā)任務。
CMO:(Configuration Management Officer)軟件配置管理,對于一個具有一定規(guī)模的軟件公司都會有一個軟件配置管理機構,對于小型公司一般由項目經理帶管,CMO的主要職責是進行軟件開發(fā)過程中的軟件配置管理,以及軟件定版后的維護管理。在軟件開發(fā)過程中,由于多個開發(fā)人員協(xié)同工作,需要對其工作協(xié)同管理,確保協(xié)同工作的順利進行。同時,由專人進行配置管理,使得大部分開發(fā)人員不會得到全部原代碼,也有利于軟件公司的安全保密工作。在軟件定版后,由于軟件的Bugs,功能的完善及各種原因導致的對軟件的修改,版本的控制顯得極為重要,軟件配置管理可以確保得到不同時間的軟件版本。
軟 件 測 試 組 :軟件是軟件工程的重要組成部分,軟件測試組承擔的工作主要是α測試。測試模塊與集成測試由軟件開發(fā)人員完成。對于項目軟件開發(fā),用戶的計算機技術人員參加到軟件測試與支持工作組,使用戶參與整個軟件的測試工作中。確保交付的應用系統(tǒng)是用戶可信賴的系統(tǒng)。
在以上的軟件開發(fā)組織機構中,不論公司規(guī)模的大小,以上的各個職能應該是健全的。明確的責任分工有利于軟件開發(fā)的順利進行于質量控制,同時,也必將有利于公司的成本控制,降低軟件開發(fā)風險。
3.3 軟件開發(fā)項目組的角色
一般來講,一個軟件開發(fā)項目組是由多個不同角色的人員構成,每種角色在軟件開發(fā)中起不同的作用,各個不同角色的人員協(xié)同工作,完成軟件開發(fā)工作。
典型的軟件開發(fā)項目組由下列角色構成,如圖5所示
在軟件開發(fā)項目組中一般有六種角色,他們是:
、伲a品管理
②.程序開發(fā)
、郏绦蚬芾
、埽疁y試及質量保證
、荩脩襞嘤
⑥.后勤支援
在大型軟件開發(fā)項目中,可以將每個角色賦予不同的個人。對小型項目,一個人可以肩負多個不同的角色。每種角色的人員在項目中起著同等重要的作用。每種角色都有其特定的任務及技能要求。
產品管理:產品經理負責建立及更新項目的商業(yè)模型,在確定及設置項目目標方面起關鍵作用。產品經理應確保項目成員清楚理解項目商業(yè)目的,并根據商業(yè)需求的優(yōu)先級確定功能規(guī)范。同時,產品經理負責高層的項目溝通,如:商業(yè)項目的成本核算、合同洽談,及向相關人員通報項目進展等。
程序管理:程序經理負責確定軟件特色及功能規(guī)范,根據軟件開發(fā)標準協(xié)調日常開發(fā)工作確保及時交付開發(fā)任務。協(xié)助產品經理完成項目需求文檔,并根據需求文檔起草軟件功能規(guī)范。同時負責與系統(tǒng)分析、規(guī)范及框架結構有關的各種活動。管理與協(xié)調與外部標準與系統(tǒng)的互操作性,控制項目進度。程序經理是項目組成員間溝通與協(xié)調的核心。
程序開發(fā):開發(fā)隊伍負責交付符合功能規(guī)范的軟件系統(tǒng)。開發(fā)隊伍應積極參與功能規(guī)范的制定,在建立項目原型時開發(fā)人員與程序經理可以同步進行并提供技術可行性。在功能規(guī)范確立后,開發(fā)人員必須與程序經理如何解決重大疑難問題達成一致。
測試與質量保證:測試與質量保證是保證系統(tǒng)符合功能規(guī)范的保證。為保證“零誤碼”測試/QA人員應積極參與開發(fā)過程,確保開發(fā)出交付符合功能規(guī)范的軟件系統(tǒng)。測試/QA人員負責準備測試計劃、測試用例、自動測試程序、執(zhí)行測試工作、管理并跟蹤Bug。測試工作與開發(fā)工作是獨立并行的。
用戶培訓:培訓人員負責設計編寫離線及在線培訓文檔,包括演示材料。用戶培訓人員應參與用戶界面和系統(tǒng)的設計與構造,并參與安裝程序與安裝過程的設計。參與系統(tǒng)的可用性測試及設計改進,與程序管理與開發(fā)有密切的關系,并確保系統(tǒng)的變化及時反映到文檔中去。
后勤支援:后勤支援包括確保項目順利進行的各方面工作。
對于一個項目組,建立一個良好的團隊氛圍是非常重要的,每個角色在項目中都是不可缺少的,項目的成功是團隊成員共同努力的結果。鼓勵成員的積極進取、高效、參與的團隊精神,提高成員的責任感,避免造成團隊或項目的成功依賴于少數個人的貢獻。