(1) Developing a UML Statechart
- Read the Background and Requirements sections for detailed information about the system.
- Create a UML Statechart diagram to express the behavior of the model. You must use a drawing tool to prepare your diagram, ensuring that it is clear and legible.
(2) Interpreting and Producing OCL Expressions
- You are provided a UML Class model that describes a certain scenario. Using this model, you must create OCL expressions, and also provide English interpretations for some OCL expressions.
Include all of your answers for both parts of the assignment in a single PDF file named statechart_ocl.pdf on T-Square. Your PDF must include your UML Statechart, your OCL Expressions, and any additional assumptions that you are making.
(1) UML Statechart Scenario: You have been asked to analyze and diagram the behavior of a specific model of home dehumidifiers. The company for which you are working has already produced a UML Statechart for an earlier, much more basic model of their dehumidifier. You have been tasked to model the behavior of the newer, proposed system, which is significantly more advanced. The system behavior is described in the System Requirements Section below, and you must provide a corresponding UML Statechart diagram that reflects these requirements.
System Requirements:
We've developed a very basic dehumidifier model already. This model was designed with a fixed, non-adjustable humidity level, a single fan speed, and an automatic shutoff if the water tank is full. The UML Statechart that we've provided you corresponds to this very basic model. The intent of providing the diagram is to help you get an intuitive feel for the basic dehumidifier functionality. You are welcome to use this diagram as a starting point for your own efforts, simply study it to gather useful ideas, or disregard it and start from scratch.
In contrast, you've been tasked to develop a UML Statechart for a more advanced model, which improves on the basic model by adding an adjustable humidity level, multiple fan speeds, and energy saver settings. The dehumidifier has a fan motor (to create airflow through the unit), and a separate compressor motor (to draw moisture from the air). We've attached a copy of the dehumidifier instructions that describe the control panel and the basic features, and we will add clarifying guidance below.
Extra Clarifying Guidance to the Instructions:
1. POWER Key: When the Power Key is pressed, the fan and compressor motors should start or stop fairly immediately.
5. ENERGY TIMER Key: The Energy Timer functions are driven by a continuously running clock that will be referred to as the delay timer. The Energy Timer key actually toggles between three settings: 3 hours, 6 hours, and Off (continuous operations). When the delay timer reaches a natural 3 hour or 6 hour interval boundary that matches the current Energy Timer setting, then the system sends a signal to toggle the fan and compressor's On/Off status. Pressing the Energy Timer key adjusts the delay timer settings, but does not necessarily cause the fan and compressor motor settings to start or stop immediately.
7. AUTO RESTART: Don't be concerned with creating "extra" states and/or transitions to support the persistence of settings after a power outage. We will use memory components (e.g. think USB-based flash memory) that allow the systems to maintain their settings in the event of power loss.
Suggestions:
- Make sure that you've identified the basic subcomponents of the dehumidifier, to include the fan motor, the compressor motor, and the various buttons and lights of the control panel. You are also welcome to make reasonable assumptions about the existence of any other sensor, timers, etc. that are needed to implement the required functionality.
- You should leverage concurrent and nested state machine concepts (as discussed in the Harel paper and various online websites) to model the different components.
- Make sure that you have defined the default states for each concurrent machine; labeled transitions with events or guards; and, in general, produced a readable diagram.
- One way that you can judge the quality of your answer is by (manually) simulating its behavior for common situations - for example, consider what happens when certain events transpire. Make sure to consider "edge cases", including situations when multiple events occur at nearly the same time.
- Don't "overdesign" your solution: try to keep it as simple as possible, and use a minimum of components, states, etc.
![1532_Java Project.jpg](https://secure.tutorsglobe.com/CMSImages/1532_Java Project.jpg)
Given this design, you must write the following constraints in OCL, in each case making the context clear:
1. If the shipping type for and order is "express", then the order must be shipped within 48 hours of the date it is created.
2. If a customer creates an order that includes more than $100 of merchandise, then they should receive free shipping for all of the included items.
3. Drones (represented by product IDs 50 through 99, inclusive) may not be shipped to Area 51 (represented by shipping region 19).
Also, another analyst generated the OCL expressions below. Provide a clear and concise interpretation for each of these expressions in English.
1. context Orders inv:
orders.dateShipped - orders.dateCreated >= 7 days implies orders.shippingCost = 0
2. context OrderDetails inv:
orderDetails.calcPrice >= orderDetails.quantity * orderDetails.unitPrice