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/a/E4zD3Y_H
● 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 in your terminal and identify the port used by
your server connection. In Linux, you can use the command . Take
a screenshot of the console and include it in your report. (5 points)
1
Info about the tools can be found here:
- https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html
- https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr016.ht
ml
- https://www.lifewire.com/netstat-command-2618098
- https://stackoverflow.com/questions/31385400/windows-7-command-line-jps-not-work
ing
See page 4 for an example.
PART 2 (Chapter 5)
1. 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