21.07.2013 Views

Modeling with Technology FrameWork

Modeling with Technology FrameWork

Modeling with Technology FrameWork

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

0RGHOLQJ ZLWK<br />

7HFKQRORJ\<br />

)UDPH:RUN<br />

Preliminary<br />

Documentation<br />

Ptech <strong>FrameWork</strong> 5.3


Ptech Inc.<br />

160 Federal Street<br />

Boston, MA 02110<br />

Tel: (617) 443-1170<br />

Fax: (617) 443-1136<br />

www.ptechinc.com<br />

© 1998 Ptech Inc.<br />

All rights reserved.<br />

Printed in the USA.<br />

DFD04-533-0000<br />

This document describes version 5.3 of Ptech <strong>Technology</strong> <strong>FrameWork</strong> <strong>FrameWork</strong> for<br />

Windows. By receiving this document, you agree that:<br />

● The information in this document is confidential and cannot be copied or<br />

reproduced <strong>with</strong>out the written consent of Ptech Inc.<br />

● This document and its contents cannot be used in the manufacture or<br />

reproduction of the product described, and the delivery of this document does not<br />

constitute any right or license to do so.<br />

The software described in this document is furnished under license and can be used or<br />

copied only in accordance <strong>with</strong> the terms of that license. Ptech Inc. is not liable for<br />

errors in this document or for any damages that may occur in connection <strong>with</strong> using<br />

this material. The information contained in this document is subject to change <strong>with</strong>out<br />

notice.<br />

Restricted rights notice: Use, duplication, or disclosure by the US Government is<br />

subject to the restrictions set forth in subparagraph (c) (1) (ii) of the Rights in Technical<br />

Data and Computer Software clause at DFARS 252.227-7013.<br />

Ptech and the Ptech logo are trademarks of Ptech Inc. Act! is a registered trdemark of<br />

Symantec Corporation. CORBA and Object Management Group are registered<br />

trademarks and Interface Definition Language (IDL), Object Request Broker, OMG,<br />

ORB, UML, and Unified <strong>Modeling</strong> Language are trademarks of Object Management<br />

Group, Inc. Forté is a trademark of Forté Software, Inc. Java is a trademark of Sun<br />

Microsystems, Inc. Netscape is a trademark of Netscape Communications<br />

Corporation. Oracle8 is a trademark of Oracle Corporation. Windows is a registered<br />

trademark of Microsoft Corporation. All other trademarks, trade names, and service<br />

marks appearing in this document are the property of their respective owners.


About This Book<br />

&RQWHQWV<br />

Welcome! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii<br />

A note about the illustrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii<br />

A note about the examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv<br />

Related documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv<br />

Customer support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

What’s in this chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1<br />

About <strong>FrameWork</strong> models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1<br />

Types of models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2<br />

Format of model descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11<br />

Chapter 2: Cross-model Concepts<br />

What’s in this chapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13<br />

About cross-model concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13<br />

Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14<br />

Model elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14<br />

Model element comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15<br />

Model element dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15<br />

Object constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15<br />

Design changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .16<br />

Contents<br />

iii


Chapter 3: Activity Models (UML)<br />

Contents<br />

iv<br />

About activity models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17<br />

Sample activity diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18<br />

Action and activity states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19<br />

Creating an action or activity state . . . . . . . . . . . . . . . . . . . . . . .20<br />

Forms for action and activity states . . . . . . . . . . . . . . . . . . . . . . .20<br />

Activity control flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21<br />

Branching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21<br />

Forking and joining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22<br />

Creating control flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24<br />

Form for transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26<br />

Initial and final states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26<br />

Object flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27<br />

Creating object flows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28<br />

Form for object flow states . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29<br />

Responsibility for activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29<br />

Chapter 4: Business Architecture Models<br />

About business architecture models . . . . . . . . . . . . . . . . . . . . . . . . .33<br />

Sample business architecture diagram . . . . . . . . . . . . . . . . . . . . . . .34<br />

Activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35<br />

Information about activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37<br />

Creating activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37<br />

Forms for activities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38<br />

Products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39<br />

Information about products . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39<br />

Creating products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40<br />

Form for products . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40<br />

Consumption and production relationships . . . . . . . . . . . . . . . . . . . .41<br />

Information about consumption and production relationships . . .42<br />

Creating consumption and production relationships . . . . . . . . . .42<br />

Inheritance relationships in business architecture models . . . . . . . .43<br />

Partitions in business architecture models . . . . . . . . . . . . . . . . .43<br />

Generalizations in business architecture models . . . . . . . . . . . .45<br />

Creating inheritance relationships in business architecture models<br />

46<br />

<strong>Modeling</strong> closed systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46


Chapter 5: Business Object Models<br />

Chapter 6: Business Rule Models<br />

About business object models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49<br />

Sample business object diagram . . . . . . . . . . . . . . . . . . . . . . . . . . .50<br />

Model classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52<br />

Information about model classes . . . . . . . . . . . . . . . . . . . . . . . . .53<br />

Creating model classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55<br />

Forms for model classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55<br />

Associations and attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57<br />

Information about associations, association ends, and attributes . .<br />

60<br />

Creating associations and attributes . . . . . . . . . . . . . . . . . . . . . .61<br />

N-place associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64<br />

Symmetric associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .65<br />

Ordering associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66<br />

Forms for associations, association ends, and attributes . . . . . .67<br />

Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .69<br />

Information about operations . . . . . . . . . . . . . . . . . . . . . . . . . . . .70<br />

Creating operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71<br />

Form for operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72<br />

Uniqueness constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73<br />

Information about uniqueness constraints . . . . . . . . . . . . . . . . . .74<br />

Creating uniqueness constraints . . . . . . . . . . . . . . . . . . . . . . . . .74<br />

Form for constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75<br />

Inheritance relationships in business object models . . . . . . . . . . . . .76<br />

Partitions in business object models . . . . . . . . . . . . . . . . . . . . . .76<br />

Generalizations in business object models . . . . . . . . . . . . . . . . .78<br />

Intersections in business object models . . . . . . . . . . . . . . . . . . .79<br />

Information about inheritance relationships . . . . . . . . . . . . . . . . .79<br />

Creating inheritance relationships in business object models . . .80<br />

Forms for inheritance relationships . . . . . . . . . . . . . . . . . . . . . . .82<br />

About business rule models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85<br />

Sample business rule diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85<br />

Business rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86<br />

Rule sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86<br />

Rule conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86<br />

Contents<br />

v


Chapter 7: Class Models (UML)<br />

Contents<br />

vi<br />

Condition tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86<br />

Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .87<br />

About class models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .89<br />

Sample class diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90<br />

Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90<br />

Model classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91<br />

External classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .91<br />

Interface classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92<br />

Information about classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .92<br />

Forms for classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93<br />

Realizes relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93<br />

Uses relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93<br />

Associations and attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .94<br />

Creating an association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95<br />

Form for associations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95<br />

Creating an attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95<br />

Form for attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96<br />

Inheritance relationships in class models . . . . . . . . . . . . . . . . . . . . .96<br />

Partitions in class models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .96<br />

Generalizations in class models . . . . . . . . . . . . . . . . . . . . . . . . .97<br />

Intersections in class models . . . . . . . . . . . . . . . . . . . . . . . . . . .97<br />

Forms for inheritance relationships . . . . . . . . . . . . . . . . . . . . . . .97<br />

Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98<br />

Creating an operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98<br />

Forms for operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99<br />

Decision functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99<br />

Uniqueness constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99<br />

Creating a single-function constraint graphically . . . . . . . . . . . .100<br />

Creating a constraint textually . . . . . . . . . . . . . . . . . . . . . . . . . .101<br />

Relaxing constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101<br />

Form for constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .102<br />

Chapter 8: Collaboration Models (UML)<br />

About collaboration models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103<br />

Sample collaboration diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103


Class roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104<br />

Creating a class role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104<br />

Form for class roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105<br />

Association end roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .105<br />

Creating an association end role . . . . . . . . . . . . . . . . . . . . . . . .105<br />

Form for association end roles . . . . . . . . . . . . . . . . . . . . . . . . .105<br />

Chapter 9: Component Models (UML)<br />

About component models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .107<br />

Sample component diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108<br />

Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .108<br />

Creating a component . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109<br />

Forms for components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110<br />

Component interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .110<br />

Creating a component interface . . . . . . . . . . . . . . . . . . . . . . . .110<br />

Form for component interfaces . . . . . . . . . . . . . . . . . . . . . . . . .110<br />

Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br />

Creating a node . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br />

Form for nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br />

Contains relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br />

Depends-on relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112<br />

Requires relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .112<br />

Communicates-<strong>with</strong> relationships . . . . . . . . . . . . . . . . . . . . . . . . . .113<br />

Resides relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .113<br />

Chapter 10: Deployment Models (UML)<br />

About deployment models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115<br />

Sample deployment diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .115<br />

Executable component instances . . . . . . . . . . . . . . . . . . . . . . . . . .116<br />

Creating an executable component instance . . . . . . . . . . . . . .116<br />

Form for executable component instances . . . . . . . . . . . . . . . .117<br />

Interface instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .117<br />

Node instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118<br />

Creating a node instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118<br />

Form for node instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118<br />

Depends-on relationships in deployment models . . . . . . . . . . . . . .118<br />

Requires relationships in deployment models . . . . . . . . . . . . . . . . .119<br />

Contents<br />

vii


Contents<br />

viii<br />

Deploys relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119<br />

Chapter 11: Instance Interaction Models (UML)<br />

Chapter 12: Operation Models<br />

About instance interaction models . . . . . . . . . . . . . . . . . . . . . . . . .121<br />

Sample instance interaction diagram . . . . . . . . . . . . . . . . . . . . . . .121<br />

Instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121<br />

Link ends . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121<br />

Message instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122<br />

About operation models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123<br />

Sample operation diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124<br />

Operation model components . . . . . . . . . . . . . . . . . . . . . . . . . . . . .124<br />

Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125<br />

Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125<br />

Creating a method and connecting it to its domain class . .125<br />

Form for methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126<br />

Chapter 13: Package Models (UML)<br />

Chapter 14: Process Models<br />

About package models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .127<br />

Sample package diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128<br />

Packages, systems, and subsystems . . . . . . . . . . . . . . . . . . . . . . .128<br />

Information about packages, systems, and subsystems . . . . . .131<br />

Creating packages, systems, and subsystems . . . . . . . . . . . . .132<br />

Forms for packages, systems, subsystems, and their elements . . .<br />

134<br />

About process models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137<br />

Sample process diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137<br />

Process model components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138<br />

Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139<br />

Creating an operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140<br />

Forms for operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140<br />

Operation references . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140<br />

Creating an operation reference . . . . . . . . . . . . . . . . . . . . .141


Chapter 15: Project Models<br />

Form for operation references . . . . . . . . . . . . . . . . . . . . . . .141<br />

Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141<br />

Process initiation events . . . . . . . . . . . . . . . . . . . . . . . . . . .141<br />

Operation completion events . . . . . . . . . . . . . . . . . . . . . . . .142<br />

Process completion events . . . . . . . . . . . . . . . . . . . . . . . . .142<br />

Creating an event . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143<br />

Forms for events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143<br />

Inheritance relationships in process models . . . . . . . . . . . . . . .143<br />

Partitions in process models . . . . . . . . . . . . . . . . . . . . . . . .143<br />

Generalizations in process models . . . . . . . . . . . . . . . . . . .144<br />

Forms for inheritance relationships . . . . . . . . . . . . . . . . . . .144<br />

Trigger rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .144<br />

Creating a trigger rule . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145<br />

Form for trigger rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145<br />

Objects for operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145<br />

Base functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146<br />

Base input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .147<br />

Argument assignments for operations . . . . . . . . . . . . . . . . . . . .149<br />

Eval functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .150<br />

Eval function input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151<br />

Decision functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .153<br />

Filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154<br />

Creating a filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154<br />

Form for filters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154<br />

About project models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155<br />

Sample project diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155<br />

Projects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156<br />

Project tasks and milestones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156<br />

Project teams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .156<br />

Implemented strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157<br />

Chapter 16: Report Layout Models<br />

About report layout models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .159<br />

Sample report layout diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160<br />

Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161<br />

Contents<br />

ix


Chapter 17: Road Map Models<br />

Contents<br />

x<br />

Creating a report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162<br />

Form for reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162<br />

Sample first page of a Document report . . . . . . . . . . . . . . . . . .163<br />

Prefaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163<br />

Creating a preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164<br />

Form for prefaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164<br />

Sample preface from a Document report . . . . . . . . . . . . . . . . .165<br />

Chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .165<br />

Creating chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .166<br />

Form for chapters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167<br />

Sample chapter from a Document report . . . . . . . . . . . . . . . . .167<br />

Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168<br />

Creating sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169<br />

Form for sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .170<br />

Sample section from a Document report . . . . . . . . . . . . . . . . . .170<br />

Paragraphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171<br />

Creating paragraphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172<br />

Focus objects and content functions . . . . . . . . . . . . . . . . . . . . .173<br />

Text paragraphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .174<br />

Image/data file paragraphs . . . . . . . . . . . . . . . . . . . . . . . . . . . .176<br />

List paragraphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178<br />

Table paragraphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180<br />

Cross-reference table paragraphs . . . . . . . . . . . . . . . . . . . . . . .183<br />

About road map models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187<br />

Sample road map diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188<br />

Road map model contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .189<br />

Information about diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . .189<br />

Creating road map diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . .191<br />

Form for diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .192<br />

Chapter 18: Sequence Models (UML)<br />

About sequence models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193<br />

Sample sequence diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193<br />

Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194<br />

Creating an object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194


Form for objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195<br />

Lifeline points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195<br />

Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196<br />

Creating a message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196<br />

Form for messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196<br />

Chapter 19: Statechart Models (UML)<br />

About statechart models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197<br />

Sample statechart diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197<br />

States . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198<br />

Creating a state . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198<br />

State actions and internal transitions . . . . . . . . . . . . . . . . . . . . .199<br />

Form for states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199<br />

Transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199<br />

Creating a transition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200<br />

Events, actions, and guards . . . . . . . . . . . . . . . . . . . . . . . . . . .200<br />

Form for transitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200<br />

Synchronization bars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201<br />

Initial states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .201<br />

Final states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202<br />

Composite states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .202<br />

Submachine states . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203<br />

Creating a submachine state . . . . . . . . . . . . . . . . . . . . . . . . . . .203<br />

Form for submachine states . . . . . . . . . . . . . . . . . . . . . . . . . . .204<br />

Chapter 20: <strong>Technology</strong> Architecture Models<br />

About technology architecture models . . . . . . . . . . . . . . . . . . . . . .205<br />

Sample technology architecture diagram . . . . . . . . . . . . . . . . . . . .205<br />

Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207<br />

Information about resources . . . . . . . . . . . . . . . . . . . . . . . . . . .208<br />

Creating resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .209<br />

Forms for resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210<br />

Locations in technology architecture diagrams . . . . . . . . . . . . . . . .212<br />

Chapter 21: Use Case Models (UML)<br />

About use case models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215<br />

Contents<br />

xi


Contents<br />

xii<br />

Sample use case diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215<br />

Subsystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216<br />

Creating a subsystem and connecting it to use cases . . . . . . .217<br />

Form for subsystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218<br />

Use cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219<br />

Creating and relating use cases . . . . . . . . . . . . . . . . . . . . . . . .220<br />

Forms for use cases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221<br />

Actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224<br />

Creating an actor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224<br />

Form for actors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225<br />

Communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225<br />

Communications from actors and use cases . . . . . . . . . . . . . .226<br />

Bidirectional communications . . . . . . . . . . . . . . . . . . . . . . . . . .227<br />

Form for communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227<br />

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229


Welcome!<br />

$ERXW 7KLV %RRN<br />

Welcome to <strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong> <strong>FrameWork</strong>. This book is for<br />

users of Ptech <strong>Technology</strong> or Enterprise <strong>FrameWork</strong>. It describes<br />

the types of models directly supported by <strong>Technology</strong> <strong>FrameWork</strong><br />

through the metamodels, diagram types, tool folders, queries, and<br />

forms shipped <strong>with</strong> the product. For each type of model, this book<br />

describes the semantics and usage of the model, presents a sample<br />

diagram, and gives detailed information about the modeling tools<br />

and forms you use to create and modify its components.<br />

To gain the most benefit from this book, you should be familiar <strong>with</strong><br />

<strong>FrameWork</strong> basics and your Windows operating system.<br />

A note about the illustrations<br />

The <strong>FrameWork</strong> desktop and windows on your screen may differ<br />

slightly in appearance from the images in this book. The<br />

differences depend on the <strong>FrameWork</strong> product you’re using and on<br />

the environment in which you’re using it. For the purposes of this<br />

book, these differences are not significant.<br />

About This Book<br />

xiii


A note about the examples<br />

A note about the examples<br />

About This Book<br />

xiv<br />

To the extent possible, the examples in this book are drawn from<br />

the DemoExample KnowledgeBase distributed <strong>with</strong> all three<br />

<strong>FrameWork</strong> products. You can view the models on which these<br />

examples are based by opening the Demo Example folder in that<br />

KnowledgeBase.<br />

Related documentation<br />

Information on installing Ptech <strong>FrameWork</strong> for Windows is<br />

provided on an installation sheet distributed <strong>with</strong> the product<br />

CD-ROM. Additional information about <strong>FrameWork</strong> and other<br />

Ptech products is available in:<br />

■ Learning Business <strong>FrameWork</strong> and Learning <strong>Technology</strong><br />

<strong>FrameWork</strong> — Each of these books contains a tutorial that<br />

introduces you to business process or application development<br />

modeling and the <strong>FrameWork</strong> tool. By doing the exercises in<br />

these books, you become familiar <strong>with</strong> the modeling process and<br />

the <strong>FrameWork</strong> features that support it.<br />

■ Using <strong>FrameWork</strong> — This book contains comprehensive<br />

information on using Ptech Business, <strong>Technology</strong>, and<br />

Enterprise <strong>FrameWork</strong> to capture your business processes and<br />

design the applications that support them. In this book, you’ll<br />

find both conceptual and procedural information on topics<br />

ranging from basic modeling techniques to sharing<br />

KnowledgeBase information.<br />

■ <strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong> — This book describes the<br />

types of models directly supported by Ptech Business<br />

<strong>FrameWork</strong>. In this book, you’ll find information on the<br />

semantics and usage of each type of model, sample diagrams,<br />

and detailed information about the modeling tools and forms<br />

you use to create and modify model components.


Related documentation<br />

■ Generating C++ Code <strong>with</strong> <strong>FrameWork</strong> — This book explains<br />

how to generate C++ code from models you build using Ptech<br />

<strong>Technology</strong> or Enterprise <strong>FrameWork</strong>. This book also describes<br />

the C++-specific modeling tools and forms provided <strong>with</strong><br />

<strong>FrameWork</strong>.<br />

■ Generating Java Code <strong>with</strong> <strong>FrameWork</strong> — This book explains<br />

how to generate Java code from models you build using Ptech<br />

<strong>Technology</strong> or Enterprise <strong>FrameWork</strong>. This book also describes<br />

the Java-specific modeling tools and forms provided <strong>with</strong><br />

<strong>FrameWork</strong>.<br />

■ Generating CORBA IDL Code <strong>with</strong> <strong>FrameWork</strong> — This book<br />

explains how to generate Common Object Request Broker<br />

Architecture (CORBA) Interface Definition Language (IDL)<br />

code from models you build using Ptech <strong>Technology</strong> or<br />

Enterprise <strong>FrameWork</strong>. This book also describes the CORBAspecific<br />

modeling tools and forms provided <strong>with</strong> <strong>FrameWork</strong>.<br />

■ Customizing <strong>FrameWork</strong> — This book provides detailed<br />

information on using Enterprise <strong>FrameWork</strong> Professional to<br />

extend and customize the <strong>FrameWork</strong> modeling environment to<br />

meet the needs of your enterprise. Along <strong>with</strong> instructions for<br />

creating your own metamodels, diagram types, tool folders,<br />

queries, forms, and modeling contexts, this book includes an<br />

integrated set of examples that illustrate a customization<br />

scenario.<br />

■ Creating and Customizing ACG Templates — This book<br />

provides information that enables you to extend the reporting<br />

and code generation capabilities of the Ptech <strong>FrameWork</strong><br />

products to meet the needs of your enterprise. The ability to<br />

About This Book<br />

xv


Customer support<br />

Customer support<br />

About This Book<br />

xvi<br />

create and customize Ptech Abstract Code Generator (ACG)<br />

templates is included only in Enterprise <strong>FrameWork</strong><br />

Professional.<br />

Ptech offers its customers a variety of support services for<br />

<strong>FrameWork</strong> and its add-on products. In addition to the<br />

documentation and online help provided <strong>with</strong> the products, you can<br />

obtain information from the following sources:<br />

■ Formal training is available for all Ptech products.<br />

Experienced teachers can provide instruction tailored to your<br />

needs either at Ptech corporate headquarters or at your<br />

business site. For more information, please contact your Ptech<br />

sales representative at (800) 955-9345.<br />

■ The Ptech World Wide Web site provides access to up-to-date<br />

information on Ptech Inc. and the <strong>FrameWork</strong> family of products.<br />

You can browse the Ptech Web site at http://www.ptechinc.com.<br />

■ Technical support for Ptech products is available by telephone<br />

Monday through Friday between 9:00 a.m. and 6:00 p.m.<br />

Eastern time. To speak <strong>with</strong> a member of the Ptech Technical<br />

Support team, call (617) 443-1170 ext. 403. Alternatively, you<br />

can fax your questions to Ptech Technical Support at (617) 443-<br />

1136 or send email to support@ptechinc.com.


,QWURGXFWLRQ WR<br />

)UDPH:RUN 0RGHOV<br />

What’s in this chapter<br />

Ptech <strong>FrameWork</strong> is a powerful, object-oriented modeling tool that<br />

lets you capture, manage, analyze, and make full use of the<br />

knowledge capital of your enterprise. Its extensible, metamodelbased<br />

infrastructure ensures that you can model both business and<br />

application systems to the level of detail you choose, using the<br />

approach you prefer.<br />

This chapter contains general information about <strong>FrameWork</strong><br />

models. It includes an overview of the types of models <strong>FrameWork</strong><br />

directly supports and explains how information about models is<br />

presented in the remainder of this book.<br />

If you have Enterprise <strong>FrameWork</strong> Professional, you can create<br />

new types of models and the tools to build them. For information<br />

on creating your own model types, see Customizing <strong>FrameWork</strong>.<br />

About <strong>FrameWork</strong> models<br />

1<br />

Models and metamodels A <strong>FrameWork</strong> model is a structured representation of objects<br />

relevant to a specific view of a particular knowledge domain. Each<br />

model is built from a predefined set of semantic constructs. These<br />

semantic building blocks, as well as the rules and constraints that<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

1


Types of models<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

2<br />

govern their creation, are defined in one or more metamodels. A<br />

metamodel is a special type of class model that defines the<br />

constructs that can be used in other models. The classes in a<br />

metamodel are called metaclasses. For an introduction to objects<br />

and classes, see the discussion of <strong>FrameWork</strong> foundation concepts<br />

in Using <strong>FrameWork</strong>. For more information about metaclasses, see<br />

Customizing <strong>FrameWork</strong>.<br />

The <strong>FrameWork</strong> products come <strong>with</strong> metamodels that support a<br />

wide variety of types of models. Each metamodel specifies the<br />

semantics of a particular knowledge domain (or portion of a<br />

knowledge domain), such as strategic planning, use case modeling,<br />

or C++ class definition. Some of these metamodels describe the<br />

semantics of Unified <strong>Modeling</strong> Language (UML) models, as<br />

specified by the Object Management Group (OMG).<br />

Building models With <strong>FrameWork</strong>, you typically use graphical modeling tools to<br />

create the basic components of a model and then add detail and<br />

depth through the use of forms, dialog boxes, and additional<br />

models. The graphical representation of the model (that is, the<br />

diagram) is only one way of viewing it and can contain as much or<br />

as little detail as you choose.<br />

For more information on the mechanics of building models, see<br />

Using <strong>FrameWork</strong>.<br />

Directly-supported models To support your modeling work, <strong>FrameWork</strong> provides a variety of<br />

diagram types, each associated <strong>with</strong> one or more tool folders. Each<br />

diagram type corresponds to a type of model whose semantics are<br />

defined in the <strong>FrameWork</strong> metamodels. Models for which<br />

<strong>FrameWork</strong> provides a diagram type and modeling tools are called<br />

directly supported models.<br />

Types of models<br />

The table below lists the types of models that are directly supported<br />

by Ptech Business, <strong>Technology</strong>, and/or Enterprise <strong>FrameWork</strong>. For


Types of models<br />

each type of model, the table provides a brief description and<br />

indicates the metamodels that define the model semantics. Full<br />

descriptions of these model types and their components are in the<br />

documents noted after each description.<br />

Model type Description Supporting metamodels<br />

Activity<br />

(UML)<br />

Business<br />

architecture<br />

Business<br />

object<br />

Business<br />

relationship<br />

Describes the flow of activities in a process<br />

and, optionally, identifies objects that flow<br />

into and out of those activities — <strong>Modeling</strong><br />

<strong>with</strong> <strong>Technology</strong> <strong>FrameWork</strong><br />

Identifies core business activities of an<br />

enterprise, the resources they consume,<br />

and the products they produce — <strong>Modeling</strong><br />

<strong>with</strong> Business <strong>FrameWork</strong> and <strong>Modeling</strong><br />

<strong>with</strong> <strong>Technology</strong> <strong>FrameWork</strong><br />

Defines types of objects and identifies their<br />

associations, attributes, and operations —<br />

<strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong> and<br />

<strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong> <strong>FrameWork</strong><br />

Describes peer and supplier-client<br />

relationships between accountable parties<br />

— <strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong><br />

Business rule Describes conditions that, when true,<br />

result in the occurrence of particular<br />

actions — <strong>Modeling</strong> <strong>with</strong> Business<br />

<strong>FrameWork</strong> and <strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong><br />

<strong>FrameWork</strong><br />

■ Capability<br />

Management<br />

■ UML Activity<br />

■ UML Statechart<br />

■ Business Architecture<br />

■ Capability<br />

Management<br />

■ Class Type Hierarchy<br />

■ Operation<br />

■ Implementation<br />

■ Ptech Foundation<br />

■ Enterprise Relationship<br />

■ Enterprise Structure<br />

■ Rule <strong>Modeling</strong><br />

■ UML Request and<br />

Action<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

3


Types of models<br />

continued<br />

Model type Description Supporting metamodels<br />

C++ class Defines classes for a C++ application and<br />

identifies their properties,<br />

interrelationships, and operations —<br />

Generating C++ Code <strong>with</strong> <strong>FrameWork</strong><br />

Class (UML) Defines types of objects and identifies their<br />

associations, attributes, and operations —<br />

<strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong> <strong>FrameWork</strong><br />

Collaboration<br />

(UML)<br />

Describes the relationships between the<br />

objects that participate in or are otherwise<br />

affected by an interaction and identifies<br />

the communications that occur through<br />

these relationships — <strong>Modeling</strong> <strong>with</strong><br />

<strong>Technology</strong> <strong>FrameWork</strong><br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

4<br />

■ C++ Class<br />

■ C++ Parameterized<br />

Class<br />

■ Class Type Hierarchy<br />

■ Common Language<br />

Class<br />

■ Data Type Hierarchy<br />

■ Implementation<br />

■ Language Extension<br />

Supporting Objects<br />

■ Operation<br />

■ Ptech Foundation<br />

■ Class Type Hierarchy<br />

■ Implementation<br />

■ Language Extension<br />

Supporting Objects<br />

■ Operation<br />

■ Ptech Foundation<br />

■ UML Backbone<br />

■ UML Relationship and<br />

Dependency<br />

■ UML Collaboration


continued<br />

Component<br />

(UML)<br />

Deployment<br />

(UML)<br />

Distributed<br />

class<br />

Identifies software components, the<br />

dependent and containing relationships<br />

among them, and the functionality they<br />

require from one another — <strong>Modeling</strong> <strong>with</strong><br />

<strong>Technology</strong> <strong>FrameWork</strong><br />

Describes the run-time implementation of<br />

a software system — <strong>Modeling</strong> <strong>with</strong><br />

<strong>Technology</strong> <strong>FrameWork</strong><br />

Defines interface, implementation, and<br />

other types of classes for a CORBA<br />

application and identifies their properties,<br />

interrelationships, and operations —<br />

Generating CORBAL IDL Code <strong>with</strong><br />

<strong>FrameWork</strong><br />

■ UML Component<br />

■ UML Deployment<br />

Types of models<br />

Model type Description Supporting metamodels<br />

Enterprise<br />

activity<br />

Breaks down a core process into its<br />

component activities and identifies the<br />

parties that have responsibility for those<br />

activities and the resources they require —<br />

<strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong><br />

■ Class Type Hierarchy<br />

■ Common Language<br />

Class<br />

■ CORBA Class<br />

■ CORBA Java Database<br />

Connectivity<br />

■ CORBA Module<br />

■ CORBA Partition<br />

■ Data Type Hierarchy<br />

■ Implementation<br />

■ Language Extension<br />

Supporting Objects<br />

■ Operation<br />

■ Ptech Foundation<br />

■ Business Architecture<br />

■ Capability<br />

Management<br />

■ Enterprise Structure<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

5


Types of models<br />

continued<br />

Model type Description Supporting metamodels<br />

Enterprise<br />

requirement<br />

Enterprise<br />

structure<br />

Captures internal and external<br />

requirements that drive the business of an<br />

enterprise — <strong>Modeling</strong> <strong>with</strong> Business<br />

<strong>FrameWork</strong><br />

Identifies organizations, positions, and<br />

people and describes their reporting<br />

hierarchy — <strong>Modeling</strong> <strong>with</strong> Business<br />

<strong>FrameWork</strong><br />

Forté class Defines classes for a Forté application and<br />

identifies their associations, attributes,<br />

and operations and the events they can<br />

post — Using <strong>FrameWork</strong>/Forté<br />

Forté process Describes the sequence and timing of<br />

operations in a Forté application process —<br />

Using <strong>FrameWork</strong>/Forté<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

6<br />

■ Enterprise<br />

Requirement<br />

■ Enterprise Location<br />

■ Enterprise Structure<br />

■ Class Type Hierarchy<br />

■ Common Language<br />

Class<br />

■ Data Type Hierarchy<br />

■ Forté Class<br />

■ Forté Event<br />

■ Forté Operation<br />

