$30
In this Lab, you will use UML tools to draw models using Use-case Diagrams, Class, Sequence and State-Chart diagrams.
Hopefully you have gone through PreLab5, downloaded and installed VisualParadigm Community Edition which is free (but leaves a small watermark on your diagrams). If you have not installed it on your machines, please do so. VisualParadigm makes it easy to draw various UML diagrams. The link for downloading and installation on Macs seems to point to the same link as for Windows users. If Mac users have not been able to install it, you may use Draw.io, an online tool. UMLet is another choice, but VisualParadigm gives you more flexibility.
VisualParadigm
Draw.io
Create a folder called Lab5.
You will do four exercises in this lab. You can do each exercise using VisualParadigm (recommended) or Draw.io or any other UML tool you are already familiar with.
Using VisualParadigm
Once you have installed VisualParadigm, you can open it and choose the UML diagram you want to create. For most of the diagrams, the tool gives you options to start with a blank diagram or an example template which you can edit for your purpose. You should export the diagram as an image file and save it under Lab5 folder.
Using Draw.Io
You will use draw.io (go to https://app.diagrams.net/) to draw the diagrams in exercises. Choose Device (your local machine) to store your diagram and click New Diagram. You will see the following page.
Choose the option, BlankDiagram and it will ask you to choose a name. From the options shown on the left, choose UML (see diagram below)
Now, you will see the different icons and relationship lines applicable in UML. Select them and draw your diagrams.
Note: You are required to create the diagrams using any one of the UML tools - VisualParadigm or Draw.io or any other UML tool you are familiar which allows you draw the diagrams required.
The diagrams you will draw will use the description of a system described below.
DreamHome_RealEstateAssistant (DHA) is a software system to help real-estate agents to list and sell houses.
The DHA system allows a seller to list their house for sale by providing the details of the house, price and the date it is available. The seller adds his/her details including name, address and contact information. A seller is assigned to an agent in the RealEstate co.
A potential buyer registers with DHA by providing his/her details, the type of house wanted, desired location, price range and other requirements. A buyer is assigned to an agent in the RealEstate co. DHA sends information to the buyers, once a week, about houses on the market that meet their requirements.
When a buyer shows interest in a house, DHA schedules a house tour. When a buyer agrees to purchase a house, he/she makes an offer through the RealEstate Agency. If the seller agrees on the price, an appraisal of the house is scheduled. On successful appraisal, an application may be filed with a bank for a loan (this is optional since a buyer may pay cash for the transaction). The sale will be final once the payment is made to the buyer either via cash or a bank loan.
Note: you are free to make any reasonable assumptions about the software system.
Exercise 1 - Use Case Diagram
You will draw the Use-Case Diagram showing the important use-cases of DHA and the actors.
Identify the actors: Buyer, Seller, Agent, DHAManagement for example. Identify at least 2 other actors (think appraisals, loans etc).
Identify the Use Cases:
Some of the uses are: List a property, Sell a property, Buy a Property and so on. Identify others (think of appraisal, financing etc). Make sure that you connect the usecases with a dependency line (includes or extends) where applicable.
Exercise 2 - Class Diagram (simplified)
What are the different classes that you can identify in the problem description?
A Buyer, Seller, DHA, Property and so on. Create a Class Diagram with the classes given (you must identify at least one more) and draw them with some of the important attributes and operations. Connect the classes using association line, where you label the line, identify the cardinality (how many to how many). Most of the relations are binary (two classes involved) but some may involve three (a buyer buys a property from a seller).
Exercise 3 - Sequence Diagram
Draw a Sequence diagram for the following scenario where a buyer wants to buy a property through DHA.
The scenario starts with the buyer object making an offer on a property – this is done by the Buyer sending a message, makeOffer(propertyId,amount) to a DHA object. The DHA object, sends a message, offerOnProperty(propertyId, offerDetails) to Property object.
On receiving the message, offerOnProperty(), the Property object sends a message, notifySeller(offerDetails) to Seller object. The Seller object sends acceptOffer(offerDetails) to DHA object, which in turn sends a message, offerAccepted(propertId) to Buyer object.
On receiving the message, offerAccepted(), buyer object sends a message, applyForLoan(propertyDetails,amount) to Bank object. At the same time (asynchronously), the buyer object sends a message, scheduleAppraisal(propertId) to Appraiser object.
The buyer object, on receiving the reply (appraisalOk()) from Appraiser object and loanGranted() reply from Bank object, sends a message, loanApproved(propertId) to DHA object, which sends the message, sold() to Property object.
Exercise 4 -State Chart
Draw a state chart for a Property object. A Property object starts from an Available (initial state) and transitions to Listed, UnderOffer, SalePending, Sold, Unlisted states. A Property object moves from its initial state to Listed state on the event, makeRealEstateListing. From Listed, a Property object moves to UnderOffer, when a buyer makes an offer. When it is in UnderOffer state, it can accept more offers (it stays in the same state). From UnderOffer, a Property object moves to SalePending, when the seller accepts the offer. On entering SalePending state (entry event), scheduleAppraisal() should take place. While in (do event) SalePending state, applyForBankLoan() should take place.
From SalePending, a Property object moves to Sold, when the appraisal_ok and bank loan sanctioned. From Sold state, the Property object moves to UnListed state (final state). From any of the states, the final state can be reached on removeFromListing event.