Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Software engineering (6th ed.)
Software engineering (6th ed.)
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
Experiences in Teaching Software Evolution and Program Comprehension
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
When Theory Meets Practice: Enriching the CS Curriculum Through Industrial Case Studies
CSEET '02 Proceedings of the 15th Conference on Software Engineering Education and Training
Software Engineering (7th Edition)
Software Engineering (7th Edition)
The LAN-simulation: A Refactoring Teaching Example
IWPSE '05 Proceedings of the Eighth International Workshop on Principles of Software Evolution
Estimating the Costs of a Reengineering Project
WCRE '05 Proceedings of the 12th Working Conference on Reverse Engineering
Improving software projects course work by enhanced management
SEPADS'08 Proceedings of the 7th WSEAS International Conference on Software Engineering, Parallel and Distributed Systems
Enhancing software projects course work by advanced management
WSEAS Transactions on Information Science and Applications
Characteristics of multiple-component defects and architectural hotspots: a large system case study
Empirical Software Engineering
Hi-index | 0.00 |
Software engineering curricula emphasize developing new software systems. Little attention is given to how to change and modernize existing systems, i.e., the theory and practice of software maintenance and reengineering. This paper presents the author's experience in teaching software reengineering in a masters-level course at University of Leicester, UK. It presents the course objectives, outline and the lessons learned. The main lessons are: first, there is a big shortage of educational materials for teaching software reengineering. Second, selecting the suitable materials (that balance theory and practice) and the right tool(s) for the level of students and depth of coverage required is a difficult task. Third, teaching reengineering using toy exercises and assignments does not convey the practical aspects of the subject. While, teaching with real, even small size, exercises and assignments, is almost infeasible. Getting the balance right requires careful consideration and experimentation. Finally, students understand and appreciate this topic much more if they have previous industrial experience and when they are presented with real industrial case studies.