軟件項目管理導論

第一章 軟件項目管理導論
第二章 項目需求管理
第三章 軟件項目成本管理
第四章 軟件項目進度管理
第五章 軟件項目風險管理
第六章 軟件項目配置管理
第七章 軟件項目資源管理
第八章 軟件項目質量管理

第一章 軟件項目管理導論

軟件市場

  • 軟件市場:軟件生產的特殊性導致了作爲商品銷售的軟件與傳統經濟學中分析的實物商品存在顯著的不同。
  • 軟件商品特徵:作爲商品,軟件同樣具有一般商品本質的特性:價值和使用價值。但是軟件產品是無形的,沒有物理屬性。
  • 軟件是與計算機系統有關的程序、過程和文檔的完整集合。
  • “軟件”的特性:軟件是無形的(intangible)、軟件副本的大批量生產輕而易舉、軟件業是勞動密集型的(軟件的設計與編程完全實現自動化,需要真正“智能”的機器)、一個沒有經過充分訓練的軟件開發人員很容易編寫出難以理解和修改的軟件 、軟件本身很容易修改、軟件不像其他的工業產品那樣會因使用而磨損,隨着反覆修改,它的設計會逐漸退化。
  • 軟件商品特定的性質包括3個基本方面:無形性、無損耗性、易複製性
  • 軟件的成本:在傳統的經濟學理論中,產品的總成本是由固定成本可變成本所組成。 固定成本是指不會隨着生產的產量變動而變動的成本(如廠房、機器和研發成本);可變成本是隨着產量變化的成本,是生產每一件產品所需的原材料和勞動力成本(因此生產n件產品的變動成本是生產1件產品的n倍。);
  • 軟件的定價:傳統商品的定價遵循邊際定價原則。軟件商品無法遵循傳統商品定價的原則(軟件作爲知識密集產品的價值成本,其構成特點是:邊際成本低,高勞動力成本,高附加值。)。
  • 軟件市場的壟斷現象低端支撐軟件系統的壟斷日益突出(新的需求規律:銷售量越多,價格越高。系統級軟件:操作系統和數據庫軟件)、固定成本形成的價格效應(軟件成本主要是前期固定成本,當某種軟件形成一定規模後,後來的軟件企業想進入同樣的市場難度非常大。原因一:若研發不成功,前期投入的成本無法挽回;原因二:壟斷企業可以爲了打擊競爭對手把其產品價格降至接近於零。)軟件產業的“先入爲主”現象(一旦某個軟件在市場上擁有絕對優勢的市場份額,它的產品將形成一種事實標準)。

軟件產業

  • 軟件產業的特點:軟件市場容量巨大、軟件企業成長迅猛、軟件產品品種繁多、軟件行業競爭激烈、行業發展日新月異。
  • 軟件產業在國民經濟中的地位:軟件產業具有帶動經濟增長的雙重作用、軟件是先進管理思想和管理模式的載體(軟件能夠促進和加快企業的信息採集、交流,降低管理成本,提高管理效率。軟件促進管理規範化)。

