軟件項目開發和管理規范 本文闡述軟件項目開發和管理的流程規范, 作為軟件項目開發的高級指引, 本規范定義了軟件開發的各個階段以及每個階段的工作活動和工件, 但不對活動和工件的細節作過多規定。在項目開發過程中, 每個項目根據自身的需要確定這些活動和工件的細節。
項目階段
圖 2-1 項目開發的五個階段 ? 啟動階段
這個階段的工作目的是決定一個項目是否需要啟動。為了達到這個目的, 首先要明確項目的總體戰略目標, 對項目的需要建立認同。即確定到底需要做什么、開發什么產品或提供什么服務, 以及需要解決什么樣的問題和需要滿足客戶或市場的什么要求等, 同時還要總結項目工作的范圍、所需資源、大約開支、各種風險, 以及該項目不執行的其他替代選擇等。這些代表了對整個項目目標從戰略角度和宏觀層次所進行的分析, 通過項目的意向書總結出來, 由此確證客戶或項目發起人和贊助者的要求與期望, 并幫助他們判定項目是否上馬。項目意向總結書的通過及項目被批準上馬形成了這個項目的起始點。
? 計劃階段
這個階段的工作是為整個項目做計劃。項目開始后, 首先要確定項目的具體范圍, 明確定出項目到底要做什么, 總結、歸納并定出產品的功能。然后進一步制定項目的計劃, 列出每項具體工作, 并建立所有工作任務的重要性及順序;確定每項工作的執行人和所需資源;根據人員的配置和能力設定各項工作和整個項目的完成時間表。
? 執行階段
這個階段的工作是通過執行項目的計劃來完成項目的任務。它包括落實一切所需資源, 如:
人員、設備、費用、技術、信息, 由管理者領導全體項目參與者開展各項工作。同時跟蹤各項具體工作和整個項目的進度, 定期向全體項目人員及項目的發起人報告項目狀態。
? 控制階段
這個階段的工作是確證項目工作的結果符合項目的計劃。它通過對項目結果的衡量和審核, 與項目計劃所期望的結果進行比較, 找出實際結果與計劃的差別, 并制定處理措施。這個階段的工作還包括對項目進程中出現的任何更改要求進行審核和批準。同時調解項目進程中出現的各種問題, 如:對缺乏的資源的補償調節;對項目的進度表及各項具體工作的優先級或順序的修訂。
? 結束階段
這個階段的工作是確保項目的最終結果或提交物達到計劃的要求, 并對完成的結果作可接受的確認。還包括在項目完成之后的收尾工作, 對整個項目的經歷進行總結, 修訂項目文檔, 用戶培訓等。
階段完成標志 在項目開發過程中, 當一個階段完成后才會開展下一個階段的工作;另外, “某個階段完成”通常被定義為項目的一個里程碑, 里程碑標識了項目的進度, 它是項目開發和控制的重要參考, 對整個項目有重要的意義。因此, “確證某個階段是否已經完成”的工作非常有重要。
? 每一個階段的結束以它特定任務的完成為象征
只有當某個階段中被規定的所有工作任務都完成了, 這個階段才算真正結束, 整個項目才可以進入到下一個階段中去。反過來說, 要是階段中某個任務沒有全部完成, 按照項目的定義, 整個階段就不能算是完成, 因此項目就不能進入到下一個階段去。
? 衡量階段結束的工作結果必 須是實在的交付品
階段中的任務是否完成是透過任務活動中產生的交付品來體現的, 交付品必須是可交付的、非抽象的、實質的并且可以通過用衡量的方法來判斷是否真正地完成了的具體事物。如:某一階段的完成是以建造一個樣品或完成某分文件作為象征。任何項目階段的結束, 都應該有這樣的實質性東西的完成作為象征。
? 跨階段的進程以階段結尾的合格驗證和審核來決定
當一個階段結束時, 在進入到下一個階段之前所需要做的工作應包括對交付品進行合格驗證, 并檢查這一階段的工作質量和效率, 由此判斷是否可以進入到下一個階段。這些檢驗象征了一個階段的結尾終點, 表示項目的進程離開了上一個階段而進入了下一個階段。
啟動階段
圖 3-1 啟動階段的任務和工件 ? 產品領域研究
研究產品所在領域的狀況, 為項目論證提供依據。研究內容包括:
?
o 產品領域的現狀和前景
o 產品領域的商業模式和業務流程
o 產品的價值和盈利空間
o 產品的特性和復雜度
? 技術可行性研究
研究產品的實現技術, 總結技術可行性。研究內容包括:
o
o 類似產品的當前實現技術和技術趨勢
o 實現技術的候選方案
o 各個方案的優點、成本和風險
o 開發團隊與實現技術的匹配情況
? 項目論證
基于商業和技術等方面對項目的可行性進行論證, 確定項目是否開展。如果開展項目, 則進一步論證項目的總體方案。
論證的內容包括:
o 商業可行性
o 技術可行性
o 當前產品與類似產品的比較
o 項目收益和前景
o 項目的成本和風險
o 項目的總體方案
? 確定項目目標和范圍
項目開始時, 所有相關人員必須對項目的目標和范圍達成共識, 形成共同的項目愿景。并把愿景敘述為《項目開發大綱》向相關人員傳達。
《項目開發大綱》的內容包括:
概
述 用三到五張圖表來描述產品目標、功能、平臺、客戶、進度表和開發職責 高級功能 用一個段落來綜述產品, 再用一個段落來描述每個重要的功能 不實現的功能 用一個段落來描述每個對產品有用的但本項目不實現的功能 涉
眾 用一個段落來明確每個重要的涉眾群體和他們的風險股本 項目需求 用一個段落來講述每個重要的項目需求 項目風險 按風險暴露量對每個重要的項目風險都用一個段落來討論 項目回報 用一個段落綜述產品的回報, 其后再對每個重要的項目回報都用一個段落來討論 結
論 用一到三個段落將上述所有部分聯系起來, 明確項目的需求和風險, 再用論點和論據來總結為什么這個項目會成功 表 3-1 項目開發大綱 計劃階段
圖 4-1 計劃階段的任務和工件 ? 規模、工作量評估
圍繞各項計劃的制定工作對項目的規模、工作量等進行評估, 評估的內容包括:
o
o 模塊數量與復雜度
o 輸入、輸出和對外接口等數量與復雜度
o SLOC 和功能點
o 非生產性的支持工作量
o 開發工作量(人月)
o 進度與里程碑
o 進度風險
? 定制項目開發計劃
項目開發計劃體現了項目組對整個開發周期的預期, 指定了項目開發的總體方針。與其他計劃一樣, 項目開發計劃不是固定不變的, 在執行過程中要對計劃進行監控, 可能會根據實際情況修改計劃并重新發布。
《項目開發計劃》的內容包括:
概
述 用三到五張圖表來描述產品目標、功能、平臺、客戶、進度表和開發職責。
?。ā俄椖块_發計劃》的概述部分應該是《 項目開發大綱 》中概述部分的拷貝。當項目計劃改變
時, 修訂《項目開發計劃》的概述部分而不是修訂《項目開發大綱》。這樣, 以后在進行項目評價時, 通過比較《 項目開發大綱 》和《項目開發計劃》的概述, 就能看出項目是如何改變的)
高級功能 用一到五頁的篇幅來概述產品的功能, 其中, 要包括這些功能的附加信息(開發者需要這樣的信息來了解實現需求)。
項目成員 確定軟件工程職能角色, 以及分配到這些角色的人員數量。
軟件過程 概述這個項目中所應用的軟件過程。
?。ň唧w內容可在《 質量保證計劃 》中定義)
軟件工程方法 概述這個項目中所應用的軟件工程方法和技術。
?。ň唧w內容可在《
質量保證計劃 》中定義)
進度和工作量 這一部分要表達出整個項目進度和工作量的估計。其中要包括:
? 對固定不變的里程碑和同步點的解釋
? 在評估中的設想情況、評估中的不準確性的可能來源
? 隨著項目的進展如何更新評估
?。ň唧w進度表內容可在《 開發進度表 》中定義)
風險管理計劃 概述這個項目中風險管理計劃。
?。ň唧w內容可在《 風險管理計劃 》中定義)
測
量 概述這個項目中要收集的測量。
軟件工具 列出要使用的每一項軟件工具, 以及該工具所支持的任務。
項目支持 硬件支持
明確所需的硬件, 包括那些需要移動、獲取或升級的硬件。
軟件支持
明確所需的軟件, 包括需要獲取、安裝或升級的軟件件。
人力支持 由哪個人、部門或團隊為開發組的哪項任務提供支持。
表 4-1 項目開發計劃 ? 定制風險管理計劃
風險管理任務包括:風險識別、風險分析、確定風險優先級、定制風險化解方案、風險化解和風險監控【如:圖 4-2】。
圖 4-2 風險管理任務 《風險管理計劃》定義這些任務的執行流程和人員分配。
《風險管理計劃》的內容包括:
概
述 用文字和圖表概述風險管理任務的總體執行流程。
風險識別 詳細說明“風險識別”任務的實施細節和各項工作的負責人。
風險分析 詳細說明“風險分析”任務的實施細節和各項工作的負責人。
確定風險優先級 詳細說明“確定風險優先級”任務的實施細節和各項工作的負責人。
定制風險化解方案 詳細說明“定制風險處理方案”任務的實施細節和各項工作的負責人。
風險化解 當風險發生時, 需要采取相應的措施化解風險。
這部分的內容是描述風險化解工作的操作規范和流程。
風險監控 詳細說明風險監控任務的實施細節和各項工作的負責人。
表 4-2 風險管理計劃
風險管理中通常會用到《Top N 風險列表》, 風險列表按照風險暴露量排序列出當前
項目中主要的 N 個風險, 《Top N 風險列表》的內容包括:
本周排名 本周的排名(如果本周已被完全化解用“---”表示)
上周排名 上周排名(如果是新識別的風險用“---”表示)
上表周數 該風險已上表的周數 風
險 風險的名稱或簡述 類
型 風險類型(只針對進度相關的風險):
o 計劃編制
o 組織和管理
o 設計和實現
o 客戶和需求
o 承包商
o 產品
o 人員
o 過程
o 技術
o 外部環境
o 開發環境
發生概率 風險發生的百分比概率 損失程度 風險發生時損失的進度(工作日或工作周)
暴露量 發生概率 X 損失程度 狀
態 風險的當前狀態:未發生、已發生、已化解 化解方案 簡述風險的化解方案, 如果有具體的化解方案文檔則鏈接到相應文檔 化解進度 對已發生的風險, 簡述化解進度(未發生的風險用“---”表示)
表 4-3 風險列表 ? 定制質量保證計劃
保證工作質量的一個重要步驟是制定一套合理的質量保證計劃并貫徹執行。
《質量保證計劃》的內容包括:
概
述 說明編寫的目的、適用范圍以及對相關人員的要求等 軟件過程 詳細說明這個項目中所應用的軟件過程。
軟件工程方法 詳細說明這個項目中所應用的軟件工程方法和技術。
工作規范 對工程方法中的各種工作任務進行規范, 明確執行的時機、流程和準則等。這些工作任務包括:
常規開發活動(需求分析、架構設計、詳細設計、編碼和測試、發布和實施等)
會議(工作例會、進度會議、審查會議等)
評審(方案評審、技術評審、質量評審等)
測量(產品規模測量、進度測量、缺陷率測量、測試覆蓋率測量等)
其他活動(技能培訓、資料收集、內部流、客戶溝通等)
表 4-4 工作規范 ? 定制開發進度計劃
基于當前對項目的規模和工作量評估, 定制初步的開發進度表, 作為項目開發計劃的組成部分。
《開發進度表》的內容包括:
o
o 項目的開始和結束時間
o 項目各個階段的開始和結束時間 o 每個階段的工作任務及其開始和結束時間
o 每個工作任務的子任務的及其開始和結束時間 o 里程碑和同步點
o 角色的定義和任務分配
作為跟蹤項目進度的重要依據, 進度表在項目推進過程中需要不斷細化。另外, 當實際進度與計劃進度出現偏差時, 需要修改進度表并重新發布。
執行階段
圖 5-1 執行階段的任務和工件 ? 需求分析
分析產品的關鍵需求、對架構設計有影響的需求和風險較高的需求, 直到分析的程度能開展足界面原型設計和架構設計工作。
《需求規格說明書》的內容包括:
商業或業務需求 從商業或業務角度宏觀上對產品或系統的要求。它主要在宏觀的層面歸納總結為滿足客戶提出的要求或贏得市場競爭所必須實現的功能、性能、質量等要求。
1. 做什么
2. 做的范圍
3. 對結果的要求
使用者需求 從客戶對軟件產品或系統使用方案的角度出發, 描述和總結使用者利用該軟件產品或系統能夠做的事或能夠完成的任務。
功能需求 根據上述 使用者需求列出的使用方案, 列出開發者必須為軟件產品或系統實現的功能。
性能需求 1. 運行速度、容量、并發性能
2. 對資源的利用率
3. 對外界輸入的反饋速度和準確性
4. 對差錯的負荷能力
系統需求 o 必須適應的運行環境的要求 (包括運行平臺、網絡及其他硬件要求)
o 與其他系統兼容的要求 (包括與操作系統、數據庫、瀏覽器及其他應用軟件的兼容要求)
o 與外部其他系統和組件的接口要求
質量需求 o 對用戶重要的質量標志 (可靠性、效率性、靈活性、安全性、互操作性、穩定性、健全性、可用性)
o 對開發者重要的質量標志 (可維護性、多用轉換性、重復使用性、可測試性)
其他需求 不屬于上述需求范圍的, 但受到其他環境和商業合同影響的要求。
1. 國家或地區的任何特別的標準
2. 軟件使用界面的特別要求
3. 與知識產權有關的要求
4. 軟件所面對的市場和行業的規范
5. 客戶的特別要求
開發的局限 對開發的成功與否起很大影響的因素, 是開發能力的局限:
1. 人員的局限
2. 技術的制約和局限
3. 客戶的特別要求
表 5-1 需求分析告 《需求分析報告》的編制方式可以是多樣的, 例如把所有“非功能性需求”組織成“外部接口需求”、“質量屬性需求”和“需求約束”?!救纾簣D 5-2】
圖 5-2 需求規格說明書 ? 界面原型設計
明確了系統的關鍵需求后, 就可以進行界面原型設計工作, 獲取用戶的反饋, 盡快確定產品的界面基調。同時要編寫一份《界面設計概要》文檔, 作為后續的界面設計工作的指導。
《界面設計概要》的內容包括:
o 設計的理念
o 理念的來源或參考
o 設計的要點
o 與類似產品界面的對比
? 架構設計
架構設計從關鍵需求開始, 建立概念性的架構, 并逐步細化和驗證。最終生成架構設計說明書和架構基線代碼。
架構設計的方法:可以從幾個不同的視角進行架構設計, 然后匯總綜合得出完整的設計。(架構設計的五個視圖【如:圖 5-3】)
圖 5-3 架構設計的五視圖 《架構設計說明書》的內容包括:
以下內容為:
制定規范的目的和意義
(一) 標準化為科學管理奠定了基礎。所謂科學管理, 就是依據生產技術的發展規律和客觀經濟規律對企業進行管理, 而各種科學管理制度的形式, 都以標準化為基礎。
(二) 促進經濟全面發展, 提高經濟效益。標準化應用于科學研究, 可以避免在研究上的重復勞動;應用于產品設計, 可以縮短設計周期;應用于生產, 可使生產在科學的和有秩序的基礎上進行;應用于管理, 可促進統一、協調、高效率等。
(三)標準化是科研、生產、使用三者之間的橋梁。一項科研成果, 一旦納入相應標準, 就能迅速得到推廣和應用。因此, 標準化可使新技術和新科研成果得到推廣應用, 從而促進技術進步;
(四)標準化為組織現代化生產創造了前提條件。
隨著科學技 術的發展, 生產的社會化程度越來越高, 生產規模越來越大, 技術要求越來越復雜, 分工越來越細, 生產協作越來越廣泛, 這就必須通過制定和使用標準, 來保證各生產部門的活動, 在技術上保持高度的統一和協調, 以使生產正常進行;所以, 我們說標準化為組織現代化生產創造了前提條件。
(五)促進對自然資源的合理利用, 保持生態平衡, 維護人類社會當前和長遠的利益。標準化是經過多次實踐后得出的最為有效的形式, 對于資源的利用率也是比較高的, 所以標準化在資源的合理化利用方面是有著積極意義的。
(六)合理發展產品品種, 提高企業應變能力, 以更好的滿足社會需求。標準化是對當前產品的精煉, 是針對市場需求的的細分, 把最適合的保留下來, 這樣將更好的滿足社會的需求。
(七)保證產品質量, 維護消費者利益。標準化的規定的程序進行, 將人為因素對產品質量的影響降到最低, 確保了產品質量。
(八) 在社會生產組成部分之間進行協調, 確立共同遵循的準則, 建立穩定的秩序。
標準化的采用, 提高了企業產品之間的兼容性, 減少了由于企業產品之間標準不一致, 帶來的巨大社會浪費。另外, 企業通過標準化可以避免對某一個供貨商的依賴, 因為其他供貨商依據公開的標準可以補充市場, 于是企業的供貨渠道不斷增加。供應商數量的增加, 加大了供貨商之間的競爭, 從而促使產品質量不斷提高, 價格也會不斷降低, 建維護了市場穩定的秩序
(九)在消除貿易障礙, 促進國際技術交流和貿易發展, 提高產品在國際市場上的競爭能力方面具有重大作用。加入 WTO 以來, 面對技術壁壘, 我國在大力提高產品質量的同時, 必須依靠標準化工作提高技術水平, 提升保障產品質量, 才能在國際貿易方面有一定的話語權, 穩定促進國際貿易發展。
(十) 保障身體健康和生命安全, 大量的環保標準、衛生標準和安全標準制定發布后, 用法律形式強制執行, 對保障人民的身體健康和生命財產安全具有重大作用。
(十一)標準化標志著一個行業新的標準的產生。標準化是產品質量和技術發展一定水平才能實現的, 標準化實現將進一步促使生產技術的提高, 進行形成更高水平的標準。
總之, 標準及標準化所具有的引導性、前瞻性、公平性、強制性和懲戒性, 決定了標準化在市場經濟中的作用是多層次的、全方位的, 進而也決定了
它是建立和完善市場經濟體制不可缺少的重要元素。應用標準化的目的就是為了能有效解決市場經濟發展中的質
量問題、效率問題、秩序問題、可持續發展問題等。因此, 我們必須從戰略的高度重視標準化工作。只有我們不斷地去提升標準化水平, 才能有效提升產品質量, 增強產品的市場競爭力, 進一步擴大出口貿易, 從而有效推進經濟社會又好又快向前發展。