




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
軟件維護與演化軟件工程目錄軟件維護與演化軟件維護的形式和挑戰(zhàn)軟件演化的概念及法則軟件邏輯老化邏輯老化的表現(xiàn)和原因解決邏輯老化的方法軟件維護的過程與技術(shù)軟件維護技術(shù)軟件維護過程物理設(shè)備的維護問題物理設(shè)備在使用過程中會出現(xiàn)故障,需要進行維護軟件是否也會出故障?為什么?出了故障怎么辦?會出現(xiàn)故障1.1軟件也需要進行維護出現(xiàn)故障,需要糾正潛在的缺陷產(chǎn)生軟件錯誤,需糾正需求變化,需要升級軟件需求發(fā)生變化,需要增強功能環(huán)境變化,需要適應(yīng)需要改變軟件以在新的環(huán)境中運行系統(tǒng)脆弱,需要改善軟件在持續(xù)維護過程中變得脆弱,需要改善軟件設(shè)計1.2何為軟件維護軟件在交付使用后,由于應(yīng)用需求和環(huán)境變化以及自身問題,對軟件系統(tǒng)進行改造和調(diào)整的過程軟件自身問題,發(fā)現(xiàn)了一些新的缺陷運行環(huán)境變化,從WindowsLinux軟件需求變化,需要增加一些新的需求小米便簽軟件的維護設(shè)置便簽訪問密碼解除便簽訪問密碼根據(jù)密碼訪問便簽改善程序代碼質(zhì)量1.3軟件維護的形式糾正性維護完善性維護適應(yīng)性維護預(yù)防性維護1.糾正性維護何為糾正性維護糾正軟件中的缺陷和錯誤起因用戶在使用軟件過程中一旦發(fā)現(xiàn)缺陷,他們會向開發(fā)人員提出糾正性維護的請求目的診斷和改正軟件系統(tǒng)中潛藏的缺陷為什么軟件在使用時還有缺陷存在?2.適應(yīng)性維護何為適應(yīng)性維護?對軟件進行改造以便適應(yīng)新的運行環(huán)境和平臺起因軟件運行于一定的環(huán)境(硬件、OS、網(wǎng)絡(luò)等)之上,運行環(huán)境發(fā)展很快,出現(xiàn)了變化目的適應(yīng)環(huán)境變化和發(fā)展而對軟件進行維護軟件環(huán)境為什么會變化?為什么軟件需要適應(yīng)環(huán)境的變化?3.改善性維護何為改善性維護?對軟件進行改造以增加新的功能、修改已有的功能起因在軟件系統(tǒng)運行期間,用戶可能要求增加新的功能、建議修改已有功能或提出其他改進意見目的滿足用戶日益增長的各種需求而對軟件系統(tǒng)進行的改善和補充小米便簽維護中是否涉及完善性維護?做了哪些完善性工作4.預(yù)防性維護何為預(yù)防性維護?對軟件結(jié)構(gòu)進行改造以便提高軟件的可靠性和可維護性等起因為進一步改善軟件系統(tǒng)的可維護性和可靠性,為以后的軟件改進奠定基礎(chǔ)的維護活動目的獲取軟件結(jié)構(gòu),重新改善軟件結(jié)構(gòu)經(jīng)過維護軟件會變得脆弱嗎?如何防止它變的脆弱?1.4軟件維護的特點同步性軟件維護需要與軟件使用同步進行,維護與使用同步進行周期長軟件維護周期會更長,一些軟件會服役十幾年甚至幾十年的時間費用高維護成本高達總成本80%以上,維護費用是開發(fā)費用的3倍以上難度大需充分理解待維護軟件的架構(gòu)、設(shè)計和代碼。尤其是在軟件設(shè)計文檔缺失的情況下,這一問題更為突出。50%-90%的時間被消耗在理解程序上。1.5軟件維護工程師負責(zé)完成軟件維護的各項工作,具備多方面的能力和素質(zhì)閱讀理解能力,閱讀待維護軟件的相關(guān)文檔和代碼,以此來掌握軟件的架構(gòu)和相關(guān)設(shè)計需要有非常強的掌握新技術(shù)能力,以此來指導(dǎo)軟件維護洞察和分析能力,根據(jù)軟件缺陷的癥狀快速定位缺陷所在代碼的可能位置,能夠針對增強的軟件需求明確要對軟件的哪些部分進行重設(shè)計溝通能力,與客戶、用戶和軟件工程師進行溝通的能力1.6軟件演化及其特點軟件演化是指針對軟件的大規(guī)模功能增強和結(jié)構(gòu)調(diào)整,以實現(xiàn)變化的軟件需求,或者提高軟件系統(tǒng)的質(zhì)量功能增強粒度大,軟件演化針對的是粗粒度需求變化及功能增強主動應(yīng)對變更,基于對用戶需求及其變化的理解,綜合考慮軟件各項功能實現(xiàn)的時間投入及開發(fā)成本,規(guī)劃軟件系統(tǒng)的整體演化,并以此開展功能增強等維護活動持續(xù)性,預(yù)先規(guī)劃好軟件演化的路線圖,完成當前軟件演化工作后,軟件維護團隊隨后將連續(xù)性的進入到另一項軟件演化工作引發(fā)版本變化,每一次演化結(jié)束后通常會產(chǎn)生一個新的軟件版本軟件演化vs軟件維護概念功能增強粒度應(yīng)對變化方式持續(xù)性或間隔性版本變化軟件演化粗粒度主動持續(xù)性是軟件維護細粒度被動間隔性不一定1.7軟件演化法則(1/2)大型閉源軟件的演化特點和規(guī)律持續(xù)變化法則除非系統(tǒng)不斷地被修改以滿足用戶需求,否則系統(tǒng)將變得越來越不實用復(fù)雜性增加法則除非有額外工作來明顯降低軟件復(fù)雜性,否則軟件系統(tǒng)會變得越來越復(fù)雜自我調(diào)節(jié)法則演化過程中軟件產(chǎn)品和過程的測量遵循正態(tài)分布,演化過程自我可調(diào)節(jié)組織穩(wěn)定性守恒法則在整個生命周期中,產(chǎn)生一個新版本所需的平均額外工作量幾乎是相同的軟件演化法則(2/2)熟悉度守恒法則在一個不斷演化的系統(tǒng)中,平均增量增長幾乎相同功能持續(xù)增長法則在軟件的生命周期中,軟件功能必須持續(xù)增加,否則用戶的滿意度會降低質(zhì)量衰減法則軟件的質(zhì)量會隨代碼的不斷變更而呈現(xiàn)出整體逐漸下降的趨勢。如果沒有嚴格的維護和適應(yīng)性調(diào)整,使得軟件適應(yīng)運行環(huán)境的變化,軟件的質(zhì)量必然會隨著軟件演化而逐漸下降反饋系統(tǒng)法則系統(tǒng)的演化過程包括多回路的活動和多層次的反饋。軟件工程師必須識別這些復(fù)雜的交互,以持續(xù)演化現(xiàn)有系統(tǒng),提供更多的功能和更高的質(zhì)量目錄軟件維護與演化軟件維護的形式和挑戰(zhàn)軟件演化的概念及法則軟件邏輯老化邏輯老化的表現(xiàn)和原因解決邏輯老化的方法軟件維護的過程與技術(shù)軟件維護技術(shù)軟件維護過程2.1何為軟件邏輯老化軟件在維護和演化的過程中出現(xiàn)的用戶滿意度降低、質(zhì)量逐漸下降、變更成本不斷上升這樣一種現(xiàn)象這些現(xiàn)象發(fā)生在邏輯層面,而非發(fā)生在物理層面時間軟件質(zhì)量及用戶滿意度維護活動軟件重構(gòu)軟件會出現(xiàn)物理老化現(xiàn)象嗎?2.2軟件邏輯老化的現(xiàn)象(1/2)質(zhì)量下降在對軟件進行完善性維護的同時,盡管增加了新的功能,但也會帶來對軟件架構(gòu)的破壞,從而引入新的軟件問題,使得整個軟件不易于維護,軟件架構(gòu)變得脆弱變更成本增加隨著軟件規(guī)模的不斷增大、軟件質(zhì)量的下降,對軟件進行變更的成本也會隨之不斷增加需要閱讀更多的文檔和代碼才能理解待維護的軟件系統(tǒng)軟件系統(tǒng)架構(gòu)的脆弱性意味著軟件維護工程師不得不對軟件進行更多的“縫縫補補”才能實現(xiàn)新的軟件功能軟件邏輯老化的現(xiàn)象(2/2)用戶滿意度降低隨著對軟件認識不斷深入,用戶會逐步發(fā)現(xiàn)軟件中存在的缺陷用戶對軟件的滿意度會逐步降低解決軟件邏輯老化的方法軟件邏輯老化是一種必然的現(xiàn)象,不可避免如果對軟件邏輯老化的現(xiàn)象置之不理,必然會導(dǎo)致軟件“不可救藥”,最終走向死亡解決軟件邏輯老化的有效方法之一就是對軟件進行重構(gòu),重構(gòu)意味著給軟件注入“強心針”,使得軟件在一定程度上“返老還童”2.3軟件邏輯老化的原因缺乏變更當外部環(huán)境發(fā)生變化時,軟件也應(yīng)隨之發(fā)生變化,進行必要的變更,否則軟件就會進入老化如果軟件運行的操作系統(tǒng)已經(jīng)發(fā)生了變化,軟件就需要進行適應(yīng)性的維護,否則就會被運行環(huán)境拋棄如果軟件不能適應(yīng)外部環(huán)境變化,缺乏必要變更,就會加速老化負面變更軟件變更不總是積極和正面的,有時候它會帶來負面和消極影響通過變更引入了新的、更為嚴重的缺陷;破壞了軟件結(jié)構(gòu),使得軟件架構(gòu)更為脆弱負面變更會破壞軟件的結(jié)構(gòu)和質(zhì)量,進而增加維護的成本和難度2.4軟件邏輯老化的表現(xiàn)設(shè)計惡化,是指軟件維護過程中由于設(shè)計變更而導(dǎo)致的軟件可變性顯著降低的現(xiàn)象設(shè)計僵化,軟件不易于變更,模塊之間存在連帶效應(yīng)設(shè)計脆弱,一些“小規(guī)?!钡能浖兏鼤怼按蠓秶钡能浖兏?,甚至?xí)茐能浖到y(tǒng)的整體架構(gòu)模塊間緊耦合,軟件內(nèi)部的多個模塊之間關(guān)系過于密切,軟件鐵板一塊,難以對其中的模塊進行變更晦澀的軟件設(shè)計,軟件設(shè)計方案不易于理解設(shè)計惡化會導(dǎo)致軟件出錯率上升,軟件變更成本增高目錄軟件維護與演化軟件維護的形式和挑戰(zhàn)軟件演化的概念及法則軟件邏輯老化邏輯老化的表現(xiàn)和原因解決邏輯老化的方法軟件維護的過程與技術(shù)軟件維護技術(shù)軟件維護過程3.1代碼重組在不改變軟件功能的前提下,對程序代碼進行重新組織,使得重組后的代碼具有更好的可維護性,能夠有效支持對代碼的變更程序代碼代碼讀入程序代碼內(nèi)部表示代碼轉(zhuǎn)換易于維護的代碼3.2逆向工程基于低抽象層次軟件制品,通過對其進行理解和分析,產(chǎn)生高抽象層次的軟件制品對程序代碼進行逆向分析,產(chǎn)生與代碼相一致的設(shè)計模型和文檔基于對程序代碼和設(shè)計模型的理解,逆向分析出軟件需求典型應(yīng)用場景分析已有程序,尋求比源代碼更高層次的抽象形式(如設(shè)計甚至需求)3.3設(shè)計重構(gòu)如果軟件設(shè)計文檔缺失,軟件文檔與程序代碼不一致、或者軟件設(shè)計的內(nèi)容不詳實,那么軟件維護工程師可以采用設(shè)計重構(gòu)的手段來獲得軟件設(shè)計方面的文檔信息通過讀入程序代碼,理解和和分析代碼中的變量使用、模塊內(nèi)部的封裝、模塊之間的調(diào)用或消息傳遞、程序的控制路徑等方面的信息,產(chǎn)生用自然語言或圖形化信息所描述的軟件設(shè)計文檔是逆向工程的一種具體表現(xiàn)形式3.4再工程通過分析和變更軟件架構(gòu),實現(xiàn)更高質(zhì)量軟件系統(tǒng)的過程再工程既包括逆向工程也包括正向工程逆向工程程序代碼軟件設(shè)計模型正向工程易于維護代碼設(shè)計改造新的軟件設(shè)計模型逆向工程、重組、重構(gòu)和再工程示意圖需求模型設(shè)計模型1實現(xiàn)模型設(shè)計模型n文檔和設(shè)計重構(gòu)更高質(zhì)量的軟件設(shè)計逆向工程正向工程實現(xiàn)模型再工程代碼重組高層次抽象低層次抽象3.5軟件維護過程分析軟件配置維護申請研讀代碼研讀文檔無文檔僅代碼有文檔和代碼規(guī)劃方案修改設(shè)計更改代碼規(guī)劃方案測試并交付使用評估和分析讀文檔和讀代碼哪個容易?確保文檔和代碼的一致性3.6軟件維護成本維護成本不斷增加70年代:35%-40%80年代:60%90年代:75%如今:數(shù)據(jù)更高,80%軟件維護工作量涉及二方面助動性:用于理解代碼功能,結(jié)構(gòu)特征以及性能約束生產(chǎn)性:用于分析和評價、修改設(shè)計和代碼模型表明如果沒有好的軟件開發(fā)方法或者軟件開發(fā)人員不能參與維護,那么軟件維護工作量會指數(shù)上升軟件維護工作量M=P+K*e(c-d)P=生產(chǎn)性工作量K=經(jīng)驗常數(shù)C=復(fù)雜度(設(shè)計好壞和文檔完整程度)D=對欲維護軟件的熟悉程度3.7軟件維護需要解決的問題(1/3)人員的問題軟件維護工程師認為軟件維護缺乏成就感,從而影響他們的工作激情和投入軟件維護工程師得不到足夠的關(guān)注和重視,從而影響對他們的支持和幫助軟件開發(fā)工程師流動大,軟件維護工程師無法得到軟件開發(fā)工程師的幫助軟件開發(fā)工程師不愿意幫助軟件維護工程師如何解決軟件維護的人員問題?軟件維護需要解決的問題(2/3)軟件制品的問題待維護的軟件不能提供軟件文檔待維護的軟件不能提供源程序代碼待維護軟件的源代碼可讀性和可理解性差,如缺乏必要的注釋等待維護軟件的文檔可讀性和可理解性差,如啰嗦、語言不簡練等待維護軟件的文檔不完整、不詳實,漏掉重要內(nèi)容,缺少細節(jié)待維護軟件的文檔與其代碼不一致,影響對軟件的理解和維護要讀懂待維護軟件的文檔和代碼非常困難軟件制品的版本混亂,無法獲得合適版本的軟件制品為了有效支持維護,軟件開發(fā)工程中應(yīng)注意哪些事項?軟件維護需要解決的問題(3/3)維護副作用的問題代碼副作用,如修改或者刪除程序、修改或者刪除語句標號、修改邏輯符號等等。為此,軟件維護工程師在變更代碼時要非常慎重,切忌隨意的修改代碼數(shù)據(jù)副作用,因修改信息結(jié)構(gòu)而帶來的不良后果,如局部和全局數(shù)據(jù)的再定義,記錄或者文件格式的再定義等文檔和模型副作用,軟件維護工程師在對程序代碼進行修改的同時,必須同步修改相關(guān)的模型和文檔,以確保模型與代碼之間、文檔與模型之間、文檔與代碼之間相互一致維護副作用問題會帶來什么樣的后果?3.8軟件的可維護性在軟件開發(fā)時就要考慮到將來的維護問題要有前瞻性,預(yù)測到變化和問題設(shè)計和實現(xiàn)出具有可維護性的軟件軟件被理解、改正、調(diào)整和改進的程度軟件的質(zhì)量直接決定了軟件是否易于維護在開發(fā)軟件時就需要考慮到未來的軟件維護問題影響軟件可維護性的因素軟件開發(fā)方法(結(jié)構(gòu)化、OO)軟件文檔是否齊全文檔結(jié)構(gòu)是否標準化軟件是否易于擴展軟件結(jié)構(gòu)是否清晰易于理解是否采用標準的程序設(shè)計語言程序代碼是否易于理解必須在設(shè)計時考慮軟件可維護性問題3.9保證軟件可維護性的復(fù)審需求分析的復(fù)審對將來可能修改和改進的部分加注釋,對軟件的可移植性加以討論,并考慮可能影響軟件維護的系統(tǒng)界面設(shè)計階段的復(fù)審從易于維護和提高設(shè)計總體質(zhì)量的角度全面評審數(shù)據(jù)設(shè)計、總體結(jié)構(gòu)設(shè)計、過程設(shè)計和人機界面設(shè)計編碼階段的復(fù)審強調(diào)編碼風(fēng)格和內(nèi)部文檔階段性測試必要的預(yù)防性維護軟件維護活動完成之際也要進行復(fù)審在開發(fā)軟件早期階段的質(zhì)量保證中考慮到可維護性問題拓展閱讀軟件演化與維護:實踐者的研究方法,PriyadarshiTripathy,KshirasagarNaik著,張志祥,毛曉光,謝茜譯,電子工業(yè)出版社,2019該書主要介紹了軟件演化及維護發(fā)展的最新實踐方法。書中每章對于軟件演化的特定主題給出了清晰的解釋和分析,作者從基本概念講起,深入詳細地講解了軟件演化的各個重要方面。該書包含了以下方面的內(nèi)容:軟件演化規(guī)律及控制手段、演化和維護模型、遷移遺留信息系統(tǒng)的再工程技術(shù)和過程、影響分析和變更傳播技術(shù)、程序理解和重構(gòu)、重用和領(lǐng)域工程模型。該書是軟件工程師、信息技術(shù)專業(yè)人員和
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T/SHPTA 089-2024額定電壓66 kV-500 kV交聯(lián)聚乙烯絕緣電纜用半導(dǎo)電屏蔽料
- T/SHNA 0010-2024失能患者體位管理
- T/CECS 10403-2024一體化泵閘
- 邵家窯溝林地承包合同4篇
- 施工單位勞務(wù)合同4篇
- T/CCOA 58-2023山核桃油
- 服裝時尚行業(yè)發(fā)展趨勢與創(chuàng)新實踐
- 校車運營合同書6篇
- 有產(chǎn)權(quán)水果店鋪出租合同5篇
- 培訓(xùn)學(xué)校學(xué)生入學(xué)協(xié)議書2篇
- 2025年蘇州市中考英語二模模擬試題(六)(含解析)
- 2025年耐熱玻璃器皿行業(yè)深度研究報告
- 護理影像學(xué)試題及答案總結(jié)
- DB65-T 4623-2022 分散式風(fēng)電接入電力系統(tǒng)管理規(guī)范
- 水電使用合同協(xié)議書
- 退休終止勞動合同協(xié)議書
- 中國獸藥典三部 2020年版
- NB/T 11646-2024井工煤礦采空區(qū)自然發(fā)火監(jiān)測預(yù)警技術(shù)規(guī)范
- 實驗室質(zhì)量管理體系與試題
- 嬰幼兒期的食物過敏識別與管理考核試題及答案
- 江蘇省宿遷市2024年中考道德與法治真題試卷含解析答案
評論
0/150
提交評論