本篇文章是對課程軟體工程經濟學的課堂內容總結,適用于大連交通大學,
第一章:緒論
軟體、軟體產業與軟體企業
軟體的定義:軟體是計算機系統中與硬體相互依存的另一個部分,它包括程式、資料及其相關檔案的完整集合,
軟體分類及其特點——軟體的分類
-按軟體的功能進行分類:系統軟體、支撐軟體、應用軟體
-按軟體作業方式進行分類:實時處理軟體、多用戶分時軟體、互動式軟體、批處理軟體
-按軟體權益進行分類:商品軟體、共享軟體、自由軟體
-按軟體的標準化程度進行分類:標準化軟體、半定制軟體、定制軟體
-按軟體與硬體關聯程度進行分類:嵌入型軟體、組織型軟體、半獨立型軟體
-按照軟體所處的層次進行分類:平臺軟體、中間軟體、應用軟體
① 軟體是資訊產品,具有無形性、抽象性、可復制性和共享性,
② 軟體的生產程序幾乎都是從零開始,
③ 軟體的價值以及成本構成和傳統工業產品不同,如沒有庫存成本,
④ 軟體開發和運行常常受不同的計算機軟體和硬體平臺的限制,對計算機軟體和硬體系統有不同程度的依賴性,
⑤ 軟體開發程序的復雜性,
⑥ 軟體開發是一項創造性活動,
⑦ 軟體開發需要大量的資金投入,
⑧ 軟體產品對用戶有黏性,
⑨ 軟體產品的更新速度快,
軟體產業
- 1996年的《計算機軟體產業技術創新戰略研究》報告中對軟體產業的定義:軟體產業是指為有效地利用計算機資源而從事計算機程式編制、資訊系統開發和集成及從事相關服務的產業,
- 《2000年中國軟體產業研究報告》中指出軟體產業和軟體市場包括軟體產品與軟體服務兩大部分,
- 麥肯錫公司出版發行的《軟體業的成功奧秘》中,將軟體業分為專業化服務和軟體產品,
- 國際資料公司在做市場研究時,將軟體產業細分為應用解決方案、應用開發和配置軟體和系統基礎軟體三大領域,
- 印度將IT軟體服務產業分為產品和技術開發業(Product & Technology)、IT服務業(IT Services)和IT關聯服務業(IT Enabled Services),
軟體產業——軟體產業的特點
- 高技術、高附加值及高效益特征
- 國際化特征
- 服務化特征
- 軟體產業的專業化分工越來越細
- 高關聯度特征
軟體產業——軟體產業的發展模式
- 美國的“全面領先模式”
- 日本和韓國的“整機帶動模式”
- 愛爾蘭的“軟體集散模式”
- 印度的“外包服務模式”

軟體企業
1、軟體企業的組織結構
- 直線職能式組織結構

- 矩陣式組織結構

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

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/444444.html
標籤:其他
上一篇:軟體工程經濟學第一章
下一篇:npm自行卸載后如何安裝?
