版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 執(zhí)業(yè)獸醫(yī)考試考試題預(yù)防科目及答案
- 煙花爆竹考試題及答案
- 監(jiān)護(hù)人防溺水測試題附答案
- 幼兒教育題庫論述題及答案
- 二建網(wǎng)絡(luò)考試題及答案
- 新安全生產(chǎn)法試題庫及參考答案
- 中藥試題+答案
- 重癥醫(yī)學(xué)科考試試題與答案
- 陜西省延安市輔警公共基礎(chǔ)知識題庫(附答案)
- 客服營銷面試試題及答案
- 2026中國電信四川公用信息產(chǎn)業(yè)有限責(zé)任公司社會成熟人才招聘備考題庫及參考答案詳解1套
- 2025年廣東省生態(tài)環(huán)境廳下屬事業(yè)單位考試真題附答案
- 2026年安徽省公務(wù)員考試招錄7195名備考題庫完整參考答案詳解
- 【地理】期末模擬測試卷-2025-2026學(xué)年七年級地理上學(xué)期(人教版2024)
- GB/T 879.4-2000彈性圓柱銷卷制標(biāo)準(zhǔn)型
- GB/T 1957-2006光滑極限量規(guī)技術(shù)條件
- GB 28480-2012飾品有害元素限量的規(guī)定
- 劉一秒演說智慧經(jīng)典(內(nèi)部筆記)
- 管道TOFD檢測記錄及續(xù)表
- 馬克思主義哲學(xué)精講課件
- 期末考試總安排
評論
0/150
提交評論