2023年如何理解軟件與軟件工程_第1頁
2023年如何理解軟件與軟件工程_第2頁
2023年如何理解軟件與軟件工程_第3頁
2023年如何理解軟件與軟件工程_第4頁
2023年如何理解軟件與軟件工程_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第一章軟件與軟件工程

1.1軟件(Software)

1.1.1軟件與軟件的組成

計(jì)算機(jī)軟件——與計(jì)算機(jī)系統(tǒng)操作有關(guān)的程序、規(guī)程、規(guī)則及任何與之有關(guān)的文檔

和數(shù)據(jù)。

???軟件程序及有關(guān)數(shù)據(jù)一機(jī)器可執(zhí)行;文檔(與軟件開發(fā)、運(yùn)行、維護(hù)、

使用、培訓(xùn)有關(guān))——不可執(zhí)行。

程序(program)——用程序設(shè)計(jì)語言描述的,適合于計(jì)算機(jī)處理的語句序列。

程序設(shè)計(jì)語言三種類型:

1.機(jī)器語言、匯編語言:依賴于機(jī)器,面向機(jī)器

2.高級語言:獨(dú)立于機(jī)器,面向過程或面向?qū)ο?/p>

3.面向問題語言:獨(dú)立于機(jī)器,非過程式語言(4GL)

文檔(document)——種數(shù)據(jù)媒體和其上所記錄的數(shù)據(jù)。

文檔記錄軟件開發(fā)活動和階段成果,具有永久性,可供人或機(jī)器閱讀。

文檔可用于專業(yè)人員和用戶之間的通信和交流;軟件開發(fā)過程的管理;運(yùn)行階段的

維護(hù)。

1.軟件的特點(diǎn)

軟件是邏輯產(chǎn)品,硬件是物理產(chǎn)品。

特點(diǎn):

(1)軟件開發(fā)更依賴于開發(fā)人員的業(yè)務(wù)素質(zhì)、智力、人員的組織、合作和管理。軟

件開發(fā)、設(shè)計(jì)幾乎都是從頭開始,成本和進(jìn)度很難估計(jì)。

(2)軟件存在潛伏錯(cuò)誤,硬件錯(cuò)誤一般能排除。

(3)軟件開發(fā)成功后,只需對原版進(jìn)行復(fù)制。

(4)軟件在使用過程中維護(hù)復(fù)雜:

1)糾錯(cuò)性維護(hù)一改正運(yùn)行期間發(fā)現(xiàn)的潛伏錯(cuò)誤;

2)完善性維護(hù)一提高或完善軟件的性能:

3)適應(yīng)性維護(hù)一修改軟件,以適應(yīng)軟硬件環(huán)境的變化;

4)預(yù)防性維護(hù)一改進(jìn)軟件未來的可維護(hù)性和可靠性。

(5)軟件不會磨損和老化。

2.軟件的發(fā)展

第一階段——20世紀(jì)60年代中期以前,軟件開發(fā)處于個(gè)體化生產(chǎn)狀態(tài)。在這一階段

中,軟件還沒有系統(tǒng)化的開發(fā)方法。目標(biāo)主要集中在如何提高時(shí)空效率上。

第二階段——從20世紀(jì)60年代中期到70年代末期。軟件開發(fā)已進(jìn)入了作坊式生產(chǎn)方

式,即出現(xiàn)了“軟件車間:軟件開發(fā)開始形成產(chǎn)品。到20世紀(jì)60年代末,“軟件危

機(jī)”變得十分嚴(yán)重。

第三階段——從20世紀(jì)70年代中期到20世紀(jì)80年代末期。軟件開發(fā)進(jìn)入了產(chǎn)業(yè)化生

產(chǎn),即出現(xiàn)了眾多大型的“軟件公司工在這一階段,軟件開發(fā)開始采用了“工程”

的方法,軟件產(chǎn)品急劇增加,質(zhì)量也有了很大的提高。

第四階段——從20世紀(jì)80年代末期開始的。這是一個(gè)軟件產(chǎn)業(yè)大發(fā)展的時(shí)期。也是

軟件工程大發(fā)展的時(shí)期,人們開始采用面向?qū)ο蟮募夹g(shù)和可視化的集成開發(fā)環(huán)

境。

1.1.2軟件危機(jī)

——軟件危機(jī)是指在計(jì)算機(jī)軟件開發(fā)、使用與維護(hù)過程中遇到的一系列嚴(yán)重問題和

難題。

1.軟件危機(jī)的表現(xiàn)

1)對軟件開發(fā)成本和進(jìn)度的估計(jì)常常很不準(zhǔn)確。常常出現(xiàn)實(shí)際成本比估算成本高出

一個(gè)數(shù)量級、實(shí)際進(jìn)度比計(jì)劃進(jìn)度拖延幾個(gè)月甚至幾年的現(xiàn)象,從而降低了開發(fā)

商的信譽(yù),引起用戶不滿。

2)用戶對已完成的軟件不滿意的現(xiàn)象時(shí)有發(fā)生。

3)軟件產(chǎn)品的質(zhì)量往往是靠不住的。

4)軟件常常是不可維護(hù)的。

5)軟件通常沒有適當(dāng)?shù)奈臋n資料。文檔資料不全或不合格,必將給軟件開發(fā)和維護(hù)

工作帶來許多難以想象的困難和難以解決的問題。

6)軟件成本在計(jì)算機(jī)系統(tǒng)總成本中所占比例逐年上升。

特別是軟件維護(hù)成本迅速增加,已經(jīng)占據(jù)軟硬件總成本的40%?75%o

圖”1-1軟件、石更件成,本變化趨勢

2.產(chǎn)生軟件危機(jī)的原因

1)用戶對軟件需求的描述不精確。

2)軟件開發(fā)人員對用戶需求的理解有偏差,這將導(dǎo)致軟件產(chǎn)品與用戶的需求不一致。

3)缺乏處理大型軟件項(xiàng)目的經(jīng)驗(yàn)。開發(fā)大型軟件項(xiàng)目需要組織眾多人員共同完成。

一般來說,多數(shù)管理人員缺乏大型軟件的開發(fā)經(jīng)驗(yàn),而多數(shù)軟件開發(fā)人員又缺乏

大型軟件項(xiàng)目的管理經(jīng)臉,致使各類人員的信息交流不及時(shí)、不準(zhǔn)確、容易產(chǎn)生

誤解。

4)開發(fā)大型軟件易產(chǎn)生毓漏和錯(cuò)誤。

5)缺乏有力的方法學(xué)的指導(dǎo)和有效的開發(fā)工具的支持。軟件開發(fā)過多地依靠程序員

的“技巧”,從而加劇了軟件產(chǎn)品的個(gè)性化。

6)面對日益增長的軟件需求,人們顯得力不從心。從某種意義上說,解決供求矛盾

將是一個(gè)永恒的主題。

3.緩解軟件危機(jī)的途徑

?到了20世紀(jì)60年代末期,軟件危機(jī)已相當(dāng)嚴(yán)重。這促使計(jì)算機(jī)科學(xué)家們開始探索

緩解軟件危機(jī)的方法。他們提出了“軟件工程”的概念,即用現(xiàn)代工程的原理、技

術(shù)和方法進(jìn)行軟件的開發(fā)、管理、維護(hù)和更新。于是,開創(chuàng)了計(jì)算機(jī)科學(xué)技術(shù)的

一個(gè)新的研究領(lǐng)域。

1.2軟件工程的概念

1.2.1軟件工程的定義

1968年,北大西洋公約組織在原西德召開計(jì)算機(jī)科學(xué)會議,由FritzBauer首次提出

了“軟件工程”的概念。

軟件工程——用工程、科學(xué)和數(shù)學(xué)的原則與方法開發(fā)、維護(hù)計(jì)算機(jī)軟件的有關(guān)

技術(shù)和管理方法。

軟件工程由方法、工具和過程三部分組成,稱軟件工程的三要素。

1.2.1軟件工程的定義

?軟件工程中的各種方法是完成軟件工程項(xiàng)目的技術(shù)手段,它們支持軟件工程的各

個(gè)階段。

?軟件工程使用的軟件工具能夠自動或半自動地支持軟件的開發(fā)、管理和文檔的生

成。

?軟件工程中的過程貫穿于整個(gè)工程的各個(gè)環(huán)節(jié),在這一過程中,管理人員應(yīng)對軟

件開發(fā)的質(zhì)量、進(jìn)度、成本等進(jìn)行評估、管理和控制,包括計(jì)劃跟蹤與控制、成

本估算、人員的組織、質(zhì)量保證、配置管理等

1.2.2軟件工程的基本原理

?著名的軟件工程專家B.W.Boehm于1983年綜合了軟件工程專家學(xué)者們的意見并

總結(jié)了開發(fā)軟件的經(jīng)臉,提出了軟件工程的7條基本原理。這7條原理被認(rèn)為是確

保軟件產(chǎn)品質(zhì)量和開發(fā)效率的原理的最小集合,又是相互獨(dú)立、缺一不可、相當(dāng)

完備的最小集合。下面就簡單介紹軟件工程的這7條原理:

1.用分階段的生存周期計(jì)劃嚴(yán)格管理

2.堅(jiān)持進(jìn)行階段評審

3.實(shí)行嚴(yán)格的產(chǎn)品控制

4.采用現(xiàn)代程序設(shè)計(jì)技術(shù)

5.結(jié)果應(yīng)能清楚地審查

6.開發(fā)小組的人員應(yīng)少而精

7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性

1.2.3軟件工程的目標(biāo)

?軟件工程的目標(biāo)是在給定成本、進(jìn)度的前提下,開發(fā)出具有可修改性、有效性、

可靠性、可理解性、可維護(hù)性、可重用性、可適應(yīng)性、可移植性、可追蹤性和可

互操作性并滿足用戶需求的軟件產(chǎn)品。

名詞解釋

1)可修改性(modifiability),允許對軟件系統(tǒng)進(jìn)行修改而不增加其復(fù)雜性。它支

