乐趣区

关于后端:SEG2105难点介绍

SEG2105 – Introduction to Software Engineering – Fall 2021
Assignment 2 (5%)
Assignment due: October 27, 2021 (before midnight).
● Work in groups of 2.
● Create a group in Brightspace (Groups_Assignment2)
● Create or join a GitHub repository using the invitation below:
https://classroom.github.com/…
● The section“What to Submit”at the end of this document explains what and how to
submit. Late submissions or submissions by email will not be accepted.
PART 1 (Chapter 3) – 70 points
Instructions for setting up the OCSF and SimpleChat code can be found in the Brightspace.

  1. E49, pages 104-105 (30 marks): Comment each change as you go and mark the changes
    using the same style of comment. Hand in changes to your code with each preceded by
    a comment so the TA can see what you changed for this question. Your comment should
    look something like this ‘// ** Changed for E49′ and your initials. Furthermore, add
    normal code comments explaining anything non-obvious in what you are doing.
  2. E50, pages 104-105 (30 points): Additional changes to OCSF. Your comments should look
    something like this ‘// ** Changed for E50′ and your initials.
  3. First, run your modified version of the server on port 7XXX (where XXX corresponds to
    the last three digits of your student number), and two clients. (10 points)
    1) Then, using the jps and jstack tools (or the tool of your preference), find how
    many threads are currently running in the JVM. Take a screenshot of the console
    showing clearly the number of threads and include it in your report. Make sure
    your JDK bin directory exists in the PATH environment variable (5 points).
    2) Type the command <netstat -aon> in your terminal and identify the port used by
    your server connection. In Linux, you can use the command <netstat -vatn> . Take
    a screenshot of the console and include it in your report. (5 points)
    1
    Info about the tools can be found here:
  4. https://docs.oracle.com/javas…
  5. https://docs.oracle.com/javas…
    ml
  6. https://www.lifewire.com/nets…
  7. https://stackoverflow.com/que…
    ing
    See page 4 for an example.
    PART 2 (Chapter 5)
  8. Create a UML class diagram (DOMAIN MODEL) for the system described below. Make
    sure you include correct multiplicity. Show all attributes (include their type) and
    associations plus at least five important operations. If generalizations are necessary,
    show them too. Marks will be given for effort, even if you do not have a perfect solution.
    However, marks will be lost for the common types of mistakes we talked about in class
    (e.g. poor generalizations, wrong multiplicity, etc). You don’t need to include getters,
    setters, or constructors in your class diagram. Return types or parameters are not
    necessary for operations. Write down any necessary assumptions. (30 points)
    Imagine you were re-creating Piazza. Model the classes, associations and generalizations
    necessary. You need to track at least the following:
    ● Students who have accounts, along with their student number, name and email, their
    cell phone number (if they are using one), courses they have access to, the questions
    they have responded to and their grades on those questions, plus their total grade so far
    in each course. Students can make private or public notes, comment on existing notes or
    answer questions.
    ● Courses, which have a course code, title, semester, date, status (enable/not enabled),
    description. A course can only be taught by one Professor. Only a Professor can edit the
    class list, create questions, notes and create tournaments.
    ● Professors who create questions in courses (and there may be multiple
    offerings/sections of the same course). A Professor may create multiple courses.
    ● Posts can be created by students or professors. A post needs to have a tag (category)
    when created and can be private (seen by the professor only) or public (the entire class).
    A post can be of two different types: Question or Note.
    o Notes contain a summary (title) and the details of the note. Notes can be added
    to the student’s reading list (when created by professors) or can be sent via
    email. Notes also have a tag (category). Notes can be created by both professors
    and students.
    o Questions (can only be created by professors) their possible answers and which
    of the answers is correct. Each question also has a grade to be awarded for
    students who try it, and a grade to be awarded for students who get the answer
    2
    right. Each question also has a tag (category) and a status:‘Active and Visible’,
    ‘Active’,‘Visible’,‘Review’(students can see their answer),‘Inactive’,‘Closed’and
    ‘Homework’(questions are assigned to students as homework). Questions
    assigned as homework must be answered before a specific date and time. All
    Questions have some text asking the question and then accept answers of
    various kinds:
    ▪ Multiple choice (with the option to allow the user to select just one or
    many answers).
    ▪ Text (with maximum number of characters and lines that can be specified
    by the maker)
    ▪ A numeric answer.
    ▪ A (single) word answer.
    ● Tournaments: Tournaments allow students to review material or demonstrate their
    understanding in a fun and engaging way. In tournaments, students compete against
    each other. Only Professors can create tournaments. A tournament has a starting date
    and time, a set of questions (existing ones) and the number of rounds. In tournaments, a
    profesor can specify the following:
    o Max. attempts per question
    o Length of each round (in seconds)
    o Participation weight
    o Correctness weight
    o Penalty for incorrect answer
    __
    What to submit: Submit via Brightspace the following TWO files:
    ● A document containing your answers for part 2. Make sure you submit a clear
    screenshot of your class diagram.
    ● A README file containing your names and IDs and the link of your GitHub repository.
    The Github Repository should contain the following:
    ● Your entire simplechat directory (DO NOT submit the OCSF framework directory and
    DO NOT modify the OCSF framework).
    Bonus +10 points. Use Umple for PART 2, question 1 OR
    Bonus +10 points. Use a professional tool (Visual Paradigm Community Version, ArgoUML,
    Papyrus for Eclipse) for PART 2, question 1.
    3
    ADDITIONAL DETAILS
    How to use JPS/STACK commands:
    First, type
    jps -v
    it will give you a list of process IDs,
    then, take note of the process ID, and run.
    jstack the_process_id
    WX:codehelp
退出移动版