||It is rare in many engineering disciplines, particularly hardware industry, to upgrade an existing product with new hardware components. However, software industry is very different. Software maintenance and extension can only be done by modify the existing code. Different from other industries, software′s maintenance and evolution consume most of the development costs in the long run. If a software product is difficult to maintain or expand, it will gradually fail to deal with new requirements within reasonable time and cost. Finally, the product will be replaced by new ones.|
Although the software’s maintainability and expandability is very important, it is always hard to get it right once for all in the design and implementation. In many application domains, requirements are continuously changing. Modifications to the source code gradually introduce couplings, errors, and bad code smells. The effort and time needed to modify the code can be increased dramatically. The worst maintenance situation is that a programmer needs to understand the code of the entire system before he can make any changes.
In this thesis, we propose a new concept to describe the coupling relation of a software system. This modeling approach is called Coupling Relation Representation (CRR). Using this CRR, we can modeling the ripple effect of code refactoring. It can be used for communicating the strategies of code refactoring. A case study is explained to show how CRR can be used in code refactoring analysis.
|| E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, 1998.|
 Y.-P. Cheng, J.-F. Chen, M.-C. Chiu, N.-W. Lai, and C.-C. Tseng, “xDIVA: a debugging visualization system with composable visualization metaphors,” in Companion to the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications, Nashville, TN, USA, 2008, pp. 807-810.
 S. Letovsky, “Cognitive processes in program comprehension,” in Papers presented at the first workshop on empirical studies of programmers on Empirical studies of programmers, Washington, D.C., USA, 1986, pp. 58-79.
 D. C. Littman, J. Pinto, S. Letovsky, and E. Soloway, “Mental models and software maintenance,” J. Syst. Softw., vol. 7, no. 4, pp. 341-355, 1987.
 A. von Mayrhauser, and A. M. Vans, "From code comprehension model to tool capabilities." pp. 469-473.
 T. J. McCabe, “A Complexity Measure,” Software Engineering, IEEE Transactions on, vol. SE-2, no. 4, pp. 308-320, 1976.
 L. C. Briand, Y. Labiche, and L. O′Sullivan, "Impact analysis and change management of UML models." pp. 256-265.
 D. Lucanin, and I. Fabek, "A visual programming language for drawing and executing flowcharts." pp. 1679-1684.
 N. Moha, Gue, x, he, x, Y. neuc, L. Duchien, and A. Le Meur, “DECOR: A Method for the Specification and Detection of Code and Design Smells,” Software Engineering, IEEE Transactions on, vol. 36, no. 1, pp. 20-36, 2010.
 "Qt Documentation," http://doc.qt.io/qtinstallerframework/index.html.
 H.-W. Liou, “Support Visual Debugging in Electronic Design Automation Software by xDIVA.,” 2013.