持軟件調(diào)試與維護(hù)。

2)有效性(efficiency),指軟件系統(tǒng)的時(shí)間和空間效率。這是一個(gè)應(yīng)當(dāng)努力追求的

重要目標(biāo)。

3)可靠性(reliability),是指在給定的時(shí)間間隔內(nèi),程序成功運(yùn)行的概率??煽啃?/p>

是衡量軟件質(zhì)量的一個(gè)重要目標(biāo)。

4)可理解性(understandability),指系統(tǒng)具有清晰的結(jié)構(gòu),能直接反映問題的需求。

可理解性有助于控制軟件系統(tǒng)的復(fù)雜性,并支持軟件的維護(hù)、移植和重用。

5)可維護(hù)性(maintainability),是指軟件產(chǎn)品交付使用后,在實(shí)現(xiàn)改正潛伏的錯(cuò)

誤、改進(jìn)性能等屬性、適應(yīng)環(huán)境變化等方面工作的難易程度。由于軟件的維護(hù)費(fèi)

用在整個(gè)軟件生存周期中占主要的比重,因此,可維護(hù)性是軟件工程中的一個(gè)十

分重要的目標(biāo)。軟件的可理解性和可修改性支持軟件的可維護(hù)性。

6)可重用性(reusability),是指軟部件可以在多種場合使用的程度。概念或功能

相對獨(dú)立的一個(gè)或一組相關(guān)模塊可構(gòu)成一個(gè)軟部件。軟部件應(yīng)具有清晰的結(jié)構(gòu)和

注釋、正確的編碼和較高的時(shí)空效率??蓪⒏鞣N軟部件按照某種規(guī)則放在軟部件

庫中供開發(fā)人員選用。廣義地講,可重用性還應(yīng)包括應(yīng)用項(xiàng)目、規(guī)格說明、設(shè)計(jì)、

概念和方法等等的重用。一般來說,重用的層次越高,帶來的效益越可重用性有

助于提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率、降低軟件開發(fā)和維護(hù)費(fèi)用。

7)可適應(yīng)性(adaptability),是指軟件在不同的系統(tǒng)約束條件下,使用戶需求得到

滿足的難易程度。

選擇廣為流行的軟硬件支持環(huán)境、采用廣為流行的程序設(shè)計(jì)語言編碼、采用標(biāo)

準(zhǔn)的術(shù)語和格式書寫文檔可增強(qiáng)軟件產(chǎn)品的可適應(yīng)性。

8)可移植性(portability),是指軟件從一個(gè)計(jì)算機(jī)系統(tǒng)或環(huán)境移植到另一個(gè)上去

的難易程度。采用通用的運(yùn)行支持環(huán)境和盡量通用的程序設(shè)計(jì)語言的標(biāo)準(zhǔn)部分可

提高可移植性。而應(yīng)將依賴于計(jì)算機(jī)系統(tǒng)的低級(物理)特征部分相對獨(dú)立、集

中起來??梢浦残灾С周浖目芍赜眯院涂蛇m應(yīng)性。

9)可追蹤性(traceability),是指根據(jù)軟件需求對軟件設(shè)計(jì)、程序進(jìn)行正向追蹤,

或根據(jù)程序、軟件設(shè)計(jì)對軟件需求進(jìn)行逆向追蹤的能力。軟件開發(fā)各階段的文檔

和程序的完整性、一致性、可理解性支持軟件的可追蹤性。

10)可互操作性(interoperability),是指多個(gè)軟件元素相互通信并協(xié)同完成任務(wù)的

能力。

1.2.4軟件工程的原則

1.抽象(abstraction),抽取各個(gè)事物中共同的最基本的特征和行為,暫時(shí)忽略它

們之間的差異。一般采用分層次抽象的方法來控制軟件開發(fā)過程的復(fù)雜性。抽象

使軟件的可理解性增強(qiáng)并有利于開發(fā)過程的管理。

2.信息隱藏(informationhiding),將模塊內(nèi)部的信息(數(shù)據(jù)和過程)封裝起來。

其他模塊只能通過簡單的模塊接口來調(diào)用該模塊,而不能直接訪問該模塊內(nèi)部的

數(shù)據(jù)或過程,即將模塊設(shè)計(jì)成“黑箱”。信息隱藏的原則可使開發(fā)人員把注意力集

中于更高層次的抽象上。

3.模塊化:

4.局部化(Mcalizalion),即在一個(gè)物理模塊內(nèi)集中邏輯上相互關(guān)聯(lián)的H笄資源。

局部化支持信息隱藏,從而保證模塊之間具有松散的耦合、模塊內(nèi)部有較強(qiáng)的內(nèi)

聚。這有助于控制每一個(gè)解的復(fù)雜性。

5.一致性(consistency),整個(gè)軟件系統(tǒng)(包括程序、數(shù)據(jù)和文檔)的各個(gè)模塊應(yīng)

使用一致的概念、符號和術(shù)語;程序內(nèi)部接口應(yīng)保持一致;軟件與環(huán)境的接口應(yīng)

保持一致;系統(tǒng)規(guī)格說明應(yīng)與系統(tǒng)行為保持一致;用于形式化規(guī)格說明的公理系

統(tǒng)應(yīng)保持一致。

6.完全性(completeness),軟件系統(tǒng)不丟失任何重要成分,完全實(shí)現(xiàn)所需的系統(tǒng)

功能的程度。為了保證系統(tǒng)的完全性,在軟件的開發(fā)和維護(hù)過程中需要嚴(yán)格的技

術(shù)評審。

7.可驗(yàn)證性(verifiability),開發(fā)大型軟件系統(tǒng)需要對系統(tǒng)逐層分解。系統(tǒng)分解應(yīng)

遵循易于檢查、測試、評審的原則,以使系統(tǒng)可驗(yàn)證。

?抽象、信息隱藏、模塊化和局部化的原則支持可理解性、可修改性、可靠性等目

標(biāo),并可提高軟件產(chǎn)品的質(zhì)量和開發(fā)效率;

?一致性、完全性和可驗(yàn)證性等原則可以幫助軟件開發(fā)人員去實(shí)現(xiàn)一個(gè)正確的系

統(tǒng)。

1.3軟件生存周期

?軟件從定義開始,經(jīng)過開發(fā)、使用和維護(hù),直到最終退役的全過程稱為軟件生存

周期。

?可將軟件生存周期劃分為3個(gè)過程共9個(gè)階段。

3個(gè)過程是:軟件定義過程、軟件開發(fā)過程、軟件使用與維護(hù)過程。

9個(gè)階段有:可行性研究、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)、組裝測試、驗(yàn)收

測試、使用與維護(hù)、退役。

它們之間的關(guān)系如圖1-3-1所示。

定工程口行性研究

概要設(shè)計(jì)__________

I詳細(xì)設(shè)計(jì)

開發(fā)過程\實(shí)現(xiàn)___________

「組裝測試_________

丁儉收測試__________

用與維護(hù)

-使用f與維護(hù)過程-------------、

_L___________________________________________________________1

退役

(31-3-1)

1.3.1軟件定義

?軟件定義的基本任務(wù)是確定軟件系統(tǒng)的工程需求,也就是要搞清“做什么”。

?軟件定義過程可通過軟件系統(tǒng)的可行性研究和需求分析兩個(gè)階段來完成。

1.可行性研究

?本階段的任務(wù)是根據(jù)用戶提出的工程項(xiàng)目的性質(zhì)、目標(biāo)和規(guī)模,進(jìn)一步了解用戶

的要求及現(xiàn)有的環(huán)境及條件,從技術(shù)、經(jīng)濟(jì)和社會等多方面研究并論證該項(xiàng)目的

可行性。即該項(xiàng)目是否值得去解決,是否存在可行的解決辦法。

?此時(shí),系統(tǒng)分析人員應(yīng)在用戶的配合下對用戶的要求和現(xiàn)有的環(huán)境進(jìn)行深入調(diào)查

并寫出調(diào)研報(bào)告。進(jìn)而進(jìn)行可行性論證??尚行哉撟C包括經(jīng)濟(jì)可行性、技術(shù)可行

性、操作可行性、法律可行性等。在此基礎(chǔ)上還要制定初步的項(xiàng)目計(jì)劃,包括需

要的軟硬件資源、定義任務(wù)、風(fēng)險(xiǎn)分析、成本/效益分析以及進(jìn)度安排等。

?可行性研究的結(jié)果將是使用部門負(fù)責(zé)人做出是否繼續(xù)進(jìn)行該項(xiàng)目決定的重要依

據(jù)。

2.需求分析

1)需求分析的任務(wù)

需求分析的任務(wù)是確定待開發(fā)的軟件系統(tǒng)“做什么”。

具體任務(wù)包括確定軟件系統(tǒng)的功能需求、性能需求和運(yùn)行環(huán)境約束,編制軟件需

求規(guī)格說明書、軟件系統(tǒng)的臉收測試準(zhǔn)則和初步的用戶手冊。

2)需求分析的實(shí)現(xiàn)途徑

軟件系統(tǒng)需求一般由用戶提出。系統(tǒng)分析員和開發(fā)人員在需求分析階段必

須與用戶反復(fù)討論、協(xié)商,充分交流信息,并用某種方法和工具構(gòu)建軟件系統(tǒng)的

邏輯模型。為了使開發(fā)方與用戶對待開發(fā)軟件系統(tǒng)達(dá)成一致的理解,必須建立相

應(yīng)的需求文檔。有時(shí)對大型、復(fù)雜的軟件系統(tǒng)的主要功能、接口、人機(jī)界面等還

要進(jìn)行模擬或建造原型,以便向用戶和開發(fā)方展示待開發(fā)軟件系統(tǒng)的主要特征。

確定軟件需求的過程有時(shí)需要反復(fù)多次,最終得到用戶和開發(fā)者的確認(rèn)。

3)需求分析的階段成果

需求分析階段的主要成果有軟件需求規(guī)格說明、軟件驗(yàn)收測試計(jì)劃和準(zhǔn)

