現在位置首頁 > 博碩士論文 > 詳目
  • 同意授權
論文中文名稱:利用AspectJ搭配測試案例曝露例外處理壞味道的影響 [以論文名稱查詢館藏系統]
論文英文名稱:Applying AspectJ and Test Cases to Expose the Impact of Exception Handling Bad Smells [以論文名稱查詢館藏系統]
院校名稱:臺北科技大學
學院名稱:電資學院
系所名稱:資訊工程系
畢業學年度:106
畢業學期:第二學期
出版年度:107
中文姓名:劉彥麟
英文姓名:Yen-Lin Liu
研究生學號:105598003
學位類別:碩士
語文別:中文
口試日期:2018/06/14
論文頁數:51
指導教授中文名:鄭有進;謝金雲
口試委員中文名:陳建村
中文關鍵詞:例外處理壞味道測試案例
英文關鍵詞:RobustaException handlingBad SmellAspectJTest cases
論文中文摘要:含有例外處理壞味道的程式碼,存在著降低軟體強健度的風險。Robusta 為一個以Java開發的程式碼靜態分析工具,能夠偵測Java程式中的例外處理壞味道。
為了讓Robusta能夠呈現壞味道對軟體的影響,本論文藉由測試搭配AspectJ來重現例外狀況。當測試執行到選定的程式碼時,便可透過AspectJ嵌入例外來重現含有例外處理壞味道的路徑,進而呈現壞味道對於軟體的影響。
我們並以JfreeChart、Tomighty兩個開源專案做實驗對象。結果顯示,Robusta針對壞味道特性產生的AspectJ程式碼和測試案例,可以呈現壞味道對程式碼帶來的影響,也驗證壞味道的存在確有降低軟體品質的風險。
論文英文摘要:Bad smells in exception handling code may decrease the robustness of a program. Robusta is a static analysis tool which has been shown to be very useful in detecting exception handling bad smells in Java programs.
The impact of a bad smell needs to be exposed so that we can know if it is a real bug. In this thesis, we propose a method for exposing the impact of a bad smell by using AspectJ, that is, to dynamically inject a code to make an exception be thrown at a desired place so that the effect of the exception to the program can be revealed.
In this study, an empirical study has also been conducted by applying the proposed method to two open source software - JFreeChart and Tomighty. The result shows the proposed method can successfully expose the impact of exception handling bad smells detected by Robusta.
論文目次:摘要 i
ABSTRACT ii
誌謝 iii
目錄 iv
表目錄 vii
圖目錄 viii
第一章 緒論 1
1.1研究背景與動機 1
1.2 研究目標 1
1.3 論文組織架構 2
第二章 背景知識與相關研究 3
2.1例外處理壞味道 3
2.1.1 Dummy Handler 3
2.1.2 Empty Catch Block 4
2.1.3 Nested Try Statement 5
2.1.4 Unprotected Main Program 6
2.1.5 Exception Thrown From Finally Block 7
2.1.6 Careless Cleanup 8
2.2 Robusta 8
2.3 AspectJ 9
2.3 Abstract Syntax Tree Node(AST Node) 10
第三章 研究方法 11
3.1曝露壞味道的方法 11
3.1.1 Dummy Handler 11
3.1.2 Empty Catch Block 12
3.1.3 Unprotected Main Program 13
3.1.4 Exception Thrown From Finally Block 14
3.1.5 Careless Cleanup 15
第四章 設計與實作 16
4.1 Dummy Handler Empty Catch Block 17
4.1.1 產生AspectJ、測試檔案的素材收集 17
4.1.2 實作Dummy Hander & Empty Catch Block搜集素材 18
4.1.3 分析測試搭配AspectJ與程式碼的互動 21
4.2 Unprotected Main Program 22
4.2.1產生AspectJ、測試檔案的素材收集 22
4.2.2實作Unprotected Main Program 23
4.2.3分析測試搭配AspectJ與程式碼的互動 26
4.3 Exception Thrown From Finally Block 27
4.3.1產生AspectJ、測試檔案的素材收集 27
4.3.2 實作Exception Thrown From Finally Block 29
4.3.3分析測試搭配AspectJ與程式碼的互動 32
4.4 Careless Cleanup 34
4.4.1產生AspectJ、測試檔案的素材收集 34
4.4.2實作Careless Cleanup 35
4.4.3分析測試搭配AspectJ與程式碼的互動 38
第五章 案例分析 40
5.1 Unprotected Main Program 案例分析 40
5.1.1偵測並分析Unprotected Main Program 40
5.1.2呈現Unprotected Main Program 對系統的影響 40
5.1.3消除Unprotected Main Program 42
5.2 Exception Thrown From Finally Block案例分析與實作 43
5.2.1偵測並分析Exception Thrown From Finally Block 43
5.2.2呈現Exception Thrown From Finally Block 造成的影響 43
5.2.3消除Exception Thrown From Finally Block 45
5.3 Dummy Handler案例分析與實作 46
5.3.1偵測並分析Dummy Handler 46
5.3.2呈現Dummy Handler 造成的影響 46
5.3.3消除Dummy Handler壞味道 48
第六章 結論與未來研究方向 49
6.1 結論 49
6.2 未來展望 49
參考文獻 50
論文參考文獻:[1]陳友倫,以Aspect揭露導因例外處理的程式缺陷,碩士論文,國立臺北科技大學資訊工程系碩士班,台北,2016.
[2]廖振傑,透過偵測及移除例外處理壞味道提升軟體強健度:以ezScrum為例,碩士論文,國立臺北科技大學資訊工程系碩士班,台北,2016.
[3]Robusta at Eclipse Markerplace, Availbale: https://Markerplace.eclipse.org/content/robusta-eclipse-plugin [Accessed: 2017-06-02].
[4]陳建村,爪哇例外處理:模型、重構、與樣式,博士論文,國立臺北科技大學機電科技研究所博士班,台北,2008
[5]Chien-Tsun Chen. 例外處理設計的逆襲. 悅知文化,2014
[6]AspectJ at Eclipse, Available: https://eclipse.org/aspectj/ [Accessed: 2017-06-02].
[7]Eclipse IMarker Document, Available: http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fcore%2Fresources%2FIMarker.html[Accessed: 2017-06-02].
[8]ASTVisitor Document, Available: https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FASTVisitor.html[Accessed: 2017-06-02].
[9]AST Method document, Available: https://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fjdt%2Fcore%2Fdom%2FAST.html[Accessed: 2017-06-02].
[10]Tomighty, Available: http://tomighty.org/ [Accessed: 2017-06-02].
[11]楊雅雯,利用Robusta消除例外處理壞味道,碩士論文,國立台北科技大學資訊工程系碩士班,台北,2018
[12]JFreeChart, Available: http://www.jfree.org/index.html [Accessed: 2017-06-02].
[13]Throwable document, Available: https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html [Accessed:2017-06-02].
[14]洪哲瑋,例外處理程式壞味道的自動化偵測與重構,碩士論文,國立臺北科技大學資訊工程系碩士班,台北,2009
論文全文使用權限:同意授權於2018-07-10起公開