軟件工程

  • 軟件工程的背景和歷史:1968年由NATO (北大西洋公約組織)在德國召開的學術會議上,Feitz Bauer首先提出了“軟件工程”概念。

  • 軟件工程定義:1968年由NATO定義、1983年,IEEE的軟件工程定義(軟件工程是開發、運行、維護和修復軟件的系統方法)、1993年,IEEE的一個更加綜合的定義(將系統化的、規範的、可度量的方法應用於軟件的開發、運行和維護的過程,即將工程化應用於軟件中)、軟件工程是指導計算機軟件開發和維護的工程學科。採用工程的概念、原理、技術和方法來開發與維護軟件,把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來,以經濟地開發出高質量的軟件,並有效的維護它。、軟件工程是一類求解軟件的工程,它應用計算機科學、數學以及管理科學等原理、借鑑傳統工程的原理、方法,創建軟件以達到提高質量、降低成本的目的,使計算機設備的能力藉助於軟件成爲對人類有用的東西。

  • 軟件工程框架:軟件工程作爲一種工程,同其他工程項目一樣,有自己的目標、活動和原則。

  • 軟件工程的目標是“生產正確、可用及具有經濟效益的產品”、正確性指軟件產品達到預期功能的程度、可用性是指軟件的基本結構、實現和文檔爲用戶可用的程度、具有經濟效益指軟件開發、運行的整個開銷滿足用戶要求的程度。

  • 軟件工程活動:指生產一個最終滿足需求且達到工程目標的軟件產品所需要的步驟。它列出了需要完成的一系列任務的框架(Framework),它規定了完成各項任務的工作步驟。
    1.問題定義
    2.可行性研究
    3.需求分析
    4.概要設計
    5.詳細設計
    6.編碼和單元測試
    7.綜合測試
    8.軟件維護

    所有的軟件工程活動必須進行管理。
    軟件項目管理貫穿於軟件工程的演化過程之中

  • 軟件工程原則
    (1) 選取適宜的開發模型
    (2) 採用合適的設計方法
    (3) 提供高質量的工程支持
    (4) 重視開發過程的管理

  • 軟件工程模型
    軟件工程模型也稱爲軟件開發模型,是軟件開發全部過程、活動和任務的結構框架。它能直觀表達軟件開發全過程,明確規定要完成的主要活動、任務和開發策略
    常見的軟件工程模型有:線性模型(瀑布模型)、快速原型模型、螺旋模型和漸增式模型等。

  • 傳統瀑布模型存在的問題:
    (1)過於理想化,事實上人在工作過程中不可能不犯錯誤
    (2)在設計階段可能發生規格說明文檔中的錯誤;而設計上的缺陷或錯誤可能在實現過程中顯示出來
    (3)在綜合測試階段將發現需求分析、設計或編碼階段的許多錯誤

  • 瀑布模型
    優點
    (1)奠定了軟件工程方法的基礎
    (2)流水依賴,便於分工協作
    (3)推遲物理實現,易於修改文檔,有複審質量保證。
    (4)可強迫開發人員採用規範的方法(例如,結構化技術);
    (5)嚴格地規定了每個階段必須提交的文檔;
    (6)要求每個階段交出的所有產品都必須經過質量保證小組的仔細驗證。
    不足
    1.與用戶見面晚,成功率低,一般爲25%
    2.實際項目很少按照該模型給出的順序進行;
    3.用戶常常難以清楚地給出所有需求;
    4.用戶必須有耐心,等到系統開發完成;
    5.開發者常常被不必要地耽擱。
    適用範圍:適用於系統要求明確的系統,各種應用軟件的開發均可使用。

  • 原型模型
    快速原型模型工作過程
    1.原型模型從需求收集開始。 開發者和用戶在一起定義軟件的總體目標,標識出已知的需求,並規劃出進一步定義的區域。
    2.然後是“快速設計”,快速設計集中於軟件那些對用戶可見部分的表示。“快速設計”導致原型的建造。
    3.原型由用戶評估,並進一步精化待開發軟件的需求,逐步調整原型使其滿足客戶的要求。同時開發者對將要做的事情有更好的理解, 這個過程是迭代的。
    4.按線性模型構建軟件系統

  • 增量模型(漸增模型)
    構件思想:
    第一構件完成軟件提供的基本最核心的功能。
    後面的增構件是爲了第一構件提供服務提供功能的。
    而且避免把難題退後,首先完成的應該是高風險和重要部分。
    增量模型的優點
    1.在較短時間內向用戶提交可完成部分工作的產品,並分批、逐步地向用戶提交產品。從第一個構件交付之日起,用戶就能做 一些有用的工作。
    2.整個軟件產品被分解成許多個增量構件,開發人員可以一個構件一個構件地逐步開發。
    3.逐步增加產品功能可以使用戶有較充裕的時間學習和適應新產品,從而減少一個全新的軟件可能給客戶組織帶來的衝擊。
    4.採用增量模型比採用瀑布模型和快速原型模型需要更精心的設計,但在設計階段多付出的勞動將在維護階段獲得回報。
    使用增量模型的困難
    1.增量構件必須不破壞原來已經開發出的產品。
    2.軟件的體系結構便於進行擴充,加入新構件的過程必須簡單、方便,即軟件體系結構必須是開放的。
    3.開發人員既要把軟件系統看作整體。又要看成可獨立的構件,相互矛盾。
    4.多個構件並行開發,具有無法集成的風險。

  • 螺旋模型
    螺旋模型的設計思想:使用原型方法或者其他方法降低風險。可看作在每個階段之前都增加了風險分析過程的快速原型模型。(快速原型模型+風險分析)
    “螺旋模型”的核心螺旋模型的核心是關注風險。
    瀑布模型與螺旋模型的優缺點比較:
    1.瀑布模型強調的保證軟件的質量,忽略人力,時間,資源等成本因素,以質量爲第一目標,每次需求發生變更都要從頭再來…適合於一些大型穩定的項目。
    2.螺旋模型是比較適合於前期需求不穩定,後期需求新增變更較多的項目,他是一種增量迭代開發的模型,每一次循環都是一次版本的升級。
    螺旋模型的優點
    (1)有利於已有軟件的重用
    (2)降低風險
    (3)減少過多測試;維護只是模型的另外一個週期
    螺旋模型的缺點
    1.需要軟件開發人員具有豐富的風險分析和排除風險的知識。
    2.很難讓用戶確信這種演化方法的結果是可以控制的。建設週期長,而軟件技術發展比較快,所以經常出現軟件開發完畢後,和當前的技術水平有了較大的差距,無法滿足當前用戶需求。
    螺旋模型的適用性 適用於風險大,產品需求變動大的內部開發大規模的項目。

