辅导COMP/2013、讲解python/c++、讲解UML DESIGN、辅导Python, C/C++设计
- 首页 >> Python编程COMP/2013 (Lab 03 - 2018)
1
LAB 3: UML DESIGN GROUP PROJECT
Aims:
Practice your object oriented analysis and design/maintenance skills
Practice working in small design teams
Consider how to design software with lower maintenance effort in the future
You are supposed to work with your group project group members on this!
THE STUDENTSHIP MATCH APPLICATION
You have been asked by the Student Union to develop a new "Student-Internship Match"
application for them. A legacy system exists but it was abandoned some years ago. The idea
is to match students with the right skillset to internship offers provided by local companies.
Before students and companies can use the application they need to register and once they
received their username/password they can log in. After registration students and
companies need to add a profile which will be stored in a database (together with their login
details). The profile can be edited at any time. Companies can then start posting job offers
which will be stored in the database. Student profiles consist of student details and skills
while job offers consist of company details, a job description and requirements. Skills and
requirements are to be submitted in form of predefined keywords so that they are easy to
be matched in later searches.
Once the data has been stored in the database students as well as companies can then
query the database and a query engine will try to match job offers with student profiles and
vice versa. At a later stage the student union is planning to replace the keyword search with
an intelligent query engine. It is a requirement that the application is designed following
object oriented principles and that it is easy to maintain and extend. If you have any ideas
for extensions in order to improving the usability of the application you are encouraged to
add these to your design.
The legacy system was operated by a secretary who would handle all the data input and
search requests. The only surviving design artefact from this system is the class diagram
shown in Figure 1.
COMP/2013 (Lab 03 - 2018)
2
Figure 1: Legacy system class diagram
YOUR TASK
Find your group project group members and work together for the object oriented analysis
and design of this application.
You are asked to produce the following for the new "Student-Internship Match" application:
Use-case diagram for the described application
Complete use case specification for a non trivial use case (e.g. "search for jobs")
Activity diagram of the same use case
Sequence diagram of the same use case
Class diagram
o Classes including key attributes and operations o Relationships
o Multiplicity indicators
Non trivial state machine diagram for one of the classes
Remember that this is a group exercise - so you should work together with your peers. We
recommend using pen and paper for an initial brain storming of your ideas (with the whole
team) and then swapping to Visual Paradigm for finalising your diagrams (you find Visual
Paradigm on the lab machines but you can also download and install a free Community
edition on your own machine). For finalising the diagrams perhaps two team members
should work together - XP style :). Make sure that all your diagrams are coherent in the end
and be prepared to explain your design to the lab helpers during the last half hour of the
lab.
COMP/2013 (Lab 03 - 2018)
3
Link for downloading Visual Paradigm Community Edition:
https://www.visual-paradigm.com/download/community.jsp
Visual Paradigm Quick Guide:
https://cdn.visual-paradigm.com/quickstart/quickstart.pdf
To improve ease of maintainability in the future, try to think about these points when you
design your system:
Keep it as simple as possible (KISS principle)
Keep similar functionality together, and different functionality apart (encapsulation)
o Also known as “high cohesion, and loose coupling”
How easy would it be to change a module or feature in the future?
How good are your diagrams at explaining the system to a new programmer?