Executable UML Book Bugs

Listing current as of 10-Nov-2002.
If you think you have found a bug that is not listed here, please mail it to marc@executableumlbook.com.

Foreword  Preface  Acknowledgements  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  Glossary  Case Study 

Chapter 3: Domains and Bridges

Page Description
36 Figure 3.2: Add a bridge from Messaging to the Model Compiler
37 First paragraph should read "�by messaging, the Web GUI, Inventory, and the bookstore."

Chapter 4: Use Cases

Page Description
43 First paragraph can be restated as:
Sometimes here may be situations where different actors are somehow involved in initiating the same activity. For example, a delivery person delivers the order to the customer, but a dispatcher notifies the system that the delivery occurred. Who is the actor? The delivery person? The dispatcher? The customer? In this case, an effective strategy is to abstract away the mechanism and to focus on the eventual source of the request in terms of the role.
43 Last paragraph: Hence, we prefer "Order Books" over "Customer Orders Books."
45 Figure 4.3 table should read
Online CustomerOrder Books, Cancel Order
TimerExpire Order (or Cancel Order)
Warehouse ClerkPack and Ship Order, Restock Product
Credit Card CompanyApprove Charge, Decline Charge
Delivery PersonDeliver Order
46 "Real-Time Systems": second paragraph: �An actor is anything that interfaces to or interacts with the system�
49 Change "actor requests a service" to "actor initiates an activity."
51 First and second paragraphs of Section 4.3: Change "Order Merchandise" to "Order Books."
54 Definition of "scenario:" �there is only one path through the model.

Chapter 5: Classes and Attributes

Page Description
60 Example 1: insurance product, which specifies which policy types you can buy
64 Fully factored--Each attribute captures a separate fact about the class abstraction. ("Aspect" is taking on the same meaning as "subject matter" or "domain" and consequently the use of "aspect" here could be confusing.)
66 Change "string types" to "symbolic types." Types can be symbolic, enumerated, etc. String, integer, real, � are core data types.

Chapter 6: Relationships and Associations

Page Description
84 First paragraph should begin: Associations involving only two classes ("binary associations") �
92 Change association names to
CreditCardCharge IS AN ATTEMPT TO PAY FOR Order
CreditCardCharge PAYS FOR Order
94 Last sentence should read: Figure 6.10 shows how a ProductSelection is included in a Shipment.
98 First paragraph of 6.5.2: Each instance of a superclass must be one and only one of its subclasses and each instance of a subclass must be an instance of the superclass.
102 Figure 6.18: It is also a superclass of BookProduct, �
106 Figure 6.23 caption should be: Subclassing ProductCategory

Chapter 7: Class Actions

Page Description
111 Italicize "Capitalized Italics" as in "Capitalized Italics are class names."
115 Figure 7.8: Boldface "to" on third line:
relate newBook to myPublisher �
118 Figure 7.12: Change reclassify action to:
reclassify object instance multiBook from StockedProduct to SpecialOrderProduct;
119 Figure 7.13: Rewrite as:
// Make this the shipment for the order
(Self, order) | link R6.'delivers contents of';

// Copy the delivery information for this shipment from the Order.
// (The write attribute operator is '>')
order.recipient > Self.recipient;

// Now copy the remaining information
order.(deliveryAddress, deliveryContactPhone) >
    Self.(deliveryAddress, deliveryContactPhone);
121 Figure 7.16: Rewrite as
// Make this the shipment for the order
self->("delivers contents of")Order := order;

