本篇文章是對課程軟件工程經(jīng)濟學(xué)
的課堂內(nèi)容總結(jié),適用于大連交通大學(xué)。
第一章:緒論
站在用戶的角度思考問題,與客戶深入溝通,找到漢中網(wǎng)站設(shè)計與漢中網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋漢中地區(qū)。
軟件的定義:軟件是計算機系統(tǒng)中與硬件相互依存的另一個部分,它包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。
-按軟件的功能進行分類:系統(tǒng)軟件、支撐軟件、應(yīng)用軟件
-按軟件工作方式進行分類:實時處理軟件、多用戶分時軟件、交互式軟件、批處理軟件
-按軟件權(quán)益進行分類:商品軟件、共享軟件、自由軟件
-按軟件的標(biāo)準化程度進行分類:標(biāo)準化軟件、半定制軟件、定制軟件
-按軟件與硬件關(guān)聯(lián)程度進行分類:嵌入型軟件、組織型軟件、半獨立型軟件
-按照軟件所處的層次進行分類:平臺軟件、中間軟件、應(yīng)用軟件
① 軟件是信息產(chǎn)品,具有無形性、抽象性、可復(fù)制性和共享性。
② 軟件的生產(chǎn)過程幾乎都是從零開始。
③ 軟件的價值以及成本構(gòu)成和傳統(tǒng)工業(yè)產(chǎn)品不同,如沒有庫存成本。
④ 軟件開發(fā)和運行常常受不同的計算機軟件和硬件平臺的限制,對計算機軟件和硬件系統(tǒng)有不同程度的依賴性。
⑤ 軟件開發(fā)過程的復(fù)雜性。
⑥ 軟件開發(fā)是一項創(chuàng)造性活動。
⑦ 軟件開發(fā)需要大量的資金投入。
⑧ 軟件產(chǎn)品對用戶有黏性。
⑨ 軟件產(chǎn)品的更新速度快。
1、軟件企業(yè)的組織結(jié)構(gòu)
2、軟件企業(yè)的管理
軟件企業(yè)管理主要包括戰(zhàn)略管理、市場管理、項目管理、質(zhì)量管理、采購管理、人力資源管理、知識管理、成本管理、風(fēng)險管理和軟件企業(yè)文化管理等等。
在IT行業(yè),軟件企業(yè)開展項目的目的一般是完成某一項軟件產(chǎn)品或者服務(wù),就會引入信息項目管理的程序來執(zhí)行相關(guān)任務(wù)。
項目管理知識體系(Project Management Body of Knowledge,PMBOK)是由美國項目管理學(xué)會(PMI)在20世紀70年代率先提出的,按照ISO更新要求,經(jīng)過多次嚴格的修訂,于2018年第1季度正式啟用第6版,確定為十大知識領(lǐng)域,主要包括項目整合管理、項目范圍管理、項目進度管理、項目成本管理、項目質(zhì)量管理、項目資源管理、項目溝通管理、項目風(fēng)險管理、項目采購管理以及項目相關(guān)方(干系人)管理。
(1)將系統(tǒng)化的、規(guī)范的、可量化的方法應(yīng)用于軟件的開發(fā)、運行和維護;
(2)對(1)中所述方法的研究。
1.瀑布模型是20世紀70年代由W.Royce提出的,是一種線性開發(fā)模型,有不可回溯特性。它給出了軟件生存周期相關(guān)活動的固定順序,開發(fā)人員必須遵循完成上一階段的工作任務(wù)后,方可進行下一階段工作的原則,且往往上一階段的輸出就是下一階段的輸入。如果在軟件開發(fā)后期發(fā)現(xiàn)前期的某一個問題,則需要付出較高的代價
2.V模型是瀑布模型的一個升級變體,該模型描述了在保證質(zhì)量與溝通、建模等動作之間的關(guān)系。強調(diào)了一種將驗證和確認動作應(yīng)用在早期軟件工程中的直觀方法。
3.增量模型主要綜合了線性過程流與并行過程流的特征,該模型在每個階段都使用線性序列,每個線性序列都生產(chǎn)出軟件的可交付增量。
4.原型模型,一般開始于溝通,在客戶定義了相關(guān)軟件的一些基本任務(wù)時,并沒詳細的定義功能和特性需求,或者開發(fā)人員可能對算法的效率、人機交互的模式?jīng)]有較大把握的時候采用的一種模型,多用于給客戶演示軟件的開發(fā)效果。
5.螺旋模型,沿著螺線自內(nèi)向外進行旋轉(zhuǎn),在直角坐標(biāo)系的四個象限分別表示制定計劃、評估方案,風(fēng)險識別、工程實施和評價成果共4個方面的任務(wù)。該模型表示每旋轉(zhuǎn)一圈該軟件則開發(fā)出一個更為完善的新版本,逐步向外延伸,直到最終將得到客戶所期望的系統(tǒng)。
1.代碼行度量
軟件規(guī)模常用程序的代碼行(Line of code,LOC)或者千行代碼KLOC(1000LOC)來衡量。代碼行技術(shù)是一種較為簡單的定量估算軟件規(guī)模的方法,該方法依據(jù)以往開發(fā)類似產(chǎn)品的經(jīng)驗以及歷史數(shù)據(jù)來估計實現(xiàn)一個功能所需要的源程序行數(shù)(不包括注釋)。
為了使程序規(guī)模的估算更加接近實際值,可以由多名比較有經(jīng)驗的軟件工程師來做出估算。每個人都估計程序的最小規(guī)?!癮”,最大規(guī)模“b”以及最可能的規(guī)?!癿”,然后分別算出這3重規(guī)模的平均值?a、?b和?m后,再用公式1.1計算程序規(guī)模的估算值。
2.功能點度量
Albrecht于1979年首次提出面向功能的度量方法,主要考慮了軟件系統(tǒng)的功能性和實用性,稱之為功能點(Function point ,FP)的度量,功能點的度量主要是基于信息域的特征以及軟件復(fù)雜性進行計算。
用于功能點度量的5個基本信息域:用戶輸入數(shù)、用戶輸出數(shù)、用戶查詢數(shù)、文件數(shù)以及外部接口數(shù)。
環(huán)境復(fù)雜性因子Fi(i=114)是基于環(huán)境復(fù)雜性因子取值表對14個問題的評估所得到的值,對每個問題的取值范圍是05,詳見復(fù)雜度取值表,環(huán)境復(fù)雜性因子計算公式詳見公式1.3。
公式1.3、1.4:
【例1.1】某軟件企業(yè)根據(jù)客戶需求對預(yù)定軟件進行功能點度量,5個基本信息域的特征值dj按照表1.4所示的順序分別為35,58,20,6,2;其對應(yīng)的加權(quán)因子分別為:中間、中間、中間、中間和簡單;對照表1.5和表1.6各項指標(biāo)得到Fi的加權(quán)和為20,試計算其功能點。
某軟件根據(jù)需求分析,得到環(huán)境復(fù)雜性因子為18, 五個信息量的數(shù)值dj及其對應(yīng)權(quán)系數(shù)aj的取值見表1,求軟件系統(tǒng)的需求功能點為多少?
dj和aj取值表:
一般開發(fā)規(guī)模相同,復(fù)雜性卻不同的程序,所花費的時間以及成本會有較大差異。K. Magel從六個方面來描述程序的復(fù)雜性:
程序的復(fù)雜性度量模型一般應(yīng)遵循的基本原則:
程序的復(fù)雜性與程序大小的關(guān)系不是線性的
控制結(jié)構(gòu)復(fù)雜的程序比較復(fù)雜
數(shù)據(jù)結(jié)構(gòu)復(fù)雜的程序比較復(fù)雜
轉(zhuǎn)向語句使用不恰當(dāng)?shù)某绦虮容^復(fù)雜
循環(huán)結(jié)構(gòu)比選擇結(jié)構(gòu)較復(fù)雜,選擇結(jié)構(gòu)則比順序結(jié)構(gòu)較復(fù)雜
語句、數(shù)據(jù)、子程序以及模塊在程序中的次序?qū)?fù)雜性有影響
全局變量、非局部變量較多時的程序比較復(fù)雜
參數(shù)按照地址調(diào)用比按值調(diào)用較復(fù)雜
函數(shù)的隱式副作用比顯示參數(shù)傳遞較為難以理解
具有不同作用的變量共用一個名字時比較難理解
模塊間、子程序間聯(lián)系密切的程序較為復(fù)雜
嵌套深度越深的程序越復(fù)雜
1.McCabe環(huán)形復(fù)雜性度量
McCabe環(huán)形復(fù)雜性度量方法是基于圖論,對于一個強連通的有向圖G,若用e表示弧數(shù),n表示結(jié)點數(shù),p表示強連通分量的個數(shù)。
對于一個單入口及單出口的程序來說,從入口的結(jié)點都能到達圖中的任意結(jié)點,同理從任一結(jié)點都可以到達出口結(jié)點,故程序圖都是連通的。但經(jīng)常不是強連通的,故在程序圖中增加一條從出口結(jié)點到入口結(jié)點的弧來將程序圖變成強連通的。對于單入口與單出口的程序,其連通分量就只有一個,即p=1。
如圖 (a)為例,當(dāng)人為增加了出口結(jié)點至入口結(jié)點的弧則成為圖(b) ,其e=8,n=6,p=1,由公式1.5可得V(G)=8-6+1=3,在圖 (b)也能比較明顯的見到3個環(huán)。
將圖 (a)中的e=7,n=6帶入公式1.6可得V(G)=7-6+2=3。可見環(huán)的個數(shù)等于程序圖中區(qū)域的個數(shù),如圖 (a)中就有3個區(qū)域,分別是R1,R2和R3。
2.Halstead復(fù)雜性度量
Halstead提出通過定量的公式計算方法來度量軟件的復(fù)雜性。
用n1表示程序中不同操作符的個數(shù);n2表示程序中不同操作數(shù)的個數(shù);N1表示程序中操作符的總數(shù),N2表示程序中操作數(shù)的總數(shù),則可用公式1.7表示程序的符號長度;用公式1.8表示程序的詞匯量;用公式1.9表示程序量(即存儲容量),即長度方程。
一般認為最小的程序只有兩個操作符,即函數(shù)調(diào)用與賦值,即n1=N1=2,操作數(shù)n_2?則是指賦予函數(shù)值的變量以及函數(shù)調(diào)用時的參數(shù),即n_2?=n_2=N_2。帶入公式1.9可得公式1.10所示的最小程序量計算公式,預(yù)測程序長度詳見公式1.11,預(yù)測程序潛在的錯誤數(shù)詳見公式1.12。
軟件的可靠性是指在規(guī)定的時間內(nèi)以及條件下,軟件按照規(guī)格說明要求不會引起系統(tǒng)失效的概率。軟件的可靠性是關(guān)系到系統(tǒng)成敗的重要因素。軟件可靠性計算公式為:
其中,MTBF是指平均故障間隔時間,MTTF是指平均故障時間,而MTTR則是指平均修復(fù)時間。
軟件的可用性是指軟件在投入使用時能實現(xiàn)其事先指定的相關(guān)系統(tǒng)功能的概率,可用公式1.14來計算
經(jīng)濟學(xué)是研究人類在生產(chǎn)、消費、分配、交換等經(jīng)濟活動過程中的資源配置與資源利用的學(xué)科,屬于社會科學(xué)。
工程經(jīng)濟學(xué)是研究如何根據(jù)既定的活動目標(biāo),分析活動的代價及其對目標(biāo)實現(xiàn)的貢獻,并在此基礎(chǔ)上進行設(shè)計、評價和選擇,以最低的代價來可靠的實現(xiàn)目標(biāo)的最佳活動方案的一門學(xué)科。
1.軟件工程經(jīng)濟學(xué)的內(nèi)涵與任務(wù)
軟件工程經(jīng)濟學(xué)(Software Engineering Economics,SEE)是屬于軟件工程學(xué)和工程經(jīng)濟學(xué)之間的交叉學(xué)科。我們將其定義為以軟件工程領(lǐng)域中的經(jīng)濟問題和經(jīng)濟規(guī)律為主的一門經(jīng)濟學(xué)分支學(xué)科。是研究為實現(xiàn)特定功能需求的軟件工程項目而提出的一門系統(tǒng)方法學(xué)科。
軟件工程經(jīng)濟學(xué)主要包括以下四部分的內(nèi)容:
2.軟件工程經(jīng)濟學(xué)的研究特點與方法體系
軟件工程經(jīng)濟學(xué)研究的重點始終環(huán)繞著軟件產(chǎn)品的質(zhì)量、成本/效益、項目進度、效率等目標(biāo)要素的關(guān)聯(lián)分析,以及人的組織與協(xié)調(diào)管理。
軟件工程經(jīng)濟學(xué)的研究思想主要來自于系統(tǒng)工程,因此軟件系統(tǒng)目標(biāo)的整體性、要素的層次性與關(guān)聯(lián)性、系統(tǒng)環(huán)境的適應(yīng)性等始終是人們研究的指導(dǎo)準則。
軟件工程經(jīng)濟學(xué)采用定量與定性分析相結(jié)合、理論與實證驗證相結(jié)合的方式進行研究。
考慮到我國與西方發(fā)達國家在文化與價值觀念、技術(shù)水平、經(jīng)營機制、管理水平與生產(chǎn)效率以及軟件工程環(huán)境上的差異,因此在大力學(xué)習(xí)與借鑒西方發(fā)達國家有關(guān)軟件工程經(jīng)濟學(xué)的理論、方法與應(yīng)用成果的同時要注意環(huán)境的差異性對數(shù)量分析的影響,從而可在數(shù)學(xué)分析的思路與方法的通用性基礎(chǔ)上來尋找適合于我國國情的研究結(jié)果。
管理學(xué)、社會學(xué)等;
經(jīng)濟學(xué),主要包括微觀經(jīng)濟學(xué)、宏觀經(jīng)濟學(xué)、工程經(jīng)濟學(xué)、管理經(jīng)濟學(xué)、信息經(jīng)濟學(xué)等;
軟件工程學(xué),主要包括軟件工程技術(shù)學(xué)、軟件工程管理學(xué);
計算機通信網(wǎng)絡(luò)與信息系統(tǒng);
系統(tǒng)工程與運籌學(xué)、應(yīng)用統(tǒng)計學(xué)、模糊數(shù)學(xué)、系統(tǒng)動力學(xué)等。
國外研究:
軟件工程誕生于“軟件危機”。軟件危機是指在計算機軟件開發(fā)中的一系列問題。
軟件工程經(jīng)濟學(xué)的研究最早始于美、英等國家,其中較有影響的有Boehm B.W、Putnam L.H以及Banard.L等專家。
我國軟件工程經(jīng)濟學(xué)的研究還處于初級發(fā)展階段,1990年和1991年由機械工業(yè)出版社相繼出版了Boehm的著作《軟件工程經(jīng)濟學(xué)》和Londeix.B的著作《軟件開發(fā)成本估算》,對軟件工程經(jīng)濟學(xué)的概念、方法宣傳起到了一定的作用。西安電子科技大學(xué)的趙瑋教授于2008年出版了《軟件工程經(jīng)濟學(xué)》,對我國軟件工程經(jīng)濟學(xué)的發(fā)展起到了指引作用。
個人博客本文地址:https://kohler19.gitee.io/2022/03/15/Software-engineering-economics1/