Revision with unchanged content. As software systems grow older, their maintenance costs increase and reengineering often becomes necessary to keep a system valuable and to enable its further evolution. Object-oriented software systems are relatively young, yet the need to reengineer them arises. The Object-oriented programming paradigm implies a different approach to reengineering as for programs written in a procedural language. This book presents a methodology on how to tackle object-oriented software reengineering in practice. Adequate techniques and tools are introduced within an organizational framework and applied to real world ticket sales client written in Java. Based on the results of the system analysis, options on how to proceed are discussed and a plan for the restructuring of the system is presented. This book is of use for IT professionals who need a overview and hands on knowledge about object-oriented sofware reengineering. It is also a valuable case study for eduactional purposes since it shows how various theoretical reengineering aspects are applied in practice.