軟件工程第二章

軟工第二章:可行性研究

參考書目

《軟件工程導(dǎo)論(第6版)》是2013年8月1日清華大學(xué)出版社出版的圖書,作者是張海藩、牟永敏。本書主要講述了軟件工程的概念、原理和典型的方法學(xué),并介紹了軟件項(xiàng)目的管理技術(shù)。本書正文共13章,第1章是概述,第2~8章順序講述軟件生命周期各階段的任務(wù)、過程、結(jié)構(gòu)化方法和工具,第9~12章分別講述面向?qū)ο蠓椒▽W(xué)引論、面向?qū)ο蠓治觥⒚嫦驅(qū)ο笤O(shè)計(jì)和面向?qū)ο髮?shí)現(xiàn),第13章介紹軟件項(xiàng)目管理。附錄講述了用面向?qū)ο蠓椒ㄩ_發(fā)軟件的過程,對(duì)讀者深入理解軟件工程學(xué)很有幫助,也是上機(jī)實(shí)習(xí)的好材料。[^1]:百度

[^2]: @當(dāng)當(dāng)網(wǎng)

系列文章目錄

軟件工程第0章:點(diǎn)擊跳轉(zhuǎn)文章

軟件工程第一章:點(diǎn)擊跳轉(zhuǎn)文章

文章目錄

軟工第二章:可行性研究

參考書目

系列文章目錄

寫作風(fēng)格說明

正文

一、可行性研究

(一)是什么?

(二)為什么?

(三)怎么辦?

二、系統(tǒng)流程圖

(一)是什么?

(二)為什么?

(三)怎么辦?

三、數(shù)據(jù)流圖(DFD)

一)是什么?

(二)為什么?

(三)怎么辦?

四、數(shù)據(jù)字典

(一)是什么?

(二)為什么?

(三)怎么辦?

五、成本/效益分析

(一)是什么?

(二)為什么?

(三)怎么辦?

總結(jié)

寫作風(fēng)格說明

在軟件工程這個(gè)專欄,我將會(huì)盡可能圍繞知識(shí)點(diǎn)進(jìn)行剖析,主要撰寫重難點(diǎn),不計(jì)較細(xì)枝末節(jié)。重點(diǎn)關(guān)注問題是什么,為什么,怎么樣?每周一更,一篇文章基本上是參考書目的一章內(nèi)容,當(dāng)然,遇到重難點(diǎn)或是篇幅較長的章節(jié)將會(huì)適當(dāng)分割。

正文

一、可行性研究

(一)是什么?

從技術(shù)、經(jīng)濟(jì)、工程等角度對(duì)項(xiàng)目進(jìn)行調(diào)查研究和分析比較,并對(duì)項(xiàng)目建成以后可能取得的財(cái)務(wù)、經(jīng)濟(jì)效益及社會(huì)環(huán)境影響進(jìn)行科學(xué)預(yù)測,為項(xiàng)目決策提供公正、可靠、科學(xué)的軟件咨詢意見。主要從經(jīng)濟(jì)、技術(shù)、社會(huì)環(huán)境等方面分析所給出的解決方案是否可行,當(dāng)解決方案可行并有一定的經(jīng)濟(jì)效益或社會(huì)效益是才開始真正的基于計(jì)算機(jī)的系統(tǒng)的開發(fā)。

主要內(nèi)容:技術(shù)可行性:現(xiàn)有技術(shù)對(duì)系統(tǒng)功能和性能的支持經(jīng)濟(jì)可行性:成本-效益分析操作可行性:系統(tǒng)能否在用戶組織內(nèi)正常運(yùn)作此外還包括法律、社會(huì)效益等方面的分析與研究

(二)為什么?

目的:以最小的代價(jià)在最短的時(shí)間內(nèi)確定該項(xiàng)目是否可能開發(fā)、是否值得開發(fā),從而能夠避免盲目投資,減少不必要的損失。

(三)怎么辦?

