軟件工程軟件維護和軟件項目管理dedi



Click to edit Master title style,Click to edit Master text styles,Second Level,Third Level,Fourth Level,Fifth Level,第七章 軟件維護與軟件再工程,7.1,軟件維護的概念,四類維護活動:,改正性維護,適應性維護,擴充與完善性維護,預防性維護,三類維護所占比例:,其它維護,5%,適應性,維 護,25%,改正性,維 護,20%,擴充與完,善性維護,50%,改正性維護占全部維護量的比率已從80年代初,的20%大幅度下降,90年代初一些公司的產(chǎn)品,差錯率已接近于零,各類維護活動的根本目的是,延長軟件生存期,其它維護,4%,軟件,生存,周期,軟件誕生,計,劃,分,析,設(shè),計,編,碼,測,試,運行和維護(簡稱維護),改善期 穩(wěn)定期 陳舊期,1年-10年,2個月-2年,重構(gòu),軟件工程周期,7.2,軟件維護的特點,M,P,+,K,e,=,(,c,-,d,),M,:,維護工作總工作量,P,:,生產(chǎn)性工作量,K,:,經(jīng)驗常數(shù),c,:復雜度,d,:,對該軟件熟悉程度的度量,7.2.1 維護的成本,7.2.2 維護中的典型問題,(1)難以跟蹤軟件版本的進化過程,軟件的變化未在文檔中反映出來.,(2),難以跟蹤軟件的創(chuàng)建過程.,(3),難以讀懂他人程序.,(4)無文檔或不全.,(5)軟件人員流動性大.,(6)設(shè)計時未考慮修改需要,修改困難.,(7)維護工作無吸引力,缺乏成就感.,7.3,軟件的維護任務(wù),7.3.1,維,護組織,7.3.2 維護報告,維護要求表,軟件維護人員提供給用戶的空白的維護要求表,也稱為軟件問題報告表,這個表格由要求一項維護活動的用戶填寫。
軟件維修報告,滿足維護要求表中的要求所需要的工作量;,維護要求的性質(zhì);,這項要求的優(yōu)先次序;,與修改有關(guān)的事后數(shù)據(jù)維護階段的事件流,不管維護類型如何,都需要進行同樣的技術(shù)工作這些工作包括修改軟件設(shè)計、復查、必要的代碼修改、單元測試和集成測試(包括使用以前的測試方案的回歸測試)、驗收測試和復審不同類型的維護強調(diào)的重點不同,但是基本路徑是相同的維護事件流中最后一個事件是復審,它再次檢驗軟件配置的所有成分的有效性,并且保證事實上滿足了維護要求表中的要求軟件過程的輸出信息可以分為3類:計算機程序(源代碼和可執(zhí)行程序);描述計算機程序的文檔(供技術(shù)人員或用戶使用);數(shù)據(jù)(程序內(nèi)包含的或在程序外的)上述這些項組成了在軟件過程中產(chǎn)生的全部信息,我們把它們統(tǒng)稱為軟件配置,而這些項就是軟件配置項7.3.4 保存維護記錄,維護過程中作應記錄的數(shù)據(jù),程序標識,源程序語句數(shù)目,機器代碼指令條數(shù),.,.,以收集的數(shù)據(jù)為基礎(chǔ)構(gòu)造維護數(shù)據(jù)庫,供維護評價使用.,7.3.5 評價維護活動,從七個方面度量(評價)維護工作:,(1)每次程序運行平均失效的次數(shù);,(2)用于每一類維護活動的總?cè)藭r數(shù);,(3)平均每個程序、每種語言、每種維護類型所做的程序變動數(shù);,(4)維護過程中增加或者刪除一個源語句平均花費的人時數(shù);,(5)維護每種語言花費的平均人時數(shù);,(6)一張維護要求表的平均周轉(zhuǎn)時間;,(7)不同維護類型所占的百分比。
7.4,軟件可維護性,7.4.1 軟件,可維,護性的定義,軟件可維護性是指糾正軟件系統(tǒng)出現(xiàn)的錯誤和缺陷,以及為滿足新的要求進行修改、擴充或壓縮的難易程度或者:,維護人員理解、改正、改動或者改進這個軟件的難易程度7,.4.2,可維護性的度量,度量程序可維護性的7個特性在各類維護,中的側(cè)重點,改正性維護 適應性維護 完善性維護,可理解性,可測試性,可修改性,可靠性,可移植性,可重用性,效率,7.5,提高可維護性的方法,建立明確的軟件質(zhì)量目標和優(yōu)先級,使用提高軟件質(zhì)量的技術(shù)和工具,進行明確的質(zhì)量保證審查,選擇可維護的程序設(shè)計語言,改進程序的文檔,維護老化代碼,7.6 預防性維護,維護老程序的方法:,(1)反復多次的做修改程序的嘗試;,(2)仔細分析程序盡可能多得掌握程序的內(nèi)部工作細節(jié),以便更加有效的修改它;,(3)在深入理解原有設(shè)計的基礎(chǔ)上,用軟件工程方法重新設(shè)計、重新編碼和測試那些需要變更的軟件部分;,(4)以軟件工程方法學為指導,對程序全部重新設(shè)計、編碼和測試,為此可以使用逆向工程和再工程工具來幫助理解原有的設(shè)計預防性維護:把今天的方法學應用到昨天的系統(tǒng)上,以支持明天的需求7.7 軟件再工程,7.7.1 軟件再工程,在軟件復用中,有問題是與現(xiàn)有系統(tǒng)密切相關(guān)的,例如:,現(xiàn)有軟件系統(tǒng)如何適應當前技術(shù)的發(fā)展及需求的變化,采用更易于理解的、適應變化的、可復用的系統(tǒng)軟件構(gòu)架并提煉出可復用的軟件構(gòu)件?,現(xiàn)存大量的遺產(chǎn)軟件系統(tǒng)(Legacy Software)由于技術(shù)的發(fā)展,正逐漸退出使用,如何對這些系統(tǒng)進行挖掘、整理,得到有用的軟件構(gòu)件?,已有的軟件構(gòu)件隨著時間的流逝會逐漸變得不可使用,如何對它們進行維護,以延長其生命期,充分利用這些可復用構(gòu)件?,軟件再工程,(Software Reengineering)正是解決上述問題的主要技術(shù)手段。
軟件再工程,是一類軟件工程活動,,是一個工程過程,它將,逆向工程,、,重構(gòu),和,正向工程,組合起來,將現(xiàn)存系統(tǒng)重新構(gòu)造為新的形式再工程的基礎(chǔ)是系統(tǒng)理解,包括對運行系統(tǒng)、源代碼、設(shè)計、分析、文檔等的全面理解但在很多情況下,由于各類文檔的丟失,只能對源代碼進行理解,即程序理解它能夠使我們:,增進對軟件的理解;,提高軟件自身的可維護性、復用性或演化性.,軟件再工程過程模型,代碼重構(gòu),數(shù)據(jù)重構(gòu),正向工程,庫存目錄分析,文檔重構(gòu),逆向工程,軟件再工程相關(guān)術(shù)語間關(guān)系,信,息,庫,1類視圖:,非過程性描述、元描述,例:規(guī)格說明,再工程,3類視圖:,過程性描述,例:源程序,再工程,2類視圖:,偽過程性描述、結(jié)構(gòu)性描述,例:DFD、PDL,A2類視圖:,分析,再工程,逆向工程,設(shè)計恢復,再工程,逆向工程,設(shè)計恢復,再工程,A1類視圖:,分析,A3類視圖:,分析,分解,綜合生,成視圖,軟件視圖,Software view,有關(guān)軟件的一種表達形式或報告;,視圖分類:,1類視圖:,2類視圖:,3類視圖:,A,類視圖:,伴隨上述各類的分析視圖;,A1,類視圖是對1類視圖的分析信息;,A2,類視圖是有關(guān)2類視圖的分析信息;,A3,類視圖是由3類視圖得到。
軟件視圖示例,信息庫,視圖編輯器,DFD,視圖編輯器,Petri網(wǎng),視圖編輯器,ERA圖,視圖編輯器,跟蹤矩陣,X,X,X,Req1 Req2,Prog1,Prog2,Prog3,視圖編輯器,程序結(jié)構(gòu)圖,視圖編輯器,流程圖,視圖編輯器,規(guī)格說明,再工程信息庫及其產(chǎn)品,軟件文檔,分析結(jié)果,信息庫,設(shè)計成果,規(guī)格說明,各種圖,度量值,分析、分解器,源程序或其模板,(進入點),源程序,自動進行再工程的過程,軟件,軟件的,新視圖,語法分析器,語義分析器,視圖合成器,信息庫,其他,產(chǎn)品,經(jīng)過再工程,過程可獲得,的信息,格式,圖形,文檔,度量值,邏輯,報告,7.7.2 庫存目錄分析,仔細分析庫存目錄,按照業(yè)務(wù)重要程度、壽命、當前可維護性、預期的修改次數(shù)等標準,把庫中的應用系統(tǒng)排序,從中選出再工程的候選者,然后明智地分配再工程所需要的資源開發(fā)和維護者不應等待用戶的維護申請,可先選擇以下類型程序作為預防性維護對象:,(1)預計若干年內(nèi)將繼續(xù)使用的程序,(2)當今正成功使用的程序,(3)最近的將來要進行大修改和完善的,程序,7.7.3 文檔重構(gòu),(1)保持現(xiàn)狀,(2)針對系統(tǒng)中當前正在修改的那些部分建立完整文檔,(3)如果某應用系統(tǒng)是完成業(yè)務(wù)工作的關(guān)鍵,而且必須重構(gòu)全部文檔,則仍然應該設(shè)法把文檔工作減少到必需的最小量。
7.7.4 逆向工程,逆向工程(反推工程reverse engineering),從現(xiàn)有軟件恢復設(shè)計信息(有用的維護信息),非結(jié)構(gòu)化、無文檔,的源代碼或目標代碼,設(shè)計的,恢復過程,軟件的全部文檔,逆向工程恢復信息的級別:,(1)實現(xiàn)級,:,程序的抽象語法,樹、符號表等信息,(2)結(jié)構(gòu)級:,反映程序分量之間,相互依賴關(guān)系的信,息,如調(diào)用圖、結(jié),構(gòu)圖等.,(3)功能級:,反映程序段功能和,段間關(guān)系的信息,(4)領(lǐng)域級,:,反映程序分量與應,用領(lǐng)域概念間對應,關(guān)系的信息,抽,象,級,別,低,高,信息的抽象級別越高,它與代碼距,離越遠,通,過逆向工程,恢復的難度,越大,自動,工具支持的,可能性變小,逆向工程,源程序,目標代碼,反匯編、反編譯,程序分析技術(shù),:程序結(jié)構(gòu)分析工具,程序功能分析工具,源程序,概要設(shè)計,詳細設(shè)計,概要設(shè)計,需求分析,7.7.5 正向工程,正向工程也稱為革新或者改造,這項活動不僅從現(xiàn)有程序中恢復設(shè)計信息,而且使用該信息去改變或者重構(gòu)現(xiàn)有系統(tǒng),以提高整體質(zhì)量正向工程應用軟件工程原理、概念、技術(shù)和方法來重新開發(fā)某個現(xiàn)有的應用系統(tǒng)在大多數(shù)情況下,被再工程的軟件不僅能構(gòu)重新實現(xiàn)現(xiàn)有系統(tǒng)的功能,而且加入了新功能和提高了整體性能。
7.7.6 代碼重構(gòu),重構(gòu)可疑模塊的代碼,首先,用重構(gòu)工具分析源代碼,標注出需要重構(gòu)的代碼,然后,自動重構(gòu)有問題的代碼;,最后,復審和測試生成的重構(gòu)代碼7.7.7 數(shù)據(jù)重構(gòu),發(fā)生在較低抽象層次上,是一種全范圍內(nèi)的再工程活動在大多數(shù)情況下,數(shù)據(jù)重構(gòu)始于逆向工程活動,分解當前使用的數(shù)據(jù)體系結(jié)構(gòu),必要時定義數(shù)據(jù)模型,標識數(shù)據(jù)對象和屬性,并且從軟件質(zhì)量的角度復審現(xiàn)存的數(shù)據(jù)結(jié)構(gòu)7.,7,.3 為什么要實施軟件再工程,再工程可幫助降低軟件演化風險,再工程可幫助補償軟件投資,再工程可使得軟件易于進一步變更,再工程有廣闊市場,再工程擴大了CASE工具集,再工程是推動自動軟件維護的動力,第八章 軟件項目管理,估算軟件規(guī)模,工作量估算,進度計劃,人員組織,質(zhì)量保證,軟件配置管理,能力成熟度模型,8.1 估算軟件規(guī)模,1、代碼行技術(shù),L=,6,a+4m+b,由多名有經(jīng)驗的軟件工程師分別作出估計每個人都估計程序的最小規(guī)模a,最大規(guī)模b和最可能的規(guī)模mLOC,KLOC,2、功能點技術(shù),(1)信息域特性,輸入項數(shù):用戶向軟件輸入的項數(shù),這些輸入給軟件提供面向應用的數(shù)據(jù);,輸出項數(shù):軟件向用戶輸出的項數(shù),它們向用戶提供面向應用的信息;,查詢數(shù):查詢就是一次聯(lián)機輸入,它導致軟件以聯(lián)機輸出方式產(chǎn)生某種即時響應;,主文件數(shù):邏輯主文件的數(shù)目;,外部接口數(shù):機器可讀的全部接口的數(shù)量,用這些接口把信息傳送給另一個系統(tǒng)。
2)估算功能點的步驟,A、計算未調(diào)整的功能點數(shù)UFP,B、計算技術(shù)復雜性因子TCP,TCF=0.65+0.01DI,其中,DI是14種技術(shù)因素對軟件規(guī)模的綜合影響程度C、計算功能點數(shù)FP,FP=UFPTCF,8.2 工作量估算,靜態(tài)單變量模型,動態(tài)多變量模型,COCOMO2模型,8.3 進度計劃,估算開發(fā)時間,Gantt圖,工程網(wǎng)絡(luò),估算工程進度,關(guān)鍵路徑,機動時間,8.4 人員組織,民主制程序員組,主程序員組,現(xiàn)代程序員組,圖 Putnam _ Norden 曲線,高,低,計劃,需求分析,初步設(shè)計,詳細設(shè)計,編碼,單元測試,整體測試,功能測試,管理人員,高級技術(shù)人員,初級技術(shù)人員,8.5 質(zhì)量保證,軟件質(zhì)量,軟件與明確地和隱含地定義的需求相一致的程序定義強調(diào)了三個要點:,(1)軟件需求是度量軟件質(zhì)量的基礎(chǔ),與需求不一致就是質(zhì)量不高,(2)指定的開發(fā)標準定義了一組指導軟件開發(fā)的準則,如果沒有遵守這些準則,幾乎肯定會導致軟件質(zhì)量不高,(3)通常,有一組沒有顯式描述的需求,如果軟件滿足明確描述的需求,卻不滿足隱含的需求,那么軟件的質(zhì)量仍然是值得懷疑的產(chǎn)品運行,產(chǎn)品,轉(zhuǎn)移,產(chǎn)品修改,可理解性,可維修性,靈活性,可測試性,可移植性,可再用性,互運行性,正確性 完整性,健壯性 可用性,效率 風險,軟件質(zhì)量因素與產(chǎn)品活動的關(guān)系,軟件質(zhì)量保證措施,SQA的措施主要有:,基于非執(zhí)行的測試(復審或者評審),基于執(zhí)行的測試,程序正確性證明,8.6 軟件配置管理,軟件配置。