項目管理框架

  • 有組織的活動分爲兩種:
    一類是連續不斷、周而復始的活動,稱之爲“運作”(Operations),如企業日常的生產產品的活動;
    另一類是臨時性、一次性的活動,稱之爲“項目”(Projects),如企業的技術改造活動、一項環保工程的實施。
    項目:是指在一定約束條件下具有特定目標的一項一次性任務;項目是爲了創造一個唯一的產品或提供一個唯一的服務而進行的臨時性的努力。

  • 項目的特徵
    有明確的目標
    項目之間的活動具有相關性
    限定的週期
    有獨特性
    資源成本的約束性
    項目的不確定性

  • 項目與日常運作的區別
    項目是一次性的,日常運作是重複進行的,
    項目是以目標爲導向的,日常運作是通過效率和有效性體現的,
    項目是通過項目經理及其團隊工作完成的,而日常運作是職能式的線性管理;
    項目存在大量的變更管理,而日常運作則基本保持連貫性的。

  • 軟件項目的特殊性
    邏輯實體,軟件是邏輯實體,不是具體的物理實體,具有抽象性
    軟件是相互作用的系統,系統包括彼此相互作用的部分,軟件項目中涉及的因素越多,彼此相互作用就越大
    變更:是軟件項目中常見的現象,如需求的變更、設計的變更、技術的變更、社會環境變更等,這些均說明了軟件項目管理的複雜性
    漸近明細:表明項目的定義會隨着團隊成員對項目、產品等的理解、認識的逐步加深而得到逐漸深入的描述

  • 項目的生命週期
    項目從開始到結束,一般都要經歷幾個階段,包括啓動階段、計劃階段、實施階段和結束階段,稱之爲項目的生命週期
    項目啓動:可行性研究,確定是否接受項目。
    項目計劃:建立解決需求或問題的方案,向客戶提交各種計劃書。
    項目實施:執行解決方案,在各種因素的制約下實現項目目標。
    項目結束:驗收項目。
    軟件項目可分爲:需求分析、設計、實現、測試和維護等階段。

  • 項目管理概念
    按PMI的定義:項目管理就是“在項目活動中運用一系列的知識、技能、工具和技術,以滿足或超過相關利益者對項目的要求”。
    中國項目管理研究委員會對項目管理總結爲兩種不同的含義:其一指一種管理活動;其二是指一種管理學科,前者是一種客觀的實踐活動,後者是前者的理論總結;前者以後者爲指導,後者以前者爲基礎。
    項目管理貫穿整個項目的生命期,是對項目的全過程管理。

  • 項目管理特點
    綜合性:項目管理是一項複雜的工作,一般由多個部分組成,工作跨越多個組織,需要運用多種學科的知識解決問題
    創造性:項目具有一次性特點,既要承擔風險又必須發揮創造性。創造性依賴於科學技術的發展和支持。在項目的前期構思中,重視科學技術情報工作和信息的組織管理,這是產生新構思和解決問題的主要途徑;爲較快進度和提高成功率,需要多個試驗方案並進。
    時間性:項目具有壽命週期,其本質是計劃和控制一次性的工作,在規定期限內達到預定目標。在項目生命週期中一個明確的階段順序。
    項目管理的6要素:範圍、時間、成本、質量、組織及客戶滿意度
    範圍:也稱工作範圍,指爲了實現項目目標必須完成的所有工作。一般通過定義交付物及其標準定義工作範圍,工作範圍根據項目目標分解得到。
    範圍指出:
    完成那些工作可以達到項目目標;
    完成那些工作項目可以結束。
    時間:時間相關因素用進度計劃描述。進度計劃說明工作範圍內所有工作需要的時間,以及每個活動開始時間和結束時間。
    成本:指完成項目需要的款項。包括人力成本、原材料、設備租金、分包費用及諮詢費等。項目總成本以預算爲基礎,最終成本應控制在預算之內。
    質量:指項目滿足明確或隱含需求的程度。一般通過定義工作範圍內的交付物標準來定義,包括各種特性及這些特性需要滿足的要求。另外還可能對項目的過程有明確要求。
    組織:常見的三種組織模式:職能型模式;項目型模式;矩陣型模式
    職能型模式體現嚴格的等級制度,每個成員都有明確的上級,各成員的權力和職責十分明晰。
    項目型模式中,項目經理負責產品的定位和發展方向,有很大的獨立性和權威,在產品的發展過程中起着重要的作用。
    矩陣型模式混合了智能型和項目型的特點,項目組通常有全職的項目經理,項目組的其他人員來自各個職能部門,他們在必要時可以爲項目兼職或全職工作一段時間。
    客戶滿意度:衡量產品的根本尺度。“客戶滿意,自己獲利”。
    時間、質量和成本這個三要素簡稱TQC
    對於一個項目來說,最理想的情況就是“多、快、好、省”。“多”-工作範圍大,“快”-時間短,“好”-質量高,“省”-成本低。

