Week 12 [Mon, Apr 7th] - Project

tP: v1.6

  1. Fix PE-D bugs
  2. Submit final deliverables Tue, Apr 8th 14:00
  3. Prepare for the practical exam
  4. Ensure the code is RepoSense-compatible
  5. Attend the practical exam Fri, Apr 11th 1600-1800
  6. [if needed] Attend the makeup practical exam Sun, Apr 13th 1400-1600

tP: Public Release → v1.6

Intro to tP Week 12

What's happening this week:

v1.6

  • Learning outcome: Able to put in final touches while minimizing delivery risks i.e., risks of regressions or deadline overruns.
  • Product goal: Reach the quality necessary for a public release.
  • Strategy: Freeze features. Avoid code changes unless strictly necessary.

Things to note:

Remind yourself of our policy on reuse (e.g., how to give credit for reused code):

1 Fix PE-D bugs

  1. Note the following details of the feature freeze enforced in this iteration:

The goal of freezing features in the pre-release iteration is to minimize latent bugs by avoiding behavior changes unless they are strictly necessary, so that we minimize the possibility of introducing more bugs.
In a real project, minor or critical changes might be allowed even near a deadline -- but in the tP, it is hard to enforce such a rule objectively. Instead, we enforce a quantitative limit that is easier to enforce: No more than 10% of the functional code is allowed to be changed during the iteration v1.6. Finer details of this limit is given below:

  • The feature freeze starts at 10am on the PE-D day. Any code updated after that deadlines is counted against the feature freeze.
  • The limit applies per member. That is, we compare the amount of code attributed to each member (as per the tP code dashboard) against the portion of that code that was changed during the feature freeze. Any penalty for violating the feature freeze will be applied to that member only.
  • The penalty for violating the feature freeze will be case-by-case basis, but not smaller than -2.
  • The limit applies to functional code only i.e., changes to files inside the src\main\java folder. The feature freeze doesn't apply to test code, documentation, or non-code files (e.g., images).
    There is no limit on the nature of changes you can do to functional code, but we strongly recommend to choose based on,
    a) the priority (i.e., how important the change is), and,
    b) the risk (i.e., the risk of the change introducing new bugs).

Using 'Planned Enhancements' DG section to counter known feature flaws: Given you are not allowed to update functional code freely in v1.6, we allow you to optionally add a section named Appendix: Planned Enhancements to the end of the DG. More details in the panel below:

FAQs on what is allowed during the feature freeze:

[Q1] How do we calculate how much code we can change?


[Q2] Suppose fixing a bug will violate the code freeze but not fixing it can incur a penalty during the PE. How do we decide which option is less costly?


[Q3] Are minor/cosmetic code refactoring counted against the feature freeze?


[Q4] Change percentage is counted using all lines or non-blank lines only?


[Q5] Can we squeeze in more changes into the feature freeze by 'clever hacks' (e.g., combining multiple lines etc.)?


[Q6] Can I borrow the unused 'change quota' of another member?


[Q7] We already merged a PR that violates the feature freeze. Now what?


