Continuous refinement is a guiding principle of an iterative software development process. We continuously refine our understanding of the system behavior and codify that in the various artifacts we produce, eventually resulting in the most important artifact: the actual code that implements the application. As we've described in this chapter, this process applies specifically to the use-case technique. At this next level of specificity, the use case also provides a degree of structure and rigor that assists us in refining and recording our increasingly detailed understanding of system behavior. That is yet another benefit of this particular technique.