天天看點

軟體工程之項目分析與規劃

在軟體項目早期,需要對軟體問題進行高層構架分析,以确定項目的可行性。還需要根據 可行性分析的結果制定出有效的項目實施計劃,以指導軟體項目的順利開展。

一、計算機系統分析

當某個軟體問題被作為項目提出時,即意味着,這個軟體問題将成為一項工程任務,需要按照工程化作業流程來分階段解決。其中,計算機系統分析是軟體項目工程化作業流程中首先 需要進行的預備性工作,它以整個計算機系統作為分析背景,由此得到對有待開發的軟體系統 及其工作環境的全貌性的了解。

1.計算機系統

系統是一個群體概念,一個事物若被稱為系統,則表明這個事物之内包含有許多元素。系統由元素組成,但系統并不是其所包含的元素的簡單組合,而是一個有機整體,其内部元素之間互相關聯、協同工作,具有一緻的任務目标。 有些系統是簡單的,比如鋼筆,它僅由筆尖、吸墨器、筆杆、筆套等簡單零件組成,其構造可以一目了然。然而有些系統則是複雜的,比如汽車,具有複雜的内部構造。 一般來說,比較複雜的系統大都具有分層構造,其内部元素也具有系統特征,可以作為子系統看待。計算機系統就是一個非常複雜的系統,包含有:硬體系統、軟體系統、網絡通信系統、人工作業系統等諸多子系統,而其中的軟體系統又由作業系統、資料庫系統、應用程式等更小的系統元素組成,如圖 3-1 所示。

軟體工程之項目分析與規劃

計算機系統還是一個具有智能特性的開放系統。計算機的智能特性就是通過它的軟體系統 提供的,一個新的軟體的誕生,實質上也就是計算機又得到了一次智能擴充。

2.系統分析法

軟體項目是基于計算機的系統工程,是以,針對軟體項目的系統分析需要以計算機這個更大的系統為背景進行,需要将軟體問題放置到整個計算機系統中去看待。是以,針對有待開發的軟體系統的前期分析,也就不隻是軟體系統本身了,它還需要分析與有待開發的軟體系統有 關的其他方面的問題,例如,硬體環境、網絡環境、支撐軟體等。 系統分析是對項目的高層分析,需要得到的是系統的基本架構。是以,系統分析并不需要對有待開發的軟體系統的内部構造作出過多的研究,但需要對系統按能夠獨立工作的元件或子系統為機關進行分解,由此使系統能夠從它所處的環境中分離出來,其結果将作為劃分系統邊界與确定系統架構結構的基本依據。 系統分析也不需要研究有待開發的軟體系統的控制機制,但卻有必要以獨立元件或子系統為單元,研究系統的工作流程、系統與外界的資料通信。 具體說來,系統分析可以從以下幾個方面對軟體及其相關問題作出描述:

(1)軟體系統的規模大小、功能範圍。

(2)軟體系統對硬體環境、網絡環境、資料環境和支撐軟體的依賴。

(3)軟體系統中有關安全保密問題的考慮。

(4)軟體系統與其他相關系統之間的資料通信。

(5)軟體使用者,包括:使用者機關的組織結構,與軟體有關的使用者的工作流程。

3.建立系統模型

建立系統模型,也就是以作圖方式對系統進行直覺的描述。計算機系統前期分析過程中使用得比較多的圖形模型有:系統架構圖、系統流程圖。其中,系統架構圖用于描述系統的基本 架構,系統流程圖用于描述系統的基本工作流程。下面分别加以介紹。

  (1)系統架構圖

系統架構圖使用矩形與帶箭頭的線段來描述系統的基本體系構造,能夠用來描述系統的邏輯架構。 系統架構圖中的矩形用于表示構造系統的元件或子系統,線段則用于表示元件或子系統之 間的關系。

例如圖 3-2 所示的自動閱卷系統的系統架構圖,

軟體工程之項目分析與規劃

它所表達的是:自動閱卷系統由成 績資料庫、讀卡程式、閱卷程式、成績查詢程式、成績分析程式、成績單列印程式和成績備份 程式組成,并以成績資料庫為核心建構。 一般情況下,可以使用系統架構圖說明系統的功能配置設定和劃分系統邊界。