可行性研究過程:①復(fù)查并確定系統(tǒng)規(guī)模和目標(biāo)②研究正在使用的系統(tǒng)(如果存在的話)③導(dǎo)出新系統(tǒng)的高層邏輯模型④進(jìn)一步定義問題,直到提出的邏輯模型完全符合系統(tǒng)目標(biāo)⑤導(dǎo)出和評(píng)價(jià)供選擇的解法⑥推薦行動(dòng)方針,即確定是否要將項(xiàng)目進(jìn)行下去,如果要的話,用什么解決方案,并說明理由⑦草擬開發(fā)計(jì)劃(進(jìn)度、資源、成本)⑧書寫文檔提交審查

二、系統(tǒng)流程圖

(一)是什么?

系統(tǒng)流程圖是概括的描繪系統(tǒng)物理模型的傳統(tǒng)工具。它的基本思想是用圖形符號(hào)以黑盒子形式描繪系統(tǒng)里面的每個(gè)具體部件(程序、文件、數(shù)據(jù)庫、表格、人工過程等),表達(dá)數(shù)據(jù)在系統(tǒng)各個(gè)部件之間流動(dòng)的情況。

(二)為什么?

在進(jìn)行可行性研究時(shí)需要了解和分析現(xiàn)有的系統(tǒng),并以概括的形式表達(dá)對(duì)現(xiàn)有系統(tǒng)的認(rèn)識(shí);進(jìn)入設(shè)計(jì)階段以后應(yīng)該把設(shè)想的新系統(tǒng)的邏輯模型轉(zhuǎn)變成物理模型,因此需要描繪未來的物理系統(tǒng)的概貌。

(三)怎么辦?

系統(tǒng)流程圖(基本符號(hào))

系統(tǒng)流程圖(系統(tǒng)符號(hào))

舉例:添加用戶操作流程圖

三、數(shù)據(jù)流圖(DFD)

(一)是什么?

數(shù)據(jù)流圖(Data Flow Diagram):簡稱DFD,它從數(shù)據(jù)傳遞和加工角度,以圖形方式來表達(dá)系統(tǒng)的邏輯功能、數(shù)據(jù)在系統(tǒng)內(nèi)部的邏輯流向和邏輯變換過程,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達(dá)工具及用于表示軟件模型的一種圖示方法。

(二)為什么?

當(dāng)數(shù)據(jù)在軟件系統(tǒng)中移動(dòng)時(shí),它將被系列“變換”所修改。數(shù)據(jù)流圖(DFD)是一種圖形化技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過程中所經(jīng)受的變換。在數(shù)據(jù)流圖中沒有任何具體的物理部件,它只是描繪數(shù)據(jù)在軟件中流動(dòng)和被處理的邏輯過程。數(shù)據(jù)流圖是系統(tǒng)邏輯功能的圖形表示,即使不是專業(yè)的計(jì)算機(jī)技術(shù)人員也容易理解它,因此是分析員與用戶之間極好的通信工具。此外,設(shè)計(jì)數(shù)據(jù)流圖時(shí)只需考慮系統(tǒng)必須完成的基本邏輯功能,完全不需要考慮怎樣具體地實(shí)現(xiàn)這些功能,所以它也是今后進(jìn)行軟件設(shè)計(jì)的很好的出發(fā)點(diǎn)。

(三)怎么辦?

1、DFD的基本符號(hào):

數(shù)據(jù)流程圖中有以下幾種主要元素:數(shù)據(jù)流。數(shù)據(jù)流是數(shù)據(jù)在系統(tǒng)內(nèi)傳播的路徑,因此由一組成分固定的數(shù)據(jù)組成。如訂票單由旅客姓名、年齡、單位、身份證號(hào)、日期、目的地等數(shù)據(jù)項(xiàng)組成。由于數(shù)據(jù)流是流動(dòng)中的數(shù)據(jù),所以必須有流向,除了與數(shù)據(jù)存儲(chǔ)之間的數(shù)據(jù)流不用命名外,數(shù)據(jù)流應(yīng)該用名詞或名詞短語命名。

數(shù)據(jù)源或宿(“宿”表示數(shù)據(jù)的終點(diǎn))。代表系統(tǒng)之外的實(shí)體,可以是人、物或其他軟件系統(tǒng)。對(duì)數(shù)據(jù)的加工(處理)。加工是對(duì)數(shù)據(jù)進(jìn)行處理的單元,它接收一定的數(shù)據(jù)輸入,對(duì)其進(jìn)行處理,并產(chǎn)生輸出。