項目管理知識體系

PMBOK6詳解

  • 目前有兩大項目管理的研究體系
    以歐洲爲首的體系 – 國際項目管理協會(International Project Management Association, IPMA)
    以美國爲首的體系 – 美國項目管理學會PMI
    PMI成員以企業、大學、研究機構的專家爲主,它開發了一套項目管理知識體系(Project Management Body of Knowledge, PMBOK)。
    PMBOK6分爲10個知識領域
    1.整合管理
    整合管理確保項目的各個部分有機地整合在一起,協調並權衡各個相互衝突的目標和解決方案,以滿足或超過客戶的預期需求。具體過程有:
    (1) 項目計劃的制訂,集成並協調所有的項目計劃以產生一個一致的、有內在聯繫的最終文檔。
    (2) 項目計劃的執行,進行項目計劃中的每個活動以使計劃得到執行。
    (3) 集成變更控制,協調整個項目的變更。
    2.範圍管理
    範圍管理就是界定項目的範圍,描述用以保證項目包含且只包含所有需要的工作
    範圍管理由啓動、範圍計劃編制、範圍定義、範圍覈實和範圍變更控制構成,並在此基礎上對項目進行管理。
    範圍是以後一系列決策的基礎。
    3.進度管理
    進度管理是項目管理的重要一環,描述用以保證項目能夠按時完成所需的各個過程,以確保項目在預定的時間內順利完成,由活動定義、活動安排、活動歷時估算、進度計劃編排和進度計劃控制構成。
    4.成本管理
    成本管理描述用以保證在批准預算內完成項目所需的各個過程,是爲了確保在預算範圍內完成項目所需要的一系列過程,由資源計劃編制、成本估算和成本控制構成。
    5.質量管理
    質量管理是爲了確保項目的結果滿足用戶需求並達到質量要求所需實施的一系列過程,由質量計劃編制、質量保證和質量控制構成。
    6.資源管理
    資源管理是爲了確保與項目有關的所有成員發揮其最佳效能的管理過程,由組織的計劃編制、人員獲取和團隊組建構成。分爲規劃資源管理,估算活動資源,獲取資源,建設團隊,管理項目團隊,控制資源。
    7.溝通管理
    溝通管理是對項目過程中產生的各種信息進行收集、存儲、分發和最終處理,有溝通計劃編制、信息發送、性能報告和階段(或項目)的結束構成。

