官术网_书友最值得收藏!

第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)則本身也有不同意見。

主站蜘蛛池模板: 深圳市| 库尔勒市| 闽侯县| 融水| 巴马| 高密市| 正蓝旗| 司法| 昌宁县| 仙桃市| 富宁县| 宣化县| 龙山县| 竹北市| 留坝县| 泰宁县| 密山市| 瓮安县| 平泉县| 辰溪县| 铜川市| 高安市| 常宁市| 秭归县| 庆城县| 拜城县| 上杭县| 松潘县| 军事| 太和县| 常宁市| 罗甸县| 苍溪县| 北碚区| 桑植县| 田东县| 宣恩县| 全南县| 页游| 新宾| 潮安县|