Tutorial Systems Eng Rhapsody
Tutorial Systems Eng Rhapsody
Before using the information in this manual, be sure to read the Notices section of the Help or the PDF available from Help > List of Books.
This edition only applies to IBM Rational Rhapsody 7.4. Copyright IBM Corporation 1997, 2009. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
ii
Contents
Creating Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Project Files and Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Rational Rhapsody Guided Tour for Systems Engineers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Main Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Drawing Toolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Output Window and Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Rational Rhapsody
iii
Table of Contents
Defining Use Case Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Associating Actors with Use Cases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Drawing Generalizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Drawing the Place Call Overview UCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Drawing the Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining Use Case Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Drawing Generalizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Drawing Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Setting the Display Options for Model Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Drawing Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Defining the Stereotype of a Dependency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23 25 26 27 27 28 28 29 29 29 30
System Behaviors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Sequence Diagrams Describing Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Creating a Sequence Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Adding the Actor Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Drawing Classifier Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Drawing Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Rational Rhapsody
iv
Table of Contents
Rational Rhapsody
Table of Contents
Rational Rhapsody
vi
Rational Rhapsody
The SysML profile also contains read-only (RO) packages and a read-only ProfileStructure object model diagram for you to use as reference of the available Rational Rhapsody SysML features in the profile.
Note
The items listed under Profiles in the browser are not intended to be used as part of a working model. They are for information purposes only. When you create a new project, Rational Rhapsody creates a directory containing the project files in the specified location. The name you choose for your new project is used to name project files and directories, and appears at the top level of the project hierarchy in the Rational Rhapsody browser. Rational Rhapsody provides several default elements in the new project, including a default package, component, and configuration.
Note
To minimize the complexity of the tutorial, the operations have been simplified to focus on the function of placing a call.
Rational Rhapsody
2. In the Project name field, type Handset as the name of the project. 3. In the In folder field, enter the directory in which the new project will be located, or click the Browse button to select the directory.
Starting Rational Rhapsody 4. In the Type field, select the SysML profile so that you will be able to use the SysML modeling language and all of the systems engineering diagrams. Your dialog box should resemble this example.
5. Click OK. Rational Rhapsody verifies that the specified location exists. If it does not, Rational Rhapsody asks whether you want to create it. 6. Click Yes. Rational Rhapsody creates a new project in the Handset subdirectory, opens the project, and displays the browser in the left pane.
Note
If the browser does not display, select View > Browser.
Saving a Project
Use the Save command to save the project in its current location. The Save command saves only the modified units, reducing the time required to save large projects. To save the project to a new location, use the Save As command. Rational Rhapsody performs an autosave every ten minutes to back up changes made between saves. Modified units are saved in the autosave folder, along with any units that have a time stamp older than the project file. To save the project in the current location, use one of the following methods: 1. Select File > Save. 2. Click the Save button in the toolbar.
Rational Rhapsody
Creating Backups
To set up automatic backups for your new project: 1. In the browser, right-click the Handset item in the browser list. 2. Select Features. 3. Click the Properties tab at the top of the dialog box that then displays. 4. Click the All radio button to display all of the properties for this project. 5. Expand the General and then the Model property lists. (Rational Rhapsody descriptions use a notation method with double colons to identify the location of a specific property, for example, General::Model::BackUps.) 6. Locate the BackUps property and select Two from the drop-down menu, as shown below. With this setting, Rational Rhapsody creates up to two backups of every project in the project directory.
7. Click OK. After this change, saving a project more than once creates <projectname>_bak2.rpy contains the most recent backup and the previous version in <projectname>_bak1.rpy. To restore an earlier version of a project, you can open either of these backup files.
Note
Rational Rhapsody requires the project file (<project_name>.rpy) and the repository directory (<project_name>_rpy) to simulate the model.
Rational Rhapsody
Browser
Drawing Toolbar
Drawing Area
Main Menu
The main menu across the top of the window provides file management capabilities and access to special tools. Many of the menu options can also be performed using the buttons below the menu.
Drawing Toolbar
Rational Rhapsody displays different buttons on the Drawing toolbar for each UML or SysML diagram type. The uses of the individual buttons are demonstrated within this tutorial as they are used.
Browser
The browser shows the contents of the project in an expandable tree structure. By default, it is the upper, left-hand part of the Rational Rhapsody GUI. The top-level folder, which contains the name of the project, is the project folder or project node. Although this folder contains no elements, the folders that reside under it contain elements that have similar characteristics. These folders are referred to as categories. A project consists of at least one package in the Packages category. A package contain elements, such as and diagrams. Rational Rhapsody automatically creates a default package called Default, which it uses to save model parts unless you specify a different package.
Rational Rhapsody
Note
Remember that the names used in the Rational Rhapsody models are going to be automatically written into the generated code. Therefore, the names should be simple and clearly label all of the elements.
Standard Prefixes
Lower and upper case prefixes are useful for model elements. The following is a list of common prefixes with examples of each: Event names = ev (evStart) Trigger operations = op (opPress) Condition operations = is (isPressed) Interface classes = I (IHardware)
10
Rational Rhapsody
11
Note
Any of the model elements within the above packages can be linked to other elements to demonstrate requirements traceability. To organize your model into the logical packages: 1. In the browser, expand the Packages category. 2. Double-click the Default package and rename it HandsetRequirements. 3. Right-click Packages in the browser and select Add New Package. Rational Rhapsody creates a package with the default name package_n, where n is greater or equal to 0. 4. Create more packages named Analysis, Architecture and Subsystems, as shown in this browser example.
12
This section describes importing requirements using the Rational Rhapsody Gateway and using use case diagrams (UCDs) to show the main system functions and the entities that are outside the system (actors). The use case diagrams specify the requirements for the system and demonstrate the interactions between the system and external actors.
Rational Rhapsody
13
Note
Rational Rhapsody supports both black-box (probing the external behavior of a program with inputs) and the next white-box (understanding the program code) analysis approaches. First, consider the actors that interact with the system:
MMIHandset user interface, including the keypad and display NetworkSystem network or infrastructure of the signalling technology
Next, consider the system function points: The handset enables users to place and receive calls. The network receives incoming and outgoing call requests, and tracks users. The actors interact with the system in the following ways: The MMI places and receives calls. The network tracks users, monitors signal strength, and provides network status and location registration.
14
Specification
The mobile shall be fully registered before a place call sequence can begin. The mobile shall have a signal strength within +/- 1 of the minimum acceptable signal. The mobile shall be able to place short messages while registered. The mobile shall be able to receive short messages while registered. The mobile shall be able to receive data calls at the rate of 128 kbps. The mobile shall be able to send data at the rate of 384 kbps. The mobile shall be able to receive streaming video at 384 kbps. The mobile shall be able to receive a maximum of 356 characters in a short message. The optimal size of messages the mobile can send in a text message is 356 characters.
To add these requirements to Rational Rhapsody: 1. In the browser, right-click the HandsetRequirements package, and select Add New > Requirement. Rational Rhapsody creates the Requirements category and a requirement with a default name of requirement_n, where n is greater than or equal to 0. 2. Rename the requirement Req.1.1. 3. Double-click Req.1.1, and the dialog box opens.
Rational Rhapsody
15
5. Click OK to apply the changes and close the dialog box. 6. Add the remaining requirements and their specifications in the same manner.
16
e. f.
Click OK to close the Compartments dialog box. Click OK to close the Display Options dialog box.
5. Carry out the following steps to specify that the Specification text should be displayed for all requirements subsequently added to the diagram: a. Right-click Req.4.2 in the diagram, and select Make Default. b. c. In the Make Default dialog box, make sure that Display Options is selected, and make sure that Diagram is selected under Level. Click OK.
6. Select Req.4.1 and drag it below Req.4.2. 7. Select Req.3.2 and drag it to the top center of the drawing area. 8. Select Req.4.0 and drag it to the lower left side of Req.3.2. 9. Select Req.5.6 and drag it to the lower right side of Req.3.2. 10. Select Req.6.2 and drag it below Req.5.6.
Rational Rhapsody
17
2. Draw a dependency line from Req.4.2 to Req.4.1. Right-click the line and select Features from the menu. Select derive as the Stereotype, as shown in this example.
3. Click OK to save the change and close the dialog box. 4. Draw a dependency line from Req.4.1 to Req.4.0. Right-click the line and select Features from the menu. Select derive as the Stereotype and click OK. 5. Draw a dependency line from Req.4.0 to Req.3.2. Right-click the line and select Features from the menu. Select trace as the Stereotype and click OK. 6. Draw a dependency line from Req.5.6 to Req.3.2. Right-click the line and select Features from the menu. Select trace as the Stereotype and click OK. 7. Draw a dependency line from Req.6.2 to Req.5.6. Right-click the line and select Features from the menu. Select derive as the Stereotype and click OK.
18
Rational Rhapsody
19
Rational Rhapsody automatically adds the dependency relationships to the browser as shown in this example.
20
2. Click in the upper, left corner of the drawing area and drag to the lower right. Rational Rhapsody creates a boundary box, named System Boundary Box. 3. Rename the boundary box Handset Protocol Stack.
2. Click the left side of the drawing area. Rational Rhapsody creates an actor with a default name of actor_n, where n is greater than or equal to 0. 3. Rename the actor MMI, then press Enter.
Rational Rhapsody
21
Note
Because code can be generated using the specified names, do not include spaces in the names of actors. 4. Draw an actor on the right side of the drawing area named Network, then press Enter. At this point, the browser and diagram should be similar to this example.
strength. Rational Rhapsody automatically adds the Use Case Diagrams category and the new UCD to the package in the browser and opens the new diagram in the drawing area. To draw these use cases in the Functional Overview: 1. Click the Create Use Case button on the Drawing toolbar.
22
2. Click in the upper left of the boundary box. Rational Rhapsody creates a use case with a default name of usecase_n, where n is equal to or greater than 0. 3. Rename the use case Place Call. 4. Create three more use cases inside the boundary box named Supplementary Service, Receive Call, and Provide Status. At this point the Functional Overview diagram should be similar to this example.
Rational Rhapsody
23
To use the internal editor to enter the text, click the ellipse button. The completed dialog box should resemble this example.
3. Click OK to apply the changes and close dialog box. 4. Open the Features dialog box for the Supplementary Service use case, and type the following in the Description text field to describe its purpose:
A supplementary service is a short message, call forwarding, call holding, call barring, or conference calling.
5. Click OK to apply the changes and close dialog box. 6. Open the Features dialog box for the Receive Call use case, and type the following in the Description text field to describe its purpose:
General function of the system is that it must be able to receive and terminate calls.
7. Click OK to apply the changes and close dialog box. 8. Open the Features dialog box for the Provide Status use case, and type the following in the Description text field to describe its purpose:
24
The stack must be able to communicate with the network in order to provide the user with visual status such as signal strength and current registered network. It must also be able to handle user requests for network status and location registration.
2. Click the edge of the MMI actor, then click the edge of the Place Call use case. Rational Rhapsody creates an association line with the name label highlighted. You do not need to name this association, so press Enter. 3. Create an association between the MMI actor and the Receive Call use case, then press Enter. 4. Create an association between the Network actor and the Receive Call use case, then press Enter. 5. Create an association between the Network actor and the Provide Status use case, then press Enter. 6. In the browser, expand the Actors category to view these relations for the actors and use cases. The MMI actor has two new relations:
itsPlace CallThe role played by the Place Call use case in relation to this
actor
itsReceive CallThe role played by the Receive Call use case in relation
to this actor The Network actor also has two new relations:
itsProvide StatusThe role played by the Provide Status use case in
to this actor
Rational Rhapsody
25
Drawing Generalizations
A generalization is a relationship between a general element and a more specific element. The more specific element inherits the properties of the general element and is substitutable for the general element. A generalization lets you derive one use case from another. The Supplementary Service use case is a more specific case of placing a call, and it is a more specific case of receiving a call. In this example, you will draw generalizations indicating that Supplementary Service is derived from the Place Call use case and the Receive Call use case. To draw a generalization: 1. Click the Create Generalization button on the Drawing toolbar.
2. Click the Supplementary Service use case and draw a line to the Place Call use case. 3. Click the Supplementary Service use case and draw a line to the Receive Call use case. 4. In the browser, expand the Supplementary Service use case and note that Place Call and Receive Call are SuperUseCases for Supplementary Service. You have completed drawing the Functional Overview UCD. Your diagram should be similar to this example.
26
placing a call.
Voice CallThe user can place and receive voice calls, either while transmitting or
receiving data, or standalone. It is a more specific case of placing a call. To draw the use cases: 1. In the browser, expand the Analysis package and Use Cases category. 2. Select the Place Call use case and drag it to the top center of the UCD. 3. Click the Create Use Case button on the Drawing toolbar.
4. Create a use case in the lower left of the drawing area, named Data Call. 5. Create a use case in the lower right of the drawing area, named Voice Call.
Rational Rhapsody
27
3. Click OK to apply the changes and close the Features dialog box. 4. Double-click the Voice Call use case, or right-click and select Features. The Features dialog box opens. 5. In the Description text field, type the following text to describe its purpose:
The user must be able to place or receive voice calls, either while transmitting or receiving data, or standalone. The limit of the voice calls a user can engage in at once is dictated by the conference call supplementary service.
6. Click OK to apply the changes and close the Features dialog box.
Drawing Generalizations
In this example, draw generalizations to show that the Data Call use case and the Voice Call use case derive from the Place Call use case as follows: 1. Click the Create Generalization button on the Drawing toolbar.
2. Click the edge of the Data Call use case and draw the line to the edge of the Place Call use case. 3. Click the edge of the Voice Call use case and draw the line to the edge of the Place Call use case. In the next section, you add the requirements elements to the model and then draw the requirements on the Place Call Overview UCD.
28
Drawing Requirements
You can add requirement elements to UCDs to show how the requirements trace to the use cases. To add the requirements to the use case diagram: 1. Select Req.1.1 and drag it to the right of the Place Call use case. 2. Select Req.4.1 and drag it to the lower left of the Data Call use case. 3. Select Req.4.2 and drag it to the lower right of the Data Call use case.
Drawing Dependencies
In this example, draw dependencies between the requirements and the use cases as follows: 1. Click the Dependency button on the Drawing toolbar.
2. Click the Req.1.1 requirement and draw a line to the Place Call use case. 3. Click the Req.4.1 requirement and draw a line to the Data Call use case. 4. Click the Req.4.2 requirement and draw a line to the Data Call use case. 5. Click the Req.4.2 requirement and draw a line to Req.4.1. 6. In the browser, expand the Requirements category to check that the dependency relationship is listed there.
Rational Rhapsody
29
30
Your completed drawing the Place Call Overview UCD should be similar to this example.
Rational Rhapsody
31
32
Internal and Block Definition diagrams define the system structure and identify the large-scale organizational pieces of the system. They can show the flow of information between system components, and the interface definition through ports. In large systems, the components are often decomposed into functions or subsystems. This section demonstrates the creation of the following block diagrams: Protocol Stack Architecture (Block Definition Diagram) identifies the system-level components and flow of information ConnectionManagement (Internal Block Diagram) DataLink Connections (Internal Block Diagram) MobilityManagement (Internal Block Diagram) Depending on your workflow, you might identify the communication scenarios using sequence diagrams before defining the flows, flow items, and port contracts. In addition, you might perform black-box analysis using activity diagrams, sequence diagrams, and statecharts, and white-box analysis using sequence diagrams before decomposing the systems functions into subsystem components. Block diagrams define the components of a system and the flow of information between components. Structure diagrams can have the following parts: Block contains parts and might also include links inside a block. Actors are the external interfaces to the system. Standard Port is a distinct interaction point between a class, object, or block and its environment. Dependency shows dependency relationships, such as when changes to the definition of one element affect another element Flow specifies the exchange of information between system elements at a high level of abstraction.
Rational Rhapsody
33
34
Drawing Blocks
Blocks specify the components of the system. The Handset model contains the following three system components or functions:
ConnectionManagementBlock handles the reception, setup, and transmission of
To draw the blocks: 1. Click the Block button in the Drawing toolbar.
2. In the top center of the drawing area, click-and-drag or just click. Rational Rhapsody creates a block with a default name of block_n, where n is equal to or greater than 0. 3. Rename the block ConnectionManagementBlock. 4. In the upper right of the drawing area, create a block named MobilityManagementBlock. 5. In the bottom right of the drawing area, create a block named DataLinkBlock.
Rational Rhapsody
35
36
2. Click the left edge of ConnectionManagementBlock and create a standard port named call_req. This standard port sends and relays messages to and from the user interface. 3. Click the right edge of ConnectionManagementBlock and create a standard port named network. This standard port sends and relays messages from MobilityManagementBlock. 4. Click the right edge of MobilityManagementBlock and create a standard port named mm_network. This standard port sends and relays messages from ConnectionManagementBlock. 5. Click the bottom edge of MobilityManagementBlock and create a standard port named mm_dl. This standard port relays registration information to DataLinkBlock. 6. Click the top edge of DatalinkBlock and create a standard port named dl_in. This standard port relays information between DataLinkBlock and MobilityManagementBlock. 7. Click the left edge of DatalinkBlock and create a standard port named data_net. This standard port relays information between DataLinkBlock and the network. Rational Rhapsody automatically adds the standard ports you created to the Blocks category in the browser.
Rational Rhapsody
37
38
Note
The number 1 that appears in the upper left hand corner of the object boxes indicates the number of parts in a particular block or actor that exists in this architecture. The user can set the number manually, but for this example, the number of parts is limited to 1 for each element.
Rational Rhapsody
39
2. Click once on the ui_req standard port and once on the call_req standard port to create a connector. Press Enter. 3. Connect the network and mm_network standard ports in the same manner. 4. Connect the mm_dl and dl_in standard ports. 5. Connect the data_net and net_in standard ports.
Drawing Flows
Flows specify the exchange of information between system elements. They allow you to describe the flow of data and commands within a system at an early stage, before committing to a specific design. To draw flows between ports, objects, and blocks: 1. Click the Flow button on the Drawing toolbar.
2. To create a flow, click in the middle of the connector between ui_req and call_req standard ports. Press Enter. 3. Create a flow on the connector between network and mm_network standard ports. Press Enter. 4. Create a flow on the connector between mm_dl and dl_in standard ports. Press Enter. 5. Create a flow on the connector between data_net and net_in standard ports. Press Enter.
40
Rational Rhapsody
41
42
8. Create a flow item for the flow between the data_net port and the Network actor named NetworkRequests. This flow item represents all network information into and out of the system. At this point the diagram should resemble this example.
9. In the browser, expand the Flows category and the Flow Items category to view the newly created flows and flow items, as shown in this example.
Rational Rhapsody
43
44
Note
Depending on your workflow, you might identify the communication scenarios using sequence diagrams before defining the port contracts. Refer to the Creating a Sequence Diagram section for more information. To specify the port contract: 1. Double-click the mm_dl port, or right-click and select Features. 2. Select the Contract tab. 3. Select the Provided folder button and click the Add button. The Add new interface dialog box opens. 4. Select <New> from the drop-down list, and Click OK. 5. When the Features dialog box for the new interface is displayed, enter the name In. 6. Click OK to close the Features dialog box. 7. Select the Required folder button and click the Add button. The Add new interface dialog box opens. 8. Select <New> from the drop-down list, and Click OK. 9. When the Features dialog box for the new interface is displayed, enter the name Out.
Rational Rhapsody
45
10. Click OK to close the Features dialog box. The dialog box lists the interfaces you just specified. 11. Under Provided Interfaces, select In.
12. Click Edit. 13. When the Features dialog box for the In interface is displayed, click the Operations tab. 14. On the Operations tab, click <New> and select Reception. 15. Type AlertCnf for the Event name and click OK. A message displays that an event with the selected name could not be found. Click Yes to create the new event. Rational Rhapsody adds the reception to the Operations tab. Repeat this step to create a Reception called ChannelOpen. 16. Click OK to close the Features dialog box for the In interface. 17. Now, repeat the previous steps for the Out interface (under Required Interfaces), creating the Receptions Alert and RegistrationReq. 18. Click OK to close the Features dialog box for the Out interface..
19. Click OK to close the Features dialog box for the mm_dl port. Rational Rhapsody adds the provided and required interfaces to the mm_dl port in the Block Definition Diagram. Rational Rhapsody also adds the receptions to the Events category in Architecture
46
package in the browser. 20. To specify the port interfaces for dl_in, double-click the dl_in port, or right click and select Features. The Features dialog box opens. 21. Select the General tab and select In from the Contract drop-down list. 22. Select the Contract tab. Rational Rhapsody automatically adds the provided interfaces defined as In. 23. Select the Required folder button, then click the Add button. The Add new interface dialog box opens. 24. Select Out from the drop-down list, then click OK. Rational Rhapsody automatically adds the required interfaces defined as Out. 25. Click OK to apply the changes and close the dialog box.
Rational Rhapsody
47
Reversing a Port
To change the provided interfaces into the required interfaces and the required interfaces into the provided interfaces, reverse the ports, as follows: 1. Open the Features dialog box for the dl_in standard port. 2. In the General tab, set Reversed for the Attributes. The bottom of the Contract tab displays a message in red that the contract is reversed. 3. Click OK to apply the changes and close the dialog box. You have completed the High Level Architecture diagram. Be certain that the Display Options for each object are set to show All Operations, and your High Level Architecture diagram should resemble this example.
48
Note
For ease of presentation, this chapter includes both the system external and internal block diagrams. Depending on your workflow, you might perform further black-box analysis with activity diagrams, sequence diagrams, and statecharts, and white-box analysis using sequence diagrams before decomposing the systems functions into subsystem components.
Organizing Elements
To allocate the blocks from the Block Definition Diagram in the Architecture package, organize them into the elements into their packages using these steps: 1. In the browser, expand the Architecture package and the Blocks category. 2. Click the ConnectionManagementBlock and drag it down into the new ConnectionManagement. 3. Click the DataLinkBlock and drag it into the package.
Rational Rhapsody
49
4. Click the MobilityManagementBlock and drag it into the package. The blocks are removed from the Architecture package and added to the Subsystem packages. Your browser should resemble this example.
Note
It is good practice to test the model as it is developed using the simulation feature. This allows you to determine whether the model meets the requirements and to find defects early in the design process. For more information, refer to the Simulating the Model section.
50
Note
If the standard ports are not visible, right-click ConnectionManagementBlock and select Ports > Show All Ports.
Rational Rhapsody
51
Drawing Parts
In this example, draw the following parts to represent these activities performed by Connection Management: ConnectionTracks the number of valid connections CallListMaintains the list of currently active calls CallControlManages incoming and outgoing calls SMSManages the short message services. SupplementaryServicesManages the supplementary services, including call waiting, holding, and barring To draw parts: 1. Click the Part button in the Drawing toolbar.
2. In the upper, left corner of ConnectionManagement, click or click-and-drag. Rational Rhapsody creates an object with a default name of part_n, where n is equal to or greater than 0. 3. Rename part to be Connection, then press Enter.
52
4. Draw additional parts named CallList, CallControl, SMS, and SupplementaryServices. At this point your diagram should be similar to this example.
2. Click the left edge of the CallControl part and create a standard port named cc_mm. This standard port relays messages to and from MobilityManagement. 3. Click the right edge of the CallControl part and create a standard port named cc_in. This standard port relays messages from the user interface.
Rational Rhapsody
53
Drawing Links
A connector is an instantiation of an flow. You can specify connectors without having to specify the association being instantiated by the connector; you can specify features of connectors that are not mapped to an association. There must be at least one association that connects one of the base classes of the type of one of the objects to a base class of the type of the second object. In this example, draw connectors between objects and ports, as follows: 1. Click the Connector button in the Drawing toolbar.
2. Click the cc_mm port, then click the network port. 3. Click the cc_in port, then click the call_req port. 4. Click the CallControl part, then click the Connection part. 5. Click the CallControl part, then click the CallList part. 6. Click the CallControl part, then click the SMS part. Click the CallControl part, then click the SupplementaryServices part. 7. In the browser, expand the ConnectionManagement category to view the newly created objects under the Parts category and the connectors under the Connectors category. 8. You have completed drawing the Connection Management diagram. Your block diagram should be similar to this example.
54
Note
If the ports are not visible, right-click the internal block diagram in the drawing area and select Ports > Show All Ports.
2. Click or click-and-drag in the center of DataLinkBlock. 3. Type RegistrationMonitor and press Enter.
Rational Rhapsody
55
2. Click the right edge of RegistrationMonitor and create a port named reg_request. This port relays registration requests and results.
2. Click the reg_request port, then click the dl_in port. Press Enter.
56
Rational Rhapsody
57
Note
If the ports are not visible. right-click the block and select Ports > Show All Ports.
2. In the upper, left corner of MobilityManagementBlock, click or click-and-drag. 3. Type Registration, and then press Enter. 4. Draw two more parts named, Location and MMCallControl.
58
Rational Rhapsody
59
60
2. When the Open Parametric Diagram dialog box is displayed, locate the MobilityManagement package under Subsystems. Highlight MobilityManagement and click New. 3. Name the new parametric diagram Update location, as shown here.
4. Click OK. 5. To draw the three parametric constraints, click the Constraint Block button on the Drawing toolbar. (It is the same symbol used to create the diagram, but it is on the Drawing Toolbar in the center of the window.) Draw the required three constraints to calculate the location on a grid:
CoordinateX CoordinateY xylocation
Rational Rhapsody
61
4. Drag these three data attributes from the browser onto the parametric diagram.
Note
Constraint parameters are not supported in Rational Rhapsody in J. Follow these steps: 1. Click the Constraint Parameter button on the Drawing toolbar. Click the outside edges of the constraints to create these constraint parameters: CoordinateX - add sinx and l1 constraint parameters CoordinateY - add siny and l1 constraint parameters xylocation - add coordx and coordy constraint parameters 2. Click the Binding Connector button to create the data flow as follows:
From sinx attribute to the sinx constraint parameter on CoordinateX. From l1 attribute to l1 constraint parameter on CoordinateX. From l1 attribute to l1 constraint parameter on CoordinateY. From siny attribute to siny constraint parameter on CoordinateY. 3. The output from the parametric constraints is used as the input for the calculations. Select the Constraint Parameter button again to create the output constraint parameters from CoordinateX and CoordinateY. Name them coordx and coordy respectively.
62
4. Click the Binding Connector button and draw flows from the new constraint parameters on the CoordinateX and CoordinateY constraints to the corresponding constraint parameters on xylocation.
Adding Equations
To add the required equations to all of the constraints: 1. Right-click the CoordinateX constraint to display the Features dialog box. 2. Type sinx * l1 in the Description area and click Apply to keep the dialog box open. 3. Right-click the CoordinateY constraint and type siny * l1 in the Description area. Click Apply to keep the dialog box open. 4. Right-click the xylocation constraint and type coordx + coordy and click OK. 5. To display the equation in the xylocation constraint, right-click xylocation and select Display Options from the menu.Click the Compartments button. 6. Select Description form the Available list and click the Display button to move it to the Displayed column. Click OK to save this change. 7. Click OK to save the Display Options dialog box.
Rational Rhapsody
63
8. Repeat the previous steps to display the relevant equations in the CoordinateX and CoordinateY constraints. You have completed the parametric diagram. It should resemble this example.
64
System Behaviors
Sequence diagrams describe how structural elements communicate with one another over time and identify the required relationships and messages. Sequence diagrams also show the interactions between actors, use cases, and blocks. Sequence diagrams have an executable aspect and are a key simulation tool. When you simulate a model, Rational Rhapsody dynamically builds sequence diagrams that record interaction between actors, use cases, and blocks.
Rational Rhapsody
65
System Behaviors
Note
You can also create a sequence diagram using the Tools menu or the Sequence Diagram at the top of the Rational Rhapsody window. button
66
3. Click the Network actor and drag-and-drop it to the far right side of the sequence diagram.
6. To add white space to (or remove it from) a sequence diagram (such as between actor lines and classifier roles), press the Shift key and drag the actor line or classifier role to its new location.
Rational Rhapsody
67
System Behaviors
Drawing Messages
A message represents an interaction between parts, or between a part and the environment. A message can be an event, a triggered operation, or a primitive operation. In this example, you draw events that represent the exchange of information when placing a call. The actor issues a request to connect when placing a call. Call and connect confirmations occur between MobilityManagementBlock and ConnectionManagementBlock. Alerts occur between MobilityManagementBlock and DataLinkBlock. The user receives confirmation from ConnectionManagement. To draw messages: 1. Click the Message button on the Drawing toolbar.
2. Click the MMI actor line to show that the first message comes from the MMI actor when the user issues the command to place a call request. 3. Click the ConnectionManagementBlock line to create a straight line. Rational Rhapsody creates a message with the default name message_n(), where n is an incremental integer starting with 0. 4. Double-click the message line and in the dialog box, enter the Name as PlaceCallReq. The Message Type should be Event with <Unspecified> as the Realization. Your changes should resemble this example.
68
6. Draw the following messages with Message Type of Event and <Unspecified> as the Realization: a. From ConnectionManagementBlock to MobilityManagementBlock, named
PlaceCallReq
b. c.
From MobilityManagementBlock to ConnectionManagementBlock, named CallConfirm From MobilityManagementBlock to DataLinkBlock, named Alert
7. Leave a space on the lines for the interaction occurrence (reference sequence diagram) that you create in the next section. 8. Then draw the remaining messages also with Message Type of Event and <Unspecified> as the Realization: a. From MobilityManagementBlock to ConnectionManagementBlock, named
ConnectConfirm
b.
Rational Rhapsody
69
System Behaviors
2. Draw the interaction occurrence below the Alert message and across the MobilityManagementBlock instance line to the Network actor line. The interaction occurrence appears as a box with the ref label in the top corner. 3. Type NetworkConnect as the name of the Interaction Occurrence. You have completed drawing the Place Call Request Successful sequence diagram.
Note
Be sure to check the arrow heads on the messages. They must all be open to be events. At this point you diagram should resemble this example.
70
Drawing Messages
In this example, draw these events: 1. Click the Message button in the Drawing toolbar.
2. Draw the following messages (with the arrows horizontal) with Message Type of Event and <Unspecified> as the Realization: a. From MobilityManagementBlock to DataLinkBlock, named
ConnectionRequest
b. c. d. e.
From DataLinkBlock to Network, named Alert From Network to DataLinkBlock, named AlertCnf From Network to DataLinkBlock, named ChannelOpen From DataLinkBlock to MobilityManagementBlock, named ChannelOpen
Rational Rhapsody
71
System Behaviors
2. Right-click the Interactive Operator box and select Features from the menu. 3. In the General tab, change the Type to be alt. Click OK. This change appears in the upper left corner of the box. 4. Click the Interactive Operand Separator button and click the interaction operator box to divide it into two sections - place the separator such that the last three messages are in the bottom section. 5. Edit the two labels to read [alert=false] and [else]. 6. Click the Interaction Operator button again and draw another box within the first box, in the [alert=false] section, and across all three lines.
72
7. Right-click this box to open the Features dialog box and change the Type to loop. Click OK. This change appears in the upper left corner of the box. 8. Edit the label in the new box name to be [every 5 seconds]. 9. Inside the loop box, draw these two messages (horizontal arrows) with Message Type of Event and <Unspecified> as the Realization: a. From MobilityManagementBlock to DataLinkBlock, named
ConnectionRequest
b.
Rational Rhapsody
73
System Behaviors
2. Click the left side of the diagram to place the environment border.
74
Note
Names that are too long to fit in the pane continue past the divider and behind the lower pane. To view these names, enlarge the size of the pane or change the font or font size.
Rational Rhapsody
75
System Behaviors
Drawing Messages
In this scenario when the system receives a request to place a call, it validates and registers the user. Once it is registered, it monitors the users location. The call and connection are confirmed, the connection is set up, and confirmation is provided. To draw the event messages: 1. Click the Message button in the Drawing toolbar.
2. Draw the following events using horizontal lines: a. From the system border to the CallControl line, named PlaceCallReq b. c. d. From CallControl to MMCallControl, named PlaceCallReq From MMCallControl to RegistrationMonitor, named RegistrationReq From RegistrationMonitor to MMCallControl, named ChannelOpen
3. For each of the four messages, double-click the message line and set the Message Type as Event and select <New> from the Realization drop-down menu. Then the system generates a realization name and inserts it in the Realization field, as shown in this example.
76
4. Click the Message button, and draw a message-to-self on the MMCallControl instance line, named locationUpdate. (Message names are case-sensitive.) 5. Double-click the locationUpdate message-to-self line and set the Message Type as PrimitiveOperation and select <New> from the Realization drop-down menu. The system adds locationUpdate() as the Realization name. 6. Draw the following events using horizontal lines and double-click the message lines and set the Message Type as Event and select <New> from the Realization drop-down menu. a. From MMCallControl to CallControl, named CallConfirm b. From MMCallControl to CallControl, named ConnectConfirm
7. Draw the following horizontal message lines and double-click each message line to set the Message Type as PrimitiveOperation and select <New> from the Realization drop-down menu. a. From CallControl to CallList, named addToCallList b. From CallControl to Connection, named addConnection
8. Draw an event from CallControl to the system border, named ConfirmIndication and double-click the message line and check to be certain the Message Type is Event.
Rational Rhapsody
77
System Behaviors
78
Rational Rhapsody
79
System Behaviors
Reserved Words
The Action Language reserved words are listed below. All reserved words for built-in functions are lower case, for example, if.
asm auto break case catch char class const continue default delete do double else enum extern float for friend GEN goto id if inline int IS_IN IS_PORT long new operator OPORT OUT_PORT params private protected public register return short signed sizeof static struct switch template this throw try typedef union unsigned virtual void volatile while.
80
Rational Rhapsody
81
System Behaviors
Obtaining an acceptable signal strength When the user places a call, the system leaves the Idle state and checks for an acceptable signal strength and to see if the wireless telephone is registered. It then waits for the call to connect and enters a connection state.
Drawing Swimlanes
Swimlanes organize activity diagrams into sections of responsibility for actions and subactions. Vertical, solid lines separate each swimlane from adjacent swimlanes. To draw swimlanes, you first need to create a swimlane frame and then a swimlane divider. To draw swimlanes: 1. Click the Swimlanes Frame button on the Drawing toolbar.
2. Click to place one corner, then drag diagonally to draw the swimlane frame. 3. Click the Swimlanes Divider button on the Drawing toolbar.
4. Click the middle of the swimlane frame. Rational Rhapsody creates two swimlanes, named swimlane_n and swimlane_n+1, where n is an incremental integer starting at 0. 5. Name the swimlane on the left Location. This swimlane tracks the location of users.
Note: If you drag the swimlane left or right, it also resizes the swimlane frame. Once
you have repositioned the swimlane divider, resize the columns to make them wide enough for the drawings. 6. Name the swimlane on the right SignalStrength. This swimlane tracks the signal strength of users.
82
This second property allows informal text to be displayed on the diagram, while the actual action is described formally using an executable language. Your dialog box should be similar to this example.
2. In the top section of the drawing area inside the upper SignalStrength swimlane frame, click or click-and-drag to create an action state. Name the new action Idle. 3. Double-click the action state, or right-click and select Features. 4. In the description field, type Waiting for a Call to be Placed. 5. Click OK to apply the changes and close the Features dialog box. 6. In the lower section of the Location swimlane, draw an action state and name it
LocationUpdate.
7. In the SignalStrength swimlane draw an action state and name it CheckSignal. 8. Double-click the CheckSignal action state to display the Features dialog box. 9. Type Check for an acceptable signal strength in the Description field. Then click OK.
Rational Rhapsody
83
System Behaviors
10. Click the Action button. 11. Click or click-and-drag above the LocationUpdate action in the Location swimlane.
12. Name the new action Registering. At this point, your diagram should resemble this example.
84
This command sends an asynchronous message out the mm_cc port for the registration requests. 3. Click OK to apply the changes and close the dialog box.
2. Click to the right of the Idle action state and then click its edge. Press Ctrl+Enter to stop drawing the connector and not label it.
Rational Rhapsody
85
System Behaviors
2. In the bottom section of the SignalStrength swimlane, click or click-and-drag to draw the subactivity state. 3. Name the subactivity state InCall.
Drawing Transitions
Transitions represent the response to a message in a given state. They show what the next state will be. In this example, you will draw the following transitions: Transitions between states Fork and join transitions Timeout transition
Note
To change the line shape of a transition, right-click the line, select Line Shape, and then Straight, Spline, Rectilinear, or Reroute.
86
2. Click the InCall subactivity state, then click the Idle state. 3. Name the transition Disconnect. 4. Draw a transition from Registering to LocationUpdate, then press Ctrl+Enter.
5. Double-click the transition between Registering and LocationUpdate or right-click and select Features. The Features dialog box opens. 6. Click the L button next to the Name field. The Name and Label dialog box opens. 7. Type Registering in the Label field. 8. Click OK to close the Name and Label dialog box. 9. Click OK to close the Features dialog box. 10. To display the label, right-click the transition and select Display Options > Display Name > Label.
Note
When drawing activity flows, it is a good practice to not cross the flow lines. This makes the diagram easier to read.
Rational Rhapsody
87
System Behaviors
2. Click or click-and-drag between the Idle action state and the CheckSignal action state. Rational Rhapsody adds the fork synchronization bar. 3. Click the Activity Flow button, and draw a single incoming transition from Idle to the synchronization bar. Type PlaceCallReq, then press Ctrl+Enter. This transition indicates that a call request has been initiated. 4. Draw the following outgoing transitions from the fork bar: a. To the Registering action, then press Ctrl+Enter b. To the CheckSignal action state, then press Ctrl+Enter
88
2. Click or click-and-drag between CheckSignal action state and the InCall subactivity. This line remains within the SignalStrength swimlane. Rational Rhapsody adds the join synchronization bar. 3. Click the Activity Flow button and draw the following incoming transitions to the synchronization bar: a. From LocationUpdate, then press Ctrl+Enter b. From CheckSignal, then press Ctrl+Enter
4. Draw one outgoing transition from the synchronization bar to InCall. Type ChannelOpen, and then press Ctrl+Enter. This transition indicates that the channel is open and the call can be established.
2. Draw a transition originating and ending with CheckSignal. 3. Type tm(3000)and then press Ctrl+Enter.
Rational Rhapsody
89
System Behaviors
This command sends an asynchronous message out the mm_cc port when disconnecting. 3. Click OK to apply the changes and close the Features dialog box. Rational Rhapsody displays the transition name with the action command. 4. Double-click the ChannelOpen transition, or right-click and select Features. The Features dialog box opens. 5. In the Action field, type the following code:
locationUpdate();
90
6. Click OK to apply the changes and close the Features dialog box. Rational Rhapsody displays the transition name with the action command. At this point your diagram should resemble this example.
Note
To display the transition name without the action, type the transition name as the Label using the Features dialog box. Then right-click the transition and select Display Options > Show Label.
Rational Rhapsody
91
System Behaviors
To draw the action states: 1. Click the Action button on the Drawing toolbar.
2. In the top section of the InCall state, click-and-drag or click and name it VoiceData. Press Ctrl+Enter. 3. In the bottom section of the InCall state, click-and-drag or click and name it CheckSignal. Then press Ctrl+Enter.
92
Rational Rhapsody
93
System Behaviors
Note
You can type a title on the activity diagram, such as RegistrationReq Activity Diagram. 3. Right-click the new diagram and select Diagram Properties. 4. On the General tab of the Features dialog box, clear the Analysis Only check box. 5. Click OK to close the Features dialog box.
2. In the upper section of the drawing window, create an action state, then press Ctrl + Enter. 3. Open the Features dialog box for this action state, and type Idle in the Name field. Click OK. 4. Create another action state below Idle, then press Ctrl + Enter. 5. Open the Features dialog box and type InitiateRequest in the Name field. Click OK. 6. Create another action state below InitiateRequest, then press Ctrl + Enter. 7. Open the Features dialog box and type Success in the Name field. Click OK.
94
8. For each of the three action states, right-click and select the Display Options. Select these three radio buttons in the three areas Name, Label, and Action (in that order).
This command sends an asynchronous message out the reg_request port when the channel is open. 3. Click OK to apply the changes and close the Features dialog box.
2. Click above Idle in the diagram to anchor the flow line 3. Click Idle to finish the line. Press Ctrl+Enter.
Drawing Flows
Draw flow lines between actions states as follows: 1. Click the Activity Flow button in the Drawing toolbar.
2. Draw a flow line from Idle to InitiateRequest and type RegistrationReq to label this flow. Press Ctrl+Enter. 3. Draw a flow from InitiateRequest to Success. Press Ctrl+Enter. 4. Draw a flow from Success to Idle. Press Ctrl+Enter.
Rational Rhapsody
95
System Behaviors
96
Creating a Statechart
To create a statechart: 1. Start Rational Rhapsody if it is not already running and open the handset model if it is not already open. 2. In the browser, expand the Subsystems package, the ConnectionManagement package, the ConnectionManagementBlock, and the Parts category. 3. Right-click CallControl and select Add New > Diagrams > Statechart. Rational Rhapsody adds the Statechart category and the new statechart to the CallControl part in the browser, and opens the new statechart in the drawing area.
Drawing States
A state is a graphical representation of the status of a part. It typically reflects a certain set of its internal data (attributes) and relations.
2. In the top section of the drawing area, click or click-and-drag. Rational Rhapsody create a state with a default name of state_n, where n is equal to or greater than 0. 3. Type Idle for the name and then press Enter. This state indicates that no call is in progress.
Rational Rhapsody
97
System Behaviors
4. In the center of the drawing area, draw a larger state named Active. This state indicates that the call is being set up or is in progress.
To draw these nested states: 1. Click the State button in the Drawing toolbar.
2. In the top section of the Active state, draw a state named ConnectionConfirm. 3. In the bottom section of the Active state, draw a state named Connected.
98
2. Click to the right of the Idle state, then click Idle. Press Ctrl+Enter. 3. Draw another default connector to ConnectionConfirm. Press Ctrl+Enter.
Drawing Transitions
Transitions represent the response to a message in a given state. They show what the next state will be. A transition can have an optional trigger, guard, or action. This example uses transitions with triggers.
Creating a Trigger
To draw transitions with triggers: 1. Click the Transition button in the Drawing toolbar.
2. Click the Idle state and then click the Active state. 3. In the label box, type PlaceCallReq, then press Ctrl+Enter. 4. Create another transition from ConnectionConfirm to Connected and name this transition ConnectConfirm, then press Ctrl+Enter. 5. Create another transition from the Active state to the Idle state and name it Disconnect, the press Ctrl+Enter. This transition indicates that the user has disconnected or the network has terminated the call.
Note
To change the line shape, right-click the line, select Line Shape, and then Straight, Spline, Rectilinear, or Reroute.
Rational Rhapsody
99
System Behaviors
3. This command sends the PlaceCallReq event to the MMCallControl file element. 4. Click OK to apply the changes and close the dialog box. The transition now includes an action. 5. Double-click the Disconnect transition, or right-click and select Features. The Features dialog box opens. 6. In the Action field, type the following action language:
OUT_PORT(cc_mm)->GEN(Disconnect);
This command sends the Disconnect event to the MMCallControl file element.
100
Rational Rhapsody
101
System Behaviors
102
System Validation
Rational Rhapsody enables you to visualize the model through simulation. Simulation is the execution of behaviors and associated definitions in the model. Rational Rhapsody simulates the behavior of your model by executing its behaviors captured in statecharts, activity diagrams and textual behavior specifications. Structural definitions like blocks, ports, parts and links are used to create a simulation hierarchy of subsystems. Once you simulate the model, you can open simulated diagrams, which allow you to observe the model as it is running, perform design-level debugging and perform the following tasks: Step through the model Set and clear breakpoints Inject events Simulate an output trace It is good practice to test the model incrementally using model execution. You can simulate pieces of the model as it is developed. This allows you to determine whether the model meets the requirements and find defects early in the design process. Then you can test the entire model. In this way, you iteratively build the model, and then with each iteration perform an entire model validation.
Note
If you are using the System Architect version of Rational Rhapsody, the simulation feature is not available.
Rational Rhapsody
103
System Validation
Creating a Component
A component is a level of organization that names and defines a simulatable component. Each component contains configuration and file specification categories, which are used to build and simulate model. Each project contains a default component, named DefaultComponent. You can use the default component or create a new component. In this example, you can rename the default component Simulation, and then use the Simulate component to simulate the model. To use the default component: 1. In the browser, expand the Components category. 2. Select DefaultComponent and rename it Simulation.
104
These are the packages for which you create a simulatable component. Do not select the HandsetRequirements package because you do not simulate it. The Component dialog box should resemble this example.
Rational Rhapsody
105
System Validation
Creating a Configuration
A component can contain many configurations. A configuration includes the description of the classes to include in code generation, and settings for building and Simulating the model. Each component contains a default configuration, named DefaultConfig. In this example, rename the default configuration to Debug, and then use the Debug configuration to simulate the model. To use the default configuration: 1. In the browser, expand the Simulate component and the Configurations category. 2. Select DefaultConfig and rename it Debug.
3. Select the Settings tab, and set the following values: a. Select Real (for real time) as the Time Model. b. Select Flat as the Statechart Implementation. Rational Rhapsody implements states as simple, enumerated-type variables. Rational Rhapsody fills in the Environment Settings, based on the compiler settings you configured during installation. A compiler is used to build the simulation model. 4. Click OK to apply the changes and close the dialog box. Before you a build a simulation component, you must first set the active configuration. The active configuration is the configuration for which you simulate a simulation component. The active configuration appears in the drop-down list in the Code toolbar. To simulate the Debug configuration:
106
1. Select Simulation > Create Execution Environment from the main menu. 2. In the browser, right-click the Debug configuration, then select Set as Active Configuration. 3. Choose Simulation > Full Build from the menu or the Full Build button . Rational Rhapsody displays a message that the Debug directory does not yet exist and asks you to confirm its creation. 4. Click Yes. Rational Rhapsody displays output messages in the Build tab of the Output window (shown below). The messages inform you of the simulatable component creation status including the following: Success or failure of internal checks for the correctness and completeness of your model. These checks are performed before simulatable component creation begins. Errors or warnings in simulatable component build process. Completion of simulatable component build process.
Note
If the output panes are not displayed, select View > Output Window. The output panes are dockable, so you can move them out of the Rational Rhapsody interface to increase the viewable area for simulations.
Rational Rhapsody
107
System Validation
If your model builds without errors, your Output window should resemble this example.
To create instances, click Go Idle after starting the model. The initial instances are created (as well as any instances created by those instances) and are listed under the Instances category for the class in the browser.
108
Break Command
To interrupt a model that is executing, click the Break button to issue the Break command.
The Break command enables you to regain control immediately (or as soon as possible). Issuing a Break command also suspends the clock, which resumes with the next Go command.
Note
For simple applications, there might be a backlog of notifications. Although the model stops executing immediately, the animator can accept further input only after it has cleared this backlog and displayed any pending notifications. The Break command cannot stop an infinite loop that resides within a single operation. For example, issuing a Break cannot stop a while() loop:
Rational Rhapsody
109
System Validation
5. Click Apply to save these selections and keep the dialog box open. 6. Select the Settings tab, and set the following values: a. Select Web Enabling for Webify. b. If desired, click the Advanced button to change the default values for the Webify parameters. Rational Rhapsody opens the Advanced Webify Toolkit Settings dialog box. This dialog box contains the following fields, which you can modify: Home Page URLThe URL of the home page Signature Page URLThe URL of the signature page Web Page Refresh PeriodThe refresh rate in milliseconds Web Server PortThe port number of the Web server c. Select Real (for real time) as the Time model.
d. Select Flat as the Statechart Implementation. Rational Rhapsody implements states as simple, enumerated-type variables.
110
Rational Rhapsody fills in the Environment Settings section, based on the compiler settings you configured during installation. This example uses the Cygwin compiler. At this point the dialog box should resemble this example.
7. Click OK.
Rational Rhapsody
111
System Validation
To select elements to Web-enable: 1. To locate the items you want to change, select Edit > Search. Type CallConfirm into the Find What field and click Find. The search shows all instances of that text and the browser path for each. 2. After locating the CallConfirm event in the browser, open the Features dialog box for the event. 3. In the Features dialog box, select Web Managed from the Stereotype drop-down list. 4. Click OK to apply the changes and close the dialog box. 5. Make the same change to the remaining three events (ConnectConfirm, Disconnect, and PlaceCallReq) to make them Web Managed.
3. After completing the build, you can use any of the command buttons to the left.
112
Note
You can also customize the Web interface by creating your own pages or by referencing the collection of pages that come with Rational Rhapsody.
Note
If you cannot view the right-hand frame in Internet Explorer, go to Tools > Internet Options > Advanced and uncheck the option Use Java xx for <applet>.
Rational Rhapsody
113
System Validation
114
9. In the navigation frame on the left side of the browser, expand ConnectionManagement_C[0], and click ConnectionManagement_C::CallControl_C[0] 10. In the Rational Rhapsody Web user interface, click Activate next to PlaceCallReq. 11. Open the simulated sequence diagram. Rational Rhapsody displays how the instances pass messages, as shown in the following figure. 12. In the simulated statechart, Idle and PlaceCallReq transition to the inactive state (olive), and Active and ConnectionConfirm transition to the active state (magenta). Then ConnectionConfirm and ConnectConfirm transition to the inactive state (olive), Active remains in the active state (magenta), and Connected transitions to the active state (magenta). 13. In the simulated activity diagram, Idle transitions from the active state to the inactive state. Registering, CheckSignal, and LocationUpdate transition from inactive to active to inactive. Then InCall transitions from the inactive state to the active state in the Rational Rhapsody Web GUI, click Activate next to Disconnect. In the simulated statechart, the Active and Connected states and Disconnect change to the inactive state (olive), and Idle transitions to the active state (magenta). In the simulated activity diagram, InCall transitions to the inactive state and Idle becomes active. You can continue generating events and viewing the resulting behavior in the simulated diagrams.
Rational Rhapsody
115
System Validation
116
Index
A
Action language 79, 85 basic syntax 79 checking 102 example 85, 90, 95, 100 reserved words 79 Action states 83 default 85 defining 85 Activities 49 Activity diagrams 81, 94 action states 83 behavior interconnections 81 creating 81 defining an action 85 join synchronization 89 properties 82 setting default state 85 subactivity state 86 swimlanes 82 transitions 86 Activity flow 93 timeout 93 Actors 21, 33 in block definition diagram 36 sequence diagrams 66 with use cases 25 Algorithms 61 Analysis 13 black-box 14, 34, 49 package 12 white-box 14, 49 Architecture 12 connecting parts 39 flow information 40 high-level diagram 34 packages 46 Autosave 5
Block Definition diagrams 33 adding actors 36 architecture 34 creating 34 drawing blocks 35 flows 37 links 37 service ports 37 Block definition diagrams starting point 1 Border 74 Break command 109 Browser 9 Build 107
C
C++ language 79 Classes naming guidelines 10 Classifier roles 67, 75 Commands 42 Component 104 creating 104 features 104 Configuration 106 Connectors 37, 39, 85 default 92 flow lines 93 Cygwin compiler 111
D
Data checking 79 Data instantiation 42 Default configuration 106 Dependency 17, 33 adding stereotype 30 relationships 20 Design structure 33 Diagrams activity 81 block definition 1, 33, 34 high-level architecture 34 internal block 33, 51, 55, 58 parametric 61
B
Backups 6 Behaviors 65, 81 Black-box analysis 34 Block 33
Rational Rhapsody
117
Index
sequence 65, 66 statecharts 97 subactivity 92 systems engineering 1 titles 11 use case 13 Display options 29 equations 63 Label or Name 67 model elements 29 DOORS 13 Drawing toolbar 8
E
Environment border 74 Equations 60, 63 Events 42 in sequence diagrams 65 messages 68 naming conventions 10 Executable language 83
Increment/decrement operators 79 Installation Custom 1 systems engineering 1 Interaction occurrence 70 Interactive operators 72 Interfaces 37 external 33 naming conventions 10 naming guidelines 10 provided 45 Rational Rhapsody 8 required 45 Internal block diagrams 33, 51, 55, 58 drawing parts 55 drawing ports 56
L
Links 54
M
Messages 68 code to pass 79 in sequence diagrams 76 primitive operations 68 realization 68, 76 sequence diagrams 68 type 68 Model 3 build 107 creating actions 79 display options 29 execution 79 handset 3 in a Web browser 113 print to screen 79 simulating 107 testing 50 Web-enable 110 Models naming guidelines 10 organizing with packages 12 systems engineering 12
F
Flow of control 81 Flows 33, 37, 40 arrowhead 41 change direction 41 changing line shape 44 data instantiation 42 events 42 instantiation of 54 specifying flow items 42 Full build 107
G
Generalizations 26, 28 Generate 104 code with names 22 Guidelines for naming model elements 10
H
Handset 3 behavior sequence 66 requirements 14 HandsetRequirements package 12
N
Names conventions for 10 model element guidelines 10 Naming conventions 10 Nested activity 92 Nested states 98
I
Idle state 82
118
Index
O
Operations 65 naming conventions 10 Output window 9
P
Packages 9 analysis 12 Architecture 46 architecture 12 default 4, 9 handsetrequirements 12 naming guidelines 10 organizing the model 12 subsystems 12, 49 systems engineering 12 Parametric diagrams 60 adding equations 63 flow ports 62 linking to model 62 Parts 39, 55 connecting 39 Ports 56 attributes 38 changing placement 53 contract-based 45 noncontract-based 45 reversing 48 service 37, 53 Print to screen 79 Profile 5 Profiles SysML 1 Project backups 6 create new 4 defining behaviors 65 folder 9 saving 5 validation 103 Projects create new SysML 4 systems engineering 1 Properties 6 activity diagram settings 82 backup 6
naming conventions 10 Output window 9 restore projects 6 search facility 102 starting 4 Requirements 1, 14 capturing 13 dependencies 20 diagram 15, 19 testing 50 traceability 12 tracing to use cases 29
S
Scenarios 13 communication 33 create flow through 65 described in sequence diagrams 65 divide for reuse 70 network connection 71 typical instance of 67 Search facility 102 Sequence diagrams 65 actor line 66 analysis operation mode 66 classifier roles 67, 75 creating 66 describing scenarios 65 design operation mode 66 instance lines 67 interaction occurrence 70 interactive operators 72 message 76 messages 68 operation mode 66 system border 74 Service ports 37 Simulation 50, 103, 107 Break command 109 creating initial instances 108 full build 107 preparing for 104 setting scope 104 Specifications behavior 103 development 42 Standard ports 33 Starting Rational Rhapsody 4 Statecharts 97 transitions 99 States 97 action 83, 92 active 97 default 85 idle 82, 97 nested 98
R
Rational Rhapsody autosave 5 backups 6 drawing toolbar 8 interface 8 main menu 8
Rational Rhapsody
119
Index
subactivity 86, 92 transitions between 87 Stereotypes 18 dependency 30 Structure diagrams 33 specifying flow items 42 Subactivity diagrams 92 initial state 92 Subactivity states 92 Subsystems 12, 49 Swimlanes 82 SysML 4 block definition diagrams 1 project type 5 SysML profile starting point 1 System border 74 Systems engineering 1 diagrams 1 organizing model 12
U
Use case diagrams 13, 21 boundary box 21 dependencies 29 Use cases 22, 27 actors with 25 features 23, 28 generalizations 26, 28 requirements tracing to 29
V
Validation 103
W
Web-enable 110 a model 110 configuration 110 interface 113 sending events to a model 114 setting stereotype 112
T
Testing 50 Text icons 11 Timeout 93, 101 Titles diagrams 11 Traceability 12 Transitions 86, 99 add actions on 79 disconnect 90 timeout 89, 101 trigger 99
X
XMI SysML support for version 2.1 2
120