Monday, December 21, 2009

Section 20.3.  Adopting at Different Phases of a Project










20.3. Adopting at Different Phases of a Project


You might not have the luxury of adopting aspect orientation on a completely new project. Your project might be an enhancement to an existing system. In general, when you adopt aspect orientation, you might be in any of the project phases enumerated in Figure 20-1.



Figure 20-1. Phases of software development







  1. Planning Stage. If you are developing a new system, you have a clean slate. You can easily apply the entire approach in this bookfrom requirements to code as well as in the development of the architecture and the rest of the system.

  2. Early Elaboration. If you have already completed some initial iterations, you likely have a number of use cases working and several infrastructure services in place. You can definitely apply use-case slices on those areas that you have yet to develop. For those infrastructure services that you have already developed, consider whether it is worthwhile to redesign them as use-case slices.

  3. Late Elaboration. If you have a firm architecture in place, you are unlikely to make any revisions or changes unless there are significant productivity gains. Consider the possibility of using code templates and pointcut parameterization to help you incorporate infrastructure services and platform specifics into the system. AspectJ, as a programming technique, also provides the means for you to determine whether dependencies between layers and packages are violated.

  4. Construction. If you are nearing the completion of your project, you are unlikely to make significant changes. But during this time, there is heavy emphasis on testing, tracing, and debugging. You can apply our methods to testingidentifying test cases from use cases, designing and implementing test slices, and so on.

  5. Enhancements. If you have already delivered the system, your users might have some enhancement requests, or you might want to customize the system for another group of users, possibly at a different site. Such revisions can be mapped into either new use cases or extension use cases. Implementing them using aspect technology makes such revisions composable, and you can easily select the ones needed for a particular end-user group.










    No comments: