Jon Kern has written an excellent overview of what you need to accomplish in the Inception phase of a project in order to set the proper foundation for all future work.
Here is a high-level summary of his article.
To set the proper foundation, you need to have the following defined:
- Prioritized list of features for Release 1 (at a minimum)
- Domain model
- Technical architecture
- Automated build process
- Coding guidelines
- Version control system
- Issue tracking system
- Requirements management system
- Collaborative workspace (e.g., blogs, wiki)
Jon properly notes that there are two critical pieces to the Inception process: the domain workshop and the technical workshop.
The requirements-gathering process takes place in the Domain Workshop. The Technical Workshop is used to ensure the architecture and development techniques are defined. At the end of this process, we will have the necessary ingredients to form a Release Plan and can start the iterative development in earnest.
In the Domain Workshop, the artifacts we should typically end up with include:
- Business definition
- Problem statement
- Vision document
- Simple cost/benefit check
- Feature set
- Basic description
- Roughly prioritized
- Domain model (initial cut)
- "Non-functional" requirements
In the Technical Workshop, the artifacts we should typically end up with include:
- Architecture vision
- Things we chose not to do (and why)
- Object models
- Sequence diagrams
- Deployment diagram
If all of these goals are accomplished, the team will be able to move forward quickly with a list of features in hand, the technical architecture determined, a set of coding guidelines, a set of automated build scripts and a domain model from which to start coding.
This is certainly a recipe for success!!!