■ Forté Partitioning<br />

■ Forté System Class<br />

■ Implementation<br />

■ Language Extension<br />

Supporting Objects<br />

■ Operation<br />

■ Ptech Foundation<br />

■ Extended Process<br />

■ Forté Event<br />

■ Forté Operation<br />

■ Process


continued<br />

Instance<br />

interaction<br />

(UML)<br />

Presents a specific example of an<br />

interaction described in a collaboration<br />

model — <strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong><br />

<strong>FrameWork</strong><br />

Types of models<br />

Model type Description Supporting metamodels<br />

Java class Defines classes for a Java application and<br />

identifies their associations, attributes,<br />

and operations — Generating Java Code<br />

<strong>with</strong> <strong>FrameWork</strong><br />

Metamodel Defines semantic constructs for building<br />

other models and specifies the ways in<br />

which those constructs can relate to each<br />

other — Customizing <strong>FrameWork</strong><br />

Operation Describes an operation interface, including<br />

its arguments, return type, and rules for<br />

method selection — <strong>Modeling</strong> <strong>with</strong><br />

Business <strong>FrameWork</strong> and <strong>Modeling</strong> <strong>with</strong><br />

<strong>Technology</strong> <strong>FrameWork</strong><br />

■ UML Instance and Link<br />

■ Ptech Foundation<br />

■ Class Type Hierarchy<br />

■ Common Language<br />

Class<br />

■ Java Concepts<br />

■ Java External Class<br />

Hierarchy<br />

■ Java Modifier<br />

■ Data Type Hierarchy<br />

■ Operation<br />

■ Implementation<br />

■ Language Extension<br />

Supporting Objects<br />

■ Ptech Foundation<br />

■ Class Type Hierarchy<br />

■ Diagrams and<br />

Narratives<br />

■ Operation<br />

■ Common Language<br />

Operation<br />

■ C++ Operation<br />

■ CORBA Operation<br />

■ Forté Operation<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

7


Types of models<br />

continued<br />

Model type Description Supporting metamodels<br />

Oracle8 Defines classes that correspond to object<br />

types in an Oracle8 database and identifies<br />

their associations, attributes, and<br />

operations — Generating Oracle8 PL/SQL<br />

Code <strong>with</strong> <strong>FrameWork</strong><br />

Package<br />

(UML)<br />

Defines groupings of model elements for<br />

configuration, storage, or access purposes<br />

— <strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong> and<br />

<strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong> <strong>FrameWork</strong><br />

Process Describes the control flow of a process as a<br />

cause-and-effect chain of events and<br />

operations, <strong>with</strong> branching to show<br />

alternative and concurrent processing<br />

paths — <strong>Modeling</strong> <strong>with</strong> Business<br />

<strong>FrameWork</strong> and <strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong><br />

<strong>FrameWork</strong><br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

8<br />

■ Ptech Foundation<br />

■ Class Type Hierarchy<br />

■ Common Language<br />

Class<br />

■ Oracle8 Attribute<br />

■ Data Type Hierarchy<br />

■ Oracle8 Data Types<br />

■ Oracle8 Extensions<br />

■ Operation<br />

■ Implementation<br />

■ Language Extension<br />

Supporting Objects<br />

■ UML Model<br />

Management<br />

■ Java Concept<br />

■ Project Element<br />

■ Ptech Foundation<br />

■ Process<br />

■ Extended Process<br />

■ Implementation


continued<br />

Process step Describes the sequence of actions that<br />

implements a business activity —<br />

<strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong><br />

■ Ptech Foundation<br />

■ Process<br />

■ Extended Process<br />

■ Process Step<br />

■ Workflow<br />

Types of models<br />

Model type Description Supporting metamodels<br />

Project Captures the planning, implementation,<br />

and progress of a project, as well as the<br />

sequence tasks it entails — <strong>Modeling</strong> <strong>with</strong><br />

Business <strong>FrameWork</strong> and <strong>Modeling</strong> <strong>with</strong><br />

<strong>Technology</strong> <strong>FrameWork</strong><br />

Report layout Specifies the content and structure of a<br />

<strong>FrameWork</strong> Document report — <strong>Modeling</strong><br />

<strong>with</strong> Business <strong>FrameWork</strong> and <strong>Modeling</strong><br />

<strong>with</strong> <strong>Technology</strong> <strong>FrameWork</strong><br />

Road map Shows the logical organization of a group of<br />

models and provides access to the model<br />

diagrams — <strong>Modeling</strong> <strong>with</strong> Business<br />

<strong>FrameWork</strong> and <strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong><br />

<strong>FrameWork</strong><br />

Sequence<br />

(UML)<br />

Shows the order in which the objects in an<br />

interaction communicate <strong>with</strong> each other<br />

and describes the content of their<br />

communications — <strong>Modeling</strong> <strong>with</strong><br />

<strong>Technology</strong> <strong>FrameWork</strong><br />

■ Alternative Process<br />

■ and Implementation<br />

■ Project Planning<br />

■ Project Management<br />

■ Project Element<br />

■ Project Requirement<br />

■ Document Structure<br />

■ Paragraph Content<br />

■ Diagrams and<br />

Narratives<br />

■ Diagram Relationship<br />

■ UML Instance and Link<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

9


Types of models<br />

continued<br />

Model type Description Supporting metamodels<br />

Statechart<br />

(UML)<br />

Strategic<br />

planning<br />

Team<br />

architecture<br />

<strong>Technology</strong><br />

architecture<br />

Use case<br />

(UML)<br />

Describes the ways in which the objects in<br />

a class change their state in response to<br />

external or internal events and conditions<br />

— <strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong> <strong>FrameWork</strong><br />

Describes the mission of a business<br />

enterprise and the visions, goals,<br />

directives, strategies, and projects that<br />

help realize that mission — <strong>Modeling</strong> <strong>with</strong><br />

Business <strong>FrameWork</strong><br />

Defines a project team and describes its<br />

roles, role assignments, and<br />

responsibilities — <strong>Modeling</strong> <strong>with</strong> Business<br />

<strong>FrameWork</strong><br />

Describes technology resources used by<br />

business activities and identifies the<br />

dependent and cooperative relationships<br />

among those resources; also, describes<br />

hardware and software requirements of an<br />

application — <strong>Modeling</strong> <strong>with</strong> Business<br />

<strong>FrameWork</strong> and <strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong><br />

<strong>FrameWork</strong><br />

Describes the types of interactions that can<br />

occur between a system and the users of<br />

that system — <strong>Modeling</strong> <strong>with</strong> Business<br />

<strong>FrameWork</strong> and <strong>Modeling</strong> <strong>with</strong> <strong>Technology</strong><br />

<strong>FrameWork</strong><br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

10<br />

■ UML Statechart<br />

■ UML Event<br />

■ UML Request and<br />

Action<br />

■ Strategic Planning<br />

■ Goals and Objectives<br />

■ Enterprise<br />

Requirement<br />

■ Risk Management<br />

■ Team Architecture<br />

■ Resource Information<br />

■ Capability<br />

Management<br />

■ Enterprise Location<br />

■ Resource Effectiveness<br />

■ UML Use Case<br />

■ UML Use Case Step


Format of model descriptions<br />

Format of model descriptions<br />

Except for this chapter and Chapter 2, “Cross-model Concepts,” the<br />

chapters in this book each contain information about a single type<br />

of model. These chapters all have the same basic structure and<br />

present the same kinds of information.<br />

Each chapter starts <strong>with</strong> a general information about the model<br />

type, followed by a sample diagram. This, in turn, is followed by<br />

sections discussing each type of object used to build models of that<br />

type. The discussion of each type of object typically includes:<br />

■ A general description of the object type, including the class to<br />

which the objects belong and suggested naming conventions.<br />

■ A list of properties objects of that type can have, along <strong>with</strong> the<br />

association end or attribute that implements each property.<br />

This information is provided to assist in the use of dialog boxes<br />

such as Edit Properties and Select Association End. The<br />

properties listed generally do not include inherited properties or<br />

properties that don’t apply in the context (that is, business or<br />

OOAD modeling).<br />

■ Instructions for creating objects of that type.<br />

■ Forms for viewing and modifying objects of that type.<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

11


Format of model descriptions<br />

Chapter 1: Introduction to <strong>FrameWork</strong> Models<br />

12


&URVV PRGHO &RQFHSWV<br />

What’s in this chapter<br />

The <strong>FrameWork</strong> metamodels include some concepts that apply<br />

across a variety of model types. This chapter describes some of<br />

those concepts.<br />

About cross-model concepts<br />

Abstract superclasses Some cross-model concepts are implemented as superclasses of<br />

lower-level classes that appear in several different metamodels. By<br />

adding a level of abstraction, these superclasses simplify the<br />

metamodels, making them easier to understand and, through<br />

inheritance, imposing consistency on classes that represent similar<br />

concepts. An example of this kind of superclass is #CLASSIFIER,<br />

which is described under “Classes” in Chapter 7, “Class Models<br />

(UML).”<br />

For an introduction to superclasses and inheritance, see the<br />

discussion of <strong>FrameWork</strong> foundation concepts in Chapter 1 of<br />

Using <strong>FrameWork</strong>.<br />

2<br />

Independent concepts Some cross-model concepts are independent of the class hierarchies<br />

associated <strong>with</strong> any particular type of model. The classes that<br />

implement these concepts typically have associations <strong>with</strong> the kind<br />

Chapter 2: Cross-model Concepts<br />

13


Objects<br />

Objects<br />

Model elements<br />

Chapter 2: Cross-model Concepts<br />

14<br />

of abstract superclasses described above. Through their<br />

associations, these classes often facilitate the use of <strong>FrameWork</strong> for<br />

analysis. An example of this type of class is #CONSTRAINT, which is<br />

described under “Object constraints” later in this chapter. For<br />

more information on using <strong>FrameWork</strong> for analysis, see Using<br />

<strong>FrameWork</strong>.<br />

The most basic cross-model concept in <strong>FrameWork</strong> is the notion of<br />

an object, which is implemented by the #OBJECT class. Because<br />

every KnowledgeBase object is an instance of this class, the<br />

properties of this class apply to all objects. These properties<br />

include:<br />

■ The #name attribute, which lets you specify textual<br />

representations for objects.<br />

■ The #description attribute and #document and #data files<br />

association ends, which let you associate descriptive and<br />

supporting text and application files <strong>with</strong> objects.<br />

■ The #contained_in, #diagrams, and #diagrams_anchored<br />

association ends, which specify the relationships between<br />

objects and the diagrams in which they appear, their attached<br />

diagrams, and their anchored diagrams, respectively. You can<br />

use the Related Diagrams form to view this information for an<br />

object.<br />

For more information on the properties listed above, see Using<br />

<strong>FrameWork</strong>.<br />

Another basic cross-model concept is implemented by the #MODEL<br />

ELEMENT class. A model can contain many different types of


Model element comments<br />

objects, some of which are more fundamental than others to its<br />

construction and meaning. <strong>FrameWork</strong> reserves the concept of<br />

model element for the core constructs of a model. These constructs<br />

typically have names and are not dependent on other objects for<br />

their existence. Examples of model elements are classes, activities,<br />

and use cases.<br />

Objects that are not model elements are usually unnamed and are<br />

either objectified relationships or other objects that cannot exist<br />

<strong>with</strong>out the presence of one or more related objects. Examples of<br />

objects that are not model elements are attributes, consumption<br />

relationships, and bidirectional communications.<br />

The #MODEL ELEMENT class is an abstract superclass of a wide<br />

variety of other classes. When you create an object in any of these<br />

classes, that object is automatically an instance of #MODEL<br />

ELEMENT. You can define other individual objects as model<br />

elements by adding them to the #MODEL ELEMENT class. If you<br />

have Enterprise <strong>FrameWork</strong> Professional, you can define an entire<br />

class of objects as model elements by making the class a subclass of<br />

#MODEL ELEMENT or any of its subclasses.<br />

Model element comments<br />

Information on this topic is not yet available.<br />

Model element dependencies<br />

Object constraints<br />

Information on this topic is not yet available.<br />

Information on this topic is not yet available.<br />

Chapter 2: Cross-model Concepts<br />

15


Design changes<br />

Design changes<br />

Chapter 2: Cross-model Concepts<br />

16


$FWLYLW\ 0RGHOV 80/<br />

About activity models<br />

<br />

3<br />

Description Activity models describe the flow of activities in processes and,<br />

optionally, identify objects that flow into and out of those activities.<br />

This type of model focuses on the dynamic aspects of an enterprise<br />

or system by showing the transitions from one state of activity to<br />

the next. Thus, an activity model is a statechart model of a process.<br />

For more information on statechart models, see Chapter 18,<br />

“Statechart Models (UML).”<br />

Activity models serve a variety of purposes. For example, you can<br />

use them to model standalone workflows, define the control flow of<br />

operations, or describe the implementation of use cases.<br />

The semantics and notations for activity models are prescribed by<br />

UML. For more information on the UML specification for this type<br />

of model, see the UML documentation made available by the OMG.<br />

Building activity models To build an activity model, you typically create an activity diagram<br />

using tools in the UML Activity Diagram Tools tool folder.<br />

Support Direct support for activity models is provided only in <strong>Technology</strong><br />

and Enterprise <strong>FrameWork</strong>.<br />

Chapter 3: Activity Models (UML)<br />

17


Sample activity diagram<br />

Sample activity diagram<br />

Sample diagram The window below contains a sample activity diagram that shows<br />

the flow of activities for developing a sales order. The name of this<br />

diagram is Selling Activity Workflow.<br />

Visit not required The process shown in the Selling Activity Workflow diagram begins<br />

<strong>with</strong> the Plan Sales Strategy activity and then takes either of two<br />

paths, depending on whether a visit is required. If a visit is not<br />

required, the process moves on to the Provide Detailed Proposal<br />

activity. The output from this activity is a quoted customer order,<br />

which then serves as input to the Complete Sales Quote activity.<br />

This activity, the final one in this particular path, changes the<br />

quoted order to an approved and accepted order.<br />

Chapter 3: Activity Models (UML)<br />

18


Action and activity states<br />

Visit required If a visit is required, the process can take one of three paths after<br />

the visit, depending on what, if anything, is requested as a result of<br />

it. If an order is requested, control flows to the Provide Detailed<br />

Proposal activity. If more information is requested, control flows to<br />

the Submit Requested Information activity, from there to the Take<br />

Follow-up Actions activity, and then to the Provide Detailed Proposal<br />

activity. If nothing is requested, control flows to the Analyze<br />

Opportunity Loss activity, which is also a final activity for the<br />

process.<br />

Action and activity states<br />

Action states In an activity model, you can use both action and activity states to<br />

represent the stages of a process. An action state represents a<br />

single action that cannot be broken down or interrupted. When<br />

control passes to an action state, the action occurs, and control<br />

passes to the next state. The Selling Activity Workflow diagram<br />

shown above contains five action states: Plan Sales Strategy, Provide<br />

Detailed Proposal, Visit Account, Provide Detailed Proposal, and Take<br />

Follow-up Actions.<br />

Activity states An activity state represents an activity that can be broken down<br />

into a sequence of lower-level action or activity states. Because it’s<br />

actually a composite of other states, an activity state typically takes<br />

longer than an action state to complete and can be interrupted. In<br />

the Selling Activity Workflow diagram, Complete Sales Quote and<br />

Analyze Opportunity Loss are activity states.<br />

Unlike action states, activity states can be associated <strong>with</strong> entry<br />

and exit actions, internal transitions, and deferred events. For<br />

more information on these objects, see “States” in Chapter 18,<br />

“Statechart Models (UML).”<br />

Action or activity? The distinction between action and activity states often depends on<br />

the purpose and scope of the modeling project or on the modeler’s<br />

point of view. For example, in an activity model describing the<br />

manual process of performing a credit check, Review Customer<br />

Credit History might be an action state. However, in the activity<br />

Chapter 3: Activity Models (UML)<br />

19


Creating an action or activity state<br />

Action and activity state<br />

names<br />

Chapter 3: Activity Models (UML)<br />

20<br />

model detailing the flow of control for an operation in a software<br />

application, Review Customer Credit History would be an activity<br />

state that could be broken down into action states such as Retrieve<br />

Current Customer Credit Rating, and Retrieve Lowest Customer Credit<br />

Rating, and Compare Current and Lowest Ratings.<br />

The name of an action or activity state should be a verb phrase that<br />

clearly indicates what’s happening in the process. Use the simple<br />

form of the verb, followed by a singular noun to indicate a single<br />

performance of the action. For examples of action and activity state<br />

names, look at the Selling Activity Workflow model.<br />

Creating an action or activity state<br />

To create an action or activity state:<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

the Action State or Activity State tool, as applicable.<br />

2 Drag into your activity diagram window and release the mouse<br />

button where you want to place the action or activity state<br />

graphic.<br />

3 Type a name for the action or activity state. Then click on the<br />

window background to close the edit box.<br />

Forms for action and activity states<br />

You can use the Basic State Information form to view and modify<br />

information about an action or activity state. You can also use the<br />

Basic Submachine State Information form for an activity state. For<br />

more information on these forms, see “States” in Chapter 18,<br />

“Statechart Models (UML).”


Activity control flows<br />

Branching<br />

Activity control flows<br />

In an activity model, the flow of control from one activity or action<br />

state to the next is represented by a transition. A transition is a<br />

change from one state of activity to another. Each state can have<br />

one or more incoming transitions, but typically has only one<br />

outgoing transition. The outgoing transition can branch or fork to<br />

represent alternative or concurrent control flows.<br />

Transitions do not usually have names.<br />

Decisions A decision is a point at which a control flow branches into two or<br />

more alternative paths. When the transition from an action or<br />

activity state leads to a decision, the flow of control passes through<br />

only one of the transitions coming out of the decision. For example,<br />

in the Selling Activity Workflow model, the transition from the Plan<br />

Sales Strategy activity leads to a decision <strong>with</strong> two branches.<br />

Control can flow to either branch, but not both, depending on<br />

whether a visit is required.<br />

Decisions do not usually have names.<br />

Guards You can associate each transition out of a decision <strong>with</strong> a guard. A<br />

guard is a condition that must be true for control to pass through<br />

the transition. The name of a guard is the boolean expression that<br />

describes the condition (that is, an expression that can evaluate to<br />

either true or false) such as visit required or visit not required. This<br />

name is usually enclosed in square brackets.<br />

The guards associated <strong>with</strong> the transitions coming from a single<br />

decision should cover all possibilities and should not overlap. If you<br />

cannot explicitly account for all possibilities, you can associate a<br />

catchall guard such as else or no other guard is satisfied <strong>with</strong> one of<br />

the transitions.<br />

Chapter 3: Activity Models (UML)<br />

21


Forking and joining<br />

Forking and joining<br />

Chapter 3: Activity Models (UML)<br />

22<br />

You can also associate a guard <strong>with</strong> a transition that comes directly<br />

out of an action or activity state. The implication, in this case, is<br />

that the process does not transition out of the state until the guard<br />

is satisfied.<br />

Forks When an action or activity state is followed by two or more states<br />

that can occur concurrently, the flow of control needs to split into<br />

multiple, independent paths. Control then flows along each of<br />

these paths at the same time. The point at which this split occurs<br />

is called a fork. Forks occur most frequently when different<br />

entities are responsible for the activities along each path.<br />

Joins If the paths of a fork are truly concurrent (as opposed to<br />

alternative), they need to merge back into a single path before the<br />

process represented by the activity model is complete. The point at<br />

which these paths merge is called a join. In a well-formed activity<br />

model, each fork has a corresponding join.<br />

Synchronization bars Forks and joins are represented by synchronization bars in<br />

activity diagrams. The synchronization bar for a fork has a single<br />

incoming transition and two or more outgoing transitions. The<br />

synchronization bar for a join has two or more incoming transitions<br />

and a single outgoing transition. Forks and joins do not usually<br />

have names.<br />

In the Process Order Workflow diagram below shows an example of<br />

forking and joining. In this diagram, the upper synchronization<br />

bars show that the control flow forks after the Pull Ordered Items<br />

from Stock state. The lower synchronization bar shows that the<br />

separate paths of the control flow rejoin each other before the Ship<br />

Package <strong>with</strong> Packing Slip state.


Forking and joining<br />

Nesting forks and joins You can nest forks and joins to any level. The paths coming out of<br />

any given fork should rejoin each other before joining any paths<br />

from a preceding fork. The sample activity diagram schematic<br />

shown below contains two nested forks and joins.<br />

Fork<br />

Join<br />

Chapter 3: Activity Models (UML)<br />

23


Creating control flows<br />

Creating control flows<br />

Creating a transition<br />

<strong>with</strong>out a guard<br />

Creating a transition <strong>with</strong> a<br />

guard<br />

Chapter 3: Activity Models (UML)<br />

24<br />

Fork and join<br />

Fork and join<br />

Fork and join<br />

To create a transition <strong>with</strong>out a guard:<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

the Next Activity/Action tool.<br />

2 Drag onto the starting state for the transition and release the<br />

mouse button. Then click on the ending state for the transition.<br />

To create a transition <strong>with</strong> a guard:<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

the Next Activity/Action <strong>with</strong> Guard tool.<br />

2 Drag onto the starting state for the transition and release the<br />

mouse button. Then click on the ending state for the transition.<br />

3 Type the boolean expression for the guard associated <strong>with</strong> the<br />

transition. Then click on the window background to close the<br />

edit box.


Creating a decision To create a decision:<br />

Creating control flows<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

the Decision tool.<br />

2 Drag into your activity diagram window and release the mouse<br />

button where you want to place the decision graphic.<br />

3 Click on the window background to close the edit box.<br />

4 Create transitions to and from the decision:<br />

Creating a fork or join To create a fork or a join:<br />

● Using the Next Activity/Action or Next Activity/Action <strong>with</strong><br />

Guard tool, create a transition from the starting state to the<br />

decision.<br />

● Using the Next Activity/Action <strong>with</strong> Guard tool, create<br />

transitions from the decision to each ending state.<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

either the vertical or horizontal Synchronization Bar tool. The<br />

choice of tool depends only on how you want your diagram to<br />

look. Semantically, these tools are the same.<br />

Tip<br />

After creating a vertical or horizontal synchronization bar,<br />

you can switch its orientation by resizing it.<br />

2 Drag into your activity diagram window and release the mouse<br />

button where you want to place the synchronization bar<br />

graphic.<br />

3 Click on the window background to close the edit box.<br />

4 Create transitions to and from the synchronization bar:<br />

● For a fork:<br />

Chapter 3: Activity Models (UML)<br />

25


Form for transitions<br />

Chapter 3: Activity Models (UML)<br />

26<br />

● Using the Next Activity/Action or Next Activity/Action<br />

<strong>with</strong> Guard tool, create a transition from the starting<br />

state to the synchronization bar.<br />

● Using the Next Activity/Action tool, create transitions<br />

from the synchronization bar to each ending state.<br />

● For a join:<br />

Form for transitions<br />

● Using the Next Activity/Action or Next Activity/Action<br />

<strong>with</strong> Guard tool, create transitions from each starting<br />

state to the synchronization bar.<br />

● Using the Next Activity/Action tool, create a transition<br />

from the synchronization bar to the ending state.<br />

You can use the State Transition Information form to view and<br />

modify information about a transition. For more information on<br />

this form, see “Transitions” in Chapter 18, “Statechart Models<br />

(UML).”<br />

Initial and final states<br />

Initial states Every activity model should have an initial state. This state<br />

indicates a starting point for the process represented by the model.<br />

A process is never actually in its initial state. Rather, the initial<br />

state provides an anchor for the transition to the first activity in<br />

the process.<br />

Final states Unless an activity model represents a process that loops infinitely,<br />

it needs to include at least one final state. A final state indicates<br />

an ending point for the process. As <strong>with</strong> the initial state, the<br />

process is never actually in a final state. Rather, the final state<br />

provides a terminus for the transition out of the last activity in the<br />

process.


Creating an initial or final<br />

state<br />

Object flows<br />

Moving objects through a<br />

process<br />

Initial and final states do not usually have names.<br />

To create an initial or final state:<br />

Object flows<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

the Initial State or Final State tool, as applicable.<br />

2 Drag into your activity diagram window and release the mouse<br />

button where you want to place the initial or final state graphic.<br />

3 Click on the window background to close the edit box.<br />

The objects output by activities in a process often serve as input to<br />

other activities later in the process. You can add object flows to<br />

an activity model to identify the objects created, modified, or<br />

terminated by the activities in it. Object flows show the movement<br />

of objects through the stages of a process and optionally indicate<br />

the ways in which the objects change along the way.<br />

Object flow states Object flows consist of object flow states and flow transitions. An<br />

object flow state represents an object that is input to or output<br />

from an activity. This object is an instance of a particular class and<br />

is, optionally, in a specified state defined for the objects in that<br />

class. The name of an object flow state is usually the name of the<br />

class it instantiates, optionally followed by the name of the state<br />

the object is in. The state name is usually enclosed in square<br />

brackets. For example, the names of the object flow states in the<br />

Selling Activity Workflow model are Customer Order [quoted] and<br />

Approved Order [accepted].<br />

To establish the relationships between an object flow state and the<br />

class and state of the object it represents, you associate the object<br />

flow state <strong>with</strong> an instance of the #CLASSIFIER IN STATE class.<br />

Each object in this class defines a pairing of a class and a state<br />

defined for the class.<br />

Chapter 3: Activity Models (UML)<br />

27


Creating object flows<br />

Flow transitions A flow transition connects an object flow state to an activity that<br />

creates, modifies, or terminates the object it represents. A flow<br />

transition that goes from an action or activity state to the object<br />

flow state shows that the object is output from the activity. For<br />

example, the Customer Order [quoted] object flow state in the selling<br />

activity model is output from the Provide Detailed Proposal action<br />

state. An object flow state usually has only one incoming transition<br />

or none if the object is coming from another process.<br />

Creating object flows<br />

Creating an object flow<br />

state<br />

Chapter 3: Activity Models (UML)<br />

28<br />

A flow transition that goes from the object flow state to an action or<br />

activity state shows that the object is input to the activity. For<br />

example, the same Customer Order [quoted] object flow state output<br />

from the Provide Detailed Proposal action state is input to the<br />

Complete Sales Quote activity state. An object flow state can have<br />

any number of outgoing transitions, including none.<br />

The flow transitions to and from an object flow state do not need to<br />

be connected to sequential states. Any number of action and<br />

activity states can occur between the state that produces an object<br />

flow state as output and a state that uses it as input.<br />

Flow transitions do not usually have names.<br />

To create an object flow state:<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

the Object Flow State tool.<br />

2 Drag into your activity diagram window and release the mouse<br />

button where you want to place the object flow state graphic.<br />

3 Type a name for the object flow state. Then click on the window<br />

background to close the edit box.


Creating a flow transition To create a flow transition:<br />

Form for object flow states<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

the Flow Transition tool.<br />

2 Drag onto the starting action, activity, or object flow state for<br />

the transition and release the mouse button. Then click on the<br />

ending action, activity, or object flow state for the transition.<br />

Form for object flow states<br />

You can use the Basic Object Flow State Information form to view<br />

and modify information about an object flow state. The sample<br />

form below shows information about the Customer Order [quoted]<br />

object flow state in the Selling Activity Workflow model. Notice<br />

that Customer Order [quoted] is associated <strong>with</strong> a classifier in state<br />

that is itself associated <strong>with</strong> the Customer Order class and the<br />

Quoted Order state.<br />

Responsibility for activities<br />

Activities as capabilities In addition to the sequence of activities in a process, an activity<br />

model can also specify who has responsibility for those activities.<br />

Activities are capabilities, so the relationship between an activity<br />

and the party that has responsibility for it is established through<br />

the owner association end. For more information on capabilities<br />

and their owners, see <strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong>.<br />

Chapter 3: Activity Models (UML)<br />

29


Responsibility for activities<br />

Swim lanes In activity diagrams, you use swim lanes to represent ownership<br />

relationships. Each swim lane is a rectangle that contains one or<br />

more action or activity states and that is connected to the party<br />

responsible for them. For example, in the Complete Sales Quote<br />

Activity diagram shown below, Sales Person is responsible for the<br />

Determine Total Cost of Order, Call Credit Admin, Give Order Info to<br />

Credit Admin, and Accept Order activities, while Credit Administrator<br />

is responsible for the Evaluate Order and Approve Order activities.<br />

Creating a swim lane To create a swim lane:<br />

Chapter 3: Activity Models (UML)<br />

30<br />

1 In the UML Activity Diagram Tools tool folder, click and hold on<br />

the Capabilities Owned tool.


Responsibility for activities<br />

2 Drag into your activity diagram window and release the mouse<br />

button.<br />

3 While holding down the left mouse button, drag a box around<br />

the action and activity states for which you’re assigning<br />

responsibility and release the mouse button.<br />

Tip<br />

<strong>FrameWork</strong> doesn’t care if your box encloses transitions,<br />

object flow states, decisions, or synchronization bars. These<br />

objects are not capabilities and will not participate in the<br />

relationship you’re defining.<br />

4 Click on the party responsible for those activities.<br />

Chapter 3: Activity Models (UML)<br />

31


Responsibility for activities<br />

Chapter 3: Activity Models (UML)<br />

32


%XVLQHVV $UFKLWHFWXUH<br />

0RGHOV<br />

About business architecture models<br />

Description A business architecture model describes the functional composition,<br />

or architecture, of a business or application system — for example,<br />

the operational flow of a manufacturing process or the functional<br />

specification of an order processing application. The model breaks<br />

a large problem down into its smaller components. It represents<br />

what happens and why, but not how.<br />

Building business<br />

architecture models<br />

4<br />

For many modeling projects, the first step is to build a business<br />

architecture model that represents the higher-level activities of the<br />

system. This high-level model also serves to define the scope of the<br />

project. Additionally, a project may require lower-level business<br />

architecture models that further describe the components of the<br />

high-level model.<br />

Tip You can also use business architecture models to model valueadded<br />

chains for business processes.<br />

To build a business architecture model, you typically create a<br />

business architecture diagram using tools in the Business<br />

Architecture Diagram Tools tool folder and the common toolbar.<br />

Support Direct support for business architecture models is provided in all<br />

three <strong>FrameWork</strong> products.<br />

Chapter 4: Business Architecture Models<br />

33


Sample business architecture diagram<br />

Sample business architecture diagram<br />

Sample diagram The window below contains a sample business architecture<br />

diagram that shows the activities involved in product marketing.<br />

The name of this diagram is Product Marketing Operations.<br />

Sales information analysis The Product Marketing Operations diagram shows that one of the<br />

activities involved in product marketing is analyzing sales<br />

