This site is not ready yet! The updated version will be available soon.
CS2103/T 2020 Jan-Apr
  • Full Timeline
  • Week 1 [Aug 12]
  • Week 2 [Aug 19]
  • Week 3 [Aug 26]
  • Week 4 [Sep 2]
  • Week 5 [Sep 9]
  • Week 6 [Sep 16]
  • Week 7 [Sep 30]
  • Week 8 [Oct 7]
  • Week 9 [Oct 14]
  • Week 10 [Oct 21]
  • Week 11 [Oct 28]
  • Week 12 [Nov 4]
  • Week 13 [Nov 11]
  • Textbook
  • Admin Info
  • Report Bugs
  • Forum
  • Instructors
  • Announcements
  • File Submissions
  • Tutorial Schedule
  • Java Coding Standard
  • Participation Marks List

  •  Individual Project (iP):
  • Individual Project Info
  • Duke Upstream Repo
  • iP Code Dashboard
  • iP Showcase

  •  Team Project (tP):
  • Team Project Info
  • Team IDs
  • Addressbook-level3
  • Addressbook-level 1,2,4
  • tP Code Dashboard
  • tP Showcase
  • Week 10 [Oct 21] - Tutorial

    0 Smoke-test CATcher

    Some background: As you know, our PE includes peer-testing tP products under exam conditions. In the past, we used GitHub as the platform for that -- which was not optimal (e.g., it was hard to ensure the compulsory labels have been applied). As a remedy, some ex-students have been developing an app called CATcher that we would like to use for the PE this semester.

    In this tutorial, we would like to smoke-test the CATcher app to ensure it can run in your computer.

    1. Download the latest version of the CATcher executable from https://github.com/CATcher-org/CATcher/releases.
    2. Launch the app. Allow the app to run if there are security warnings (e.g., for Win 10, click the More Info link in the security warning and choose Run anyway).
      If the app is blocked by your virus scanner, put it in a new folder and add the folder to the exclusions list of the virus scanner.
    3. Login: Choose the profile CS2103/T Alpha Test, enter your GitHub credentials, and submit.
      If you have 2FA enabled for GitHub, you can create a personal access token with repo permissions and use that as the password.
    4. Let CATcher create a repo named alpha in your GitHub account, when it asks for permission. That repo will be used to hold the bug reports you will create in this testing session.
    5. Use the app to create 1-2 dummy bug reports, similar to how you would enter bug reports in the GitHub issue tracker. e.g., you can copy-paste screenshots into the bug description and use Markdown syntax.
      The severity and type labels are compulsory.
    6. Report any problems you encounter at the CATcher issue tracker.

    Being able to run CATcher is important for the PE -- if you are unable to run it, please follow up via the CATcher issue tracker until you resolve the issue ASAP.

    1 Review the DG of a Peer Team

    • Divide into two sub-teams, ensuring that each team has at least one member who is good with UML.
    • Find the team your sub-team have been allocated to discuss in the panel below and click on the link to locate their team PR.
    Team Sub-team A (backup) Sub-team B (backup)
    CS2103T-W11-1 CS2103T-W13-1 (CS2103T-W12-1) CS2103T-W13-3 (CS2103T-W12-3)
    CS2103T-W11-2 CS2103T-W13-2 (CS2103T-W12-2) CS2103T-W13-4 (CS2103T-W12-4)
    CS2103T-W11-3 CS2103T-W13-3 (CS2103T-W12-3) CS2103T-W13-1 (CS2103T-W12-1)
    CS2103T-W11-4 CS2103T-W13-4 (CS2103T-W12-4) CS2103T-W13-2 (CS2103T-W12-2)
    CS2103T-W12-1 CS2103T-W11-1 (CS2103T-W13-1) CS2103T-W11-3 (CS2103T-W13-3)
    CS2103T-W12-2 CS2103T-W11-2 (CS2103T-W13-2) CS2103T-W11-4 (CS2103T-W13-4)
    CS2103T-W12-3 CS2103T-W11-3 (CS2103T-W13-3) CS2103T-W11-1 (CS2103T-W13-1)
    CS2103T-W12-4 CS2103T-W11-4 (CS2103T-W13-4) CS2103T-W11-2 (CS2103T-W13-2)
    CS2103T-W13-1 CS2103T-W12-1 (CS2103T-W11-1) CS2103T-W12-3 (CS2103T-W11-3)
    CS2103T-W13-2 CS2103T-W12-2 (CS2103T-W11-2) CS2103T-W12-4 (CS2103T-W11-4)
    CS2103T-W13-3 CS2103T-W12-3 (CS2103T-W11-3) CS2103T-W12-1 (CS2103T-W11-1)
    CS2103T-W13-4 CS2103T-W12-4 (CS2103T-W11-4) CS2103T-W12-2 (CS2103T-W11-2)
    CS2103T-T09-1 CS2103-T16-3 (CS2103-T14-3) CS2103-T14-3 (CS2103T-T13-3)
    CS2103T-T09-2 CS2103-T16-4 (CS2103-T14-4) CS2103-T14-4 (CS2103T-T13-4)
    CS2103T-T09-3 CS2103T-T17-1 (CS2103-T16-1) CS2103-T16-1 (CS2103-T14-1)
    CS2103T-T09-4 CS2103T-T17-2 (CS2103-T16-2) CS2103-T16-2 (CS2103-T14-2)
    CS2103T-T10-1 CS2103T-T09-1 (CS2103-T16-3) CS2103-T16-3 (CS2103-T14-3)
    CS2103T-T10-2 CS2103T-T09-2 (CS2103-T16-4) CS2103-T16-4 (CS2103-T14-4)
    CS2103T-T10-3 CS2103T-T09-3 (CS2103T-T17-1) CS2103T-T17-1 (CS2103-T16-1)
    CS2103T-T10-4 CS2103T-T09-4 (CS2103T-T17-2) CS2103T-T17-2 (CS2103-T16-2)
    CS2103T-T11-1 CS2103T-T10-1 (CS2103T-T09-1) CS2103T-T09-1 (CS2103-T16-3)
    CS2103-T11-1 CS2103T-T10-2 (CS2103T-T09-2) CS2103T-T09-2 (CS2103-T16-4)
    CS2103-T11-2 CS2103T-T10-3 (CS2103T-T09-3) CS2103T-T09-3 (CS2103T-T17-1)
    CS2103T-T11-2 CS2103T-T10-4 (CS2103T-T09-4) CS2103T-T09-4 (CS2103T-T17-2)
    CS2103T-T11-3 CS2103T-T11-1 (CS2103T-T10-1) CS2103T-T10-1 (CS2103T-T09-1)
    CS2103-T11-3 CS2103-T11-1 (CS2103T-T10-2) CS2103T-T10-2 (CS2103T-T09-2)
    CS2103T-T11-4 CS2103-T11-2 (CS2103T-T10-3) CS2103T-T10-3 (CS2103T-T09-3)
    CS2103T-T12-1 CS2103T-T11-2 (CS2103T-T10-4) CS2103T-T10-4 (CS2103T-T09-4)
    CS2103T-T12-2 CS2103T-T11-3 (CS2103T-T11-1) CS2103T-T11-1 (CS2103T-T10-1)
    CS2103T-T12-3 CS2103-T11-3 (CS2103-T11-1) CS2103-T11-1 (CS2103T-T10-2)
    CS2103T-T12-4 CS2103T-T11-4 (CS2103-T11-2) CS2103-T11-2 (CS2103T-T10-3)
    CS2103T-T13-1 CS2103T-T12-1 (CS2103T-T11-2) CS2103T-T11-2 (CS2103T-T10-4)
    CS2103T-T13-2 CS2103T-T12-2 (CS2103T-T11-3) CS2103T-T11-3 (CS2103T-T11-1)
    CS2103T-T13-3 CS2103T-T12-3 (CS2103-T11-3) CS2103-T11-3 (CS2103-T11-1)
    CS2103T-T13-4 CS2103T-T12-4 (CS2103T-T11-4) CS2103T-T11-4 (CS2103-T11-2)
    CS2103-T14-1 CS2103T-T13-1 (CS2103T-T12-1) CS2103T-T12-1 (CS2103T-T11-2)
    CS2103-T14-2 CS2103T-T13-2 (CS2103T-T12-2) CS2103T-T12-2 (CS2103T-T11-3)
    CS2103-T14-3 CS2103T-T13-3 (CS2103T-T12-3) CS2103T-T12-3 (CS2103-T11-3)
    CS2103-T14-4 CS2103T-T13-4 (CS2103T-T12-4) CS2103T-T12-4 (CS2103T-T11-4)
    CS2103-T16-1 CS2103-T14-1 (CS2103T-T13-1) CS2103T-T13-1 (CS2103T-T12-1)
    CS2103-T16-2 CS2103-T14-2 (CS2103T-T13-2) CS2103T-T13-2 (CS2103T-T12-2)
    CS2103-T16-3 CS2103-T14-3 (CS2103T-T13-3) CS2103T-T13-3 (CS2103T-T12-3)
    CS2103-T16-4 CS2103-T14-4 (CS2103T-T13-4) CS2103T-T13-4 (CS2103T-T12-4)
    CS2103T-T17-1 CS2103-T16-1 (CS2103-T14-1) CS2103-T14-1 (CS2103T-T13-1)
    CS2103T-T17-2 CS2103-T16-2 (CS2103-T14-2) CS2103-T14-2 (CS2103T-T13-2)
    CS2103-F09-1 CS2103T-F14-1 (CS2103T-F13-1) CS2103T-F13-1 (CS2103T-F12-1)
    CS2103-F09-2 CS2103T-F14-2 (CS2103T-F13-2) CS2103T-F13-2 (CS2103T-F12-2)
    CS2103-F09-3 CS2103T-F14-3 (CS2103T-F13-3) CS2103T-F13-3 (CS2103T-F12-3)
    CS2103-F09-4 CS2103T-F14-4 (CS2103T-F13-4) CS2103T-F13-4 (CS2103T-F12-4)
    CS2103-F10-1 CS2103-F09-1 (CS2103T-F14-1) CS2103T-F14-1 (CS2103T-F13-1)
    CS2103-F10-2 CS2103-F09-2 (CS2103T-F14-2) CS2103T-F14-2 (CS2103T-F13-2)
    CS2103-F10-3 CS2103-F09-3 (CS2103T-F14-3) CS2103T-F14-3 (CS2103T-F13-3)
    CS2103T-F11-1 CS2103-F09-4 (CS2103T-F14-4) CS2103T-F14-4 (CS2103T-F13-4)
    CS2103T-F11-2 CS2103-F10-1 (CS2103-F09-1) CS2103-F09-1 (CS2103T-F14-1)
    CS2103T-F11-3 CS2103-F10-2 (CS2103-F09-2) CS2103-F09-2 (CS2103T-F14-2)
    CS2103T-F11-4 CS2103-F10-3 (CS2103-F09-3) CS2103-F09-3 (CS2103T-F14-3)
    CS2103T-F12-1 CS2103T-F11-1 (CS2103-F09-4) CS2103-F09-4 (CS2103T-F14-4)
    CS2103T-F12-2 CS2103T-F11-2 (CS2103-F10-1) CS2103-F10-1 (CS2103-F09-1)
    CS2103T-F12-3 CS2103T-F11-3 (CS2103-F10-2) CS2103-F10-2 (CS2103-F09-2)
    CS2103T-F12-4 CS2103T-F11-4 (CS2103-F10-3) CS2103-F10-3 (CS2103-F09-3)
    CS2103T-F13-1 CS2103T-F12-1 (CS2103T-F11-1) CS2103T-F11-1 (CS2103-F09-4)
    CS2103T-F13-2 CS2103T-F12-2 (CS2103T-F11-2) CS2103T-F11-2 (CS2103-F10-1)
    CS2103T-F13-3 CS2103T-F12-3 (CS2103T-F11-3) CS2103T-F11-3 (CS2103-F10-2)
    CS2103T-F13-4 CS2103T-F12-4 (CS2103T-F11-4) CS2103T-F11-4 (CS2103-F10-3)
    CS2103T-F14-1 CS2103T-F13-1 (CS2103T-F12-1) CS2103T-F12-1 (CS2103T-F11-1)
    CS2103T-F14-2 CS2103T-F13-2 (CS2103T-F12-2) CS2103T-F12-2 (CS2103T-F11-2)
    CS2103T-F14-3 CS2103T-F13-3 (CS2103T-F12-3) CS2103T-F12-3 (CS2103T-F11-3)
    CS2103T-F14-4 CS2103T-F13-4 (CS2103T-F12-4) CS2103T-F12-4 (CS2103T-F11-4)
    • Go to the PR and navigate the to the Netlify preview.
    • Confirm that the DG has significant updates, to the diagrams in particular. If it doesn't, you can review the backup team (given within brackets). If even the backup team is not suitable, ask the tutor for a suggestion or choose any random teams having tutorials in the same day.
    • Evaluate the Design and the Implementation sections against the stated expectations (given further down); add your observations as comments.
    • To be done collectively with sub-team members.
    • Add review comments in the corresponding place of the code. But if the diff view is too laggy, you can use a normal comment.
    • Choose the Start a review option rather than Add single comment.
    • Each person can do their own review, but coordinate with sub-team members to avoid duplicating the same point.
    • Phrase your comments as question/doubts (e.g., Is this format correct? Should it be ... instead?) rather than directives (e.g., Change this to ...).
    • Where possible, use screenshots from their DG in your comments, preferably with annotations. This is particularly useful when commenting on diagrams.
    • Do not finalize the review at this stage. Just keep adding comments.
    • The understanding you gain from this exercise can indirectly determine how well you do in your own project. If you have even the slightest doubt about your observations in this exercise, please discuss it with the tutor to ensure you have the right understanding of the criteria used.
    DG Expectations

    Pay attention to these as they are same as the final evaluation criteria of the DG.

    Also see:

    Relevant: [Admin tP: mid-v1.3 → DG Tips ]

    • Aim to showcase your documentation skills. The stated objective of the DG is to explain the implementation to a future developer, but a secondary objective is to show evidence that you can document deeply-technical content using prose, examples, diagrams, code snippets, etc. appropriately. To that end, you may also describe features that you plan to implement in the future, even beyond v1.4 (hypothetically).
      For an example, see the description of the undo/redo feature implementation in the AddressBook-Level3 developer guide.
    • Use multiple UML diagram types. Following from the point above, try to include UML diagrams of multiple types to showcase your ability to use different UML diagrams.
    • Keep diagrams simple. The aim is to make diagrams comprehensible, not necessarily comprehensive. Ways to simplify diagrams:
      • Omit less important details. Examples:
        • a class diagram can omit minor utility classes, private/unimportant members; some less-important associations can be shown as attributes instead.
        • a sequence diagram can omit less important interactions, self-calls.
      • Omit repetitive details e.g., a class diagram can show only a few representative ones in place of many similar classes (note how the AB3 Logic class diagram shows concrete *Command classes).
      • Limit the scope of a diagram. Decide the purpose of the diagram (i.e., what does it help to explain?) and omit details not related to it. In particular, avoid showing lower-level details of multiple components in the same diagram unless strictly necessary e.g., note how the this sequence diagram shows only the detailed interactions within the Logic component i.e., does not show detailed interactions within the model component.
      • Break diagrams into smaller fragments when possible.
        • If a component has a lot of classes, consider further dividing into sub-components (e.g., a Parser sub-component inside the Logic component). After that, sub-components can be shown as black-boxes in the main diagram and their details can be shown as separate diagrams.
        • You can use ref frames to break sequence diagrams to multiple diagrams. Similarly, rakes can be used to divide activity diagrams.
      • Stay at the highest level of abstraction possible e.g., note how this sequence diagram shows only the interactions between architectural components, abstracting away the interactions that happen inside each component.
      • For some more examples, see here.
    • Integrate diagrams into the description. Place the diagram close to where it is being described.
    • Use code snippets sparingly. The more you use code snippets in the DG, and longer the code snippet, the higher the risk of it getting outdated quickly. Instead, use code snippets only when necessary and cite only the strictly relevant parts only.
    • Resize diagrams so that the text size in the diagram matches the the text size of the main text of the diagram. See example.

    These class diagrams seem to have lot of member details, which can get outdated pretty quickly:


    This class diagram seems to have too many classes:
    These sequence diagrams are bordering on 'too complicated':

    In this negative example, the text size in the diagram is much bigger than the text size used by the document:

    It will look more 'polished' if the two text sizes match.

    Architecture

    • The Architecture diagram uses intuitive symbols.
    • No indiscriminate use of double-headed arrows.
    • Any architecture-level diagrams do not contain lower-level details.
    • The description given is understandable and sufficiently high-level.

    Diagrams

    • Uses the correct UML notation.
      If you notice UML notation errors, please point them out.
    • Not cluttered with too much unnecessary details.
    • Each diagrams is relatively simple and easy to understand.
    • Uses multiple types of diagrams (ideal: uses Class Diagrams, Object Diagrams, Sequence Diagrams, Activity Diagrams)
    • Diagrams are well-integrated into the description.
    • Not repetitive (opposite: many similar diagrams with minor differences).

    Descriptions

    • Easy to understand/follow (were you able to understand their design?)
    • Just enough information: Not too much information. All important information is given.

    Overall

    • Polished: The document looks neat, well-formatted, and professional.
      e.g., Are the diagrams resized to match the text size of the main document?
    • Discuss your comments/observations/doubts with the tutor and other team members to confirm the comments you entered are correct.
    • Update your review comments if necessary, based on the discussion you just had. After that, you can submit the review.