Software Design: The Social Ads System Project
Online Social Advertisement is a marketing agency that wishes to establish an online system | Social Ads | to host advertisements about businesses’ services: location, o erings, opening hours, promotional deals and updates on their ser-vices. Social Ads is made up of two sub-systems: the advertiser sub- system and the consumer system. Your task for deliverable D2 Part 2 involves enrich-ing a partial class diagram of Social Ads with design patterns and extending the provided Java implementation from D2 Part 1 to implement these design patterns.
Within Social Ads, consumers who wish to bene t from discounts on advertised services can subscribe to Social Ads. A consumer can subscribe and create a pro le in their own name as an individual consumer, or in the name of a business that the consumer works for, as a corporate consumer. The consumer subscrip-tion is subject to a monthly fee. Once they are subscribed, consumers can rank/provide reviews on services, search for services in di erent search modes. Upon subscription, the consumer receives a loyalty card which will be used as a veri cation when they are trying to claim bene ts from their account. Inter-nally, the system also uses that loyalty card to check that a consumer is only allowed to upload a review or ranking on a service.
In return for the monthly subscription that they pay, consumers (both cor-porate and individual) would get discounts on the products they buy (in the case the advertiser sells actual physical products), getting higher priority in bookings, and discounts on gym memberships for example. Assumptions about the scope of Social Ads are presented in the next section. Requirements of the consumer sub-system are detailed in Table 1.
The use of the word \system" throughout this document refer to the web-site of Social Ads available to its advertisers and consumers.
"Rank"/"Rate" refers to giving a star rating/ranking to on an advertise-ment without a written review. "Review" refers to leaving a written review on the service being advertised.
Social Ads maintains a database made up of advertisements and reviews/ratings. The advertisers are developed pro t organisations rather than companies that are still under development or non-pro t organisations.
The system con rms the age limit of the individual consumers is above 18 by requesting a driving license number or passport number in order to check the date of birth.
In the case of a corporate consumer, his/her age is assumed to be over 18 and it is further assumed that he is in fact an employee of the organisation he/she claims when creating a corporate consumer pro le.
Verifying the bank details and completing nancial subscription payments is outside the scope of Social Ads.
The system uses an external mail server to handle e-mails sent to adver-tisers and consumers.
Upon the completion of any transaction made, the Social Ads is noti ed of its completion.
The system only hosts advertisements for services in the UK.
All subscription payments are assumed to be made in British sterling pounds.
A simple implementation of the requirements in Table 1 is provided on Moodle under the Resources section (the same source code used for D2 Part 1). A partial class diagram is also available under in the Resources Moodle section as a Draw.io le. Use these resources to complete the following tasks.
Extend the provided class diagram using the classes in Figure 1 to show the following:
RRDatabase and RRDisplay to implementing the interface "Observer"
LoyaltyCard to implementing the interface "Subject" ReviewDatabase as a Singleton
IndividualConsumer and CorporateConsumer as subclasses of Consumer with suitable methods
Figure 1: Classes to be used in extending the partial class diagram provided on Moodle
Note this will require the alteration of some methods in the provided class diagram. Show associations (with their multiplicity, labels, and navigabilities). Save a clear image of the extended class diagram in a Word document of PDF le. Add 3-5 sentences explaining what changes you made to the class diagram to accommodate the design patterns listed above.
Use the Integrated Development Environment (IDE) of your choice, extend/change the implementation on Moodle under the Resources section to accommodate the design patterns you added in the class diagram. The following scenarios should be then be implemented.
In SignUp(), the system should ask the consumer to identify as an indi-vidual or corporate consumer. The appropriate object type should then be created.
After the consumer reviews or rates an advertisement the loyaltyCard should update rrDatabase(display reviewed/rated advertisements) and rrDis-play(store all reviewed/rated advertisements) in accordance with the Ob-server pattern.
Put the Java class les of the whole extended system a zip le.
In your extended implementation change the simulation() method to show out-put for the following scenario.
The customer is an individual consumer The details of the consumer are printed The consumer searches
{ ("Double Glazing","B42 2SU") { ("Books","DY1 4YP")
{ ("Books","DY1 4VP")
The consumer displays all searches Activity is registered on
{ "Smiths:Bay Window" { "Johnsons:Bay Window"
The consumer displays all reviewable/ratable advertisements The consumer selects the following to review
{ "Smiths:Bay Window" { "B&Q:Hammer"
The consumer displays all reviews from rrDisplay The consumer selects the following to rate
{ "Smiths:Bay Window" { "Screw x:Screw Driver"
The consumer displays Reviews from rrDisplay
The reviewed/rated advertisements are printed from rrDattabase
Save the output traces to the same Word document/PDF le used in Task 3.1.
Draw the sequence diagrams for the following methods:
Save the sequence diagrams in the same Word document/PDF le used in Tasks 3.1 and 3.3.
Deliverable D2 Part 2 is worth 30% of the coursework for the Software Design module.
Table 2 prescribes what should be included in the submission.
Each pair should make one zip le submission including all the contents in Table 2. The zip le should contain:
{ A zip le containing the Java class les of the extended implementa-tion
{ A single word document or PDF containing the output of Tasks 3.1, 3.3 and 3.4 above. Make sure the Word document/PDF le has the student names and IDs of both pair members.
You can use the tool of your choice when drawing the diagrams and IDE of your choice when extending the implementation.