2.1 可行性研究和可行性研究報告
2.1.1 可行性研究的目的和內容
1.可行性研究的目的
軟件可行性研究的目的是用最小的代價在盡可能短的時間內確定該軟件項目是否能夠開發,是否值得開發。注意,可行性研究的目的不是去開發一個軟件系統,而是研究這個項目是否值得去開發,其中的問題是否能夠解決??尚行匝芯繉嵸|上是要進行一次簡化、壓縮了的需求分析和設計過程,要在較高層次上以較抽象的方式進行需求分析和設計過程。
只要資源和時間不加以限制,所有的項目都是可行的。然而,由于資源缺乏和交付時間限制的困擾,使得軟件系統的開發變得比較困難。因此,盡早對軟件項目的可行性做出細致而謹慎的評估,是十分必要的。如果在分析階段盡早發現將來可能在開發過程中遇到的問題,及早做出決定,可以避免大量在人工、金錢、時間上的浪費。
可行性研究的主要任務:首先,需要對系統進行概要的分析研究,初步確定軟件項目的規模和目標,確定項目的約束和限制;其次,分析員對系統做簡要的需求分析,抽象出該系統的邏輯結構,建立邏輯模型;最后,從邏輯模型出發,經過壓縮的設計,探索出若干種可供選擇的主要解決方案,并研究每種解決方案的可行性。
2.可行性研究的內容
可行性研究主要從經濟可行性、技術可行性、社會可行性、開發方案的選擇4個方面進行。
(1)經濟可行性。經濟可行性是指進行成本/效益分析等,從經濟角度判斷系統開發是否合算;或者說是進行開發成本的估算和可能取得效益的評估,確定待開發的項目是否值得投資開發。對于大多數系統,一般衡量經濟上是否合算,應考慮一個底線。經濟可行性研究范圍較廣,包括成本/效益分析、公司經營長期戰略、開發所需的成本和資源、潛在的市場前景。
所謂成本,主要包括購置并安裝軟件、硬件及有關設備的費用,系統開發費用,系統安裝、運行及維護的費用,人員培訓費用。而效益是指系統為用戶增加的收入或為用戶節省的開支,這是有形的效益;給潛在用戶心理上造成的影響,這是無形的效益,它可以轉化為有形的效益。
(2)技術可行性。技術可行性是指進行技術風險評價,從開發者的技術實力、以往工作基礎、問題的復雜性等出發,判斷系統開發在時間、費用等限制條件下成功的可能性。技術可行性常常是系統開發過程中最難決斷和最關鍵的問題,因為系統的目標、功能、性能比較模糊。分析人員需要根據用戶提出的系統功能、性能要求及實現系統的各種約束和限制條件,建立系統模型,從技術的角度研究系統實現的可行性。由于系統的分析和定義過程與系統的技術可行性評估過程是同時進行的,這時系統目標、功能和性能的不確定性會給技術可行性論證帶來許多困難。
技術可行性研究內容主要包括:①開發的風險。在給出的各種限制范圍內,能否設計出系統,并實現必需的功能和性能?②資源的有效性。資源包括已有的或可以使用的硬件、軟件資源,現有技術人員的技術水平與已有的工作基礎。資源分析要考慮可用于開發系統的人員是否存在問題?可用于建立系統的其他資源(硬件、軟件)是否具備?③技術方面。相關技術的發展是否能支持這個系統?
在評估技術可行性時,必須保持冷靜的頭腦,一旦估計錯誤,將會出現災難性的后果。如果開發技術風險很大,或者模型演示表明當前采用的技術和方法不能實現系統預期的功能和性能,或者系統的實現不支持各子系統的集成,則項目管理人員可以做出停止系統開發的決定。
(3)社會可行性。社會可行性是指確定系統開發可能導致的任何侵權、妨礙和責任,以及用戶軟件操作的可行性。社會可行性主要包括法律可行性和用戶操作可行性。
法律可行性考慮要開發系統是否存在任何侵權、妨礙和責任問題。法律可行性涉及的范圍也比較廣泛,它包括合同、責任、侵權、用戶組織的管理模式及規范,以及其他一些技術人員一般不了解的陷阱。
用戶操作可行性考慮待開發軟件的運行方式在用戶組織內是否行得通,現有管理制度、人員素質、操作方式是否可行。
(4)開發方案的選擇。開發方案的選擇是指評價進行系統或產品開發時可能采用的幾個候選方案,最后給出結論意見。分析員考慮解決問題的方案,一般采用將一個大而復雜的系統分解為若干個子系統的辦法來降低復雜性。如何進行系統分解,如何定義各子系統的功能、性能和界面,實現方案不唯一,可以采用折中的方法,反復比較各個方案的成本/效益,選擇可行的方案。
2.1.2 可行性研究的步驟
開展可行性研究,主要包括以下步驟:
(1)確定項目的規模和目標。分析人員對有關人員進行調查訪問,仔細閱讀和分析有關材料,對項目的規模和目標進行定義和確認,清晰地描述項目的所有約束和限制,確保分析人員正在解決的問題確實是要解決的問題。
(2)研究當前正在運行的系統。當前正在運行的系統可能是一個人工操作的系統,也可能是舊的計算機系統,要開發一個新的計算機系統來代替現有的系統。因此,當前系統是信息的重要來源,要研究它的基本功能,存在什么問題,運行當前系統需要多少費用,對新系統有什么新的功能要求,新系統運行時能否減少使用費用等。通過收集、研究、分析當前系統的文檔資料,實地考察現有系統,在考察的基礎上,訪問有關人員,描述當前系統的高層系統流程圖,與有關人員一起審查該系統流程圖是否正確。用這個系統流程圖來反映當前系統的基本功能和處理流程。
(3)建立新系統的高層邏輯模型。根據對當前系統的分析研究,逐步明確新系統的功能、處理流程和應有的約束條件,然后使用建立邏輯模型的工具——數據流程圖和數據詞典來描述數據在系統中的流動和處理情況。需要注意的是,可行性研究不是需求分析,不是完整、詳細的描述,而是概括地描述高層的數據處理和流動。
(4)導出和評價各種方案。分析人員建立了目標系統的高層邏輯模型之后,要從技術的角度出發,提出實現高層邏輯模型的不同方案,即導出若干較高層次的物理模型。根據技術可行性、經濟可行性、社會可行性,對各種方案進行評估,去掉不合理的模型,最后得到可行的模型。
(5)推薦可行的方案。根據上述可行性研究的結果,決定該軟件項目是否值得開發。若值得開發,則確定可行的解決方案,并說明該方案可行的原因和理由。決定項目是否值得開發的主要因素是從經濟上看是否合算,這就要求分析人員對推薦的可行性方案進行成本/效益分析。
(6)編寫可行性研究報告。將上述可行性研究的結果寫成相應的文檔,即可行性研究報告。將該報告提交用戶和管理部門仔細審查,以決定該軟件項目是否可以開發,是否可以接受可行的實現方案。
2.1.3 可行性研究報告
可行性研究報告的形式和內容可以有多種,其主要內容應當包括以下幾個部分:
(1)引言。引言應說明編寫本文檔的目的,項目的名稱、背景,本文檔用到的專業術語和參考資料。
(2)可行性研究的前提。該部分應說明待開發項目的功能、性能和基本要求,要達到的目標,各種限制條件,可行性研究的方法和決定可行性的主要因素。
(3)對當前系統的分析。該部分應說明當前系統的處理流程和數據流程,工作負荷,各項費用的支出,所需各類專業技術人員的類型和數量,所需各種設備,當前系統存在的問題。
(4)所建議系統的技術可行性分析。該部分應包括所建議系統的簡要說明,處理流程和數據流程,與當前系統比較的優越性,采用所建議系統對用戶的影響,對各種設備、現有軟件、開發環境、運行環境的影響,對經費支出的影響,對技術可行性的最終評價。
(5)所建議系統的經濟可行性分析。該部分應說明所建議系統開發時各種可能的成本支出,各種可能的效益,計算收益投資比和投資回收周期。
(6)社會因素可行性分析。該部分應說明法律因素;對合同責任、侵犯專利權、侵犯版權等問題的分析;說明用戶使用可行性,是否滿足用戶行政管理、工作制度、人員素質的要求。
(7)其他可供選擇的方案。該部分應逐一說明其他可供選擇的方案,并說明未被推薦的理由。
(8)結論意見。該部分應說明項目是否可以開發,還需要什么條件才能開發,對項目目標有何變動等。
可行性研究報告首先由項目負責人審查(審查內容是否可靠),再上報給上級主管審閱(估價項目的地位)。從可行性研究應當得出“行”或“不行”的決定。當然,在以后的開發階段,還可以做出“行”或“不行”的決定。