則、初步的用戶手冊等。其中,軟件需求規(guī)格說明(SoftwareRequirements

Specification,即SRS),是一個(gè)關(guān)鍵性的文檔。

1.3.2軟件開發(fā)

?軟件開發(fā)過程由概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、實(shí)現(xiàn)(即編碼與單元測試)、組裝溯試、

險(xiǎn)收測試共5個(gè)階段組成。

?其中,概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)統(tǒng)稱為設(shè)計(jì);編碼即編程;單元測試、組裝測試和驗(yàn)

收測試統(tǒng)稱為測試。

?開發(fā)者通??商岢龆喾N設(shè)計(jì)方案,并對各種方案在功能、性能、成本、進(jìn)度等方

面進(jìn)行比較和折衷,從中選出一種“最佳方案”。

1.3.3軟件的使用與維護(hù)

I.軟件使用與維護(hù)階段

?任務(wù):通過各種維護(hù)活動使軟件系統(tǒng)持久地滿足用戶的需求。

?每項(xiàng)維護(hù)活動實(shí)質(zhì)上都是一次壓縮和簡化了的軟件定義和軟件開發(fā)過程。都要經(jīng)

歷提出維護(hù)要求、分析維護(hù)要求、提出維護(hù)方案、審批維護(hù)方案、確定維護(hù)計(jì)劃、

修改軟件設(shè)計(jì)、修改程序、測試程序、評審、驗(yàn)收等步躲。

1.軟件使用與維護(hù)階段

?應(yīng)當(dāng)指出,軟件在使用的過程中,應(yīng)及時(shí)收集被發(fā)現(xiàn)的軟件錯(cuò)誤,并定期撰寫“軟

件問題報(bào)告”;而每一項(xiàng)維護(hù)活動都應(yīng)該準(zhǔn)確地記錄下來,并作為正式的文檔資料

保存。

?據(jù)統(tǒng)計(jì),軟件維護(hù)人員為了分析和理解原軟件系統(tǒng)所花費(fèi)的工作量約占整個(gè)維護(hù)

工作量的60%以上。在軟件開發(fā)的過程中應(yīng)重視對軟件可維護(hù)性的支持。

2.退役

可行性研究--------------------------運(yùn)行與維護(hù)

/

需求分析

----------------驗(yàn)收測試

(驗(yàn)收測試計(jì)劃)

/

概要設(shè)計(jì)

---------組裝測試

(組裝測試計(jì)劃)

/

詳細(xì)設(shè)計(jì)

單元測試

(單元測試計(jì)劃)

/

編碼與調(diào)試

國132物網(wǎng)■與軟件IW曲四次對Jtt關(guān)系

1.4軟件開發(fā)模型

?軟件開發(fā)模型(又稱為軟件生存周期模型)

一軟件項(xiàng)目開發(fā)和維護(hù)的總體過程思路的框架。

?它指出了軟件開發(fā)過程各階段之間的關(guān)系和順序,是軟件開發(fā)過程的概括。它為

軟件開發(fā)過程提供原則和方法,并為軟件工程管理提供里程碑和進(jìn)度表。因此,

軟件開發(fā)模型也是軟件工程的重要內(nèi)容。

?軟件開發(fā)模型的幾種類型:

?以軟件需求完全確定為基礎(chǔ)的瀑布模型;

?在開發(fā)初期僅給出基本需求的漸進(jìn)式模型,如原型模型、螺旋模型、噴泉模型等;

?以形式化開發(fā)方法為基礎(chǔ)的變換模型、基于四代技術(shù)的模型;

?基于知識的智能模型等等。

在實(shí)際開發(fā)時(shí),應(yīng)根據(jù)項(xiàng)目的特點(diǎn)和現(xiàn)有的條件選取合適的模型,也可以把幾

種模型組合起來使用以便充分利用各模型的優(yōu)點(diǎn)。

1.4.1瀑布模型

瀑布模型(walerfallmodel)是由W.Royce于1970年提出來的。又稱為軟件生

存周期模型。

?瀑布模型嚴(yán)格按照軟件生存周期各個(gè)階段來進(jìn)行開發(fā),上一階段的輸出即是下一

階段的輸入,并強(qiáng)調(diào)每一階段的嚴(yán)格性。它規(guī)定了各階段的任務(wù)和應(yīng)提交的成果

及文檔,每一階段的任務(wù)完成后,都必須對其階段性產(chǎn)品(主要是文檔)進(jìn)行評

審,通過后才能開始下一階段的工作。因此,它是一種以文檔作為驅(qū)動的模型。

■1-4.1帶反債的wa*?

瀑布模型優(yōu)點(diǎn):

提供了軟件開發(fā)的基本框架,有利于大型軟件開發(fā)過程中人員的組織、管理,有利

于軟件開發(fā)方法和工具的研究與使用,因此,在軟件工程中占有重要的地位。

瀑布模型缺點(diǎn)

1)在軟件開發(fā)的初期階段就要求做出正確、全面、完整的需求分析對許多應(yīng)用軟件

來說是極其困難的。

2)在需求分析階段,當(dāng)需求確定后,無法及時(shí)臉證需求是否正確、完整。

3)作為整體開發(fā)的瀑布模型,由于不支持產(chǎn)品的演化,缺乏靈活性,對開發(fā)過程中

很難發(fā)現(xiàn)的錯(cuò)誤,只有在最終產(chǎn)品運(yùn)行時(shí)才能暴露出來,從而使軟件產(chǎn)品難以維

護(hù)。

瀑布模型適應(yīng)場合

瀑布模型一般適用于功能、性能明確、完整、無重大變化的軟件系統(tǒng)的開發(fā)。

例如操作系統(tǒng)、編譯系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)等系統(tǒng)軟件的開發(fā)。應(yīng)用有一定的局

限性。

1.4.2原型模型

?原型模型(prototypingmodel)的基本框架是軟件開發(fā)人員根據(jù)用戶提出的軟件

基本需求快速開發(fā)一個(gè)原型,以便向用戶展示軟件系統(tǒng)應(yīng)有的部分或全部功能和

性能,在征求用戶對原型的評價(jià)意見后,進(jìn)一步使需求精確化、完全化,并據(jù)此

改進(jìn)、完善原型,如此迭代,直到軟件開發(fā)人員和用戶都確認(rèn)軟件系統(tǒng)的需求并

達(dá)成一致的理解為止。軟件需求確定后,便可進(jìn)行設(shè)計(jì),編碼、測試等以后的各

個(gè)開發(fā)步驟。

快速原型的開發(fā)途徑有三種:

1)僅模擬軟件系統(tǒng)的人機(jī)界面和人機(jī)交互方式。

2)開發(fā)一個(gè)工作模型,實(shí)現(xiàn)軟件系統(tǒng)中重要的或容易產(chǎn)生誤解的功能。

3)利用一個(gè)或幾個(gè)類似的正在運(yùn)行的軟件向用戶展示軟件需求中的部分或全部功

能??傊?,建造原型應(yīng)盡量采用相應(yīng)的軟件工具和環(huán)境,并盡量采用軟件重用技

術(shù),在運(yùn)行效率方面可做出讓步,以便盡快提供。同時(shí),原型應(yīng)充分展示軟件系

統(tǒng)的可見部分,如人機(jī)界面、數(shù)據(jù)的輸入方式和輸出格式等。

原型模型的適應(yīng)場合

?原型模型比瀑布模型更符合人們認(rèn)識事物的過程和規(guī)律,是一種較實(shí)用的開發(fā)框

架。它適合于那些不能預(yù)先確切定義需求的軟件系統(tǒng)的開發(fā),更適合于那些項(xiàng)目

組成員(包括分析員、設(shè)計(jì)員、程序員和用戶)不能很好交流或通信有困難的情

況。

1.4.3螺旋模型

螺旋模型(spiralmodel)是B.Boehm于1988年提出的。它綜合了瀑布模型和原型模

型的優(yōu)點(diǎn),即將兩者結(jié)合,并加入了風(fēng)險(xiǎn)分析機(jī)制。螺旋模型的基本框架如圖

?螺旋模型的每一個(gè)周期都包括計(jì)劃(需求定義)、風(fēng)險(xiǎn)分析、工程實(shí)現(xiàn)和評審4

個(gè)階段。

1.計(jì)劃(需求定義)

第一周期開始利用需求分析技術(shù)理解應(yīng)用領(lǐng)域,獲取初步用戶需求,制定項(xiàng)目

開發(fā)計(jì)劃(即整個(gè)軟件生命周期計(jì)劃)和需求分析計(jì)劃。經(jīng)過一個(gè)周期后,根據(jù)

用戶和開發(fā)人員對上一周期工作成果評價(jià)和評審,修改、完善需求,明確下一周

期軟件開發(fā)的目標(biāo)、約束條件,并據(jù)此制定新一輪的軟件開發(fā)計(jì)劃。

2.風(fēng)險(xiǎn)分析

根據(jù)本輪制定的開發(fā)計(jì)劃,進(jìn)行風(fēng)險(xiǎn)分析,評估可選方案,并構(gòu)造原型進(jìn)一步

分析風(fēng)險(xiǎn),給出消除或減少風(fēng)險(xiǎn)的途徑。此時(shí)根據(jù)風(fēng)險(xiǎn)分析的結(jié)果決策項(xiàng)目是否

繼續(xù)。所以,螺旋模型是一個(gè)風(fēng)險(xiǎn)驅(qū)動的模型。

3.工程實(shí)現(xiàn)

利用構(gòu)造的原型進(jìn)行需求建?;蜻M(jìn)行系統(tǒng)模擬,直至實(shí)現(xiàn)軟件系統(tǒng)。

4.用戶評價(jià)與階段評審

將原型提交用戶使用并征求改進(jìn)意見。開發(fā)人員應(yīng)在用戶的密切配合下進(jìn)一步