(2) 系統流程圖

系統流程圖被用來描述系統的工作流程,以系統中的實體元件為單元說明系統的基本構造,并由此說明系統對資料的加工步驟。表 3-1 所列是系統流程圖中常用的圖形符号。

軟體工程之項目分析與規劃

顯然, 系統流程圖中的符号是一些可以從系統中分離出來的實體元素,例如,裝置、程式子產品、報       表等。

 圖 3-3 是關于“自動閱卷系統”的系統流程圖,它所表達的是:閱卷系統首先通過讀卡程式讀入考試答題卡片上的資料,然後經過閱卷程式計算出成績并存入成績資料庫,在産生出成績資料之後,系統可以通過成績查詢程式、成績分析程式、成績單列印程式和成績備份程式, 對成績資料庫中的資料進行相關操作。 顯然,與系統架構圖比較,系統流程圖包含了更多的資料加工細節,并能通過實體元素表現系統的實體構架,以及與外部接口的連接配接通信等。

軟體工程之項目分析與規劃

二、項目可行性分析

1.可行性分析意義

軟體問題往往以任務立項的形式被作為工程提出,這是軟體項目實施過程中需要進行的又 一項準備工作,涉及對軟體問題的一些概括性描述。例如,項目的名稱、性質和意義,項目的任務來源,有待開發的軟體在功能、性能等方面需要達到的基本目标,項目在資金、裝置和技術支援等方面所受到的條件限制等。 軟體任務立項可以被看作為具有宣言意義的綱領,以最簡潔的方式,從項目的最高層面上 表達了項目需要達到的目标。 但需要注意的是,凡是工程項目就必然具有工程風險,其中軟體項目則更是具有高風險的 特征。這也意味着,軟體項目很有可能不能夠達到任務立項時所預期的工程目标。是以,在軟體項目正式實施之前,有必要對其進行可行性分析,由此對軟體項目是否能夠達到任務立項所 預期的工程目标作出一個比較明确的是非判斷。 工程經驗表明:可行性分析對軟體問題解決途徑的探索,能夠給軟體項目帶來以下方面具 有積極意義的影響。

(1)通過少量的費用,對項目能否實施盡早作出決斷,以避免項目開展以後所帶來的大量 的人力、物力和時間的浪費。

(2)根據項目所受到的條件限制,對有待開發的系統在體系構造、工作模式等方面作出高層抉擇,以利于項目今後的實作。

(3)可以把可行性分析看作軟體定義時期需要進行的前導性工作,其結果可以作為一個高 層架構被用于軟體需求分析過程之中,以友善今後軟體規格定義工作的順利開展。

2.可行性分析内容

軟體開發總是離不開對軟體中技術因素的考慮。但是,當軟體問題成為工程問題時,它還将受到來自項目費用預算、開發期限和應用環境等其他方面因素的制約。是以,對軟體項目的可行性分析,也就包括了技術、經濟、應用等諸多方面的分析。

(1) 技術可行性

技術可行性是關于軟體項目技術問題的高層政策,涉及對有待開發系統的高層技術構架的 探索。技術可行性需要确認的是:項目所準備采用的技術是先進的、成熟的,能夠充分滿足使用者系統在應用上的需要,并足以從技術上支援系統的成功實作。 對技術可行性的判斷是基于軟體開發者可能采用的技術而提出的,并需要從技術與技術資 源這兩個方面作出可行性評估。

  a.技術限制。一般來說,用于開發軟體的技術會受到先進性、成熟度等因素的限制。

  例 如,軟體技術的先進性與成熟度是否能夠保證開發出來的系統達到預期的功能、性能、安全等技術目标。其中,技術的先進性與成熟度是兩個需要平衡考慮的技術因素。例如,開發者可能希望使用一種剛剛誕生不久的新技術,以使所開發的系統能夠獲得技術先進性所帶來的開發上 的便利,并使系統獲得更好的應用效果。但是,剛誕生的新技術卻有可能缺乏使其成熟的比較 充分的工程驗證,是以有可能會給項目帶來比較高的技術風險。

      b.技術資源限制。這是指開發機構對所采用的技術的把握程度方面的限制。

