Table of Contents

 

Copyright

Brief Table of Contents

Table of Contents

Preface

Acknowledgments

About this Book

1. Getting started

Chapter 1. Understanding the challenges of legacy projects

1.1. Definition of a legacy project

1.1.1. Characteristics of legacy projects

1.1.2. Exceptions to the rule

1.2. Legacy code

1.2.1. Untested, untestable code

1.2.2. Inflexible code

1.2.3. Code encumbered by technical debt

1.3. Legacy infrastructure

1.3.1. Development environment

1.3.2. Outdated dependencies

1.3.3. Heterogeneous environments

1.4. Legacy culture

1.4.1. Fear of change

1.4.2. Knowledge silos

1.5. Summary

Chapter 2. Finding your starting point

2.1. Overcoming feelings of fear and frustration

2.1.1. Fear

2.1.2. Frustration

2.2. Gathering useful data about your software

2.2.1. Bugs and coding standard violations

2.2.2. Performance

2.2.3. Error counts

2.2.4. Timing common tasks

2.2.5. Commonly used files

2.2.6. Measure everything you can

2.3. Inspecting your codebase using FindBugs, PMD, and Checkstyle

2.3.1. Running FindBugs in your IDE

2.3.2. Handling false positives

2.3.3. PMD and Checkstyle

2.4. Continuous inspection using Jenkins

2.4.1. Continuous integration and continuous inspection

2.4.2. Installing and setting up Jenkins

2.4.3. Using Jenkins to build and inspect code

2.4.5. SonarQube