軟件管理

概述

同其他任何工程項目一樣,軟件項目同樣存在一個非常重要的問題,這就是軟件管理的問題,而這一問題通常容易被一般的軟件開發人員所忽視。在一般的軟件工程資料中所討論的重點也只是軟件開發方法,對軟件管理問題大多一筆帶過。在一個小的軟件開發項目中也許還無所謂,但一個大型的軟件開發項目如果沒有優秀的軟件管理人員來領導和協調整個項目,其失敗的可能性就很大了。因此有必要引起大家對此問題的重視,這也是本文的目的所在。

  軟件管理工作涉及到軟件開發工作的方方面面,其直接對象包括人、財、物,簡單地說,人就是指軟件開發人員,財就是指項目經費,物就是指軟件項目。也許還沒有關於這方面的專門理論,但在工商管理領域已經有十分成熟的管理學理論,他山之石,可以攻玉,所以我們完全可以引進到軟件項目方面的管理。

  作爲軟件管理人員,應該站在高處來俯瞰整個項目,如果有不識廬山真面目的感覺就不太好了。有了俯瞰全局的意識這一前提,採用適當的管理技術,項目開展就容易羅。軟件項目的管理工作可以分位四個方面:軟件項目的計劃、軟件項目的組織、軟件項目的領導和軟件項目的控制,下面對這四個方面進行詳細的介紹。

軟件項目的計劃

  軟件開發項目的計劃包括定義項目的目標,以及達到目標的方法。他涉及到項目實施的各個環節,帶有全局的性質,是戰略性的。計劃應力求完備,要考慮到一些未知因素和不確定因素,考慮到可能的修改。計劃應力求準確,儘可能提高所依據的數據的可靠程度。主要工作集中在軟件項目的估算、軟件開發成本的估算和軟件項目進度安排。軟件項目計劃的目標是提供一個能使項目管理人員對資源、成本和進度做出合理估算的框架。這些估算應在軟件項目開始時的一段有限時間內作出,並隨着項目的進展進行更新。

軟件項目的估算

  軟件項目管理過程開始於項目的計劃,在做項目計劃時,第一項活動是估算。現在已經使用的使用技術是時間和工作量的估算。因爲估算是其他項目計劃活動的基石,而且項目計劃又未軟件工程過程提供了工作方向,所以我們不能沒有計劃就着手開發,否則就會陷入盲目性。

  估算本身帶有風險,估算資源、成本和項目進度時需要經驗、有用的歷史信息、足夠的定量數據和作定量度量的勇氣。估算的精確程度受到多方面的影響。首先,項目的複雜性對於增加軟件計劃的不確定性影響很大,複雜性越高,估算的風險就越高。複雜性是相對度量的,他與項目參加人員的經驗有關,比如如果讓搞MIS的項目組去搞操作系統設計顯然增加了複雜性。其次,項目的規模對於估算的精確性和功效的影響也比較大,因爲隨着軟件規模的擴大,軟件相同元素之間的相互依賴、相互影響也迅速增加,因而估算時進行問題分解也會變得更加困難。還有項目的結構化程度也影響項目估算的風險,這裏的結構性是指功能分解的簡便性和處理信息的層次性,結構化 程度提高,進行精確估算的能力就提高,相應風險將減少。此外,歷史信息的有效性也影響估算的風險,在對過去的項目進行這綜合的軟件度量之後,就可以借用來比較準確地進行估算。影響估算的因素遠不止這些,比如用戶需求的頻繁變更給估算帶來非常大的影響。

  估算的依據是軟件的範圍,包括功能,性能、限制、接口和可靠性。在估算開始之前,應對軟件的功能進行評價,並對其進行適當的細化以便提供更詳細的細節。由於成本和進度的估算都與功能有關,因此常常採用功能分解的辦法。性能的考慮主要包括處理和響應時間的需求。約束條件則標識外部硬件、可用存儲和其他現有系統對軟件的限制。

  另外軟件項目計劃還要完成資源估算,包括人力資源、硬件資源和軟件資源。在考慮各種軟件開發資源時最重要的是人,必須考慮人員的技術水平、專業、人數以及在開發過程各階段對各種人員的需要。硬件資源作爲一種工具投入。軟件資源包括各種幫助開發的軟件工具,比如??數據庫等。

  工作兩估算是最普遍使用的技術。經過功能分解之後,可以估計出每一個項目任務的分解都需要花費若干人年,總計之後就知道軟件項目總體工作量。下面就是一個示意性工作量估算表。

  表格 1 某軟件系統工作量估算表(單位:人日)

  

任務 需求分析 設計 編碼 測試 小計
用戶定義 2 5 1 0.5 8.5
系統定義 2 5 1 0.5 8.5
廣告預定 4 10 2 0.5 16.5
劃版 5 20 10 0.5 35.5
製作和組版 3 5 3 1 12
總計 16 45 17 3 81

