2017年全國計算機考試四級復習綱要:軟件管理

字號:


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