Chapter 7, What is Agile Design, focuses on what goes wrong with software and the Design Smells (different than refactoring code smells) associated with rotting software:
- Rigidity - System is hard to change.
- Fragility - Changes causes system to break easily and require other changes.
- Immobility - Difficult to entangle components that can be reused in other systems.
- Viscosity - Doing things right is harder than doing things wrong.
- Needless Complexity - System contains infrastructure that has no direct benefit.
- Needless Repetition - Repeated structures that should have a single abstraction.
- Opacity - Code is hard to understand.
This chapter was a really good summary of how not to create an application and the author takes you through two examples of creating a simple application. One way is the way that causes software rot and has the design smells as mentioned above. The other (agile) way, is sensitive to the design smells above without overthinking the problem.
This is a great chapter that really takes us into a series of principals of object-oriented development that I am really excited about. Check out UncleBob's article on these principles here, which I will also go into detail in later chapters.
So far, the book gets a big thumbs up.