第一章 概述
1.軟件工程產(chǎn)生的背景: 面對(duì)不斷增長(zhǎng)的系統(tǒng)復(fù)雜性拧晕,導(dǎo)致軟件項(xiàng)目面臨不可靠枚粘,費(fèi)用超預(yù)期涩拙,延遲交付等問(wèn)題匈棘,需要采用有效的軟件工程方法來(lái)應(yīng)對(duì)丧慈。
2.好的軟件的基本特性:可接受性,可依賴性和信息安全性主卫,效率逃默,可維護(hù)性。
3.軟件過(guò)程:實(shí)現(xiàn)軟件產(chǎn)品開發(fā)的活動(dòng)序列队秩。包括:軟件規(guī)格說(shuō)明笑旺,軟件開發(fā),軟件確認(rèn)馍资,軟件演化筒主。
4.軟件工程職業(yè)道德(ACM/IEEE-CS軟件工程職業(yè)道德和行為準(zhǔn)則)
第二章 軟件過(guò)程
1.背景:沒(méi)有放之四海皆準(zhǔn)的軟件過(guò)程,但需要不斷改進(jìn)組織中落后的軟件過(guò)程技術(shù)鸟蟹。要充分利用工業(yè)界軟件工程的最佳實(shí)踐乌妙,或者引入U(xiǎn)ML建模和測(cè)試驅(qū)動(dòng)等開發(fā)技術(shù)來(lái)改進(jìn)自己的過(guò)程。
2.通用的軟件過(guò)程模型:
- 瀑布模型(要求早期的承諾并且在實(shí)施變更時(shí)要進(jìn)行系統(tǒng)返工建钥,僅適用嵌入式系統(tǒng)藤韵,關(guān)鍵性系統(tǒng),大型軟件系統(tǒng)):
a.需求分析及定義熊经;
b.系統(tǒng)及軟件設(shè)計(jì)
c.實(shí)現(xiàn)和單元測(cè)試
d.集成和系統(tǒng)測(cè)試
e.運(yùn)行和維護(hù)
- 增量式開發(fā)(每一增量版本包括用戶需求的一部分功能)
優(yōu)點(diǎn):a.降低需求變更成本泽艘;
??????? b.及時(shí)得到客戶的反饋意見欲险;
??????? c.客戶在較早期可以獲得可以交付和部署的未包括所有功能版本。
存在問(wèn)題:
?????? a.過(guò)程不可見匹涮,因?yàn)橄到y(tǒng)快速迭代天试,要產(chǎn)生反映每個(gè)版本的文檔不合算。
?????? b.增量式開發(fā)容易使系統(tǒng)結(jié)構(gòu)退化然低,敏捷方法建議定期對(duì)軟件進(jìn)行重構(gòu)喜每。
- 集成與配置(面向復(fù)用的軟件工程)
優(yōu)點(diǎn):減低軟件開發(fā)量,降低成本和風(fēng)險(xiǎn)
缺點(diǎn):不完全滿足客戶的真實(shí)需求雳攘;對(duì)可復(fù)用構(gòu)件的新版本不可控制带兜,失去對(duì)系統(tǒng)演化的控制。
3.過(guò)程改進(jìn)
目的:通過(guò)理解當(dāng)前的軟件過(guò)程吨灭,對(duì)其進(jìn)行改變以提高產(chǎn)品質(zhì)量刚照,降低成本和開發(fā)時(shí)間。
方法:過(guò)程成熟度方法(軟件過(guò)程成熟度等級(jí)反饋好的技術(shù)和管理實(shí)踐多大程序得到應(yīng)用)
???????? 敏捷方法(最好的過(guò)程是額外開銷最低的過(guò)程)
第三章 敏捷軟件開發(fā)
1.敏捷方法原則
a.客戶參與
b.擁抱變化
c.增量交付
d.保持簡(jiǎn)潔
e.人而不是過(guò)程
2.敏捷開發(fā)技術(shù)(極限編程)
極限編程開發(fā)實(shí)踐
a.用戶故事(開發(fā)團(tuán)隊(duì)將用戶場(chǎng)景分解為任務(wù)沃于,并預(yù)計(jì)所需工作量及資源)
b.重構(gòu)(局部修改可能導(dǎo)致軟件結(jié)構(gòu)退化涩咖,重構(gòu)改進(jìn)軟件結(jié)構(gòu)及可讀性)
c.測(cè)試先行的開發(fā)
d.結(jié)對(duì)編程(系統(tǒng)共有共責(zé),非正式評(píng)審繁莹,鼓勵(lì)重構(gòu))
3.敏捷項(xiàng)目管理(scrum敏捷方法)
目的:解決敏捷項(xiàng)目團(tuán)隊(duì)的時(shí)間和資源能否充分利用檩互。
scrum過(guò)程(沖刺周期):輸入產(chǎn)品待辦事項(xiàng),每次迭代產(chǎn)生一個(gè)可交付的產(chǎn)品增量咨演。
4.敏捷方法的伸縮(應(yīng)對(duì)不同軟件規(guī)模及不同組織的變化)
a.實(shí)踐問(wèn)題:敏捷開發(fā)的非正式性和大型企業(yè)基于法律的合同制度有沖突闸昨。
???????????????????? 敏捷方法適合軟件開發(fā)而不是軟件維護(hù),而大型軟件主要成本在于維護(hù)薄风。
??????????????????? 敏捷方法適合小的饵较,同處一地的團(tuán)隊(duì),對(duì)分布全球的團(tuán)隊(duì)難以實(shí)踐遭赂。
b.敏捷與計(jì)劃驅(qū)動(dòng)相結(jié)合
c.面向大型系統(tǒng)的敏捷方法
d.面向整個(gè)組織的敏捷方法
第四章 需求工程
對(duì)一個(gè)系統(tǒng)的需求是關(guān)于該系統(tǒng)應(yīng)當(dāng)提供的服務(wù)以及對(duì)其運(yùn)行的約束的描述循诉。
定義:找出,分析撇他,文檔化并且檢查這些服務(wù)和約束的過(guò)程稱為需求工程茄猫。用戶需求表示高層的抽象需求,系統(tǒng)需求是對(duì)系統(tǒng)應(yīng)當(dāng)做什么的描述困肩。
1.功能性需求和非功能性需求
2.需求工程過(guò)程
抽取需求-->轉(zhuǎn)換為標(biāo)準(zhǔn)格式(規(guī)格說(shuō)明)-->確認(rèn)需求
3.需求抽取
目的:理解利益相關(guān)者所做的事情以及如何使用一個(gè)新系統(tǒng)支持他們的工作划纽。
a.需求抽取技術(shù):訪談,人種學(xué)調(diào)查
b.故事和場(chǎng)景
4.需求規(guī)格說(shuō)明
a.自然語(yǔ)言規(guī)格說(shuō)明
b.結(jié)構(gòu)圖畫自然語(yǔ)音說(shuō)明(基于表格或模版)
c.圖形化表示法(UML用況和順序圖)
d.軟件需求文檔(SRS)
5.需求確認(rèn)
a.正確性檢查(是否反映真實(shí)需求)
b.一致性檢查(是否互相矛盾的約束)
c.完整性檢查(是否包含所有功能及約束)
d.現(xiàn)實(shí)性檢查(技術(shù)實(shí)現(xiàn)和預(yù)算是否合理)
e.可驗(yàn)證性檢查(每一條需求都能夠通過(guò)測(cè)試驗(yàn)證)
6.需求變更