Project plan
Every software engineering project needs a written development plan. There are many potential components of such a plan, and the plan will evolve over the course of the project. For CS 5150, your initial plan will likely run about 10 pages. It should include the following sections:
- Name of project (should be descriptive, yet succinct; no “code names”).
- Client name and affiliation.
- List of team members (including NetIDs), identifying point of contact and any specialized team roles (if any).
- Description of task to be undertaken, including preliminary requirements analysis and final deliverables.
- Preliminary architecture. What existing systems will you interface with? Will your work be largely self-contained (e.g. a plugin component or service), or will it extensively modify existing code? Are there known technical requirements? (e.g. deployment infrastructure, existing frameworks)
- Development methodology and outline plan, showing schedule of principal activities, milestones, and deliverables.
- Coordination plan. How will you provide visibility to the client? How will the team communicate and conduct regular planning and reviews? How will requirements, risks, and issues be tracked?
- Risk analysis. What could go wrong, and what is your plan to reduce, mitigate, monitor, and respond?
- (For external projects) Discussion of business considerations, including assignment of copyright.
- Feasibility analysis. What are the constraints affecting the project? (e.g. time, budget) Are the requirements likely to be met within these constraints (i.e., does your schedule close), given the risks? Should the project go ahead?
- You are allowed to recommend that a project not proceed if your analysis suggests that it is not likely to be feasible. But try to work with your client to reduce scope if your analysis trends that way.
The following sections are typically found in professional project plans but are not expected in CS 5150 teams’ initial plans, as we will not have covered the relevant topics in lecture yet):
- Development process / quality plan. Beyond the high-level development methodology, this would include requirements imposed on the source code, including style guides, static analysis, peer review, test coverage, and branch management. Some of these will be dictated by the course.
- Dependability, safety, and security plans. If you have non-functional requirements in these areas, you will write such a plan after we have covered the relevant material.
For reference, here are some initial plans from past CS 5150 projects (published with their authors’ permission). They are very different in style and address an older set of section requirements, but each is an effective report.