【摘 要】隨著我國社會水平的提升,經濟步伐的推進,我國的軟件事業也在這個過程中得到了較大程度的發展。其中,軟件所具有的可維護性是保證軟件自身質量的重要因素,需要我們能夠對其引起充分的重視。在本文中,將就基于極限編程的軟件可維護性進行一定的研究與分析。
【關鍵詞】極限編程;維護性分析
0.引言
在軟件整個的生存周期中,對于軟件所進行的維護活動通常都要占據很大的比重,這也正是顯示出了軟件維護活動對于軟件的重要性。而在我們對于軟件維護所開展的研究工作中,專家為了盡可能的降低維護軟件的工作量,也陸續提出了很多對于軟件維護模型的新方式以及新看法,但是對這部分方式總體看來,都僅僅是建立在較為傳統的開發過程基礎上的,并沒有從根本上對軟件維護的成本進行降低。而對于極限編程來說,其從對于不同需求的變化入手,更加強調軟件開發測試以及具有構造簡單的代碼,能夠更好的對傳統軟件開發中的特質進行改變,從而使軟件維護工作相對以往來說具有很多地方能夠進行改進,能夠大大的降低軟件成本。
1.極限編程中的軟件維護
軟件維護是指軟件在生存期的運行和維護階段,在其相應的運行環境中被使用、監視,以期獲得滿意的性能,同時在需要時對產品進行修改,以改正問題或對變化了的需求做出響應。對于軟件的維護活動來說,其主要可以分為以下四類:即糾正性維護、適應性維護、完善性維護以及預防性維護。對于傳統的軟件開發模型來說,其同極限編程模型相比來說在軟件維護領域存在著一定的不足,其能夠通過很多種方式對傳統方式的維護死角進行改善,從而使軟件能夠具有更好的可維護性。
(1)從我們對軟件進行維護的工作量中可以看出,對于維護完善性所需要做的工作占據著最大的比重。其中,保證維護所具有的完善性是根據客戶自身的需求變化而變化的,所以,我們在軟件開發階段能否完全按照客戶的需求來辦、能否在整個開發的過程中都符合客戶的需求將直接對整個軟件整體的完善性產生影響。而對于傳統的軟件開發方式來說,其首先就需要軟件的分析員對于客戶的不同需求進行廣泛的收集,并將其通過一定的整理形成軟件的規格說明書來作為后續開發的重要依據。而在軟件開發的后期階段中,也經常會因為客戶自身需求的變化以及一定錯誤的存在而需要再一次的對系統進行修改,這種情況的存在就會對整個軟件的開發成本造成較大的影響。
而對于極限編程方法來說,其并不是需要在軟件開發初期就能夠對客戶自身的需求進行準確的掌握,而是應當通過客戶對于自身需求的表達來不斷的獲取以及豐富,并對其進行代價方面的評估。而對于客戶來說,則能夠根據軟件開發者對提供的評估報告來對軟件的開發優先級進行評估以及確定。而在軟件需求實施的階段中,軟件開發者也需要根據所給出的不同評估情況以及軟件開發過程中的細節問題不斷的向客戶進行詢問,并將客戶實時的想法完整的體現在軟件的代碼中。而當軟件每一次得到迭代完畢之后,就可以開展一次小型的發布會,并由客戶對于所發布的產品進行全面的測試以及驗收,并安排軟件的開發人員根據客戶不同的反饋意見正式開始軟件下一周期的開發直至整個項目得到完成。而在上述的軟件開發周期中,其對于軟件維護所需要花費的成本是非常低的,對于客戶來說只需要在不同軟件迭代的階段中不斷的更換故事,并將程序開發者對其進行再一次的評估就可以了,在這種極限編程中,其更加強調的是客戶同軟件開發者之間的溝通,從而能夠更好的將自身的需求分析深入到軟件的開發過稱改制中,并大大的降低我們對于軟件維護所需要花費的成本。
(2)在軟件糾正性的維護活動中,我們除了可能由于對于客戶自身的需求捕獲存在偏差而使軟件出現缺陷之外,對于軟件開展測試的不充分也可能是造成這種情況的一個原因。當軟件的維護人員對于軟件所存在的缺陷部位進行修補之后,就很可能使該模塊的其它部位產生影響,并可能因此而引發一系列的問題。而在我們對軟件進行傳統開發的過程中,我們對軟件所開展的測試情況通常都是在代碼全部編寫完成之后再進行的,而在這個節點中對代碼進行修改往往使存在較大風險的。而隨著這部分程序自身所具有的復雜性的不斷增長,也會使這種波及效應所存在的范圍得到進一步的加大,這種個情況的存在就很可能因為程序開發者避免過多、過于繁瑣的測試而將其進行推遲,從而使bug成本得到不斷的放大。
在極限編程的過程中,我們對于測試驅動開發實踐要求在程序編碼正式運行之前就需要對測試代碼進行編寫,即將測試先行的方式,對于這種方式而言,其就是在程序開發者對于軟件需要具有的功能進行明確之后,首先就要需要思考通過何種方式對該功能進行測試,并隨之完成該部位測試代碼的編寫。而經過這種方式的不斷循環以及功能的不斷開發,直至軟件全部的功能都得到完成為止。在這部分單元測試環節中,也正是整個軟件同開發人員之間聯系最為密切的一個環節,其通常由軟件開發者對其統一進行編寫以及執行,并能夠通過自動化的框架工具對整個軟件的測試集以及測試效果進行反饋。同時,由于軟件的單元測試環節通常是在軟件出現錯誤之后才開始進行,所以我們僅僅通過單元測試對錯誤進行發現,并對其進行修正所需要付出的代價是很小的,所以這種方式能夠在保證軟件代碼得到及時測試的同時也能夠使代碼自身的可測試性得到了較大的增強。而與此同時我們在其中融入的自動化測試工具應用,也會使很多軟件bug會在實際測試的過程中得到了較好的排除,從而大大降低了我們對于軟件糾正性維護的成本。
(3)對代碼結構進行改善也是我們開展軟件維護的一項重要工作,而隨著軟件在不斷開發的過程中,其系統自身得到了不斷演進,也會隨之出現很多重復的代碼,而當系統中所編寫的類過大、需求出現變化時,系統之前所具有代碼的設計方式則很難在其中加入新的功能,或者在我們加入新功能的同時使源代碼自身的復雜度得到增加,此時,就更需要奧哦我們開展具有預防性的維護工作。對于傳統方式來說,我們通常都會將這部分工作防止在后期維護的階段中,且等到軟件系統出現退化問題時才對代碼的結構進行改善,而此時我們也能夠看到我們對代碼所開展的維護工作是較為困難的,而由于我們在對軟件代碼進行編寫之前就已經具有了單元測試代碼,這就會使我們對于軟件的重構建立起了一張保護網,從而使軟件開發人員在開發的過程中也不需要擔心重構會給整個程序帶來意想不到的錯誤而樂意去重構.重構實踐活動促使系統的代碼始終保持良好的狀態,提高了軟件的可理解性和可測試性。
2.結束語
總的來說,極限編程方式的出現,能夠較好的提升我們小型團隊軟件開發的效率,對于軟件的維護方式來說也是一種全新的改變。對此,就需要我們在實際軟件維護的過程中能夠注重方式,從而獲得更好的維護效果。
【參考文獻】
[1]劉萬遠,張衛東,王偉.基于層次分析法的軟件可維護性評價[J].四川兵工學報,2011(07):96-98.
[2]張仕學,丁曉明.基于粗糙集理論的軟件項目質量管理研究[J].西南大學學報(自然科學版),2011(03):118-121.
[3]馬翔,張繼福,楊海峰.基于區分矩陣的啟發式屬性約簡算法[J].計算機應用,2010(08):1999-2002.
[4]王李進,胡欣欣.基于支持向量機的面向對象軟件可維護性預測[J].北華大學學報(自然科學版),2010(03):282-285.