例如,開發人員對技術的熟練程度,開發機構目前所擁有的軟體資源、裝置、工程經驗和能夠得到的技術支援等。顯然,盡管将采用的技術既先進又成熟,但假如開發機構剛剛使用這種技術不久,其 在該項技術的應用上工程經驗還積累得不夠,技術資料也相對比較缺乏,那麼,從工程角度考 慮,它仍有可能不具備可行性。

(2)經濟可行性

經濟可行性分析是對項目實施成本和項目可能帶來的經濟效益的分析,以确定等待實施的 項目是否值得投資。 應該說,任何項目都會受到項目資金的限制,軟體項目也不例外。是以,針對軟體項目必須進行成本估算,并以項目成本是否在項目資金限制範圍以内作為項目的一項可行性依據。 影響經濟可行性的另一個因素是項目的經濟效益。實際上,無論是開發機構或是使用者,都會關心項目效益,是以必須對項目進行效益評估,從中發現項目預期的經濟收益是不是能夠超 過項目投資。 在分析項目效益時需要注意的是,開發機構與使用者會有不同的效益來源,需要分别對待。 其中,開發機構的效益直接來源于軟體産品,而使用者的效益則應該說是來自于對軟體的間接 應用。

(3) 應用可行性

應用方面的可行性将涉及法律法規、使用者操作規程等方面的問題。法律法規方面的問題有: 開發的軟體會不會構成法律侵權,會不會跟國家的相關政策、法律發生沖突,開發者、使用者雙 方的職責和權利有沒有通過合同等法律形式明确展現出來等。使用者操作規程方面的問題有:用 戶機關的組織結構、與軟體有關的使用者工作流程、使用者在計算機應用上的素質等。 軟體是開發給使用者使用的,是以應該考慮所開發的軟體是否能夠跟使用者機關已經形成的管理模式、工作流程、操作方式等保持良好的協調。例如,基于傳統的 C/S 結構的區域網路上的信 息系統,由于具有較好的工作性能和便利的操作方式,而且技術成熟、容易實作,它比較适合 一些地域集中的企業的資訊化管理。但是,一個跨區域的企業,由于需要通過網際網路進行通信, C/S 結構就可能不太合适了,更加合适的結構可能是基于 B/S 結構的 Web 資訊系統。

3.可行性分析過程

可行性分析的一般步驟是:建立系統模型,進行項目可行性評估,撰寫可行性分析報告。 下面将介紹這幾個步驟。

  (1) 建立系統模型

可行性分析所針對的是一個尚未建立的新系統,為了使可行性分析具有研究對象,在進行 可行性評估之前有必要先建立起該系統的工作模型。 建立系統模型可以按照以下步驟進行。

a.研究現有系統的實體模型。有足夠的理由使人相信,新的系統将建立在現有系統基礎 之上。例如,新系統與現有系統由相同的使用者使用,新系統與現有系統涉及了一些相同的工作内容,現有系統積累下來的資料,将要由新的系統繼續給予維護等。是以,在建立新系統模型 時,有必要研究現有系統的工作模型。 需要注意的是:現有系統是一個處在工作狀态的現實系統,是以,對現有系統的研究,可 以從它的實體模型着手,例如,可以使用系統流程圖來對它做直覺的實體描述。

b.導出現有系統的邏輯模型。對現有系統的研究是為了更加合理地對新系統提出可供參 考的實施方案,但是,實體模型是一種相對固化的模型,當需要由現有系統對新系統進行推斷時,實體模型不如邏輯模型靈活。是以,為了更友善地構造新系統的工作模型,有必要将現有 系統的實體模型轉化成為它的邏輯模型,例如,從現有系統的系統流程圖模型推導出它的資料流圖模型。

c.設想新系統的邏輯模型。邏輯模型具有變通性,是以,可以将現有系統的邏輯模型作 為前提條件,并以新系統需要獲得的功能為目标,對新系統的邏輯模型作出合理的設想。

