




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第七章軟件維護(hù)與軟件再工程§7.1軟件維護(hù)的概念四類維護(hù)活動:
改正性維護(hù)適應(yīng)性維護(hù)擴(kuò)充與完善性維護(hù)預(yù)防性維護(hù)第七章軟件維護(hù)與軟件再工程§7.1軟件維護(hù)的概念三類維護(hù)所占比例:其它維護(hù)5%適應(yīng)性維護(hù)25%改正性維護(hù)20%擴(kuò)充與完善性維護(hù)50%改正性維護(hù)占全部維護(hù)量的比率已從80年代初的20%大幅度下降,90年代初一些公司的產(chǎn)品差錯率已接近于零三類維護(hù)所占比例:其它維護(hù)適應(yīng)性改正性擴(kuò)充與完改正性維護(hù)占全各類維護(hù)活動的根本目的是延長軟件生存期其它維護(hù)4%軟件生存周期軟件誕生計劃分析設(shè)計編碼測試運(yùn)行和維護(hù)(簡稱維護(hù))改善期穩(wěn)定期陳舊期1年-10年2個月-2年重構(gòu)軟件工程周期各類維護(hù)活動的根本目的是延長軟件生存期其它維護(hù)軟件軟件誕生計§7.2軟件維護(hù)的特點MP+Ke=(c-d)M
:維護(hù)工作總工作量P:生產(chǎn)性工作量K
:
經(jīng)驗常數(shù)c:復(fù)雜度d:對該軟件熟悉程度的度量7.2.1維護(hù)的成本§7.2軟件維護(hù)的特點MP+Ke=(c-d)M:維護(hù)7.2.2維護(hù)中的典型問題(1)難以跟蹤軟件版本的進(jìn)化過程,軟件的變化未在文檔中反映出來.(2)難以跟蹤軟件的創(chuàng)建過程.(3)難以讀懂他人程序.(4)無文檔或不全.(5)軟件人員流動性大.(6)設(shè)計時未考慮修改需要,修改困難.(7)維護(hù)工作無吸引力,缺乏成就感.7.2.2維護(hù)中的典型問題(1)難以跟蹤軟件版本的進(jìn)化過§7.3軟件的維護(hù)任務(wù)7.3.1維護(hù)組織§7.3軟件的維護(hù)任務(wù)7.3.1維護(hù)組織7.3.2維護(hù)報告維護(hù)要求表軟件維護(hù)人員提供給用戶的空白的維護(hù)要求表,也稱為軟件問題報告表,這個表格由要求一項維護(hù)活動的用戶填寫。軟件維修報告滿足維護(hù)要求表中的要求所需要的工作量;維護(hù)要求的性質(zhì);這項要求的優(yōu)先次序;與修改有關(guān)的事后數(shù)據(jù)。7.3.2維護(hù)報告維護(hù)要求表維護(hù)階段的事件流維護(hù)階段的事件流不管維護(hù)類型如何,都需要進(jìn)行同樣的技術(shù)工作。這些工作包括修改軟件設(shè)計、復(fù)查、必要的代碼修改、單元測試和集成測試(包括使用以前的測試方案的回歸測試)、驗收測試和復(fù)審。不同類型的維護(hù)強(qiáng)調(diào)的重點不同,但是基本路徑是相同的。維護(hù)事件流中最后一個事件是復(fù)審,它再次檢驗軟件配置的所有成分的有效性,并且保證事實上滿足了維護(hù)要求表中的要求。軟件過程的輸出信息可以分為3類:①計算機(jī)程序(源代碼和可執(zhí)行程序);②描述計算機(jī)程序的文檔(供技術(shù)人員或用戶使用);③數(shù)據(jù)(程序內(nèi)包含的或在程序外的)。上述這些項組成了在軟件過程中產(chǎn)生的全部信息,我們把它們統(tǒng)稱為軟件配置,而這些項就是軟件配置項。不管維護(hù)類型如何,都需要進(jìn)行同樣的技術(shù)工作。這些工作包括修改7.3.4保存維護(hù)記錄維護(hù)過程中作應(yīng)記錄的數(shù)據(jù)程序標(biāo)識源程序語句數(shù)目機(jī)器代碼指令條數(shù)..............以收集的數(shù)據(jù)為基礎(chǔ)構(gòu)造維護(hù)數(shù)據(jù)庫,供維護(hù)評價使用.7.3.4保存維護(hù)記錄維護(hù)過程中作應(yīng)記錄的數(shù)據(jù)7.3.5評價維護(hù)活動從七個方面度量(評價)維護(hù)工作:(1)每次程序運(yùn)行平均失效的次數(shù);(2)用于每一類維護(hù)活動的總?cè)藭r數(shù);(3)平均每個程序、每種語言、每種維護(hù)類型所做的程序變動數(shù);(4)維護(hù)過程中增加或者刪除一個源語句平均花費(fèi)的人時數(shù);(5)維護(hù)每種語言花費(fèi)的平均人時數(shù);(6)一張維護(hù)要求表的平均周轉(zhuǎn)時間;(7)不同維護(hù)類型所占的百分比。7.3.5評價維護(hù)活動從七個方面度量(評價)維護(hù)工作:7.4軟件可維護(hù)性
7.4.1軟件可維護(hù)性的定義
軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)的錯誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的難易程度?;蛘撸壕S護(hù)人員理解、改正、改動或者改進(jìn)這個軟件的難易程度。7.4軟件可維護(hù)性
7.4.1軟件可維護(hù)性的定義軟件可維7.4.2可維護(hù)性的度量度量程序可維護(hù)性的7個特性在各類維護(hù)中的側(cè)重點
改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)可理解性可測試性可修改性可靠性可移植性可重用性效率7.4.2可維護(hù)性的度量度量程序可維護(hù)性的7個特性在各類維§7.5提高可維護(hù)性的方法
建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級使用提高軟件質(zhì)量的技術(shù)和工具進(jìn)行明確的質(zhì)量保證審查選擇可維護(hù)的程序設(shè)計語言改進(jìn)程序的文檔維護(hù)老化代碼§7.5提高可維護(hù)性的方法建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級§7.6預(yù)防性維護(hù)維護(hù)老程序的方法:(1)反復(fù)多次的做修改程序的嘗試;(2)仔細(xì)分析程序盡可能多得掌握程序的內(nèi)部工作細(xì)節(jié),以便更加有效的修改它;(3)在深入理解原有設(shè)計的基礎(chǔ)上,用軟件工程方法重新設(shè)計、重新編碼和測試那些需要變更的軟件部分;(4)以軟件工程方法學(xué)為指導(dǎo),對程序全部重新設(shè)計、編碼和測試,為此可以使用逆向工程和再工程工具來幫助理解原有的設(shè)計。預(yù)防性維護(hù):把今天的方法學(xué)應(yīng)用到昨天的系統(tǒng)上,以支持明天的需求?!?.6預(yù)防性維護(hù)維護(hù)老程序的方法:§7.7軟件再工程7.7.1軟件再工程在軟件復(fù)用中,有問題是與現(xiàn)有系統(tǒng)密切相關(guān)的例如:—現(xiàn)有軟件系統(tǒng)如何適應(yīng)當(dāng)前技術(shù)的發(fā)展及需求的變化,采用更易于理解的、適應(yīng)變化的、可復(fù)用的系統(tǒng)軟件構(gòu)架并提煉出可復(fù)用的軟件構(gòu)件?—現(xiàn)存大量的遺產(chǎn)軟件系統(tǒng)(LegacySoftware)由于技術(shù)的發(fā)展,正逐漸退出使用,如何對這些系統(tǒng)進(jìn)行挖掘、整理,得到有用的軟件構(gòu)件?—已有的軟件構(gòu)件隨著時間的流逝會逐漸變得不可使用,如何對它們進(jìn)行維護(hù),以延長其生命期,充分利用這些可復(fù)用構(gòu)件?§7.7軟件再工程7.7.1軟件再工程軟件再工程(SoftwareReengineering)正是解決上述問題的主要技術(shù)手段。軟件再工程是一類軟件工程活動,是一個工程過程,它將逆向工程、重構(gòu)和正向工程組合起來,將現(xiàn)存系統(tǒng)重新構(gòu)造為新的形式。再工程的基礎(chǔ)是系統(tǒng)理解,包括對運(yùn)行系統(tǒng)、源代碼、設(shè)計、分析、文檔等的全面理解。但在很多情況下,由于各類文檔的丟失,只能對源代碼進(jìn)行理解,即程序理解。它能夠使我們:
增進(jìn)對軟件的理解;
提高軟件自身的可維護(hù)性、復(fù)用性或演化性.軟件再工程(SoftwareReengineering)正軟件再工程過程模型代碼重構(gòu)數(shù)據(jù)重構(gòu)正向工程庫存目錄分析文檔重構(gòu)逆向工程軟件再工程過程模型代碼重構(gòu)數(shù)據(jù)重構(gòu)正向工程軟件再工程相關(guān)術(shù)語間關(guān)系
信息庫1類視圖:非過程性描述、元描述例:規(guī)格說明再工程3類視圖:過程性描述例:源程序再工程2類視圖:偽過程性描述、結(jié)構(gòu)性描述例:DFD、PDLA2類視圖:分析再工程逆向工程設(shè)計恢復(fù)再工程逆向工程設(shè)計恢復(fù)再工程A1類視圖:分析A3類視圖:分析分解綜合生成視圖軟件再工程相關(guān)術(shù)語間關(guān)系信1類視圖:再工程3類視圖:再工程軟件視圖Softwareview有關(guān)軟件的一種表達(dá)形式或報告;視圖分類:1類視圖:2類視圖:3類視圖:A類視圖:伴隨上述各類的分析視圖;
A1類視圖是對1類視圖的分析信息;A2類視圖是有關(guān)2類視圖的分析信息;A3類視圖是由3類視圖得到。軟件視圖Softwareview軟件視圖示例信息庫視圖編輯器DFD視圖編輯器Petri網(wǎng)視圖編輯器ERA圖視圖編輯器跟蹤矩陣XXXReq1Req2Prog1Prog2Prog3視圖編輯器程序結(jié)構(gòu)圖視圖編輯器流程圖視圖編輯器規(guī)格說明軟件視圖示例信息庫視圖編輯器DFD視圖編輯器Petri網(wǎng)視圖再工程信息庫及其產(chǎn)品軟件文檔分析結(jié)果信息庫設(shè)計成果規(guī)格說明各種圖度量值分析、分解器源程序或其模板(進(jìn)入點)源程序再工程信息庫及其產(chǎn)品軟件文檔分析結(jié)果信息庫設(shè)計成果規(guī)格說明各自動進(jìn)行再工程的過程軟件軟件的新視圖語法分析器語義分析器視圖合成器信息庫其他產(chǎn)品經(jīng)過再工程過程可獲得的信息格式圖形文檔度量值邏輯報告自動進(jìn)行再工程的過程軟件軟件的語法分析器視圖合成器信息庫其他7.7.2庫存目錄分析仔細(xì)分析庫存目錄,按照業(yè)務(wù)重要程度、壽命、當(dāng)前可維護(hù)性、預(yù)期的修改次數(shù)等標(biāo)準(zhǔn),把庫中的應(yīng)用系統(tǒng)排序,從中選出再工程的候選者,然后明智地分配再工程所需要的資源。開發(fā)和維護(hù)者不應(yīng)等待用戶的維護(hù)申請,可先選擇以下類型程序作為預(yù)防性維護(hù)對象:(1)預(yù)計若干年內(nèi)將繼續(xù)使用的程序(2)當(dāng)今正成功使用的程序(3)最近的將來要進(jìn)行大修改和完善的程序7.7.2庫存目錄分析仔細(xì)分析庫存目錄,按照業(yè)務(wù)重要程度、7.7.3文檔重構(gòu)(1)保持現(xiàn)狀(2)針對系統(tǒng)中當(dāng)前正在修改的那些部分建立完整文檔(3)如果某應(yīng)用系統(tǒng)是完成業(yè)務(wù)工作的關(guān)鍵,而且必須重構(gòu)全部文檔,則仍然應(yīng)該設(shè)法把文檔工作減少到必需的最小量。7.7.3文檔重構(gòu)(1)保持現(xiàn)狀7.7.4逆向工程逆向工程(反推工程reverseengineering)從現(xiàn)有軟件恢復(fù)設(shè)計信息(有用的維護(hù)信息)非結(jié)構(gòu)化、無文檔的源代碼或目標(biāo)代碼設(shè)計的恢復(fù)過程軟件的全部文檔7.7.4逆向工程非結(jié)構(gòu)化、無文檔設(shè)計的軟件的全部文檔逆向工程恢復(fù)信息的級別:(1)實現(xiàn)級:程序的抽象語法樹、符號表等信息(2)結(jié)構(gòu)級:反映程序分量之間相互依賴關(guān)系的信息,如調(diào)用圖、結(jié)構(gòu)圖等.(3)功能級:反映程序段功能和段間關(guān)系的信息(4)領(lǐng)域級:反映程序分量與應(yīng)用領(lǐng)域概念間對應(yīng)關(guān)系的信息抽象級別低高信息的抽象級別越高,它與代碼距離越遠(yuǎn),通過逆向工程恢復(fù)的難度越大,自動工具支持的可能性變小逆向工程恢復(fù)信息的級別:(1)實現(xiàn)級:程序的抽象語法抽低高信逆向工程源程序目標(biāo)代碼反匯編、反編譯程序分析技術(shù):程序結(jié)構(gòu)分析工具程序功能分析工具
源程序概要設(shè)計詳細(xì)設(shè)計概要設(shè)計需求分析逆向工程源程序目標(biāo)代碼反匯編、反編譯源程序概要設(shè)計概要設(shè)計需7.7.5正向工程正向工程也稱為革新或者改造,這項活動不僅從現(xiàn)有程序中恢復(fù)設(shè)計信息,而且使用該信息去改變或者重構(gòu)現(xiàn)有系統(tǒng),以提高整體質(zhì)量。正向工程應(yīng)用軟件工程原理、概念、技術(shù)和方法來重新開發(fā)某個現(xiàn)有的應(yīng)用系統(tǒng)。在大多數(shù)情況下,被再工程的軟件不僅能構(gòu)重新實現(xiàn)現(xiàn)有系統(tǒng)的功能,而且加入了新功能和提高了整體性能。7.7.5正向工程正向工程也稱為革新或者改造,這項活動不僅7.7.6代碼重構(gòu)重構(gòu)可疑模塊的代碼首先,用重構(gòu)工具分析源代碼,標(biāo)注出需要重構(gòu)的代碼然后,自動重構(gòu)有問題的代碼;最后,復(fù)審和測試生成的重構(gòu)代碼。7.7.6代碼重構(gòu)重構(gòu)可疑模塊的代碼7.7.7數(shù)據(jù)重構(gòu)發(fā)生在較低抽象層次上,是一種全范圍內(nèi)的再工程活動。在大多數(shù)情況下,數(shù)據(jù)重構(gòu)始于逆向工程活動,分解當(dāng)前使用的數(shù)據(jù)體系結(jié)構(gòu),必要時定義數(shù)據(jù)模型,標(biāo)識數(shù)據(jù)對象和屬性,并且從軟件質(zhì)量的角度復(fù)審現(xiàn)存的數(shù)據(jù)結(jié)構(gòu)。7.7.7數(shù)據(jù)重構(gòu)發(fā)生在較低抽象層次上,是一種全范圍內(nèi)的再7.7.3為什么要實施軟件再工程再工程可幫助降低軟件演化風(fēng)險再工程可幫助補(bǔ)償軟件投資再工程可使得軟件易于進(jìn)一步變更再工程有廣闊市場再工程擴(kuò)大了CASE工具集再工程是推動自動軟件維護(hù)的動力7.7.3為什么要實施軟件再工程第八章軟件項目管理估算軟件規(guī)模工作量估算進(jìn)度計劃人員組織質(zhì)量保證軟件配置管理能力成熟度模型第八章軟件項目管理估算軟件規(guī)模8.1估算軟件規(guī)模1、代碼行技術(shù)L=6a+4m+b由多名有經(jīng)驗的軟件工程師分別作出估計。每個人都估計程序的最小規(guī)模a,最大規(guī)模b和最可能的規(guī)模m。LOCKLOC8.1估算軟件規(guī)模1、代碼行技術(shù)6a+4m+b由多名2、功能點技術(shù)(1)信息域特性輸入項數(shù):用戶向軟件輸入的項數(shù),這些輸入給軟件提供面向應(yīng)用的數(shù)據(jù);輸出項數(shù):軟件向用戶輸出的項數(shù),它們向用戶提供面向應(yīng)用的信息;查詢數(shù):查詢就是一次聯(lián)機(jī)輸入,它導(dǎo)致軟件以聯(lián)機(jī)輸出方式產(chǎn)生某種即時響應(yīng);主文件數(shù):邏輯主文件的數(shù)目;外部接口數(shù):機(jī)器可讀的全部接口的數(shù)量,用這些接口把信息傳送給另一個系統(tǒng)。2、功能點技術(shù)(2)估算功能點的步驟A、計算未調(diào)整的功能點數(shù)UFPB、計算技術(shù)復(fù)雜性因子TCPTCF=0.65+0.01×DI其中,DI是14種技術(shù)因素對軟件規(guī)模的綜合影響程度。C、計算功能點數(shù)FPFP=UFP×TCF(2)估算功能點的步驟8.2工作量估算靜態(tài)單變量模型動態(tài)多變量模型COCOMO2模型8.2工作量估算靜態(tài)單變量模型8.3進(jìn)度計劃估算開發(fā)時間Gantt圖工程網(wǎng)絡(luò)估算工程進(jìn)度關(guān)鍵路徑機(jī)動時間8.3進(jìn)度計劃估算開發(fā)時間8.4人員組織民主制程序員組主程序員組現(xiàn)代程序員組8.4人員組織民主制程序員組圖Putnam_Norden曲線高低計劃需求分析初步設(shè)計詳細(xì)設(shè)計編碼單元測試整體測試功能測試管理人員高級技術(shù)人員初級技術(shù)人員圖Putnam_Norden曲線高低計劃需求分析初步8.5質(zhì)量保證軟件質(zhì)量軟件與明確地和隱含地定義的需求相一致的程序。定義強(qiáng)調(diào)了三個要點:(1)軟件需求是度量軟件質(zhì)量的基礎(chǔ),與需求不一致就是質(zhì)量不高(2)指定的開發(fā)標(biāo)準(zhǔn)定義了一組指導(dǎo)軟件開發(fā)的準(zhǔn)則,如果沒有遵守這些準(zhǔn)則,幾乎肯定會導(dǎo)致軟件質(zhì)量不高(3)通常,有一組沒有顯式描述的需求,如果軟件滿足明確描述的需求,卻不滿足隱含的需求,那么軟件的質(zhì)量仍然是值得懷疑的。8.5質(zhì)量保證軟件質(zhì)量產(chǎn)品運(yùn)行產(chǎn)品轉(zhuǎn)移產(chǎn)品修改可理解性可維修性靈活性可測試性可移植性可再用性互運(yùn)行性正確性完整性健壯性可用性效率風(fēng)險軟件質(zhì)量因素與產(chǎn)品活動的關(guān)系產(chǎn)品運(yùn)行產(chǎn)品產(chǎn)品修改可理解性可移植性正確性完整性軟件質(zhì)軟件質(zhì)量保證措施SQA的措施主要有:基于非執(zhí)行的測試(復(fù)審或者評審)基于執(zhí)行的測試程序正確性證明軟件質(zhì)量保證措施8.6軟件配置管理軟件配置管理是在軟件的整個生命期內(nèi)管理變化的一組活動。具體地說,這組活動用來:標(biāo)識變化控制變化確保適當(dāng)?shù)貙崿F(xiàn)了變化向需要知道這類信息的人報告變化8.6軟件配置管理軟件配置管理是在軟件的整個生命期內(nèi)管軟件配置軟件配置項:計算機(jī)程序、描述計算機(jī)程序的文檔、數(shù)據(jù)?;€:通過了正式復(fù)審的軟件配置項。軟件配置軟件配置管理過程軟件配置管理可以看作是應(yīng)用于整個軟件過程的軟件質(zhì)量保證活動,是專門用來管理變化的軟件質(zhì)量保證活動。軟件配置管理的五項任務(wù):標(biāo)識、版本控制、變化控制、配置審計、報告。軟件配置管理過程8.7能力成熟度模型能力成熟度模型的主要思想因為問題是管理軟件過程的方法不恰當(dāng)造成的,所以采用新技術(shù)并不會自動提高軟件生產(chǎn)率和軟件質(zhì)量,應(yīng)該下大力氣改進(jìn)對軟件過程的管理。能力成熟度模型的五個成熟度等級初始級、可重復(fù)級、已定義級、已管理級、優(yōu)化級8.7能力成熟度模型能力成熟度模型的主要思想據(jù)美國卡內(nèi)基.梅隆大學(xué)SEI統(tǒng)計,至2001年6月底,CMM的認(rèn)證情況如下表所示。CMM級別世界軟件企業(yè)通過CMM的數(shù)量世界軟件企業(yè)通過CMM的份額5級41家3%4級54家4%3級232家17%2級438家32%1級600家44%據(jù)美國卡內(nèi)基.梅隆大學(xué)SEI統(tǒng)計,至2001年6月底,CMM級別特點1初始級
軟件開發(fā)過程是一個偶然的甚至無序的過程,很少有明確的定義,成功完全依賴于個體的能力.2重復(fù)級實施基本的項目管理:跟蹤軟件成本、進(jìn)度和功能。依照以往項目成功的經(jīng)驗來建立基本的過程規(guī)則,使得其他相似項目能重復(fù)以往的成功。3定義級軟件過程的管理和實行方法都已文檔化、標(biāo)準(zhǔn)化,使開發(fā)商有一個開發(fā)過程的標(biāo)準(zhǔn)。即所有項目都可以依照標(biāo)準(zhǔn)來開發(fā)和維護(hù)軟件。4管理級定義了評估軟件過程和產(chǎn)品質(zhì)量的度量。利用此度量對軟件過程和產(chǎn)品做出推斷和控制。5優(yōu)化級系統(tǒng)地引導(dǎo)新理念及技術(shù)的反饋,從而不斷改進(jìn)軟件過程。5個成熟度等級在軟件過程中的特點級別特點1初始級軟件開發(fā)過程是一個偶然的甚至無序的五級成熟度的特性
等級1—初始級CMM1杰出的主管和優(yōu)秀的隊伍項目成功CMM1一般的主管和隊伍項目成功難以預(yù)測等級2—重復(fù)級項目經(jīng)驗定義準(zhǔn)則和跟蹤新的類似項目再成功五級成熟度的特性等級1—初始級CMM1杰出的主管和
五級成熟度的特性等級3—定義級CMM重復(fù)定義軟件過程可視和可控等級4—管理級軟件過程能力量化改進(jìn)與預(yù)測等級5—優(yōu)化級已有的技術(shù)等級2—4中的改進(jìn)已有的技術(shù)等級5中的優(yōu)化新的技術(shù)五級成熟度的特性等級3—定義級CMM重復(fù)定義軟件過第七章軟件維護(hù)與軟件再工程§7.1軟件維護(hù)的概念四類維護(hù)活動:
改正性維護(hù)適應(yīng)性維護(hù)擴(kuò)充與完善性維護(hù)預(yù)防性維護(hù)第七章軟件維護(hù)與軟件再工程§7.1軟件維護(hù)的概念三類維護(hù)所占比例:其它維護(hù)5%適應(yīng)性維護(hù)25%改正性維護(hù)20%擴(kuò)充與完善性維護(hù)50%改正性維護(hù)占全部維護(hù)量的比率已從80年代初的20%大幅度下降,90年代初一些公司的產(chǎn)品差錯率已接近于零三類維護(hù)所占比例:其它維護(hù)適應(yīng)性改正性擴(kuò)充與完改正性維護(hù)占全各類維護(hù)活動的根本目的是延長軟件生存期其它維護(hù)4%軟件生存周期軟件誕生計劃分析設(shè)計編碼測試運(yùn)行和維護(hù)(簡稱維護(hù))改善期穩(wěn)定期陳舊期1年-10年2個月-2年重構(gòu)軟件工程周期各類維護(hù)活動的根本目的是延長軟件生存期其它維護(hù)軟件軟件誕生計§7.2軟件維護(hù)的特點MP+Ke=(c-d)M
:維護(hù)工作總工作量P:生產(chǎn)性工作量K
:
經(jīng)驗常數(shù)c:復(fù)雜度d:對該軟件熟悉程度的度量7.2.1維護(hù)的成本§7.2軟件維護(hù)的特點MP+Ke=(c-d)M:維護(hù)7.2.2維護(hù)中的典型問題(1)難以跟蹤軟件版本的進(jìn)化過程,軟件的變化未在文檔中反映出來.(2)難以跟蹤軟件的創(chuàng)建過程.(3)難以讀懂他人程序.(4)無文檔或不全.(5)軟件人員流動性大.(6)設(shè)計時未考慮修改需要,修改困難.(7)維護(hù)工作無吸引力,缺乏成就感.7.2.2維護(hù)中的典型問題(1)難以跟蹤軟件版本的進(jìn)化過§7.3軟件的維護(hù)任務(wù)7.3.1維護(hù)組織§7.3軟件的維護(hù)任務(wù)7.3.1維護(hù)組織7.3.2維護(hù)報告維護(hù)要求表軟件維護(hù)人員提供給用戶的空白的維護(hù)要求表,也稱為軟件問題報告表,這個表格由要求一項維護(hù)活動的用戶填寫。軟件維修報告滿足維護(hù)要求表中的要求所需要的工作量;維護(hù)要求的性質(zhì);這項要求的優(yōu)先次序;與修改有關(guān)的事后數(shù)據(jù)。7.3.2維護(hù)報告維護(hù)要求表維護(hù)階段的事件流維護(hù)階段的事件流不管維護(hù)類型如何,都需要進(jìn)行同樣的技術(shù)工作。這些工作包括修改軟件設(shè)計、復(fù)查、必要的代碼修改、單元測試和集成測試(包括使用以前的測試方案的回歸測試)、驗收測試和復(fù)審。不同類型的維護(hù)強(qiáng)調(diào)的重點不同,但是基本路徑是相同的。維護(hù)事件流中最后一個事件是復(fù)審,它再次檢驗軟件配置的所有成分的有效性,并且保證事實上滿足了維護(hù)要求表中的要求。軟件過程的輸出信息可以分為3類:①計算機(jī)程序(源代碼和可執(zhí)行程序);②描述計算機(jī)程序的文檔(供技術(shù)人員或用戶使用);③數(shù)據(jù)(程序內(nèi)包含的或在程序外的)。上述這些項組成了在軟件過程中產(chǎn)生的全部信息,我們把它們統(tǒng)稱為軟件配置,而這些項就是軟件配置項。不管維護(hù)類型如何,都需要進(jìn)行同樣的技術(shù)工作。這些工作包括修改7.3.4保存維護(hù)記錄維護(hù)過程中作應(yīng)記錄的數(shù)據(jù)程序標(biāo)識源程序語句數(shù)目機(jī)器代碼指令條數(shù)..............以收集的數(shù)據(jù)為基礎(chǔ)構(gòu)造維護(hù)數(shù)據(jù)庫,供維護(hù)評價使用.7.3.4保存維護(hù)記錄維護(hù)過程中作應(yīng)記錄的數(shù)據(jù)7.3.5評價維護(hù)活動從七個方面度量(評價)維護(hù)工作:(1)每次程序運(yùn)行平均失效的次數(shù);(2)用于每一類維護(hù)活動的總?cè)藭r數(shù);(3)平均每個程序、每種語言、每種維護(hù)類型所做的程序變動數(shù);(4)維護(hù)過程中增加或者刪除一個源語句平均花費(fèi)的人時數(shù);(5)維護(hù)每種語言花費(fèi)的平均人時數(shù);(6)一張維護(hù)要求表的平均周轉(zhuǎn)時間;(7)不同維護(hù)類型所占的百分比。7.3.5評價維護(hù)活動從七個方面度量(評價)維護(hù)工作:7.4軟件可維護(hù)性
7.4.1軟件可維護(hù)性的定義
軟件可維護(hù)性是指糾正軟件系統(tǒng)出現(xiàn)的錯誤和缺陷,以及為滿足新的要求進(jìn)行修改、擴(kuò)充或壓縮的難易程度?;蛘撸壕S護(hù)人員理解、改正、改動或者改進(jìn)這個軟件的難易程度。7.4軟件可維護(hù)性
7.4.1軟件可維護(hù)性的定義軟件可維7.4.2可維護(hù)性的度量度量程序可維護(hù)性的7個特性在各類維護(hù)中的側(cè)重點
改正性維護(hù)適應(yīng)性維護(hù)完善性維護(hù)可理解性可測試性可修改性可靠性可移植性可重用性效率7.4.2可維護(hù)性的度量度量程序可維護(hù)性的7個特性在各類維§7.5提高可維護(hù)性的方法
建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級使用提高軟件質(zhì)量的技術(shù)和工具進(jìn)行明確的質(zhì)量保證審查選擇可維護(hù)的程序設(shè)計語言改進(jìn)程序的文檔維護(hù)老化代碼§7.5提高可維護(hù)性的方法建立明確的軟件質(zhì)量目標(biāo)和優(yōu)先級§7.6預(yù)防性維護(hù)維護(hù)老程序的方法:(1)反復(fù)多次的做修改程序的嘗試;(2)仔細(xì)分析程序盡可能多得掌握程序的內(nèi)部工作細(xì)節(jié),以便更加有效的修改它;(3)在深入理解原有設(shè)計的基礎(chǔ)上,用軟件工程方法重新設(shè)計、重新編碼和測試那些需要變更的軟件部分;(4)以軟件工程方法學(xué)為指導(dǎo),對程序全部重新設(shè)計、編碼和測試,為此可以使用逆向工程和再工程工具來幫助理解原有的設(shè)計。預(yù)防性維護(hù):把今天的方法學(xué)應(yīng)用到昨天的系統(tǒng)上,以支持明天的需求。§7.6預(yù)防性維護(hù)維護(hù)老程序的方法:§7.7軟件再工程7.7.1軟件再工程在軟件復(fù)用中,有問題是與現(xiàn)有系統(tǒng)密切相關(guān)的例如:—現(xiàn)有軟件系統(tǒng)如何適應(yīng)當(dāng)前技術(shù)的發(fā)展及需求的變化,采用更易于理解的、適應(yīng)變化的、可復(fù)用的系統(tǒng)軟件構(gòu)架并提煉出可復(fù)用的軟件構(gòu)件?—現(xiàn)存大量的遺產(chǎn)軟件系統(tǒng)(LegacySoftware)由于技術(shù)的發(fā)展,正逐漸退出使用,如何對這些系統(tǒng)進(jìn)行挖掘、整理,得到有用的軟件構(gòu)件?—已有的軟件構(gòu)件隨著時間的流逝會逐漸變得不可使用,如何對它們進(jìn)行維護(hù),以延長其生命期,充分利用這些可復(fù)用構(gòu)件?§7.7軟件再工程7.7.1軟件再工程軟件再工程(SoftwareReengineering)正是解決上述問題的主要技術(shù)手段。軟件再工程是一類軟件工程活動,是一個工程過程,它將逆向工程、重構(gòu)和正向工程組合起來,將現(xiàn)存系統(tǒng)重新構(gòu)造為新的形式。再工程的基礎(chǔ)是系統(tǒng)理解,包括對運(yùn)行系統(tǒng)、源代碼、設(shè)計、分析、文檔等的全面理解。但在很多情況下,由于各類文檔的丟失,只能對源代碼進(jìn)行理解,即程序理解。它能夠使我們:
增進(jìn)對軟件的理解;
提高軟件自身的可維護(hù)性、復(fù)用性或演化性.軟件再工程(SoftwareReengineering)正軟件再工程過程模型代碼重構(gòu)數(shù)據(jù)重構(gòu)正向工程庫存目錄分析文檔重構(gòu)逆向工程軟件再工程過程模型代碼重構(gòu)數(shù)據(jù)重構(gòu)正向工程軟件再工程相關(guān)術(shù)語間關(guān)系
信息庫1類視圖:非過程性描述、元描述例:規(guī)格說明再工程3類視圖:過程性描述例:源程序再工程2類視圖:偽過程性描述、結(jié)構(gòu)性描述例:DFD、PDLA2類視圖:分析再工程逆向工程設(shè)計恢復(fù)再工程逆向工程設(shè)計恢復(fù)再工程A1類視圖:分析A3類視圖:分析分解綜合生成視圖軟件再工程相關(guān)術(shù)語間關(guān)系信1類視圖:再工程3類視圖:再工程軟件視圖Softwareview有關(guān)軟件的一種表達(dá)形式或報告;視圖分類:1類視圖:2類視圖:3類視圖:A類視圖:伴隨上述各類的分析視圖;
A1類視圖是對1類視圖的分析信息;A2類視圖是有關(guān)2類視圖的分析信息;A3類視圖是由3類視圖得到。軟件視圖Softwareview軟件視圖示例信息庫視圖編輯器DFD視圖編輯器Petri網(wǎng)視圖編輯器ERA圖視圖編輯器跟蹤矩陣XXXReq1Req2Prog1Prog2Prog3視圖編輯器程序結(jié)構(gòu)圖視圖編輯器流程圖視圖編輯器規(guī)格說明軟件視圖示例信息庫視圖編輯器DFD視圖編輯器Petri網(wǎng)視圖再工程信息庫及其產(chǎn)品軟件文檔分析結(jié)果信息庫設(shè)計成果規(guī)格說明各種圖度量值分析、分解器源程序或其模板(進(jìn)入點)源程序再工程信息庫及其產(chǎn)品軟件文檔分析結(jié)果信息庫設(shè)計成果規(guī)格說明各自動進(jìn)行再工程的過程軟件軟件的新視圖語法分析器語義分析器視圖合成器信息庫其他產(chǎn)品經(jīng)過再工程過程可獲得的信息格式圖形文檔度量值邏輯報告自動進(jìn)行再工程的過程軟件軟件的語法分析器視圖合成器信息庫其他7.7.2庫存目錄分析仔細(xì)分析庫存目錄,按照業(yè)務(wù)重要程度、壽命、當(dāng)前可維護(hù)性、預(yù)期的修改次數(shù)等標(biāo)準(zhǔn),把庫中的應(yīng)用系統(tǒng)排序,從中選出再工程的候選者,然后明智地分配再工程所需要的資源。開發(fā)和維護(hù)者不應(yīng)等待用戶的維護(hù)申請,可先選擇以下類型程序作為預(yù)防性維護(hù)對象:(1)預(yù)計若干年內(nèi)將繼續(xù)使用的程序(2)當(dāng)今正成功使用的程序(3)最近的將來要進(jìn)行大修改和完善的程序7.7.2庫存目錄分析仔細(xì)分析庫存目錄,按照業(yè)務(wù)重要程度、7.7.3文檔重構(gòu)(1)保持現(xiàn)狀(2)針對系統(tǒng)中當(dāng)前正在修改的那些部分建立完整文檔(3)如果某應(yīng)用系統(tǒng)是完成業(yè)務(wù)工作的關(guān)鍵,而且必須重構(gòu)全部文檔,則仍然應(yīng)該設(shè)法把文檔工作減少到必需的最小量。7.7.3文檔重構(gòu)(1)保持現(xiàn)狀7.7.4逆向工程逆向工程(反推工程reverseengineering)從現(xiàn)有軟件恢復(fù)設(shè)計信息(有用的維護(hù)信息)非結(jié)構(gòu)化、無文檔的源代碼或目標(biāo)代碼設(shè)計的恢復(fù)過程軟件的全部文檔7.7.4逆向工程非結(jié)構(gòu)化、無文檔設(shè)計的軟件的全部文檔逆向工程恢復(fù)信息的級別:(1)實現(xiàn)級:程序的抽象語法樹、符號表等信息(2)結(jié)構(gòu)級:反映程序分量之間相互依賴關(guān)系的信息,如調(diào)用圖、結(jié)構(gòu)圖等.(3)功能級:反映程序段功能和段間關(guān)系的信息(4)領(lǐng)域級:反映程序分量與應(yīng)用領(lǐng)域概念間對應(yīng)關(guān)系的信息抽象級別低高信息的抽象級別越高,它與代碼距離越遠(yuǎn),通過逆向工程恢復(fù)的難度越大,自動工具支持的可能性變小逆向工程恢復(fù)信息的級別:(1)實現(xiàn)級:程序的抽象語法抽低高信逆向工程源程序目標(biāo)代碼反匯編、反編譯程序分析技術(shù):程序結(jié)構(gòu)分析工具程序功能分析工具
源程序概要設(shè)計詳細(xì)設(shè)計概要設(shè)計需求分析逆向工程源程序目標(biāo)代碼反匯編、反編譯源程序概要設(shè)計概要設(shè)計需7.7.5正向工程正向工程也稱為革新或者改造,這項活動不僅從現(xiàn)有程序中恢復(fù)設(shè)計信息,而且使用該信息去改變或者重構(gòu)現(xiàn)有系統(tǒng),以提高整體質(zhì)量。正向工程應(yīng)用軟件工程原理、概念、技術(shù)和方法來重新開發(fā)某個現(xiàn)有的應(yīng)用系統(tǒng)。在大多數(shù)情況下,被再工程的軟件不僅能構(gòu)重新實現(xiàn)現(xiàn)有系統(tǒng)的功能,而且加入了新功能和提高了整體性能。7.7.5正向工程正向工程也稱為革新或者改造,這項活動不僅7.7.6代碼重構(gòu)重構(gòu)可疑模塊的代碼首先,用重構(gòu)工具分析源代碼,標(biāo)注出需要重構(gòu)的代碼然后,自動重構(gòu)有問題的代碼;最后,復(fù)審和測試生成的重構(gòu)代碼。7.7.6代碼重構(gòu)重構(gòu)可疑模塊的代碼7.7.7數(shù)據(jù)重構(gòu)發(fā)生在較低抽象層次上,是一種全范圍內(nèi)的再工程活動。在大多數(shù)情況下,數(shù)據(jù)重構(gòu)始于逆向工程活動,分解當(dāng)前使用的數(shù)據(jù)體系結(jié)構(gòu),必要時定義數(shù)據(jù)模型,標(biāo)識數(shù)據(jù)對象和屬性,并且從軟件質(zhì)量的角度復(fù)審現(xiàn)存的數(shù)據(jù)結(jié)構(gòu)。7.7.7數(shù)據(jù)重構(gòu)發(fā)生在較低抽象層次上,是一種全范圍內(nèi)的再7.7.3為什么要實施軟件再工程再工程可幫助降低軟件演化風(fēng)險再工程可幫助補(bǔ)償軟件投資再工程可使得軟件易于進(jìn)一步變更再工程有廣闊市場再工程擴(kuò)大了CASE工具集再工程是推動自動軟件維護(hù)的動力7.7.3為什么要實施軟件再工程第八章軟件項目管理估算軟件規(guī)模工作量估算進(jìn)度計劃人員組織質(zhì)量保證軟件配置管理能力成熟度模型第八章軟件項目管理估算軟件規(guī)模8.1估算軟件規(guī)模1、代碼行技術(shù)L=6a+4m+b由多名有經(jīng)驗的軟件工程師分別作出估計。每個人都估計程序的最小規(guī)模a,最大規(guī)模b和最可能的規(guī)模m。LOCKLOC8.1估算軟件規(guī)模1、代碼行技術(shù)6a+4m+b由多名2、功能點技術(shù)(1)信息域特性輸入項數(shù):用戶向軟件輸入的項數(shù),這些輸入給軟件提供面向應(yīng)用的數(shù)據(jù);輸出項數(shù):軟件向用戶輸出的項數(shù),它們向用戶提供面向應(yīng)用的信息;查詢數(shù):查詢就是一次聯(lián)機(jī)輸入,它導(dǎo)致軟件以聯(lián)機(jī)輸出方式產(chǎn)生某種即時響應(yīng);主文件數(shù):邏輯主文件的數(shù)目;外部接口數(shù):機(jī)器可讀的全部接口的數(shù)量,用這些接口把信息傳送給另一個系統(tǒng)。2、功能點技術(shù)(2)估算功能點的步驟A、計算未調(diào)整的功能點數(shù)UFPB、計算技術(shù)復(fù)雜性因子TCPTCF=0.65+0.01×DI其中,DI是14種技術(shù)因素對軟件規(guī)模的綜合影響程度。C、計算功能點數(shù)FPFP=UFP×TCF(2)估算功能點的步驟8.2工作量估算靜態(tài)單變量模型動態(tài)多變量模型COCOMO2模型8.2工作量估算靜態(tài)單變量模型8.3進(jìn)度計劃估算開發(fā)時間Gantt圖工程網(wǎng)絡(luò)估算工程進(jìn)度關(guān)鍵路徑機(jī)動時間8.3進(jìn)度計劃估算開發(fā)時間8.4人員組織民主制程序員組主程序員組現(xiàn)代程序員組8.4人員組織民主制程序員組圖Putnam_Norden曲線高低計劃需求分析初步設(shè)計詳細(xì)設(shè)計編碼單元測試整體測試功能測試管理人員高級技術(shù)人員初級技術(shù)人員圖Putnam_Norden曲線高低計劃需求分析初步8.5質(zhì)量保證軟件質(zhì)量軟件與明確地和隱含地定義的需求相一致的程序。定義強(qiáng)調(diào)了三個要點:(1)軟件需求是度量軟件質(zhì)量的基礎(chǔ),與需求不一致就是質(zhì)量不高(2)指定的開發(fā)標(biāo)準(zhǔn)定義了一組指導(dǎo)軟件開發(fā)的準(zhǔn)則,如果沒有遵守這些準(zhǔn)則,幾乎肯定會導(dǎo)致軟件質(zhì)量不高(3)通常,有一組沒有顯式描述的需求,如果軟件滿足明確描述的需求,卻不滿足隱含的需求,那么軟件的質(zhì)量仍然是值得懷疑的。8.5質(zhì)量保證軟件質(zhì)量產(chǎn)品運(yùn)行產(chǎn)品轉(zhuǎn)移產(chǎn)品修改可理解性
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 河南省新鄉(xiāng)市長垣市2025年八年級英語第二學(xué)期期中綜合測試模擬試題含答案
- 廣東省珠海市香洲區(qū)2025年英語七下期中學(xué)業(yè)質(zhì)量監(jiān)測試題含答案
- 山東省臨沂市沂水區(qū)2025屆七下英語期中教學(xué)質(zhì)量檢測模擬試題含答案
- 靜脈血標(biāo)本采集知識標(biāo)準(zhǔn)化培訓(xùn)方案的構(gòu)建與實施研究
- 2025-2030中國防篡改捆扎器行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略研究報告
- 人教版確定位置說課課件
- 中醫(yī)養(yǎng)生小課件視頻教程
- 中醫(yī)養(yǎng)生小課件大全下載
- 創(chuàng)新教學(xué)設(shè)計在科技環(huán)境下的實踐
- 工程大講堂課件
- 人行道欄桿計算
- 小學(xué)心理健康教育-我會舉手發(fā)言教學(xué)設(shè)計學(xué)情分析教材分析課后反思
- 東南大學(xué)高等數(shù)學(xué)實驗報告-2
- 江蘇省連云港市海州區(qū)2022-2023學(xué)年八年級下學(xué)期期末數(shù)學(xué)試題(含答案)
- 西師版小學(xué)數(shù)學(xué)-畢業(yè)總復(fù)習(xí)資料
- 氣瓶內(nèi)殘液殘氣處理操作規(guī)程
- 關(guān)于英國物業(yè)收費(fèi)的討論
- 《陋室銘》之托物言志學(xué)習(xí)課件
- 漢明碼編譯碼實驗新編
- 電大可編程控制器應(yīng)用實訓(xùn) 形考任務(wù)6
- 部編版《語文》三年級下冊全冊教案及反思
評論
0/150
提交評論