邱 翔 張 莉
(北京航空航天大學 計算機學院,北京100191)
軟件系統功能的多樣化和復雜化使軟件魯棒性問題已經成為業界關注的主要問題之一.異常處理作為提高系統魯棒性的重要手段,它將系統在異常情況下的正常控制流與處理該異常的控制流進行分離.但遺憾的是,軟件系統的復雜性使異??刂屏鞯姆治鲈桨l的困難.在復雜的軟件系統中,異常處理機制與編程語言緊密耦合[1].因此,本文關注的是Java語言的異常處理機制.對于Java語言而言,一旦拋出異常,程序會搜索匹配該異常的第1個catch塊進行異常處理.由拋出異常的方法到最終確定包含該異常類型處理塊的方法所途經的調用鏈就是該異常類型的異常傳播路徑.由于異常傳播的全局性[2]、弱邊界性[3],增加了軟件維護過程的難度和成本.
以往研究者對異常傳播現象進行分析時,關注的是對單一傳播路徑的抽取和異常拋出源點的確定,而在異常傳播過程中存在多條異常傳播路徑都包含的方法節點,本文稱為紐帶節點,這類方法節點讓軟件系統中的異常傳播路徑不再是孤立的鏈式結構.異常傳播路徑通過這些紐帶節點進行關聯,出現了異常傳播的網絡化現象[2].
隨著系統科學的發展,復雜網絡已作為理解和抽象復雜系統的有效手段.通過對軟件元素及其之間的關系進行網絡化描述,并由此分析軟件拓撲結構的特性及其演化規律,為軟件的開發和維護過程提供……