數(shù)據(jù)存儲(chǔ)。表示信息的靜態(tài)存儲(chǔ),可以代表文件、文件的一部分、數(shù)據(jù)庫的元素等

2、DFD的擴(kuò)展符號(hào):

根據(jù)層級(jí)數(shù)據(jù)流圖分為頂層數(shù)據(jù)流圖、中層數(shù)據(jù)流圖和底層數(shù)據(jù)流圖。除頂層數(shù)據(jù)流圖外,其他數(shù)據(jù)流圖從零開始編號(hào)。

頂層數(shù)據(jù)流圖只含有一個(gè)加工表示整個(gè)系統(tǒng);輸出數(shù)據(jù)流和輸入數(shù)據(jù)流為系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù),表明系統(tǒng)的范圍,以及與外部環(huán)境的數(shù)據(jù)交換關(guān)系。

中層數(shù)據(jù)流圖是對(duì)父層數(shù)據(jù)流圖中某個(gè)加工進(jìn)行細(xì)化,而它的某個(gè)加工也可以再次細(xì)化,形成子圖;中間層次的多少,一般視系統(tǒng)的復(fù)雜程度而定。

底層數(shù)據(jù)流圖是指其加工不能再分解的數(shù)據(jù)流圖,其加工稱為“原子加工”。

3、DFD分層原則:

在單張數(shù)據(jù)流圖時(shí),必須注意以下原則:

1. 一個(gè)加工的輸出數(shù)據(jù)流不應(yīng)與輸入數(shù)據(jù)流同名,即使它們的組成成分相同。

2. 保持?jǐn)?shù)據(jù)守恒。也就是說,一個(gè)加工所有輸出數(shù)據(jù)流中的數(shù)據(jù)必須能從該加工的輸入數(shù)據(jù)流中直接獲得,或者說是通過該加工能產(chǎn)生的數(shù)據(jù)。

3. 每個(gè)加工必須既有輸入數(shù)據(jù)流,又有輸出數(shù)據(jù)流。

4. 所有的數(shù)據(jù)流必須以一個(gè)外部實(shí)體開始,并以一個(gè)外部實(shí)體結(jié)束。

5. 外部實(shí)體之間不應(yīng)該存在數(shù)據(jù)流

4、DFD畫法

1. 確定系統(tǒng)的輸入輸出由于系統(tǒng)究竟包括哪些功能可能一時(shí)難于弄清楚,可使范圍盡量大一些,把可能有的內(nèi)容全部都包括進(jìn)去。此時(shí),應(yīng)該向用戶了解“系統(tǒng)從外界接受什么數(shù)據(jù)”、“系統(tǒng)向外界送出什么數(shù)據(jù)”等信息,然后,根據(jù)用戶的答復(fù)畫出數(shù)據(jù)流圖的外圍。

2. 由外向里畫系統(tǒng)的頂層數(shù)據(jù)流圖首先,將系統(tǒng)的輸入數(shù)據(jù)和輸出數(shù)據(jù)用一連串的加工連接起來。在數(shù)據(jù)流的值發(fā)生變化的地方就是一個(gè)加工。接著,給各個(gè)加工命名。然后,給加工之間的數(shù)據(jù)命名。最后,給文件命名。

3. 自頂向下逐層分解,繪出分層數(shù)據(jù)流圖對(duì)于大型的系統(tǒng),為了控制復(fù)雜性,便于理解,需要采用自頂向下逐層分解的方法進(jìn)行,即用分層的方法將一個(gè)數(shù)據(jù)流圖分解成幾個(gè)數(shù)據(jù)流圖來分別表示

5、舉例:使用Visio2007制作

1. 訂貨系統(tǒng)的DFD(教材p44圖2.7)