軟件開發成本的估算

  軟件開發成本主要是指軟件開發過程所花費的工作量及其相應的代價。它不同於其他物理產品的成本,它主要包括人的勞動的消耗,人的勞動的消耗所需的代價就是軟件產品的開發成本。

  開發成本的估算方法有很多種,象簡單的代碼行技術,任務分解技術,自動估計成本技術,專家判定技術,還有參數方程法,標準值法,以及COCOMO模型法。其中COCOMO (Constructive Cost Model)模型法是一種精確、易於使用的成本估算方法,該模型按其詳細程度分爲三級:基本COCOMO模型、中間COCOMO模型和詳細COCOMO模型【3】。

軟件項目進度安排

  軟件項目的進度安排主要是考慮軟件交付用戶使用的這一段開發時間的安排。進度安排的準確程度可能比成本估計的準確程度更重要。軟件產品可以靠重新定價或者靠大量的銷售來彌補成本的增加,但進度安排的落空會導致市場機會的喪失或者用戶不滿意,而且也會導致成本的增加。因此在考慮進度安排時要把人員的工作量與花費的時間聯繫起來,合理分配工作量,利用進度安排的有效分析方法嚴密監視軟件開發的進展情況,以使得軟件開發的進度不致被拖延。

  在進行進度安排時要考慮的一個主要問題是任務的並行性問題。當參加項目的人數不止一人是軟件開發工作就會出現並行情況。因爲並行任務是同時發生的所以進度計劃表必須決定任務之間的從屬關係,確定各個任務的先後次序和銜接,確定各個任務完成的持續時間。另外還應注意關鍵路徑的任務,這樣可以確定在進度安排中應保證的重點。常用的進度安排方法有兩種,即甘特圖(Gantt Chart)法和工程網絡法。

軟件項目的組織

  參加軟件開發的人員如何組織起來,使他們發揮最大的工作效率,對成功地完成軟件項目極爲重要。

組織結構

  開發組織採用什麼形式由軟件項目的特點決定,同時也與參加人員的素質有關。通常有三種組織結構模式

按課題組劃分的模式

  :把開發人員按課題組成小組,小組成員自始至終承擔課題的各項任務。該模式適用於規模不大的項目,並且要求小組成員在各方面有技術專長。

按職能劃分的模式

  :把開發項目的軟件人員按任務的工作階段劃分爲若干工作小組。要開發的軟件在每個專業小組完成階段加工後沿工序流水線向下傳遞。這種流水作業的方式使用於多項目並行的情況。

矩陣形模型

  :這種模式是以上兩種模式的複合。一方面按工作性質成立一些專門小組,另一方面每一個項目都有它的經理人員負責。每一個軟件開發人員屬於某一個專門小組,有參加某一個項目的工作。該模式的優點有一方面參加專門組的成員可以在組內交流在各個項目中取得的經驗,這更有利於發揮專業人員的作用;另一方面,各個項目有專門的人員負責,有利於軟件項目的完成。這種模式比較適合於規模比較大的項目。

  組織結構的最後一層是程序設計小組的組織形式。通常認爲程序設計工作是按獨立的方式進行的,程序人員獨立地完成任務。但這並不意味着相互之間沒有聯繫。一般在人數比較少時組員之間的聯繫比較簡單,但隨着人數的增加,相互之間的聯繫變得負責起來。小組內部人員的組織形式對對生產率有着十分重要的影響。

小組組織形式

  常見的小組組織形式有三種,這三種形式可以靈活使用。

  1. 主程序員制小組:相當於組長負責制,小組的核心由一位主程序員,另外配備兩到三位技術員、一位後援工程師組成。這種組織結構突出主程序員的領導,強調主程序員與其他技術人員的聯繫。

  2. 民主制小組:在民主制小組中,遇到問題可以在組員之間平等地交換換意見,工作組目標的制定以及決定的作出都由全體人員參加。這種組織形式強調發揮每個成員的積極性,並要求每個成員發揮主動精神和協作精神。

  3. 層次式小組:在層次式小組中,組內人員分位三級:組長(項目負責人)一人負責全組工作,他直接領導兩到三名高級程序員,每位高級程序員通過基層小組,管理若干位程序員。這種結構比較適合於項目本身就是層次結構的課題。

人員配備

  合理地配備人員是成功地完成軟件項目的切實保證。所謂合理地配備人員應包括按不同階段適時運用人員,恰當掌握用人標準。一般來說,軟件項目不同階段不同層次技術人員的參與情況是不一樣的。下圖是典型的軟件開發人員參與情況曲線。 

  在人力配備問題上,由於配置不當,很容易造成人力資源的浪費,並延誤工期。特別是採用恆定人員配備方案時在項目的開始和最後都會出現人力過剩,而在中期又會出現人力不足的情況。

  三、軟件項目的領導

  四、軟件項目的控制

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章