Limit search to available items
Author Demeyer, Serge.

Title Object-Oriented Reengineering Patterns / Serge Demeyer, St├ęphane Ducasse, Oscar Nierstrasz
Published Minneapolis Open Textbook Library 2008
Online access available from:
Open Textbook Library    View Resource Record  


Description 1 online resource
Series Open textbook library
Open Textbook Library
Contents I Introduction -- Chapter 1: Reengineering Patterns -- 1.1 Why do we Reengineer? -- 1.2 The Reengineering Lifecycle -- 1.3 Reengineering Patterns -- 1.4 The Form of a Reengineering Pattern -- 1.5 A Map of Reengineering Patterns -- II Reverse Engineering -- Chapter 2: Setting Direction -- 2.1 Agree on Maxims -- 2.2 Appoint a Navigator -- 2.3 Speak to the Round Table -- 2.4 Most Valuable First -- 2.5 Fix Problems, Not Symptoms -- 2.6 If It Ain't Broke, Don't Fix It -- 2.7 Keep It Simple -- Chapter 3: First Contact -- 3.1 Chat with the Maintainers -- 3.2 Read all the Code in One Hour -- 3.3 Skim the Documentation -- 3.4 Interview During Demo -- 3.5 Do a Mock Installation -- Chapter 4: Initial Understanding -- 4.1 Analyze the Persistent Data -- 4.2 Speculate about Design -- 4.3 Study the Exceptional Entities -- Chapter 5: Detailed Model Capture -- 5.1 Tie Code and Questions -- 5.2 Refactor to Understand -- 5.3 Step Through the Execution -- 5.4 Look for the Contracts -- 5.5 Learn from the Past -- III Reengineering -- Chapter 6: Tests: Your Life Insurance! -- 6.1 Write Tests to Enable Evolution -- 6.2 Grow Your Test Base Incrementally -- 6.3 Use a Testing Framework -- 6.4 Test the Interface, Not the Implementation -- 6.5 Record Business Rules as Tests -- 6.6 Write Tests to Understand -- Chapter 7: Migration Strategies -- 7.1 Involve the Users -- 7.2 Build Confidence -- 7.3 Migrate Systems Incrementally -- 7.4 Prototype the Target Solution -- 7.5 Always Have a Running Version -- 7.6 Regression Test After Every Change -- 7.7 Make a Bridge to the New Town -- 7.8 Present the Right Interface -- 7.9 Distinguish Public from Published Inteface -- 7.10 Deprecate Obsolete Interfaces -- 7.11 Conserve Familiarity -- 7.12 Use Profiler Before Optimizing -- Chapter 8: Detecting Duplicated Code -- 8.1 Compare Code Mechanically -- 8.2 Visualize Code as Dotplots -- Chapter 9: Redistribute Responsibilities -- 9.1 Move Behavior Close to Data -- 9.2 Eliminate Navigation Code -- 9.3 Split Up God Class -- Chapter 10: Transform Conditionals to Polymorphism -- 10.1 Transform Self Type Checks -- 10.2 Transform Client Type Checks -- 10.3 Factor out State -- 10.4 Factor Out Strategy -- 10.5 Introduce Null Object -- 10.6 Transform Conditionals into Registration
Summary The documentation is missing or obsolete, and the original developers have departed. Your team has limited understanding of the system, and unit tests are missing for many, if not all, of the components. When you fix a bug in one place, another bug pops up somewhere else in the system. Long rebuild times make any change difficult. All of these are signs of software that is close to the breaking point. Many systems can be upgraded or simply thrown away if they no longer serve their purpose. Legacy software, however, is crucial for operations and needs to be continually available and upgraded. How can you reduce the complexity of a legacy system sufficiently so that it can continue to be used and adapted at acceptable cost? Based on the authors' industrial experiences, this book is a guide on how to reverse engineer legacy systems to understand their problems, and then reengineer those systems to meet new demands. Patterns are used to clarify and explain the process of understanding large code bases, hence transforming them to meet new requirements. The key insight is that the right design and organization of your system is not something that can be evident from the initial requirements alone, but rather as a consequence of understanding how these requirements evolve
Notes Mode of access: World Wide Web
Subject Computer science -- Textbooks.
Genre/Form Textbooks.
Form Electronic book
Author Demeyer, Serge, author
Ducasse, St├ęphane, author
Nierstrasz, Oscar Marius, 1957- author
Open Textbook Library, distributor