2. 機(jī)票預(yù)定系統(tǒng)航空公司為給旅客乘機(jī)提供方便,需要開發(fā)一個(gè)機(jī)票預(yù)定系統(tǒng)。各個(gè)旅行社把預(yù)定機(jī)票的旅客信息(姓名、性別、工作單位、身份證號(hào)碼(護(hù)照號(hào)碼)、旅行時(shí)間、旅行始發(fā)地和目的地,航班艙位要求等)輸入到系統(tǒng)中,系統(tǒng)為旅客安排航班。當(dāng)旅客交付了預(yù)訂金后,系統(tǒng)打印出取票通知和賬單給旅客,旅客在飛機(jī)起飛前一天憑取票通知和帳單交款取票,系統(tǒng)核對(duì)無誤即打印出機(jī)票給旅客。

四、數(shù)據(jù)字典

(一)是什么?

數(shù)據(jù)字典是指對(duì)數(shù)據(jù)的數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理邏輯等進(jìn)行定義和描述,其目的是對(duì)數(shù)據(jù)流程圖中的各個(gè)元素做出詳細(xì)的說明,使用數(shù)據(jù)字典為簡單的建模項(xiàng)目。簡而言之,數(shù)據(jù)字典是描述數(shù)據(jù)的信息集合,是對(duì)系統(tǒng)中使用的所有數(shù)據(jù)元素的定義的集合。

(二)為什么?

數(shù)據(jù)字典最重要的作用是作為分析階段的工具。任何字典最重要的用途都是供人查詢對(duì)不了解的條目的解釋,在結(jié)構(gòu)化分析中,數(shù)據(jù)字典的作用是給數(shù)據(jù)流圖上每個(gè)成分加以定義和說明。換句話說,數(shù)據(jù)流圖上所有的成分的定義和解釋的文字集合就是數(shù)據(jù)字典,而且在數(shù)據(jù)字典中建立的一組嚴(yán)密一致的定義,很有助于改進(jìn)分析員和用戶的通信。

數(shù)據(jù)庫數(shù)據(jù)字典不僅是每個(gè)數(shù)據(jù)庫的中心,而且對(duì)每個(gè)用戶也是非常重要的信息。用戶可以用SQL語句訪問數(shù)據(jù)庫數(shù)據(jù)字典。

(三)怎么辦?

目前,數(shù)據(jù)字典幾乎總是作為CASE結(jié)構(gòu)化分析與設(shè)計(jì)工具”的一部分實(shí)現(xiàn)的。 在開發(fā)大型軟件系統(tǒng)的過程中,數(shù)據(jù)字典的規(guī)模和復(fù)雜程度迅速增加,人工維護(hù)數(shù)據(jù)字典幾乎是不可能的。

如果在開發(fā)小型軟件系統(tǒng)時(shí)暫時(shí)沒有數(shù)據(jù)字典處理程序,建議采用卡片形式書寫數(shù)據(jù)字典,每張卡片上保存描述一個(gè)數(shù)據(jù)的信息。這樣做會(huì)使更新和修改比較方便,而且能單獨(dú)處理描述每個(gè)數(shù)據(jù)的信息。每張卡片上主要應(yīng)該包含下述這樣一些信息:

名字、別名、描述、定義、位置。

當(dāng)開發(fā)過程進(jìn)展到能夠知道數(shù)據(jù)元素的控制信息和使用特點(diǎn)時(shí),再把這些信息記錄在卡片的背面。

五、成本/效益分析

(一)是什么?

成本效益分析是通過比較項(xiàng)目的全部成本和效益來評(píng)估項(xiàng)目價(jià)值的一種方法,成本—效益分析作為一種經(jīng)濟(jì)決策方法,將成本費(fèi)用分析法運(yùn)用于政府部門的計(jì)劃決策之中,以尋求在投資決策上如何以最小的成本獲得最大的收益。常用于評(píng)估需要量化社會(huì)效益的公共事業(yè)項(xiàng)目的價(jià)值。

(二)為什么?

在激烈競爭的經(jīng)濟(jì)環(huán)境下,成本控制成為每個(gè)企業(yè)關(guān)注的焦點(diǎn)問題。如何科學(xué)分析企業(yè)的各項(xiàng)成本構(gòu)成及影響利潤的關(guān)鍵要素,找到成本控制的核心思路和關(guān)鍵環(huán)節(jié),使企業(yè)更好地應(yīng)對(duì)競爭壓力下的成本控制問題。