完善用戶需求,直到用戶認(rèn)為原型可滿足需求,或?qū)浖a(chǎn)品設(shè)計(jì)進(jìn)行評價(jià)或確

認(rèn)等。

螺旋模型從第一個(gè)周期的計(jì)劃開始,一個(gè)周期、一個(gè)周期地不斷迭代,直到整

個(gè)軟件系統(tǒng)開發(fā)完成。

螺旋模型的缺點(diǎn)和適應(yīng)場合

?缺點(diǎn):

①如果每次迭代的效率不高,致使迭代次數(shù)過多,將會增加成本并推遲提交時(shí)間;

②使用該模型需要有相當(dāng)豐富的風(fēng)險(xiǎn)評估經(jīng)驗(yàn)和節(jié)門知識,要求開發(fā)隊(duì)伍水平較高。

?適應(yīng)場合:支持需求不明確、特別是大型軟件系統(tǒng)的開發(fā),并支持面向規(guī)格說明、

面向過程、面向?qū)ο蟮榷喾N軟件開發(fā)方法,是一種具有廣闊前景的模型。

習(xí)題思考題

1.3什么是軟件工程?構(gòu)成軟件工程的要素是什么?

1.4軟件工程的7條原理都是什么?

1.5軟件工程的目標(biāo)是什么?

1.7軟件工程的7條原則是什么?說明這些原則的作

用。

1.8軟件生存周期由哪幾個(gè)過程組成?每個(gè)過程分別

包括哪幾個(gè)階段?

1.13軟件開發(fā)模型、軟件開發(fā)方法、集成的CASE工

具與環(huán)境在軟件工程中各有什么作用?

第2章軟件項(xiàng)目管理

?軟件項(xiàng)目管理必須從項(xiàng)目的開頭介入,并貫穿于整個(gè)軟件生存周期的全過程。

?軟件項(xiàng)目管理的范圍主要集中于3個(gè)P上,即:People(人員)、Problem(問題)

和Process(過程)。

?軟件項(xiàng)目管理的主要任務(wù)是:

根據(jù)選定的軟件開發(fā)過程框架(即軟件開發(fā)模型)和對其估算的結(jié)果制定軟

件項(xiàng)目實(shí)施計(jì)劃;再根據(jù)計(jì)劃對人員進(jìn)行組織、分工;按照計(jì)劃的進(jìn)度,以及成

本管理、風(fēng)險(xiǎn)管理、質(zhì)量管理的要求,控制并管理軟件開發(fā)和維護(hù)的活動,最終

以最小的代價(jià)完成軟件項(xiàng)目規(guī)定的全部任務(wù)。

?軟件項(xiàng)目的成本管理、軟件質(zhì)量管理和軟件配置管理有一定的特殊性和獨(dú)立性,

可單獨(dú)立項(xiàng)。其任務(wù)分別是:

?成本管理——估算軟件項(xiàng)目的成本,作為立項(xiàng)和簽合同的依據(jù)之一,并在軟件開

發(fā)過程中按計(jì)劃管理經(jīng)費(fèi)的使用;

?質(zhì)量管理——制定軟件質(zhì)量保證計(jì)劃,按照質(zhì)量評價(jià)體系控制軟件質(zhì)量要素,對

階段性的軟件產(chǎn)品進(jìn)行評審,對最終軟件產(chǎn)品進(jìn)行確認(rèn),確保軟件質(zhì)量;

?配置管理——制定配置管理計(jì)劃,對程序、數(shù)據(jù)、文檔的各種版本進(jìn)行管理,確

保軟件的完整性和一致性O(shè)

?在制定有效的項(xiàng)目實(shí)施計(jì)劃的過程中,首先要對項(xiàng)目的工作量、完成期限等等參

考量進(jìn)行估算。估算的結(jié)果將成為項(xiàng)目計(jì)劃其他活動的基礎(chǔ),同時(shí),為了對軟件

項(xiàng)目進(jìn)行科學(xué)、有效妁管理,就必須對軟件開發(fā)過程的有關(guān)特征進(jìn)行度量,度量

的結(jié)果用于軟件開發(fā)過程的管理與監(jiān)控。

?本章主要介紹軟件度量的概念,軟件的規(guī)模度量,軟件項(xiàng)目的估算,軟件的質(zhì)量

度量、復(fù)雜性度量、可靠性度量、風(fēng)險(xiǎn)的分析與度量以及軟件項(xiàng)目管理過程與步

驟等等。

2.1軟件度量

?對軟件工程項(xiàng)目的規(guī)模、成本、產(chǎn)品質(zhì)量等屬性進(jìn)行定量的描述,可以幫助項(xiàng)目

管理人員和開發(fā)者制定有效的項(xiàng)目計(jì)劃,監(jiān)控項(xiàng)目的風(fēng)險(xiǎn)、進(jìn)度和階段產(chǎn)品的質(zhì)

量,并為調(diào)整過程中舌動和做出重要決策提供可靠的依據(jù)。下面介紹軟件度量的

基本概念,并介紹軟件的規(guī)模度量和功能度量。

2.1.1軟件度量的基本耽念

1.測量、度量、估算和指標(biāo)

軟件工程項(xiàng)目的定量描述涉及測量、度量、估算和指標(biāo)等一些基本概念。

1)測量(measure):對產(chǎn)品或過程的某個(gè)屬性的范圍、數(shù)量、維度、容量或大小

提供一個(gè)定量的指示。

2)度量(metric):對系統(tǒng)、部件或過程的某一特性所具有的程度進(jìn)行的量化測量。

如軟件質(zhì)量度量等。

3)估算(estimation):對軟件產(chǎn)品、過程、資源等使用歷史資料或經(jīng)驗(yàn)公式等進(jìn)

行預(yù)測。如工作量、成本、完成期限等。估算一般用于立項(xiàng)、簽訂合同、制定工

作計(jì)劃等。

4)指標(biāo)(guideline)

指標(biāo)——是一個(gè)度量或度量的組合,它可對軟件產(chǎn)品、過程或資源提供更深入的理

解。

如有4個(gè)小組共同完成一個(gè)軟件項(xiàng)目,每一個(gè)小組都必須采用自行選擇的評

審類型進(jìn)行技術(shù)評審。管理者檢查“每小時(shí)每人所發(fā)現(xiàn)的錯(cuò)誤數(shù)”這一度量結(jié)果時(shí)

發(fā)現(xiàn):采用正式技術(shù)評審方法的兩個(gè)小組的該度量值要比另外兩個(gè)小組高出40%。

假設(shè)4個(gè)小組的其他參數(shù)都相同,這就給管理者提供了一個(gè)指標(biāo):正式技術(shù)評審

方法比其他技術(shù)評審方法更有效率。于是,管理者可決定建議所有小組都采用更

加正式的技術(shù)評審方法。

2.軟件項(xiàng)目管理的對象及其屬性

?軟件項(xiàng)目管理的對象主要包括產(chǎn)品、過程和資源等。

?產(chǎn)品(product)是指軟件開發(fā)過程得到的文檔和程序,如:需求規(guī)格說明、設(shè)計(jì)

規(guī)格說明、源代碼、測試報(bào)告等;

?過程(process)是指與軟件項(xiàng)目有關(guān)的活動,如軟件項(xiàng)目計(jì)劃、開發(fā)活動、維護(hù)

活動、管理活動等;

?資源(resource)是指進(jìn)行軟件項(xiàng)目所需要的各種支持,如人力、經(jīng)費(fèi)、方法、

工具、軟硬件環(huán)境等。

要對軟件項(xiàng)目管理的對象進(jìn)行有效的管理與控制,就必須對這些對象的屬性

進(jìn)行測量、度量與估算。一般來說,產(chǎn)品、過程、資源等對象都具有內(nèi)部屬性和

外部屬性。

對象的屬性

?內(nèi)部屬性是指對象本身的屬性,如軟件產(chǎn)品的代碼長度、模塊化的程度、復(fù)雜性

等。

?對象的外部屬性體現(xiàn)了對象與環(huán)境的關(guān)系,如軟件的可靠性、可維護(hù)性、可移植

性、成本、人員的生產(chǎn)率等。對象的部分屬性如表2?1所示。

對象的屬性

?項(xiàng)目管理員和用戶都十分關(guān)心產(chǎn)品、過程、資源的外部屬性,于是可將外部屬性

看成是面向管理員和用戶的屬性。但在軟件開發(fā)的過程中,軟件的外部屬性一般

是很難度量和控制的。這些外部屬性是由軟件的內(nèi)部屬性所決定的,因此,可以

通過研究內(nèi)部屬性與外部屬性之間的關(guān)系來解決外部屬性的度量問題,進(jìn)而逐步

建立起了軟件工程度量系統(tǒng)。

3.軟件度量的分類

可分為直接度量和間接度量兩類:

1)直接度量。印對不依賴于其他屬性的簡單屬性的測量。如軟件的模塊數(shù)、

程序的代碼行數(shù)、操作符的個(gè)數(shù),工作量、成本等。

2)間接度量。即對涉及若干個(gè)其他屬性的軟件要素、準(zhǔn)則或?qū)傩缘亩攘俊?/p>

因?yàn)樗鼈儽仨毻ㄟ^建立一定的度量方法或模型才能間接推斷而獲得。如軟件的功

能性、復(fù)雜性、可靠性、可維護(hù)性等等。

軟件度量系統(tǒng)還可進(jìn)一步劃分為兩個(gè)側(cè)面。它們之間的關(guān)系如圖2-1-1所

7Po

2.1.2面向規(guī)模的度量

?面向規(guī)模的度量是以軟件的代碼行(LOC,LineofCode)數(shù)為基礎(chǔ)的直接度量。

一般的軟件開發(fā)組織對開發(fā)過的每個(gè)軟件項(xiàng)目都有如代碼行、工作量、成本、錯(cuò)

誤、人數(shù)、文檔頁數(shù)等的統(tǒng)計(jì)記錄。利用代碼行數(shù)可以度量軟件規(guī)模、生產(chǎn)率、