d.提出新系統的實體模型。可行性研究是對項目能否實施、軟體能否實作的可行性評估。 由于軟體系統的實作最終都将展現為某種具體的實體形态,是以,為了使得可行性研究所提出 的建設性意見更加具有可信度,還需要以系統的邏輯模型為依據,提出有關系統的實體模型。 需要注意的是:由于邏輯模型所展現出來的隻是系統的功能構架,往往可以采用許多種不 同的實體方案給以具體實作。是以,基于同一個邏輯模型,有必要提出幾個适當的實體模型供 項目參考。

(2)進行可行性評估

随着系統初步模型的産生,可行性分析已經有了一個适當的研究對象。 在新系統的實體方案被提出來以後,接下來需要進行的工作就是針對所提出的實體方案,從 技術、經濟、應用等方面進行可行性評估,并由此歸納出對于軟體項目的總的可行性評估結論。 下面是一些可供參考的可行性評估結論:

a.項目各方面條件都已經基本具備,并能夠産生很好的影響或擷取有效的成果,建議立即着手實施項目。

b.主要條件已基本具備,但準備工作仍顯得不充分,例如,項目管理中還缺少專門的質 量監控機構,有關技術資源不夠充分等,建議在相關條件得到進一步完善之後,再着手實施項目。

c.項目實施的基本條件不具備,例如,項目資金缺口太大、項目技術難以在限定時間内 有所突破等,建議中止項目。

(3) 撰寫可行性分析報告

可行性分析是軟體工程過程中的一個重要階段,是以可行性分析中産生的一系列結論要以 文本形式展現出來。例如,按照一定的格式撰寫成“可行性分析報告”,并報送有關部門或機構 (例如:使用者機關、項目上司小組等)進行稽核。

三、項目成本效益分析

經濟可行性研究是對項目實施成本和所能帶來的經濟效益的分析,以确定等待實施的項目 是否值得投資。

1.項目成本估算

在項目初期,無論是進行可行性分析,還是制定項目預算,或是向客戶提供軟體報價,都 需要針對軟體項目進行成本的初步估算。下面将要介紹的是一些常用的軟體項目成本估算方法。

 (1)基于軟體規模的成本估算

傳統的軟體規模是通過代碼行數計算的。也就是說,通過估算軟體代碼總行數,可以計算 出建立軟體的總工作量和軟體總成本。 基于軟體代碼行數的人力成本估算公式是:

     WC = ( TCL / MPACL ) × MPAP

 計算公式中的 WC 是軟體工作成本, TCL 是軟體總代碼行數, MPACL 是以參入項目所有人員 為基數計算的每月人均完成的代碼行數, MPAP 是以參入項目所有人員為基數計算的每月人均工 資。其中,參入項目所有人員既包括技術人員,也包括管理人員。 在對軟體代碼行數進行估算時,往往需要先将軟體按功能進行分解。例如,可以将軟體系 統按照功能分解為許多子系統,子系統又可以繼續分解為許多功能子產品,這種對軟體系統的分 解工作可以一直進行到基本子產品。應該說,基本子產品的代碼行數是比較容易估算的,而通過對 基本子產品代碼行數進行估算與累計,可以估算出整個系統的總代碼行數。 代碼行數估算方法比較适合一些需求比較容易确定,并且采用傳統開發工具(例如:彙編 語言、C 語言等)開發的系統。但在目前,更多的應用項目是面向使用者的,項目非常龐大,軟 件需求在項目初期也往往隻有一個架構。開發這些系統所采用的開發工具則一般是面向對象或 基于元件的,例如:C++、Java、Visual Basic 等;并且在軟體實作過程中,還有可能會大量 地應用到諸多重用技術,例如,将一些已經存在的對象或元件引用到目前新的項目之中來。這 些都給代碼行數估算方法帶來了困難。對于這樣的軟體系統,一種更加合适的軟體規模估算是 基于面向使用者的應用對象進行的,例如,使用者的操作視窗、提供列印的資料報表、用于資料計 算的功能元件、資料庫中的資料表或資料視圖等。這個時候,諸多複雜程度不同的應用對象可以采用合适的對象點數加以辨別,例如,簡單的使用者視窗其對象點數取“1”;中等複雜程度的 使用者視窗其對象點數取“2”;而非常複雜的使用者視窗其對象點數則可以取“3”等。 顯然,比起傳統的代碼行數估算方法來,基于應用對象的軟體規模估算,能夠更加友善地 在項目初期對那些隻是進行了高層結構描述的軟體系統進行成本估價。 基于應用對象的人力成本估算公式是:

     WC = ( (∑ ( NOP ( 1 - R ) ) ) / PROP ) × MPAP

 計算公式中的 WC 是軟體工作成本, NOP 是應用對象的對象點數, R 是構造應用對象的代碼 複用率, PROP 是以參入項目所有人員為基數計算的每月人均完成的對象點數, MPAP 是以參入項 目所有人員為基數計算的每月人均工資。其中,參入項目所有人員既包括技術人員,也包括管理人員。

