- Do a practice iteration midnight before the tutorial
- Update project website:
AboutUs
,README
- Update the UG
- Add a skeletal PPP
- Update the DG: user stories, glossary, NFRs, use cases
- Plan the next iteration
- Start implementing the next version
Start using Git via the CLI
If you have been using Sourcetree (or other GUI) for Git before, we strongly recommend that you move towards using the CLI to perform Git tasks in the second half of the semester. Doing so will strengthen your Git knowledge (because CLI takes you closer to what's actually happening, while GUIs might hide such details).
But you can continue to use your favorite Git GUI for a more 'visual' view of your repo, side-by-side with the CLI e.g., from Sourcetree, you can open a gitbash terminal, run the command in that terminal, and see the result in the GUI.
PR review comments matter! Remember to do proper PR reviews throughout the tP, at least for non-trivial changes, as the quality and quantity of PR review comments you have given to peers affect your tP marks (under the project management aspect).
1 Do a practice iteration midnight before the tutorial
- To get some practice of doing project iterations, do this week's tP work (which is just updates to various documents, no changes to functionality) to reach the milestone
v1.1
. The panel below explains how to use GitHub to do a project iteration.
Strongly recommended to do this as a team activity (preferably F2F, or else connected via Zoom/MST), at least until everyone has merged a few PRs for this iteration. That will help you proceed faster (e.g., a PR can be reviewed immediately after it has been created) and will also make it easy for you to help each other w.r.t. to the workflow matters.
- The documentation updates to be done in this iteration are described in the tP tasks in the sections below.
- Don't forget to 'wrap up' the milestone (as explained in the panel above), after the work is done.
- Ideally, this should be done by the midnight before the tutorial, but failing that, before the next lecture, as usual.
2 Update project website: AboutUs
, README
Recommended procedure for updating docs:
- Divide among yourselves who will update which parts of the document(s).
- Update the team repo by following the workflow given below:
How to go about editing documentation files?
e.g., How to preview changes locally before committing/pushing?
Guidance on documentation can be found in the relevant section of the Developer Guide of your team project website that you set up earlier. Given below is a shortcut, for your convenience:
- If your project is using Jekyll for documentation, refer this Jekyll Guide @SE-EDU/guides.
- If your project is using Markbind for documentation, refer this MarkBind Guide @SE-EDU/guides.
Lookout for these mistakes which were the most common in previous runs of the course:
- Not following the required phrasing style for the first sentence of Java method header comments.
- Not following the convention for Git commit message subject.
Caution: This is very hard to rectify later, after PR containing the commits have been merged.
Reason: While Git allows editing past commits, it changes their timestamp, which affects your weekly code contribution stats (which are factored into evaluating the consistency of your coding work over the project duration)
A: Update the following pages in your project repo:
- AboutUs page:
This page (in the
/docs
folder) is used for course admin purposes. Please follow the format closely or else our scripts will not be able to give credit for your work.- Add your own details. Include a suitable photo as described here.
- There is no need to mention the tutor/lecturer, but OK to do so too.
- The filename of the profile photo should be
docs/images/github_username_in_lower_case.png
Note the need for lower case ( ) e.g.JohnDoe123
->docs/images/johndoe123.png
notdocs/images/JohnDoe123.png
.
If your photo is in jpg format, name the file as.png
anyway. - Indicate the different roles played and responsibilities held by each team member. You can reassign these roles and responsibilities (as explained in Admin Project Scope) later in the project, if necessary.
README page: Update it to match your project.
Add a UI mockup of your intended final product. Note that the image of the UI should be
docs/images/Ui.png
so that it can be downloaded by our scripts. Limit the file to contain one screenshot/mockup only and ensure the new image is roughly the sameheight x width
proportions as the original one. Reason: when we compile these images from all teams into one page (example), yours should not look out of place.
If you did the above update correctly, UI mock up and profile photos should appear in your project website and this Project List Page.
The UI mock up can be a hand-drawn sketch or created using a tool such as PowerPoint, PlantUML, Figma, etc.
Can the AB3 screenshot used for this? Only in the unlikely case that your v1.2 UI looks exactly the same as AB3.Update all contents to match your own project.
Update the link of the GitHub Actions build status badge () so that it reflects the build status of your team repo.
Acknowledge the original source of the code e.g.,
This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).
B: Also update site-wide settings, as necessary:
You need to update the
AB-3
in the top navigation bar of your project website (it's indocs\_sass\minima\_base.scss
if using Jekyll, and indocs\_markbind\layouts\default.md
if using MarkBind).More info on updating site-wide settings such as the above:
- If using Jekyll: follow the Jekyll Guide @SE-EDU/guides.
- If using MarkBind: follow the MarkBind Guide @SE-EDU/guides.
- If using Jekyll: follow the Jekyll Guide @SE-EDU/guides.
3 Update the UG
- Move the draft UG content into the User Guide page in your repository. Update the content/structure/formatting as necessary, to match the final form of the UG. If a feature is not implemented in the current version, you can either omit it from the UG or mark it as 'Coming soon' (e.g.,
## Archiving contacts [coming soon]
).
Remember to omit nitty-gritty details in the previous 'internal' UG Draft if they are not appropriate for the actual UG.
As mentioned before, while it is more convenient for one person to update the entire UG, we recommend that each person updates their own part of the docs so that we can easily track the contribution of each member using RepoSense.
4 Add a skeletal PPP
At the end of the project, each member needs to create a Project Portfolio Page (PPP) to describe your contribution to the project. Let's create a skeletal version of the PPP now itself so that everyone becomes aware how detailed you need to be about your individual contributions at the end of the project.
- Create a skeletal version of your Project Portfolio Page (PPP).
- Just the headings are enough. You can write
to be added soon
as placeholders for content. - PDF conversion not required.
- Follow the details in the panel below.
- Just the headings are enough. You can write
5 Update the DG: user stories, glossary, NFRs, use cases
Add the following to the DG, based on your project notes from the previous weeks.
Some examples of these can be found in the AB3 Developer Guide.- Target user profile, value proposition, and user stories: Update the target user profile and value proposition to match the project direction you have selected. Give a list of the user stories (and update/delete existing ones, if applicable), including priorities. This can include user stories considered but will not be included in the final product.
- Use cases: Give use cases (textual form) for a few representative user stories that need multiple steps to complete. e.g. Adding a tag to a person (assume the user needs to find the person first)
- Non-functional requirements: Note: Many of the given project constraints can be considered NFRs. You can add more. e.g. performance requirements, usability requirements, scalability requirements, etc.
- Glossary: Define terms that are worth recording.
The above DG sections should cover the full requirements of the product, some of which might not even get implemented by the end of this semester i.e., do not limit to just the requirements you intend to implement in the next iteration. Reason: All identified requirements need to be documented for future reference.
Furthermore, these sections will be graded at the final project evaluation, and any bugs in the content can cost you marks at that point. The panel below gives some relevant DG bug examples you can lookout for:
6 Plan the next iteration
- Plan the next iteration. As you know, you should follow the breadth-first iterative process. Therefore, first you must decide what functionalities should be in the product if you had only two weeks to implement it. You have done that already when you chose user stories for v1.2, translated that to features, and even drafted the UG based on those features. You can tweak that plan further at this point if you wish, given that you now have some idea of how fast the team can work when using the prescribed workflow.
- Aim to produce a working MVP at the end of this iteration even if the functionalities are not polished (polishing can be done in a later iteration).
- Avoid depth-first implementations: "I'll do the back-end part of feature X in this iteration" is not acceptable as that is not in the spirit of breadth-first iterative process. Remember, we are pretending this to be the last iteration; why would you implement the back-end part of a feature in the last iteration?
It is OK to add simpler versions of bigger features, but not OK to add partial features that can't be used yet. - [Recommended, Optional] Break the iteration into two mini iterations as follows:
- Divide the work among the team members i.e., the work required for the current iteration.
- Reflect the above plan in the issue tracker by assigning the corresponding issues (create new issues if necessary) to yourself and to the corresponding milestone. For example, the user story pertaining to the increment
show a placeholder for photo, showing a generic default image
should be assigned to Jake and to milestonev1.2
7 Start implementing the next version
- If you have time, start implementing v1.2.