軟件工程是指應(yīng)用計算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理轿偎,以工程化的原則和方法來解決軟件問題的工程,其目的是提高軟件生產(chǎn)率挖诸、提高軟件質(zhì)量狼荞、降低軟件成本殉挽。
(一)計算機(jī)軟件
計算機(jī)軟件是指計算機(jī)系統(tǒng)中的程序及其文檔承耿。
程序是計算任務(wù)的處理對象和處理規(guī)則的描述抱既。
文檔是為了便于了解程序所需的闡述性資料。
1.系統(tǒng)軟件
系統(tǒng)軟件是一整套服務(wù)于其他程序的程序。
系統(tǒng)軟件的特點:
- 和計算機(jī)硬件大量交互;
- 多用戶大量使用;
- 需要調(diào)度、資源共享和復(fù)雜進(jìn)程管理的同步操作辖试;
- 復(fù)雜的數(shù)據(jù)結(jié)構(gòu)及多種外部接口莲兢。
2.應(yīng)用軟件
應(yīng)用軟件是解決特定業(yè)務(wù)需要的獨立應(yīng)用程序改艇。
3.工程/科學(xué)軟件
這類軟件通常帶有“數(shù)值計算”算法的特征收班。
4.嵌入式軟件
嵌入式軟件存在于某個產(chǎn)品或系統(tǒng)中,可實現(xiàn)和控制面向最終使用者和系統(tǒng)本身的特性和功能遣耍。
5.產(chǎn)品線軟件
產(chǎn)品線軟件關(guān)注有限的特定專業(yè)市場(如庫存控制產(chǎn)品)或大眾消費市場(如文字處理闺阱、多媒體舵变、數(shù)據(jù)庫管理等)酣溃。
6.Web應(yīng)用
Web
應(yīng)用是一類以網(wǎng)絡(luò)為中心的軟件,其概念涵蓋了寬泛的應(yīng)用程序產(chǎn)品纪隙。
7.人工智能軟件
人工智能軟件利用非數(shù)值算法解決計算和直接分析無法解決的復(fù)雜問題赊豌。包括:機(jī)器人、專家系統(tǒng)绵咱、模式識別等碘饼。
8.開放計算
無線網(wǎng)絡(luò)的快速發(fā)展將促成真正的普適計算、分布式計算的實現(xiàn)悲伶。
9.網(wǎng)絡(luò)資源
萬維網(wǎng)已經(jīng)快速發(fā)展為一個計算引擎和內(nèi)容提供平臺艾恼。
10.開源軟件
開源軟件就是開發(fā)系統(tǒng)應(yīng)用程序的代碼,使得很多人能夠為軟件開發(fā)做貢獻(xiàn)麸锉。
(二)軟件工程基本原理
1.用分階段的生命周期計劃嚴(yán)格管理
應(yīng)該把軟件生命周期劃分成若干個階段钠绍,并相應(yīng)地制定出切實可行的計劃,然后嚴(yán)格按照計劃對軟件的開發(fā)與維護(hù)工作進(jìn)行管理花沉。
六類計劃:
- 項目概要計劃
- 里程碑計劃
- 項目控制計劃
- 產(chǎn)品控制計劃
- 驗證計劃
- 運(yùn)行維護(hù)計劃
2.堅持進(jìn)行階段評審
在每個階段都應(yīng)進(jìn)行嚴(yán)格的評審柳爽,以便盡早發(fā)現(xiàn)在軟件開發(fā)過程中所犯的錯誤。
3.實現(xiàn)嚴(yán)格的產(chǎn)品控制
在改變需求時碱屁,為了保持軟件各個配置成分的一致性磷脯,必須實行嚴(yán)格的產(chǎn)品控制,其中主要是實行基準(zhǔn)配置管理娩脾。
一切有關(guān)修改軟件的建議赵誓,特別是涉及基準(zhǔn)配置的修改建議,都必須按照嚴(yán)格的規(guī)程進(jìn)行評審晦雨,在獲得批準(zhǔn)后才能實施修改架曹。
4.采用現(xiàn)代程序設(shè)計技術(shù)
采用先進(jìn)的技術(shù)既可以提高軟件開發(fā)的效率,又可以降低軟件維護(hù)的成本闹瞧。
5.結(jié)果應(yīng)能清楚地審查
為了更好地進(jìn)行管理,應(yīng)根據(jù)軟件開發(fā)的總目標(biāo)及完成期限盡量明確地規(guī)定開發(fā)小組的責(zé)任和產(chǎn)品標(biāo)準(zhǔn)展辞,從而使所得到的結(jié)果能夠清楚地審查奥邮。
6.開放小組的人員應(yīng)少而精
開發(fā)人員的素質(zhì)和數(shù)量是影響軟件質(zhì)量和開發(fā)效率的重要因素,應(yīng)該少而精。
7.承認(rèn)不斷改進(jìn)軟件工程實踐的必要性
用戶不僅要積極采納新的軟件開發(fā)技術(shù)洽腺,還要注意不斷總結(jié)經(jīng)驗脚粟,收集進(jìn)度和消耗等數(shù)據(jù),進(jìn)行出錯類型和問題報告統(tǒng)計蘸朋。
(三)軟件生存周期
1.可行性分析與項目開放計劃
這個階段主要確定軟件的開發(fā)目標(biāo)及其可行性核无。
可行性分析與項目計劃階段的參加人員有用戶、項目負(fù)責(zé)人和系統(tǒng)分析師藕坯。
產(chǎn)生的主要文檔有可行性分析報告和項目開發(fā)計劃团南。
2.需求分析
確定軟件系統(tǒng)必須做什么,確定軟件系統(tǒng)的功能炼彪、性能吐根、數(shù)據(jù)和界面等要求,從而確定系統(tǒng)的邏輯模型辐马。
參加的人員有用戶拷橘、項目負(fù)責(zé)人和系統(tǒng)分析師。
產(chǎn)生的主要文檔有軟件需求說明書喜爷。
3.概要設(shè)計
在這個階段冗疮,開發(fā)人員要把確定的各項功能需求轉(zhuǎn)換成需要的體系結(jié)構(gòu)。每個成分都是意義明確的模塊檩帐,即每個模塊都和某些功能需求相對應(yīng)术幔。
參加人員有系統(tǒng)分析師和軟件設(shè)計師。
產(chǎn)生的主要文檔有概要設(shè)計說明書轿塔。
4.詳細(xì)設(shè)計
在這個階段主要任務(wù)是對每個模塊完成的功能進(jìn)行具體描述特愿,要把功能描述轉(zhuǎn)變?yōu)榫_的、結(jié)構(gòu)化的過程描述勾缭。
參加人員有軟件設(shè)計師和程序員揍障。
產(chǎn)生的主要文檔有詳細(xì)設(shè)計文檔。
5.編碼
這個階段是把每個模塊的控件結(jié)構(gòu)轉(zhuǎn)換成計算機(jī)可接收的程序代碼俩由,即寫成某種特定程序設(shè)計語言表示的源程序清單毒嫡。
6.測試
測試是保證軟件質(zhì)量的重要手段,其主要方式是在設(shè)計測試用例的基礎(chǔ)上檢查軟件的各個組成部分幻梯。
產(chǎn)生的主要文檔有軟件測試計劃兜畸、測試用例和軟件測試報告。
7.維護(hù)
是軟件生存周期中時間最長的階段碘梢。
在軟件運(yùn)行過程中可能由于各方面的原因需要對它進(jìn)行修改咬摇。
(四)軟件過程
1.能力成熟度模型(CMM)
CMM
是對軟件組織進(jìn)行階段的描述,隨著軟件組織定義煞躬、實施肛鹏、測量逸邦、控制和改進(jìn)其軟件過程,軟件組織的能力經(jīng)過這些階段逐步提高在扰。
CMM
將軟件過程改進(jìn)分為以下五個成熟度級別:
- 初始級
- 可重復(fù)級
- 已定義級
- 已管理級
- 優(yōu)化級
2.能力成熟度模型集成(CMMI)
CMMI
提供了兩種表示法:
- 階段式模型
五個成熟度:- 初始的
- 已管理的
- 已定義的
- 定量管理的
- 優(yōu)化的
- 連續(xù)式模型
六個過程域:-
CL0
(未完成的) -
CL1
(已執(zhí)行的) -
CL2
(已管理的) -
CL3
(已定義級的) -
CL4
(定量管理的) -
CL5
(優(yōu)化的)
-