information. The input to this activity consists of information<br />

about market demand, the products available for sale, industry<br />

regulations, and the competition. The output from this activity is<br />

sales information that’s critical to developing product marketing<br />

strategies.<br />

Product promotion and<br />

development<br />

Chapter 4: Business Architecture Models<br />

34<br />

Another product marketing activity is product promotion. The<br />

market demand generated by this activity is part of the information<br />

used in performing sales information analysis. Information about<br />

products for sale, on the other hand, is the result of product<br />

development. This activity is outside the scope of product<br />

marketing.


Activities<br />

Activities<br />

About activities In a business architecture model, activities represent<br />

responsibilities or, more precisely, actions taken to carry out<br />

responsibilities. They consume resources (their input) and produce<br />

products (their output). For example, in the Product Marketing<br />

Operations model, the Analyze Sales Information activity uses<br />

resources named Market Demand, Products for Sale, Industry<br />

Regulations, and Competition and generates output named Critical<br />

Sales Information.<br />

Internal and external<br />

activities<br />

Many resources, one<br />

product<br />

Activities belong to the #ACTIVITY class.<br />

From the perspective of the Product Marketing Operations model,<br />

Analyze Sales Information is an internal activity. That is, it falls<br />

<strong>with</strong>in the scope of what are considered to be product marketing<br />

operations.<br />

Business architecture models can also show external activities.<br />

An external activity is an activity whose performance lies outside<br />

the scope of the model. Like an internal activity, an external<br />

activity can also consume resources and produce products. You<br />

include external activities in business architecture models to show<br />

the origins of resources consumed by internal activities or the<br />

consumption of products they produce. For example, the Develop<br />

Products activity in the Product Marketing Operations model is an<br />

external activity that produces Products for Sale, which is a resource<br />

for the Analyze Sales Information activity.<br />

External activities belong to the #EXTERNAL_AGENT class.<br />

An activity can consume many resources, but generally should<br />

produce only one product. By restricting an activity in this way,<br />

you focus on the purpose of the activity that is most in line <strong>with</strong> the<br />

visions and goals of your enterprise or the role of your application.<br />

Chapter 4: Business Architecture Models<br />

35


Activities<br />

Higher- and lower-level<br />

activities<br />

Chapter 4: Business Architecture Models<br />

36<br />

For example, a clothing manufacturer may sell the scrap material<br />

that results from making clothing, but this is not the primary<br />

business of the enterprise. The activity model for this enterprise<br />

would show only Clothing as the product resulting from the activity<br />

Manufacture Clothing, not Clothing and Scrap Material.<br />

Some activities include other activities as part of their<br />

performance. To show this, you can do either of the following:<br />

■ To show the sequence of lower-level activities that make up a<br />

higher-level activity, you can use another business architecture<br />

diagram anchored to the higher-level activity. This subdiagram<br />

would also show the resources consumed and the products<br />

produced by the lower-level activities. For more information on<br />

subdiagrams, see Using <strong>FrameWork</strong>.<br />

■ To show one or more of the lower-level activities that make up a<br />

higher-level activity <strong>with</strong>out showing their sequence, inputs, or<br />

outputs, you can use a partition or generalization, as described<br />

under “Inheritance relationships in business architecture<br />

models” later in this chapter. Alternatively, you can connect<br />

the lower-level activities to the higher-level activity through the<br />

super activity association end. This association end, however,<br />

does not have the full semantics implemented for partitions and<br />

generalizations.<br />

Activity names The name of an activity is typically a verb phrase that clearly<br />

indicates what is being done. Use the simple form of the verb,<br />

optionally followed by a plural or mass noun to represent the<br />

general performance of the activity rather than a single instance of<br />

it. An example of an activity name <strong>with</strong> a plural noun is Promote<br />

Products. An example <strong>with</strong> a mass noun is Analyze Sales<br />

Information.<br />

Activity names must be unique <strong>with</strong>in a KnowledgeBase.


Information about activities<br />

Creating activities<br />

Information about activities<br />

In addition to its name and properties as a capability and cost<br />

element, an activity can have the following properties:<br />

■ Relationships to products consumed by the activity (#in_<br />

consumption association end)<br />

■ Relationships to products resulting from the activity (#in_<br />

production association end)<br />

■ Lower-level activities that make up the activity (subactivities<br />

association end)<br />

■ A higher-level activity that includes the activity (super activity<br />

association end)<br />

To create an internal or external activity:<br />

1 In the Business Architecture Diagram Tools tool folder, click<br />

and hold on the Activity or External Activity tool, depending on<br />

the type of activity you want to create.<br />

2 Drag into your business architecture diagram window and<br />

release the mouse button where you want to place the activity<br />

or external activity graphic.<br />

3 Type a name for the activity or external activity. Then click on<br />

the window background to close the edit box.<br />

Chapter 4: Business Architecture Models<br />

37


Forms for activities<br />

Forms for activities<br />

The Basic Activity<br />

Information form<br />

Chapter 4: Business Architecture Models<br />

38<br />

You can use the Basic Activity Information form to view basic<br />

information about an activity and to change the activity name or<br />

the labels on its production relationships (see “Consumption and<br />

production relationships” later in this chapter). The sample form<br />

below shows information about the Analyze Sales Information<br />

activity.<br />

The Activity Classes form The Activity Classes form lists the classes of objects involved in the<br />

activity.<br />

These are the classes that appear in any diagrams anchored to:<br />

■ The activity itself or any products resulting from it<br />

■ Any activities or resulting products in any diagrams anchored<br />

to the activity, its resulting products, or, recursively, any<br />

activities or resulting products in any diagrams anchored to<br />

them


Products<br />

The sample form below lists the classes for the Sell Products<br />

activity.<br />

Products<br />

About products Products are the inputs to and outputs from activities. They can<br />

be tangible like manufactured products or intangible like satisfied<br />

customers.<br />

Products belong to the #PRODUCT class.<br />

Product names The name of a product is typically a noun phrase. Use a plural or<br />

mass noun. An example of a product name <strong>with</strong> a plural noun is<br />

Products for Sale. An example <strong>with</strong> a mass noun is Market Demand.<br />

Information about products<br />

In addition to its name, a product can have the following properties:<br />

Chapter 4: Business Architecture Models<br />

39


Creating products<br />

Creating products<br />

Form for products<br />

Chapter 4: Business Architecture Models<br />

40<br />

■ Relationships to activities that consume the product (#of_<br />

consumption association end)<br />

■ Relationships to activities that produce the product (#in_<br />

production association end)<br />

To create a product:<br />

1 In the Business Architecture Diagram Tools tool folder, click<br />

and hold on the Product tool.<br />

2 Drag into your business architecture diagram window and<br />

release the mouse button where you want to place the product<br />

graphic.<br />

3 Type a name for the product. Then click on the window<br />

background to close the edit box.<br />

You can use the Basic Product Information form to view basic<br />

information about a product and to change the product name or the<br />

labels on its consumption relationships (see “Consumption and<br />

production relationships” below). The sample form below shows<br />

information about the Critical Sales Information product.


Consumption and production relationships<br />

Consumption and production relationships<br />

Consumption relationships represent the flow of products being<br />

consumed by activities. In a consumption relationship, the product<br />

is a resource for an activity. Production relationships, on the<br />

other hand, represent the flow of activities producing products. In<br />

a production relationship, the product is the goal of the activity.<br />

Consumption relationships belong to the #CONSUMPTION class.<br />

Production relationships belong to the #PRODUCTION class.<br />

Consumption and production relationships are usually unnamed.<br />

They exist only in conjunction <strong>with</strong> the activities and products they<br />

relate. Each relationship associates one activity <strong>with</strong> one product.<br />

Chapter 4: Business Architecture Models<br />

41


Information about consumption and production relationships<br />

Information about consumption and production<br />

relationships<br />

Consumption relationship<br />

connections<br />

Production relationship<br />

connections<br />

Chapter 4: Business Architecture Models<br />

42<br />

A consumption relationship has connections to:<br />

■ The product consumed by the activity (#consumes association<br />

end)<br />

■ The activity that consumes the product (#consumer association<br />

end)<br />

A production relationship has connections to:<br />