平均成本、出錯(cuò)率、文檔率等參考量。

?設(shè):L表示軟件的代瑪行數(shù),單位為KL0C(千行代碼)或LOC;E表示開發(fā)軟件所

需工作量,單位為人月(PM)或人年(PY);S表示軟件成本,單位為美元或元;

N表示錯(cuò)誤個(gè)數(shù);Pd表示軟件文檔頁數(shù);M表示開發(fā)所用的人數(shù)。則有:

1.軟件開發(fā)的生產(chǎn)率P(即平均每人月開發(fā)的代碼行數(shù),以LOC/PM為單位)為:

P=L/E

2.開發(fā)每行代碼的平均成本C(以美元/LOC或元/LOC為單位)為:

C=S/L

3.代碼出錯(cuò)率EQR(即每千行代碼的平均錯(cuò)誤數(shù),以個(gè)/KLOC為單位)為:

EQR=N/L

4.軟件的文檔率D(即平均每千行代碼的文檔頁數(shù),以頁/KL0C為單位)為:

D=Pd/L

【例2.1】已知有一個(gè)國外典型的軟件項(xiàng)目的記錄,開發(fā)人員M=6人,其代碼行數(shù)

=20.2KLOC,工作量E=43PM,成本S=314000美元,錯(cuò)誤數(shù)N=64,文檔頁數(shù)Pd=1050

頁。試計(jì)算開發(fā)該軟件項(xiàng)目的生產(chǎn)率P、平均成本C、代碼出錯(cuò)率EQR和文檔率D。

解:根據(jù)給出的已知數(shù)據(jù),可得:

P=L/E=20.2KLOC/43PM=0.47KLOC/PM

=470LOC/PM

C=S/L=314000美元/20.2KLOC

=15.54美元;LOC

EQR二N/L=64個(gè)/20.2KLOC=3.17個(gè)/KLOC

D=Pd/L=1050頁/20.2KLOC=51.98頁/KLOC

基于代碼行面向規(guī)模的度量方法的

優(yōu)缺點(diǎn)、適用場合

?優(yōu)點(diǎn):簡單、直接。

缺點(diǎn):如它依賴于程序設(shè)計(jì)語言的功能和表達(dá)等特征、在開發(fā)初期很難準(zhǔn)確估算出

代碼行數(shù)、對設(shè)計(jì)水平高的軟件項(xiàng)目產(chǎn)生不利影響。

適用場合:適合于過程式程序設(shè)計(jì)語言和事后度量。

2.2軟件項(xiàng)目估算

2.2.1軟件項(xiàng)目的估算方法

常用的軟件項(xiàng)目的估算方法主要有以下4種:

1.自頂向下的估算方法

?基本思想:首先根據(jù)已完成項(xiàng)目的總成本或總工作量來推算待開發(fā)軟件的總成本

或總工作量,然后再按比例將其分配到各開發(fā)任務(wù)中去。即從整體到局部。

?優(yōu)點(diǎn):估算工作量小、速度快。

?缺點(diǎn):對項(xiàng)目中的特殊困難估計(jì)不足,有可能產(chǎn)生遺漏,估算出的值盲目性較大。

2.自底向上的估算方法

?基本思想是:把待開發(fā)軟件細(xì)分,直到每一個(gè)子任務(wù)或階段都已經(jīng)明確所需要的

開發(fā)工作量或成本,然后再把它們累加起來,得到待開發(fā)軟件的總工作量或總成

本。

需要指出,在對軟件進(jìn)行細(xì)分時(shí),一種是按照功能將大的軟件項(xiàng)目劃分為若干

個(gè)子項(xiàng)目;另一種是按照軟件生命周期分解為各個(gè)階段。當(dāng)然,也可以兩者同時(shí)

進(jìn)行。

?優(yōu)點(diǎn):計(jì)笄各個(gè)部分的準(zhǔn)確性較高。

?缺點(diǎn):缺少各個(gè)子任務(wù)之間相互聯(lián)系的工作量和系統(tǒng)工作量(如項(xiàng)目管理、配置

管理、質(zhì)量管理),估算值往往偏低,必須用其他方法進(jìn)行校正。

3.差別估算法

?基本思想:把待開發(fā)妁軟件項(xiàng)目與過去完成的軟件項(xiàng)目進(jìn)行比較,從各子任務(wù)中

區(qū)分出類似的和不同的部分。類似的部分按已知的實(shí)際量計(jì)算,不同的部分則采

用某種方法進(jìn)行估算。差別估算法綜合了以上兩種方法的優(yōu)點(diǎn)。

?優(yōu)點(diǎn):估算的準(zhǔn)確程度高。

?鐵點(diǎn):不容易劃分相似的界限。

4.根據(jù)經(jīng)驗(yàn)估算公式

?通過眾多實(shí)際軟件項(xiàng)目的經(jīng)驗(yàn),總結(jié)出一些有價(jià)值的軟件成本和工作量估算的經(jīng)

驗(yàn)?zāi)P?。這些模型對于軟件項(xiàng)目管理具有一定的指導(dǎo)意義和驗(yàn)證效果。

?沒有一種估算模型能夠適合于所有類型的軟件項(xiàng)目。因此,對估算的結(jié)果應(yīng)當(dāng)慎

重使用。

?在實(shí)際估算時(shí),幾種估算方法可單獨(dú)、同時(shí)或組合使用,以便提高估算的準(zhǔn)確程

度。

2.2.2代碼行和功能點(diǎn)的估算

?采用2.2.1中介紹的估算方法可以估算出代碼行或功能點(diǎn)的樂觀值a、一般值m和悲

觀值b,并用如下的加權(quán)平均公式計(jì)算LOC或FP的期望值(expectation):

X=(a+4m+b)/6(2-10)

軟件的LOC或FP的期望值估算出來后,就可以根據(jù)已有的標(biāo)準(zhǔn)生產(chǎn)率對成

本和工作量等進(jìn)行估算了。

2.3軟件質(zhì)量度量

?軟件質(zhì)量是軟件的生命。它作為軟件工程的一部分,貫穿于整個(gè)軟件生存周期之

中。生產(chǎn)高質(zhì)量的軟件產(chǎn)品是軟件工程的首要目標(biāo)。

?由于軟件是邏輯產(chǎn)品,軟件質(zhì)量很難直接度量。因此,應(yīng)當(dāng)給出軟件質(zhì)量的科學(xué)

的、實(shí)用的定義,并通過一定的度量模型進(jìn)行度量,以便在整個(gè)軟件生存周期中

對其進(jìn)行評價(jià)和控制。

2.3.1軟件質(zhì)量的定義

?1983年,ANSI/IEEEsld729標(biāo)準(zhǔn)給出了軟件質(zhì)量的定義如下:

軟件質(zhì)量是軟件產(chǎn)品滿足規(guī)定的和隱含的與需求能力有關(guān)的全部特征和特性,

包括:

I.軟件產(chǎn)品滿足用戶要求的程度;

2.軟件擁有所期望的各種屬性的組合程度;

3.用戶對軟件產(chǎn)品的綜合反映程度;

4.軟件在使用過程中滿足用戶需求的程度。

2.3.2軟件質(zhì)量的度量埃型

?軟件質(zhì)量與軟件的內(nèi)部特性及其組合有關(guān)。要度量軟件質(zhì)量,就應(yīng)根據(jù)這些內(nèi)部

特性(即軟件屬性)建立起軟件度量模型,進(jìn)而構(gòu)建軟件質(zhì)量度量體系。

?1976年,Boehm提出了定量度量軟件質(zhì)量的概念,他給出了軟件質(zhì)量的層次模型,

并給出了60個(gè)軟件質(zhì)量度量公式;

?1978年,Wallers和McCall提出了三層次軟件質(zhì)量度量模型;

?1985年,ISO提出了SQM(SoftwareQualityMetric,軟件質(zhì)量度量)工作報(bào)告等

等。

1.McCall等人的軟件質(zhì)量度量模型

?McCall等人提出了由軟件質(zhì)量要素、評價(jià)準(zhǔn)則、定量度量三個(gè)層次組成的三層次

度量模型。其中:

?第一層是將對軟件質(zhì)量的度量歸結(jié)為對直接影響軟件質(zhì)量的若干個(gè)軟件質(zhì)量要

素的度量:

?第二層是用若干個(gè)可度量的評價(jià)準(zhǔn)則來間接度量軟件質(zhì)量要素;

?第三層是對相應(yīng)評價(jià)準(zhǔn)則的直接度量。

2.軟件質(zhì)量要素

?軟件質(zhì)量要素(factor)是指直接影響軟件質(zhì)量的軟件質(zhì)量特性。

?隨著對軟件質(zhì)量的認(rèn)識的逐步提高,軟件質(zhì)量要素也可能有所變化。

?當(dāng)時(shí)McCall等人認(rèn)為,軟件質(zhì)量由II個(gè)軟件質(zhì)量要素來衡量。這II個(gè)質(zhì)量要素可

劃分為三類:

?面向運(yùn)行特征的軟件質(zhì)量要素有正確性、可靠性、有效性、完整性和可用性;

?面向軟件承受修改的質(zhì)量要素有可維護(hù)性、靈活性、可測試性;

?面向轉(zhuǎn)移的軟件質(zhì)量要素有可移植性、可重用性、可互操作性。這三類要素構(gòu)成

了軟件質(zhì)量的三個(gè)側(cè)面,如圖2-3-2所示。

質(zhì)量要素新概念

1)正確性(correctness):

指程序滿足需求規(guī)格說明及用戶目標(biāo)的程度;

2)完整性(integrity):

指對未授權(quán)人員訪問程序或數(shù)據(jù)加以控制的程度;

3)可用性(usability):

指學(xué)習(xí)使用軟件(即操作軟件、準(zhǔn)備輸入數(shù)據(jù)、解釋輸出結(jié)果等)的難易程

度;

4)靈活性(flexibility):

指改變一個(gè)操作的順序所需工作量的多少;

5)可測試性(testability):

