- Sprint 1: October 26 - November 8
- Sprint 2: November 8 - November 22
- Sprint 3: November 22 - December 13
- Final Presentations: December 13th
- Final submission: December 16th
Activity | Deadline |
---|---|
User Stories & Requirements (issues) | by October 26th, 2022 at midnight |
Sprint 1 Planning | October 26th, 2022 at midnight |
Sprint 1 Stand-up meeting 1 | October 27th during class |
Sprint 1 Stand-up meeting 2 | November 1st during lab |
Sprint 1 Stand-up meeting 3 | November 3rd during class |
Sprint 1 Stand-up meeting 4 | On your own time (must be spread out between other stand-up meetings) |
Sprint 1 Stand-up meeting 5 | On your own time (must be spread out between other stand-up meetings) |
Sprint 1 Review | November 8th, 2022 at 2:30pm |
Sprint 1 Retrospective | November 8th, 2022 at 2:30pm |
----------------------------- | --------------------------------------------------------------------- |
Sprint 2 Planning | November 8th, 2022 at 4:20pm |
Sprint 2 Stand-up meeting 1 | November 10th during class |
Sprint 2 Stand-up meeting 2 | November 15th during lab |
Sprint 2 Stand-up meeting 3 | November 17th during class |
Sprint 2 Stand-up meeting 4 | On your own time (must be spread out between other stand-up meetings) |
Sprint 2 Stand-up meeting 5 | On your own time (must be spread out between other stand-up meetings) |
Sprint 2 Review | November 22nd, 2022 at 2:30pm |
Sprint 2 Retrospective | November 22nd, 2022 at 2:30pm |
----------------------------- | --------------------------------------------------------------------- |
Sprint 3 Planning | November 22nd, 2022 at 4:20pm |
Sprint 3 Stand-up meeting 1 | November 29th during lab |
Sprint 3 Stand-up meeting 2 | December 1st during class |
Sprint 3 Stand-up meeting 3 | December 6th during lab |
Sprint 3 Stand-up meeting 4 | December 9th during class |
Sprint 3 Stand-up meeting 5 | On your own time (must be spread out between other stand-up meetings) |
Sprint 3 Review | December 13th, 2022 at 11am |
Sprint 3 Retrospective | December 13th, 2022 at 11am |
Presentations | December 13th, 2022 at 2:30pm |
----------------------------- | --------------------------------------------------------------------- |
Final Submission | December 16th, 2022 at midnight |
In this long-term project, you will design, develop, and release at least one plugin for the SheetShuttle according to the requirements of the clients (faculty). To receive full points for this assignment, you must have a fully functional, tested, client-approved, documented, and released plugin by the project's final due date. To achieve this, you must work through multiple iterations with your team, utilizing GitHub issue tracker, creating multiple pull requests, and going through multiple review iterations (sprints) with our technical leaders and volunteer alumni reviewers. As part of this assignment, for each sprint, you are also required to answer all of the questions in each sprint's report file, located in the /writing
directory, furnishing evidence of your contributions to that sprint's effort towards completing the long-term software engineering project. Before the due date for this project assignment's each deliverable, please ensure that:
-
You are able use the GitHub flow model to collaboratively engineer, deliver, and evaluate a software product.
-
You acted as a scrum lead and are able to use a project board to manage a long-term software project effectively.
-
This GitHub repository contains a completed team report file for each sprint.
-
You participated in each sprint planning and all scrum meetings of each sprint.
-
You participated in each sprint review and sprint retrospective.
-
You completed all assigned tasks for each sprint, for example, you made significant contributions to your team's branch for each sprint, as evidenced by commits to the branch.
-
For each sprint, you made significant contributions towards your team's merge of the sprint feature branch to the main branch of your project using the GitHub Flow model. If this task was not accomplished by your team, provide a clear documentation of the problems that you have encountered.
Please note that if you took a role of a scrum lead, although you are expected to contribute to development, you are not expected to contribute to implementation as much as your development team since your main tasks include organizing meetings, making sure everyone is on track (help resolve issues as needed), checking in with your product owner (client) to keep them informed, and organizing project board with input from your team, and the chief scrum leads (TLs). Additionally, if you are a chief scrum lead, you will need to communicate with all scrum leads to ensure proper collaboration and avoidance of conflicts among the work done by all teams.
-
To practice organizing teams and team roles during a long-term software engineering project.
-
To experience a full project engineering process by creating a new tool, a plugin for SheetShuttle, based on client requirements.
-
To further practice scrum agile methodology in the long-term software engineer project.
-
To further experience planning, estimation, and implementation during a sprint.
-
To continue to learn how to use a GitHub board to manage a software project.
-
To continue to learn how to use GitHub and the GitHub Flow model, including Git branch naming conventions to support collaboration among a team of software engineers.
-
To continue to learn how to use Markdown to complete technical writing tasks.
-
To reflect on the process of software engineering to be able to continue improving professional and technical skills.
Throughout the completion of this software engineering project you must adhere to the code of conduct that we developed as part of a previous laboratory assignment. To report any violations of the code of conduct, please submit an anonymous form. Students who think that the software engineering team should revise some aspect of the code of conduct must use the GitHub issue tracker for that repository to suggest, discuss, and implement any required changes.
To facilitate collaboration, the class will be split into teams of four/five students each. Your team will be responsible for at least one plugin for the SheetShuttle.
Each team will be randomly assigned to the client. Collaborating with the client, teams will first need to design user stories, write out acceptance criteria for the user stories, and then work as a team to create requirements or tasks from these user stories as GitHub issues. Each team should create a repository for the team's plugin in the course's GitHub organization, create issues from the requirements of the project, and set up the project board that correctly includes the issues for the project.
The class will continue to work using agile software development and scrum. Throughout the rest of the semester you will participate in multiple about two-week-long sprints. During each sprint cycle, your team will conduct sprint planning selecting tasks to tackle during that sprint, stand-up, sprint review, and sprint retrospective meetings, guided by your scrum lead. Scrum lead will be selected by the team for each sprint, ensuring that each class member gets an opportunity to act as a lead. Team lead should also correctly manage the project board throughout the sprint. While your team may choose to conduct some meetings only within your team, your team may find it helpful to involve other teams or the instructor in certain meetings, such as sprint planning and sprint review. Please note that teams are expected to have to meet and work both inside and outside of class.
As you work on plugins for the SheetShuttle, you must use GitHub flow, adhere to the course code of conduct, and follow best practices in software engineering, software design, and software testing as discussed throughout the course. While you are encouraged to have discussions in person or through Discord, you must document important details that arise from these discussions, especially those about requirements, in the issue tracker for the plugin for SheetShuttle.
During sprint planning meetings, your team should engage in the following activities:
- Assess the quality of the requirements in the issue tracker and communicate with the client if the requirements are not complete, precise, non-conflicting, or verifiable.
- Select the requirements that will be completed during the sprint and assign tasks to specific team members in the GatorGrade issue tracker, making sure to divide labor equitably in a way that will enable all team members to complete all required individual contributions.
- Estimate the effort that will be required to complete each task to resolve the issue you decided to tackle.
- Communicate with other teams about the issue(s) you are tackling to coordinate efforts.
- Show the sprint backlog by moving selected requirement(s) into the In progress column of the SheetShuttle project.
During stand-up meetings, each team member should take one or two minutes to answer the following questions:
- What did I complete since the last stand-up?
- What will I work on until the next stand-up?
- Am I blocked by anything?
During sprint review meetings, your team should engage in the following activities:
- Demonstrate the work you completed during the sprint to the instructor.
- Demonstrate the work you complete during the sprint to other teams, as needed.
- Move completed requirements from the In progress column to the Done column of your plugin project.
During sprint retrospective meetings, your team should engage in the following activities:
- Discuss what went well during the sprint.
- Discuss what your team wants to do differently during the next sprint.
At the end of this long-term project, your team will prepare an 8-to-10-minute presentation to showcase your team's work on the plugin(s) for SheetShuttle. This presentation will be followed by a 5-minute question and answer (Q & A) session. Your presentation should include:
- Overview of Work: a high-level description of your team's plugin.
- Technical Details: technical details such as any notable dependencies or tools used and why your team chose them over other comparable tools, implementation challenge that your team faced and how you overcame it, or testing challenge that your team faced and how you overcame it.
- Demonstration: as relevant to the issue that each team takes up.
In this long-term project, you are required to design, implement, test, and deploy at least one plugin for SheetShuttle according to the specifications of the client. Additionally, your plugin must satisfy the following requirements:
- contain extensive testing with a high code coverage, ideally 100% or close to it. Teams are encouraged to practice test-driven approach, where you write a test case and then writing the code for that test case.
- include Continuous Integration using GitHub Actions that at the minimum runs the plugin, runs the test suite, and any linters as appropriate. Additionally, README should include badges that show status of GitHub Actions CI builds and project characteristics (e.g., coverage and language).
- contain appropriate documentation, including information about the tool, its features, steps to be taken to install, run and test the tool, contributing guideline, dependencies, references, and contact information of the developers.
- have accompanying documentation website that is easy to navigate.
- have written programs that are all correctly formatted, documented, use correct naming conventions, use exception handling and refactoring as appropriate.
Please schedule an office hour with your client as soon as possible. After the initial meeting with the client, you need to create user stories, write out acceptance criteria, create GitHub issues for specific requirements/tasks, and populate your project board. Additionally, you need to create and set up your project's GitHub repository. These are the tasks of the first week. After the first week, you will engage in three sprints.
This assignment will be assessed based on the following components after each sprint and after full project completion.
-
Mastery of Technical Writing [up to 15%]:: Students will also receive a checkmark grade when the responses to the writing questions presented in the
report.md
reveal a proficiency of both writing skills and technical knowledge. To receive a checkmark grade, the submitted writing should be complete and have correct spelling, grammar, and punctuation in addition to following the rules of Markdown and providing conceptually and technically accurate answers. Additionally, your writing repository should also pass GitHub Actions, which runs GatorGrader baseline writing and commit checks as well as linting checks. You should repeatedly revise your technical writing until it also passes all of GatorGrader's checks about, for instance, the length of its content.- Please note that the "Check Spelling" GitHub Actions check may flag proper nouns or other real words if the dictionary it uses does not contain them. If your "Check Spelling" GitHub Actions check is failing due to a correctly spelled word being incorrectly flagged as "unknown" by CSpell, you will need to add the word to the list of words in
.github/cspell.json
.
- Please note that the "Check Spelling" GitHub Actions check may flag proper nouns or other real words if the dictionary it uses does not contain them. If your "Check Spelling" GitHub Actions check is failing due to a correctly spelled word being incorrectly flagged as "unknown" by CSpell, you will need to add the word to the list of words in
-
Level of Contribution [up to 30%]:: Students will also receive a checkmark grade when their level of contribution indicates active engagement in the process of planning, implementation and testing for this long-term software engineering project. The engagement should be reported in the report document located in this repository and be evident in the commit log and issue tracker communication.
-
Mastery of Software Engineering Concepts and Skills [up to 55%]: Students will receive a grade for their technical contributions. As a part of this grade, the instructor will assess aspects of each sprint including, but not limited to, the completion of assigned technical tasks, the use of effective GitHub issues, use of project board, correct use of GitHub flow practices, and contributions made during the sprint.
You can check the baseline requirements of this project by running department's assignment checking gatorgrade
tool in this repository. To use gatorgrade
, you first need to make sure you have Python installed. Then, if you haven't done so already, you need to install gatorgrade
:
- install
pipx
- install
gatorgrade
withpipx install gatorgrade
Finally, you can run gatorgrade
:
gatorgrade --config config/gatorgrade.yml
If you are having trouble completing any part of this assignment, then please talk with either the course instructor or a student technical leader during the lab session. Alternatively, you may ask questions in the Discord channel for this course. Finally, you can schedule a meeting during the course instructor's office hours.