8.採購管理
採購管理是確保項目進行過程中所需的各種原材料、資源和服務得到滿足的過程,由採購計劃編制、計價計劃編制、計價、供方選擇、進貨檢驗、合同管理和合同收尾構成。

9.風險管理
風險管理是對項目可能遇到的風險進行識別、分析和應對的一系列過程。它涵蓋了將對項目目標起正面作用的因素的作用發揮到最大及將對項目目標起負面作用的因素的作用降到最小這一理念,由風險管理計劃、風險識別、風險分析、風險應變和風險監控構成。

  • 項目管理的發展現狀:當代的項目管理已經發展爲:一門學科,一個專業,一種職業
  • 項目管理學科發展的特點:
    (1)項目管理的全球化發展:主要表現在國際間的項目合作日益增多、國際化的專業活動日益頻繁、項目管理專業信息的國際共享
    (2) 項目管理的多元化發展:應用行業及項目類型的多樣性,導致了各種各樣項目管理理論和方法的出現,從而促進項目管理的多元發展。
    (3) 項目管理的專業化發展:突出表現在PMBOK的不斷髮展和完善、學歷教育和非學歷教育競相發展、項目與項目管理學科的探索及專業化項目諮詢機構的出現
  • 項目管理學科在雙向探索中前進:
    各領域專家探討如何將本學科領域的專業理論及方法應用於項目管理【向科學化方向發展
    各行各業的專家研究如何把項目管理的理論及方法應用到本行業中去【向實用化方向發展
  • 項目管理學科發展趨勢
    項目學主體是應用項目學,應用項目學主體是微觀項目管理
    世界各國研究的PMBOK是當前項目管理學科發展的重要內容
    項目學是知識創新與市場相結合的綜合化發展
    項目學是科學、技術和藝術的綜合

10.相關方管理爲了識別能夠影響項目或會受項目影響的人員、團體或組織,分析相關方對項目的期望和影響,制定合適的管理策略來有效調動相關方參與項目決策和執行。用這些過程分析相關方期望,評估他們對項目或受項目影響的程度,以及制定策略來有效引導相關方支持項目決策、規劃和執行。這些過程能夠支持項目團隊的工作。分爲識別相關方,規劃相關方管理,管理相關方參與,控制相關方參與