(2)基于任務分解的成本估算

這是一種以項目任務的人力消耗為依據的成本估算方法。可以把項目任務分解成諸多活 動,例如,按照工程過程将項目任務分解成需求分析、概要設計、詳細設計等若幹個階段,然後根據每個階段的人員配備、周期長短和階段任務參加人員平均工資情況,而估算出每個階段 的人力成本,由此累計出項目總成本。 例如為某企業開發“企業資源綜合管理系統”時考慮按表 3-2 所列進行人員配備。

軟體工程之項目分析與規劃

(3)成本估算中的其他因素

軟體成本主要是工作成本,上述對軟體成本的估算主要是基于軟體開發的任務量計算的。 盡管如此,軟體項目中的其他因素也不能完全忽略不計,例如,計算機硬體裝置費用,軟體資 源費用,差旅教育訓練費用,開發場地、電力和網絡通信費用等。在項目初期制定項目預算時,需 要将諸多問題逐項列出,以防止由于計算遺漏而造成項目實施過程中出現經費短缺現象。 實際項目中,影響項目成本的因素可能更多,例如,軟體的應用領域、開發環境、開發隊 伍、國家差别等。實際上,影響軟體成本的諸多因素大都是一些模糊因素,這使得對項目成本 的估算不可能很精确。為了避免成本估算中出現大的偏差,對成本的估算還可以考慮采用其他 不同方法,并有必要運用統計技術。例如,邀請多位軟體技術和應用領域方面的專家,由他們 分别用其所熟悉的方法對項目做成本估算,然後再進行成本統計分析。 為了提高成本估算的準确性和便利性,開發機構有必要根據自己的項目經驗或有關資料, 建立項目成本模型,并依靠有關模型參數使諸多經驗資料在成本估算中産生作用。其中,項目 的類型、規模、難度、應用領域等,都可以作為量化參數。另外,在項目具體實施以後,還需 要根據項目的實際進展情況和項目的需求變動等情況,對項目成本進行修正,這可以使對項目 成本的估算更加接近實際。

2.項目效益分析

無論是開發機構或是使用者,都會關心項目效益,但值得注意的是,開發機構的效益直接來源于軟體産品,而使用者的效益則來自于對軟體的應用。并且不同的軟體産品會有不同的效益來源,例如,軟體機構自主開發的通用軟體和使用者委托開發的定制軟體,它們在效益來源上就分别有各自不同的途徑。 通用軟體由軟體機構自主開發,然後投放到軟體市場上銷售。開發機構的最低期望可能是, 軟體在銷售中所擷取的直接經濟利益至少能超過軟體的開發成本,以保證收回投資。對于通用軟體,開發機構大都需要在開發軟體之前進行深入的市場分析,看軟體市場是否已有了同類型 的産品,假如已有同類型産品,則要看開發的産品在功能、性能、價格等方面是否具有市場優 勢等。 而對于由使用者委托開發的軟體項目,開發機構的效益則取決于使用者對項目的資金投入與軟 件實際成本的差額值,其計算看起來是簡單的。但是,這些項目由于完全由使用者進行巨額投資, 其效益也就必然受到使用者的特别關注,是以計算起來非常複雜。使用者的期望可能是,花費巨額 資金開發出來的軟體在其使用過程中能夠提高工作效率、改善工作品質、節約工作成本、拓寬 業務領域等,由此帶來的間接經濟效益至少能夠超過軟體的開發成本。

