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