- 張海藩《軟件工程導(dǎo)論》(第6版)筆記和課后習(xí)題詳解
- 圣才電子書
- 3775字
- 2021-06-03 18:30:52
第1章 軟件工程學(xué)概述
1.1 復(fù)習(xí)筆記
一、軟件危機(jī)
1軟件危機(jī)的介紹
(1)概念
軟件危機(jī)是指在計(jì)算機(jī)軟件的開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。
(2)典型表現(xiàn)
①對(duì)軟件開發(fā)成本和進(jìn)度的估計(jì)不準(zhǔn)確。
②用戶對(duì)“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。
③軟件產(chǎn)品的質(zhì)量往往靠不住。
④軟件常常是不可維護(hù)的。
⑤軟件通常沒有適當(dāng)?shù)奈臋n資料。
⑥軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占的比例逐年上升。
⑦軟件開發(fā)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢。
【注意】考試中常考查軟件的概念,記住公式:軟件=程序+數(shù)據(jù)+文檔。
2產(chǎn)生軟件危機(jī)的原因
(1)客觀原因
①軟件是計(jì)算機(jī)系統(tǒng)中的邏輯部件,缺乏“可見性”,因此管理和控制軟件開發(fā)過程相當(dāng)困難。
②軟件維護(hù)通常意味著改正或修改原來的設(shè)計(jì),因此軟件較難維護(hù)。
③軟件規(guī)模龐大,而程序復(fù)雜性將隨著程序規(guī)模的增加而呈指數(shù)上升。
(2)主觀原因
①存在與軟件開發(fā)和維護(hù)有關(guān)的許多錯(cuò)誤認(rèn)識(shí)和做法。
②對(duì)用戶要求沒有完整準(zhǔn)確的認(rèn)識(shí)就匆忙著手編寫程序。
③開發(fā)人員只重視程序而忽視軟件配置的其余成分(文檔和數(shù)據(jù)等)。
④軟件開發(fā)人員輕視維護(hù)。
3消除軟件危機(jī)的途徑
(1)應(yīng)該對(duì)計(jì)算機(jī)軟件有一個(gè)正確的認(rèn)識(shí)。
(2)應(yīng)該充分認(rèn)識(shí)到軟件開發(fā)是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目。
(3)應(yīng)該推廣使用在實(shí)踐中總結(jié)出來的開發(fā)軟件的成功的技術(shù)和方法,并且研究探索更好更有效的技術(shù)和方法。
(4)應(yīng)該開發(fā)和使用更好的軟件工具。
二、軟件工程
1軟件工程的介紹
(1)概念
采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟(jì)地開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它,這就是軟件工程。
(2)本質(zhì)特征
①軟件工程關(guān)注于大型程序的構(gòu)造;
②軟件工程的中心課題是控制復(fù)雜性;
③軟件經(jīng)常變化;
④開發(fā)軟件的效率非常重要;
⑤和諧地合作是開發(fā)軟件的關(guān)鍵;
⑥軟件必須有效地支持它的用戶;
⑦軟件工程領(lǐng)域由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品。
2軟件工程的基本原理
(1)七條基本原理
①用分階段的生命周期計(jì)劃嚴(yán)格管理;
②堅(jiān)持進(jìn)行階段評(píng)審;
③實(shí)行嚴(yán)格的產(chǎn)品控制;
④采用現(xiàn)代程序設(shè)計(jì)技術(shù);
⑤結(jié)果應(yīng)能清楚地審查;
⑥開發(fā)小組的人員應(yīng)該少而精;
⑦承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性。
(2)意義
這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小集合,它們是互相獨(dú)立的,而且是缺一不可的最小集合,然而這七條原理又是相當(dāng)完備的。
3軟件工程方法學(xué)
(1)概念
通常把軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱為范型。目前使用得最廣泛的軟件工程方法學(xué),分別是傳統(tǒng)方法學(xué)和面向?qū)ο蠓椒▽W(xué)。
(2)三要素
軟件工程方法學(xué)包括3個(gè)要素:方法、工具和過程。
(3)傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化范型)
①定義
采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的運(yùn)用。
②優(yōu)點(diǎn)
a.把軟件生命周期劃分成若干相對(duì)獨(dú)立、簡單的階段,便于不同人員分工協(xié)作,降低開發(fā)的困難程度;
b.開發(fā)過程中采用科學(xué)的管理技術(shù)和良好的技術(shù)方法,且在每個(gè)階段結(jié)束之前都進(jìn)行嚴(yán)格的審查,保證了軟件的質(zhì)量,提高了軟件的可維護(hù)性;
c.大大提高了軟件開發(fā)的成功率和生產(chǎn)率。
③缺點(diǎn)
a.不適用于軟件規(guī)模龐大、或者對(duì)軟件的需求是模糊的或會(huì)隨時(shí)間變化而變化的情況。
b.結(jié)構(gòu)化范型技術(shù)把數(shù)據(jù)和操作人為地分離成兩個(gè)獨(dú)立的部分,增加了軟件開發(fā)與維護(hù)的難度。
(4)面向?qū)ο蠓椒▽W(xué)
①定義
面向?qū)ο蠓椒ㄊ且环N以數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來的方法。
②要點(diǎn)
a.把對(duì)象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件;
b.把所有對(duì)象都劃分成類;
c.繼承性;
d.對(duì)象彼此間僅能通過發(fā)送消息互相聯(lián)系。
③與傳統(tǒng)方法學(xué)的對(duì)比
a.傳統(tǒng)方法學(xué)強(qiáng)調(diào)自頂向下、逐層分解、順序開發(fā)。
b.面向?qū)ο蠓椒▽W(xué)強(qiáng)調(diào)主動(dòng)地多次反復(fù)迭代地開發(fā),保證了在各項(xiàng)開發(fā)活動(dòng)之間的平滑過渡。
④優(yōu)點(diǎn)
a.降低了軟件產(chǎn)品的復(fù)雜性;
b.提高了軟件的可理解性;
c.簡化了軟件的開發(fā)和維護(hù)工作;
d.提高了軟件的可重用性。
【注意】常考面向?qū)ο蠓椒▽W(xué)的基本特征:類、繼承、封裝、多態(tài)。結(jié)合第9章掌握其含義和意義。
三、軟件生命周期
1組成
(1)軟件定義
軟件定義時(shí)期通常進(jìn)一步劃分成3個(gè)階段,即問題定義、可行性研究和需求分析。
(2)軟件開發(fā)
通常由下述4個(gè)階段組成:總體設(shè)計(jì),詳細(xì)設(shè)計(jì),編碼和單元測試,綜合測試。其中前兩個(gè)階段又稱為系統(tǒng)設(shè)計(jì),后兩個(gè)階段又稱為系統(tǒng)實(shí)現(xiàn)。
(3)運(yùn)行和維護(hù)(軟件維護(hù))
【注意】考題中常設(shè)置選項(xiàng):在詳細(xì)設(shè)計(jì)階段編寫代碼。這是錯(cuò)誤的,在編碼和單元測試階段才編寫代碼。
2維護(hù)活動(dòng)的分類
①改正性維護(hù);
②適應(yīng)性維護(hù);
③完善性維護(hù);
④預(yù)防性維護(hù)。
四、軟件過程
1概念
(1)定義
軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。
(2)表示
使用生命周期模型簡潔地描述軟件過程。
2典型軟件過程模型
【注意】考生要著重掌握瀑布模型、快速原型模型、螺旋模型、增量模型、噴泉模型。
(1)瀑布模型
①開發(fā)流程
實(shí)際的瀑布模型是帶“反饋環(huán)”的,如圖1-1所示(圖中實(shí)線箭頭表示開發(fā)過程,虛線箭頭表示維護(hù)過程)。
圖1-1 實(shí)際的瀑布模型
【注意】傳統(tǒng)的瀑布模型沒有圖中的反饋環(huán)。
②特點(diǎn)
第一,階段間具有順序性和依賴性;
第二,推遲實(shí)現(xiàn)的觀點(diǎn);
第三,質(zhì)量保證的觀點(diǎn)。
③瀑布模型的優(yōu)缺點(diǎn)
a.優(yōu)點(diǎn)
第一,可強(qiáng)迫開發(fā)人員采用規(guī)范的方法;
第二,嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔;
第三,要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證;
第四,對(duì)文檔的約束,使軟件維護(hù)變得容易一些,且能降低軟件預(yù)算。
b.缺點(diǎn)
第一:瀑布模型是由文檔驅(qū)動(dòng)的。
第二:缺乏對(duì)于需求變更和項(xiàng)目變化的適應(yīng)性。
(2)快速原型模型
①開發(fā)流程
如圖1-2所示(圖中實(shí)線箭頭表示開發(fā)過程,虛線箭頭表示維護(hù)過程)。
圖1-2 快速原型模型
②優(yōu)點(diǎn)
快速原型模型是不帶反饋環(huán)的。
【注意】快速原型模型彌補(bǔ)了瀑布模型不適用于需求動(dòng)態(tài)變更的缺點(diǎn),其本質(zhì)是“快速”。
(3)增量模型
①開發(fā)步驟
增量模型也稱為漸增模型,如圖1-3所示。
圖1-3 增量模型
②原理
把軟件產(chǎn)品作為多個(gè)增量構(gòu)件來設(shè)計(jì)、編碼、集成、測試,開發(fā)人員一個(gè)構(gòu)件接一個(gè)構(gòu)件地向用戶提交產(chǎn)品。
③優(yōu)點(diǎn)
a.能在較短時(shí)間內(nèi)向用戶提交可完成部分工作的產(chǎn)品。
b.逐步增加產(chǎn)品功能可以使用戶有較充裕的時(shí)間學(xué)習(xí)和適應(yīng)新產(chǎn)品。
④技術(shù)難點(diǎn)
a.要求軟件體系結(jié)構(gòu)必須是開放的。
b.增量模型本身是自相矛盾的。
c.增量模型的靈活性很容易退化為邊做邊改模型,從而使軟件過程的控制失去整體性。
⑤風(fēng)險(xiǎn)更大的增量模型
圖1-4是一種風(fēng)險(xiǎn)更大的增量模型。
圖1-4 風(fēng)險(xiǎn)更大的增量模型
【注意】每個(gè)增量構(gòu)件的開發(fā)采用瀑布模型。
(4)螺旋模型
①基本思想
可以把它看作在每個(gè)階段之前都增加了風(fēng)險(xiǎn)分析過程的快速原型模型,如圖1-5所示。
圖1-5 簡化的螺旋模型
②原理
完整的螺旋模型如圖1-6所示。
圖1-6 完整的螺旋模型
③應(yīng)用
螺旋模型主要適用于內(nèi)部開發(fā)的大規(guī)模軟件項(xiàng)目。
④優(yōu)點(diǎn)
a.有利于已有軟件的重用,有助于把軟件質(zhì)量作為軟件開發(fā)的一個(gè)重要目標(biāo);
b.減少了過多測試(浪費(fèi)資金)或測試不足(產(chǎn)品故障多)所帶來的風(fēng)險(xiǎn);
c.在螺旋模型中維護(hù)只是模型的另一個(gè)周期,在維護(hù)和開發(fā)之間并沒有本質(zhì)區(qū)別。
⑤缺點(diǎn)
螺旋模型是風(fēng)險(xiǎn)驅(qū)動(dòng)的。要求軟件開發(fā)人員具有豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和這方面的專門知識(shí)。
(5)噴泉模型
①開發(fā)流程
圖1-7所示的噴泉模型,是典型的面向?qū)ο蟮能浖^程模型之一。
圖1-7 噴泉模型
②特點(diǎn)
a.噴泉模型是一種以用戶需求為動(dòng)力,以對(duì)象為驅(qū)動(dòng)的模型,主要用于描述面向?qū)ο蟮能浖_發(fā)過程。
b.體現(xiàn)了面向?qū)ο筌浖_發(fā)過程迭代和無縫的特性。
(6)Rational統(tǒng)一過程(RUP)
①RUP軟件開發(fā)生命周期
RUP軟件開發(fā)生命周期是一個(gè)二維的面向?qū)ο蟮纳芷谀P停鐖D1-8所示。圖中縱軸代表核心工作流,橫軸代表時(shí)間。
圖1-8 RUP軟件開發(fā)生命周期
②核心工作流
如上圖縱軸所示,由上至下有九個(gè)核心工作流,前六個(gè)為核心過程工作流程,后三個(gè)為核心支持工作流程。
③工作階段
a.初始階段。
b.精化階段。
c.構(gòu)建階段。
d.移交階段。
④特點(diǎn)
a.采用迭代和漸增的方式開發(fā)軟件。
b.具有多功能性和廣泛適用性。
(7)敏捷過程
敏捷過程能夠較好地適應(yīng)商業(yè)競爭環(huán)境下對(duì)小型項(xiàng)目提出的有限資源和有限開發(fā)時(shí)間的約束。敏捷過程中最重要的是極限編程。
(8)極限編程
①極限編程的整體開發(fā)過程
圖1-9描述了極限編程的整體開發(fā)過程。
圖1-9 XP項(xiàng)目的整體開發(fā)過程
②極限編程的迭代過程
圖1-10描述了極限編程的迭代開發(fā)過程。
圖1-10 XP迭代開發(fā)過程
③特點(diǎn)
a.以極限編程為代表的敏捷過程,具有對(duì)變化和不確定性的更快速、更敏捷的反應(yīng)特性;
b.在快速的同時(shí)仍然能夠保持可持續(xù)的開發(fā)速度。
(9)微軟過程
①微軟軟件生命周期
微軟過程把軟件生命周期劃分成五個(gè)階段,圖1-11描繪了生命周期的階段及每個(gè)階段的主要里程碑。
圖1-11 微軟軟件生命周期階段劃分和主要里程碑
②微軟過程模型
a.定義
圖1-12描繪了微軟過程的生命周期模型。
圖1-12 微軟過程的生命周期模型
b.特點(diǎn)
第一,適用于商業(yè)環(huán)境下具有有限資源和有限開發(fā)時(shí)間約束的項(xiàng)目;
第二,微軟過程也有某些不足之處,例如,對(duì)方法、工具和產(chǎn)品等方面的論述不如RUP和敏捷過程全面,人們對(duì)它的某些準(zhǔn)則本身也有不同意見。
- 法國時(shí)裝紙樣設(shè)計(jì) 立體裁剪編
- SoC設(shè)計(jì)方法與實(shí)現(xiàn)
- 中國現(xiàn)代散文史(1917—1949)
- 研究生英語視聽說教程(第二版)
- 經(jīng)濟(jì)學(xué)基礎(chǔ)學(xué)習(xí)指導(dǎo)
- 微觀經(jīng)濟(jì)學(xué)課程學(xué)習(xí)指南
- 北京第二外國語學(xué)院262二外日語歷年考研真題及詳解
- 植物多酚類化合物及其應(yīng)用
- 經(jīng)濟(jì)法學(xué)(法學(xué)教材)
- 機(jī)織實(shí)驗(yàn)教程(第2版)
- SPSS統(tǒng)計(jì)分析方法及應(yīng)用(第二版)
- 同濟(jì)大學(xué)數(shù)學(xué)系《高等數(shù)學(xué)》(第6版)(下冊(cè))筆記和課后習(xí)題(含考研真題)詳解
- 學(xué)前教育專業(yè)幼兒舞蹈基礎(chǔ)訓(xùn)練
- 機(jī)電設(shè)備裝調(diào)工藝與技術(shù)
- 項(xiàng)目管理基礎(chǔ)工具:五圖二表