軟件項目管理

  • 軟件項目是以軟件爲產品的項目,軟件產品的特質決定了軟件項目管理和其他領域的項目管理有不同之處。
    1.抽象性
    2.缺陷檢測的困難性
    3.高度的複雜性
    4.缺乏統一規則

  • 軟件失控項目:指軟件項目在進行時遇到困難,導致大大超過可控制範圍(時間、費用、功能性需求)的項目。
    軟件項目失控的量化定義
    顯著未實現目標和至少超出原定預算30%的項目。
    Robert L.Glass 觀點:30%提高到100%
    失控項目狀態
    兩難境地(Crunch Mode):處於無法達到最初目標的威脅,而項目團隊仍然在努力跨越此困難。兩難境地的狀況可能會持續幾天、幾周甚至幾個月。
    死亡行軍(Death March)項目的各項指標超過正常標準50%。
    失控:接近於或已經失敗的項目。
    軟件項目失控的原因:
    1.需求不明確
    需求過多,大型項目比小型項目更容易失敗。
    需求不穩定,用戶無法決定他們真正想要解決的問題。
    需求模棱兩可,不能確定需求的真實含義。
    需求不完整,沒有足夠的信息來創建系統。
    2.不充分的計劃
    工作責任範圍不明確;
    每個開發階段的提交結果不明確;
    開發計劃沒有指明里程碑或檢查點,也沒有規定設計評審期;
    開發計劃沒有規定進度管理方法和職責,導致無法正常進度管理。
    3.過於樂觀估算
    處於客戶和公司上層的壓力在工作量估算上妥協;
    設計者過於自信或出於自尊心問題,對於一些技術問題不夠重視;
    過分相信經驗。
    4.採用新技術
    技術無法擴展,所有新技術都有限制,在項目使用新技術之前完全瞭解新技術的限制很重要。
    技術是錯誤的解決方案,技術是新技術,並不意味着它適用於你所試圖解決的所有問題。
    技術不具有要求的功能性,不是現在不能,而是技術本身的限制導致了它永遠不能。
    5.管理方法缺乏或不恰當:開發出的系統無法快速地運行以便及時地滿足用戶的需求,在軟件工程領域,這種問題被稱爲“性能”問題。
    6.性能問題:開發出的系統無法快速地運行以便及時地滿足用戶的需求,在軟件工程領域,這種問題被稱爲“性能”問題。
    7.團隊組織不當
    項目組織過小:每個軟件開發組織都希望以最小的成本完成項目,因而項目組織過小成爲許多項目都會面臨的問題。另外,有些軟件開發組織對項目提供分配好的技術人員,而這些技術人員的水平達不到特定項目的要求。
    缺乏資深人員:項目團隊缺少人員,從而設計能力不足,是項目失敗的原因之一。
    8.人際因素
    (1) 開發商和客戶:開發商是軟件產品的提供者,客戶是軟件產品的使用者,兩者之間應是一種公平交易的關係,但這種關係很容易被扭曲。
    (2) 銷售人員和技術人員:銷售人員爲了提高其工作效益,經常屈從於客戶的壓力而答應客戶的許多要求,也可能由於對技術的不瞭解而隨意答應客戶的一些要求,而有些要求在技術人員看來是無法滿足的。
    (3) 項目管理者和開發人員:項目管理者把與開發人員的關係扭曲成管理與被管理的強制性關係。

  • 軟件項目管理的意義
    軟件項目管理的概念涵蓋了管理軟件產品開發所必需的知識、技術及工具。
    根據PMI項目管理的定義總結:在軟件項目活動中運用一系列的知識、技能、工具和技術,以滿足軟件需求方的整體要求。

  • 軟件項目管理的過程
    (1) 啓動軟件項目
    啓動軟件項目是指必須明確項目的目標和範圍、考慮可能的解決方案以及明確技術和管理上的要求等,這些信息是軟件項目運行和管理的基礎。
    (2) 制訂項目計劃
    軟件一旦啓動,就必須制訂項目計劃。計劃的制訂以以下的活動爲依據:
    估算項目所需要的工作量
    估算項目所需要的資源
    根據工作量制訂進度計劃,繼而進行資源分配
    作出配置管理計劃
    作出風險管理計劃
    作出質量保證計劃
    (3) 跟蹤及控制項目計劃
    在軟件項目進行過程中,嚴格遵守計劃。對於一些不可避免的變更,要進行適當的控制和調整,但要確保項目計劃的完整性和一致性。
    (4) 評審項目計劃
    對項目計劃的完成程度進行評審,並對項目的執行情況盡心評價。
    (5) 編寫管理文檔
    項目管理人員根據軟件合同確定軟件項目是否完成。項目一旦完成,則檢查項目完成的結果和中間記錄文檔,並把所有的結果記錄下來形成文檔並保存。

  • 軟件項目管理的內容
    ① 軟件項目需求管理
    ② 軟件項目估算與進度管理
    ③ 軟件項目配置管理
    ④ 軟件項目風險管理
    ⑤ 軟件項目質量管理
    ⑥ 軟件項目資源管理。

項目管理的基本特性:普遍性、目的性、獨特性、集成性、創新性、過程性。

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