[Q8] How to decide between recording a feature flaw as a 'known issue' (in the UG) and a 'planned enhancement' (in the DG)?


  1. Triage bugs you received in the PE-D, by following the procedure given below:

  1. Fix bugs that you deem as important enough to be fixed in v1.6. Also keep in mind that bug fixing can cause regressions which you'll have to catch and fix.
    Look for more bugs, and fix them too (i.e., don't limit to bugs found in the PE-D only).

High-level workflow for deciding what to do for each PE-D bug

  1. Is it something you think you'll never fix even if you were to continue this project in future?
    If yes, you can leave it unfixed and reject it if the same is reported in the PE. Caution: If the PE tester disagrees and the teaching team agrees with the tester's justification, the bug might result in a penalty (why say 'might result ...'? Because only when the bug density exceeds a certain bar that bugs will be penalised).
    How to decide if a PE bug can be rejected? Refer to PE Bug Triaging Guidelines for details (you may skip the 'General' section).
  2. Else, is it something you may consider fixing in a future version but was not important enough to do in v1.5?
    If yes, you can expect to categorise it as NotInScope if the same is reported in the PE (eligibility criteria).
  3. Else, it is something you should have fixed in the current version.
    • You may fix it in this iteration. If left unfixed, it can be reported as a bug in PE, and might result in a penalty eventually.
    • Alternatively, you can list it under 'Planned Enhancements' in the DG so that it becomes immune to PE bug reporting. In addition, you can also update the UG to mitigate its impact on users (e.g., keep users informed of it).
  1. Submit peer evaluations for PE-D testers: Submit your peer-evaluation of PE-D testers to indicate how well they helped your team.
    Deadline: by Wed, Apr 16th 2359
    The submission is to be done via the TEAMMATES system.
    Only one team member needs to submit on behalf of the team but discuss among team members first.
    Base the evaluation on the quality/usefulness of the bugs reported as well as the quantity.
    Here are the two questions you'll need to answer in the evaluation:

PE-D bug titles will be prefixed with tester ID e.g., ([PE-D][Tester A] UG does not load) to make it easy for you to bugs reported by each tester.
Furthermore, tester ID mapping (i.e., who is Tester A, Tester B, etc.) will be sent to you via email within 1 day after the PE-D.

2 Submit final deliverables Tue, Apr 8th 14:00

  • Deadline for all v1.6 submissions is Tue, Apr 8th 14:00:00 unless stated otherwise. Note that 14:00:01 is considered late, as per the Canvas deadline mechanism.
  • Penalty for late submission (per file):
    -1 mark for missing the deadline (up to 2 hour of delay).
    -2 for an extended delay (up to 24 hours late).
    Penalty for delays beyond 24 hours is determined on a case by case basis.
    • Even a one-second delay is considered late, irrespective of the reason.
    • For submissions done via Canvas, the submission time is the timestamp shown by Canvas.
    • When determining the late submission penalty, we take the latest submission even if the same exact file was submitted earlier. Do not submit the same file multiple times if you want to avoid unnecessary late submission penalties.
    • The whole team is penalized for problems in team submissions e.g., a -1 penalty for a team submission will be a -1 penalty for each team member.
  • Submit via the Canvas assignment we have set up. CS2103T students: documents should be submitted to both courses. It's not enough to submit to CS2101 side only.
  • Follow submission instructions closely. Any non-compliance will be penalized. e.g. wrong file name/format.
    Canvas might automatically add a file name suffix (e.g., *-1.pdf, *-2.pdf, ...) if you upload a file multiple times. You can safely ignore that suffix.
  • Do not update the code during the 14 days after the deadline. Get our permission first if you need to update the code in the repo during that code-freeze period.
    • You can update issues/milestones/PRs even during the code-freeze period.
    • [CS2103T only] You can update the source code of the docs (but not functional/test code) if your CS2101 submission deadline is later than our submission deadline. However, a code-freeze period of 1-2 days is still recommended, so that there is a clear gap between the tP submission and subsequent docs updates.
      On a related note, there is no need to additional stylistic 'beautifications' to the docs before submitting to CS2101 side. The two teaching teams have agreed that there will be no extra credit for such additional beautifications.
    • You can update the code during the code-freeze period if the change is related to a late submission approved by us.
    • You can continue to evolve your repo after the code-freeze period.

Submissions:

Don't take PDF conversion lightly: To convert the UG/DG into PDF format, go to the generated page in your project's github.io site and use this technique to save as a pdf file. Using other techniques or not following the settings suggested in the given technique can result in issues such as missing background colors, poor quality resolution, unnecessarily large files (the last two can be considered as bugs).

The PDF versions of the UG/DG should be usable by the target readers, even if not as neat/optimized as the Web versions. For example, margins and page breaks need not be optimized, but they should not hinder the reader either. Assume some will occasionally choose the PDF version over the Web version e.g, for printing, offline viewing, annotating etc.

PE uses the PDF versions of UG/DG, not the Web version! Any problems in those PDF files (e.g., broken links, messed up formatting) can be reported as bugs.

Ensure hyperlinks in the pdf files work. Broken/non-working hyperlinks in the PDF files will be considered as bugs. Again, use the conversion technique given above to ensure links in the PDF files work.

PDF files should,

  • be paginated at a reasonable page size (e.g., A4). Reason: single-page PDF files don't work well in some PDF viewers, and not suitable for printing either.
  • allow copying text so that readers can copy text from them (e.g., copy an example command from the UG).

Try the PDF conversion early. If you do it at the last minute, you may not have time to fix any problems in the generated PDF files (such problems are more common than you think).

Side benefits for early submissions: Given that using buffers to reduce the risk of deadline overruns is a learning outcome of this course, we strongly encourage setting an internal submission deadline a few hours earlier than the actual deadline. As an incentive, we plan to perform some checks on early submissions and inform you if we found issues with your submission (e.g., incorrect file name/format), thus giving you a chance to fix them before the deadline and avoid a penalty for it.

You may use automated tools to improve documentation: e.g., tools such as Grammarly may be used to improve the writing quality and find grammar errors.

The icon indicates team submissions. Only one person need to submit on behalf of the team but we recommend that others help verify the submission is in order.
We will not entertain requests to limit late penalties of team submissions to one person even if the delay was one person's fault. That is, the responsibility (and the penalty) for team submissions are to be shared by the whole team rather than burden one person with it.

  • Product:
    • Do a release on GitHub, tagged appropriately e.g., v1.6 or v1.6b.
      Writing detailed release notes is optional.
      No need to include UG/DG pdf files in the release.
    • Upload the jar file to Canvas.
      File name: [team ID][ProductName].jar e.g. [CS2103-T09-2][ContactsPlus].jar
      Recommended to avoid spaces and special characters in the product name as it can cause problems when running the JAR file using the command line.
      This name requirement is for the JAR file you upload to Canvas only. You may name the JAR file you upload to GitHub in any reasonable way.

  • Source Code: Push the code to GitHub and tag with the version number.

Reminder: double-check to ensure the code attributed to you by RepoSense is correct.

  • User Guide:
    • Convert to pdf and upload to Canvas.
    • File name: [TEAM_ID][ProductName]UG.pdf e.g.[CS2103-T09-2][ContactsPlus]UG.pdf

  • Developer Guide:
    • submission is similar to the UG
    • File name: [TEAM_ID][ProductName]DG.pdf e.g. [CS2103-T09-2][ContactsPlus]DG.pdf

  • [Optional] Project Portfolio Page (PPP):
    • HTML version: make available on github.io
    • See the panel below to learn when you should opt for this submission.

Admin tP → Deliverables → Project Portfolio Page

At the end of the project each student is required to submit a Project Portfolio Page. To reduce workload, this deliverable has been made optional this semester. You need to submit this only if you think your team members are not fully aware of your contribution to the tP. Also, we will ask you to submit this if there is a dispute about your contribution level.

Details ... (read only if you opted to submit this deliverable)

PPP Objectives

  • For you to use (e.g. in your resume) as a well-documented data point of your SE experience
  • For evaluators to use as a data point for evaluating your project contributions

PPP Sections to include

  • Overview: A short overview of your product to provide some context to the reader. The opening 1-2 sentences may be reused by all team members. If your product overview extends beyond 1-2 sentences, the remainder should be written by yourself.
  • Summary of Contributions --Suggested items to include:
    • Code contributed: Give a link to your code on tP Code Dashboard. The link is available in the Project List Page -- linked to the icon under your profile picture.
    • Enhancements implemented: A summary of the enhancements you implemented.
    • Contributions to the UG: Which sections did you contribute to the UG?
    • Contributions to the DG: Which sections did you contribute to the DG? Which UML diagrams did you add/updated?
    • Contributions to team-based tasks
    • Review/mentoring contributions: Links to PRs reviewed, instances of helping team members in other ways.
    • Contributions beyond the project team:
      • Evidence of helping others e.g. responses you posted in our forum, bugs you reported in other team's products,
      • Evidence of technical leadership e.g. sharing useful information in the forum

Keep in mind that evaluators will use the PPP to estimate your project effort. We recommend that you mention things that will earn you a fair score e.g., explain how deep the enhancement is, why it is complete, how hard it was to implement etc.

  • OPTIONAL Contributions to the Developer Guide (Extracts): Reproduce the parts in the Developer Guide that you wrote. Alternatively, you can show the various diagrams you contributed.
  • OPTIONAL Contributions to the User Guide (Extracts): Reproduce the parts in the User Guide that you wrote.

PPP Format

  • File name (i.e., in the repo): docs/team/github_username_in_lower_case.md e.g., docs/team/goodcoder123.md
  • Follow the example in the AddressBook-Level3
  • PDF file submission: not required.


  • Product Website: Update website (home page,Ui.png, AboutUs.md etc.) on GitHub. Ensure the website is auto-published.

3 Prepare for the practical exam

  • After reading the above 2, we strongly recommend you read ahead the info given in the item 5 below as well, to know in advance what will happen during the PE itself.

4 Ensure the code is RepoSense-compatible

  • Ensure your code is and the code it attributes to you is indeed the code written by you, as explained below:

    • Go to the tp Code Dashboard. Click on the </> icon against your name and verify that the lines attributed to you (i.e., lines marked as green) reflects your code contribution correctly. This is important because some aspects of your project grade (e.g., code quality) will be graded based on those lines.

    • More info on how to make the code RepoSense compatible:

FAQ What if someone took over a feature from another team member?


5 Attend the practical exam Fri, Apr 11th 1600-1800

  • Ensure you read the instructions on PE Preparation (given in item 5 above)
  • Attend the practical test, to be done during the weekly briefing.

6 [if needed] Attend the makeup practical exam Sun, Apr 13th 1400-1600

  • In the very unlikely event that the PE had to be cancelled due to technical issues, attend the makeup PE on this day.
  • Note: This is not an alternative option for students who could not attend the PE, as all students need to do the PE at the same time.