Development Plan - JiratchayaPhinyodom/ku-polls GitHub Wiki
The Software Development Plan (aka Project Plan) describes
- what you're going to do
- how you're going to do it
- how long it will take
- resources you need
- milestones and other ways to measure progress
The application will be implemented in 3 iterations. Each iteration has a duration of 1 week.
Timeline
Iteration | Features |
---|---|
1 | Display a list of poll questions |
Visitor can select a poll and submit vote for a choice. His vote is added to the total. | |
Visitor can see total votes for each choice in a poll | |
A Poll has a start date & is visible only on and after this date | |
Administrator can add or modify poll questions and choices | |
2 | A Poll has an end date. No voting allowed after the end date. |
Question has methods for is_published and can_vote with unit tests. |
|
Navigation: user can return to polls list screen from any page or view results w/o voting. | |
Navigation: user can go directly to poll results page from the polls index. | |
If user enters URL of a poll not yet published then redirect him to polls list page. | |
Separate sensitive configuration data from code. | |
Automate running of unit tests. | |
Add code coverage to measure how well unit tests cover our code. | |
Improve formatting of poll detail and poll results page. Layout things in columns. | |
3 | User must authenticate (login) in order to vote. |
Unauthenticated users cannot vote, and poll detail page has a link to login page. | |
Each user has only one vote per poll question. | |
A user can change his previous vote while a poll is open. | |
Provide instructions for installing and running application. | |
Provide sample data for polls, and instructions how to import it. |
Milestones
Iteration | Milestone |
---|---|
1 | Application displays a list of active polls and allows voting on each poll. |
Application shows total "votes" for each choice in a poll. Results are persistent across restart. | |
2 | Ending date of a poll is enforced. |
User can easily return to polls list from any page. Does not need to use browser "Back" button. | |
If a URL of unpublished poll is entered, user is redirected to polls list page. | |
3 | Users can login and logout. |
Logged-in users can vote, but allowed only 1 vote per poll. User can change his/her vote on a poll. |
Software Process
- Iterative and Incremental Development with 1 week iterations
- Iteration plan with goal, milestones, and tasks updated before start of each iteration
- Project board and Issue Tracker are kept up-to-date and show actual status
- Github Flow to manage development using branches
- Unit testing and code review of all code
- Retrospective at the end of each week. A summary of findings is added to each Iteration Plan.
Technology and Tools
- Python - programming language for server-side web application.
- Django web framework used for the application.
- Python extensions as needed, such as
python-decouple
to externalize configuration. - Github as source code repository, issue tracking, and automatic testing.
- Github Wiki for project documents.
- Github Project for backlog, tasks, and work management.
- Pydev IDE (Eclipse) for coding.
- Add your own technology & tools. You should update this during the project if you add/change your tools.
Open Issues
- How to respond to Pull Requests on an individual project?
- Do we have time to add deployment to a cloud service?