指測試軟件以便使其具有預(yù)定功能所需工作量的多少;

6)可互操作性(interoperability):

指程序與其他系統(tǒng)相互交換并使用信息的能力。

2.軟件質(zhì)量要素

?軟件質(zhì)量要素不是獨(dú)立的,一個(gè)要素可能與其他幾個(gè)要素有關(guān)系,如表2/2所示,

其中:

正相關(guān)以表示,

負(fù)相關(guān)以“X”表示。

?對于具有負(fù)相關(guān)的質(zhì)量要素,在開發(fā)時(shí)應(yīng)根據(jù)具體情況加以取舍或進(jìn)行折衷。

例如,對于實(shí)時(shí)控制系統(tǒng),必須確保系統(tǒng)的可靠性和有效性,而軟件的可重用

性、可移植性等質(zhì)量要素就可以放寬要求。

2.4軟件復(fù)雜性度量

?通過軟件的復(fù)雜性度量值可以估算出軟件中故障的數(shù)量;也能估算出軟件開發(fā)所

需的工作量;定量度量的結(jié)果還可以用于比較不同設(shè)計(jì)方案的優(yōu)劣。同時(shí),軟件

的復(fù)雜性也能從某些方面影響軟件的可維護(hù)性、可靠性等軟件質(zhì)量要素。區(qū)此,

軟件及雜性度量是軟件度量的一個(gè)重要組成部分。

2.4.1軟件復(fù)雜性的概念及度量原則

1.軟件復(fù)雜性的概念

?K.Magcl從6個(gè)方面來描述軟件笈雜性:

1)理解程序的難度;

2)維護(hù)程序的難度;

3)向其他人解釋程序的難度;

4)按指定方法修改程序的難度;

5)根據(jù)設(shè)計(jì)文件編寫程序的工作量;

6)執(zhí)行程序時(shí)需要資源的多少。

?軟件復(fù)雜性反映了軟件的可理解性、模塊化、簡單性等屬性。

2.軟件復(fù)雜性度量的原則

?軟件及雜性的度量,的一些基本原則:

1)軟件的復(fù)雜性與其規(guī)模的關(guān)系不是線性的;

2)數(shù)據(jù)結(jié)構(gòu)復(fù)雜的程序較復(fù)雜;

3)控制結(jié)構(gòu)復(fù)雜的程序較復(fù)雜;

4)轉(zhuǎn)向語句使用不當(dāng)?shù)某绦蜉^復(fù)雜;

5)循環(huán)結(jié)構(gòu)比選擇結(jié)構(gòu)復(fù)雜、選擇結(jié)構(gòu)比順產(chǎn)結(jié)構(gòu)復(fù)雜;

6)語句、數(shù)據(jù)、子程序模塊等出現(xiàn)的順序?qū)?fù)雜性有影響;

7)非局部變量較多的程序較復(fù)雜;

8)參數(shù)按地址調(diào)用(Callbyreference)比按值調(diào)用(Callbyvalue)復(fù)雜;

9)函數(shù)副作用比顯式參數(shù)傳遞難理解;

10)作用不同的變量同名時(shí)較難理解;

11)模塊、過程間聯(lián)系密切的程序較復(fù)雜;

12)程序嵌套層數(shù)越多越復(fù)雜。

以上這些基本原則是指導(dǎo)我們進(jìn)一步研究定量度

量軟件復(fù)雜性的基礎(chǔ)。

(a)J0UMM

R1

oov(G)=E-N+2=1-2+2=1

(b)MMW

V(G)=E—N+2=4—4+2=2

(c)whileMUl

V(G)=E-N+2=3-3+2=2

Cd)untilMM

</^\生?oV(G)=E-N+2=3-3+2=2

2.4.2McCabe度量模型

?1976年,McCabe提出了基于程序拓?fù)浣Y(jié)構(gòu)的軟件復(fù)雜性度量模型。該方法是把

程序流程圖轉(zhuǎn)化為程序圖:即把程序看成是有一個(gè)入口結(jié)點(diǎn)和一個(gè)出口結(jié)點(diǎn)的有

向圖,圖中每個(gè)結(jié)點(diǎn)對應(yīng)一個(gè)語句、一個(gè)簡單判斷或一個(gè)順序流程的代碼塊,原

來程序流程圖中的箭頭變成連接各結(jié)點(diǎn)的有向弧(或稱為邊)。一般地,可以假

設(shè)從程序圖中的開始結(jié)點(diǎn)可以到達(dá)圖中的任一結(jié)點(diǎn),而從圖中的任一結(jié)點(diǎn)都可以

到達(dá)出口結(jié)點(diǎn)。程序圖又稱為程序控制結(jié)構(gòu)圖或程序流圖。

2.4.2McCube度量模型

?McCabe給出了程序控制結(jié)構(gòu)圖G的巡回秩數(shù)V(G)作為程序控制結(jié)構(gòu)復(fù)雜性的

度量,其度量模型為:

V(G)=E-N+2(2-22)

其中:E——程序圖G中邊的總數(shù);N程序引中結(jié)點(diǎn)的總數(shù)。V(G)又稱為

圖G的環(huán)形復(fù)雜度。

?可以證明,V(G)的值等于結(jié)構(gòu)圖中有界和無界的封閉區(qū)域的個(gè)數(shù)。

2.4.2McCabe度量模型

?程序結(jié)構(gòu)的復(fù)雜性度量值V(G)取決于程序控制流的發(fā)雜程度。當(dāng)程序內(nèi)的分

支數(shù)和循環(huán)數(shù)增加時(shí),v(G)值將隨之增加,即程序的復(fù)雜性增大。

?McCabe研究大量程序后指出,V(G)可作為程序規(guī)模的定量指標(biāo),V(G)值越

高的程序往往是越復(fù)雜、越容易出問題的程序。

?McCabe建議模塊規(guī)模應(yīng)滿足:V(G)W10

【例2.5】程序流程圖如圖2-4-2所示,

試求出其巡回秩數(shù)V(G)

(2)由程序圖(或流圖)可得:

V(G)=E-N+2=11-9+2=4

(3)由程序圖可以看出,其有界

區(qū)域有RI、R2、R3共3個(gè),

還有1個(gè)無界區(qū)域R4,共4個(gè)

封閉區(qū)域,所以:

V(G)=4

2.4.3Halstead度量模型

?20世紀(jì)70年代初,Halstead給出了稱為文本復(fù)雜性度量的模型。它是根據(jù)統(tǒng)計(jì)程

序中的操作符和操作數(shù)的個(gè)數(shù)來度量程序的復(fù)雜程度。程序可以看成是由操作符

和操作數(shù)組成的符號序列。操作符是指程序中出現(xiàn)的語法符號,如+、-、

if-then-else.while等,操作數(shù)是操作對象,如程序中定義或使用的變量、常量、

數(shù)組、指針等。

2.6軟件開發(fā)過程的管理

?在前幾節(jié)中介紹了軟件度量和估算,這些即是評價(jià)軟件的重要依據(jù),也是軟件開

發(fā)過程管理的組成部分和基礎(chǔ)。在本節(jié)中將介紹軟件項(xiàng)目管理的過程、風(fēng)險(xiǎn)分析,

軟件開發(fā)計(jì)劃的進(jìn)度安排,軟件開發(fā)人員的組織與分工等等。

2.6.1軟件開發(fā)項(xiàng)目管理過程

?為達(dá)到軟件工程的目標(biāo),必須對軟件開發(fā)項(xiàng)目的工作范圍、所需的工作量和成本、

必需的人力和軟硬件資源、可能遇到風(fēng)險(xiǎn)、進(jìn)度的安排、待實(shí)現(xiàn)的任務(wù)、經(jīng)歷的

里程碑等進(jìn)行管理。軟件開發(fā)過程的管理應(yīng)在所有技術(shù)工作開始之前啟動,直至

軟件工程過程的結(jié)束。

軟件開發(fā)項(xiàng)目管理過程主要包括以下幾個(gè)方面:

1.啟動一個(gè)軟件項(xiàng)目

一般情況,軟件人員與客戶是在可行性研究階段確定軟件工程項(xiàng)目的范圍

和目標(biāo)的。其中,目標(biāo)指明了軟件開發(fā)項(xiàng)目的目的,范圍標(biāo)明了軟件要實(shí)現(xiàn)的基

本功能,并尋求解決方案。

2.成本估算

在軟件項(xiàng)目管理過程中的一個(gè)關(guān)鍵活動是制定項(xiàng)目計(jì)劃。在制定計(jì)劃時(shí),

必須對項(xiàng)目的規(guī)模、所需的人力等資源、項(xiàng)目的持續(xù)時(shí)間、工作量和成本進(jìn)行估

算。

軟件開發(fā)項(xiàng)目管理過程主要包括以下幾個(gè)方面

3.風(fēng)險(xiǎn)分析

開發(fā)一個(gè)軟件項(xiàng)目總存在某些不確定性,即存在風(fēng)險(xiǎn)。有些風(fēng)險(xiǎn)如果控制

得不好,可能導(dǎo)致災(zāi)難性的后果。風(fēng)險(xiǎn)分析實(shí)際上就是貫穿于軟件工程過程中的

一系列風(fēng)險(xiǎn)管理步驟,包括風(fēng)險(xiǎn)標(biāo)識、風(fēng)險(xiǎn)估算、風(fēng)險(xiǎn)評價(jià)、風(fēng)險(xiǎn)駕馭和監(jiān)控。

4.進(jìn)度安排

首先識別一組項(xiàng)目任務(wù),再確定各任務(wù)之間的相互關(guān)聯(lián),然后估算各個(gè)任務(wù)的

工作量,制定進(jìn)度時(shí)序,建立分隔任務(wù)的里程碑,確定關(guān)鍵路徑,分配人力和其

他資源。

軟件開發(fā)項(xiàng)目管理過程主要包括以下幾個(gè)方面

5.追蹤和控制

