- What's Covered in This Chapter
- Design Approach and Artifact Choices
- Free-Form Architecture Diagram
- From User Stories to Design
- Exploring Classes Using CRC Cards
- Application Flow Map (Homegrown Artifact)
- UML Class Diagram
- UML Package Diagram
- Directory Structure
- Sample File Names
- End-to-End Development Steps
- Acceptance Tests
- Other Considerations
- Recommended Resources
In this chapter, we covered a lot of material and accomplished the following objectives we established at the beginning of the chapter:
- Develop a free-form architecture diagram
- Explore objects using CRC cards
- Assemble an artifact I like to call an application flow map
- Develop class and package diagrams for Time Expression
- Establish our development directory structure and look at some sample filenames (we will create these in later chapters)
- Look at the steps we will follow in the upcoming chapters for end-to-end development of our screens
- Review a list of advanced concepts we will need to consider as our sample application evolves
At the beginning of the chapter, I promised you a diagram to show you how we got here and some of the artifacts we produced along the way. (Did you cheat and take a peak already?) Figure 3.8 shows this diagram. Of course, this also clearly shows that XP has artifacts at various levels—conceptual, physical, and even in implementation. Note that the lines shown in Figure 3.8 are unidirectional because this is how we developed these artifacts in the previous and in this chapter. However, in the real world, these would be bidirectional because there is input coming from one direction and feedback going back in the opposite direction.
Figure 3.8 Conceptual, physical, and implementation artifacts for Time Expression.
One parting thought on the subject of artifacts and documentation. Remember, that the database and code are the most important artifacts of all! I cannot emphasize this enough. The other artifacts we discussed in this book are merely ones you pick and choose, depending on your needs (these are not required). Furthermore, many of these optional artifacts could potentially be discarded after they have served their purpose, because most people don't update these anyway. However, code is always current because that is what the application for the customer is built with; the database can outlive all software programs written around it, so that should be considered the most important component of a system.
Speaking of database and code—now it is time to get our hands dirty and begin setting up our development environment using tools such as Ant and JUnit in the next chapters, so we can actually begin coding!