ABSTRACT
Refactoring is the process of transforming the internal structure of existing code while keeping the integrity of the code's functional requirements. Refactoring is proven to increase program maintainability, flexibility, and understandability and is recognized as a best practice in the software development community. However, with the exception of courses or lectures on extreme programming, refactoring is overlooked in the computer science curriculum. This paper presents the fourth lesson of an innovative pedagogical approach to teaching refactoring on the college level. This lesson covers the creation of well formed object-oriented methods including characteristics for evaluating such methods. Through this hands-on approach, building well formed object-oriented methods through refactoring can be better understood and integrated into the computer science curriculum.
- Beck, K. Extreme Programming Explained: Embrace Change. Addison-Wesley, Reading, MA, 2000. Google ScholarDigital Library
- Bellin, D., Tyagi, M., and Tyler M. Object-oriented metrics: an overview. In Proceedings of the 1994 Conference of the Centre for Advanced Studies on Collaborative Research, IBM Press, 1994, 4. Google ScholarDigital Library
- Binder, R. V. Testing Object-Oriented Software: Models, Patterns, and Tools. Addison-Wesley, Boston, MA, 2000. Google ScholarDigital Library
- Brooks, R. Using a behavioral theory of program comprehension in software engineering. In Proceedings of the 3rd International Conference on Software Engineering (Atlanta, GA, May 10-12, 1978). International Conference on Software Engineering. IEEE Press, Piscataway, NJ, 196--201. Google ScholarDigital Library
- DeMarco, T. Structured Analysis and System Specification. Yourdon Press, New York, NY, 1978. Google ScholarDigital Library
- El Emam, K., Benlarbi, S., Goel, N., and Rai, S. N. The confounding effect of class size on the validity of object-oriented metrics. IEEE Trans. Softw. Eng. 27, 7 (Jul. 2001), 630--650. Google ScholarDigital Library
- Fowler, M., Beck, K., Brant, J., Opdyke, W., and Roberts, D. Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston, MA, 1999. Google ScholarDigital Library
- Gellenbeck, E. M. and Cook, C. R. Does signaling help professional programmers read and understand computer programs? Empirical Studies of Programmers-IV, Ablex Inc., Norwood, NJ, 1991, 82--98.Google Scholar
- Hudli, R. V., Hoskins, C. L., and Hudli, A. V. Software metrics for object-oriented designs. In Proceedings of the IEEE International Conference on Computer Design: VLSI in Computers and Processors (ICCD'94) (October 10-12 1994). 1994, 492--495. Google ScholarDigital Library
- Kang, B., and Bieman, J. M. A quantitative framework for software restructuring. Journal of Software Maintenance: Research and Practice, 11, 4 (July/August 1999), 245--284. Google ScholarDigital Library
- Lorenz, M. and Kidd, J. Object-Oriented Software Metrics. Prentice-Hall, Englewood Cliffs, NJ, 1994. Google ScholarDigital Library
- McCabe. T. A software complexity measure. IEEE Trans. on Softw. Eng., 2, 4 (December 1976), 308--320.Google Scholar
- Nurvitadhi, E., Leung, W. W., and Cook, C. Do class comments aid Java program understanding? In Proceedings of the 33rd ASEE/IEEE Frontiers in Education Conference (Boulder, CO, November 5-8, 2003). 2003, 1--5.Google ScholarCross Ref
- Page-Jones, M. The Practical Guide to Structured Systems Design. Yourdon Press, New York, NY, 1980. Google ScholarDigital Library
- Pritchett, W. W. An object-oriented metrics suite for Ada 95. In Proceedings of the 2001 Annual ACM SigAda International Conference on Ada (SIGAda '01) (Bloomington, MN, September 30 - October 4, 2001). ACM Press, New York, NY, 117--126. Google ScholarDigital Library
- Raskin, J. Comments are more important than code. Queue 3, 2 (March 2005), 64--ff. Google ScholarDigital Library
- Rosenberg, J. Some misconceptions about lines of code. In Proceedings of the 4th International Symposium on Software Metrics (November 05 - 07, 1997). METRICS. IEEE Computer Society, Washington, DC, 137--142. Google ScholarDigital Library
- Rosenberg, L. and Hyatt, L. Software quality metrics for object-oriented system environments. SATC, NASA Technical Report SATC-TR-95-1001, 1995.Google Scholar
- Smith, S., Stoecklin, S., and Mullins, J. Taking cohesion into the classroom. Journal of Computing Sciences in Colleges, 20, 2 (Dec. 2004), 296--303. Google ScholarDigital Library
- Smith, S., Stoecklin, S., and Serino, C. An innovative approach to teaching refactoring. In Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education (SIGCSE '06) (Houston, Texas, March 3-5, 2006). ACM Press, New York, NY, 349--353. Google ScholarDigital Library
- Tegarden, D., Sheetz, S., and Monarchi, D. Effectiveness of traditional software metrics for object-oriented systems. Twenty-Fifth Hawaiian International Conference on System Sciences (HICSS-25), Jan. 1992.Google ScholarCross Ref
- Yourdon, E. and Constantine, L. Structured Design. Yourdon Press, New York, NY, 1978.Google Scholar
Index Terms
- Teaching students to build well formed object-oriented methods through refactoring
Recommendations
An innovative approach to teaching refactoring
SIGCSE '06: Proceedings of the 37th SIGCSE technical symposium on Computer science educationRefactoring is the process of transforming the internal structure of existing code while keeping the integrity of the code's functional requirements. Refactoring is proven to increase program maintainability, flexibility, and understandability and is ...
Teaching students to build well formed object-oriented methods through refactoring
Refactoring is the process of transforming the internal structure of existing code while keeping the integrity of the code's functional requirements. Refactoring is proven to increase program maintainability, flexibility, and understandability and is ...
An innovative approach to teaching refactoring
Refactoring is the process of transforming the internal structure of existing code while keeping the integrity of the code's functional requirements. Refactoring is proven to increase program maintainability, flexibility, and understandability and is ...
Comments