2017年全國(guó)計(jì)算機(jī)考試四級(jí)復(fù)習(xí)綱要:軟件管理

字號(hào):


     五、軟件管理
     軟件工程項(xiàng)目高質(zhì)量高效率的完成與其他產(chǎn)品的工程項(xiàng)目一樣,不僅取決于所采用的技術(shù)、方法和工具,還決定于管理的好壞。兩者相輔相成,缺一不可。就目前軟件開(kāi)發(fā)中的問(wèn)題,更多的是管理問(wèn)題。本節(jié)將集中討論與管理方面有關(guān)的問(wèn)題。
     (一) 確定工作范圍和資源
     1.軟件工作范圍
     軟件計(jì)劃的第一個(gè)任務(wù)就是確定軟件的工作范圍,即軟件的用途及對(duì)軟件的要求。其中主要包括軟件的功能、性能、接口和可靠性等四個(gè)方面。計(jì)劃人員必須使用管理人員和技術(shù)人員都能理解的無(wú)二義性的語(yǔ)言來(lái)描述工作范圍。對(duì)于軟件功能的要求,在某些情況下要進(jìn)行求精細(xì)化,以便能夠提供更多的細(xì)節(jié),因?yàn)槌杀竞瓦M(jìn)度的估算都與功能有關(guān)。軟件的性能包括處理時(shí)間的約束、存儲(chǔ)限制以及依賴于機(jī)器的某些特性。要同時(shí)考慮功能和性能,才能做出正確的估計(jì)。接口又可分為硬件、軟件和人三類(lèi):
     (1)硬件指執(zhí)行該軟件的硬件,如中央處理機(jī)和外部設(shè)備,以及由該軟件控制的各種間接設(shè)備,如各種機(jī)器和顯示設(shè)備等;
     (2)軟件指已有的而且必須與新開(kāi)發(fā)軟件連接的軟件,如數(shù)據(jù)庫(kù)、子程序包和操作系統(tǒng)等;
     (3)人指**終端或輸入/輸出設(shè)備使用該軟件的操作人員。在這三種情況下,都要詳細(xì)地了解**接口的信息傳遞。計(jì)劃人員還必須考慮各個(gè)接口的性質(zhì)及復(fù)雜程度,以確定對(duì)開(kāi)發(fā)資源、成本和進(jìn)度的各種影響。
     2.資源
     (1)人員軟件危機(jī)中提出的最嚴(yán)重的問(wèn)題是缺少有經(jīng)驗(yàn)的軟件人員,人是軟件開(kāi)發(fā)的主要資源。這里所討論的不是小項(xiàng)目,而是大項(xiàng)目,1、2個(gè)人是干不了的。在大項(xiàng)目的軟件開(kāi)發(fā)中,人員尤其重要。軟件工程各個(gè)階段對(duì)人員有不同的要求。開(kāi)始時(shí)管理人員要用較多的精力,因?yàn)樽鳛楣芾砣藛T的決策,這時(shí)是很關(guān)鍵的,最后驗(yàn)收時(shí)也要投入較多的精力。高級(jí)技術(shù)人員同樣如此。初級(jí)技術(shù)人員前期工作不多,在詳細(xì)設(shè)計(jì)、編碼和早期測(cè)試中參與最多,單元測(cè)試時(shí)為高峰。
     (2)硬件硬件也是一種軟件開(kāi)發(fā)工具。硬件資源包括:
     ①宿主機(jī)宿主機(jī)是指在軟件開(kāi)發(fā)階段使用的計(jì)算機(jī)和有關(guān)外部設(shè)備。對(duì)于一些專(zhuān)門(mén)的開(kāi)發(fā)機(jī)構(gòu),為了能夠接受更多的用戶任務(wù),并能方便地使用多種類(lèi)型的開(kāi)發(fā)支持工具,常備有專(zhuān)門(mén)的開(kāi)發(fā)系統(tǒng)。目前很多微機(jī)都設(shè)置有單獨(dú)的開(kāi)發(fā)系統(tǒng),而且進(jìn)一步發(fā)展為專(zhuān)用的軟件開(kāi)發(fā)環(huán)境,這一部分將在第9章討論。
     ②目標(biāo)機(jī)運(yùn)行所開(kāi)發(fā)軟件的計(jì)算機(jī)叫目標(biāo)機(jī),其中也包括有關(guān)的外部設(shè)備,在很多情況下,宿主機(jī)與目標(biāo)機(jī)是統(tǒng)一的。
     ③其他硬件設(shè)備在進(jìn)行專(zhuān)用軟件的開(kāi)發(fā)時(shí),有時(shí)需要某些特殊的硬件資源,如開(kāi)發(fā)過(guò)程控制軟件時(shí)所需的A/D、D/A等專(zhuān)用設(shè)備。
     (3)軟件和硬件一樣,也是一種軟件開(kāi)發(fā)工具。軟件資源包括:
     ①支持軟件包括范圍廣泛的各種工具。最基礎(chǔ)的支持軟件是操作系統(tǒng)、編譯程序、數(shù)據(jù)庫(kù)、圖形包和網(wǎng)絡(luò)軟件等。它們是開(kāi)發(fā)人員的必備工具。在軟件生存期的各階段還要有其它相應(yīng)的支持軟件:在需求分析階段,有需求分析和生成程序;在設(shè)計(jì)階段,有設(shè)計(jì)語(yǔ)言處理程序、流程圖/框圖生成程序和模擬程序;在編碼和單元測(cè)試階段,有動(dòng)態(tài)調(diào)試程序、交叉匯編程序/編譯程序和宏處理程序;在測(cè)試階段,有測(cè)試驅(qū)動(dòng)程序和測(cè)試結(jié)果分析程序等。恰當(dāng)?shù)厥褂弥С周浖梢源蟠蟮靥岣哕浖_(kāi)發(fā)的生產(chǎn)率和軟件的質(zhì)量。但是為了使支持軟件能夠在開(kāi)發(fā)系統(tǒng)上運(yùn)行,需要很大的工作量和費(fèi)用,所以在考慮支持軟件時(shí),成本和效益兩者之間的關(guān)系是一個(gè)必須考慮的重要問(wèn)題。
     ②實(shí)用軟件相當(dāng)于軟件庫(kù),可以結(jié)合到新的系統(tǒng)中去,如各種標(biāo)準(zhǔn)子程序等。實(shí)用軟件現(xiàn)在應(yīng)該說(shuō)是非常豐富的,這是重用技術(shù)的基礎(chǔ)。但重用技術(shù)的問(wèn)題是如何選擇重用對(duì)象、分類(lèi)、建庫(kù),以及解決通用接口的機(jī)制問(wèn)題,使其能適用于任一硬、軟件環(huán)境。實(shí)用軟件作為資源時(shí),計(jì)劃人員應(yīng)認(rèn)識(shí)到:如果現(xiàn)有軟件符合要求,那么利用實(shí)用軟件的費(fèi)用幾乎總是小于開(kāi)發(fā)同等軟件所需的費(fèi)用;如果在與系統(tǒng)結(jié)合起來(lái)之前需要作某些修改,那就必須特別小心,因?yàn)樾薷默F(xiàn)有軟件所需費(fèi)用有時(shí)會(huì)大于開(kāi)發(fā)同等軟件的費(fèi)用。一般在計(jì)劃階段,軟件資源常常被忽視,只有在開(kāi)發(fā)階段才成為頭等大事。若能夠及時(shí)地確定對(duì)軟件資源的要求,則可以較好地對(duì)各種方案進(jìn)行技術(shù)評(píng)價(jià),并能盡早地獲得所需的方案。
     (二)成本估算
     為了使開(kāi)發(fā)項(xiàng)目能夠在規(guī)定的時(shí)間內(nèi)完成,而且不超過(guò)預(yù)算,成本估算的管理控制是關(guān)鍵。計(jì)算機(jī)廣泛使用有35年,而高級(jí)語(yǔ)言應(yīng)用僅30年。費(fèi)用估算大約開(kāi)始于50年代的第一個(gè)大型程序設(shè)計(jì),60年代估算過(guò)于樂(lè)觀,結(jié)果費(fèi)用大大超支,70年代以后,費(fèi)用估算才引起人們的普遍重視。由于影響軟件成本的因素太多(如人、技術(shù)、環(huán)境以及政治因素等),直到最近,軟件成本估算仍是一門(mén)很不成熟的技術(shù),國(guó)外已有的技術(shù)只能作為我們的借鑒。
     1.成本估算方法
     有兩種基本的估算方法:自頂向下和自底向上。自頂向下的方法是對(duì)整個(gè)項(xiàng)目的總開(kāi)發(fā)時(shí)間和總工作量做出估算,然后把它們按階段、步驟和工作單元進(jìn)行分配。自底向上的方法則正好相反,分別估算各工作單元所需的工作量和開(kāi)發(fā)時(shí)間,然后相加,就得出總的工作量和總的開(kāi)發(fā)時(shí)間。兩種方法都要求采用某種方法做出估算。有許多現(xiàn)成的方法可以利用,大致可分為三類(lèi):
     (1)專(zhuān)家估算法;
     (2)類(lèi)推估算法;
     (3)算式估算法。
     (1)專(zhuān)家估算法這種方法依靠一個(gè)或多個(gè)專(zhuān)家,對(duì)要求
     的項(xiàng)目做出估計(jì),其精確性主要取決于兩點(diǎn),即專(zhuān)家對(duì)估算項(xiàng)目的定性參數(shù)的了解和他們的經(jīng)驗(yàn)。后者類(lèi)似于類(lèi)推估算法。來(lái)源:www.examda.com
     (2)類(lèi)推估算法自頂向下的方法中,類(lèi)推估算法是將估算項(xiàng)目的總體參數(shù)與類(lèi)似項(xiàng)目進(jìn)行直接相比得到結(jié)果。自底向上的方法中,類(lèi)推是在兩個(gè)具有相似條件的工作單元之間進(jìn)行。
     (3)算式估算法專(zhuān)家估算法和類(lèi)推估算法的缺點(diǎn)在于,它們依靠帶有一定盲目性的和主觀的猜測(cè)對(duì)項(xiàng)目進(jìn)行估算。算式估算法則是企圖避免主觀因素的影響。用于估算的算式方法有兩種基本類(lèi)型:(1)由理論導(dǎo)出;(2)由經(jīng)驗(yàn)得出。
     2.成本估算模型
     (1)IBM模型1977年Walston和Felix總結(jié)了IBM聯(lián)合系統(tǒng)分部(FSD)負(fù)責(zé)的60個(gè)項(xiàng)目的數(shù)據(jù)。其中源代碼從400到467000行,工作量從12到11758人-月,共使用29種不同語(yǔ)言和66種計(jì)算機(jī)。
     (2)SLIM模型1979年前后,Putnam在軟件開(kāi)發(fā)生存期雷利(Rayleigh)曲線模型的基礎(chǔ)上提出SLIM商業(yè)化的成本估算模型,SLIM基本估算算式為L(zhǎng)=C k K 1/3 t 4/3d 其中:L和t d 分別表示可交付的源指令數(shù)和開(kāi)發(fā)時(shí)間(單位以年計(jì));K是整個(gè)生存期內(nèi)人的工作量(單位以人一年計(jì)),可從總的開(kāi)發(fā)工作量ED=0.4K求得;C k 是根據(jù)經(jīng)驗(yàn)數(shù)據(jù)確定的常數(shù),表示了開(kāi)發(fā)技術(shù)的先進(jìn)性級(jí)別。如果軟件開(kāi)發(fā)環(huán)境較差(沒(méi)有一定的開(kāi)發(fā)方法,缺少文檔和評(píng)審或批處理方式),取C k =6500;正常的開(kāi)發(fā)環(huán)境(有適當(dāng)?shù)拈_(kāi)發(fā)方法,較好的文檔和評(píng)審,以及交互式的執(zhí)行方式),C k =10000;而一個(gè)較好的開(kāi)發(fā)環(huán)境(自動(dòng)工具和技術(shù)),則取C k =12500。交換上式,可得開(kāi)發(fā)工作量算式 K=L 3 C 3k t 4d 可從美國(guó)或英國(guó)買(mǎi)到SLIM計(jì)算程序,它除了提供開(kāi)發(fā)時(shí)間和成本估算外,還提供關(guān)于風(fēng)險(xiǎn)、可行性、估算CPU時(shí)間需求及項(xiàng)目計(jì)劃中其它有關(guān)信息。
     (3)PRICE-S模型Freiman在1979年提出了另一個(gè)商業(yè)化的成本估算模型RCA PRICE-S。PRICE-S計(jì)算程序以一個(gè)未發(fā)表的啟發(fā)式算法為基礎(chǔ),將若干成本因素作為輸入,關(guān)鍵是生成源代碼或目標(biāo)代碼指令的數(shù)量,然后輸出成本和進(jìn)度估算,以及其它可供選擇的項(xiàng)目管理數(shù)據(jù)。另一個(gè)程序PRICE-SL可用于估算系統(tǒng)維護(hù)成本,根據(jù)若干個(gè)用戶提供的參數(shù),如軟件的期望壽命、發(fā)展和使用率等,PRICE-SL運(yùn)行時(shí)以PRICE-S的輸出作為它的輸入。
     (4)COCOMO模型TRW開(kāi)發(fā)的結(jié)構(gòu)性成本模型COCOMO(Constructive Cost Model)是最精確、最易于使用的成本估算方法之一,1981年Boehm在他的著作中進(jìn)行了詳盡的描述。
     (5)Belley-Basili元模型這種模型提供了最適用于在給定的開(kāi)發(fā)環(huán)境中,工作量估算方程的開(kāi)發(fā)方法。結(jié)果類(lèi)似于IBM和COCOMO模型。
     (6)Schneider模型上述所有模型完全是經(jīng)驗(yàn)性的,1978年Schneider根據(jù)1977年Halstead的軟件科學(xué)理論推導(dǎo)出幾種估算方程,得到的工作量方程與冪定律算式形式相同。
     3.代碼行的成本估算方法
     這是一種自底向上的估算方法,即從模塊開(kāi)始進(jìn)行估算,步驟如下:
     (1)確定功能首先將功能反復(fù)分解,直到可以對(duì)為實(shí)現(xiàn)該功能所要求的源代碼行數(shù)做出可靠性的估算為止。對(duì)各子功能,根據(jù)經(jīng)驗(yàn)數(shù)據(jù)或?qū)嵺`經(jīng)驗(yàn),可以給出極好、正常和較差三種情況下的源代碼估算行數(shù)的期望值,分別用a、m、b表示。
     (2)根據(jù)經(jīng)驗(yàn)數(shù)據(jù),確定各子功能的代碼行成本
     (3)計(jì)算各子功能的成本和工作量,并計(jì)算任務(wù)的總成本(元)和總工作量(人-月)
     (4)計(jì)算開(kāi)發(fā)時(shí)間
     (5)對(duì)結(jié)果進(jìn)行分析比較4.每項(xiàng)任務(wù)工作量的成本估算方法開(kāi)發(fā)過(guò)程中,最常用的是每項(xiàng)任務(wù)工作量的成本估算方法。工作量可以用人-日、人-月或人-年的數(shù)量來(lái)表示。知道單位工作量的成本,就可得到估算成本。
     下面仍以上節(jié)中的CAD軟件包為例,估算步驟如下:
     (1)確定任務(wù) 即每個(gè)功能都必須經(jīng)過(guò)需求分析、設(shè)計(jì)、編碼和測(cè)試工作
     (2)確定每項(xiàng)任務(wù)的工作量,對(duì)每項(xiàng)任務(wù)要估算它們所需要的人-月數(shù)。
     (3)找出與各項(xiàng)任務(wù)的對(duì)應(yīng)的勞務(wù)費(fèi)數(shù)據(jù) 即每個(gè)單位工作量成本(元/人-月)。因?yàn)楦麟A段的勞務(wù)費(fèi)用不同,需求分析和概要設(shè)計(jì)階段需要較多的高級(jí)技術(shù)人員;而詳細(xì)設(shè)計(jì)、編碼和早期測(cè)試則要求較多的初級(jí)技術(shù)人員。而他們的工資是不相同的。
     (4)計(jì)算 計(jì)算各個(gè)工作各個(gè)階段的成本和工作量,然后計(jì)算總成本和總工作量。
     (5)分析比較 在整個(gè)開(kāi)發(fā)工作量中,需求分析和設(shè)計(jì)用去了75人-月,約占全部分任務(wù)工作量的50%,說(shuō)明了這項(xiàng)工作的重要性。勞務(wù)費(fèi)反映了勞動(dòng)者的成本,其中包括管理費(fèi)。需求分析的勞務(wù)費(fèi)(5200元/人-月)比設(shè)計(jì)、編碼和單元測(cè)試都高,這也說(shuō)明了這項(xiàng)工作的重要性。
     (三) 進(jìn)度安排
     軟件開(kāi)發(fā)項(xiàng)目的進(jìn)度安排可以有兩種考慮方式。第一種,系統(tǒng)最終交付使用的日期已經(jīng)確定,軟件開(kāi)發(fā)機(jī)構(gòu)必須在合同規(guī)定的時(shí)間內(nèi)安排;第二種,只確定了大致的年限,最后交付使用的日期由軟件開(kāi)發(fā)機(jī)構(gòu)根據(jù)具體情況確定。后一種考慮能夠?qū)浖_(kāi)發(fā)任務(wù)進(jìn)行細(xì)致的分析;能夠地利用資源,合理地分配工作量,但實(shí)際工作中常常遇到第一種情況,問(wèn)題是軟件管理人員如何在規(guī)定的期限內(nèi)分配人力和
     (3)n個(gè)人被組成k個(gè)小組,每個(gè)小組分配一個(gè)或多個(gè)功能,并有具體組織,協(xié)調(diào)工作由小組和軟件主管共同進(jìn)行。雖然對(duì)上述每一種方案都可能說(shuō)出贊成或反對(duì)的理由。然而,有越來(lái)越多的證據(jù)表明,第三種方案,即正式的小組是的。正式的小組的方案來(lái)源于“主程序員小組”的概念。它是由Harlan Mills首先提出,并由Baker進(jìn)一步闡述的。小組的核心由一位高級(jí)工程師(主程序員)、2至5位技術(shù)人員和一位后備工程師組成。主程序員負(fù)責(zé)小組的所有技術(shù)活動(dòng)的計(jì)劃、協(xié)調(diào)和評(píng)審工作;技術(shù)人員負(fù)責(zé)項(xiàng)目的具體分析和開(kāi)發(fā);后備工程師則支持主程序員工作,必要時(shí)能代替主程序員工作,以便使項(xiàng)目能繼續(xù)進(jìn)行,而使損失最小。主程序員小組有一名或多名專(zhuān)家(如數(shù)據(jù)庫(kù)設(shè)計(jì)或通信方面專(zhuān)家)、數(shù)名輔助人員(如秘書(shū)和打字員)和一名資料員參加工作。資料員同時(shí)為多個(gè)小組工作,具體完成下列工作:
     (1)保存和管理所有軟件配置(包括各種文檔、源程序清單、數(shù)據(jù)和各種磁介質(zhì)資料);
     (2)協(xié)助收集和整理軟件生產(chǎn)率數(shù)據(jù);
     (3)對(duì)可修改的模塊分類(lèi)及編寫(xiě)索引;
     (4)協(xié)助小組進(jìn)行調(diào)查、評(píng)價(jià)和準(zhǔn)備文檔等。主程序員小組的主要目標(biāo)是發(fā)揮集體力量。因引,小組要培養(yǎng)從“全局”觀點(diǎn)出發(fā)進(jìn)行程序設(shè)計(jì),把“我的”程序變?yōu)椤拔覀兊摹背绦?幫助消除軟件的個(gè)人屬性,小組可以鼓勵(lì)更加徹底的評(píng)審,并在共同的工作中增加學(xué)習(xí),從而改善軟件質(zhì)量。在本章的第3節(jié)中,我們?cè)懻撨^(guò)人們?cè)诠ぷ髦杏幸粋€(gè)需要交流的問(wèn)題。當(dāng)采用主程序員小組這種形式時(shí),必須會(huì)增加交換意見(jiàn)所需的工作量,這似乎不利于提高軟件開(kāi)發(fā)的生產(chǎn)率。然而,不管怎樣組織,在軟件整個(gè)開(kāi)發(fā)過(guò)程的總工作量的相當(dāng)一部分總是要花費(fèi)在交換意見(jiàn)方面(如計(jì)劃、分析和評(píng)審等)。雖然,小組的形式增加了內(nèi)部交換意見(jiàn)的工作量,但是這是有組織的評(píng)審,必將減少在設(shè)計(jì)和編碼中引入的錯(cuò)誤。結(jié)果是測(cè)試工作量減少了,從而使小組有更高的生產(chǎn)率。當(dāng)然,小組中技術(shù)人員的數(shù)量不宜過(guò)多,一般建議2~5人為好。
     (五) 軟件計(jì)劃
     軟件開(kāi)發(fā)過(guò)程的每一步都要生產(chǎn)出可交付的文檔,這些文檔可以用來(lái)進(jìn)行評(píng)審和作為下一步工作的基礎(chǔ)。軟件計(jì)劃是一份比較簡(jiǎn)短精煉的文件。它應(yīng)該發(fā)給有關(guān)部門(mén),其中包括:
     (1)把該項(xiàng)目所確定的工作范圍和所需的資源告訴軟件主管部門(mén)、技術(shù)人員和該項(xiàng)目的需求者;
     (2)有關(guān)該項(xiàng)目的成本估算和進(jìn)度安排,應(yīng)告訴軟件主管部門(mén),以便他們進(jìn)行評(píng)審;來(lái)源:www.examda.com
     (3)還要發(fā)給與該項(xiàng)目開(kāi)發(fā)有關(guān)的所有人員,給他們提供有關(guān)該項(xiàng)目開(kāi)發(fā)的總辦法。軟件計(jì)劃應(yīng)包含以下內(nèi)容:
     1.工作范圍
     (1)項(xiàng)目目標(biāo)(2)主要功能(3)其他特性(4)開(kāi)發(fā)情況
     2.資源
     (1)人員資源(2)硬件資源(3)軟件資源(4)可利用的窗口
     3.成本估算
     4.進(jìn)度安排