I'm currently looking at a major J2EE project, over a period of 3 years, with 6 analysts and a dozen programmers. The analysts are responsible for creating business models/specifications and application requirements. During this period, parts of the system will go into production and be extended along the way. So there will be some release while analysis and development continues (1.0, 1.1, 2.0,...)
The analysts will develop an overall domain model, and describe use cases and features.
A list of features will be specified to be implemented in version 1.0 of the application.
Suppose there is only one model which is equal to the implementation at all times (TogetherJ approach). Also suppose version 1.0 is currently under development, while the analysts already start analyzing features for version 1.1. Of course these new features can not be added to the same model, for some reasons:
- these new features will not be released in version 1.0
- the developers can not afford analysts creating classes which can not be implemented as such
- the analysts probably don't recognize their models anymore, after the designers/programmers have reshuffled them
During development, it must however also be possible for the analysts to specify changes/updates/improvements to these requirements that do need to be added to version 1.0. These updates need to be reflected later in the specifications for version 1.1 and so on.
How do others manage this refinement of models from analysis to design and implementation?
Is there only one model, meaning that the analysis model is the same as the design model and the implementation model?
Or does each phase have it's own models, which need to be kept synchronized?