在計算項目的經濟效益時,還不得不注意到,軟體的經濟效益是在軟體投入使用之後的若 幹年裡逐漸産生出來的,而資金投入則是目前之事。為了更加合理地計算資金效益,未來效益 中産生的資金需要折算為現值進行計算。 資金折現公式是:    

資金折現值 = 資金未來值 / ( 1 + k ) n

 其中, k 是銀行利率; n 是年份。 可以使用一些經濟名額來衡量項目的經濟效益,其主要經濟名額有:

(1)純收入:指軟體在估算的正常使用期内産生的資金收益被折算為現值之後,再減去項 目的成本投入。

(2)投資回收期:指軟體投入使用後産生的資金收益折算為現值,到項目資金收益等于項 目的成本投入時所需要的時間。

(3)投資回收率:指根據軟體的資金收益進行利息折算,可以将其與銀行利率做比較。 顯然,若項目的投資回收期超過了所開發軟體的正常使用期,或項目的投資回收率低于銀行利率,或純收入為負值,則項目在經濟效益上不具有可行性。 例如某“企業資源綜合管理系統” 的開發。假設開發過程中,人力、裝置、支撐軟體等 各項成本總計預算是 20 萬,計劃一年開發完成并投入使用。表 3-5 所列為預計有效 5 年生命期 内的逐年經濟收益與折現計算。其中,銀行年利率按 6%計算。

軟體工程之項目分析與規劃

由表 3-5 可以推算出以下結果:

(1)純收入 = 293 600–200 000 = 93 600(元)。

(2)投資回收期 = 3 + ( 200 000 – 47 000 – 71 200 – 67 200 ) / 63 200 = 3.23(年)。

(3)投資回收率的計算則相對比較複雜,需要通過一個高階代數方程才能計算出來。目前 軟體問題的投資回收率計算的高階代數方程是:     5 / (1 + j ) + 8 / (1 + j )2 + 8 / (1 + j )3 + 8 / (1 + j )4 + 6 / (1 + j )5 =20

四、項目規劃

專業的軟體開發總是要受到成本預算、工程進度、品質要求等因素的制約。是以,開發機構在項目實施之前需要對項目作出全面的規劃,并通過計劃書的形式明确展現出來。一些常用的項目計劃書包括:項目開發計劃、驗收計劃、品質計劃、維護計劃、配置管理計劃、人員計劃等。 軟體工程對項目的要求是計劃在先、實施在後,這意味着:項目初期拟定的計劃将會成為 項目開展的驅動或指南。

1.項目開發計劃

當項目經過可行性評估獲得通過以後,接着就應該編制項目開發計劃,其涉及的内容包括:

  (1)開發團隊的組織結構,人員組成與分工。

  (2)項目成本預算。

  (3)項目對硬體、軟體的資源需求。

  (4)項目任務分解和每項的任務裡程碑标志。

  (5)基于裡程碑的進度計劃和人員配備計劃。

  (6)項目風險計劃。

  (7)項目監督計劃。

項目開發計劃需要給出影響軟體項目的各項限制條件,例如:項目傳遞期限、現有的人員情況、項目總體預算等。但是,項目初期的問題往往是比較模糊的,項目進行過程中也有可能 出現一些沒有預料到的問題。是以,制定開發計劃時應該有一定的靈活性,以保證當項目進行 過程中出現偶然事件或沒有完全按計劃達到預期目标時,能夠對計劃做适當的調整。 當需要調整的計劃和使用者所提出的要求發生沖突時,就不得不和使用者進行協商了。為了避 免或減少出現這些問題,有經驗的項目管理者在項目初期制定計劃時往往會保持一種低調,他 會把各種不利因素盡量考慮進去。

2.項目進度表

項目進度是基于裡程碑制定的,例如,可行性分析、需求分析、概要設計等。每一個裡程碑都将産生明确的結果導出。通過裡程碑來管理項目進度,其好處是能夠使對項目的管理落實到項目過程中的每一個關鍵點上去,由此達到對項目的微觀管理的目的。 在安排項目進度時,需要估算完成各項活動所需的時間和資源,并按照一定的順序把它們 嚴密地組織起來。除非進行進度安排的項目與原來的項目相似,否則新的項目進度不能沿用原來的安排。由于不同的項目可能使用不同的設計方法和實作語言,使得對資源和時間的估算更 為複雜。 項目進度需要把項目中的所有工作分解為若幹個獨立的活動,并需要判斷完成這些活動所需的時間。通常,有些活動需要并行進行,以保證人力資源得到充分利用。在安排進度時,關鍵任務要重點考慮,要避免因某項關鍵任務沒有完成而使整個項目延期傳遞的情形出現。 正常情況下項目的各項活動應該至少持續一個星期。是以,項目進度中的活動可以以“周” 為機關計量,更細的計量劃分則意味着在項目進度的估算和進度表的修訂上會花掉太多時間。 項目進行過程中難免有偶然事件發生。例如,做這個項目的個别人員可能生病或離職,設 備可能會出故障,按計劃需要配備的一些基本支援軟體或硬體有可能沒有按時配備等。如果這是個新項目并且技術先進,還有可能遇到沒有預計到的技術困難。是以,在估算進度時,需要有一定的時間寬松。各項活動之間還應該有短暫的時間間隔,以利于活動的過渡。

可以使用進度圖表來描述項目進度。其中,甘特圖表是一種比較常用的進度圖表,可以直 觀地描述項目任務的活動分解,以及活動之間的依賴關系、資源配置情況、各項活動的進展情 況等。 甘特圖表使用條形圖表示每項活動的開始、結束時間以及活動進展,通過連結的箭頭線可 以表達活動之間的依賴關系,還可以通過表格對每項活動進行詳細的描述。例如圖 3-4 中的甘特圖,能夠清楚地展現某“人力資源管理系統”開發過程中各項活動的時間安排,活動之間的 依賴關系,以及各項活動的進展情況

軟體工程之項目分析與規劃

小    結

1. 計算機系統分析

(1)計算機系統 計算機系統是一個非常複雜并具有智能特性的開發系統,包括:硬體系統、軟體系統、網 絡通信系統、人工作業系統等諸多子系統。

(2)系統分析 系統分析是對軟體項目的高層分析,需要擷取的是有關系統的架構描述,并需要使系統從 它所處的環境中分離出來,為劃分系統邊界與确定系統構架提供依據。

(3)系統分析模型 分析模型是指采用作圖方式對系統進行直覺的描述。系統前期分析過程中經常使用的圖形 模型有系統架構圖和系統流程圖。其中,系統架構圖用于說明系統的基本構造架構,而系統流 程圖則用于表現系統的基本加工流程。

2. 項目可行性分析

(1)意義

•  以少量的費用對項目能否實施盡早作出決斷。

•  根據項目條件限制,對系統的體系構造、工作模式等作出高層抉擇。

•  其結果可作為一個高層架構被用于需求分析之中。

(2)分析内容

•  技術可行性:從技術與技術資源這兩個方面作出可行性評估。

•  經濟可行性:從項目投資和經濟效益這兩個方面作出可行性評估。

•  應用可行性:從法律法規、使用者操作規程等方面作出可行性評估。

(3)分析過程

•  建立系統模型。

•  進行可行性評估。

•  撰寫可行性研究報告。

3. 項目成本效益分析

(1)項目成本估算方法:基于軟體規模的成本估算;基于任務分解的成本估算。

(2)項目效益分析名額:純收入;投資回收期;投資回收率。

4. 項目規劃

(1)項目開發計劃 項目開發計劃涉及的内容包括:

•  開發團隊的組織結構,人員組成與分工。

•  項目成本預算。

•  項目對硬體、軟體的資源需求。

•  項目任務分解和每項的任務裡程碑标志。

•  基于裡程碑的進度計劃和人員配備計劃。

•  項目風險計劃。

•  項目監督計劃。

(2)項目進度表 項目進度是基于裡程碑制定的,可以使用進度圖表來描述項目進度。甘特圖表是一種常用 的項目進度圖表,可以直覺地描述項目任務的活動分解,以及活動之間的依賴關系、資源配置 情況、各項活動的進展情況等。