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.
- To get some practice of doing project iterations, do this week's tP work (i.e., updates to various documents) as if it is a project iteration that will reach a milestone
v1.1, as explained in the pane below.
- Don't forget to 'wrap up' the milestone at the end of this week (as explained in the panel above), after the work is done.
Recommended procedure for updating docs:
- Divide among yourselves who will update which parts of the document(s).
- Update the team repo by following the recommended workflow.
Lookout for these mistakes which were the most common in previous runs of the module:
- 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 near-impossible 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)
Update the following pages in your project repo:
- AboutUs page:
This page (in the
/docsfolder) is used for module 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 the tutor/lecturer, but OK to do so too.
- The filename of the profile photo should be
Note the need for lower case ( ) e.g.
If your photo is in jpg format, name the file as
- 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.pngso 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 same
height x widthproportions 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.
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).
Update site-wide settings as described in the guide Using Jekyll for project documentation @SE-EDU/guides.
docs\_sass\minima\_base.scssneeds updating too (it comes into play when you convert documentation to PDF formats).
- Move the draft UG content into the User Guide page in your repository. Update the content as necessary. 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]).
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.
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 abut 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 soonas placeholders for content.
- PDF conversion not required.
- Follow the details in the panel below.
- Just the headings are enough. You can write
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:
- 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).
- [Recommended, Optional] Break the iteration into two increments i.e., aim to produce an even simpler but working version after one week.
- 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.
- 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 place holder for photo, showing a generic default imageshould be assigned to Jake and to milestone
If you split the iteration into two smaller iterations of one-week each (recommended), name the first one
v1.2and the second one
v1.2bso that the dashboard can track them accurately. The reason for naming the earlier milestone as
v1.2is so that even if you fail to finish the second one, you can still get credit for reaching
v1.2(which is the milestone tracked by grading scripts) -- think of the first iteration as minimal deliverables for
v1.2and the second one as containing do-if-there-is-time improvements.
- If you have time, start implementing v1.2.