項(xiàng)目管理人員負(fù)責(zé)追蹤和控制在進(jìn)度安排中標(biāo)識的每一個(gè)任務(wù)。如果任務(wù)實(shí)際完

成日期滯后于進(jìn)度安排,則管理員可以使用一種自動的項(xiàng)目進(jìn)度安排工具來確定

在項(xiàng)目的中間里程碑上進(jìn)度誤期所帶來的影響,并及時(shí)采取措施加以解決。如重

新分配資源、對任務(wù)重新安排等等。作為最壞的情況,只好推遲軟件產(chǎn)品的交付

日期。

2.6.2風(fēng)險(xiǎn)分析

?風(fēng)險(xiǎn)的特點(diǎn):

①具有不確定性,某項(xiàng)風(fēng)險(xiǎn)可能發(fā)生也可能不發(fā)生;

②一旦某項(xiàng)風(fēng)險(xiǎn)變成了現(xiàn)實(shí),就必然會給項(xiàng)目帶來不良的影響和損失,甚至災(zāi)難性

后果。

?風(fēng)險(xiǎn)分析的四個(gè)主要活動:

風(fēng)險(xiǎn)標(biāo)識;

風(fēng)險(xiǎn)估算;

風(fēng)險(xiǎn)評價(jià);

風(fēng)險(xiǎn)駕馭和監(jiān)控。

1.風(fēng)險(xiǎn)標(biāo)識

?風(fēng)險(xiǎn)按影響的范圍,可分為三類:

①項(xiàng)目風(fēng)險(xiǎn)是指項(xiàng)目在預(yù)算、進(jìn)度、人力等資源、客戶和需求等方面可能存在

的問題。這些問題一旦發(fā)生將對軟件開發(fā)項(xiàng)目產(chǎn)生不利影響。

②技術(shù)風(fēng)險(xiǎn)是指在需求、設(shè)計(jì)、實(shí)現(xiàn)、接口、臉證和維護(hù)等方面的潛在問題。

如果技術(shù)風(fēng)險(xiǎn)發(fā)生了,將直接威脅軟件產(chǎn)品的質(zhì)量和交付日期。

③商業(yè)風(fēng)險(xiǎn)是指開發(fā)一個(gè)沒人需要的優(yōu)質(zhì)軟件產(chǎn)品、開發(fā)一個(gè)銷售部門不知道

如何銷售的軟件產(chǎn)品、或開發(fā)一個(gè)不再符合整體商業(yè)策略的產(chǎn)品等等。

2.風(fēng)險(xiǎn)估算——風(fēng)險(xiǎn)預(yù)測。

?軟件項(xiàng)目管理人員主要從影響風(fēng)險(xiǎn)的因素和風(fēng)險(xiǎn)發(fā)生后帶來的損失來度量風(fēng)險(xiǎn)。

?要對風(fēng)險(xiǎn)進(jìn)行估算,首先應(yīng)建立風(fēng)險(xiǎn)度量指標(biāo)體系、指明風(fēng)險(xiǎn)帶來的影響和損失,

確定影響風(fēng)險(xiǎn)的因素,估計(jì)風(fēng)險(xiǎn)出現(xiàn)的可能性或概率,即進(jìn)行定量的估算。

3.風(fēng)險(xiǎn)評價(jià)

?一般來說,參照點(diǎn)不是一條平滑的曲線,而是一個(gè)易變動的區(qū)域,在這個(gè)區(qū)域要

做出基于參照值組合的管理判斷往往是不準(zhǔn)確的。因此,風(fēng)險(xiǎn)評價(jià)過程可分四步

進(jìn)行:

1)定義項(xiàng)目的風(fēng)險(xiǎn)參照水準(zhǔn);

2)定義每種風(fēng)險(xiǎn)的三元組[門,pi,Xi],并找出和每個(gè)參照水準(zhǔn)之間的關(guān)系;

3)預(yù)測一組參照點(diǎn)以定義一個(gè)項(xiàng)目終止區(qū)域,用一條曲線或一些易變動區(qū)域

來定界;

4)預(yù)測各種風(fēng)險(xiǎn)組合的影響是否超出參照水準(zhǔn)。

4.風(fēng)險(xiǎn)駕馭和監(jiān)控

?風(fēng)險(xiǎn)分析的目的是建立處理風(fēng)險(xiǎn)的策略,監(jiān)控、駕馭風(fēng)險(xiǎn)。

?駕馭風(fēng)險(xiǎn)是利用原型化、軟件自動化、可靠性工程學(xué)等技術(shù)和軟件項(xiàng)目管理方法

設(shè)法避開或轉(zhuǎn)移風(fēng)險(xiǎn)。

?描述風(fēng)險(xiǎn)的三元組[門,pi,Xi]是駕馭風(fēng)險(xiǎn)的基礎(chǔ)。

?風(fēng)險(xiǎn)駕馭與監(jiān)控活動如圖2-6-2所示。

2.6.3進(jìn)度安排

?進(jìn)度安排可能是如下兩種方式之一:

1)軟件產(chǎn)品最終交付日期已經(jīng)確定,開發(fā)方只能根據(jù)最終交付日期安排進(jìn)度;

2)最后交付日期主要由軟件開發(fā)方來確定。

?軟件項(xiàng)目的進(jìn)度安排的準(zhǔn)確程度可能比成本估算的準(zhǔn)確程度更重要,如果進(jìn)度安

排不當(dāng)會導(dǎo)致客戶不滿、喪失市場機(jī)會和成本的增加。因此,進(jìn)度安排必須解決

好以F幾個(gè)問題。

1.任務(wù)、人力、時(shí)間等資源的分配應(yīng)與工程進(jìn)度相一致

?由于大型軟件項(xiàng)目的開發(fā)必然是項(xiàng)目管理人員、分析人員、設(shè)計(jì)人員等的集體勞

動,又是一項(xiàng)復(fù)雜的智力勞動,因此,必須制定合理的進(jìn)度計(jì)劃,并根據(jù)計(jì)劃合

理地分配任務(wù)、人力、時(shí)間等資源。

?比如,人力的分配要符合大型軟件項(xiàng)目的Rayleigh-Norden曲線。如果人力分配不

合理,比如在設(shè)計(jì)高峰投入的程序員不足,拖延了進(jìn)度,這時(shí)臨時(shí)加入新的程序

員不但不能加快進(jìn)度,反而會使進(jìn)度變得更慢。項(xiàng)目管理人員應(yīng)努力尋求任務(wù)、

人力、時(shí)間的最佳組合,以便在滿足進(jìn)度要求的前提下獲得最大的效益。在可能

的情況下,適當(dāng)減少開發(fā)人員、相對延長一些開發(fā)時(shí)間,也可以取得較大的經(jīng)濟(jì)

效益。

2.任務(wù)的分解與并行開發(fā)

?為了充分發(fā)揮開發(fā)人員的潛力、縮短工期,軟件工程項(xiàng)目的任務(wù)分解與安排應(yīng)盡

力挖掘可并行開發(fā)的部分。

?圖2-6-3是一個(gè)典型項(xiàng)目任務(wù)網(wǎng)絡(luò)圖。其中“▲”表示軟件工程過程的里程碑,當(dāng)軟

件開發(fā)活動到達(dá)某個(gè)里程碑時(shí),應(yīng)當(dāng)交付包括文檔在內(nèi)的階段性產(chǎn)品并要通過評

審。軟件開發(fā)項(xiàng)目的里程碑為管理人員提供了項(xiàng)目進(jìn)度的可靠依據(jù)。圖中紿出了

各個(gè)子任務(wù)間的相互依賴關(guān)系。

3.工作量的分配

?圖2-6?4給出了在整個(gè)軟件項(xiàng)目定義與開發(fā)各階段一種典型的工作量分布原則,稱

為40-20-40分布原則。即:

編碼前的工作量約占40%左右;

編碼的工作量僅占20%左右;

編碼后的工作量約占40%左右。

?該原則只能從宏觀上作為一個(gè)指南,實(shí)際工作量分配的比例必須根據(jù)具體項(xiàng)目的

類型和特點(diǎn)來確定。比如,和人命相關(guān)的軟件項(xiàng)目在測試階段的工作量可能達(dá)到

其余各個(gè)階段的3?5倍。

圖2-6-4軟件開發(fā)工作量的分布

3.工作量的分配

?在制定進(jìn)度計(jì)劃時(shí),可以利用估算模型對工作量做出估計(jì)。如果利用基本CoCoM。

模型或其他公式,可參照表2?16給出的進(jìn)度分配百分比來安排進(jìn)度。

?可按照表2-16給出的比例進(jìn)一步確定每一階段所需的開發(fā)時(shí)間。然后,在每一階

段,進(jìn)行任務(wù)分解,對各個(gè)任務(wù)再進(jìn)行工作量和進(jìn)度的分配。

4.具體進(jìn)度安排

?目前,軟件項(xiàng)目的進(jìn)度安排的兩種比較常用的方法是程序評估與審查技術(shù)

(PERT)和關(guān)鍵路徑法(CPM),這兩種方法都生成描述項(xiàng)目進(jìn)展?fàn)顟B(tài)的任務(wù)

網(wǎng)絡(luò)圖。

?圖2-6-5給出了用MacProjectII軟件工具生成的項(xiàng)目進(jìn)度安排圖的一部分。圖中:

方框——子任務(wù);

帶圓角的方框——里程碑;

框左上方的日期——子任務(wù)的開始時(shí)間;

框左下角的數(shù)字一完成本子任務(wù)所需的天數(shù)

4.具體進(jìn)度安排

?PERT和CPM方法為軟件項(xiàng)目規(guī)劃人員提供了定量描述工具,具體有:

1)用經(jīng)臉模型估算完成每個(gè)子任務(wù)所需的工作量和時(shí)間;

2)確定關(guān)鍵路徑。完成關(guān)鍵路徑上的所有任務(wù)所需時(shí)間為項(xiàng)目開發(fā)所需的最短時(shí)間;

