Project Plan - TAGCH/ku-polls GitHub Wiki
Brief Description
This project will produce a web application for conducting and managing polls. The application will allow users to view, vote on, and see poll results. It will include features such as vote tracking, result visualization, and authentication. For detailed requirements and vision, refer to the Requirements & Vision documents.
Software Process
- Process: Iterative & Incremental
- Iterations Duration: Each iteration lasts one week.
- Management of Work Products: Use Git and GitHub Flow for version control, task management, and issue tracking.
Development Process
Development will use an iterative process with 4 iterations. Each iteration has a length of one week, starting on Monday and ending on Sunday.
Project Documents
Project documents and technical documents are stored in the project wiki on Github.
Project documents include:
- Project Plan
- Requirements
- Vision and Scope statement
- Iteration Plan for each Iteration
- Summary of Retrospectives
- Software design documents
Tasks and other work for each iteration are recorded in a Github Project attached to the repository. The Github Project contains a Task Board for each iteration.
Github issue tracker is used to record defects and other issues.
Quality Assurance Plan
- Testing: Unit tests will be used to ensure the functionality of individual components, including methods for publication status and voting permissions.
- Review: Code reviews will be conducted at the end of each iteration to ensure code quality and adherence to requirements.
Workflow
Each iteration starts on Monday and ends on Sunday.
- At the start of each iteration, the Vision, Project Plan, and Requirements are reviewed and updated.
- A goal for the iteration and at least 1 milestone are defined and written in the Iteration Plan.
- Major work for the iteration is defined and recorded in the Iteration Plan.
- The application design is reviewed and revised (if needed) for new features to be added.
- The Iteration Plan, including the goal, milestone(s), and major work, is added to the wiki.
- Tasks are defined and written in the Project Backlog on Github.
- A Github Task Board for this iteration was created to track work in this iteration.
- Github Flow is used to manage code.
- For each iteration, a new branch is created from
main
and work is committed to that branch. - At the end of the iteration, after the work is tested, a pull request is opened to initiate a final review.
- When the work is satisfactory, the branch is merged into
main
and the Pull Request is closed. Note: Github can do both of these in one click.
- For each iteration, a new branch is created from
- Defects and other issues are recorded in a Github Issue Tracker.
- Note: Github can automatically add Tasks to the issue tracker, too.
Timeline
Iteration | Features |
---|---|
1 | - Display a list of poll questions. - Link each poll question to a detailed page with choices. - Enable voting and display vote totals. - Implement poll visibility based on the start date. - Save poll data in a database. - Admin interface for adding or changing polls. |
2 | - Add end date to polls and prevent voting after it. - Implement is_published and can_vote methods with unit tests. - Improve formatting of detail and results pages. - Redirect to poll list if accessing unpublished polls. - Separate sensitive configuration data from code. - Implement automatic unit tests and code coverage. |
3 | - Implement authentication for voting (login required). - Allow users to change their vote during the voting period. - Show previously selected choice if a user revisits a poll. - Add login/logout links to the polls index page. |
4 | - Create data fixtures for initial users and polls data. - Write installation and “How to Run” instructions. - Review and clean up code. |
Milestones
Iteration | Milestones |
---|---|
1 | - Display active polls and allow voting. - Show total votes and ensure persistence across restarts. |
2 | - Display poll end dates. - Allow result viewing without voting. - Enable navigation back to the poll list. |
3 | - Implement user login, logout, and signup. - Ensure one vote per poll and display previous votes. - Improve UI graphics. |
4 | - Provide initial data fixtures and installation instructions. - Final review and code cleanup. |
Technology and Tools
- Programming Language: Python
- Web Framework: Django
- Version Control: Git and GitHub for source code repository, issue tracking, and automatic testing.
- Documentation: GitHub Wiki for project documents.
- Project Management: GitHub Project for backlog, task planning, and iteration work management.
- Code Editor: Visual studio code.
- Testing Framework:
unittest
for unit testing. - Database: Django's built-in database system (or specify another if applicable).
- Web Server: Django's built-in development server (or specify another if applicable).