In this chapter we'll review some of the themes of this book, examining the values and goals we should keep in mind as we design an application. Architecture and implementation should always be undertaken with clear goals in mind.
In Chapter 1, we identified the following central themes:
The importance of object orientation
The primacy of business requirements
The importance of empirical process
The importance of testability
Let's discuss the remaining themes in turn. These themes are interrelated, so most can't be discussed in isolation.
We'll focus most heavily on productivity, as it brings up many architectural and other issues, and is often neglected.
Productivity should be a central concern in application development. It's only one part of a picture that must include code maintainability, reliability, performance, and scalability, but it's a very important part. Productive teams are cost-effective teams, producing maximum value for their stake-holders.
Many J2EE developers equate calls for enhanced productivity with laziness. This is perhaps partly a manifestation of the "complexity industry" we'll discuss in Chapter 4, and partly the result of instinctive faith in the adage of "no pain, no gain." In reality, it is not lazy to want to be able to do things quickly and easily, especially if ...