CS251: Intro To Software Engineering: Second Semester Prpject - v1.0
CS251: Intro To Software Engineering: Second Semester Prpject - v1.0
Objectives
This project aims to:
1- Learn about software design and how to move from requirements to design.
2- Learn how to develop class diagrams and sequence diagrams for a system.
3- Learn how to transform design models to code
4- Learn how to document code using Java doc
5- Learn how to use GitHub as a repository for your system
Setup
1- This is a team project that requires that will require each team to work together closely and
independently and will need self-learning and self-discipline. هذا المشروع هو مسك الختام للمقرر
.ويتطلب قدرا كبيرا من التعلم الذاتى والبحث وتنظيم الوقت والتعاون الجيد مع أعضاء الفريق
2- This project will be done in groups of up to 5 students from the same lab.
3- The group will submit together one combined solution on the site decided by FCAI.
4- The entire group is responsible of helping any weak member to be able to do his/her task by
his/herself, by providing the necessary support, knowledge, hands-on demos, etc.
5- Only submit original work. Any copied work will be severely penalized.
6- مسؤولية الفريق تضامنية عن عمله و أى غش من أى فرد سيكون مسؤولية الجميع و يخصم منهم مثل الدرجة
7- You have two options for this project as listed below. You choose ONE OPTION ONLY.
Option 1
Task 1 – System Design
Project Phase 2: System Design
Complete the attached Software Design Specifications Document. Remove the red comments.
Task 1: Class Diagram
1- Read carefully the GoFo project description attached with this project.
2- Read the sample SRS given with this assignment. Use it as basis for your design and coding.
3- Read carefully the Software Design Specifications template given with this assignment. Read
the instructions in red very carefully.
4- Identify all the important classes in the system
5- Divide these classes into packages or subsystems, each one includes the related classes.
6- Decide the responsibility of each class and what role it plays.
7- Design the attributes and operations of each class. For each attribute decide the type and
visibility. For operations, decide the name, parameters and return type.
8- Design the relations between classes (inheritance, association, aggregation, composition). For
each relation, decide the direction and multiplicity and give it a label.
9- Read again, the Software Design Specifications template given with this assignment.
10- Finally, draw a complete class diagram for the system, divided into packages or systems. Use
a tool for drawing.
1
CS251: Intro to Software Engineering
Second Semester Prpject – v1.0
Due Date & Submission Link: To Be Announced by FCAI
Cairo University, Faculty of
Computers and Information
Task 2 - Development
Project Phase 3: Implementation
In this phase of the project, we will implement a small part of the system in Java. The purpose is to
learn transferring model to code, good quality code. Your task will be:
1- Read the Corona Store example under acadox on how to model and develop a system.
2- Implement the parts of your design related to (1) registering a user (playground owner or
player) and entering verification code or expiry of the registeration, (2) logging in, (3) creating
a profile for the owner and adding a playground and its available times and price, (4) booking
a time slot on the playground, (5) approving a playground by administrator, (6) viewing
playgrounds and filtering them and (7) creating a team and sending them email.
3- You will implement the necessary domain classes and control classes needed for these
functionalities.
4- Implement a UI (Console-based or GUI) for this task. Write a Main class to run your
implementation.
2
CS251: Intro to Software Engineering
Second Semester Prpject – v1.0
Due Date & Submission Link: To Be Announced by FCAI
Cairo University, Faculty of
Computers and Information
Option 2
You will do ALL the items under option 1 + Develop SRS and use case model and tables for the
following problem.
Our system Go Meeting (GoMe) is a booking system for meeting rooms. Anyone can register himself
on the system and create a profile. He can see the meeting rooms near to him or in a specific area or
all of them.
Meeting room owner. This is the person / company who wants to register his room. He first registers
himself on the system and creates a profile, with his name, ID and password, email, phone and
default location. Then he requests registering a meeting room and adds its name, its location, its
capacity, the available facilities and booking hours, the price per hour and the cancellation period. A
room is not active until approved by the administrator who may check if information given is true.
The administrator has the right to delete a room or suspend it. This is usually the case if the owner
does some fraudulent activities like double booking or if the meeting room gets a lot of complaints
from the users. Then the administrator can activate it again or delete it completely.
The owner can set and change the hours available for booking for his meeting room. He can view his
bookings. And he can check the money in his eWallet.
3
CS251: Intro to Software Engineering
Second Semester Prpject – v1.0
Due Date & Submission Link: To Be Announced by FCAI
Cairo University, Faculty of
Computers and Information
An eWallet is an electronic payment system used to allow users to pay for the bookings they make
and allow ground owners collect their money. It is externally connected with a service like Fawry that
allows users to add money to their eWallet and ground owners to take the money from it. Any user
can check the money in his eWallet or transfer some of it to another eWallet. Adding money to the
eWallet happens outside the system boundary.
User. This is a person who is interested in booking a meeting room. He registers with the system and
creates a profile as described above. He can display the rooms near to him or in a specific location on
specific dates. He can filter them by the hours and date he selects. He can book a time slot of 1 or
more hours if available and not booked. Booking includes (1) Checking available meeting rooms and
time slots (2) Selecting the free time slot(s) he wants (3) Calculating the total price (4) Paying the
amount from his eWallet to the eWallet of the owner (5) The system updates the status of the
booked slot(s) so no one else can book it, and optionally (6) The user can send invitation to his group
members via email. To make this last step easy, he can create his favorite meeting group and store
their names and emails. Then he can select the entire group. Or he can enter individual names and
emails or select the group and then modify some members. A user can also cancel a booking if within
the cancellation period.