// Copy the delivery information for this shipment from the Order.
self {
    .recipient := order.recipient;
    .deliveryAddress := order.deliveryAddress;
    .deliveryContactPhone := order.deliveryContactPhone;

// Notify the shipping clerk� (as is)

Chapter 8: Constraints

Page Description
131 Figure 8.8 and Section 8.1.3: Change the attribute "tagNumber" to "licensePlateNumber" because of the other (UML) useof the word "tag" in this section.
132 Section 8.2 OCL: first line should read context ProductSelection inv
133 First paragraph should read: In this example, Order.totalValue is derived from the sum of all the associated ProductSelection.selectionValue values. Its definition in OCL looks like this:
133 Second line of action language should read: select many selections related by self->ProductSelection[R3];
137 Figure 8.13: Replace "bookISBN" by "bookNumber" in action language and in figure caption.
144 "Loop Constraints with Referential Attributes": Change
District is resident of Child
District "is place of residence of" Child

Chapter 9: Lifecycles

Page Description
151 On all microwave statecharts:
1. State 4: remove "turn off light"
2. State 5: add "sound the beeper"
153 Next-to-last paragraph: �Figure 9.2 showed that when the oven is in the Ready To Cook state that opening the door transitions to DoorOpen, while pressing the button from the Ready To Cook state makes a transition to the Cooking state.
153 Last paragraph: There may be multiple transitions�
156 Figure 9.4: Transitions on doorClosed event should transition to Ready To Cook.
161 Figure 9.9: Change "Can't Happened" to "Can't Happen" and display in boldface italic.
163 Last sentence: �on the statechart diagram, such final quiescent states can be identified by their lack of outbound transitions.

Chapter 10: Communicating Objects

Page Description
171 Reverse the two subcaptions: top one should be "from Shipment" and bottom one should be "from Order."
172 Figure 10.2 shows a rather extensive state procedure. The purpose of the diagram is to simply show how a procedure can use event parameters (rcvd_evt.something) and can send a signal with parameters.
175 The procedure in state 2 could be written as:
select any book from instances of Product
    where selected.productID == rcvd_evt.productID;
relate book to self across R4 creating newSelection;
. . .
The callout for state 2 should read
Create instance of ProductSelection (relating creates the link object)
The callout for state 4 should read
Delete instances of ProductSelection (unrelating deletes the link object).
176 Last two lines of the state procedure should read:
generate requestShipment (order:self) to Shipment creator;
178 Last paragraph: separate "diagramof" into "diagram of" by inserting a space.

Chapter 11: Synchronizing Objects

Page Description
194 Replace "instance handle" by "object reference" in all of 11.5:
generate <signal> to <object reference> delay <duration>;
cancel <signal> from <object reference> to <object reference>;
generate <signal> from <object reference> at <exact time>;

Chapter 12: Using Lifecycles

Page Description
201 Figure 12.3: Name of state 2 should be: "Waiting for Pick Up"
201 Add attribute to Shipment: waitingToBePacked: boolean
203 Figure 12.6 should be the same as Figure B.8.
206 Add a period to the end of the paragraph "Do not fall into the trap�on the statechart diagrams."
206 First paragraph of Section 12.2.1: "by refactoring the behavior in one class into separate classes."
208 Figure 12.10 should be the same as the ShoppingCart in Appendix B (B.5).
209 Figure 12.11 should be the same as the Order in Appendix B (B.3).
210 In states 1 and 2, change "R23" to "R22."

Chapter 13: Relationship Dynamics

Page Description
219 Last paragraph: change "used below" to "in Figure 13.6."
228 Figure 13.12: change ShippingClerk.shipmentReady attribute to clerkAssigned.
229 Second action language example: change ShippingClerk to WarehouseClerk.
231 Figure 13.14: State 1: change R8 to R25 State 7: change R7 to R23 and change R8 to R25
233 Section 13.5.1 should refer to Figure 13.15. Section 13.5.2 should refer to Figure 13.14.

Chapter 14: Domain Dynamics

Page Description
237 Final paragaph: The signals addItem, removeItem, changeQuantity, cancel, and checkOut can each be accepted�
244 First sentence: "the pivot point is the shipmentItem."
250 Change Selection.quantity and Charge.chargeNumber to ProductSelection.quantity and CreditCardCharge.accountNumber

Chapter 15: Domain Verification

Page Description
256 Figure 15.2, state 2: To create a new selection, replace the lines create object instance newSelection . . . relate self to product . . . by relate self to product across R3.'contains customer selection of' creating newSelection;
258 This is actually the diagram as produced in the BridgePoint tool, not the current Executable UML format.
260 Figure 15.5: Last line should read productB.quantityOnHand = 62;
261 Change the four lines of action language in Figure 15.6 to the following three lines: create object instance order of Order in state "Adding Selection to Order"; relate order to productA across R3 creating existingSelection; existingSelection.quantity = 3;
263 Do not capitalize the word "order" in the last comment.
266 In Figure 15.10, change "addItem" to "addSelection."

Chapter 16: Model Management

Page Description
271 Figure 16.3: Change the labels on the lines Ordering -- Shipping : {R6, R9} Ordering -- ProductSpecification : {R4}

Chapter 17: Joining Multiple Domains

Page Description
275 Last line of first paragraph: "�and how to link together individual domains' models."
276 Figure 17.1: Add a bridge between Messaging and Model Compiler.
289 Last sentence of first paragraph: "...the table has three columns and one row per Book�"

Chapter 18: Model Compilers

Page Description
296 First line of last paragraph: "selects all the attributes related to the object reference object across R105..."
302 Second bullet: The model compiler can be understood completely and separately from the semantics�

Appendix B: Case Study

Page Description
315 Figure B.1: Reverse the multiplicities on R20.
316 Add attribute currentlyAvailable to class Product.
317 Description of R4: "�linked to the corresponding Product, creating an instance of a ProductSelection."
318 Attribute groupCode: "�or language area that participates in the ISBN system."
318 Description of R1: change "book" to "product."
320 Description of BookProduct: �as part of the ProductSelection (attribute unitPriceOfSelection)�
329 Remove the duplicate R18.
331 Description of ComputerSoftware: "�on more than one platform and is often available�"
335 Name of state 8 is "Submitting Charge"
335 State 5 should read: generate chageApproved (customerEmail: customer.email) to EE_OnlineCustomer;
340 State 3 should read: generate checkOut ( cartID: self.cartID, �
344 Add attribute to WarehouseClerk: goOffDutyAtEndOfJob: boolean Add attribute to Shipment: waitingToBePacked: boolean
345 Type of attribute shippingCompany should be string.
345 Add attribute waitingToBePacked: boolean Description: True when a Shipment is ready to be packed. This attribute is used by the Warehouse (Shipment Assigner).
347 Description of R6: add All of the selections on an Order are shipped together in one shipment.
349 Add attribute goOffDutyAtEndOfJob to WarehouseClerk
351 Change first statement in state 2 to select any freeClerk related by self->ShippingClerk[R25] where selected.awaitingAssignment;
353 Figure B.10: State 1: Change R9 to R25 State 7: second statement should be generate packed (clerkID: self.clerkID) to currentShipment;
335 Last parameter on state 8 should be order: self