■ The product produced by the activity (#result association end)<br />

■ The activity that produces the product (#producer association<br />

end)<br />

Creating consumption and production relationships<br />

Creating a consumption<br />

relationship<br />

Creating a production<br />

relationship<br />

To create a consumption relationship:<br />

1 In the Business Architecture Diagram Tools tool folder, click<br />

and hold on the Consumption tool.<br />

2 Drag onto the product that is consumed and release the mouse<br />

button.<br />

3 Click on the activity that consumes the product.<br />

To create a production relationship:<br />

1 In the Business Architecture Diagram Tools tool folder, click<br />

and hold on the Production tool.


Inheritance relationships in business architecture models<br />

2 Drag onto the activity that produces the product and release the<br />

mouse button.<br />

3 Click on the product that’s produced by the activity.<br />

Inheritance relationships in business<br />

architecture models<br />

Within a business architecture model, you can use partitions and<br />

generalizations to show more get more specific about activities<br />

and products. Activity partitions and generalizations represent the<br />

relationship between a relatively general activity (called the<br />

superactivity) and more specialized forms of the activity (called<br />

subactivities).<br />

Similarly, product partitions and generalizations represent the<br />

relationship between a relatively general product (called the<br />

superproduct) and more specific forms of the product (called<br />

subproducts).<br />

For information on the classes and associations that implement<br />

inheritance relationships and on the forms you can use to view and<br />

modify inheritance relationships, see “Inheritance relationships in<br />

business object models” in Chapter 5, “Business Object Models.”<br />

Partitions in business architecture models<br />

Complete partitions When you partition an activity or product, you specify two or more<br />

mutually exclusive subactivities or subproducts. A complete<br />

partition represents a complete division of the superactivity or<br />

superproduct. In a complete partition, every occurrence of the<br />

superactivity or superproduct is also an occurrence of one of the<br />

subactivities or subproducts.<br />

Chapter 4: Business Architecture Models<br />

43


Partitions in business architecture models<br />

Chapter 4: Business Architecture Models<br />

44<br />

For example, the figure below shows a complete partition of the<br />

Products for Sale product into subproducts named Hard Goods and<br />

Services. The fact that the partition is complete means that each<br />

product for sale is either a hard good or a service. There are no<br />

products for sale that are neither hard goods nor services.<br />

Superproduct<br />

Complete partition<br />

Subproducts<br />

Incomplete partitions An incomplete partition represents an incomplete division of a<br />

superactivity or superproduct. In an incomplete partition, there<br />

can be occurrences of the superactivity or superproduct that are not<br />

also occurrences of one of the subactivities or subproducts.<br />

For example, the figure below shows an incomplete partition of the<br />

Promote Products activity into subactivities named Run<br />

Telemarketing Campaign, Run Direct Mail Campaign, and Run<br />

Advertising Campaign. The fact that the partition is incomplete<br />

means that there may be promotional activities that involve<br />

neither telemarketing, direct mail, nor advertising.


Generalizations in business architecture models<br />

Generalizations in business architecture models<br />

In a business architecture model, a generalization is a relationship<br />

between a single superactivity or superproduct and a single<br />

subactivity or subproduct. An activity or product can participate in<br />

multiple generalizations, but each one represents a relationship to<br />

only one other activity or product. Also, each generalization is<br />

semantically independent of the others (for example,<br />

generalizations make no statements about mutually exclusivity).<br />

The figure below shows a product generalization in which the<br />

superproduct is Services and the subproduct is After-Sale Services.<br />

Superproduct<br />

Generalization<br />

Subproduct<br />

Superactivity<br />

Incomplete partition<br />

Subactivities<br />

Chapter 4: Business Architecture Models<br />

45


Creating inheritance relationships in business architecture models<br />

Creating inheritance relationships in business<br />

architecture models<br />

Creating a partition To create a complete or incomplete partition:<br />

Chapter 4: Business Architecture Models<br />

46<br />

1 In the common toolbar, select the Complete Partition ( ) or<br />

Incomplete Partition ( ) tool, as applicable.<br />

2 While holding down the left mouse button, drag a box around<br />

the subactivities or subproducts you want in the partition.<br />

Then release the mouse button.<br />

3 Click on the superactivity or superproduct for the partition.<br />

Creating a generalization To create a generalization between two activities or two products:<br />

1 In the common toolbar, select the Generalization tool ( ).<br />

2 Click and hold on the subactivity or subproduct for the<br />

generalization.<br />

3 Drag onto the superactivity or superproduct and release the<br />

mouse button.<br />

For information on the forms you can use to view and modify<br />

information about inheritance relationships, see “Forms for<br />

inheritance relationships” in Chapter 5, “Business Object Models.”<br />

<strong>Modeling</strong> closed systems<br />

Often, the output from a system serves as input to the system as<br />

well. A system like this is called a closed system. To represent<br />

such a system, you can use a business architecture model <strong>with</strong> a<br />

closed loop.<br />

The business architecture diagram below shows a closed system.<br />

In this diagram, the activity Fulfill Orders starts a closed loop. The


<strong>Modeling</strong> closed systems<br />

product Fulfilled Orders generates income, which becomes capital<br />

that can be used as a resource for the activity Maintain Inventory.<br />

This activity provides the stock that allows you to fulfill orders.<br />

Chapter 4: Business Architecture Models<br />

47


<strong>Modeling</strong> closed systems<br />

Chapter 4: Business Architecture Models<br />

48


%XVLQHVV 2EMHFW 0RGHOV<br />

About business object models<br />

Description Business object models present a static view of the objects on which<br />

a system acts. They identify the kinds of objects involved in the<br />

processes <strong>with</strong>in the system, the interrelationships among the<br />

objects, and the operations that affect them. In the context of a<br />

business system, this type of model is often used as a further<br />

breakdown of an activity or product to define its information<br />

requirements. For information on activities and products, see<br />

Chapter 4, “Business Architecture Models.”<br />

Building business object<br />

models<br />

Business object models are similar to class models, which are more<br />

often used in the context of application development. You can use<br />

the same classes in both types of models, supplying additional<br />

information as needed in the OOAD context. Alternatively, you can<br />

relate classes in business object models to those in class models<br />

through the refined by association end. For information on class<br />

models and the refined by association end, see Chapter 7, “Class<br />

Models (UML).”<br />

<br />

5<br />

To build a business object model, you typically create a business<br />

object diagram using tools in the Business Object Diagram Tools<br />

tool folder and the common toolbar.<br />

Chapter 5: Business Object Models<br />

49


Sample business object diagram<br />

Support Direct support for business object models is provided in all three<br />

<strong>FrameWork</strong> products.<br />

Sample business object diagram<br />

Sample diagram The window below contains a sample business object diagram that<br />

shows the types of objects involved in the process of compensating<br />

sales representatives for their work. The name of this diagram is<br />

Compensation Objects.<br />

Compensation process<br />

objects<br />

Chapter 5: Business Object Models<br />

50<br />

The Compensation Objects diagram shows that the following types<br />

of objects are involved in determining the compensation for a sales<br />

representative: the sales representatives’s territories and the<br />

revenue goals for those territories and the sales representatives<br />

compensation package. A compensation package can include<br />

multiple types of compensations: a base salary, a commission, and<br />

a bonus. The type of commission a sales representative receives


Business object diagram<br />

notations<br />

Sample business object diagram<br />

depends on whether that representative has achieved the quota<br />

specified for the compensation package.<br />

The Compensation Objects diagram also shows two of the<br />

operations that involve sales representatives — opening new<br />

accounts and taking orders.<br />

The Compensation Objects diagram shown above uses box<br />

notation. In box notation, each type of object is represented as a<br />

box. <strong>FrameWork</strong> supports an alternative notation for business<br />

object models called compartment notation. In compartment<br />

notation, each class is represented by a rectangle divided into three<br />

sections — one for the class itself, one for the attributes defined on<br />

the class, and one for the operations defined on the class. Here is<br />

the same Compensation Objects diagram shown using<br />

compartment notation. For more information on compartment<br />

notation, see “Sample class diagram” in Chapter 7, “Class Models<br />

(UML).”<br />

Chapter 5: Business Object Models<br />

51


Model classes<br />

Model classes<br />

About classes and model<br />

classes<br />

Chapter 5: Business Object Models<br />

52<br />

A class is a category of objects that have some properties or<br />

behaviors in common. The classes of which an object is a member<br />

determine the behavior of the object and the types of connections it<br />

can have to other objects. In some methodologies, the equivalent of<br />

a class is a concept or object type.<br />

<strong>FrameWork</strong> supports several types of classes. In a business object<br />

diagram, however, you typically use only model classes. A model<br />

class is a class <strong>with</strong> no language-specific characteristics and no<br />

specific purpose other than to categorize objects. All the classes in


Information about model classes<br />

the Compensation Objects model — Sales Rep, Territory, Revenue<br />

Goal, Compensation Package, and so forth — are model classes.<br />

Model classes belong to the #MODEL CLASS class.<br />

Class names The name of a class is typically a singular noun phrase, such as any<br />

of the class names in the Compensation Objects model. Class<br />

names must be unique <strong>with</strong>in a KnowledgeBase.<br />

Information about model classes<br />

In addition to its name, a model class can have a variety of<br />

properties, some of which apply only in an OOAD context. In the<br />

context of a business system, a model class can have the following<br />

properties:<br />

■ Objects in the class (#instances association end).<br />

■ Association ends, attributes, and queries defined on the class<br />

(#functions association end). For information on association<br />

ends and attributes, see “Associations and attributes” later in<br />

this chapter. For information on using queries, Using<br />

<strong>FrameWork</strong>. For information on creating queries, Customizing<br />

<strong>FrameWork</strong>.<br />

■ Uniqueness constraints defined on the class (#uniqueness_<br />

constraints association end). For information on uniqueness<br />

constraints, see “Uniqueness constraints” later in this chapter.<br />

■ Partitions and generalizations in which the class is a superclass<br />

(#partitions_defining association end) or subclass (#partitions_<br />

including association end). For information on class partitions<br />

and generalizations, see “Inheritance relationships in business<br />

object models” later in this chapter.<br />

■ Intersections in which the class is a superclass (#intersections_<br />

defining association end) or subclass (#intersections_including<br />

Chapter 5: Business Object Models<br />

53


Information about model classes<br />

Chapter 5: Business Object Models<br />

54<br />

association end). For information on class intersections, see<br />

“Intersections in business object models” later in this chapter.<br />

■ Operations defined on the class (#operations association end).<br />

For information about operations, see “Operations” later in this<br />

chapter.<br />

■ Operations for which the class is the result type (#opers_<br />

producing association end).<br />

■ Operation arguments that can be assigned objects in the class<br />

(#arguments association end).<br />

■ Resources that make use of objects in the class (resources using<br />

association end). For information on resources, see Chapter 19,<br />

“<strong>Technology</strong> Architecture Models.”<br />

■ Conditions placed on objects in the class by various business<br />

rules (rule conditions association end). For information on<br />

business rules, see <strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong>.<br />

■ Business rule consequences that create (create actions<br />

association end) or terminate (delete actions association end)<br />

objects in the class. For information on business rule<br />

consequences, see <strong>Modeling</strong> <strong>with</strong> Business <strong>FrameWork</strong>.<br />

■ Content functions created for association ends and attributes<br />

defined on the class (function assignments association end). For<br />

information on content functions, see “Focus objects and content<br />

functions” in Chapter 16, “Report Layout Models.”<br />

For information on other properties of model classes, see “Classes”<br />

in Chapter 7, “Class Models (UML).”


Creating model classes<br />

Forms for model classes<br />

The Basic Class<br />

Information form<br />

To create a model class in a business object diagram:<br />

Creating model classes<br />

1 In the Business Object Diagram Tools tool folder, click and hold<br />

on the Model Class tool.<br />

2 Drag into your class diagram window and release the mouse<br />

button where you want to place the class graphic.<br />

3 Type a name for the class. Then click on the window<br />

background to close the edit box.<br />

You can use the Basic Class Information form to view and modify<br />

basic information about any type of class, including model classes.<br />

The sample form below shows information about the Sales Rep<br />

class.<br />

Chapter 5: Business Object Models<br />

55


Forms for model classes<br />

The Class Instance Count<br />

form<br />

Chapter 5: Business Object Models<br />

56<br />

You can use the Class Instance Count form to view the number of<br />

objects in any type of class, including model classes. The sample<br />

form below shows the number of objects in the Sales Rep class.


Associations and attributes<br />

About associations and<br />

association ends<br />

Associations and attributes<br />

Associations define the types of connections that can exist<br />

between objects in a pair of classes. When two classes are related<br />

by an association, objects in those classes can be connected to each<br />

other through that association. Associations belong to the<br />

#ASSOCIATION class.<br />

An association is implemented by a pair of association ends.<br />

Each association end is defined on one of the classes involved and is<br />

a directional mapping from that class (called the source class) to<br />

the other (called the target class). Association ends belong to the<br />

#ASSOCIATION END class.<br />

The two association ends that implement an association are<br />

inverses of each other. That is, the source class of each is the target<br />

class of the other. In diagrams, the name of an association end<br />

appears at the target class end of the assocation graphic.<br />

In the association between the Sales Rep and Compensation Package<br />

classes shown below, the compensation package and sales reps<br />

association ends are inverses of each other. The source class for the<br />

compensation package association end is Sales Rep; the target class is<br />

Compensation Package. The source class for the sales reps<br />

association end is Compensation Package; the target class is Sales<br />

Rep.<br />

Source<br />

Target<br />

Target<br />

Source<br />

Chapter 5: Business Object Models<br />

57


Associations and attributes<br />

About attributes Attributes represent object properties that are literal values (that<br />

is, character strings or numbers). Each attribute is defined on a<br />

particular class and has a basic type of string (for character strings<br />

and fractional numbers) or integer (for whole numbers). When you<br />

assign a noninteger value to an integer attribute, <strong>FrameWork</strong><br />

converts it to an integer.<br />

Chapter 5: Business Object Models<br />

58<br />

Attributes belong to the #ATTRIBUTE class.<br />

Asserted functions Association ends and attributes are asserted functions. An<br />

asserted function is a direct mapping of objects in one class to<br />

objects in another class. While an association end is a mapping<br />

from one model class to another, an attribute is a mapping of a<br />

model class to a predefined class of either all possible character<br />

strings or all possible integers.<br />

Multiplicity Functions have a property called multiplicity. The multiplicity of<br />

a function specifies, for a given object in the source class, the<br />

minimum and maximum numbers of objects in the target class to<br />

which the object can be connected. If a function has no minimum<br />

(that is, the minimum is zero) or maximum, it is said to be<br />

unbounded.<br />

By default, when you create an association end, it is unbounded.<br />

When you create an attribute, it has a minimum of zero and a<br />

maximum of one.<br />

In diagrams, <strong>FrameWork</strong> shows the multiplicity of an association<br />

end after the association end name, using the UML format:<br />

minimum..maximum<br />

For example, if the minimum is zero and the maximum is five,<br />

<strong>FrameWork</strong> shows the multiplicity as 0..5.<br />

<strong>FrameWork</strong> uses an asterisk (*) to show that the multiplicity of a<br />

function has no upper bound. For example, if the minimum is one<br />

and the maximum is not set, <strong>FrameWork</strong> shows the multiplicity as<br />

1..*. If the minimum and maximum are the same, <strong>FrameWork</strong>


Associations and attributes<br />

shows the number only once. For example, if the minimum and<br />

maximum are both three, <strong>FrameWork</strong> shows the multiplicity as 3.<br />

If the association end is completely unbounded, <strong>FrameWork</strong> shows<br />

the multiplicity as a single asterisk.<br />

Since most attributes have a multiplicity of 0..1, <strong>FrameWork</strong> does<br />

not show attribute multiplicity in diagrams.<br />

Variance Another property of functions is called variance. A function is<br />

either variant or invariant. The value of a variant function can<br />

change. The value of an invariant function cannot. When you first<br />

create an object, you need to assign values to its invariant<br />

functions. Afterwards, the values of these functions cannot change.<br />

Variant functions belong to the #VARIANT_FUNCTION class.<br />

Invariant functions belong to the #INVARIANT_FUNCTION class.<br />

Association end and<br />

attribute names<br />

By default, when you create an association end or attribute, it is<br />

variant.<br />

For an association end, <strong>FrameWork</strong> shows invariance by<br />

thickening the connection graphic at the source class end. In the<br />

example below, the ordering customer association end, whose source<br />

class is Customer Order, is invariant. <strong>FrameWork</strong> does not use any<br />

special notation to show an invariant attribute.<br />

While associations are usually not named, association ends and<br />

attributes are. The name of an association end or attribute is<br />

typically a noun phrase. Use a singular or plural noun to match the<br />

multiplicity. For example, a sales representative can have multiple<br />

territories, so the name of the association end mapping the Sales<br />

Rep class to the Territory class in the Compensation Objects model<br />

is plural — territories. On the other hand, a sales representative<br />

can have only one compensation package, so the name of the<br />

Chapter 5: Business Object Models<br />

59


Information about associations, association ends, and attributes<br />

Chapter 5: Business Object Models<br />

60<br />

association end mapping the Sales Rep class to the Compensation<br />

Package class is singular — compensation package.<br />

The name of an asosciation end or attribute should reflect its role in<br />

the model and, in fact, association end names are also called role<br />

names. Consider, for example, a model <strong>with</strong> two separate<br />

associations between the Customer and Customer Contact classes,<br />

one representing the primary contact, the other the secondary. You<br />

could name the association ends on the Customer class primary<br />

contact and secondary contact, respectively, to reflect the roles<br />

played by the customer contacts.<br />

Information about associations, association ends,<br />

and attributes<br />

Information about<br />

associations<br />

Information about<br />

association ends and<br />

attributes<br />

An association is connected to the association ends that implement<br />

it through the #functions association end.<br />

In addition to its name, an association end or attribute can have a<br />

variety of properties, some of which apply only in an OOAD context.<br />

In the context of a business system, an association end or attribute<br />

can have the following properties:<br />

■ For an association end only, the association it implements<br />

(#association association end).<br />

■ The class on which the association end or attribute is defined<br />

(#source association end).<br />

■ The lower bound of the multiplicity for the association end or<br />

attribute (#min_of attribute).<br />

■ The upper bound of the multiplicity for the association end or<br />

attribute (#max_of attribute).<br />

■ Uniqueness constraints in which the association end or<br />

attribute participates (#uniqueness_constraints association end).


Creating associations and attributes<br />

For information on uniqueness constraints, see “Uniqueness<br />

constraints” later in this chapter.<br />

■ Business rule condition tests that apply to the association end<br />

or attribute (condition tests association end). For information on<br />

condition tests, see “Condition tests” in Chapter 6, “Business<br />

Rule Models.”<br />

■ Content functions created for the association end or attribute<br />

(function assignments association end). For information on<br />

content functions, see “Focus objects and content functions” in<br />

Chapter 16, “Report Layout Models.”<br />

For information on other properties of associations, association<br />

ends, and attributes, see “Associations and attributes” in Chapter<br />

7, “Class Models (UML).”<br />

Creating associations and attributes<br />

Creating an association To create an association:<br />

1 In the common toolbar, select the Association tool ( ).<br />

2 Click and hold on one of two classes in the association (it doesn’t<br />

matter which one).<br />

3 Drag onto the second class in the association and release the<br />

mouse button.<br />

4 Optionally, edit the names <strong>FrameWork</strong> automatically assigns to<br />

the association ends. You can do this either by editing the text<br />

in place or by using the Graphic Properties dialog box or a form.<br />

5 Optionally, change the multiplicity and variance of the<br />

association ends, as described later in this section.<br />

Chapter 5: Business Object Models<br />

61


Creating associations and attributes<br />

Setting the display of<br />

association end labels<br />

Creating an attribute<br />

graphically<br />

Chapter 5: Business Object Models<br />

62<br />

By default, <strong>FrameWork</strong> labels association ends <strong>with</strong> their names<br />

and multiplicity. You can choose to hide either piece of information<br />

for any given association. To do this:<br />

On the popup menu for the association, select Association End<br />

Label and then:<br />

● Role Name to display only the names of the association<br />

ends<br />

● Multiplicity to display only the multiplicity of the<br />

association ends<br />

● Both to redisplay both the names and multiplicity of the<br />

association ends<br />

To create an attribute graphically:<br />

1 In the common toolbar, select the String Attribute ( ) or<br />

Integer Attribute ( ) tool, depending on the type of attribute<br />

you want to create.<br />

2 Click and hold on the class on which you want to define the<br />

attribute.<br />

3 Drag to where you want to place the attribute graphic and<br />

release the mouse button.<br />

4 Type a name for the attribute. Then click on the window<br />

background to close the edit box.<br />

Creating attributes textually If a class has many attributes, you may find it easier to create them<br />

textually. You can then see them in your business object diagram<br />

by switching the class to compartment notation. The attributes you<br />

create in this way all have a basic type of string.<br />

Tip<br />

You can also create attributes graphically and then hide them<br />

to prevent your diagram from becoming too cluttered. For<br />

information on hiding objects in diagrams, see Using <strong>FrameWork</strong>.


To create one or more attributes textually:<br />

Creating associations and attributes<br />

1 Select the class for which you want to create the attributes.<br />

2 On the Class menu, select Operations and Attributes.<br />

Alternatively, while holding down the Shift key, double-click on<br />

the class.<br />

3 For each attribute you want to create:<br />

a In the Name field on the Attributes page of the Operations<br />

and Attributes dialog box, type a name for the new<br />

attribute.<br />

b In the Lower and Upper fields in the Multiplicity area,<br />

specify the lower and upper bounds, respectively, for the<br />

attribute multiplicity. To make the attribute unbounded,<br />

type 0 in the Lower field and an asterisk (*) in the Upper<br />

field.<br />

c Press the Create button.<br />

Note<br />

The Type field in the Operations and Attributes dialog<br />

box shows the data type of an attribute, not its basic type. The<br />

data type is meaningful in OOAD modeling. <strong>FrameWork</strong> itself<br />

does not constrain attribute values based on the data type.<br />

4 When you’re done creating attributes, press the OK button.<br />

Setting multiplicity To set the multiplicity of an association end or attribute:<br />

On the popup menu for the association end or attribute, select<br />

Multiplicity. Then select:<br />

● 0..1 to set the minimum to zero and the maximum to one.<br />

● 0..n to set the minimum to zero and make the maximum<br />

unbounded.<br />

Chapter 5: Business Object Models<br />

63


N-place associations<br />

Chapter 5: Business Object Models<br />

64<br />

● 1..n to set the minimum to one and make the maximum<br />

unbounded.<br />

● 1..1 to set both the minimum and maximum to one.<br />

● Other to set the minimum or maximum to a number<br />

greater than one. In the Set Multiplicity dialog box:<br />

1 In the Lower Bound and Upper Bound fields, specify the<br />

lower and upper bounds, respectively, for the<br />

multiplicity.<br />

2 Press the OK button.<br />

Setting variance To set the variance of an association end or attribute:<br />

N-place associations<br />

Associations between more<br />

than two classes<br />

On the popup menu for the association end or attribute, select<br />

Variance. Then select Variant or Invariant.<br />

An association in <strong>FrameWork</strong> relate two classes to each other.<br />

Some relationships, however, involve objects from more than two<br />

classes. Such a relationship requires an n-place association,<br />

where n is the number of participating classes.<br />

In <strong>FrameWork</strong>, an n-place association is itself represented by a<br />

class that has an association <strong>with</strong> each of the other classes<br />

involved. For example, the figure below shows a class named<br />

Financial Security Purchase, which represents a three-place<br />

association between the classes Buyer, Seller, and Financial Security.


Symmetric associations<br />

Invariant association ends Each association end in an n-place association must be invariant.<br />

Thus, each object in the class representing the n-place association,<br />

in this case Financial Security Purchase, is related to a fixed<br />

grouping of objects. One such grouping, for example, might be Rock<br />

Solid Insurance, Inc. (buyer), MacroAssets Mutual, Inc. (seller),<br />

and AnyCorp Stock (security). A given security purchase can never<br />

change its objects. It can only be created and terminated.<br />

Symmetric associations<br />

Associations <strong>with</strong> two of the<br />

same association end<br />

A symmetric association has an association end that is its own<br />

inverse. In other words, the association consists of two of the same<br />

association end. For example, if Mary (an instance of the Person<br />

class) has a neighbor John, then John (also an instance of the<br />

Person class) by definition has a neighbor Mary.<br />

Chapter 5: Business Object Models<br />

65


Ordering associations<br />

Creating a symmetric<br />

association<br />

Chapter 5: Business Object Models<br />

66<br />

To create a symmetric association:<br />

1 In the common toolbar, select the Association ( ) tool.<br />

2 Position the cursor on the class for which you’re defining the<br />

association.<br />

3 Drag off and then back onto the class.<br />

4 Release the mouse button.<br />

Ordering associations<br />

Inverse association ends<br />

on one class<br />

Creating an ordering<br />

association<br />

Like a symmetric association, an ordering association involves<br />

only one class. However, unlike a symmetric association, an<br />

ordering association consists of two different association ends that<br />

together impose an order on objects in the class. For example, the<br />

relationship between parents and their children is represented by<br />

association ends whose domain and range are both Person. One<br />

maps people to their parents, the other to their children.<br />

To create an ordering association on a class:<br />

1 Create a copy of the class and place it in the same window, near<br />

the original class graphic.<br />

2 In the common toolbar, select the Association ( ) tool.


Forms for associations, association ends, and attributes<br />

3 Click and hold on one copy of the class (it doesn’t matter which<br />

one).<br />

4 Drag onto the second copy and release the mouse button.<br />

5 Delete the graphic for one copy of the class.<br />

6 In the common toolbar, select the Association ( ) tool.<br />

7 While holding down the Control key, position the cursor on the<br />

remaining copy of the class.<br />

8 Drag off and then back onto the class.<br />

9 Release the mouse button and the Control key.<br />

10 In the Select Association End dialog box, select either one of the<br />

association ends for the ordering association. Then press the<br />

OK button.<br />

Forms for associations, association ends, and<br />

attributes<br />

The Basic Association<br />

Information form<br />

You can use the Basic Association Information form to view and<br />

modify information about an association. The sample form below<br />

shows information about an association between the Sales Rep and<br />

Compensation Package classes.<br />

Chapter 5: Business Object Models<br />

67


Forms for associations, association ends, and attributes<br />

The Basic Association End<br />

Information form<br />

Chapter 5: Business Object Models<br />

68<br />

You can use the Basic Association End Information form to view<br />

and modify information about an association end. The sample form<br />

below shows information about the compensation package<br />

association end defined on the Sales Rep class.


The Basic Attribute<br />

Information form<br />

Operations<br />

Operations<br />

You can use the Basic Attribute Information form to view and<br />

modify information about an attribute. The sample form below<br />

shows information about the sales quota attribute defined on the<br />

Compensation Package class.<br />

About operations Operations define the ways in which processes can act on the<br />

objects in a class. A class can have any number of operations<br />

defined for it. The class on which an operation is defined is called<br />

the operation owner. In the Compensation Objects model, the<br />

Sales Rep class is the owner for two operations: Take Order and Open<br />

New Account.<br />

Internal and external<br />

operations<br />

Operations belong to the #OPERATION class.<br />

Operations can be internal or external. You use an operation model<br />

to describe the interface of an internal operation. The definitions of<br />

external operations are outside the scope of the system being<br />

modeled.<br />

External operations belong to the #EXTERNAL_OPERATION class.<br />

Chapter 5: Business Object Models<br />

69


Information about operations<br />

Operation results The result of an operation can be the object for which it was<br />

originally invoked, or it can be another object entirely. For<br />

example, an operation that computes the net value of an order<br />

starts <strong>with</strong> the order and ends <strong>with</strong> the same order. On the other<br />

hand, an operation in which a sales representative takes an order<br />

from a customer starts <strong>with</strong> a sales representative, but ends <strong>with</strong><br />

an order. The class of objects resulting from the application of an<br />

operation is called the range class or result type of the operation.<br />

Operation arguments Some operations require information in addition to that associated<br />

<strong>with</strong> their starting object. For example, in order to take an order<br />

from a customer, a sales representative needs to know who the<br />

customer is. Operation arguments are placeholders for the<br />

additional information that an operation needs. Each argument is<br />

associated <strong>with</strong> the class whose objects provide the needed<br />

information. When an operation is executed, its arguments are<br />

assigned objects from their associated classes.<br />

Operation names The name of an operation is usually a verb phrase that clearly<br />

indicates what the object is doing (for example, the Take Order<br />

operation defined on the Sales Rep class) or what is being done to it<br />

(for example, the Compute Net Value operation defined on the<br />

Customer Order class). Use the simple form of the verb, optionally<br />

followed by a singular noun.<br />

Information about operations<br />

Chapter 5: Business Object Models<br />

70<br />

In addition to its name, an operation can have a variety of<br />

properties, some of which apply only in an OOAD context. In the<br />

context of a business system, an operation can have the following<br />

properties:<br />

■ The class on which the operation is defined (#owner association<br />

end).<br />

■ The class of objects resulting from the application of the<br />

operation (#range association end).


Creating operations<br />

Creating an operation<br />

graphically<br />

Creating operations<br />

textually<br />

Creating operations<br />

■ Additional information required by the operation (#arguments<br />

association end).<br />

For more information on these and other properties of operations,<br />

see “Operations” in Chapter 7, “Class Models (UML).”<br />

To create an operation in a business object diagram:<br />

1 In the Business Object Diagram Tools tool folder, click and hold<br />

on the Operation or External Operation tool, depending on the<br />

type of operation you want to create.<br />

2 Drag onto the class on which you want to define the operation<br />

and release the mouse button.<br />

3 Click where you want to place the operation graphic.<br />

4 Type a name for the operation. Then click on the window<br />

background to close the edit box.<br />

Tip<br />

You can also use either operation tool to create an operation<br />

that’s not connected to a class. Afterwards, you can connect it to its<br />

owner class either through a form or by using the Line Connect tool<br />

in the common toolbar.<br />

You can also create operations textually. To do this:<br />

1 Select the class for which you want to create the operations.<br />

2 On the Class menu, select Operations and Attributes.<br />

Alternatively, while holding down the Shift key, double-click on<br />

the class.<br />

Chapter 5: Business Object Models<br />

71


Form for operations<br />

Form for operations<br />

The Basic Operation<br />

Information form<br />

Chapter 5: Business Object Models<br />

72<br />

3 For each operation you want to create:<br />

a In the Name field on the Operations page of the Operations<br />

and Attributes dialog box, type a name for the new<br />

operation.<br />

b Optionally, specify the range class for the operation in the<br />

Return Type field.<br />

c Optionally, create arguments for the operation in the<br />

Arguments field.<br />

d Press the Create button.<br />

4 When you’re done creating operations, press the OK button.<br />

You can use the Basic Operation Information form to view and<br />

modify basic information about an operation. The sample form<br />

below shows information about the Take Order operation.


Uniqueness constraints<br />

About uniqueness<br />

constraints<br />

Uniqueness constraints<br />

Multiplicity and variance (both of which are described under<br />

“Associations and attributes” earlier in this chapter) constrain the<br />

ways in which objects in different classes relate to each other.<br />

Uniqueness constraints constrain the relationhips between objects<br />

and the classes they’re in. A uniqueness constraint requires<br />

each object in a class to be unique for a given combination of one or<br />

more association end and attribute values. For example, the Sales<br />

Rep class in the Compensation Objects model has a uniqueness<br />

constraint requiring that each sales representative be assigned a<br />

unique set of territories.<br />

Uniqueness constraints belong to the #UNIQUENESS_CONSTRAINT<br />

class.<br />

Chapter 5: Business Object Models<br />

73


Information about uniqueness constraints<br />

Nonempty uniqueness<br />

constraints<br />

Chapter 5: Business Object Models<br />

74<br />

A nonempty uniqueness constraint is a uniqueness constraint<br />

that applies only to those objects in a class that have a nonnull<br />

value for each of the functions involved. For example, you could<br />

place a nonempty uniqueness constraint on the Person class<br />

requiring that the value of the social security number attribute, if<br />

present, be unique. This would allow you to create objects in the<br />

Person class <strong>with</strong>out supplying social security numbers for them<br />

right away.<br />

Nonempty uniqueness constraints belong to the #NON_EMPTY_<br />

CONSTRAINT class.<br />

Information about uniqueness constraints<br />

Uniqueness constraints are usually unnamed and exist only in<br />

connection <strong>with</strong> a specific class (#class association end) and<br />

combination of association ends and attributes (#functions<br />

association end). Once you create a uniqueness constraint, you<br />

cannot change the class or combination of association ends and<br />

attributes specified for it. If you want to modify a constraint in that<br />

way, you need to terminate and recreate it.<br />

For more information on uniqueness constraints, see “Uniqueness<br />

constraints” in Chapter 7, “Class Models (UML).”<br />

Creating uniqueness constraints<br />

Creating a single-function<br />

constraint graphically<br />

A single-function constraint is a uniqueness constraint that<br />

involves only one association end or attribute. You can create<br />

single-function constraints either graphically or textually. To<br />

create a single-function constraint graphically in a business object<br />

diagram:<br />

1 In the Class Diagram Tools tool folder, click and hold on the<br />

Uniqueness Constraint or Nonempty Uniqueness Constraint<br />

tool, depending on the type of constraint you want to create.


Creating a uniqueness<br />

constraint textually<br />

Form for constraints<br />

Form for constraints<br />

2 Drag onto the class on which you want to define the constraint<br />

and release the mouse button.<br />

3 Click on the association end or attribute involved in the<br />

constraint.<br />

If a uniqueness constraint involves more than one association end<br />

or attribute, you need to create it textually. To do this:<br />

1 Select the class on which you want to define the constraint.<br />

2 On the Class menu, select Constraints.<br />

3 In the Constraints dialog box:<br />

a In the Constraint field, type a name for the constraint.<br />

b Optionally, select Nonempty to create a nonempty<br />

uniqueness constraint.<br />

c In the Association Ends and Attributes list, select the<br />

association ends and attributes involved in the constraint.<br />

d Press the Create button.<br />

4 Optionally, repeat step 3 to create additional constraints on the<br />

class.<br />

5 When you’re done creating constraints, press the Close button.<br />

You can use the Uniqueness Constraint Information form to view<br />

and modify information about a constraint. For example, the form<br />

Chapter 5: Business Object Models<br />

75


Inheritance relationships in business object models<br />

Chapter 5: Business Object Models<br />

76<br />

below shows information about the uniqueness constraint defined<br />

on the Sales Rep class.<br />

Inheritance relationships in business<br />

object models<br />

You can use partitions, generalizations, and intersections to define<br />

inheritance relationships among the classes in a class model. In<br />

an inheritance relationship, all of the properties (that is, the<br />

association ends, attributes, operations, and constraints) defined<br />

for objects in the superclass apply to the objects in the subclass.<br />

The subclass, however, can have properties that don’t apply to the<br />

superclass.<br />

Partitions in business object models<br />

Complete partitions A partition is a breakout of the objects in a class (the superclass)<br />

into two or more other mutually exclusive classes (the subclasses).<br />

Partitions can be either complete or incomplete. In a complete


Partitions in business object models<br />

partition, each object in the superclass must also be a member of<br />

one subclass. In the Compensation Objects model, the Commission<br />

class has a complete partition in which the subclasses are Under-<br />

Quota Commission and Over-Quota Commission. Any object in the<br />

Commission class must be either an under-quota commission or an<br />

over-quota commission.<br />

Superclass<br />

Complete partition<br />

Subclasses<br />

Complete partitions belong to the #COMPLETE_PARTITION class.<br />

Incomplete partitions In an incomplete partition, the superclass can have some objects<br />

that are not in any of the subclasses. In the Compensation Objects<br />

model, the Compensation class has a complete partition in which the<br />

subclasses are Bonus, Commission, and Base Salary. Objects in the<br />

Compensation class can be bonuses, commissions, base salaries, or<br />

some other type of compensation not represented by any of the<br />

three subclasses.<br />

Superclass<br />

Incomplete partition<br />

Subclasses<br />

Chapter 5: Business Object Models<br />

77


Generalizations in business object models<br />

Chapter 5: Business Object Models<br />

78<br />

Incomplete partitions belong to the #INCOMPLETE_PARTITION<br />

class.<br />

Decision functions You can associate a decision function <strong>with</strong> a complete or<br />

incomplete partition. A decision function specifies the conditions<br />

that determine which subclass, if any, each object in the superclass<br />

belongs to and serves as the basis for dynamic reclassification of<br />

objects in the subclasses. In the Compensation Objects model, for<br />

example, the complete partition defined on the Commission class<br />

has a decision function named Quota Achieved?. For sales<br />

representatives who achieve their quota, their commission is in the<br />

Over-Quota Commission class. For those who don’t, their commission<br />

is in the Under-Quota Commission class.<br />

The name of a decision function should clearly state the condition<br />

that determines which subclass each object is in. This often takes<br />

the form of a singular noun phrase ending <strong>with</strong> a question mark,<br />

like Quota Achieved?. Another common way to name a decision<br />

function is to identify the object property that determines its<br />

classification. For example, you could create a decision function<br />

named Compensation Type? for the incomplete partition defined on<br />

the Compensation class.<br />

Decision functions belong to the #RUNTIME_ONLY_FUNC class.<br />

Generalizations in business object models<br />

A generalization represents an inheritance relationship between<br />

a single superclass and a single subclass. It is similar to an<br />

incomplete partition in that the superclass can contain objects that<br />

are not in the subclass. However, a generalization makes no<br />

statement of relationship between its subclass and any other<br />

subclasses of its superclass. For example, you could create a<br />

generalization in which the Compensation class is a superclass of a<br />

class named Direct Deposit. Any particular compensation object<br />

may or may not be in the Direct Deposit class. It can also be in any<br />

other subclass of Compensation (such as Commission or Base Salary)<br />

at the same time.


Intersections in business object models<br />

Like incomplete partitions, generalizations belong to the<br />

#INCOMPLETE_PARTITION class.<br />

Intersections in business object models<br />

An intersection represents an inheritance relationship between<br />

two or more superclasses and a single subclass. In an intersection,<br />

the subclass inherits all the properties of each superclass. It also<br />

can have additional properties of its own.<br />

The figure below shows a sample intersection in which the<br />

superclasses are Sales Rep and Manager and the subclass is Sales<br />

Manager. A sales manager has all the properties of both sales<br />

representatives and managers.<br />

Information about inheritance relationships<br />

Information about partitions<br />

and generalizations<br />

Superclass<br />

Generalization<br />

Subclass<br />

Intersection<br />

Subclass<br />

Superclasses<br />

Partitions and generalizations are usually unnamed and can a<br />

variety of properties, some of which apply only in an OOAD context.<br />

Chapter 5: Business Object Models<br />

79


Creating inheritance relationships in business object models<br />

Information about<br />

intersections<br />

Chapter 5: Business Object Models<br />

80<br />

In the context of a business system, a partition or generalization<br />

can have the following properties:<br />

■ The superclass of the partition or generalization (#superclass<br />

association end)<br />

■ The subclasses of the partition or generalization (#subclasses<br />

association end)<br />

■ For a partition only, the condition that determines which<br />

subclass each object is in (#decision_function association end)<br />

Intersections are usually unnamed and can have the following<br />

properties:<br />

■ The superclasses of the intersection (#superclasses association<br />

end)<br />

■ The subclass of the intersection (#subclass association end)<br />

Creating inheritance relationships in business<br />

object models<br />

Creating a partition To create a complete or incomplete partition:<br />

1 In the common toolbar, select the Complete Partition ( ) or<br />

Incomplete Partition ( ) tool, as applicable.<br />

2 While holding down the left mouse button, drag a box around<br />

the subclasses you want in the partition. Then release the<br />

mouse button.<br />

3 Click on the superclass for the partition.


Creating a decision<br />

function<br />

Creating inheritance relationships in business object models<br />

To create a decision function for a partition in a business object<br />

diagram:<br />

1 In the Business Object Diagram Tools tool folder, click and hold<br />

on the Decision Function tool.<br />

2 Drag onto the partition graphic and release the mouse button.<br />

3 Click where you want to place the decision function graphic.<br />

4 Type a name for the decision function. Then click on the<br />

window background to close the edit box.<br />

Tip<br />

You can also use the Decision Function tool to create a<br />

decision function that’s not connected to a partition. Afterwards,<br />

you can connect it to a partition either through a form or by using<br />

the Line Connect tool in the common toolbar.<br />

Creating a generalization To create a generalization between two classes:<br />

1 In the common toolbar, select the Generalization tool ( ).<br />

2 Click and hold on the subclass for the generalization.<br />

3 Drag onto the superclass and release the mouse button.<br />

Creating an intersection To create an intersection:<br />

1 In the common toolbar, select the Intersection ( ) tool.<br />

2 While holding down the left mouse button, drag a box around<br />

the superclasses you want in the intersection. Then release the<br />

mouse button.<br />

3 Click on the subclass for the intersection.<br />

Chapter 5: Business Object Models<br />

81


Forms for inheritance relationships<br />

Forms for inheritance relationships<br />

The Basic Inheritance<br />

Information form<br />

Intersection Information<br />

form<br />

Chapter 5: Business Object Models<br />

82<br />

You can use the Basic Inheritance Information form to view and<br />

modify information about a partition or generalization. The sample<br />

form below shows information about the partition defined on the<br />

Commission class<br />

You can use the Intersection Information form to view and modify<br />

information about an intersection. For example, the form below<br />

shows information about the sample intersection shown under<br />

“Intersections in business object models” earlier in this chapter.


Forms for inheritance relationships<br />

Chapter 5: Business Object Models<br />

83


Forms for inheritance relationships<br />

Chapter 5: Business Object Models<br />

84


%XVLQHVV 5XOH 0RGHOV<br />

About business rule models<br />

Description Information on this topic is not yet available.<br />

Building business rule<br />

models<br />

Information on this topic is not yet available.<br />

Support Direct support for business rule models is provided in all three<br />

<strong>FrameWork</strong> products.<br />

Sample business rule diagram<br />

Information on this topic is not yet available.<br />

<br />

6<br />

Chapter 6: Business Rule Models<br />

85


Business rules<br />

Business rules<br />

Rule sets<br />

Rule conditions<br />

Condition tests<br />

Chapter 6: Business Rule Models<br />

86<br />

Information on this topic is not yet available.<br />

Information on this topic is not yet available.<br />

Information on this topic is not yet available.<br />

Information on this topic is not yet available.


Actions<br />

Information on this topic is not yet available.<br />

Actions<br />

Chapter 6: Business Rule Models<br />

87


Actions<br />

Chapter 6: Business Rule Models<br />

88


&ODVV 0RGHOV 80/<br />

About class models<br />

<br />

7<br />

Description Class models present a static view of the objects on which a system<br />

acts. They identify the kinds of objects involved in the processes<br />

<strong>with</strong>in a system, the interrelationships among the objects, and the<br />

operations that affect them. In the context of a business system,<br />

this type of model is often used as a further breakdown of an<br />

activity or product to define its information requirements. In an<br />

OOAD context, class models define classes for which you can<br />

generate code.<br />

Building class models You build class models in class diagram windows, using tools in the<br />

UML Class Diagram Tools tool folder and the common toolbar.<br />

For more information on generating code from class models, see<br />

Generating CORBA IDL Code <strong>with</strong> <strong>FrameWork</strong>, Generating C++<br />

Code <strong>with</strong> <strong>FrameWork</strong>, and Generating Java Code <strong>with</strong><br />

<strong>FrameWork</strong>.<br />

Support Direct support for class models is provided only in <strong>Technology</strong> and<br />

Enterprise <strong>FrameWork</strong>.<br />

Chapter 7: Class Models (UML)<br />

89


Sample class diagram<br />

Sample class diagram<br />

Class diagram notations Information on this topic is not yet available.<br />

Sample diagram using box<br />

notation<br />

Sample diagram using<br />

compartment notation<br />

Classes<br />

Chapter 7: Class Models (UML)<br />

90<br />

The window below shows a sample class model.<br />

Information on this topic is not yet available.<br />

A class categorizes objects that have some properties or behaviors<br />

in common. The classes of which an object is a member determine<br />

the behavior of the object and the types of connections it can have to


Model classes<br />

External classes<br />

Model classes<br />

other objects. In a class diagram, a class can be a model class, an<br />

external class, or an interface class.<br />

A model class is a class <strong>with</strong> no language-specific characteristics.<br />

To create a model class:<br />

1 In the UML Class Diagram Tools tool folder, click and hold on<br />

the Model Class tool.<br />

2 Drag to your class diagram window and release the mouse<br />

button where you want to place the class graphic.<br />

3 Type a name for the class. Then click on the window<br />

background to close the edit box.<br />

An external class is a class that exists outside the scope of the<br />

class diagram but affects objects <strong>with</strong>in the diagram.<br />

To create an external class:<br />

1 In the UML Class Diagram Tools tool folder, click and hold on<br />

the External Class tool.<br />

2 Drag to your class diagram window and release the mouse<br />

button where you want to place the class graphic.<br />

3 Type a name for the class. Then click on the window<br />

background to close the edit box.<br />

Chapter 7: Class Models (UML)<br />

91


Interface classes<br />

Interface classes<br />

Chapter 7: Class Models (UML)<br />

92<br />

An interface class is a class that defines a set of operations and<br />

functions but does not implement them. In a class diagram,<br />

interface classes are implemented by model classes.<br />

To create an interface class:<br />

1 In the UML Class Diagram Tools tool folder, click and hold on<br />

the Interface Class tool.<br />

2 Drag to the model class that implements the interface and<br />

release the mouse button.<br />

3 Click where you want to place the interface class graphic.<br />

4 Type a name for the interface class. Then click on the window<br />

background to close the edit box.<br />

Tip<br />

You can also use the Interface Class tool to create an interface<br />

class that’s not connected to a model class. Afterwards, you can<br />

connect it to a model class either through a form or by using the<br />

Realizes tool or Line Connect tool.<br />

Information about classes<br />

■ Operations for which the class is the result type<br />

(#opers_producing association end).<br />

■ Operation methods defined for the class (#methods association<br />

end).<br />

■ Operation arguments that can be assigned objects in the class<br />

(#arguments association end).


Forms for classes<br />

The Basic Class<br />

Information form<br />

The Class Additional<br />

Information form<br />

The Class Instance Count<br />

form<br />

Forms for classes<br />

You can use the Basic Class Information form to view and modify<br />

information about a class.<br />

You can use the Class Additional Information form to view and<br />

modify information about the implementations and signal<br />

receptions of a class.<br />

You can use the Class Instance Count form to view and modify<br />

information about the number of objects contained in a class.<br />

Realizes relationships<br />

A realizes relationship connects a model class <strong>with</strong> the interface<br />

class it implements.<br />

To create a realizes relationship:<br />

Uses relationships<br />

1 In the UML Class Diagram Tools tool folder, click and hold on<br />

the Realizes tool.<br />

2 Drag to the implementing model class and release the mouse<br />

button. Then click on the interface class implemented by the<br />

model class.<br />

A uses relationship connects one class to another that includes its<br />

behaviors.<br />

To create a uses relationship:<br />

1 In the UML Class Diagram Tools tool folder, click and hold on<br />

the Uses tool.<br />

Chapter 7: Class Models (UML)<br />

93


Associations and attributes<br />

Chapter 7: Class Models (UML)<br />

94<br />

2 Drag to the using model class and release the mouse button.<br />

Then click on the class being used.<br />

Associations and attributes<br />

About associations An association defines the types of connections that can exist<br />

between objects in one class and objects in another. An association<br />

is implemented by a pair of association ends. An association end<br />

is a named, directional mapping from one class to another.<br />

About attributes An attribute represents object properties that are literal values.<br />

Each attribute defined for the objects in a class has a basic type of<br />

integer or string, depending on which tool you use to create it.<br />

Associations and attributes are both asserted functions. An<br />

asserted function maps one class to another. While an association<br />

maps a class to another class defined in the model, an attribute<br />

maps a class to a predefined class for the attribute type. In other<br />

words, the range of an attribute is the class of integers, the class of<br />

real numbers, or the class of character strings.<br />

Multiplicity Functions have a property called multiplicity. The multiplicity of<br />

a function specifies, for a given object in the domain, the minimum<br />

and maximum numbers of objects in the range that the object can<br />

be connected to. There are four types of multiplicity:<br />

■ Equal to or greater than zero (if the maximum is zero or<br />

unspecified, the number of objects is unconstrained)<br />

■ Equal to or greater than one (or another specified number)<br />

■ Zero or one<br />

■ Exactly one<br />

On the connecting line that represents an association, the<br />

multiplicity of each association end is notated at the end attached


Creating an association<br />

to the domain class. There is no graphical representation for the<br />

cardinality of an attribute.<br />

Variance Another property of functions is called variance. A function is<br />

either variant or invariant. For a given object, the value of a<br />

variant function can change. The value of an invariant function<br />

cannot. When you first create an object, you need to assign values<br />

to its invariant functions. Afterwards, the values of these functions<br />

cannot change.<br />

Setting function multiplicity<br />

and variance<br />

Creating an association<br />

To set the multiplicity or variance of an association end or attribute<br />

in an object model, you can use the Multiplicity and Variance<br />

options on its popup menu. For details on doing this, see the online<br />

help.<br />

To create an association:<br />

Form for associations<br />

Creating an attribute<br />

1 In the common toolbar, select the Association tool.<br />

2 Click and hold on one of two classes in the association (it doesn’t<br />

matter which one).<br />

3 Drag to the second class in the association and release the<br />

mouse button.<br />

You can use the Basic Association End Information form to view<br />

and modify information about an association end.<br />

To create an attribute:<br />

1 In the common toolbar, select the tool representing the type of<br />

attribute you want to create.<br />

Chapter 7: Class Models (UML)<br />

95


Form for attributes<br />

Form for attributes<br />

Chapter 7: Class Models (UML)<br />

96<br />

2 Click and hold on the class to which you want to assign the<br />

attribute.<br />

3 Drag to where you want to place the attribute graphic and<br />

release the mouse button.<br />

4 Type a name for the attribute. Then click on the window<br />

background to close the edit box.<br />

You can use the Basic Attribute Information form to view and<br />

modify information about an attribute.<br />

Inheritance relationships in class models<br />

Superclasses and<br />

subclasses<br />

You can use partitions, generalizations, and intersections to show<br />

inheritance relationships among the classes in a class model. In<br />

an inheritance relationship, all of the properties (that is, the<br />

associations, attributes, and operations) defined for objects in the<br />

superclass apply to the objects in the subclass. The subclass,<br />

however, can have properties that don’t apply to the superclass.<br />

Partitions in class models<br />

Like activity and product partitions, class partitions can be<br />

complete or incomplete, and the subclasses in a partition are<br />

mutually exclusive. In a complete partition, each object in the<br />

superclass must also be a member of one subclass. In an<br />

incomplete partition, the superclass can have some objects that are<br />

not in a subclass.<br />

To create a partition:<br />

1 In the common toolbar, select the tool representing the type of<br />

partition you want to create.


Generalizations in class models<br />

2 While holding down the left mouse button, drag a box around<br />

the subclasses contained in the partition.<br />

3 Click on the superclass of the partition.<br />

Generalizations in class models<br />

A generalization in an class model represents an inheritance<br />

relationship between a single superclass and a single subclass.<br />

To create a generalization:<br />

1 In the common toolbar, select the Generalization tool.<br />

2 Click and hold on the subclass.<br />

3 Drag to the superclass and release the mouse button.<br />

Intersections in class models<br />

An intersection represents an inheritance relationship between<br />

two or more superclasses and a single subclass. In an intersection,<br />

the subclass inherits all the properties of each superclass.<br />

To create an intersection:<br />

1 In the common toolbar, select the Intersection tool.<br />

2 While holding down the left mouse button, drag a box around<br />

the superclasses contained in the intersection. Then release the<br />

mouse button.<br />

3 Click on the subclass.<br />

Forms for inheritance relationships<br />

The Basic Inheritance<br />

Information form<br />

You can use the Basic Inheritance Information form to view and<br />

modify information about an inheritance relationship.<br />

Chapter 7: Class Models (UML)<br />

97


Operations<br />

The Partition State Flags<br />

Information form<br />

Intersection Information<br />

form<br />

Operations<br />

Creating an operation<br />

Chapter 7: Class Models (UML)<br />

98<br />

You can use the Partition State Flags Information form to view and<br />

modify information about a complete or incomplete partition.<br />

You can use the Intersection Information form to view and modify<br />

information about an intersection.<br />

An operation defines the ways in which processes can act on the<br />

objects in a class. A class can have any number of operations<br />

defined for it. Operations can be internal or external. You use an<br />

operation model to describe the interface of an internal operation.<br />

The definitions of external operations are outside the scope of the<br />

system being modeled.<br />

To create an operation:<br />

1 In the UML Class Diagram Tools tool folder, click and hold on<br />

the tool representing the type of operation you want to create.<br />

2 Drag to the class to which you want to assign the operation and<br />

release the mouse button.<br />

3 Click where you want to place the operation graphic.<br />

4 Type a name for the operation. Then click on the window<br />

background to close the edit box.<br />

Tip<br />

You can also use either operation tool to create an operation<br />

that’s not connected to a class. Afterwards, you can connect it to a<br />

class either through a form or by using the Line Connect tool.


Forms for operations<br />

The Basic Operation<br />

Information form<br />

Forms for operations<br />

You can use the Basic Operation Information form to view and<br />

modify information about an operation.<br />

The Operation Body form You can use the Operation Body form to view and modify<br />

information the body of an operation.<br />

Decision functions<br />

You can associate a decision function <strong>with</strong> a partition in an object<br />

model, just as you can in process model. The decision function<br />

determines which subclass, if any, objects in the superclass belong<br />

to.<br />

To create a decision function:<br />

1 In the UML Class Diagram Tools tool folder, click and hold on<br />

the Decision Function tool.<br />

2 Drag to the partition graphic and release the mouse button.<br />

3 Click where you want to place the decision function graphic.<br />

4 Type a name for the decision function. Then click on the<br />

window background to close the edit box.<br />

Uniqueness constraints<br />

About uniqueness<br />

constraints<br />

You can place two kinds of constraints on the objects in a class:<br />

uniqueness constraints and nonempty uniqueness constraints. A<br />

uniqueness constraint requires each object in the class to be<br />

unique for a given combination of one or more association end and<br />

attribute values. For example, you could define a uniqueness<br />

constraint requiring each order in the Order class to have a unique<br />

value assigned to its order number attribute.<br />

Chapter 7: Class Models (UML)<br />

99


Creating a single-function constraint graphically<br />

Nonempty uniqueness<br />

constraints<br />

Chapter 7: Class Models (UML)<br />

100<br />

A nonempty uniqueness constraint is a uniqueness constraint<br />

that applies only to those objects in a class that have a nonnull<br />

value for each of the functions involved. For example, you could<br />

place a nonempty uniqueness constraint on the class Person<br />

requiring that the value of the social security number attribute, if<br />

present, be unique. This would allow you to create objects in the<br />

Person class <strong>with</strong>out supplying their social security numbers right<br />

away.<br />

Creating constraints You can create uniqueness constraints textually or, for singlefunction<br />

constraints, graphically. A single-function constraint is a<br />

constraint that involves only one association end or attribute. After<br />

you define a constraint textually, you can represent it graphically<br />

in your model.<br />

Modifying constraints Once a constraint is defined, you can change its name, but you<br />

cannot change the combination of association ends and attributes<br />

defined for it. If you want to modify a constraint in that way, you<br />

need to terminate and recreate it. The following sections explain<br />

how to create, terminate, and relax uniqueness constraints.<br />

Creating a single-function constraint graphically<br />

To create a single-function constraint constraint by using the<br />

Uniqueness Constraint or Nonempty Uniqueness Constraint tool:<br />

1 In the UML Class Diagram Tools tool folder, click and hold on<br />

the tool representing the type of constraint you want to create.<br />

2 Drag to the class on which you want to impose the constraint<br />

and release the mouse button.<br />

3 Click on the association end or attribute to which the constraint<br />

applies.


Creating a constraint textually<br />

Relaxing constraints<br />

To create a constraint textually:<br />

Creating a constraint textually<br />

1 Select the class to which you want to add the constraint.<br />

2 On the Class menu, select Constraints.<br />

3 In the Constraints dialog box:<br />

a In the Constraint field, type a name for the constraint.<br />

b Optionally, select Nonempty to create a nonempty<br />

uniqueness constraint.<br />

c In the Association Ends and Attributes list, select the<br />

association ends and attributes involved in the constraint.<br />

d Press the Create button.<br />

About relaxed constraints A uniqueness constraint applies to the class it’s defined on, as well<br />

as to the classes that inherit from that class. When generating<br />

code, you may not want the constraint to apply to every class in the<br />

inheritance hierarchy. Preventing an inherited constraint from<br />

applying to a class is called relaxing the constraint.<br />

What you do To relax an inherited constraint on a class:<br />

1 Open the Object Properties window for the constraint.<br />

2 Assign the class to the #relaxed_classes association end.<br />

3 Press the Apply button.<br />

Note<br />

Relaxing a constraint for a class applies only to code<br />

generation. Within <strong>FrameWork</strong>, the constraint applies to all the<br />

Chapter 7: Class Models (UML)<br />

101


Form for constraints<br />

Form for constraints<br />

Chapter 7: Class Models (UML)<br />

102<br />

classes in an inheritance hierarchy regardless of whether it is<br />

relaxed for any of them.<br />

You can use the Uniqueness Constraint Information form to view<br />

and modify information about a constraint.


&ROODERUDWLRQ 0RGHOV<br />

80/<br />

About collaboration models<br />

Description Collaboration models show the relationships between objects that<br />

participate in or are otherwise affected by interactions. They can<br />

also specify the communications that pass from one object to<br />

another by means of these relationships. This type of model can<br />

help clarify complex interactions by highlighting the role of each<br />

participating object.<br />

Building collaboration<br />

models<br />

You build collaboration models in collaboration diagram modeling<br />

windows, using tools in the UML Collaboration Diagram Tools tool<br />

folder.<br />

Support Direct support for collaboration models is provided only in<br />

<strong>Technology</strong> and Enterprise <strong>FrameWork</strong>.<br />

Sample collaboration diagram<br />

Information on this topic is not yet available.<br />

8<br />

Chapter 8: Collaboration Models (UML)<br />

103


Class roles<br />

Class roles<br />

Creating a class role<br />

Chapter 8: Collaboration Models (UML)<br />

104<br />

A class role in a collaboration model is either a specific instance of<br />

a class or an unnamed, representative instance of a class.<br />

To create a class role:<br />

1 In the UML Collaboration Diagram Tools tool folder, click and<br />

hold on the Class Role tool.<br />

2 Drag to your collaboration diagram window and release the<br />

mouse button where you want to place the class role graphic.<br />

3 Type a name for the class role. Then click on the window<br />

background to close the edit box.


Form for class roles<br />

Form for class roles<br />

You can use the Class Role Information form to view and modify<br />

information about a class role.<br />

Association end roles<br />

An association end role is a connection from one class role to<br />

another through a particular association. Typically, an association<br />

end role has the same name as the association end it implements.<br />

Creating an association end role<br />

To create an association end role:<br />

1 In the UML Collaboration Diagram Tools tool folder, click and<br />

hold on the Association End Role tool.<br />

2 Drag to one of the two class roles in the association (it doesn’t<br />

matter which one) and release the mouse button.<br />

3 Click on the second class role in the association.<br />

Form for association end roles<br />

You can use the Association End Information Role form to specify<br />

the base association end for an association end role, as well as the<br />

communications that pass from one object to another by means of<br />

the association.<br />

Chapter 8: Collaboration Models (UML)<br />

105


Form for association end roles<br />

Chapter 8: Collaboration Models (UML)<br />

106


&RPSRQHQW 0RGHOV 80/<br />

About component models<br />

Description Component models identify software components, the dependent<br />

and containing relationships among them, and the functionality<br />

they require from each other. A component model can also show<br />

the types of devices on which software components reside and the<br />

communication paths between those devices. Using a component<br />

model, you can represent, for example, the functional composition<br />

of an application system or the logical distribution of a database<br />

system. Or you can document the development of a program from<br />

its source code files to its executable form.<br />

Building component<br />

models<br />

The objects in a component model are generic. For example, a<br />

component model might include an unnamed, representative PC as<br />

one of its devices, but it would not include Emma’s PC. To show<br />

such specific information about software implementations, you can<br />

use a deployment model instead.<br />

<br />

9<br />

To build a component model, you create a component diagram. You<br />

use the tools in the UML Component Diagram Tools tool folder to<br />

lay out the structure of the components graphically in the diagram.<br />

Then you use forms to supplement the information in your<br />

diagram.<br />

Chapter 9: Component Models (UML)<br />

107


Sample component diagram<br />

Support Direct support for component models is provided only in <strong>Technology</strong><br />

and Enterprise <strong>FrameWork</strong>.<br />

Sample component diagram<br />

Components<br />

Chapter 9: Component Models (UML)<br />

108<br />

Information on this topic is not yet available.<br />

A component is a structural element of a software system. A<br />

component can be:<br />

■ A source code component such as a .cpp file containing<br />

uncompiled C++ statements


Creating a component<br />

Creating a component<br />

■ A binary component such as the compiled modules in a class<br />

library<br />

■ An executable component such as a runnable application<br />

like Microsoft Word<br />

You can also include components that are not specifically identified<br />

as any of the above.<br />

To create a component:<br />

1 In the UML Component Diagram Tools tool folder, click and<br />

hold on the tool representing the type of component you want to<br />

create.<br />

2 Drag to your component diagram window and release the mouse<br />

button where you want to place the component graphic.<br />

3 Type a name for the component. Then click on the window<br />

background to close the edit box.<br />

4 Optionally, create dependent components. To do this:<br />

a In the UML Component Diagram Tools tool folder, click and<br />

hold on the tool representing the type of dependent<br />

component you want to create.<br />

b Drag to the supporting component you created earlier and<br />

release the mouse button.<br />

c Click where you want to place the dependent component<br />

graphic.<br />

d Type a name for the component. Then click on the window<br />

background to close the edit box.<br />

Chapter 9: Component Models (UML)<br />

109


Forms for components<br />

Forms for components<br />

The Basic Component<br />

Information form<br />

The Element Component<br />

Information form<br />

Chapter 9: Component Models (UML)<br />

110<br />

You can use the Basic Component Information form to view and<br />

modify information about a component.<br />

You can use the Element Component Information form to view and<br />

modify information about the containment of a component in other<br />

components.<br />

Component interfaces<br />

A component interface identifies services provided by one<br />

component and used by others.<br />

Creating a component interface<br />

To create a component interface:<br />

1 In the UML Component Diagram Tools tool folder, click and<br />

hold on the Component Interface tool.<br />

2 Drag to the component that provides the interface and release<br />

the mouse button. Then click where you want to place the<br />

component interface graphic.<br />

3 Type a name for the component interface. Then click on the<br />

window background to close the edit box.<br />

Tip<br />

You can also use the Component Interface tool to create a<br />

component interface that’s not connected to a providing component.<br />

Afterwards, you can connect it to a providing component either<br />

through a form or by using the Line Connect tool.<br />

Form for component interfaces<br />

You can use the Component Interface Information form to view and<br />

modify information about a component interface.


Nodes<br />

Creating a node<br />

Form for nodes<br />

Nodes<br />

A node identifies the type of physical device on which components<br />

reside<br />

To create a node:<br />

1 In the UML Component Diagram Tools tool folder, click and<br />

hold on the Node tool.<br />

2 Drag to your component diagram window and release the mouse<br />

button where you want to place the node graphic.<br />

3 Type a name for the node. Then click on the window<br />

background to close the edit box.<br />

You can use the Basic Node Information form to view and modify<br />

information about a node.<br />

Contains relationships<br />

A contains relationship identifies components that are included<br />

in another component. An included component is called a<br />

subcomponent.<br />

To create a contains relationship:<br />

1 In the UML Component Diagram Tools tool folder, click and<br />

hold on the Component Contains tool.<br />

Chapter 9: Component Models (UML)<br />

111


Depends-on relationships<br />

Chapter 9: Component Models (UML)<br />

112<br />

2 Drag into your component diagram window and release the<br />

mouse button.<br />

3 While holding down the left mouse button, drag a box around<br />

the subcomponents.<br />

4 Click on the component that contains the subcomponents.<br />

Depends-on relationships<br />

A depends-on relationship shows how one components supports<br />

another. In a depends-on relationship, one component requires the<br />

presence of another in order to function as designed.<br />

To create a depends-on relationship:<br />

1 In the UML Component Diagram Tools tool folder, click and<br />

hold on the Depends On tool.<br />

2 Drag to the dependent component and release the mouse<br />

button.<br />

3 Click on the supporting component.<br />

Requires relationships<br />

A requires relationship connects a component to the interface it<br />

requires from another components.<br />

To create a requires relationship:<br />

1 In the UML Component Diagram Tools tool folder, click and<br />

hold on the Requires tool.<br />

2 Drag to the component that requires the interface and release<br />

the mouse button.


3 Click on the interface required by the component.<br />

Communicates-<strong>with</strong> relationships<br />

Communicates-<strong>with</strong> relationships<br />

A communicates-<strong>with</strong> relationship shows the path through<br />

which one nodes can communicate <strong>with</strong> another.<br />

To create a communicates-<strong>with</strong> relationship:<br />

1 In the UML Component Diagram Tools tool folder, click and<br />

hold on the Communicates With tool.<br />

2 Drag to one of the two nodes in the communicates-<strong>with</strong><br />

relationship (it doesn’t matter which one) and release the mouse<br />

button.<br />

3 Click on the second node involved in the communicates-<strong>with</strong><br />

relationship.<br />

Resides relationships<br />

A resides relationship connects one or more components to the<br />

node they run on.<br />

To create a resides relationship:<br />

1 In the UML Component Diagram Tools tool folder, click and<br />

hold on the Resident Component tool.<br />

2 Drag into your component diagram window and release the<br />

mouse button.<br />

3 While holding down the left mouse button, drag a box around<br />

the resident components.<br />

4 Click on the node that the components reside on.<br />

Chapter 9: Component Models (UML)<br />

113


Resides relationships<br />

Chapter 9: Component Models (UML)<br />

114


'HSOR\PHQW 0RGHOV 80/<br />

About deployment models<br />

Description Deployment models show run-time implementations of software<br />

systems. This type of model is similar to the component model,<br />

except that the objects in a deployment model are specific while<br />

those in a component model are generic. For example, a<br />

deployment model might include a particular employee’s PC as one<br />

of its devices, but it would not include an unnamed, representative<br />

PC.<br />

Building deployment<br />

models<br />

You build deployment models in deployment diagram windows,<br />

using tools in the UML Deployment Diagram Tools tool folder.<br />

Support Direct support for deployment models is provided only in<br />

<strong>Technology</strong> and Enterprise <strong>FrameWork</strong>.<br />

Sample deployment diagram<br />

Information on this topic is not yet available.<br />

<br />

10<br />

Chapter 10: Deployment Models (UML)<br />

115


Executable component instances<br />

Executable component instances<br />

Chapter 10: Deployment Models (UML)<br />

116<br />

An executable component instance is an instance of an<br />

executable component such as a runnable application like Microsoft<br />

Word.<br />

Creating an executable component instance<br />

To create an executable component instance:<br />

1 In the UML Deployment Diagram Tools tool folder, click and<br />

hold on the Executable Component Instance tool.


Form for executable component instances<br />

2 Drag to your deployment diagram window and release the<br />

mouse button where you want to place the executable<br />

component instance graphic.<br />

3 Type a name for the executable component instance. Then click<br />

on the window background to close the edit box.<br />

Form for executable component instances<br />

Interface instances<br />

You can use the Basic Component Instance Information form to<br />

view and modify information about an executable component<br />

instance.<br />

An interface instance is an instance of a component interface<br />

that identifies services provided by one component and used by<br />

others.<br />

To create an interface instance:<br />

1 In the UML Deployment Diagram Tools tool folder, click and<br />

hold on the Interface Instance tool.<br />

2 Drag to the component instance that provides the interface<br />

instance and release the mouse button. Then click where you<br />

want to place the interface instance graphic.<br />

3 Type a name for the interface instance. Then click on the<br />

window background to close the edit box.<br />

Tip<br />

You can also use the Interface Instance tool to create an<br />

interface instance that’s not connected to a providing component<br />

instance. Afterwards, you can connect it to a providing component<br />

instance either through a form or by using the Line Connect tool.<br />

Chapter 10: Deployment Models (UML)<br />

117


Node instances<br />

Node instances<br />

Chapter 10: Deployment Models (UML)<br />

118<br />

A node instance is an instance of a node representing a physical<br />

device on which one or more component instances reside.<br />

Creating a node instance<br />

To create a node instance:<br />

Form for node instances<br />

1 In the UML Deployment Diagram Tools tool folder, click and<br />

hold on the Node Instance tool.<br />

2 Drag to your deployment diagram window and release the<br />

mouse button where you want to place the node instance<br />

graphic.<br />

3 Type a name for the node instance. Then click on the window<br />

background to close the edit box.<br />

You can use the Node Instance Information form to view and<br />

modify information about a node instance.<br />

Depends-on relationships in deployment<br />

models<br />

A depends-on relationship shows how one component instances<br />

supports another. In a depends-on relationship, one component<br />

instance requires the presence of another in order to function as<br />

designed.


To create a depends-on relationship:<br />

Requires relationships in deployment models<br />

1 In the UML Deployment Diagram Tools tool folder, click and<br />

hold on the Depends On tool.<br />

2 Drag to the dependent component instance and release the<br />

mouse button.<br />

3 Click on the supporting component instance.<br />

Requires relationships in deployment<br />

models<br />

A requires relationship connects a component instance to the<br />

interface instance it requires from another component instance.<br />

To create a requires relationship:<br />

1 In the UML Deployment Diagram Tools tool folder, click and<br />

hold on the Requires tool.<br />

2 Drag to the component instance that requires the interface<br />

instance and release the mouse button.<br />

3 Click on the interface instance required by the component<br />

instance.<br />

Deploys relationships<br />

A deploys relationship connects one or more component<br />

instances to the node instance they run on. A deploys relationship<br />

is the same as a resides relationship in a component model.<br />

Chapter 10: Deployment Models (UML)<br />

119


Deploys relationships<br />

Chapter 10: Deployment Models (UML)<br />

120<br />

To create a deploys relationship:<br />

1 In the UML Deployment Diagram Tools tool folder, click and<br />

hold on the Components Deployed tool.<br />

2 Drag into your deployment diagram window and release the<br />

mouse button.<br />

3 While holding down the left mouse button, drag a box around<br />

the deployed component instances.<br />

4 Click on the node instance that deploys the component<br />

instances.


,QVWDQFH ,QWHUDFWLRQ<br />

0RGHOV 80/<br />

About instance interaction models<br />

Description Information on this topic is not yet available.<br />

Building instance<br />

interaction models<br />

Information on this topic is not yet available.<br />

Support Direct support for instance interaction models is provided only in<br />

<strong>Technology</strong> and Enterprise <strong>FrameWork</strong>.<br />

Sample instance interaction diagram<br />

Instances<br />

Link ends<br />

Information on this topic is not yet available.<br />

Information on this topic is not yet available.<br />

Information on this topic is not yet available.<br />

11<br />

Chapter 11: Instance Interaction Models (UML)<br />

121


Message instances<br />

Message instances<br />

Chapter 11: Instance Interaction Models (UML)<br />

122<br />

Information on this topic is not yet available.


2SHUDWLRQ 0RGHOV<br />

About operation models<br />

Description An operation model describes the interface of an operation defined<br />

in a class model. It shows what class of objects the operation<br />

applies to, what class of objects it returns, and what other<br />

information it requires. If the class to which an operation applies<br />

has subclasses, the operation may behave differently depending on<br />

the subclass of the object it’s acting on. In this case, the model can<br />

show which behavior of the operation is used for which subclass.<br />

If you’re modeling a business system rather than an application<br />

system, you may choose not to model your operation interfaces.<br />

However, if you’re planning to generate code from your models, you<br />

need to describe your operations in greater detail than object<br />

models allow. By building operation models, you can provide the<br />

necessary information for code generation. <strong>FrameWork</strong> can then<br />

use this information, for example, to produce the C++ signature of<br />

the operation.<br />

Building operation models You build operation models in operation diagram windows, copying<br />

some objects from class models and using a form and the tools in<br />

the Method Tools tool folder to create others.<br />

Support Direct support for operation models is provided in all three<br />

<strong>FrameWork</strong> products.<br />

<br />

12<br />

Chapter 12: Operation Models<br />

123


Sample operation diagram<br />

Sample operation diagram<br />

Chapter 12: Operation Models<br />

124<br />

The window below shows a sample operation model.<br />

Operation model components<br />

In addition to the operation itself, the basic components of an<br />

operation model are the base and range classes, arguments, and<br />

methods:<br />

■ The base class of an operation is the class of objects on which<br />

the operation acts. An operation can have only one base class.<br />

■ The range class of an operation is the class of objects it<br />

produces. An operation can have only one range class.<br />

■ Arguments identify additional information required by an<br />

operation. An operation can have any number of arguments.


Arguments<br />

Arguments<br />

■ Methods identify the behaviors, or implementations, of an<br />

operation. An operation can have multiple methods. To show<br />

the details of a method, you can build a process or process step<br />

model and anchor it to the method.<br />

Defining arguments To specify the arguments for an operation, you use the Basic<br />

Operation Information form. On this form, you can name each<br />

argument and identify the class of objects that can be assigned to it.<br />

When you use <strong>FrameWork</strong> to generate code, this class is used as<br />

the data type of the argument. If you want, you can also provide an<br />

initial value for each argument.<br />

Methods<br />

Method domains The domain of each method (that is, the class of objects it applies<br />

to) for an operation must be either the base class of the operation or<br />

a subclass of the base class. Additionally, the domain must be<br />

different for each method.<br />

Creating multiple methods<br />

for an operation<br />

<strong>FrameWork</strong> uses the combination of the operation and domain to<br />

uniquely identify each method you create. As a result, when adding<br />

multiple methods to an operation, you need to specify the domain of<br />

each one as you add it. Otherwise, when you try to create the next<br />

method, it will initially have the same domain class (none) as an<br />

existing one and <strong>FrameWork</strong> will disallow the creation.<br />

Creating a method and connecting it to its domain class<br />

To create a method and connect it to its domain class:<br />

1 In the Method Tools tool folder, click and hold on the Method<br />

tool.<br />

2 Drag to your operation diagram window and release the mouse<br />

button where you want to place the method graphic.<br />

Chapter 12: Operation Models<br />

125


Methods<br />

Form for methods<br />

Chapter 12: Operation Models<br />

126<br />

3 Type a name for the method. Then click on the window<br />

background to close the edit box.<br />

4 Optionally, connect the method to its domain class. To do this:<br />

a In the Method Tools tool folder, click and hold on the<br />

Method Domain tool.<br />

b Drag to method and release the mouse button. Then click on<br />

the domain class of the method.<br />

You can use the Basic Method Information form to view and modify<br />

information about a method.


3DFNDJH 0RGHOV 80/<br />

About package models<br />

Description Package models describe logical groupings of objects used in other<br />

models. They help organize the various elements of the system<br />

you’re modeling. In an OOAD context, package models group<br />

classes into namespaces or modules that are used in generating<br />

code.<br />

The semantics and notations for package models are prescribed by<br />

UML. For more information on the UML specification for this type<br />

of model, see the UML documentation made available by the OMG.<br />

Note To accommodate multiple target environments for code<br />

generation, the <strong>FrameWork</strong> implementation of package models is<br />

less restrictive than the UML specification.<br />

Building package models To build a package model, you typically create a package diagram<br />

using tools in the UML Package Diagram Tools tool folder.<br />

Support Direct support for package models is provided in all three<br />

<strong>FrameWork</strong> products.<br />

<br />

13<br />

Chapter 13: Package Models (UML)<br />

127


Sample package diagram<br />

Sample package diagram<br />

Sample diagram The window below shows a sample package diagram containing two<br />

packages. The name of this diagram is Application Portfolios.<br />

Packages of applications The Application Portfolios diagram shows two groupings of<br />

application systems used in an enterprise. The grouping on the left<br />

forms the Financial Systems package. These are the systems used<br />

for managing accounts receivable, accounts payable, and payroll<br />

processing. The grouping on the right forms the Sales Systems<br />

package. These systems support the activities involved in selling<br />

products.<br />

Packages, systems, and subsystems<br />

About packages A package is a grouping of objects that are logically or<br />

semantically related to each other. For example, the Accounts<br />

Receivable System, Accounts Payable System, and Payroll Processing<br />

System applications in the Financial Systems package all deal <strong>with</strong><br />

money.<br />

Chapter 13: Package Models (UML)<br />

128


About systems and<br />

subsystems<br />

Packages, systems, and subsystems<br />

Packages can be internal or external. The contents of an internal<br />

package are model elements that are defined in other models.<br />

Each model element can be in at most one package. Packages<br />

themselves are model elements and, as such, can be nested in other<br />

packages. For information on model elements, see “Model<br />

elements” in Chapter 2, “Cross-model Concepts.”<br />

Note<br />

According to the UML specification, a package owns its<br />

contents and, therefore, if the package is destroyed, so are its<br />

contents. <strong>FrameWork</strong> does not enforce this.<br />

An external package is a package supplied by a third party. Its<br />

contents typically are not described <strong>with</strong>in <strong>FrameWork</strong>.<br />

Packages belong to the #PACKAGE class. External packages also<br />

belong to the #EXTERNAL PACKAGE class, which is a subclass of<br />

#PACKAGE.<br />

A system is a special type of package. It represents a collection of<br />

interconnected and interacting elements that fulfill a purpose or<br />

establish a context for a process or goal. A subsystem is a selfcontained<br />

part of larger system or subsystem. You can create use<br />

case models to describe the interactions that occur <strong>with</strong>in<br />

subsystems. For information on use case models, see Chapter 20,<br />

“Use Case Models (UML).”<br />

Subsystems belong to the #SUBSYSTEM class, which is a subclass of<br />

#PACKAGE. Systems belong to the #SYSTEM class, which is a<br />

subclass of #SUBSYSTEM.<br />

Other types of packages <strong>FrameWork</strong> comes <strong>with</strong> other special types of packages for use in<br />

OOAD modeling for specific target environments. For example, you<br />

can use the Java packages when modeling for Java code generation<br />

or CORBA modules when modeling for CORBA IDL code<br />

generation.<br />

Java packages belong to the #JAVA PACKAGE class, which is a<br />

subclass of #PACKAGE. CORBA modules belong to the #CORBA<br />

MODULE class, also a subclass of #PACKAGE.<br />

Chapter 13: Package Models (UML)<br />

129


Packages, systems, and subsystems<br />

Visibility of package<br />

contents<br />

Chapter 13: Package Models (UML)<br />

130<br />

For more information on Java packages, see Generating Java Code<br />

<strong>with</strong> <strong>FrameWork</strong>. For more information on CORBA modules, see<br />

Generating CORBA IDL Code <strong>with</strong> <strong>FrameWork</strong>.<br />

The elements in a package have a property called visibility<br />

(element visibility association end) that determines whether<br />

elements in other packages can see them. The three basic types of<br />

visibility are public, protected, and private.<br />

Package elements are always visible to other elements <strong>with</strong>in the<br />

same package. If an element is public, it’s also visible to elements<br />

in packages that import the package it’s in. Importing is a<br />

relationship between two packages that enables elements in the<br />

importing package to see the public elements in the imported<br />

package.<br />

A public element is also visible to elements in packages nested in<br />

the package it’s in, as is a protected element. A private element is<br />

visible only to other elements in the same package.<br />

Element references Sometimes, you may want an element to be visible to elements in<br />

one importing package, but not in another. To make this happen,<br />

you need to use an element reference. An element reference is an<br />

object that represents a particular model element to a particular<br />

importing package. By assigning a visibility to the element<br />

reference (visibility association end), you override the visibility<br />

setting for the element itself, but only for the specified importing<br />

package.<br />

For example, the diagram below shows that Package A imports<br />

Package B and Package C. The elements in Package B are all public,<br />

but Package A can see only elements B2 and B3. Package A cannot<br />

see element B1 because the element reference connecting them is<br />

protected. Conversely, the elements in Package C are all protected,<br />

but Package A can see element C1 because the element reference<br />

connecting them is public.


Package and element<br />

reference names<br />

Information about packages, systems, and subsystems<br />

The name of a package is typically a noun phrase the clearly<br />

reflects the package contents (for example, Financial Systems or<br />

Sales Systems). Element references are typically unnamed.<br />

However, you can assign an alias to an element reference (alias<br />

attribute). The alias is the name by which the referenced element<br />

is known to the importing package. An alias should follow the<br />

same naming guidelines as the element it applies to.<br />

Note<br />

According to the UML specification, the names of the objects<br />

in a package must be unique by type. <strong>FrameWork</strong> does not enforce<br />

this.<br />

Information about packages, systems, and<br />

subsystems<br />

In addition to its name, a package, system, or subsystem can have<br />

the following properties in an OOAD context:<br />

■ Elements in the package (elements contained association end).<br />

■ Other packages imported by the package (imported packages<br />

association end).<br />

Chapter 13: Package Models (UML)<br />

131


Creating packages, systems, and subsystems<br />

Chapter 13: Package Models (UML)<br />

132<br />

■ Other packages that import the package (packages imported by<br />

association end).<br />

■ References to elements in packages imported by the package<br />

(references association end).<br />

■ For use in modeling for Java code generation, classes that<br />

import the package (imported by association end). For<br />

information on using packages in Java models, see Generating<br />

Java Code <strong>with</strong> <strong>FrameWork</strong>.<br />

■ For use in modeling for Java code generation, classes imported<br />

by the package (imported classes association end).<br />

Creating packages, systems, and subsystems<br />

Creating a package,<br />

system, or subsystem<br />

To create an internal package, external package, system, or<br />

subsystem:<br />

1 In the UML Package Diagram Tools tool folder, click and hold<br />

on the Package, External Package, System, or Subsystem tool,<br />

depending on the type of package you want to create.<br />

2 Drag into your package diagram window and release the mouse<br />

button where you want to place the package graphic.<br />

3 Type a name for the package. Then click on the window<br />

background to close the edit box.<br />

Tip<br />

You can also use the Package tool to create a package and at<br />

the same time connect it to a package it imports. To do this, drag<br />

from the tool onto the imported package and click where you want<br />

to place the graphic for the new package.


Connecting a package to<br />

its contents<br />

Creating an import<br />

relationship<br />

Creating an element<br />

reference<br />

Creating packages, systems, and subsystems<br />

To connect a package to the model elements it contains:<br />

1 In the UML Package Diagram Tools tool folder, click and hold<br />

on the Package Contains tool.<br />

2 Drag into your package diagram window and release the mouse<br />

button.<br />

3 While holding down the left mouse button, drag a box around<br />

the model elements you want in the package. Then release the<br />

mouse button.<br />

4 Click on the package.<br />

Tip<br />

You can also use the Basic Package Information form to assign<br />

model elements to a package. For more information on this form,<br />

see “Forms for packages, systems, subsystems, and their elements”<br />

below.<br />

To create an import relationship between two packages:<br />

1 In the UML Package Diagram Tools tool folder, click and hold<br />

on the Imports tool.<br />

2 Drag onto the importing package and release the mouse button.<br />

3 Click on the imported package.<br />

To create an reference to an imported element:<br />

1 In the UML Package Diagram Tools tool folder, click and hold<br />

on the References tool.<br />

Chapter 13: Package Models (UML)<br />

133


Forms for packages, systems, subsystems, and their elements<br />

Chapter 13: Package Models (UML)<br />

134<br />

2 Drag onto the importing package and release the mouse button.<br />

3 Click on the model element to which you want to create the<br />

reference.<br />

Forms for packages, systems, subsystems, and<br />

their elements<br />

The Basic Package<br />

Information form<br />

The Basic Subsystem<br />

Information form<br />

You can use the Basic Package Information form to view and<br />

modify basic information about a package. The sample form below<br />

shows information about the Sales Systems package.<br />

You can use the Basic Subsystem Information form to view and<br />

modify information about the use cases associated <strong>with</strong> a


The Related Packages<br />

form<br />

Forms for packages, systems, subsystems, and their elements<br />

subsystem. The sample form below shows this information for a<br />

subsystem named Sell Products.<br />

You can use the Related Packages form to view and modify package<br />

information about a model element. The sample form below shows<br />

this information for the OrderAdmin System element in the Sales<br />

Systems package.<br />

Chapter 13: Package Models (UML)<br />

135


Forms for packages, systems, subsystems, and their elements<br />

Chapter 13: Package Models (UML)<br />

136


About process models<br />

3URFHVV 0RGHOV<br />

Description Process models show the dynamic behavior of a business or<br />

application system; that is, they show how the system works. They<br />

show the sequence and timing of operations and their effect on the<br />

state of the objects involved. This type of model is used primarily to<br />

define the implementation of methods for operations.<br />

Process models are an alternative to process step models, which are<br />

used primarily to describe business processes.<br />

Building process models You build process models in process diagram windows, using tools<br />

in the Process Diagram Tools tool folder and the common toolbar.<br />

Support Direct support for process models is provided in all three<br />

<strong>FrameWork</strong> products.<br />

Sample process diagram<br />

The window below shows a sample process model.<br />

<br />

14<br />

Chapter 14: Process Models<br />

137


Process model components<br />

Process model components<br />

Chapter 14: Process Models<br />

138<br />

The basic components of a process model are events, operations,<br />

and trigger rules:<br />

■ Events represent changes in the state of an object. These<br />

changes occur as the result of the completion of operations.<br />

■ Operations define the actions that cause events to occur. A<br />

process model can include representations of user-defined<br />

operations that you create in class models and whose interfaces<br />

you define in operation models. These representations are<br />

called operation references.<br />

■ Trigger rules show the flow of control from events to the<br />

operations they cause to be invoked. A trigger rule also carries<br />

information about the object on which the invoked operation<br />

acts and the arguments passed to the operation.<br />

Note<br />

The combination of an operation and its resulting event is<br />

equivalent to a process step in a process step model. A trigger rule<br />

is equivalent to a next-step relationship in a process step model.


Operations<br />

Operations<br />

Operations define the actions that cause events to occur.<br />

<strong>FrameWork</strong> provides support for several primitive operations. A<br />

primitive operation is a basic operation that directly affects the<br />

state of an object and whose behavior is consistent regardless of the<br />

type of object it applies to. A primitive operation can be:<br />

■ A create operation, which creates a new object in a class<br />

■ A terminate operation, which destroys an object<br />

■ A classify operation, which assigns an object to an additional<br />

class<br />

■ A declassify operation, which removes an object from a class<br />

■ A reclassify operation, removes an object from one class and<br />

assigns it to another<br />

■ A connect operation, assigns a value to an association or<br />

attribute of an object<br />

■ A disconnect operation, removes a value from an association<br />

or attribute of an object<br />

■ A reconnect operation, which removes one value from an<br />

association or attribute of an object and assigns another to the<br />

same or different association or attribute<br />

■ An assign return object operation, which assigns an object<br />

to be returned when the process completes<br />

Note<br />

The combination of an operation and its resulting event is<br />

equivalent to a process step in a process step model.<br />

Chapter 14: Process Models<br />

139


Operation references<br />

Creating an operation<br />

Forms for operations<br />

Chapter 14: Process Models<br />

140<br />

To create an operation<br />

1 In the Process Step Diagram Tools tool folder, click and hold on<br />

the tool representing the type of operation you want to create.<br />

2 Drag to your process diagram window and release the mouse<br />

button where you want to place the operation graphic.<br />

3 Type a name for the operation. Then click on the window<br />

background to close the edit box.<br />

Primitive operation forms <strong>FrameWork</strong> provides several forms that you can use to view and<br />

modify information about a primitive operation.<br />

Basic Create Information<br />

form<br />

Basic Declassify<br />

Information form<br />

Basic Clasify Information<br />

form<br />

Basic Connect Information<br />

form<br />

Basic Disconnect<br />

Information form<br />

Operation references<br />

You can use the Basic Create Information form to view and modify<br />

information about a create operation.<br />

You can use the Basic Declassify Information form to view and<br />

modify information about a declassify or terminate operation.<br />

You can use the Basic Classify Information form to view and modify<br />

information about a classify or reclassify operation.<br />

You can use the Basic Connect Information form to view and<br />

modify information about a connect or reconnect operation.<br />

You can use the Basic Disconnect Information form to view and<br />

modify information about a disconnect operation.<br />

A process model can include representations of user-defined<br />

operations that you create in operation models. These<br />

representations are called operation references.


Creating an operation reference<br />

Form for operation references<br />

Events<br />

Process initiation events<br />

Events<br />

1 In the Process Diagram Tools tool folder, click and hold on the<br />

Operation Reference tool.<br />

2 Drag to your process diagram window and release the mouse<br />

button where you want to place the operation reference graphic.<br />

3 Type the name for the operation being referenced. Then click<br />

on the window background to close the edit box.<br />

You can use the Operation Reference Information form to view and<br />

modify information about an operation reference.<br />

<strong>FrameWork</strong> provides support for six types of events for use in<br />

process models. These events can be categorized as:<br />

■ Process initiation events<br />

■ Operation completion events<br />

■ Process completion events<br />

Starting a process A process initiation event is an event whose occurrence starts the<br />

process described by the model. Both start events and external<br />

events are process initiation events.<br />

A process model can include any number of process initiation<br />

events. Multiple process initiation events can provide alternative<br />

ways of starting a process, or they can indicate asynchronous<br />

processing of different paths to a single operation.<br />

Chapter 14: Process Models<br />

141


Events<br />

Start events Start events occur <strong>with</strong>in the system begin modeled. They can<br />

occur only at the beginning of a process.<br />

External events External events occur outside the scope of the system begin<br />

modeled. In addition to occurring at the beginning of a process,<br />

external events can occur at any other point in a process model.<br />

Operation completion events<br />

Completing an operation An operation completion event represents the successful or<br />

unsuccessful completion of an operation. The operation completion<br />

event types are success events and failed events. Both of these<br />

types of events can trigger further operations <strong>with</strong>in an process<br />

model. A process model can include any number of operation<br />

completion events.<br />

Success events Success events are represented by the plain event graphic and can<br />

occur at any point <strong>with</strong>in an event model. You can connect more<br />

than one event to an operation, but only one can be a success event.<br />

Failed events The operation triggered by a failed event specifies the action to be<br />

taken when the preceding operation fails. If an operation fails, but<br />

the model does not include a failed event for it, no further action<br />

occurs in the process defined by the model.<br />

Process completion events<br />

Completing a process A process completion event represents the completion of the process<br />

defined by the model. The process completion event types are goal<br />

events and abort events. A process model can include more than<br />

one process completion event, but only one will occur each time you<br />

run through the process.<br />

Goal events A goal event signifies that the entire process defined in the model<br />

has completed successfully. If the process model implements a<br />

method for an operation referenced in another process model,<br />

completion <strong>with</strong> a goal event causes that operation to result in a<br />

success event.<br />

Chapter 14: Process Models<br />

142


Inheritance relationships in process models<br />

Abort events An abort event signifies that the entire process defined in the model<br />

has been unable to complete successfully. If the process model<br />

implements a method for an operation referenced in another<br />

process model, completion <strong>with</strong> an abort event causes that<br />

operation to result in a failed event.<br />

Creating an event<br />

Forms for events<br />

1 In the Process Diagram Tools tool folder, click and hold on the<br />

tool representing the type of event you want to create.<br />

2 Drag to your process diagram window and release the mouse<br />

button where you want to place the event graphic.<br />

3 Type a name for the event. Then click on the window<br />

background to close the edit box.<br />

You can use the Basic Event Information form to view and modify<br />

information about an event.<br />

Inheritance relationships in process models<br />

Superevents and<br />

subevents<br />

Partitions in process models<br />

You can use partitions and generalizations to show more detail<br />

about events. In a process model, partitions and generalizations<br />

represent the inheritance relationships between relatively<br />

general events (called superevents) and more specific forms of<br />

these events (called subevents). Superevents and their related<br />

subevents can each trigger different operations.<br />

Like other partitions, event partitions can be complete or<br />

incomplete, and the subevents in a partition are mutually<br />

exclusive. In a complete partition, each occurrence of the<br />

superevent must also be an occurrence of one subevent. In an<br />

incomplete partition, an occurrence of the superevent doesn’t have<br />

to be an occurrence of a subevent.<br />

Chapter 14: Process Models<br />

143


Trigger rules<br />

Chapter 14: Process Models<br />

144<br />

To create a partition:<br />

Generalizations in process models<br />

1 In the common toolbar, select the tool representing the type of<br />

partition you want to create.<br />

2 While holding down the left mouse button, drag a box around<br />

the subevents contained in the partition.<br />

3 Click on the superevent of the partition.<br />

An event generalization shows the relationship between a<br />

superevent and a single subevent.<br />

To create a generalization:<br />

1 In the common toolbar, select the Generalization tool.<br />

2 Click and hold on the subevent.<br />

Forms for inheritance relationships<br />

Trigger rules<br />

3 Drag to the superevent and release the mouse button.<br />

For information on the forms you can use to view and modify<br />

information about inheritance relationships, see “Forms for<br />

inheritance relationships” in Chapter 7, “Class Models (UML).”<br />

Cause and effect Trigger rules are the control flow elements of process models. Each<br />

trigger rule defines a cause and effect relationship between an<br />

event and an operation. The occurrence of the event causes the<br />

operation to be invoked as the effect.<br />

Showing concurrency One event can trigger multiple different operations that can<br />

execute concurrently. To show this, you use a separate trigger rule


Objects for operations<br />

for each operation. The trigger rules all have the same cause event,<br />

but different operations as their effect.<br />

Parallel trigger rules A plain trigger rule represents a single invocation of an operation.<br />

When an operation needs to be invoked multiple times (once for<br />

each object in a set), you use a parallel trigger rule.<br />

Creating a trigger rule<br />

Form for trigger rules<br />

Note<br />

A trigger rule is equivalent to a next-step relationship in a<br />

process step model.<br />

To create a trigger rule:<br />

Objects for operations<br />

1 In the Process Diagram Tools tool folder, click and hold on the<br />

Trigger Rule or Parallel Trigger Rule tool, depending on the<br />

type of trigger rule you want to create.<br />

2 Drag to the triggering event and release the mouse button.<br />

3 Click on the operation triggered by the event.<br />

You can use the Basic Trigger Rule Information form to view and<br />

modify information about a trigger rule.<br />

The underlying object In a process model, the trigger rule that invokes an operation also<br />

determines:<br />

■ The object or set of objects on which the operation acts<br />

■ The values of the arguments passed to the operation<br />

By default, a trigger rule passes the object identified by its cause<br />

event to the operation it invokes. This object is called the<br />

underlying object. For example, suppose the event Project<br />

Chapter 14: Process Models<br />

145


Objects for operations<br />

Overriding the default<br />

object<br />

Base functions<br />

Chapter 14: Process Models<br />

146<br />

Completed triggers the operation Evaluate Project. The underlying<br />

object passed by the trigger rule is the project that has been<br />

completed (for example, project MktgProj032).<br />

MktgProj032<br />

(underlying<br />

object)<br />

Cause event<br />

Trigger rule<br />

Operation<br />

invoked<br />

You can override the default object by specifying a base function<br />

and/or base input for the trigger rule. You use the Basic Trigger<br />

Rule Information form to specify this information. Base functions<br />

and base input are described in the following sections.<br />

About base functions You can specify a function that, when evaluated, identifies a<br />

different object or set of objects to be passed to the operation<br />

invoked by a trigger rule. This function is called the base<br />

function for the trigger rule. A base function can be an association<br />

end, attribute, or query, or it can be a function you define outside of<br />

<strong>FrameWork</strong>.<br />

Example For example, suppose that when a customer is indicted for forging<br />

checks, any accounts owned by that customer are frozen. The<br />

process model uses a parallel trigger rule from the Customer<br />

Indicted event to trigger the Freeze Account operation for each<br />

account. The underlying object for the Customer Indicted event is<br />

the indicted customer (for example, Fred Jones). The base function<br />

for the trigger rule is the accounts association end on the Customer<br />

class. When evaluated, this function yields the accounts that the<br />

customer owns, which are then passed to the Freeze Account<br />

operation.


Base input<br />

Fred Jones<br />

(underlying<br />

object)<br />

Base function<br />

Cause event<br />

Parallel trigger rule<br />

Accounts owned<br />

by Fred Jones<br />

Operation invoked<br />

Objects for operations<br />

Using the base object The input to the base function for a trigger rule is called the base<br />

input. By default, the base input is the underlying object<br />

identified by the cause event of the trigger rule.<br />

If the process model containing the trigger rule is the<br />

implementation of an operation, you can override the default base<br />

input in either of two ways. One way is to make the base input be<br />

the base object for the higher-level operation. The base object is<br />

the object for which the higher-level operation is invoked. It is in<br />

the base class of that operation.<br />

Chapter 14: Process Models<br />

147


Objects for operations<br />

Using an argument value The other way to override the default base input for an operation is<br />

to use the value of an argument of the higher-level operation as the<br />

input.<br />

Chapter 14: Process Models<br />

148<br />

Operation definition<br />

Underlying<br />

object<br />

Base class<br />

Base object<br />

Operation implementation<br />

Operation<br />

Base function<br />

Cause event<br />

Trigger rule<br />

Range class<br />

Output from<br />

base function<br />

Operation invoked


Base input <strong>with</strong>out a base<br />

function<br />

Operation definition<br />

Argument value<br />

Underlying<br />

object<br />

Base class<br />

Operation implementation<br />

Argument<br />

Base function<br />

Cause event<br />

Trigger rule<br />

Operation<br />

Range class<br />

Argument assignments for operations<br />

Output from<br />

base function<br />

Operation invoked<br />

You can specify base input for a trigger rule <strong>with</strong>out a base function.<br />

In this case, the object passed to the operation invoked by the<br />

trigger rule is the base object or operation argument value itself.<br />

Argument assignments for operations<br />

Arguments for operations Operations often require information in addition to which objects<br />

they act on. This additional information is supplied by the<br />

operation arguments. For an operation reference in a process<br />

model, the arguments are the ones specified in the definition of the<br />

referenced operation. The following primitive operations also have<br />

arguments:<br />

■ For the Create, Classify, and Reclassify operations, the<br />

arguments are the association ends or attributes defined for or<br />

inherited by the class specified in the operation definition.<br />

Chapter 14: Process Models<br />

149


Argument assignments for operations<br />

Chapter 14: Process Models<br />

150<br />

■ For the Connect and Disconnect operations, the only argument<br />

is the association end or attribute specified in the operation<br />

definition.<br />

■ For the Reconnect operation, the arguments are the two<br />

association ends or attributes specified in the operation<br />

definition.<br />

Default argument values The default value for any argument is the underlying object<br />

identified by the cause event of the trigger rule.<br />

Overriding the default<br />

values<br />

Eval functions<br />

Underlying<br />

object Cause event<br />

Trigger rule<br />

Operation<br />

invoked<br />

Argument<br />

You can override the default value for an argument by specifying<br />

an eval function and/or eval function input for the trigger rule. You<br />

use the Basic Trigger Rule Information form to specify this<br />

information. Eval functions and eval function input are described<br />

in the following sections.<br />

About eval functions You can specify a function that, when evaluated, supplies a<br />

different value for an operation argument. This function is called<br />

the eval function for the argument. An eval function can be an<br />

association end, attribute, or query, or it can be a function you<br />

define outside of <strong>FrameWork</strong>.<br />

Example For example, the operation Freeze Account, which was used in the<br />

example under “Base functions” earlier in this chapter, needs to


Eval function input<br />

Argument assignments for operations<br />

know about any such previous actions against the customer’s<br />

accounts. This information is provided by the previous suspensions<br />

argument. The eval function for the argument is the Account<br />

Suspensions association end on the Customer class. When evaluated<br />

for the underlying object (for example, for the customer Fred<br />

Jones), this function yields the set of suspensions associated <strong>with</strong><br />

that object.<br />

Fred Jones<br />

(underlying<br />

object)<br />

Parallel trigger rule<br />

Cause event<br />

Operation<br />

invoked<br />

Eval function<br />

Argument<br />

Fred Jones’ account<br />

suspensions<br />

Using the base object By default, the input to an eval function is the underlying object<br />

identified by the cause event of the trigger rule. If the process<br />

model containing the trigger rule is the implementation of an<br />

operation, you can override the default input for an eval function in<br />

either of two ways. One way is to make the input be the base object<br />

for the higher-level operation.<br />

Chapter 14: Process Models<br />

151


Argument assignments for operations<br />

Using an argument value The other way to override the default input for an eval function is<br />

to use the value of an argument of the higher-level operation as the<br />

input.<br />

Chapter 14: Process Models<br />

152<br />

Operation definition<br />

Base class<br />

Underlying<br />

object<br />

Base object<br />

Operation implementation<br />

Operation<br />

Eval function<br />

Range class<br />

Cause event Operation<br />

invoked<br />

Trigger rule<br />

Argument<br />

Output from<br />

base function


Eval function input <strong>with</strong>out<br />

an eval function<br />

Operation definition<br />

Decision functions<br />

Argument value<br />

Base class<br />

Underlying<br />

object<br />

Operation implementation<br />

Argument<br />

Eval function<br />

Decision functions<br />

You can specify eval function input for an argument <strong>with</strong>out an<br />

eval function. In this case, the value assigned to the argument is<br />

the base object or the value of an argument for the higher-level<br />

operation.<br />

You can associate a decision function <strong>with</strong> a partition in a<br />

process model. The decision function determines which subevent, if<br />

any, each superevent is an occurrence of.<br />

To create a decision function:<br />

Range class<br />

Cause event Operation<br />

invoked<br />

Trigger rule<br />

Argument<br />

Operation<br />

Output from<br />

base function<br />

1 In the Process Diagram Tools tool folder, click and hold on the<br />

Decision Function tool.<br />

Chapter 14: Process Models<br />

153


Filters<br />

Filters<br />

Creating a filter<br />

Form for filters<br />

Chapter 14: Process Models<br />

154<br />

2 Drag to partition graphic and release the mouse button.<br />

3 Click where you want to place the decision function graphic.<br />

4 Type a name for the decision function. Then click on the<br />

window background to close the edit box.<br />

Process models can include filters that specify the conditions<br />

under which operations are triggered. Each filter represents a<br />

boolean function that, if true, results in the invocation of its<br />

associated operation.<br />

By default, the condition for a filter is that all the cause events for<br />

the trigger rules leading to it must have occurred. You can override<br />

this default by naming a different condition.<br />

To create a filter:<br />

1 In the Process Diagram Tools tool folder, click and hold on the<br />

Filter tool.<br />

2 Drag to cause event or operation and release the mouse button.<br />

3 Click where you want to place the filter graphic.<br />

4 Type a name for the filter. Then click on the window<br />

background to close the edit box.<br />

You can use the Basic Filter Information form to view and modify<br />

information about a filter.


About project models<br />

3URMHFW 0RGHOV<br />

Description Information on this topic is not yet available.<br />

Building project models Information on this topic is not yet available.<br />

Support Direct support for project models is provided only in Business and<br />

Enterprise <strong>FrameWork</strong>.<br />

Sample project diagram<br />

Information on this topic is not yet available.<br />

<br />

15<br />

Chapter 15: Project Models<br />

155


Projects<br />

Projects<br />

Chapter 15: Project Models<br />

156<br />

Information on this topic is not yet available.<br />

Project tasks and milestones<br />

Project teams<br />

Information on this topic is not yet available.<br />

Information on this topic is not yet available.


Implemented strategies<br />

Information on this topic is not yet available.<br />

Implemented strategies<br />

Chapter 15: Project Models<br />

157


Implemented strategies<br />

Chapter 15: Project Models<br />

158


5HSRUW /D\RXW 0RGHOV<br />

About report layout models<br />

Description Report layout models specify the content and structure of<br />

information contained in <strong>FrameWork</strong> Document reports. You use a<br />

report layout model to describe the sections and subsections you<br />

want in a report, as well as to identify the objects and properties<br />

you want to report on. You even use the model to specify the<br />

presentation format for each piece of information in the report.<br />

Building report layout<br />

models<br />

Running the Document<br />

report<br />

To build a report layout model, you create a report layout diagram.<br />

You use the tools in the Report Layout Diagram Tools tool folder to<br />

lay out the structure of your report graphically in the diagram.<br />

Then you use forms to describe the content and presentation format<br />

you want for each element of the report.<br />

<br />

16<br />

After building a report layout model, you run the Document report<br />

on the object that represents the report itself. <strong>FrameWork</strong> uses<br />

your specifications in the model to generate the report output. For<br />

more information on running the Document report, see Using<br />

<strong>FrameWork</strong>.<br />

Support Direct support for report layout models is provided in all three<br />

<strong>FrameWork</strong> products.<br />

Chapter 16: Report Layout Models<br />

159


Sample report layout diagram<br />

Sample report layout diagram<br />

Sample diagram The window below shows a sample report layout diagram named<br />

SuccessTech Document Overview.<br />

The report structure The SuccessTech Document Overview diagram defines the<br />

structure of a Document report. The top left object, SuccessTech<br />

Overview, represents the report itself. The report has a preface and<br />

four chapters — Mission and Goals, Organization Structure, Business<br />

Chapter 16: Report Layout Models<br />

160


Reports<br />

Reports<br />

Architecture, and Business Objects. The objects aligned below each<br />

chapter (for example, Mission&Vision and Goals&Objectives)<br />

represent sections <strong>with</strong>in the chapter. The remaining objects<br />

represent paragraphs <strong>with</strong>in the preface, chapters, and sections.<br />

About reports A report represents the output generated by the <strong>FrameWork</strong><br />

Document report. When you build a report layout diagram, the<br />

report is typically the first object you create. While a report can<br />

contain many chapters, the report object in a model is directly<br />

connected to at most one. That one is the first chapter in the<br />

report.<br />

A report can also have a preface. In the generated Document<br />

report, the preface precedes the first chapter.<br />

Report information In addition to its name, you can supply the following information<br />

for a report:<br />

■ A title. The title can be the same as or similar to the report<br />

name. <strong>FrameWork</strong> uses the report title as the heading for the<br />

report in the generated Document report. If you don’t supply a<br />

title, <strong>FrameWork</strong> uses the report name as the heading.<br />

■ The author. <strong>FrameWork</strong> prints the author you specify below<br />

the report heading in the generated Document report.<br />

■ The date the report was created or last modified. <strong>FrameWork</strong><br />

prints the date you specify below the author in the generated<br />

Document report.<br />

When generating a Document report, <strong>FrameWork</strong> uses Document_<br />

followed by the name of the report object as the name of the first<br />

file of the generated report. For example, if the name of the report<br />

object is SuccessTech Overview, the first file of the generated report<br />

is Document_SuccesstechOverview.html.<br />

Chapter 16: Report Layout Models<br />

161


Creating a report<br />

Creating a report<br />

Form for reports<br />

Chapter 16: Report Layout Models<br />

162<br />

To create a report:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Output Report tool.<br />

2 Drag into your report layout diagram window and release the<br />

mouse button where you want to place the report graphic.<br />

3 Type a name for the report. Then click on the window<br />

background to close the edit box.<br />

You can use the Output Report Information form to view and<br />

modify information about a report. The sample form below shows<br />

information about the SuccessTech Overview report in the sample<br />

report layout diagram shown earlier in this chapter.


Sample first page of a Document report<br />

Prefaces<br />

Sample first page of a Document report<br />

The figure below shows the first page of the Document report<br />

<strong>FrameWork</strong> generates from the report in the sample report layout<br />

diagram shown earlier in this chapter.<br />

About prefaces The preface is one of the highest-level divisions of a report. You<br />

can use it to provide introductory or explanatory information that<br />

applies to the rest of the report.<br />

A report can have at most one preface. In the report layout model,<br />

the preface is directly connected to the report object. In the<br />

generated Document report, the preface, if present, is at the same<br />

level as the chapters. It also comes before all chapters.<br />

A preface can contain both paragraphs and sections. In the<br />

generated Document report, all the paragraphs directly included in<br />

a preface come before the sections of the preface. While a preface<br />

can contain many paragraphs and sections, only the first one of<br />

each is directly connected to the preface.<br />

Chapter 16: Report Layout Models<br />

163


Creating a preface<br />

Preface information In addition to its name, you can supply the following information<br />

for a preface:<br />

Chapter 16: Report Layout Models<br />

164<br />

■ The author<br />

Creating a preface<br />

Form for prefaces<br />

■ The date the preface was created or last modified<br />

In a generated Document report, the heading for the preface is<br />

Preface.<br />

To create a preface in a report:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Preface tool.<br />

2 Drag onto the containing report and release the mouse button.<br />

Then click where you want to place the preface graphic.<br />

3 Type a name for the preface. Then click on the window<br />

background to close the edit box.<br />

You can use the Document Element Information form to view and<br />

modify information about a preface. The sample form below shows<br />

information about the Preface preface in the sample report layout<br />

diagram shown earlier in this chapter.


Sample preface from a Document report<br />

Chapters<br />

Sample preface from a Document report<br />

The figure below shows the page of the Document report<br />

<strong>FrameWork</strong> generates from the Preface preface in the sample<br />

report layout diagram shown earlier in this chapter.<br />

About chapters Chapters, along <strong>with</strong> the preface, are the highest-level divisions of<br />

a report. Each chapter in a report is connected to the chapters that<br />

precede and follow it. Only the first chapter is directly connected to<br />

the report itself.<br />

Chapter 16: Report Layout Models<br />

165


Creating chapters<br />

Chapter 16: Report Layout Models<br />

166<br />

A chapter can contain both paragraphs and sections. In the<br />

generated Document report, all the paragraphs directly included in<br />

a chapter come before the sections of the chapter. While a chapter<br />

can contain many paragraphs and sections, only the first one of<br />

each is directly connected to the chapter.<br />

Chapter information In addition to its name, you can supply the following information<br />

for a chapter:<br />

■ A title. The title can be the same as or similar to the chapter<br />

name. <strong>FrameWork</strong> uses the chapter title as the heading for the<br />

chapter in the generated Document report. If you don’t supply a<br />

title, <strong>FrameWork</strong> uses the chapter name as the heading.<br />

■ The author.<br />

Creating chapters<br />

Creating the first chapter in<br />

a report<br />

Creating additional<br />

chapters<br />

■ The date the chapter was created or last modified.<br />

To create the first chapter in a report:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Chapter tool.<br />

2 Drag onto the containing report and release the mouse button.<br />

Then click where you want to place the chapter graphic.<br />

3 Type a name for the chapter. Then click on the window<br />

background to close the edit box.<br />

To create an additional chapter in a report:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Chapter tool.<br />

2 Drag into your report layout diagram window and release the<br />

mouse button where you want to place the chapter graphic.


3 Type a name for the chapter. Then click on the window<br />

background to close the edit box.<br />

Connecting chapters To connect a chapter to the chapter that follows it:<br />

Form for chapters<br />

Form for chapters<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Next Chapter tool.<br />

2 Drag onto the chapter that comes first and release the mouse<br />

button. Then click on the following chapter.<br />

You can use the Document Element Information form to view and<br />

modify information about a chapter. The sample form below shows<br />

information about the Organization Structure chapter in the sample<br />

report layout diagram shown earlier in this chapter.<br />

Sample chapter from a Document report<br />

The figure below shows the page of the Document report<br />

<strong>FrameWork</strong> generates from the Organization Structure chapter in<br />

the sample report layout diagram shown earlier in this chapter.<br />

Chapter 16: Report Layout Models<br />

167


Sections<br />

Sections<br />

About sections Sections are divisions of chapters as well as of other sections.<br />

Sections <strong>with</strong>in another section are called subsections. Each<br />

section <strong>with</strong>in a chapter or other section is connected to the sections<br />

that precede and follow it at the same level. Only the first section<br />

<strong>with</strong>in a chapter is directly connected to that chapter. Only the<br />

first subsection <strong>with</strong>in a section is directly connected to that<br />

section.<br />

Chapter 16: Report Layout Models<br />

168<br />

A section can contain paragraphs as well as subsections. Only the<br />

first paragraph in a section is directly connected to the section. In<br />

the generated Document report, all the paragraphs directly<br />

included in a section come before the subsections.<br />

Section information In addition to its name, you can supply the following information<br />

for a section:<br />

■ A title. The title can be the same as or similar to the section<br />

name. <strong>FrameWork</strong> uses the section title as the heading for the<br />

section in the generated Document report. If you don’t supply a<br />

title, <strong>FrameWork</strong> uses the section name as the heading.<br />

■ The author.<br />

■ The date the section was created or last modified.


Creating sections<br />

Creating the first section in<br />

a chapter<br />

Creating the first<br />

subsection in a section<br />

Creating additional<br />

sections<br />

To create the first section in a chapter:<br />

Creating sections<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Section tool.<br />

2 Drag onto the containing chapter and release the mouse button.<br />

Then click where you want to place the section graphic.<br />

3 Type a name for the section. Then click on the window<br />

background to close the edit box.<br />

To create the first subsection in a section:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Subsection tool.<br />

2 Drag onto the containing section and release the mouse button.<br />

Then click where you want to place the subsection graphic.<br />

3 Type a name for the subsection. Then click on the window<br />

background to close the edit box.<br />

To create an additional section in a chapter or other section:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Section tool.<br />

2 Drag into your report layout diagram window and release the<br />

mouse button where you want to place the section graphic.<br />

3 Type a name for the section. Then click on the window<br />

background to close the edit box.<br />

Connecting sections To connect a section to the section that follows it at the same level:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Next Section tool.<br />

Chapter 16: Report Layout Models<br />

169


Form for sections<br />

Form for sections<br />

Chapter 16: Report Layout Models<br />

170<br />

2 Drag onto the section that comes first and release the mouse<br />

button. Then click on the following section.<br />

You can use the Document Element Information form to view and<br />

modify information about a section. The sample form below shows<br />

information about the Mission&Vision section in the sample report<br />

layout diagram shown earlier in this chapter.<br />

Sample section from a Document report<br />

The figure below shows the page of the Document report<br />

<strong>FrameWork</strong> generates from the Mission&Vision section in the<br />

sample report layout diagram shown earlier in this chapter.


Paragraphs<br />

Paragraphs<br />

About paragraphs Paragraphs are the information-bearing components of a report.<br />

They identify the objects to be reported on as well as the format of<br />

the information presented. Each paragraph in a report must be<br />

part of a preface, chapter, or section. The report itself cannot<br />

directly contain paragraphs.<br />

General paragraph<br />

information<br />

Each paragraph <strong>with</strong>in a preface, chapter, or section is connected to<br />

the paragraphs that precede and follow it. Only the first paragraph<br />

is directly connected to the preface, chapter, or section itself.<br />

<strong>FrameWork</strong> supplies a variety of paragraph types. The type you<br />

assign to a paragraph determines the format of the paragraph<br />

information in the generated Document report. It also determines<br />

what additional information you need to provide about the<br />

paragraph.<br />

In addition to the paragraph name, you can supply the following<br />

information for all types of paragraphs:<br />

■ A title. The title can be the same as or similar to the paragraph<br />

name. <strong>FrameWork</strong> uses the paragraph title as the heading for<br />

Chapter 16: Report Layout Models<br />

171


Creating paragraphs<br />

Creating paragraphs<br />

Creating the first paragraph<br />

in a preface, chapter, or<br />

section<br />

Creating additional<br />

paragraphs<br />

Chapter 16: Report Layout Models<br />

172<br />

the paragraph in the generated Document report. If you don’t<br />

supply a title, <strong>FrameWork</strong> generates the paragraph <strong>with</strong>out a<br />

heading.<br />

■ The paragraph type. This information is required for all<br />

paragraphs. <strong>FrameWork</strong> supplies the following paragraph<br />

types: Text, Model Diagram, Image File, Data File, Simple List,<br />

Merged List, Horizontal Table, Vertical Table, Two-Dimensional<br />

Table, and Cross-Reference Table. Each of these types is<br />

described in detail later in this chapter.<br />

To create the first paragraph in a preface, chapter, or section:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Paragraph tool.<br />

2 Drag onto the containing preface, chapter, or section and<br />

release the mouse button. Then click where you want to place<br />

the paragraph graphic.<br />

3 Type a name for the paragraph. Then click on the window<br />

background to close the edit box.<br />

To create an additional paragraph in a preface, chapter, or section:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Paragraph tool.<br />

2 Drag into your report layout diagram window and release the<br />

mouse button where you want to place the paragraph graphic.<br />

3 Type a name for the paragraph. Then click on the window<br />

background to close the edit box.


Focus objects and content functions<br />

Connecting paragraphs To connect a paragraph to the paragraph that follows it in the same<br />

preface, chapter, or section:<br />

1 In the Report Layout Diagram Tools tool folder, click and hold<br />

on the Next Paragraph tool.<br />

2 Drag onto the paragraph that comes first and release the mouse<br />

button. Then click on the following paragraph.<br />

Focus objects and content functions<br />

Focus objects Most paragraph types require you to specify a focus object. This<br />

is the object <strong>FrameWork</strong> uses as a starting point for retrieving<br />

information to display in the paragraph.<br />

Note<br />

If the focus object for a paragraph can be a metamodel class,<br />

the form <strong>FrameWork</strong> provides for the paragraph type has a<br />

separate field in which you need to specify the class.<br />

Content functions A content function identifies an association end, attribute, or<br />

query that <strong>FrameWork</strong> evaluates to retrieve information for<br />

display in a paragraph. <strong>FrameWork</strong> can evaluate the function<br />

either on a focus object or on the result of a previous function<br />

evaluation.<br />

Content function<br />

information<br />

Content functions are reusable. In other words, once you create a<br />

content function, you can use it in the specification of multiple<br />

paragraphs.<br />

You can supply the following information for a content function:<br />

■ The function (that is, the association end, attribute, or query)<br />

assigned to it. This information is required for all content<br />

functions.<br />

■ An alias. The alias can be the same as or similar to the name of<br />

the content function or its assigned function. For some<br />

paragraph types, <strong>FrameWork</strong> uses the alias to label<br />

information retrieved by the assigned function in the generated<br />

Chapter 16: Report Layout Models<br />

173


Text paragraphs<br />

Chapter 16: Report Layout Models<br />

174<br />

Document report. If you don’t supply an alias, <strong>FrameWork</strong> uses<br />

the name of the assigned function as the label.<br />

■ The owner class of the assigned function (also called the domain<br />

class). This information is required when the assigned function<br />

is an association end or attribute and should be omitted when<br />

the assigned function is a query.<br />

■ A cross-reference indicator for use in cross-reference table<br />

paragraphs. For more information on cross-reference<br />

indicators, see “Cross-reference table paragraphs” later in this<br />

chapter.<br />

Form for content functions You can use the Content Function Information form to view and<br />

modify information about a content function. The sample form<br />

below shows information about a content function named AP Vision.<br />

Text paragraphs<br />

Description A text paragraph generates plain text in a Document report. The<br />

source of the text depends on the information you supply in the<br />

paragraph definition:


Text paragraphs<br />

■ If the paragraph definition specifies a focus object <strong>with</strong>out a<br />

content function, the generated output is the object name. (The<br />

focus object is required for a text paragraph.)<br />

■ If the paragraph definition specifies a primary content function,<br />

the generated output is the value that results from evaluating<br />

the content function on the focus object. If the value consists of<br />

more than one object, <strong>FrameWork</strong> lists them all.<br />

■ If the paragraph definition specifies a secondary content<br />

function, the generated output is the value that results from<br />

evaluating that function on the result of the primary content<br />

function. (A primary function is required if you provide a<br />

secondary function.)<br />

Form for text paragraphs You can use the Text Paragraph Information form to view and<br />

modify information about a text paragraph. The sample form below<br />

shows information about the Mission Statement paragraph in the<br />

sample report layout diagram shown earlier in this chapter.<br />

Sample text paragraph<br />

from a Document report<br />

The figure below shows the output <strong>FrameWork</strong> generates from the<br />

Mission Statement paragraph in the sample report layout diagram<br />

shown earlier in this chapter.<br />

Chapter 16: Report Layout Models<br />

175


Image/data file paragraphs<br />

Image/data file paragraphs<br />

Model diagram paragraphs A model diagram paragraph generates a picture of a<br />

<strong>FrameWork</strong> diagram in a Document report. For this type of<br />

paragraph, you need to specify only the diagram you want to use.<br />

Image file paragraphs An image file paragraph inserts either an external graphic or a<br />

link to an external graphic into a Document report. For this type of<br />

paragraph, you need to supply a data file object whose name is the<br />

full path and filename of the graphic file. If the graphic itself is to<br />

be inserted into the report, it should be a type that your HTML<br />

browser can display (that is, GIF or JPEG).<br />

Data file paragraphs A data file paragraph inserts either the contents of an external<br />

file or a link to an external file into a Document report. For this<br />

type of paragraph, you need to supply a data file object whose name<br />

is the full path and filename of the external file. If the contents of<br />

the file are to be inserted directly into the report, the file should be<br />

a type that your HTML browser can display (for example, HTML or<br />

plain text).<br />

Form for image/data file<br />

paragraphs<br />

Chapter 16: Report Layout Models<br />

176<br />

You can use the Image/File Paragraph Information form to view<br />

and modify information about a model diagram, image file, or data<br />

file paragraph. The sample form below shows information about<br />

the Corporate Strategic Plan Model paragraph in the sample report<br />

layout diagram shown earlier in this chapter.


Sample model diagram<br />

paragraph from a<br />

Document report<br />

Image/data file paragraphs<br />

The figure below shows the output <strong>FrameWork</strong> generates from the<br />

Corporate Strategic Plan Model paragraph in the sample report<br />

layout diagram shown earlier in this chapter.<br />

Chapter 16: Report Layout Models<br />

177


List paragraphs<br />

Sample linked data file<br />

paragraph from a<br />

Document report<br />

List paragraphs<br />

Chapter 16: Report Layout Models<br />

178<br />

The figure below shows the output <strong>FrameWork</strong> generates from a<br />

data file paragraph <strong>with</strong> the Linked option selected.<br />

Simple list paragraphs A simple list paragraph generates a list of objects in a Document<br />

report. For this type of paragraph, you need to specify both a focus<br />

object and a primary content function. The objects in the list are<br />

those that result from evaluating the primary content function on<br />

the focus object.<br />

Merged list paragraphs A merged list paragraph generates a two-level list of objects in a<br />

Document report. For this type of paragraph, you need to specify a<br />

focus object, a primary content function, and a secondary content<br />

function. The first level of the list contains the objects that result<br />

from evaluating the primary content function on the focus object.<br />

For each of those objects, the second level of the list contains the<br />

objects that result from evaluating the secondary content function<br />

on the object.


Sorting lists Not yet available.<br />

List paragraphs<br />

List headings In a generated Document report, both simple and merged lists have<br />

headings of the form:<br />

primary-function-alias for focus-object<br />

If the primary content function doesn’t have an alias, <strong>FrameWork</strong><br />

uses the name of the assigned function in the list heading.<br />

Form for list paragraphs You can use the List Paragraph Information form to view and<br />

modify information about a simple or merged list paragraph. The<br />

sample form below shows information about the Org. Structure<br />

paragraph in the sample report layout diagram shown earlier in<br />

this chapter.<br />

Sample merged list<br />

paragraph from a<br />

Document report<br />

The figure below shows the merged list <strong>FrameWork</strong> generates from<br />

the Org. Structure paragraph in the sample report layout diagram<br />

shown earlier in this chapter.<br />

Chapter 16: Report Layout Models<br />

179


Table paragraphs<br />

Table paragraphs<br />

Horizontal table<br />

paragraphs<br />

Chapter 16: Report Layout Models<br />

180<br />

A horizontal table paragraph displays selected properties of its<br />

focus object (or metamodel class) in a one-row table in a Document<br />

report. Each property is identified by a content function in the<br />

paragraph definition. <strong>FrameWork</strong> uses the content function alias<br />

as the column heading for the property in the generated table. If<br />

the content function doesn’t have an alias, <strong>FrameWork</strong> uses the<br />

name of the assigned function.<br />

Vertical table paragraphs A vertical table paragraph displays selected properties of its<br />

focus object (or metamodel class) in a one-column table in a<br />

Document report. For this type of paragraph, <strong>FrameWork</strong> uses the<br />

content function aliases as row labels.<br />

Two-dimensional table<br />

paragraphs<br />

A two-dimensional table paragraph generates a multirow<br />

horizontal table in a Document report. For this type of paragraph,<br />

you need to supply a primary content function in addition to the<br />

focus object (or metamodel class) and properties. Each row displays<br />

selected properties of an object resulting from the evaluation of the<br />

primary content function on the focus object.<br />

Table headings In a generated Document report, both horizontal and vertical tables<br />

have headings of the form:


Object Properties Report for: focus-object<br />

Table paragraphs<br />

<strong>FrameWork</strong> does not automatically generate headings for twodimensional<br />

tables.<br />

Form for table paragraphs You can use the Table Paragraph Information form to view and<br />

modify information about a horizontal, vertical, or two-dimensional<br />

table paragraph. The sample form below shows information about<br />

the Process Information paragraph in the sample report layout<br />

diagram shown earlier in this chapter.<br />

Tip<br />

After creating a new content function in the Properties field,<br />

use the Content Function Information form to assign it a function,<br />

alias, and owner class.<br />

Chapter 16: Report Layout Models<br />

181


Table paragraphs<br />

Sample vertical table<br />

paragraph from a<br />

Document report<br />

Sample two-dimensional<br />

table paragraph from a<br />

Document report<br />

Chapter 16: Report Layout Models<br />

182<br />

The figure below shows the vertical table <strong>FrameWork</strong> generates<br />

from the US Sales Information paragraph in the sample report layout<br />

diagram shown earlier in this chapter.<br />

The figure below shows portions of the two-dimensional table<br />

<strong>FrameWork</strong> generates from the Process Information paragraph in<br />

the sample report layout diagram shown earlier in this chapter.<br />

.<br />

.


Cross-reference table paragraphs<br />

Cross-reference table paragraphs<br />

Description A cross-reference table paragraph generates a cross-reference<br />

table in a Document report. In a cross-reference table, each row<br />

represents an object, as does each column. At the intersection of<br />

each row and column, <strong>FrameWork</strong> places an indicator if the row<br />

object is connected to the column object through a particular<br />

function.<br />

Cross-reference table<br />

headings<br />

Form for cross-reference<br />

paragraphs<br />

For a cross-reference table paragraph, you need to specify:<br />

■ A focus object (or metamodel class) and content function for the<br />

rows. The row objects are the ones that result from evaluating<br />

the row content function on the row focus object.<br />

■ A focus object (or metamodel class) and content function for the<br />

columns. The column objects are the ones that result from<br />

evaluating the column content function on the column focus<br />

object.<br />

■ A cross-reference content function. This is the function<br />

<strong>FrameWork</strong> checks to see whether the row objects and column<br />

objects are connected to each other. <strong>FrameWork</strong> marks the<br />

intersection of connected objects <strong>with</strong> the cross-reference<br />

indicator you assign to the cross-reference content function.<br />

The cross-reference indicator can be any character string.<br />

In a generated Document report, cross-reference tables have<br />

headings of the form:<br />

The Cross-Reference Table Function is "cross-ref-assigned-func"<br />

Cross-ref-assigned-func is the name of the association end,<br />

attribute, or query assigned to the cross-reference content function.<br />

You can use the Cross-Reference Table Paragraph Information<br />

form to view and modify information about a cross-reference table<br />

paragraph. The sample form below shows information about a<br />

Chapter 16: Report Layout Models<br />

183


Cross-reference table paragraphs<br />

Sample cross-reference<br />

paragraph from a<br />

Document report<br />

Chapter 16: Report Layout Models<br />

184<br />

cross-reference table paragraph named US Sales Processes and<br />

Resources.<br />

The figure below shows the cross-reference table <strong>FrameWork</strong><br />

generates from the US Sales Processes and Resources paragraph<br />

shown in the form above.


Cross-reference table paragraphs<br />

Chapter 16: Report Layout Models<br />

185


Cross-reference table paragraphs<br />

Chapter 16: Report Layout Models<br />

186


5RDG 0DS 0RGHOV<br />

About road map models<br />

Description A road map model provides access to some or all of the models in a<br />

modeling project. It can show the logical connections between the<br />

models, as well as establish navigation paths among the model<br />

diagrams. A well-designed road map model can provide an<br />

overview of the content and scope of the system being modeled and<br />

be an invaluable tool for organizing and maintaining your models.<br />

You can implement the relationships in a road map model through<br />

KnowledgeBase connections between model diagrams.<br />

Alternatively, you can represent these relationships graphically in<br />

a road map diagram <strong>with</strong>out storing their semantics in the<br />

KnowledgeBase.<br />

Building road map models To build a road map model, you typically create a road map<br />

diagram using tools in the Diagram Tools tool folder.<br />

Support Direct support for road map models is provided in all three<br />

<strong>FrameWork</strong> products.<br />

<br />

16<br />

Chapter 16: Road Map Models<br />

187


Sample road map diagram<br />

Sample road map diagram<br />

Sample diagram The window below contains a sample road map diagram that<br />

provides access to the main models for a company named<br />

SuccessTech. The name of this diagram is Road Map.<br />

Groups of models The Road Map diagram groups models by logical areas at two<br />

levels. At the higher level, the models are assigned to one of three<br />

categories: Missions, Strategies, and Structure; Business<br />

Architecture and Process <strong>Modeling</strong>; or Analysis, Design, and<br />

Deployment. Within these categories, the models are further<br />

organized into subcategories such as Strategic Planning, Value-<br />

Chain <strong>Modeling</strong>, and <strong>Technology</strong> Implementation.<br />

Chapter 16: Road Map Models<br />

188<br />

The logical relationships among the models in the Road Map<br />

diagram are represented graphically only. The diagram uses<br />

freestanding text to label the categories of models and background<br />

color on the text anchors to visually group the graphic references to


Road map model contents<br />

the model diagrams at the lower level. These groupings of models<br />

have no corresponding implementation in the KnowledgeBase.<br />

Road map model contents<br />

Graphic references to<br />

diagrams<br />

A road map model contains models. The diagram of a road map<br />

model contains graphic references to diagrams of those models.<br />

Each graphic reference lets you both open the referenced diagram<br />

and view and modify information about that diagram.<br />

Diagram relationships A road map model also contains the relationships you create among<br />

the diagrams in the model. Diagrams can have parent/child<br />

relationships, or they can simply be attached to other diagrams.<br />

Parent/child relationships establish diagram hierarchies. Attached<br />

diagrams establish navigational paths.<br />

For more information on diagram relationships, see the discussion<br />

about organizing diagrams in Using <strong>FrameWork</strong>.<br />

Information about diagrams<br />

In addition to its name, a diagram can have the following<br />

properties:<br />

■ Diagram types that apply to the diagram (#diagram types<br />

association end). For information on diagram types, see Using<br />

<strong>FrameWork</strong>.<br />

■ Objects represented graphically in the diagram (#contains<br />

association end).<br />

■ Objects to which the diagram is connected as a subdiagram<br />

(#anchor association end). For information on subdiagrams, see<br />

Using <strong>FrameWork</strong>.<br />

■ Objects to which the diagram is attached (#related_objects<br />

association end).<br />

Chapter 16: Road Map Models<br />

189


Information about diagrams<br />

Chapter 16: Road Map Models<br />

190<br />

■ Diagrams to which the diagram is a child (#parent diagrams<br />

association end).<br />

■ Diagrams to which the diagram is a parent (#child diagrams<br />

association end).<br />

■ The collaboration represented by the diagram (collaboration<br />

association end). For information on representing<br />

collaborations, see Chapter 8, “Collaboration Models (UML).”<br />

■ The interaction represented by the diagram (interaction<br />

association end). For information on representing interactions,<br />

see Chapter 17, “Sequence Models (UML).”<br />

■ Model diagram paragraphs that generate a picture of the<br />

diagram (dgm_paragraphs association end). For information on<br />

model diagram paragraphs, see “Image/data file paragraphs” in<br />

Chapter 16, “Report Layout Models.”<br />

■ In the context of the Zachman framework, the owner of the<br />

diagram (accountable party association end).<br />

Note<br />

The Zachman framework is a classification scheme for<br />

enterprise information developed by John A. Zachman of<br />

Zachman. Support for the Zachman framework is included only<br />

in Ptech Enterprise <strong>FrameWork</strong>.<br />

■ In the context of the Zachman framework, the questions<br />

answered by the diagram (questions answered association end).<br />

■ In the context of the Zachman framework, the points of view<br />

presented by the diagram (view perspectives association end).<br />

For information on other properties of diagrams, see <strong>Modeling</strong> <strong>with</strong><br />

<strong>Technology</strong> <strong>FrameWork</strong>.


Creating road map diagrams<br />

Creating a graphic<br />

reference<br />

Creating a parent/child<br />

relationship<br />

Creating road map diagrams<br />

To create a graphic reference to the diagram in the active window:<br />

On the View menu, select Create Reference.<br />

To create a parent/child relationship between two diagrams:<br />

1 Place a graphic reference to each diagram in your road map<br />

diagram window.<br />

2 In the Diagram Tools tool folder, click and hold on the Parent<br />

Diagram tool.<br />

3 Drag onto the graphic reference to the child diagram.<br />

4 Click on the graphic reference to the parent diagram.<br />

Attaching a diagram To attach one diagram to another and, thereby, enable navigation<br />

from the second diagram to the first:<br />

1 Place a graphic reference to each diagram in your road map<br />

diagram window.<br />

2 In the Diagram Tools tool folder, click and hold on the Related<br />

To tool.<br />

3 Drag onto the graphic reference to one of the diagrams.<br />

4 Click on the graphic reference to the other diagram.<br />

Chapter 16: Road Map Models<br />

191


Form for diagrams<br />

Form for diagrams<br />

Chapter 16: Road Map Models<br />

192<br />

You can use the Basic Diagram Information form to view and<br />

modify information about a diagram. The sample form below<br />

shows information about a diagram named


6HTXHQFH 0RGHOV 80/<br />

About sequence models<br />

Description Sequence models show the order of communications <strong>with</strong>in<br />

interactions. In a sequence model, each communication is<br />

represented as a message that is passed from one object to another<br />

(or to itself). This type of model can help clarify complex<br />

interactions by breaking them down visually into discrete,<br />

sequenced communications. Additionally, you can add freestanding<br />

text to indicate time requirements for the communications.<br />

Sequence models show how objects participate in interactions, but<br />

do not show the relationships among those objects. To represent<br />

these relationships, you can use collaboration models.<br />

Building sequence models You build sequence models in sequence diagram windows, using<br />

tools in the UML Sequence Diagram Tools tool folder.<br />

Support Direct support for sequence models is provided only in <strong>Technology</strong><br />

and Enterprise <strong>FrameWork</strong>.<br />

Sample sequence diagram<br />

The window below shows a sample sequence model.<br />

<br />

17<br />

Chapter 17: Sequence Models (UML)<br />

193


Objects<br />

Objects<br />

Creating an object<br />

Chapter 17: Sequence Models (UML)<br />

194<br />

An object in a sequence model is either a specific instance of a<br />

class or an unnamed, representative instance of a class.<br />

To create an object:<br />

1 In the UML Sequence Diagram Tools tool folder, click and hold<br />

on the Object tool.<br />

2 Drag to your sequence diagram modeling window and release<br />

the mouse button where you want to place the object graphic.<br />

3 Type a name for the object. Then click on the window<br />

background to close the edit box.


Form for objects<br />

Lifeline points<br />

You can Basic Object Information form to view and modify<br />

information about an object.<br />

Form for objects<br />

About lifeline points A lifeline represents the existence of an object through time. A<br />

lifeline point is the intersection of a lifeline and a message.<br />

Lifeline points occur whenever an object either sends or receives a<br />

message. Their positions on the lifeline indicate the sequence in<br />

which they occur.<br />

The first lifeline point is the first point at which the object either<br />

sends or receives a message. Each lifeline point after the first one<br />

is a point at which the object either sends or receives a message.<br />

Creating a first lifeline point To create a first lifeline point:<br />

Creating subsequent<br />

lifeline points<br />

1 In the UML Sequence Diagram Tools tool folder, click and hold<br />

on the First Lifeline Point tool.<br />

2 Drag to the object and release the mouse button.<br />

3 Click where you want to place the first lifeline point graphic.<br />

4 Type a name for the first lifeline point. Then click on the<br />

window background to close the edit box.<br />

To create a subsequent lifeline point:<br />

1 In the UML Sequence Diagram Tools tool folder, click and hold<br />

on the Lifeline Point tool.<br />

2 Drag to the preceding lifeline point and release the mouse<br />

button.<br />

Chapter 17: Sequence Models (UML)<br />

195


Messages<br />

Messages<br />

Creating a message<br />

Chapter 17: Sequence Models (UML)<br />

196<br />

3 Click where you want to place the lifeline point graphic.<br />

4 Type a name for the lifeline point. Then click on the window<br />

background to close the edit box.<br />

A message is a named communication from one object to another.<br />

A return message is a named communication that is the response<br />

to a message.<br />

To create a message:<br />

Form for messages<br />

1 In the UML Sequence Diagram Tools tool folder, click and hold<br />

on the tool representing the type of message you want to create.<br />

2 Drag to the lifeline point that send the message and release the<br />

mouse button.<br />

3 Click on the lifeline point that receives the message.<br />

4 Type the name of the message. Then click on the window<br />

background to close the edit box.<br />

You can use the Message Instance Information form to view and<br />

modify information about a message.


6WDWHFKDUW 0RGHOV 80/<br />

About statechart models<br />

Description Statechart models show the changes an object can undergo during<br />

its lifetime. Objects change in response to actions performed by<br />

other objects or themselves. Statechart models can include<br />

information about the events that trigger each change.<br />

A statechart model applies to a particular class of objects, and the<br />

changes represented in the model often correspond to subclasses of<br />

that class. To establish a connection between a statechart model<br />

and the class it applies to, you can attach the model diagram to the<br />

class.<br />

Building statechart models You build statechart models in user-defined windows, using tools in<br />

the UML Statechart Diagram Tools tool folder.<br />

Support Direct support for statechart models is provided only in <strong>Technology</strong><br />

and Enterprise <strong>FrameWork</strong>.<br />

Sample statechart diagram<br />

<br />

18<br />

The window below shows a sample strategic planning diagram.<br />

Chapter 18: Statechart Models (UML)<br />

197


States<br />

States<br />

Creating a state<br />

Chapter 18: Statechart Models (UML)<br />

198<br />

A state represents a condition that describes an object for some<br />

finite amount of time.<br />

To create a state:<br />

1 In the UML Statechart Diagram Tools tool folder, click and hold<br />

on the State tool.<br />

2 Drag into your statechart diagram window and release the<br />

mouse button where you want to place the state graphic.<br />

3 Type a name for the state. Then click on the window<br />

background to close the edit box.


State actions and internal transitions<br />

State actions and internal transitions<br />

Entry, do, and exit actions While an object is in a given state, it can cause or be affected by a<br />

variety of actions, including:<br />

■ Entry actions, which are performed once immediately after<br />

the object transitions to the state<br />

■ Do actions, which are ongoing actions performed while the<br />

object is in the state<br />

■ Exit actions, which are performed once immediately before the<br />

object transitions out of the state<br />

Internal transitions An object can undergo an internal transition while in a given<br />

state. When an internal transition occurs, the exit and entry<br />

actions for the state are not invoked. An internal transition differs<br />

from a self-transition, in which the object actually exits and<br />

reenters the same state, thereby invoking the exit and entry<br />

actions for the state.<br />

Form for states<br />

Transitions<br />

To specify entry, do, and exit actions and internal transitions for a<br />

state, composite state, or a submachine state, you use the Basic<br />

State Information form.<br />

A transition shows the ways in which objects can change from one<br />

state to another.<br />

Chapter 18: Statechart Models (UML)<br />

199


Creating a transition<br />

Creating a transition<br />

Chapter 18: Statechart Models (UML)<br />

200<br />

To create a transition:<br />

1 In the UML Statechart Diagram Tools tool folder, click and hold<br />

on the Transition tool.<br />

2 Drag to the state from which the object transitions and release<br />

the mouse button. Then click on the state to which the object<br />

transitions.<br />

Events, actions, and guards<br />

Events and actions In the context of a state model, an event is an occurrence that<br />

triggers a transition. For example, the event Account Reconciled<br />

would cause an object in the Bank Account class to transition from<br />

the Frozen state to the Active state. Additionally, the transition<br />

triggered by an event can invoke an action. For example, the<br />

transition of a Bank Account object from the initial state to the<br />

Active state, triggered by the Initial Deposit event, would invoke the<br />

Post Deposit action.<br />

Guards Some events trigger a transition only under certain circumstances.<br />

For example, the Frozen 90 Days event would cause a Bank Account<br />

object to transition from the Frozen state to the final state only if<br />

the condition Appeal Denied is true. A boolean condition that<br />

determines whether an event triggers a transition is called a<br />

guard.<br />

Form for transitions<br />

To associate events, actions, and guards <strong>with</strong> transitions, you use<br />

the State Transition Information form. The information you supply<br />

on this form is stored in the KnowledgeBase, but is not<br />

automatically displayed in the modeling window. You can use<br />

freestanding text to represent this information textually in the<br />

window.


Synchronization bars<br />

Initial states<br />

Synchronization bars<br />

A synchronization bar is a complex transition, drawn<br />

horizontally or vertically, indicating either the simultaneous<br />

convergence of multiple transitions into a single source state or the<br />

simultaneous divergence of a single transition into multiple source<br />

states.<br />

To create a synchronization bar:<br />

1 In the UML Statechart Diagram Tools tool folder, click and hold<br />

on the horizontal Synchronization Bar tool if you want to draw<br />

the graphic horizontally in your diagram, or the vertical<br />

Synchronization Bar tool if you want to draw the graphic<br />

vertically.<br />

2 Drag into your statechart diagram window and release the<br />

mouse button where you want to place the synchronization bar<br />

graphic.<br />

3 Type a name for the synchronization bar. Then click on the<br />

window background to close the edit box.<br />

4 Optionally, use the Transition tool to show the simultaneous<br />

convergence of multiple transitions into a single source state or<br />

the simultaneous divergence of a single transition into multiple<br />

source states.<br />

An initial state indicates a starting point for a state model (for<br />

example, the point at which the object is created). The object is<br />

never actually in an initial state. Rather, the initial state provides<br />

an anchor for the transition to the first state in a series of state<br />

transitions.<br />

Chapter 18: Statechart Models (UML)<br />

201


Final states<br />

Final states<br />

Chapter 18: Statechart Models (UML)<br />

202<br />

To create an initial state:<br />

1 In the UML Statechart Diagram Tools tool folder, click and hold<br />

on the Initial State tool.<br />

2 Drag into your statechart diagram window and release the<br />

mouse button where you want to place the initial state graphic.<br />

3 Type a name for the initial state. Then click on the window<br />

background to close the edit box.<br />

A final state indicates the ending point for a state model (for<br />

example, the point at which the object is terminated). As <strong>with</strong> an<br />

initial state, the object is never actually in a final state. Rather, the<br />

final state provides a terminus for the transition from the last state<br />

in a series of state transitions.<br />

To create a final state:<br />

Composite states<br />

1 In the UML Statechart Diagram Tools tool folder, click and hold<br />

on the Final State tool.<br />

2 Drag into your statechart diagram window and release the<br />

mouse button where you want to place the final state graphic.<br />

3 Type a name for the final state. Then click on the window<br />

background to close the edit box.<br />

A composite state is a state that encompasses two or more other<br />

states, called substates. When an object is in a composite state, it<br />

is in at least one of the substates as well. The relationship between


Submachine states<br />

Submachine states<br />

a composite state and its substates is similar to the relationship<br />

between a superclass and its subclasses in a complete partition.<br />

To create a composite state and connect it to substates:<br />

1 In the UML Statechart Diagram Tools tool folder, click and hold<br />

on the Composite State tool.<br />

2 Drag into your statechart diagram window and release the<br />

mouse button where you want to place the composite state<br />

graphic.<br />

3 Type a name for the composite state. Then click on the window<br />

background to close the edit box.<br />

4 In the UML Statechart Diagram Tools tool folder, click and hold<br />

on the Substates tool.<br />

5 Drag into your statechart diagram window and release the<br />

mouse button.<br />

6 While holding down the left mouse button, drag a box around<br />

the substates. Thren click on the composite state.<br />

A submachine state is a complex state that is described by<br />

another statechart diagram. After you have created a submachine<br />

state, you can build and anchor to it another statechart diagram<br />

that describes its structure in greater detail.<br />

Creating a submachine state<br />

To create a submachine state:<br />

1 In the UML Statechart Diagram Tools tool folder, click and hold<br />

on the Submachine State tool.<br />

Chapter 18: Statechart Models (UML)<br />

203


Form for submachine states<br />

Chapter 18: Statechart Models (UML)<br />

204<br />

2 Drag into your statechart diagram window and release the<br />

mouse button where you want to place the submachine state<br />

graphic.<br />

3 Type a name for the submachine state. Then click on the<br />

window background to close the edit box.<br />

Form for submachine states<br />

In addition to the Basic State Information form, you can use the<br />

Basic Submachine State Information form to view and modify<br />

information about a submachine state.


7HFKQRORJ\ $UFKLWHFWXUH<br />

0RGHOV<br />

About technology architecture models<br />

Description <strong>Technology</strong> architecture models identify resources and the<br />

dependent and cooperative relationships among them. You can use<br />

technology architecture models, for example, to represent the<br />

infrastructure of the technical assets in your enterprise or to<br />

describe the hardware and software requirements of an application.<br />

Building technology<br />

architecture models<br />

To build a technology architecture model, you typically create a<br />

technology architecture diagram using tools in the <strong>Technology</strong><br />

Architecture Diagram Tools tool folder.<br />

Support Direct support for technology architecture models is provided in all<br />

three <strong>FrameWork</strong> products.<br />

Sample technology architecture diagram<br />

Sample diagram The window below shows a sample technology architecture<br />

diagram. The name of this diagram is OrderAdmin System.<br />

19<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

205


Sample technology architecture diagram<br />

Types of resources The OrderAdmin diagram shows the technology resources used in<br />

the process of creating and tracking orders. The focus of the<br />

diagram is the OrderAdmin System application, a software<br />

resource. Most of the other resources used in order processing are<br />

software, like the Order DB database and the OrbixWeb development<br />

environment. However, two of the resources, the NT Server and<br />

Desktop PC machines, are hardware.<br />

Resource relationships The OrderAdmin diagram also shows the ways in which the order<br />

processing resources interact. The OrderAdmin System and Act! 3.0<br />

applications work together in a cooperative relationship, as do the<br />

Windows NT and Windows 95 operating systems. The other<br />

connections shown in the diagram represent dependencies among<br />

the resources. For example, the Order DB, Windows NT, OrbixWeb<br />

and PartsForJava resources all serve to support the OrderAdmin<br />

System application.<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

206


Resources<br />

Resources<br />

About resources Resources represent assets that can be used <strong>with</strong>in your<br />

enterprise to add value to activities and processes. A resource can<br />

be:<br />

Cooperative resource<br />

relationships<br />

Supporting resource<br />

relationships<br />

■ A hardware resource such as a particular network server or<br />

the second-floor printer<br />

■ A software resource such as Windows 95 or a particular<br />

CORBA compiler<br />

■ A human resource such as an employee <strong>with</strong> knowledge of<br />

labor law or a consultant <strong>with</strong> C++ programming expertise<br />

■ An enterprise resource such as the company phone system or<br />

a confidential customer list<br />

Resources belong to the *ENTERPRISE RESOURCE class.<br />

Cooperative resource relationships show how resources work<br />

together. In a cooperative relationship, each resource adds value<br />

and neither depends on the other (for example, a drawing program<br />

and a desktop publishing program that can import the pictures<br />

created by that program).<br />

Supporting resource relationships show how resources depend<br />

on each other. In a supporting relationship, one resource requires<br />

the other in order to be of value (for example, an application<br />

program and the operating system it runs under).<br />

Resource names Resources can be specific or generic. The name of a specific<br />

resource is usually the same as the name of the real object it<br />

represents (for example, the Act! 3.0 application or the consultant<br />

Susan Gold). The name of a generic resource is typically a noun that<br />

identifies the resource type (for example, Database Management<br />

System or C++ Consultant).<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

207


Information about resources<br />

Information about resources<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

208<br />

In addition to its name, a resource can have the following<br />

properties in an OOAD context:<br />

■ The resource type (resource type association end). Framework<br />

comes <strong>with</strong> several predefined resource types, such as<br />

Hardware, Human, and Packaged Application. You can also create<br />

new ones to meet the needs of your enterprise.<br />

■ Other resources <strong>with</strong> which the resource works cooperatively<br />

(works <strong>with</strong> association end).<br />

■ The other resources that depend on the resource (capabilities<br />

supported association end).<br />

■ Classes whose objects serve as input to the resource (information<br />

used association end). For information about classes, see<br />

“Model classes” in Chapter 5, “Business Object Models.”<br />

■ The age of the resource (age attribute).<br />

■ The stage of the resource <strong>with</strong>in its life cycle (lifecycle stage<br />

attribute). For example, the life cycle stage of a software<br />

application might be Beta or Final Release.<br />

■ The amount of money the resource initially cost (purchase cost<br />

attribute).<br />

■ The cost of using the resource (use cost attribute). For example,<br />

the use cost for a consultant might be $1000/Day. The use cost<br />

for a photocopy machine might be $.05/Page.<br />

■ In workflow modeling, the unit of time to which the use cost<br />

applies (use cost time unit association end). Framework comes<br />

<strong>with</strong> several predefined time units, such as Hour, Day, and Year.<br />

You can also create new ones to meet the needs of your<br />

enterprise.


Creating resources<br />

Creating a resource To create a resource:<br />

Creating a cooperative<br />

resource relationship<br />

Creating resources<br />

When you specify a value for the use cost time unit association<br />

end, you should omit the measurement unit from the value of<br />

the use cost attribute.<br />

■ Assessment of the quality of the resource (quality attribute).<br />

For example, the quality of a software application might be<br />

Excellent, Good, Fair, or Poor.<br />

1 In the <strong>Technology</strong> Architecture Diagram Tools tool folder, click<br />

and hold on the Enterprise Resource, Software Resource,<br />

Hardware Resource, or Human Resource tool, depending on the<br />

type of resource you want to create.<br />

2 Drag into your technology architecture diagram window and<br />

release the mouse button where you want to place the resource<br />

graphic.<br />

3 Type a name for the resource. Then click on the window<br />

background to close the edit box.<br />

Tip<br />

You can also use a resource tool to create a resource and at the<br />

same time connect it to a supporting resource. To do this, drag<br />

from the tool onto the supporting resource and click where you<br />

want to place the graphic for the new resource.<br />

To create a cooperative relationship between two resources:<br />

1 In the <strong>Technology</strong> Architecture Diagram Tools tool folder, click<br />

and hold on the Works With tool.<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

209


Forms for resources<br />

Creating a supporting<br />

resource relationship<br />

Forms for resources<br />

The Enterprise Resource<br />

Properties form<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

210<br />

2 Drag onto one of the resources in the cooperative relationship (it<br />

doesn’t matter which one) and release the mouse button.<br />

3 Click on the other resource in the relationship.<br />

To create a supporting relationship between two resources:<br />

1 In the <strong>Technology</strong> Architecture Diagram Tools tool folder, click<br />

and hold on the Supports tool.<br />

2 Drag onto the supporting resource and release the mouse<br />

button.<br />

3 Click on the dependent resource.<br />

You can use the Enterprise Resource Properties form to view and<br />

modify basic information about a resource. The sample form below<br />

shows information about the OrderAdmin System application.


The Enterprise Resource<br />

Relationships form<br />

Forms for resources<br />

You can use the Enterprise Resource Relationships form to view<br />

and modify the relationships a resource has <strong>with</strong> other objects. The<br />

sample form below shows the relationships in which the<br />

OrderAdmin System application participates.<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

211


Locations in technology architecture diagrams<br />

Locations in technology architecture<br />

diagrams<br />

About locations A location is a place where resources are based. For example, a<br />

location can be the city in which a network server is resides, the<br />

office in which a person sits, or the cubicle in which a printer is<br />

installed.<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

212<br />

Locations belong to the *LOCATION class.<br />

Location names The name of a location is usually the same as the name of the real<br />

place it represents (for example, San Francisco or Room 331). If the<br />

real place is unnamed, the location name should clearly identify<br />

where it is (for example, 2nd-Floor Main Hallway).


Locations in technology architecture diagrams<br />

Creating a location To create a location for a resource in a technology architecture<br />

diagram:<br />

Connecting a resource to a<br />

location<br />

1 In the <strong>Technology</strong> Architecture Diagram Tools tool folder, click<br />

and hold on the Location tool.<br />

2 Drag onto the resource for which you’re creating the location<br />

and release the mouse button.<br />

3 Click where you want to place the location graphic.<br />

4 Type the name of the location. Then click on the window<br />

background to close the edit box.<br />

Tip<br />

You can also use the Location tool to create a location that’s<br />

not connected to a resource. Afterwards, you can connect it to a<br />

resource either through a form or by using the Located At tool, as<br />

described below.<br />

To connect a resource to a location:<br />

1 In the <strong>Technology</strong> Architecture Diagram Tools tool folder, click<br />

and hold on the Located At tool.<br />

2 Drag onto the resource and release the mouse button.<br />

3 Click on the location.<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

213


Locations in technology architecture diagrams<br />

Chapter 19: <strong>Technology</strong> Architecture Models<br />

214


8VH &DVH 0RGHOV 80/<br />

About use case models<br />

Description Use case models show the types of interactions that can occur<br />

between a subsystem and the users of the subsystem. Within a use<br />

case model, interactions are represented nonsequentially, placing<br />

the focus on their structure rather than their dynamic behavior.<br />

This focus enables the model to present an easy-to-understand view<br />

of the requirements of an existing or proposed subsystem.<br />

Building use case models To build a use case model, you create a use case diagram. You use<br />

the tools in the UML Use Case Diagram Tools tool folder to lay out<br />

the structure of the subsystem graphically in the diagram. Then<br />

you use forms to supplement the information in your diagram.<br />

Support Direct support for use case models is provided in all three<br />

<strong>FrameWork</strong> products.<br />

Sample use case diagram<br />

<br />

20<br />

The window below shows a sample use case diagram. The diagram<br />

shows the usage scenarios of the subsystem based on the Sell<br />

Products activity. The Sell Products activity has two use cases,<br />

Establish Initial Contact and Project Account Revenue, and a<br />

composite use case, Qualify Leads.<br />

Chapter 20: Use Case Models (UML)<br />

215


Subsystems<br />

Subsystems<br />

Chapter 20: Use Case Models (UML)<br />

216<br />

The diagram includes three actors, Salesperson, Sales Manager, and<br />

Direct Sales Customer. The Direct Sales Customer actor has a<br />

bidirectional communication <strong>with</strong> the Establish Initial Contact use<br />

case and a communication <strong>with</strong> the Qualify Leads composite use<br />

case in which messages flow in one direction from the use case to<br />

the actor. The Salesperson actor has bidirectional communications<br />

<strong>with</strong> both Establish Initial Contact and Qualify Leads, while the Sales<br />

Manager actor has a bidirectional communication <strong>with</strong> the Project<br />

Account Revenue use case and, like Direct Sales Customer, a<br />

communication <strong>with</strong> Qualify Leads in which messages flow in one<br />

direction from the use case to the actor.<br />

About subsystems A subsystem is an organized, integrated group of processes and/or<br />

resources that, as a whole, serves some purpose <strong>with</strong>in an<br />

enterprise. <strong>FrameWork</strong> also recognizes individual activities,<br />

process steps, and resources as subsystems.


Creating a subsystem and connecting it to use cases<br />

Subsystem information In addition to its name, you can supply the following information<br />

for a subsystem<br />

■ Projects. You can identify the enterprise or enterprises for<br />

which the subsystem serves as a resource.<br />

■ A textual description of the subsystem that provides more<br />

details about the role it plays <strong>with</strong>in an enterprise.<br />

Creating a subsystem and connecting it to use<br />

cases<br />

The Susbsystem tool creates a subsystem that you can connect to<br />

one or more use cases. The Subsystem Use Cases tool connects the<br />

subsystem to those use cases.<br />

To create a subsystem and connect it to one or more use cases:<br />

1 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Subsystem tool.<br />

2 Drag into your use case diagram window and release the mouse<br />

button where you want to place the subsystem graphic.<br />

3 Type a name for the subsystem. Then click on the window<br />

background to close the edit box.<br />

4 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Subsystem Use Cases tool.<br />

5 Drag into your use case diagram window and release the mouse<br />

button.<br />

6 While holding down the right mouse button, drag a box around<br />

the use cases you want to connect to the subsystem and release<br />

the mouse button.<br />

Chapter 20: Use Case Models (UML)<br />

217


Form for subsystems<br />

Form for subsystems<br />

The Basic Subsystem<br />

Information form<br />

Chapter 20: Use Case Models (UML)<br />

218<br />

7 Click on the subsystem to which you want to connect the use<br />

cases.<br />

You can use the Basic Subsystem Information form to view and<br />

modify information about a subsystem. The sample form below<br />

shows information about the Sell Products activity in the sample use<br />

case diagram shown earlier in this chapter.


Use cases<br />

Use cases<br />

About use cases A use case represents a type of interaction that can occur between<br />

a subsystem and its users (called actors). A use case presents a<br />

static view of an interaction <strong>with</strong>out showing the sequence of<br />

actions that comprise the interaction. You can use another type of<br />

model, such as an activity model, to show the dynamic behavior of a<br />

use case.<br />

Composite use cases A use case that incorporates one or more additional subsystems is<br />

called a composite use case. You can anchor additional use case<br />

diagrams to a composite use case to show the interactions for these<br />

subsystems.<br />

Communications between<br />

use cases and actors<br />

Extending and using use<br />

cases<br />

Instances of a use case and an actor may communicate <strong>with</strong> each<br />

other. These communications take the form of requests that an<br />

actor makes of a subsystem to perform a service and the responses<br />

that a use case makes to an actor when performing these services.<br />

Two use cases may be connected to each other through either an<br />

extends or a uses relationship. An extends relationship connects<br />

one use case to another that has the same behaviors, plus some of<br />

its own. In this type of relationship, the use case <strong>with</strong> the<br />

additional behaviors is said to extend the other use case. The<br />

relationship between one use case and another that extends it is<br />

similar to the relationship between a superclass and a subclass.<br />

A uses relationship connects one use case to another that includes<br />

its behaviors. The relationship between one use case and another<br />

that it uses is similar to the relationship between a process and a<br />

subprocess.<br />

Use case information In addition to its name, you can supply the following information<br />

for a use case:<br />

■ Use case steps. A use case step is an action that causes the<br />

invocation of another use case.<br />

Chapter 20: Use Case Models (UML)<br />

219


Creating and relating use cases<br />

Chapter 20: Use Case Models (UML)<br />

220<br />

■ A scenario description that provides a textual account of<br />

situations in which the type of interaction represented by the<br />

use case occurs.<br />

■ Business rules<br />

■ Initiating business events<br />

■ Preconditions<br />

■ Postconditions<br />

■ Snapshot scenarios<br />

Creating and relating use cases<br />

Creating a use case or<br />

composite use case<br />

Creating an extends<br />

relationship<br />

To create a use case or composite use case:<br />

1 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Use Case tool or Composite Use Case tool.<br />

2 Drag into your use case diagram window and release the mouse<br />

button where you want to place the use case or composite use<br />

case graphic.<br />

3 Type a name for the use case or composite use case. Then click<br />

on the window background to close the edit box.<br />

To create an extends relationship:<br />

1 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Extends tool.<br />

2 Move your cursor to the extending use case and release the<br />

mouse button. Then click on the extended use case.


Creating a uses<br />

relationship<br />

Forms for use cases<br />

The Basic Use Case<br />

Information form<br />

To create a uses relationship:<br />

Forms for use cases<br />

1 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Uses tool.<br />

2 Move your cursor to the using use case and release the mouse<br />

button. Then click on the use case that is used.<br />

You can use the Basic Use Case Information form to view and<br />

modify information about a use case or a composite use case. The<br />

sample form below shows information about the Establish Initial<br />

Contact use case in the sample use case diagram shown earlier in<br />

this chapter.<br />

Chapter 20: Use Case Models (UML)<br />

221


Forms for use cases<br />

The Use Case<br />

Documentation form<br />

Chapter 20: Use Case Models (UML)<br />

222<br />

You can use the Use Case Documentation form to view and modify<br />

information about a use case. The sample form below shows<br />

information about the Establish Initial Contact use case.


The Composite Use Case<br />

Objects form<br />

Forms for use cases<br />

You can use the Composite Use Case Objects form to view and<br />

modify information about the objects incorporated by a composite<br />

use case. The sample form below shows information about the<br />

objects contained Qualify Leads composite use case.<br />

Chapter 20: Use Case Models (UML)<br />

223


Actors<br />

Actors<br />

About actors An actor identifies a role in which people, jobs, organizations, or<br />

even other subsystems can interact <strong>with</strong> use cases. Actors must be<br />

external to each use case <strong>with</strong> which they interact.<br />

Chapter 20: Use Case Models (UML)<br />

224<br />

Tip<br />

You can copy organizations, jobs, and resources from other<br />

models into your use case diagrams to serve as actors. For<br />

example, the Direct Sales Customer organization functions as an<br />

actor in the sample use case diagram shown earlier in this chapter.<br />

Actor information In addition to its name, you can supply the following information<br />

for an actor:<br />

Creating an actor<br />

■ The messages sent from an actor to a use case. These messages,<br />

which are defined by bidirectional communications or<br />

communications from the actor to the use case, take the form of<br />

requests that the actor sends to the subsystem to perform some<br />

specified service or action.<br />

■ The messages sent from a use case to an actor. These messages,<br />

which are defined by bidirectional communications or<br />

communications from the use case to the actor, take the form of<br />

requests that the actor receives from the subsystem to perform<br />

some specified service or action.<br />

To create an actor:<br />

1 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Actor tool.<br />

2 Drag into your use case diagram window and release the mouse<br />

button where you want to place the actor graphic.


Form for actors<br />

The Basic Actor<br />

Information form<br />

Communications<br />

3 Type a name for the actor. Then click on the window<br />

background to close the edit box.<br />

Form for actors<br />

You can use the Basic Actor Information form to view and modify<br />

information about an actor. The sample form below shows<br />

information about the Salesperson actor in the sample use case<br />

diagram shown earlier in this chapter.<br />

Communications establish relationships between actors and use<br />

cases. A communication can be:<br />

■ A Communication from Actor, in which messages flow from<br />

the actor to the use case<br />

■ A Communication from Use Case, in which messages flow<br />

from the use case to the actor<br />

Chapter 20: Use Case Models (UML)<br />

225


Communications from actors and use cases<br />

Chapter 20: Use Case Models (UML)<br />

226<br />

■ A Bidirectional Communication, in which messages flow<br />

both ways between the actor and the use case<br />

Communication information You can supply the following information for a communication:<br />

■ The messages sent from an actor to a use case. These messages,<br />

which are defined by bidirectional communications or<br />

communications from the actor to the use case, take the form of<br />

events that the actor requests the subsystem to perform.<br />

■ The messages sent from a use case to an actor. These messages,<br />

which are defined by bidirectional communications or<br />

communications from the use case to the actor, take the form of<br />

events that the subsystem requests the actor to perform.<br />

Communications from actors and use cases<br />

To create a communication from an actor:<br />

1 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Communication from Actor tool.<br />

2 Move your cursor to the communicating actor and release the<br />

mouse button. Then click on the use case that the actor<br />

communicates <strong>with</strong>.<br />

To create a communication from a use case:<br />

1 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Communication from Use Case tool.<br />

2 Move your cursor to the communicating use case and release<br />

the mouse button. Then click on the actor that the use case<br />

communicates <strong>with</strong>.


Bidirectional communications<br />

To create a bidirectional communication:<br />

Form for communications<br />

The Communication<br />

Information form<br />

Bidirectional communications<br />

1 In the UML Use Case Diagram Tools tool folder, click and hold<br />

on the Bidirectional Communication tool.<br />

2 Move your cursor to either the communicating actor or use case<br />

and release the mouse button. Then click on the opposing<br />

communicating actor or use case.<br />

You can use the Communication Information form to view and<br />

modify information about a communication from an actor, a<br />

communication from a use case or a bidirectional communication.<br />

The sample form below shows information about the bidirectional<br />

communication between the Salesperson actor and the Manage<br />

Account Information use case in the sample use case diagram shown<br />

earlier in this chapter.<br />

Chapter 20: Use Case Models (UML)<br />

227


Form for communications<br />

Chapter 20: Use Case Models (UML)<br />

228


Special Characters<br />

#relaxed_classes association 101<br />

A<br />

Abort events 143–??<br />

Actions<br />

about 200<br />

do 199<br />

entry 199<br />

exit 199<br />

Activities<br />

about 35–??<br />

Activity models<br />

about 33<br />

activities 35–??<br />

building 33<br />

as closed systems 46–??<br />

complete partitions ??–44<br />

incomplete partitions 44–??<br />

Argument assignments<br />

about 149–150<br />

Arguments<br />

about 124<br />

as base input 148–149<br />

default value of 150<br />

defining 125–??<br />

as eval function input 152–153<br />

eval function input for 151–153<br />

eval functions for 150–151<br />

overriding default value of 150<br />

Asserted functions ??–58, ??–94<br />

Associations<br />

#relaxed_classes 101<br />

as asserted functions ??–58, ??–94<br />

cardinality 58–??, 94–??<br />

invariant in n-place relations 65<br />

variance 59–??, 95–??<br />

Attributes<br />

as asserted functions ??–58, ??–94<br />

cardinality 58–??, 94–??<br />

variance 59–??, 95–??<br />

B<br />

,QGH[<br />

Base class 124<br />

Base functions<br />

about 146–147<br />

Base input<br />

about 147–149<br />

Base object<br />

as base input 147–148<br />

Index<br />

229


as eval function input 151–152<br />

Base Trigger Rule Information form 146<br />

Basic Operation Information form 125–??<br />

Binary components 109<br />

Building<br />

activity models 33<br />

collaboration models 103–??<br />

component models 107–??<br />

deployment models 115–??<br />

object models 89–??<br />

operation models 123–??<br />

process models 137–??<br />

sequence models 193–??<br />

state models 197–??<br />

technology architecture models 205–??<br />

C<br />

Cardinality<br />

about 58–??, 94–??<br />

setting 63, 64, 95<br />

Classes<br />

base for operations 124<br />

generalizations 76, 96<br />

intersections 76, 96<br />

for n-place relations ??–65<br />

partitions 76, 96<br />

range for operations 124<br />

Classify operation<br />

arguments for 149<br />

Closed systems 46–??<br />

Code generation<br />

relaxed constraints 101<br />

Collaboration models<br />

about 103<br />

building 103–??<br />

Complete partitions<br />

activity ??–44<br />

class 76–??, 96–??<br />

Index<br />

230<br />

event 143–??<br />

Component interfaces<br />

in component models 110<br />

Component models<br />

about 107–108<br />

binary components 109<br />

building 107–??<br />

component interfaces 110<br />

executable components 109<br />

source code components 108<br />

Concurrency 144–??<br />

Connect operation<br />

arguments for 150<br />

Constraints<br />

creating 100<br />

modifying 74, 100<br />

nonempty uniqueness 74, 100<br />

relaxing 101–102<br />

single-function 100<br />

uniqueness 73, 99<br />

Constraints menu option 75, 101<br />

Constraints window 75, 101<br />

Cooperative resource relationships<br />

about 210<br />

Create operation<br />

arguments for 149<br />

Creating<br />

constraints 100<br />

methods 125–??<br />

n-place relations 64–65<br />

ordering relations 66–67<br />

symmetric relations 65–66<br />

D<br />

Defining<br />

arguments 125–??<br />

Deployment models<br />

about 115


uilding 115–??<br />

Dialog boxes<br />

Select Association 67<br />

Disconnect operation<br />

arguments for 150<br />

Do actions 199<br />

Domain<br />

methods 125<br />

E<br />

Enterprise resources 207<br />

Entry actions 199<br />

Eval functions<br />

about 150–151<br />

input to 151–153<br />

Events<br />

abort 143–??<br />

external 142–??<br />

failed 142–??<br />

generalizations 143<br />

goal 142–143<br />

operation completion 142–??<br />

partitions 143<br />

process completion 142–??<br />

process initiation 141–??<br />

in process models 138<br />

start 142–??<br />

in state models 200–??<br />

success 142<br />

types of 141<br />

Executable components<br />

in component models 109<br />

Exit actions 199<br />

External events<br />

in process models 142–??<br />

F<br />

Failed events 142–??<br />

Filters<br />

about 154–??<br />

Forms<br />

Base Trigger Rule Information 146<br />

Basic Operation Information 125–??<br />

Functions<br />

asserted ??–58, ??–94<br />

base 146–147<br />

cardinality 58–??, 94–??<br />

eval 150–151<br />

invariant 59–??, 95–??<br />

variant 59–??, 95–??<br />

G<br />

Generalizations<br />

class 76, 96<br />

event 143, 144–??<br />

product 43–??<br />

Goal events<br />

in process models 142–143<br />

Guards<br />

about 200–??<br />

H<br />

Hardware resources 207<br />

Human resources 207<br />

I<br />

Incomplete partitions<br />

activity 44<br />

class 76–??, 96–??<br />

event 143–??<br />

product 44–??<br />

Inheritance 76–??, 96–??<br />

Index<br />

231


Internal transitions 199–??<br />

Intersections 76, 96<br />

Invariant functions 59–??, 65, 95–??<br />

L<br />

Lifelines 195<br />

M<br />

Methods<br />

about 125<br />

creating 125–??<br />

domain 125<br />

multiple 125–??<br />

Models<br />

activity 33–??<br />

collaboration 103–??<br />

component 107–??<br />

deployment 115–??<br />

object 49–??<br />

operation 123–??<br />

process 137–??<br />

sequence 193–??<br />

state 197–??<br />

technology architecture 205–??<br />

Modifying<br />

constraints 74, 100<br />

Multiple methods 125–??<br />

N<br />

Nonempty uniqueness constraints 74, 100<br />

N-place relations 64–65<br />

O<br />

Object modeling toolbar<br />

about 89<br />

Object models<br />

Index<br />

232<br />

about 49–89<br />

associations ??–64, ??–64, ??–95<br />

attributes ??–64, ??–64, ??–95<br />

building 89–??<br />

complete partitions 76–??, 96–??<br />

generalizations 76, 96<br />

incomplete partitions 76–??, 96–??<br />

intersections 76, 96<br />

partitions 76, 96<br />

Objects<br />

base 147–148<br />

for operations 145–149<br />

underlying 145–146<br />

Operation completion events 142–??<br />

Operation models<br />

about 123<br />

arguments 124, 125–??<br />

base class 124<br />

building 123–??<br />

methods 125, 125–??<br />

range class 124<br />

Operation references<br />

about 138<br />

arguments for 149<br />

Operations<br />

argument assignments for 149–153<br />

arguments 124, 125–??<br />

base class 124<br />

completing 142–??<br />

interfaces 123<br />

methods 125, 125–??<br />

objects for 145–149<br />

in process models 138<br />

range class 124<br />

Ordering relations 66–67<br />

P<br />

Parallel trigger rules 145–??


Parent/child relationships 66<br />

Partitions<br />

class 76, 96<br />

event 143<br />

product 43–??<br />

Primitive operations<br />

about 139–??<br />

Process completion events 142–??<br />

Process initiation events 141–??<br />

Process models<br />

about 137<br />

building 137–??<br />

complete partitions 143–??<br />

event types 141<br />

events 138<br />

filters 154–??<br />

generalizations 143, 144–??<br />

incomplete partitions 143–??<br />

operation references 138<br />

operations 138<br />

parallel trigger rules 145–??<br />

partitions 143<br />

primitive operations 139–??<br />

trigger rules 138, 144–??<br />

Processes<br />

completing 142–??<br />

starting 141–??<br />

Products<br />

generalizations 43–??<br />

partitions 43–??<br />

R<br />

Range<br />

for operations 124<br />

Reclassify operation<br />

arguments for 149<br />

Reconnect operation<br />

arguments for 150<br />

Relations<br />

n-place 64–65<br />

ordering 66–67<br />

symmetric 65–66<br />

Relaxing constraints 101–102<br />

Resources<br />

about 207<br />

cooperative relationships 210<br />

S<br />

Select Association dialog box 67<br />

Self-transitions 199<br />

Sequence models<br />

about 193<br />

building 193–??<br />

lifelines 195<br />

Set Cardinality menu option 63, 64, 95<br />

Set Variance menu option 63, 64, 95<br />

Setting<br />

cardinality 63, 64, 95<br />

variance 63, 64, 95<br />

Single-function constraints 100<br />

Software resources 207<br />

Source code components 108<br />

Start events<br />

in process models 142–??<br />

State models<br />

about 197<br />

actions 199, 200<br />

building 197–??<br />

events 200–??<br />

guards 200–??<br />

internal transitions 199–??<br />

self-transitions 199<br />

States<br />

actions 199<br />

internal transitions 199–??<br />

self-transitions 199<br />

Index<br />

233


Subclasses 76–??, 96–??<br />

Subevents 143–??<br />

Subproducts 43–??<br />

Substates<br />

transitions between 199–??<br />

Success events 142<br />

Superclasses<br />

about 76–??, 96–??<br />

Superevents 143–??<br />

Superproducts 43–??<br />

Symmetric relations 65–66<br />

T<br />

Team architecture models<br />

cooperative resource relationships 210<br />

resources 207<br />

<strong>Technology</strong> architecture models<br />

about 205<br />

building 205–??<br />

Temporary windows<br />

Constraints 75, 101<br />

Transitions<br />

internal 199–??<br />

self 199<br />

Trigger rules<br />

about 138, 144, 145–??<br />

base functions 146–147<br />

base input 147–149<br />

concurrent operations 144–??<br />

parallel 145–??<br />

U<br />

UML<br />

collaboration models 103–??<br />

component models 107–??<br />

deployment models 115–??<br />

sequence models 193–??<br />

Index<br />

234<br />

state models 197–??<br />

Underlying object<br />

about 145–146<br />

as default eval function input 151<br />

as base input 147<br />

as default argument value 150<br />

Uniqueness constraints<br />

about 73, 99<br />

nonempty 74, 100<br />

V<br />

Variance<br />

about 59–??, 95–??<br />

setting 63, 64, 95<br />

Variant functions 59–??, 95–??

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!