成本控制絕對(duì)不僅僅是單純的壓縮成本費(fèi)用,它需要與宏觀經(jīng)濟(jì)環(huán)境、企業(yè)的整體戰(zhàn)略目標(biāo)、經(jīng)營方向、經(jīng)營模式等有效結(jié)合,需要建立起科學(xué)合理的成本分析與控制系統(tǒng),讓企業(yè)的管理者全面、清晰地掌握影響公司業(yè)績的核心環(huán)節(jié),全面了解企業(yè)的成本構(gòu)架、盈利情況,從而把握正確的決策方向,從根本上改善企業(yè)成本狀況,真正實(shí)現(xiàn)有效的成本控制。

(三)怎么辦?

1. 貨幣的時(shí)間價(jià)值:設(shè)年利率為i,P元錢在n年后的價(jià)值為:F=P(1+i)^n

2. 投資回收期:即工程累計(jì)經(jīng)濟(jì)效益等于最初投資所需要的時(shí)間

3. 純收入:在整個(gè)生存周期內(nèi)新系統(tǒng)的累計(jì)經(jīng)濟(jì)效益與投資之差

4. 投資回收率:P=F1/(1+j)+F2/(1+J)^2…+Fn/(1+j) ^n其中P為現(xiàn)在的投資額;Fj是第i年年底的效益(i=1,2,3,…,n);n是系統(tǒng)的使用壽命;j是投資回收率。

總結(jié)

可行性研究進(jìn)一步探討問題定義階段所確定的問題是否有可行的解。在對(duì)問題正確定義的基礎(chǔ)上,通過分析問題(往往需要研究現(xiàn)在正在使用的系統(tǒng)),導(dǎo)出試探性的解,然后復(fù)查并修正問題定義再次分析問題,改進(jìn)提出的解法……經(jīng)過定義問題、分析問題、提出解法的反復(fù)過程最終提出一個(gè)符合系統(tǒng)目標(biāo)的高層次的邏輯模型。然后根據(jù)系統(tǒng)的這個(gè)邏輯模型設(shè)想各種可能的物理系統(tǒng)、并且從技術(shù)、經(jīng)濟(jì)和操作等各方面分析此物理系統(tǒng)的可行性。最后,系統(tǒng)分析員提出一個(gè)推薦的行動(dòng)方針,提交用戶和客戶組織負(fù)責(zé)人審查批準(zhǔn)。

在表達(dá)分析員對(duì)現(xiàn)有系統(tǒng)的認(rèn)識(shí)和描繪他對(duì)未來的物理系統(tǒng)的設(shè)想時(shí),系統(tǒng)流程圖是一個(gè)很好的工具。系統(tǒng)流程圖實(shí)質(zhì)上是物理數(shù)據(jù)流圖,它描繪組成系統(tǒng)的主要物理元素以及信息在這些元素間流動(dòng)和處理的情況。

數(shù)據(jù)流圖的基本符號(hào)只有4種,它是描繪系統(tǒng)邏輯模型的極好工具。通常數(shù)據(jù)字典和數(shù)據(jù)流圖共同構(gòu)成系統(tǒng)的邏輯模型。沒有數(shù)據(jù)字典精確定義數(shù)據(jù)流圖中每個(gè)元素,數(shù)據(jù)流圖就不夠嚴(yán)密;然而沒有數(shù)據(jù)流圖,數(shù)據(jù)字典也很難發(fā)揮作用。

成本/效益分析是可行性研究的一項(xiàng)重要內(nèi)容,是客戶組織負(fù)責(zé)人從經(jīng)濟(jì)角度判斷是否繼續(xù)投資于這項(xiàng)工程的主要依據(jù)。

讀者應(yīng)該著重理解可行性研究的必要性,以及它的基本任務(wù)和基本步驟,在此基礎(chǔ)上再進(jìn)一步學(xué)習(xí)具體方法和工具。對(duì)具體方法和工具的深人認(rèn)識(shí),又可以反過來加深對(duì)可行性研究過程的理解。但是,不要陷于具體方法和工具的細(xì)節(jié)中面忽略了對(duì)軟件工程基本原理和概念的學(xué)習(xí)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容