3)確定各子任務(wù)的時(shí)間窗口,即確定各子任務(wù)的最早啟動時(shí)間和最遲啟動時(shí)間。

4.具體進(jìn)度安排

?某守任務(wù)的最早啟動時(shí)間是指該弓任務(wù)的所有各前導(dǎo)弓任務(wù)完成的最早時(shí)間;

?該子任務(wù)的最早啟動時(shí)間與完成該子任務(wù)所需時(shí)間之和就是該子任務(wù)的最早結(jié)

束時(shí)間。

?而某個(gè)子任務(wù)的最遲啟動時(shí)間是指在保證項(xiàng)目按時(shí)完成的前提下最晚啟動該子

任務(wù)的時(shí)間:

?最遲啟動時(shí)間與完成該子任務(wù)所需時(shí)間之和就是該子任務(wù)的最遲結(jié)束時(shí)間。

?在制定進(jìn)度計(jì)劃時(shí),應(yīng)首先找到影響進(jìn)度的關(guān)鍵路徑,并在關(guān)鍵路徑上安排一

定的節(jié)假日和機(jī)動時(shí)間,以便應(yīng)付可能出現(xiàn)的問題和難點(diǎn)。

2.6.4軟件質(zhì)量保證

1.軟件質(zhì)量保證活動的內(nèi)容

為了開發(fā)出高質(zhì)量的軟件,達(dá)到軟件工程的目標(biāo),必須有計(jì)劃地、系統(tǒng)地進(jìn)

行軟件質(zhì)量保證(SQA,SoftwareQualityAssurance)活動。SQA活動主要包括以

下內(nèi)容:

1)在需求分析階段提出對軟件質(zhì)量的需求,并將其自頂向下逐步分解為可以度量和

控制的質(zhì)量要素,為軟件開發(fā)、維護(hù)各階段軟件質(zhì)量的定性分析和定量度量打下

基礎(chǔ);

2)研究并選用軟件開發(fā)方法和工具;

3)對軟件生存周期各階段進(jìn)行正式的技術(shù)評審

(FTR);

4)制定并實(shí)施軟件測試策略和測試計(jì)劃;

5)及時(shí)生成軟件文檔并進(jìn)行其版本控制;

6)保證軟件開發(fā)過程與選用的軟件開發(fā)標(biāo)準(zhǔn)相一致;

7)建立軟件質(zhì)量要素的度量機(jī)制;

8)記錄SQA的各項(xiàng)活動,并生成各種SQA報(bào)告。

這里僅介紹軟件工程的正式技術(shù)評審,其他內(nèi)容在本書的其他章節(jié)中介紹。

2.軟件工程的正式技術(shù)評審

1)FTR的作用

①FTR是保證軟件質(zhì)量的重要措施。

由于開發(fā)者在軟件生存周期各個(gè)階段的工作都可能產(chǎn)生錯(cuò)誤。錯(cuò)誤將隨著工作

的進(jìn)展而具有一種積累和放大效應(yīng),如圖2-6-6所示。所以,在每一個(gè)階段結(jié)束時(shí),

都要進(jìn)行正式的技術(shù)評審,以便及時(shí)發(fā)現(xiàn)并消除階段性產(chǎn)品中的錯(cuò)誤或缺陷,從

而可以保證軟件質(zhì)量。

②正式的技術(shù)評審是降低軟件成本的重要措施。

軟件開發(fā)實(shí)踐表明,后期改正一個(gè)錯(cuò)誤要比早期改正同一個(gè)錯(cuò)誤需要付出的成

本和代價(jià)高出二到三個(gè)數(shù)量級,錯(cuò)誤發(fā)現(xiàn)得越早,越易改正,損失越少。

2)正式的技術(shù)評審的組織和過程

FTR采用正式會議的方式。通常的做法是成立一個(gè)由3~5人組成的技術(shù)評審

小組,他們是熟悉軟件項(xiàng)目且水平較高的技術(shù)人員、管理人員。其中由組長1人、

設(shè)計(jì)者1人、評審員1~3人組成,1人兼做記錄員。組長的任務(wù)是組織和領(lǐng)導(dǎo)評審

過程的工作。設(shè)H弟的任務(wù)是負(fù)方回答技術(shù)上的問題,評審員的任務(wù)是合理、公

證地評論工程中的技術(shù)問題。

2.6.5軟件項(xiàng)目組織的建立與人員分工

1.組織原則

建立一個(gè)好的軟件項(xiàng)目組織是保證軟件開發(fā)能夠順利進(jìn)行的必要條件之一。在

建立軟件開發(fā)組織的時(shí)候要注意的原則是:

①盡早落實(shí)責(zé)任。特別是項(xiàng)目負(fù)責(zé)人的責(zé)任;

②減少接口。組織應(yīng)該有良好的組織結(jié)構(gòu)、合理的人員分工,以減少不必要的通信;

③責(zé)權(quán)均衡。指軟件經(jīng)理的責(zé)任不應(yīng)比賦予他的權(quán)力還大。

2.組織結(jié)構(gòu)的模式一常采用的3種

1)按課題劃分的模式(ProjectFormat)

將軟件人員按照項(xiàng)目(課題)組成小組,小組成員始終參加所承擔(dān)課題的各項(xiàng)

任務(wù),即參加軟件產(chǎn)品的定義、設(shè)計(jì)、編碼、測試、評審、文檔編制、直到維護(hù)

的全過程。

2)按職能劃分的模式(FunctionalFormat)

將人員按照軟件生存周期各個(gè)階段劃分成若干個(gè)專業(yè)小組。比如分別建立計(jì)劃

組、需求分析組、設(shè)計(jì)組、實(shí)現(xiàn)組、測試組、維護(hù)組、質(zhì)量保證組等等。

優(yōu)點(diǎn):便于熟悉本組的工作。

缺點(diǎn):各個(gè)小組之間通信頻繁。

2.組織結(jié)構(gòu)的模式一常采用的3種

3)矩陣模式(MatrixFormat)

這種模式是以上2種模式的組合。一方面,按工作性質(zhì)成立一些專門組,如開

發(fā)組、業(yè)務(wù)組、測試組、維護(hù)組等;另一方面,每個(gè)項(xiàng)目都指派一個(gè)項(xiàng)目經(jīng)理負(fù)

貢管理。于是,每個(gè)軟件人員即屬于某一個(gè)專門組,又參加某一個(gè)項(xiàng)目的工作。

因此,他要接受專門組和項(xiàng)目經(jīng)理的雙重領(lǐng)導(dǎo)。

優(yōu)點(diǎn):專門組內(nèi)的成員可互相交流在各自參加的項(xiàng)目中取得的經(jīng)驗(yàn)教訓(xùn),從而

有利于發(fā)揮專業(yè)人員的作用;而每個(gè)項(xiàng)目又有專人負(fù)責(zé)管理,有利于項(xiàng)目完成。

3.程序設(shè)計(jì)小組的組織形式

?程序設(shè)計(jì)小組的組織和小組內(nèi)部人員的組織形式對生產(chǎn)率都會產(chǎn)生影響。常采用

的組織形式有主程序員制小組、民主制小組、層次式小組3種。

1)主程序員制小組(ChiefProgrammerTeam)

小組由1位主程序員(高級工程師)、2~5位程序員(技術(shù)員)、1位后援工

程師組成,還可以配備輔助人員(如資料員)。主程序員是小組的領(lǐng)導(dǎo)和核心,

他負(fù)責(zé)小組全部技術(shù)活動的計(jì)劃、協(xié)調(diào)與管理、關(guān)鍵技術(shù)、評審等工作。程序員

負(fù)責(zé)項(xiàng)目的開發(fā)、文檔資料的編寫等具體工作。后援工程師協(xié)助和支持主程序員

的工作,也做部分具體工作,必要時(shí)代替主程序員的工作。

(a)主程序員制小組

這種組織形式強(qiáng)調(diào)主程序員與其他程序員的直接聯(lián)系,從而簡化了程序員之間

的通信。而工作效果的好壞主要取決于主程序員的技術(shù)水平和管理才能。

2)民主制小組(DemocraticTeam)

?雖然也設(shè)置一位組X,但是每當(dāng)遇到問題時(shí),組內(nèi)的成員可以進(jìn)行民主協(xié)商,以

平等的地位交換意見。工作目標(biāo)的制定、做出決定都有全體組員參加,即強(qiáng)調(diào)發(fā)

揮小組每一個(gè)成員的積極、主動性和協(xié)作精神。

?優(yōu)點(diǎn):集思廣益、取長補(bǔ)短,適于時(shí)間長難度大的項(xiàng)目;

?缺點(diǎn):削弱了個(gè)人的責(zé)任心、并使開發(fā)效率有所降低。

3)層次式小組(HierarchicalTeam)

?即將組內(nèi)人員分為3級:

組長1人:他作為項(xiàng)目負(fù)責(zé)人負(fù)責(zé)全組工作;他直接領(lǐng)導(dǎo)2~7名高級程序員;

高級程序員:通過基層小組管理若干名程序員。

?層次式小組比較適合于這種本身就是層次結(jié)構(gòu)狀的課題或大型軟件項(xiàng)目。此時(shí)可

以按照組織形式劃分課題,然后把子項(xiàng)目分配給各個(gè)基層小組去完成。

?軟件開發(fā)小組的組織膨式應(yīng)根據(jù)實(shí)際問題的特點(diǎn)進(jìn)行調(diào)整,軟件開發(fā)小組內(nèi)部和

小組之間應(yīng)經(jīng)常交流情況和信息,以減少誤解,消除軟件中的個(gè)人特征,從而有

利于軟件質(zhì)量的提高。

4.人員配備

?實(shí)踐表明,軟件開發(fā)各個(gè)階段所需要的技術(shù)人員的類型、層次和數(shù)量是不同的。

?在軟件項(xiàng)目的計(jì)劃和分析階段,只需要少數(shù)人,主要是系統(tǒng)分析員、從事軟件系

統(tǒng)論證和概要設(shè)計(jì)的軟件高級工程

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論