cours slides

180

Click here to load reader

Upload: jean-philippe-coel

Post on 21-Apr-2015

133 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 0 : About This Course

0 - 2

Intended Audience

The intended audience for this course is software developers who architect and develop enterprise applications, and who:

Use the Unified Modeling Language (UML) for object-oriented analysis and design (OOAD)

Develop Java™ applications and DB

Apply design patterns in their system design

Work as part of a team of developers

Page 2: Cours Slides

0 - 3

Course Goals and Objectives

After completing this course, you will be able to perform the following tasks with IBM® Rational® Software Architect:

Navigate the user interface and create perspectives

Create new UML Model projects

Create structural and behavioral UML diagrams

Compare, merge, combine, and publish diagrams

Apply patterns and transformations Java and DB

Create traceability to IBM® Rational® RequisitePro® and IBM®WebSphere® Business Modeler

RUP (Rational Unified Process)

0 - 4

Course Agenda

Module 0 : About This Course

Module 1 : Getting Started with Rational Software Architect

Module 2 : Model Structure and Templates

Module 3 : Creating UML Diagrams

Module 4 : Creating UML Diagrams of System Structure

Module 5 : Creating UML Diagrams of System Behavior

Module 6 : Team Development

Module 7 : Patterns, Transformations, and Visualization

Module 8 : Traceability, Model Querying, and Model Validation

Module 9 : Dexis Case with UML

Module 10 : CARSID Case with RUP

Page 3: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 1 : Getting Started with Rational Software Architect

1 - 2

Module Objectives

After completing this module, you will be able to:

Describe the underlying framework behind all IBM®Rational® Software Delivery Platform tools.

Navigate the basic user interface of any IBM Rational Software Delivery Platform tool.

Create, modify, and save a Perspective

Create and modify a Project

Describe the basic purpose of Rational Software Architect

Page 4: Cours Slides

1 - 3

The IBM Rational Software Delivery Platform The IBM Rational Software Delivery Platform is a complete solution for developing software and software-based systems.

Most platform tools are based on the Eclipse framework, which:

Simplifies development

Integrates the enterprise environment

Unifies technologies into a single development environment

Delivers flexibility and choice

1 - 4

What is Eclipse?

Eclipse is a platform for building, deploying, and managing software across the lifecycle.

The Eclipse platform encourages rapid development of integrated features based on a plug-in model.

The Eclipse platform user interface is featured in all IBM Rational Software Delivery Platform tools.

Page 5: Cours Slides

1 - 5

The WorkspaceWhen you open any tool in the IBM Software Delivery Platform for the first time, you will see the Workspace Launcher dialog.

A workspace is the location where you store your work.

Any resources (projects, folders, and files) that you are working on are available in this workspace.

The workspace itself is a directory, which defaults to the name workspace. You may locate it anywhere you want. It may contain either new projects as sub-directories, or just references to projects that exist elsewhere on the file system.

The workspace itself is a directory, which defaults to the name workspace. You may locate it anywhere you want. It may contain either new projects as sub-directories, or just references to projects that exist elsewhere on the file system.

1 - 6

The Welcome View

Basic User Interface: The Welcome ViewAfter the workspace dialog, the Welcome view will be the first thing you see.

OverviewGet an overview of the features

OverviewGet an overview of the features

What’s NewFind out what is new

What’s NewFind out what is new

SamplesTry out the samples

SamplesTry out the samples

TutorialsGo through tutorials

TutorialsGo through tutorials

WorkbenchGo to the workbench

WorkbenchGo to the workbench

Note: You can get the Welcome view back at any time by selecting Help > Welcome.Note: You can get the Welcome view back at any time by selecting Help > Welcome.

Web ResourcesRead more on the web

Web ResourcesRead more on the web

MigrateMigrate to the new release

MigrateMigrate to the new release

First StepsMake first steps

First StepsMake first steps

Page 6: Cours Slides

1 - 7

The Workbench

Basic User Interface: The WorkbenchThe workbench acts as a hub for identifying all of the plug-in functions. Each workbench offers one or more perspectives, which contain views and editors to display information.

In the workbench you can navigate resources, as well as view and edit the content and properties of these resources.

A shortcut bar appears in the top right corner of the window. This allows you to open new perspectives and switch between ones already open.

The name of the active perspective is shown in the title of the window, and is highlighted in the shortcut bar.

A shortcut bar appears in the top right corner of the window. This allows you to open new perspectives and switch between ones already open.

The name of the active perspective is shown in the title of the window, and is highlighted in the shortcut bar.

1 - 8

PerspectivesA perspective defines a set of editors and views arranged in an initial layout for a particular role or task.

For example, the initial layout of the Resource perspective makes the Navigator view and editor visible, and arranges them in a default layout. The default set of views is different for each of the perspectives.

You can open the workbench to any of several perspectives, or you can define your own perspective. Different perspectives are better suited for different user tasks. Common perspectives include:

Resource The default perspective of most tools

JavaFor working with Java projects

CVS Repository ExploringFor checking projects in and out securely

Java Browsing For browsing the structure of Java projects

DebugFor debugging a program

Plug-In DevelopmentFor developing Eclipse plug-ins

Page 7: Cours Slides

1 - 9

Views and Editors

A view is used to navigate a hierarchy of information (such as the resources in the Workbench), open an editor, or display properties for the active editor.

The Navigator View provides a hierarchical view of resources and allows you to open them for editing.

An editor is used to edit or browse a resource.

An editor or view that is active is the one whose title bar is highlighted. Here, the Navigator view is active.

An editor or view that is active is the one whose title bar is highlighted. Here, the Navigator view is active.

1 - 10

EditorsEditors allow document editing from within the workbench for various types of artifacts, including text and diagrams.

The name of the file appears in the tab of the editor. If an asterisk (*) appears at the left side of the tab, this indicates that the editor has unsaved changes.

The name of the file appears in the tab of the editor. If an asterisk (*) appears at the left side of the tab, this indicates that the editor has unsaved changes.

Several editors can be open at the same time, but by default are stacked in the user interface. You can arrange them to make more than one visible at a time.

Several editors can be open at the same time, but by default are stacked in the user interface. You can arrange them to make more than one visible at a time.

Page 8: Cours Slides

1 - 11

Projects

A project is a collection of any number of files and folders. It is a container for organizing other resources that relate to that project.

Projects are used for builds, version management, sharing, and resource organization.

The New Project wizard helps you create a new C or C++ project in the workbench. To access the wizard, select File > New > Project from the menu.

The New Project wizard helps you create a new C or C++ project in the workbench. To access the wizard, select File > New > Project from the menu.

1 - 12

Importing and Exporting ProjectsYou can use the Import wizard to import a project that exists in a different workspace, or one that previously existed in a workspace, into the Workbench.

The Import wizard can be accessed from the main menu bar: select File > Import.

Page 9: Cours Slides

1 - 13

Lab 01: Creating a Project

In this lab, you will learn how to create a new project, a folder within the project, and two files within that folder.

After completing this lab, you will be able to:

Create and use resources

Manipulate the user interface

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select 01 Create a Project.

Follow the directions indicated on the Cheat Sheet.

The instructor will walk through this lab together with the class in order to demonstrate cheat sheet navigation.

The instructor will walk through this lab together with the class in order to demonstrate cheat sheet navigation.

1 - 14

Help

There are extensive Help resources that include:

Help Contents

Tips and Tricks

Cheat Sheets

Dynamic Help

Page 10: Cours Slides

1 - 15

Cheat Sheets

The exercises included with this course will be performed in Cheat Sheets. Cheat sheets provide an interactive lab environment within the application we are exploring.

Cheat Sheets save the student time by:

Having the lab steps in place beside the work being done

Not having to retype content

Allowing steps to be repeated

Automating the loading of lab input artifacts

Cheat Sheets assists the student in learning by:

Integrating with multimedia

Allowing you to take the cheat sheets of interest and install them in your own instance of the product, for later reference and guidance

1 - 16

Lab 02: Customizing PerspectivesIn this lab, you will work with multiple instances. You will begin by customizing a perspective, and then make it the default perspective.

After completing this lab, you will be able to:Customize a perspective

Open multiple windows and workspaces

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select 02 Customize Perspectives.

Follow the directions indicated on the Cheat Sheet.

Page 11: Cours Slides

1 - 17

Rational Software Architect: For Architects and Developers

For software architects who need to:

Model applications

Enforce architectural and coding standards

Develop and apply patterns and transformations

For software developers who need to:

Develop using models and code

Review code against coding standards

Apply patterns and transformations

For all who develop as part of a team

1 - 18

Model-Driven Development in Rational Software Architect

Create the domain model

Create the use-case model

Create the design model

Complete the implementation using UML visualization

Transformation

Transformation

Transformation

Traceability relationships created as a byproduct of patterns and transformations

Page 12: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 2 : Model Structure and Templates

2 - 2

After completing this module, you will be able to:Locate and use the Modeling perspective and viewsCreate and organize projects and models in Rational Software ArchitectCreate Models based on Model templates

Module Objectives

Page 13: Cours Slides

2 - 3

What is a Model ?

A model is a semantically closed abstraction of a subject system.

The RUP methodology defines a model as a complete description of a system from a particular perspective.

Examples of models:UML modelCodeData model

Page 14: Cours Slides

2 - 5

A UML model is only one type of model, which is used for:Specifying structure, behavior, or bothVisualizing an existing system to improve understandingAutomating system development (Model-Driven Development)

UML Models in Rational Software Architect:

A resource (.emx)Logical model, the contents of a model file

What is a UML Model in Rational Software Architect ?

Physical Model File

(Logical) Model

Closed modelClosed model

Open modelOpen model

Model files in a UML Modeling project as shown in the Navigator view.

Model files in a UML Modeling project as shown in the Navigator view.

2 - 6

Comments

In the RUP methodology, a model is defined as a complete specification of a problem or solution domain from a particular perspective. A UML (Unified Modeling Language) model is just one of many types of models used in software development. UML models help the development team visualize, specify, construct, and document the structure and behavior of system architecture. Using a standard modeling language such as the UML, different members of the development team can communicate their decisions unambiguously to one another.You can use UML models to represent a system that you want to build visually; to build a common understanding of a system; to develop, verify, and communicate a system’s architecture; and to generate code. UML model files in Rational Software Architect contain model elements (such as actors, use cases, and classes, and packages, relationships, and associations), and one or more diagrams.In addition to these objects, models contain UML profile information, user preferences, and workspace information.A modeling project can contain any number of models. You can open and manage each model in the Project Explorer view, and you can open diagrams from more than one model at the same time.Note that the main file types used in Rational Software Architect are :

File Type ExtensionUML Model .emxUML Model Fragment .efxUML Profile .epxClass Diagram .dnxTopic Diagram .tpxObject Constraint Language (OCL) resource .oclTransformation Configuration .tcReusable Asset .rasRAS Manifest .rmd

Page 15: Cours Slides

2 - 7

The Modeling Perspective

The Modeling Perspective contains the tools needed to build UML models and diagrams.

Editors

Views

2 - 8

Comments

The Rational Software Architect workbench window contains one or more perspectives. A perspectivedefines the initial set of content editors and related views (used to navigate information in the editor), and their layout in the workbench window.

Perspectives gather together sets of features for specific development activities. For example, the Javaperspective gathers tools for writing code: the Package Explorer, Problems view, Outline view, and Java editor.

The Modeling Perspective contains the tools needed for building UML models and diagrams, including the diagram editor, with the following views: Project Explorer view, Pattern Explorer, Outline view, Inheritance Explorer, Properties view, Tasks view, Output window, and Bookmarks view.

Page 16: Cours Slides

2 - 9

Views in the Modeling Perspective

Views in the ModelingPerspective:

For exploring modeling projects:

Project Explorer view– Diagrams– Models

For exploring resources:Pattern Explorer viewOutline viewInheritance Explorer viewProperties view

For getting feedback:Tasks viewOutput window

2 - 10

Comments

Views are windows that provide different ways to navigate the information in the workspace and in the workbench. For example, the Project Explorer view displays projects and models you are working with. A diagram in the Project Explorer view can be opened into the diagram editor. The properties of the selected diagram can be modified in the Properties view.

A view might appear by itself, or stacked with other views in a tabbed notebook. You can change the layout of a perspective by opening and closing views, and by docking them in different positions in the Workbench window.

Page 17: Cours Slides

2 - 11

Project Explorer ViewUsed for navigating and organizing models.

Class

Attribute

Diagram

Relationship

Package

Diagram

Open Model

Closed Model

2 - 12

Comments

Under each model file, the Project Explorer view displays the logical structure of the model, including the name of the model and any packages, diagrams, relationships, and other model elements it contains. The model icon (light brown, containing a triangle) inside the model file allows you to add model elements at the root level of the model, and it allows you to set certain properties for the model.

You can use the Project Explorer view to add, delete, move, organize, and sort model elements for each model in your project.

Page 18: Cours Slides

2 - 13

Properties ViewDisplays properties and values for the selected element.

2 - 14

Comments

All models, diagrams, model elements, and relationships have associated properties, just like all other project resources.

In the Modeling Perspective, properties are organized into a series of tabbed categories. Most model elements contain the following categories:

• General: Includes the name of the elements, qualified name, keywords for searches, visibility, and an option to make the element abstract.

• Documentation: Used for adding documentation to model elements.

• Advanced: Displays an Eclipse-style properties page.

Page 19: Cours Slides

2 - 15

Diagram Editor

Drawing Surface

Tools

Palette

Drawers

2 - 16

Comments

The diagram editor contains both the drawing surface and the toolbox. The toolbox contains a basic set of tools (available by default) for selecting and annotating shapes in the diagram, along with one or more drawers of tools for various diagram types. You can customize the look and behavior of drawers in the toolbox, as well as create and customize your own drawers.

Page 20: Cours Slides

2 - 17

Outline ViewWhen the diagram editor is open, the Outline view can show either:

A thumbnail graphical view of the diagramA tree view listing the elements of the diagram

2 - 18

Comments

The Outline view displays an outline of the structured file that is currently open in the editor area, and lists its structural elements.

The contents of the Outline view are editor-specific. When the diagram editor is open, the Outline view can show either:

• A tree view listing the elements in the file open in the editor area (upper-right icon named Outline)

• A thumbnail of the diagram (upper-right icon named Overview) with the screen area dimmed (in gray). In the screenshot, the Overview icon is selected, thus showing a graphical thumbnail of the diagram. You can move the active screen area in the outline view to navigate the diagram.

Page 21: Cours Slides

2 - 19

UML Model Editor

2 - 20

Comments

The UML Model editor appears every time you open a model. To close your model, close the UML Model editor. From the UML Model editor, you can add documentation to the model and navigate to specific diagrams in the model. It also provides the following model information:

Overview• Alerts and Action Items: Lists problems associated with this model• General Information: Provides general model file properties, including name, location in the workspace,

size of the file, modify date, and read or write status• Documentation: Allows you to add documentation at the model level, just the way you would document

an element in a model

Details• Applied Profiles: Shows which UML profiles are currently applied to the model. Applying profiles makes

available sets of stereotypes that extend the UML to create specialized models.• Diagrams: Lists diagrams in this model• Model Libraries: Model libraries imported by this model

References• Referenced Models: Shows the models that the open model references. A referenced model contains

model information from a referenced component or project.

Fragments: Lists fragments of this model

Page 22: Cours Slides

2 - 21

Rational Unified Process Resources

Process guidance is built in the:

Rational Software Architect Process Advisor featureRational Software Architect Process Browser feature

These resources can guide you in determining what models and diagrams you need.

2 - 22

Comments

The RUP platform is a software engineering process and an industry-wide platform for best practices. There is a configuration of the RUP methodology designed especially for Rational Software Architect users, one which is accessible in two features in Rational Software Architect:

Process Advisor: The Process Advisor is a view that presents context-sensitive references to RUP Tool Mentors, Artifacts, and Activities. From this view you can also search the RUP product and access Help.

Process Browser: The RUP Process Browser in Rational Software Architect is a separate window that opens to display the RUP content selected in the Process Advisor view. It also allows you to browse the RUP product.

Page 23: Cours Slides

2 - 23

Rational Software Architect Project Types

There are two basic types of projects.

UML projects:For pre-implementation models

Blank or based on a model template

Implementation projects:Java, EJB™ (Enterprise JavaBeans™) technology , and so on

Implementation projects can contain UML class and sequence diagrams

Simple projects can be of either type. New Project wizard

Java Project

Simple Project

UML Project

2 - 24

Comments

A project in Rational Software Architect is just a container for resources, such as model files, code files, HTML or XML files, and so on.

In Rational Software Architect, you will develop two types of projects: UML projects for pre-implementation models, and implementation projects, in which the code is the implementation model. Implementation projects can contain free-standing UML class and sequence diagrams, which you can use to visualize the code’s structure and runtime behavior.

A Simple project is an empty project folder, which you can populate with any file structures and resources.A UML project is a Simple project that contains a model file. You can either create blank models or ones based on a Rational Software Architect UML model template.The following implementation projects are available in Rational Software Architect:

Enterprise: An enterprise application project contains the hierarchy of resources required to deploy a J2EE enterprise application, often referred to as an EAR file.

EJB: EJB (Enterprise JavaBeans™) projects include the resources contained in an EJB module.

Web: Web projects are used for creating dynamic Web applications and static Web sites. Dynamic Web projects provide an accompanying EAR project.

Connector: A connector is a J2EE standard extension mechanism for containers that provides connectivity to enterprise information systems (EISs).

Page 24: Cours Slides

2 - 25

Model Templates in Rational Software Architect

UML Project templates are available in the New Project wizard. The following model templates are available:

Analysis ModelBlank ModelCORBA Template ModelDoDAF ModelEnterprise IT Design ModelService Design ModelUse Case ModelXSD Model

Page 25: Cours Slides

2 - 27

UML ProfilesUML profiles are often included with module templatesProfiles provide a mechanism for extending the UML without having to change the modeling language itself.Profiles include:

Stereotypes: A simple textual marker («…») or icon placed on a model element to add semantics to the elementTagged values: To add properties that are not supported by the base elementConstraints: Constraints enforced on the element or its attributes

2 - 28

Comments

A UML profile identifies a particular subset of model elements and defines stereotypes and constraints that can be applied to it. The stereotypes that are contained in a profile can be used when a profile is applied to a UML model.

• Stereotype: A simple textual marker («…») or icon placed on a model element to add semantics to the element. A stereotype extends UML, but not its structure. You can add stereotypes to model elements to create specialized forms, but you cannot add new elements to UML.

• Tagged Values: Typically a string or Boolean value, tag definitions can be associated with specific stereotypes or with all model elements of a specific type (class, association, operation parameter, and so on). Tagged values used to add values to model elements, similar to metadata, and used very often to add information for transformations and code generation.

• Constraint: A set of rules that can be executed to determine a model or modeling element’s correctness. Constraints are usually defined using the Object Constraint Language (OCL), but can also be defined in natural languages and Java.

In the Rational Software Architect tool, the UML 2.0 Base, Intermediate, and Complete profiles are automatically applied to every UML model. The tool also provides the Deployment profile and the Default profile, both of which are also automatically applied to every UML model.

Two key best practices for working with profiles in multiple models are:• Keep platform-independent content and platform-specific content separate, in different logical (top-level)

models.• Maintain cross-model relationships in the platform-specific models.

Page 26: Cours Slides

2 - 29

How Are Profiles Used ?

Profiles are used to model platform-or model-specific abstractions, for example:

Enterprise beansAnalysis classes

Profiles provide a domain-specific language for reusable assets:

Add to model templatesUse with domain-specific patternsUse a transformation to create a platform-specificmodel

Custom profiles can be created in Rational Software Architect and shared with other users

Profile

Model Template

Patterns

Designed to recognize andtransform elements with stereotypesfrom the profile.

May include parameters with stereotypesfrom the profile. Patterns can be used to add stereotypes to model elements.

Profile added to the template and modelscreated from it. Elements in the model can have stereotypes from the profile, with constraints ensuringcorrect usage.

Transformations

2 - 30

Comments

Rational Software Architect allows you to develop and apply UML profiles that you can use to create model elements that reflect the semantics of a specific domain or platform, or for a particular model. For example, the RUP Analysis model template is supported by the Analysis profile, which provides «Boundary», «Entity», and «Control» stereotypes.

Profiles are not just used for modeling, however. They are also used for automating modeling and model transformation using patterns. Design patterns in Rational Software Architect can be used to apply stereotypes to model elements, which are then recognized by transformations run on them so that they can be realized by technology- or platform-specific implementation code.

Page 27: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 3 : Creating UML Diagrams

3 - 2

After completing this module, you will be able to:Create UML Diagrams

Diagrams in UML models

Query diagrams

Visual development diagrams

Describe how UML elements can be added to diagrams using:

Action Bars

Tool palette

Project Explorer view

Module Objectives

Page 28: Cours Slides

3 - 3

UML Diagrams in Rational Software ArchitectA model element appears in zero or more diagrams

Diagrams graphically depict a view of a part of your model or codeDifferent diagrams represent different views of the system that you are developing

3 - 4

Comments

In Rational Software Architect, you can open and add diagrams to the model in the Project Explorer view.

A UML project has two main packages that show different views of diagrams in the model. The Models package shows diagrams in their logical place within the model, the Diagrams package shows only the diagrams in the model, spelling out the paths of their locations.

UML diagrams can help system architects and developers understand, collaborate on, and develop an application. High-level architects and managers can use UML diagrams to visualize an entire system or project, and separate applications into smaller components for development.

System developers can use UML diagrams to specify, visualize, and document applications, which can increase efficiency and improve their application design. UML diagrams can also help identify patterns of behavior, which can provide opportunities for reuse and streamlined applications.

The visual representation of a system that UML diagrams provide can offer both low-level and high-level insight into the concept and design of an application.

Page 29: Cours Slides

3 - 5

UML Diagrams in Rational Software Architect

Behavioral Diagrams

Structural Diagrams

ActivityDiagrams

SequenceDiagrams

CommunicationDiagrams

State MachineDiagrams

ComponentDiagrams

CompositeStructureDiagrams

ClassDiagrams

Model

ObjectDiagrams

DeploymentDiagrams

Use-CaseDiagrams

3 - 6

Comments

Visual models of a system require many different diagrams to represent different views of the system for different project stakeholders. The UML provides a rich notation for visualizing models.

Structural DiagramsRational Software Architect allows you to create the following structural diagrams:

• Class diagrams to illustrate logical structure

• Object Diagram to show objects that are instances of classes

• Composite Structure diagrams to show the internal structure of a class or component at runtime

• Component diagrams to illustrate the organization and dependencies among modular parts of the system

• Deployment diagrams to show the mapping of software to hardware configurations

Behavioral DiagramsRational Software Architect allows you to create the following behavioral diagrams:

• Use-Case diagrams to illustrate user interactions with the system

• Activity diagrams to illustrate flows of events

• State Machine diagrams to illustrate the series of states an object can have

• Communication diagrams to illustrate behavior in terms of how objects interact

• Sequence diagrams to illustrate behavior in terms of the sequence of interactions between objects

Page 30: Cours Slides

3 - 7

Creating UML Model DiagramsUse diagrams to represent different views of the system or application:

UML diagramsNon-UML (freeform) diagrams

Create diagrams in:

ModelsModel elements

PackagesComponentsActiveclassesAnd so on

Creating a diagram in the Project Explorer view.

3 - 8

Comments

You can add UML diagrams to models to represent different views of a system. To provide more detail about a specific model element, you can also add one or more diagrams to an element, such as a package, component, or state machine.

For more informal and informational modeling, Freeform diagrams are available. Freeform diagrams allow you to add any element, including the non-UML geometric shapes available in Rational Software Architect.

Page 31: Cours Slides

3 - 9

Review: Diagram Editor

Drawing Surface

Tools

Palette

Drawers

3 - 10

Comments

The diagram editor contains both the drawing surface and the toolbox. The toolbox contains a basic set of tools (available by default) for selecting and annotating shapes in the diagram, along with one or more drawers of tools for various diagram types. You can customize the look and behavior of drawers in the toolbox, as well as create and customize your own drawers.

Page 32: Cours Slides

3 - 11

Adding Model Elements to a Diagram

1Drag an existing element from the Project Explorer view.

Drag an existing element from the Project Explorer view.

+

2Click a tool in the diagram editor’s tool palette and then click inside the diagram.

Click a tool in the diagram editor’s tool palette and then click inside the diagram.

Hover or click the mouse in the diagram to make the action bar appear. Select the element to insert. Hover over the new model element to use the action bar to add details (attributes and operations).

Hover or click the mouse in the diagram to make the action bar appear. Select the element to insert. Hover over the new model element to use the action bar to add details (attributes and operations).

3

3 - 12

Comments

To display elements in the Project Explorer view on an open diagram, just drag them on to the diagram surface. To add new model elements (shapes) using the diagram, you can either click an item in the tool palette and click in the diagram, or click the diagram surface and using the action bar to add items and compartment items.

Although it is not shown in the slide, you can also add shapes to the model by right-clicking the diagram surface and then clicking Add UML and selecting the appropriate shape.

Page 33: Cours Slides

3 - 13

Deleting from the Diagram and the Model

Delete from DiagramRemove the item from the diagram, but do not delete it from the model

Delete from ModelRemove the item from the diagram and the model

Deleting an Element in the Diagram Editor

3 - 14

Comments

You can delete UML model elements from models in the Project Explorer view, and diagrams in the diagram editor. Just right-click the item and click the appropriate delete option :

• Deleting elements from a diagram (using the context menu or Delete key) removes the elements from the diagram, but leaves them in the model.

• Deleting diagram elements from a model (using the context menu) removes the element from the diagram and model.

Note that deleting a model element can be undone (with Edit > Undo or by pressing CTRL-Z), but deleting a diagram from a model is permanent.

Page 34: Cours Slides

3 - 15

Diagram Validation: Validating Model SemanticsExamine a model or diagram for broken semantic rules according to the model's language and constraints:

Confirm adherence to UML requirements, logic, structures, and usage

Click Run Validation on the Modeling menu to validate all open models

3 - 16

Comments

At any time during the construction of a model or a UML diagram, you can check that it is compliant with the defined constraints and ensure that no broken cross-model references exist.

You must have a model open in the Modeling perspective, and you must enable at least one constraint category in the Validation preferences.

In Validation preferences, you can apply constraints defined by the UML 2.0 specification, , as well as the UML 2.0 metamodel constraints that support the usability of specific modeling functions.

To validate a model, diagram, or model element, right-click the item and then click Run Validation. Any violations are listed in the Problems view.

After you validate a model or UML diagram, you can view the validation errors and warnings.

Page 35: Cours Slides

3 - 17

Lab 3: Create UML Diagrams

Complete the following tasks:Task 1: Create a new diagramTask 2: Add shapes and connectorsTask 3: Delete from the diagram and the modelTask 4: Validate the model

To begin the lab:

In Eclipse, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 3: Create UML Diagrams.

Follow the directions indicated on the Cheat Sheet.

Page 36: Cours Slides

3 - 19

UML Visual Development

Visualize Java and C++ code in UML diagramsVisualize code with diagrams that are either:

Project resourcesClass (.dnx)

Sequence (.tpx)

New diagrams in an existing model (.emx)

Class

Sequence

Freeform

Topic

3 - 20

Comments

You can use UML diagrams to visually represent and develop artifacts of Java and C++ applications in a single, tightly integrated development environment.

You can use UML diagrams to represent and analyze an existing system to identify the system’s components and interrelationships, and to create representations of the system in another form. You can use UML diagrams to automatically abstract the system’s structural information from code to a new form at a higher abstraction level. You can redesign the system for better maintainability, or to produce a copy of a system without access to the design from which it was originally developed. You can also modify the target system, or develop and generate new systems.

A UML class diagram depicts some or all of the components (or elements) in an application. You can use class diagrams to visually represent and develop the structures and relationships for Java classes and interfaces. You can create your own context to understand, collaborate, and develop an application by using a subset of its classes. You can also develop Java elements directly from class diagrams. You can use UML sequence diagrams to visually represent and develop the behaviors and interactions of Java applications, or to visually represent Java methods.

You can use temporary, non-editable browse diagrams to create quick static views and explore existing relationships in applications, and use non-editable topic diagrams to create dynamic views of applications based on context and queries.

You can also generate Javadoc HTML documentation with UML diagram images to provide more information about the source code.

Page 37: Cours Slides

3 - 21

Class Diagrams

Add class diagrams to a Java or C/C++ project to visualize and edit classes.

Code changes automatically update the diagram, and vice versa, when resources are saved.Harvest visualized elements into a model.

3 - 22

Comments

You can create new class diagrams and populate them with Java classes to examine structures and relationships within an application.A class diagram depicts some or all of the classes and interfaces in an application. You can create your own context to visually represent an application by using a subset of its classes and interfaces. You can use class diagrams to develop Java packages, classes, and interfaces and to design their structures and relationships.

Page 38: Cours Slides

3 - 23

Sequence Diagrams

Use sequence diagrams to understand and develop behaviors and interactions among source elements.

Visualize behavior or add and edit lifelines, messages, and combined fragments

3 - 24

Comments

You can use sequence diagrams to create a graphical representation of the source elements in a system or application, in order to understand and develop behaviors and interactions between classes and data types. Create new sequence diagrams, populate existing sequence diagrams with source elements, and add lifelines, messages, and combined fragments to sequence diagrams.

Static UML sequence diagrams can show disruptable interaction operators. A disruptable interaction operator indicates that the interaction fragment represents an exception handling block in the source code (that is, a Java try or catch block). The code in the first operand of this fragment represents the attempted code (the try block). Subsequent operands represent any exception handling blocks.

Optionally, if present in the source, the final operand that is guarded by the condition finally represents code that is executed regardless of whether or not an exception has occurred.

A static UML sequence diagram view is a topic diagram, which has a .tpx file name extension. You can refresh static sequence diagram views of Java methods to reflect the latest changes in the source code. You can convert them to editable UML sequence diagrams (which have a .dnx file name extension) that you can use to understand and develop behaviors and interactions between Java classes and interfaces.

To create a static sequence diagram of a Java method, in the Package Explorer view, right-click a Java method, then click Visualize > Add to New Diagram File > Static Method Sequence Diagram.Note: You can also create static sequence diagram views of Java methods from class, topic, or browse diagrams: right-click a method in a Java class or interface, then click Navigate > Open as Interaction.

Page 39: Cours Slides

3 - 25

Query Diagrams: Topic and Browse

Use topic and browse diagrams to explore relationships in UML models or in code.

With Topic diagrams, you can:Query the model to see a specific set of relationships between agroup of elements from across the model or code

Capture a snapshot of the current state of a model or code

Create an edit diagram based on the topic diagram

With Browse diagrams, you can:Explore relationships from a selected element to other elements

Navigate the model or code

Generate an edit diagram from a browse diagram

3 - 26

Comments

Information in your model that might not be worth formally displaying in diagrams might still have to be managed as part of the model. Such information is better accessed using query (topic and browse) diagrams, so that the information can be found just when needed. For example, rather than maintaining diagrams depicting traceability relationships, set up the relationships in the model and then use querying to find the relationships when needed. This approach can help avoid cluttering models.

Topic and browse diagrams, both of which are not editable and so are not used for modeling, can also be used to analyze and familiarize yourself with an unfamiliar model as part of research. Topic diagrams can be saved or converted into UML class diagrams in the model. Browse diagrams are designed to provide a quick and convenient means of exploring the model, so they are never saved.

Page 40: Cours Slides

3 - 27

Browse DiagramsBrowse diagrams can be used to:

Show the elements related to the selected elementShow the dependencies to the selected elementGain a detailed understanding of the element in focus

Browse diagrams are driven by parameters and filters that you control.

Select relationships to display and levels of relationships, and then click Apply.

Select relationships to display and levels of relationships, and then click Apply.

Right-click the diagram surface and click File > Save As to save the diagram as an edit diagram or image file.

Right-click the diagram surface and click File > Save As to save the diagram as an edit diagram or image file.

Double-click an element in the diagram to make it the focus of a new browse diagram.

Double-click an element in the diagram to make it the focus of a new browse diagram.

3 - 28

Comments

A browse diagram is a temporary diagram in which you can explore the details of a model and its underlying elements and relationships. A browse diagram provides a view of a context element that you specify, and is similar in functionality to a Web browser. You cannot add or modify the individual diagram elements or save a browse diagram in a model. However , you can convert a browse diagram to a freeform modeling diagram in an open model file, or save it in an image file that captures the inheritance hierarchy (which you can send in an e-mail message or publish on a Web site).

To create a browse diagram:

1. In the Project Explorer, right-click a UML or Java element.2. Select Visualize > Explore in Browse diagram.

Page 41: Cours Slides

3 - 29

Lab 4: Create Browse and Topic Diagrams

Complete the following tasks:Task 1: Import Java projectTask 2: Visualize Java code in a Browse Diagram viewTask 3: Visualize Java code in a Topic Diagram view

To begin the lab:

In Eclipse, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 4: Create Browse and Topic Diagrams.

Follow the directions indicated on the Cheat Sheet.

Page 42: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 4 : Creating UML Diagrams of System Structure

4 - 2

Module Objectives

After completing this module, you will be able to:

Identify the Structural UML diagrams that are available

Identify UML notation, and provide a basic explanation of UML semantics

Create Class, Composite Structure, Component, and Deployment diagrams

Page 43: Cours Slides

4 - 3

Structural UML Diagrams

Behavioral Diagrams

Structural Diagrams

ActivityDiagrams

SequenceDiagrams

CommunicationDiagrams

State MachineDiagrams

ComponentDiagrams

CompositeStructureDiagrams

ClassDiagrams

Model

ObjectDiagrams

DeploymentDiagrams

Use-CaseDiagrams

4 - 4

Comments

Rational Software Architect allows you to create the following structural diagrams:

• Class diagrams to illustrate logical structure

• Object Diagram to show objects that are instances of classes

• Composite Structure diagrams to show the internal structure of a class or component at runtime

• Component diagrams to illustrate the organization and dependencies among modular parts of the system

• Deployment diagrams to show the mapping of software to hardware configurations

Page 44: Cours Slides

4 - 5

Class Diagrams

Class diagrams show the classes of the system, their interrelationships, and the operations and attributes of the classes.

Class diagrams are used for a wide variety of purposes, including both conceptual (domain) modeling and detailed design modeling.

4 - 6

Comments

A class is a description of a set of objects that share the same attributes, operations, relationships, and semantics.

A class is an abstraction in that it :

• Emphasizes relevant characteristics.

• Suppresses other characteristics

Page 45: Cours Slides

4 - 7

Class Icon

Template Class ParameterTemplate Class ParameterClass NameClass Name

4 - 8

Comments

The class Icon provides compartments for name, attributes, and operations. These compartments can be removed from a diagram if desired.

A number of standard stereotyped classes are available in Rational Software Architect :

• Type: A class that specifies a domain of objects

• ImplementationClass: The implementation of a class in a programming language

• Utility: A class that has no instances, but rather a collection of non-member attributes and operations that are class scoped

• Metaclass: A class whose instances are also classes

• Realization: A classifier that specifies a domain of objects, and its physical implementation

• Specification: A classifier that specifies a domain of objects, without defining a physical implementation

• Focus: A class that specifies the core logic or control flow for one or more auxiliary classes

• Auxiliary: A class that supports a central or fundamental class

Page 46: Cours Slides

4 - 9

Other Class Diagram Model ElementsSignal

A signal is a specification of a send request instance communicated between objects

Enumeration

A data type whose literal values are enumerated in the enumeration

Data Type

Typically data types represent primitive types (such as integer or string types), and enumerations (such as user-defined data types)

Artifact

The specification of a physical piece of information that is used or produced in the software development process

Collaboration

Type of structured classifier in which roles and attributes co-operate to define the internal structure of a classifier

4 - 10

Class Relationships

Class diagrams may contain the following relationships:

Association

Aggregation

Composition

Generalization

Dependency

Realizes

OR

OR

OR

Page 47: Cours Slides

4 - 11

AssociationSpecifies peer-to-peer relationships between model elements

Navigability can be unidirectional or bidirectional

OR

4 - 12

AggregationUsed to model a whole to part relationship between model elements

The part element can exist without the whole

Navigability can be unidirectional or bidirectional

OR

Page 48: Cours Slides

4 - 13

CompositionAggregation with strong ownership

When the container is destroyed, all of its composite objects are destroyed

Navigability can be unidirectional or bidirectional

OR

4 - 14

Generalization

A relationship where one class shares the structure and behavior of one or more classes

Defines a hierarchy of abstractions where a subclass inherits a superclass

This is an “is a kind of” relationship

Page 49: Cours Slides

4 - 15

Dependency

A relationship in which one class uses another

Dependencies may exist between classes because:

A message is sent from one class to the other

One class is part of another's data

One mentions the other as a parameter to an operation

4 - 16

Realization

A specialized relationship where the client implements the suppliers specification

Page 50: Cours Slides

4 - 17

Lab 05: Create a Class Diagram

Complete the following tasks:Review Class Diagram BasicsCreate a New Class DiagramChallenge Yourself

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select 05 Create Class Diagrams.

Follow the directions indicated on the Cheat Sheet.

The instructor will walk through this lab together with the class in order to Demonstrate cheat sheet navigation.

The instructor will walk through this lab together with the class in order to Demonstrate cheat sheet navigation.

Page 51: Cours Slides

4 - 19

Object Diagrams

An object diagram shows a complete or partial view of the structure of a modeled system at a specific point in time

This snapshot focuses on a particular set of object instances and attributes, and the links between the instances

Object

Link

Attribute Values

Object Name

4 - 20

Comments

A correlated set of object diagrams provides insight into how an arbitrary view of a system is expected to evolve over time.

Object diagrams are more concrete than class diagrams, and are often used to provide examples, or act as test cases for the class diagrams.

Only those aspects of a model that are of current interest need to be shown on an object diagram.

In addition to class instances, you can also represent node instances, device instances, artifact instances, component instances, use case instances, actor instances, and so on.

Page 52: Cours Slides

4 - 21

Composite Structure DiagramA composite structure diagram reflects the internal collaboration of classes, interfaces, or components to describe a functionality.

It is used to express run-time architectures, usage patterns, and relationships that might not be reflected by static diagrams.

4 - 22

Comments

Composite Structure diagrams are similar to class diagrams, except that they model a specific usage of the structure. Class diagrams model a static view of class structures, including their attributes and behaviors.

When visualizing the system architecture, each of the internal parts may be a structured class that itself contains parts.

The internals of the Course Registration System are composed of three parts: StudentManagementSystem, BillingSystem, and CourseCatalogSystem.

A later slide will examine the internal structure of the StudentManagementSystem.

Page 53: Cours Slides

4 - 23

Complete the following tasks:Review Composite Structure Diagram Basics

Create a New Composite Structure Diagram

Challenge Yourself

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 06: Create Composite Structure Diagrams

Follow the directions indicated on the Cheat Sheet.

Lab 06: Create Composite Structure Diagrams

4 - 24

A Component

A modular part of a system that hides its implementation behind a set of external interfaces.

Part of a logical or physical system

It conforms to, and provides the physical realization of, a set of interfaces.

It specifies the physical dependency to interfaces it requires.

Page 54: Cours Slides

4 - 25

Complete the following tasks:Review Component Diagram Basics

Create a New Component Diagram

Challenge Yourself

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 07: Create Component Diagrams

Follow the directions indicated on the Cheat Sheet.

Lab 07: Create Component Diagrams

Page 55: Cours Slides

4 - 27

Deployment DiagramsDeployment is assigning, or mapping, software artifacts to physical nodes during execution.

Artifacts are the entities that are deployed onto physical nodes

Processes are assigned to computers

Artifacts model physical entities.Files, executables, database tables, web pages, and so on

Nodes model computational resources.Computers, storage units

4 - 28

Comments

A manifestation is the physical implementation of a model element as an artifact: a relationship between the model element and the artifact that implements it .

Model elements are typically implemented as a set of artifacts. Examples of Model elements are source files, executable files, and documentation files.

Page 56: Cours Slides

4 - 29

Complete the following tasks:Review Deployment Diagram Basics

Create a New Deployment Diagram

Challenge Yourself

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 08: Create Deployment Diagrams

Follow the directions indicated on the Cheat Sheet.

Lab 08: Create Deployments Diagrams

Page 57: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 5 : Creating UML Diagrams of System Behavior

5 - 2

Module Objectives

After completing this module, you will be able to: Identify the behavioral UML diagrams available in Rational Software Architect

Identify UML notation and provide a basic explanation of UML semantics

Create use-case, activity, sequence, communication, and state machine diagrams in Rational Software Architect

Page 58: Cours Slides

5 - 3

Behavioral Diagrams in Rational Software Architect

Behavioral Diagrams

Structural Diagrams

ActivityDiagrams

SequenceDiagrams

CommunicationDiagrams

State MachineDiagrams

ComponentDiagrams

CompositeStructureDiagrams

ClassDiagrams

Use-CaseDiagrams

Model

ObjectDiagrams

DeploymentDiagrams

5 - 4

Comments

Visual models of a system require many different diagrams to represent different views of the system for different project stakeholders. The UML provides a rich notation for visualizing models, including the following key diagrams :

• Use-case diagrams to illustrate user interactions with the system

• Class diagrams to illustrate logical structure

• Composite structure diagrams to show the internal structure of a class or component at runtime

• Component diagrams to illustrate the organization and dependencies among modular parts of the system

• Deployment diagrams to show the mapping of software to hardware configurations

• Activity diagrams to illustrate flows of events

• State machine diagrams to illustrate the series of states an object can have

• Communication diagrams to illustrate behavior in terms of how objects interact

• Sequence diagrams to illustrate behavior in terms of the sequence of interactions between objects

Page 59: Cours Slides

5 - 5

Use Case DiagramsUse case diagrams:

Model the behavior of a system, and help capture the requirements of the system

Describe the high-level functions and scope of a system

Identify the interactions between the system and its actors

Describe what the system does and how the actors use it, but not how the system operates internally

Illustrate and define the context and requirements of either an entire system, or the important parts of the system

Are typically developed in the early phases of a project, and are referred to throughout the development process

Page 60: Cours Slides

5 - 7

Use-Case Diagram Elements

ActorSomeone or something thatinteracts with the system

ActorSomeone or something thatinteracts with the system

Use CaseUnits of system behavior

Use CaseUnits of system behavior

5 - 8

Comments

The use-case model contains the following elements, which are displayed in a use-case diagram:

• Actors: Used to represent someone or something outside the system that interacts with the system.

• Use cases: Used to represent a unit of system behavior that comprises several possible sequences of actions.

• Relationships

• Include: Used when the use case modeler sees a piece of behavior that can be reused by more than one use case.

• Extend: Used when the use case modeler identifies an optional piece of behavior and places it in a separate use case.

• Generalization: Used when a generalization/ specialization relationship exists.

Page 61: Cours Slides

5 - 9

Lab 9: Create Use-Case Diagrams

Given:Create Use-Case Diagrams cheat sheet

Complete the following tasks:Review the basics of use-case diagrams

Create a new use-case diagram

Re-create an example use-case diagram from an image

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 9: Create Use-Case Diagrams

Follow the directions indicated on the Cheat Sheet.

Page 62: Cours Slides

5 - 11

Activity

Activity is the specification of behavior expressed as a flow of execution through the sequencing of subordinate units.

An activity is generally modeled as one or more activity diagrams

5 - 12

Comments

Activity modeling emphasizes the sequence and conditions for coordinating lower-level behaviors, rather than which classifiers own those behaviors (that is what sequence diagrams are for). These are commonly called control flow and object flow models.

The actions coordinated by activity models can be initiated because other actions finish executing, because objects and data become available, or because events occur external to the flow.

Page 63: Cours Slides

5 - 13

Activity Diagrams

5 - 14

Comments

Activity diagrams are particularly useful in describing workflow, and a use case’s flow of events. They are similar to the old fashioned flow chart, but are utilized at a much higher level of abstraction than flow charting source code.

Activity diagrams can model control as well as data flow. Partitions (the parallel lines) provide a mechanism to describe high-level responsibilities and concurrency.

Page 64: Cours Slides

5 - 15

Action

An action is a fundamental unit of executable functionalityIt represents some transformation or processing in the modeled system

An action is a UML Element that you put INTO activity diagramsAn action represents behavior that you do NOT want to model in more detail – it is fundamental or atomic

5 - 16

A Call Behavior Action

A call behavior action represents a linked call to a separate activity (and its corresponding activity diagrams)

Drag an activity onto an activity diagram to create a call behavior actionDouble-click a call behavior action to open the linked activity’s diagram

Page 65: Cours Slides

5 - 17

A Call Operation ActionA call operation action is an action that transmits an operation call request

It is an action that is linked to a specific method or operation in a specific class (interface, subsystem, and so on)

The official name of the action is the name of the operation

Drag an operation onto the diagram to create a call operation action

5 - 18

Accept Event and Send Signal Actions

Accept eventAn action waiting for an eventActions that may be used by themselves, or may be paired with send signal actions

Send signalAn action that creates a signal instance and transmits it to the target object, where it may cause an activity to execute

Page 66: Cours Slides

5 - 19

A Structured Activity Node

A structured activity node represents a structured portion of the activity that is not shared with any other structured node

It is a nested activity with a corresponding activity diagram

5 - 20

Partitions

Page 67: Cours Slides

5 - 21

Control Flow

Control flow:Is the set of lines connecting the activities and actions (activity nodes)Represents the flow of control from one node to anotherCan have guard conditions

Control Flow

Page 68: Cours Slides

5 - 23

Control Nodes

Control nodes coordinate the flow in an activity

Initial

Decision/Merge

Fork/Join

Activity End

Flow Final

5 - 24

Comments

Initial: The starting control node of the activity.

Decision: A decision node has one incoming flow and multiple outgoing flows, of which only one will be taken. Guard conditions should be made to insure that only one flow can be taken.

Merge: A control node that brings together multiple alternate flows. It is not used to synchronize concurrent flows, but to accept one among several flows.

Fork: A control node that splits an incoming flow into multiple concurrent outgoing flows. Tokens arriving at a fork are duplicated across each outgoing flow.

Join: A join node is a control node that synchronizes multiple flows. If there is a token offered on all incoming flows, then a token is offered on the single outgoing flow.

Activity End: A node that stops all flow activity.

Flow Final: A node that terminates that flow.

Page 69: Cours Slides

5 - 25

Object Flow

Object flow models the data flow within an activityObject flow can only be attached to object nodesObject nodes and object flow provide the capabilities for explicit data flow modeling

5 - 26

Given:Create Activity Diagrams cheat sheet

Complete the following tasks:Review the basics of activity diagrams

Create a new activity diagram

Re-create an example activity diagram from an image

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 10: Create Activity Diagrams

Follow the directions indicated on the Cheat Sheet.

Lab 10: Create Activity Diagrams

Page 70: Cours Slides

5 - 27

Interaction Diagrams (1 of 2)

Interaction diagrams show how objects interact, and the order of their interactionsThere are several types of interaction diagrams that emphasize object interactions, including the messages that may be dispatched among them:

Sequence diagram Communication diagramInteraction overview diagram

5 - 28

Interaction Diagrams (2 of 2)

Sequence diagramTime-oriented view of

interactions

Communication diagramStructural view of messaging

roles or parts

Interaction overview diagram

High-level view of interaction sets combined with logic

comm

sd

intover

Page 71: Cours Slides

5 - 29

Sequence Diagrams Versus Communication Diagrams

Show relationships in addition to interactionsBetter for visualizing patterns of collaborationBetter for visualizing all of the effects on a given role or partEasier to use for brainstorming sessions

Show the explicit sequence of messagesBetter for visualizing overall flowBetter for real-time specificationsBetter for complex scenarios

Communication Diagrams

Sequence Diagrams

5 - 30

The Anatomy of Sequence Diagrams

Message ReflexiveMessage

Hierarchical MessageNumbering

Lifeline Role

EventOccurrence

Execution Occurrence

Page 72: Cours Slides

5 - 31

Example: Sequence Diagram

5 - 32

Comments

By creating an interaction use, you can encapsulate complex behaviors to their own sequence diagrams.

Double clicking the interaction use will allow you to navigate to the encapsulated sequence diagram. This technique gives you the ability to develop complex sequence diagrams in a simplified manner.

Page 73: Cours Slides

5 - 33

Combined Fragments

Combined fragments represent a grouping of behavior shown as a nested region within a sequence diagram:

Define conditional structures in interactionsDescribe several traces in a compact and concise manner

InteractionOperand

GuardExpression

CombinedFragment

CombinedFragment

InteractionOperator

5 - 34

An Interaction Operator

An interaction operator identifies the type of combined fragment

The loop operand indicates that the Fragment is executed repeatedlyThe alternative

operand identifies a set of behaviors from which only one will execute on any one pass through the interaction

Page 74: Cours Slides

5 - 35

The Guard Expression

The guard expression is a Boolean conditional expression that guards an interaction operand:

Appears at the start of the operandIs used to determine

if, or how long, the operand will be executedIts absence equates

to a true condition

5 - 36

An Interaction Operand

Each combined fragment is made up of one or more sections

The number of operands depends on the type of combined fragment

For example, a loop has one operand (the loop body), and an alternative has one or more operands (the branches of the conditional)

Each operand covers the lifelines (or a subset of them) contained by the combined fragment

Page 75: Cours Slides

5 - 37

Communication Diagram

5 - 38

Given:Create Sequence Diagrams cheat sheet

Complete the following tasks:Review the basic editor, tools, and elements in a sequence diagram.

Create a new sequence diagram

Re-create an example sequence diagram.

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 11: Create Sequence Diagrams

Follow the directions indicated on the Cheat Sheet.

Lab 11: Create Sequence Diagrams

Page 76: Cours Slides

5 - 39

Given:Create Communication Diagrams cheat sheet

Complete the following tasks:Review the basics of communication diagrams

Create a new communication diagram

Re-create an example communication diagram from an image

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 12: Create Communication Diagrams

Follow the directions indicated on the Cheat Sheet.

Lab 12: Create Communication Diagrams

5 - 40

A State Machine Diagram

State: “a recognizable situation that exists over an interval of time” ~ Hassan GomaaState transitions: Possible paths the system may take from one state to anotherTriggering events: Instantaneous events that stimulate state transitionsActions: Work the system does in response to events

Page 77: Cours Slides

5 - 41

States

States can have entry, exit, and do activities that are performed while in the state

Executed when the state is entered, after any activity attached to the incoming transition, and before any internal do activity

Described by an expression and executed after the entry activity is completed, but before any exit activity

Executed when the state is exited, after the completion of the do activity and before any activity attached to the outgoing transition

5 - 42

Transitions

A transition is the path taken during a change of state from one state to the next in response to a triggering eventGuard condition: Optional condition to be evaluated; if false, the transition is not taken

Page 78: Cours Slides

5 - 43

Regions

Regions provide the ability to show concurrent orthogonal states

Think of orthogonal states as separate state machines that operate in parallel

Parallelism is achieved by the introduction of regions

5 - 44

Composite States

Composite states are states that contain other states and regions

Page 79: Cours Slides

5 - 45

Orthogonal States

Orthogonal statesAre composite states with two or more regions within the state.

5 - 46

Submachine State

A submachine state is a decomposition mechanism that allows factoring of common behaviors and their reuse

Similar in concept to the call behavior action in activity diagrams

Semantically equivalent to a composite state

Page 80: Cours Slides

5 - 47

PseudostatesInitial State: Marks the start of the machineChoice Point: Supports dynamic branchesJunction Point: Supports static branchesDeep History: Return to the most recent substateShallow History: Return to the most recent stateJoin, Fork: Similar to activity diagramEntry, Exit Point: Used to designate a default entry or exit into a composite state or state machineTerminate: Marks the end of the state machine’s execution

Combine and direct transitions

5 - 48

Choice PointsChoice points realize a dynamic conditional branch

Actions can change subsequent guard condition evaluations

Only the initial guard conditions are evaluated before transitions are fired

When the Choice Point is reached, the outgoing segments are evaluated

Clarifies state machine modeling

Visualizes implementation decisions at the modeling level

Page 81: Cours Slides

5 - 49

Junctions

Junctions realize a static conditional branch

Actions will not change subsequent guard condition evaluations

All guard conditions are evaluated before transitions are fired

If all guard conditions return false, then remain in the source state

Simplify state machine modeling

Chain together multiple transition segments

5 - 50

History

Deep HistoryRepresents the most recent active configuration of the composite state that directly contains this pseudostateA composite state can have at most one Deep History vertex

Shallow History Represents the most recent active substate of its containing state (but not the substates of that substate).A composite state can have at most one Shallow History vertex.

Page 82: Cours Slides

5 - 51

Given:Create State Machine Diagrams cheat sheet

Complete the following tasks:Review the basics of state machine diagrams

Create a new state machine diagram

Recreate an example state machine diagram from an image

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 13: Create State Machine Diagrams

Follow the directions indicated on the Cheat Sheet.

Lab 13: Create State Machine Diagrams

Page 83: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 6 : Team Development

6 - 2

Module Objectives

After completing this module, you will be able to:

Describe team development best practices with Rational Software Architect.

Compare and merge diagrams in Rational Software Architect.

Combine diagrams in Rational Software Architect.

Publish and share diagrams with other team members.

Page 84: Cours Slides

6 - 3

Software Architect and Team Development

Architect

Create and publish models

Transform design model into code

Verify architecture and code with structural code review

Developer

Consult published models and artifacts

Elaborate the code

Verify code with code reviewRepository

6 - 4

Comments

The following Rational Software Architect features facilitate collaboration between architects and developers :

TransformationRational Software Architect’s model transformation features allow architects to create basic code structures from high-level UML models, which can be used as a starting point for developers.

Code ReviewThe code review feature is used to analyze code against the project’s architectural guidelines. Code review includes :

• Structural anti-pattern detection to assist in Java refactoring

• Structural rules (including user-defined rules) to enforce architectural control of Java code

Web PublisherWhile creating detailed implementation code, the developer can refer to Web-published models and UML injected Javadocs, which Rational Software Architect can generate automatically.

Page 85: Cours Slides

6 - 5

SCM Best Practices: Model Partitioning

Partition the model to avoid unnecessary merges

Factors to consider when deciding how to partition a model:

Stabilize abstraction levels

Minimize dependencies between models

Establish ownership policies

Avoid broken references

6 - 6

Comments

While the Compare and Merge features in Rational Software Architect are advanced and easy to use, model merge scenarios can become complex and prone to user error if the models involved are needlessly complicated and disorganized. To optimize your models for configuration management and team development, you should observe the following principles :

• Stabilize abstraction levels: Do not partition the model until the top-level subsystems are clearly defined. Once the subsystems are mature and stable, you can separate them to enable parallel development and to improve the speed with which the model opens. When an individual subsystem’s contents stabilize, you can then separate the subsystem from the model.

• Minimize dependencies between models: By minimizing dependencies between models, you can reduce the likelihood that a change in one model will affect another. If you allow dependencies between models, widespread conflicts can occur that must be resolved with out-of-context model merges (which are very challenging).

• Establish ownership policies: Assigning different model files to different team members can help avoid conflicts when you deliver the model to a shared work area. It can also help speed integration. You should establish the size and scope of each model so that a single person can work on it.

• Avoid broken references: Whenever you move a model partition outside of your configuration management system, you break that model file's references. You have to repair these broken references whenever you reintegrate the model back into the CM system. It can be time-consuming and error-prone to resolve a large number of references in a complicated model.

Page 86: Cours Slides

6 - 7

To partition a model, you can:Create fragments

An element that has been converted into a fragment has this icon:

Create new models from packagesA package that has been made into a model has this icon:

Absorb fragments back into the model

Copy packages from partitions back into the main model

Model Partitioning

Creating a model from a package automatically leaves a shortcut reference to the new model where the package used to be.

Creating a model from a package automatically leaves a shortcut reference to the new model where the package used to be.

Creating a fragment from a model element adds an adornment to the element and creates a separate file for that element.

Creating a fragment from a model element adds an adornment to the element and creates a separate file for that element.

6 - 8

Comments

You can refactor an existing model file into several, smaller model files in Rational Software Architect.

To separate a package from a model into a new model file, right-click the package and then click Create Model From Package.

To reassemble the model after it has been partitioned, you must copy and paste the packages back into the main model.

To create a fragment, select a model element, right-click and select Create Fragment.

To absorb the fragment back into the model, right-click the fragment and select Absorb Fragment.

Page 87: Cours Slides

6 - 9

Partition and Fragment Files

After you have created a partition and a fragment, Rational Software Architect will create new files to represent these elements. You can view all of the files in the Navigator view.

Design Model.emx is the original model that you started with.

Design Model.emx is the original model that you started with.

you have two fragments that have been created in relationship to this model. So you have two .efx files within your project.

you have two fragments that have been created in relationship to this model. So you have two .efx files within your project.

In addition, you specified that you wanted to convert the presentation package into its own model. So there is another .emx file.

In addition, you specified that you wanted to convert the presentation package into its own model. So there is another .emx file.

6 - 10

FragmentsFragments model elements into separate files

Model Element Fragments:All model elements – down to the class level

Activity Diagrams

Composite Structure Diagrams

State Machine Diagrams

Communication Diagrams

Diagrams that cannot be made into Fragments:

Class Diagram

Object Diagram

Freeform Diagram

Deployment Diagram

Component Diagram

When viewing details of a model in the UML model editor, you can see fragments associated with it by clicking the Fragments tab at the bottom of the editor.

When viewing details of a model in the UML model editor, you can see fragments associated with it by clicking the Fragments tab at the bottom of the editor.

Page 88: Cours Slides

6 - 11

Compare and Merge Models

Rational Software Architect allows you to merge model and diagram files using the compare and merge utility.

Compare models to identify changes between model versions.

Merge models when:Parallel development occurs

Alternative approaches are explored

Circumstances dictate

Avoid situations that require frequent merging.

6 - 12

Comments

You can compare two or three models with a common ancestor to find the differences among them outside a source-controlled environment, or within a team environment, using a configuration management system such as ClearCase. A new feature also allows you to compare models without common ancestry.

The Compare feature can be used to compare versions of models just to see what has changed between versions as part of everyday modeling work, particularly in collaborative settings. Compare and merge becomes essential in more complicated team development settings, such as parallel development.

Compare and merge scenarios can often become very complicated and difficult to resolve if they are not carefully controlled. When working with large and complicated models, compare and merge should be avoided except when absolutely necessary.

Page 89: Cours Slides

6 - 13

Merging Models

Begin with a base contributor, the common ancestor of the models you wish to merge.

Have up to three contributors (modified versions of the base model) in a merge session.

1

12

3

Contributor 1Contributor 1

BaseContributor

BaseContributor

Contributor 2Contributor 21

Merge

6 - 14

Comments

The slide shows the simplest and most common compare and merge scenario :

• You and a colleague work on copies (Contributor 1 and Contributor 2) of a model file (Base Contributor) that is under source control.

• You both make changes to your copies.

• Your colleague checks in changes (creating Base Contributor version 2).

• You try to check in changes.

• The SCM system detects that the latest version in the repository (BC version 2) is not the version you checked out and modified (BC version 1).

• The SCM system detects that your version cannot replace the version in the repository, or else you lose your colleague’s changes.

• The SCM system attempts to merge your changes into the latest version (BC version 3) in the repository.

Page 90: Cours Slides

6 - 15

Compare Editor

Structural Differences•Accept or Reject changesStructural Differences•Accept or Reject changes

Merged ModelMerged Model

Left Contributor Left Contributor Right ContributorRight Contributor

6 - 16

Comments

Given multiple versions of a model that were modified in parallel, you can merge the models by starting a merge session and using the Compare editor. Once you resolve all conflicts among the contributors, you can save the final merged model as a new version. When you compare two versions of a model, their differences are displayed in the Difference editor.

When working with a version control system, such as ClearCase, a merge session may start automatically when you check in a file under version control. After merging models, saving the merged model, and closing the session, the process that initiated the check-in process continues.

Automatic mergesDuring an automatic merge, all differences and trivial conflicts are merged automatically. If the software automatically makes a resolution, a resolution icon is displayed beside the resolved difference in the Structural Differences view. The software also generates a merged model for these resolutions.If the merged model contains conflicts, a conflict icon is displayed beside each conflicting element in the Structural Differences view.

Manual mergesDuring a manual merge, you resolve the differences or conflicts. You can right-click a difference or conflict and then Accept or Reject it. You can also accept or reject groups of differences or conflicts.You can start a manual merge session in the following ways:

• Merge models in a ClearCase version or history interface

• Compare models in an Eclipse resource view that has one or more modifiable resources

Page 91: Cours Slides

6 - 17

Compare and Merge FeaturesDiagram notational merge

Merge notational changes individually, just as you can with diagrams in a model file

Revert session

Allows you to restart a merge without exiting the merge application

Package composite deltas

Allows you to accept and reject changes at any package level in the hierarchy

Validating models before ClearCase check-in

Validate each model merge before committing the update to ClearCase

Field-level merge

Resolve conflicting changes by merging multi-line text fields in which scripts or snippets of java are embedded

Full context merge

Allows you to merge the entire model instead of merging individual artifacts

Automated profile upgrade

Automatically upgrades to the latest profile version

6 - 18

Comments

While you are learning how to handle merges, it is possible to get far into a merge only to realize that the approach is incorrect and you need to start over. The Revert Session button makes this easy. It is particularly helpful when you are in the middle of a ClearCase operation, because ClearCase merges all artifacts in sequence, and interrupting and restarting the flow can be tedious.

Validating models before ClearCase check-in is useful during a long ClearCase operation, such as when you are delivering many changed artifacts. It can be extremely helpful because you don’t need to remember which models need validation. Rather you can perform the validation immediately after the merge while all decisions are fresh in your mind.

Full context merge allows you to synchronize the workspace to the repository in a logical model mode. It provides a stronger merge experience, as each delta and conflict is generated with knowledge of the full context of the models. This eliminates a common source of corruption: the resolution of related conflicts to opposite contributors.

The Automated profile upgrade feature prevents the merge from aborting when a contributor is found to be using a newer version of a profile.

Page 92: Cours Slides

6 - 19

Lab14: Compare and Merge a ModelIn this lab, you will learn how to compare and merge a model using the Model Compare editor.

After completing this lab, you will be able to:

Compare models

Merge models

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select 14 Compare and Merge Models.

Follow the directions indicated on the Cheat Sheet.

6 - 20

Combine ModelsPending Changes•Mark changes from source model to be applied to target model.

Pending Changes•Mark changes from source model to be applied to target model.

Source ModelSource Model Target ModelTarget Model

You can combine models that are not related by a common ancestry, such as independently created models.

You (as a modeler) might use this feature if you want to assemble a number of models, ones that were created informally at the beginning of your project, into a formal set of models that can be managed with version control.

Change DescriptionChange Description

Page 93: Cours Slides

6 - 21

Lab15: Combine Models

In this lab, you will learn how to combine dissimilar models.

After completing this lab, you will be able to:

Combine models

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select 15 Combine Models.

Follow the directions indicated on the Cheat Sheet.

Page 94: Cours Slides

6 - 23

Model Publishing

Publish the entire model to HTMLPublish reports to PDF

Model diagram report

Sample UML metric report

6 - 24

Comments

When you publish a model as a Web site, you indicate the scope of data to include, how much about that data to include, and where you want to save the published model.

Each published model is a separate, wholly contained entity with its own root page. When you publish, theroot page has a link to each included model. It is the current version of the model that is published.

Reports can also be generated using IBM® Rational® SoDA®. SoDA provides cross-tool reporting. It does the work of connecting to a Rational Software Architect model and retrieving data relevant for its reports. In SoDA, you can customize the templates to get the layouts and data that you want.

Page 95: Cours Slides

6 - 25

Lab16: Publish a Model and Generate a Model Report

In this lab, you will learn how to publish a model and generate a model report.

After completing this lab, you will be able to:

Publish a model

Generate a model report

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select 16 Publish and Generate Reports.

Follow the directions indicated on the Cheat Sheet.

Page 96: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 7 : Applying Patterns and Transformations

Page 97: Cours Slides

7 - 3

Module Objectives

Apply reusable assets in the development process.

Apply a pre-built design pattern in Rational Software Architect.Perform model transformations

Forward transformations

Reverse transformations

7 - 4

Comments

This module introduces patterns and asset-based development in Rational Software Architect, methods for reusing effective development artifacts and applying best practices in a project.

Patterns offer a way to capture, reuse, and share solutions to common problems and a common language for describing problems and solutions. Patterns implemented in a development tool like Rational Software Architect help automate access to, and the application of, patterns. Design patterns and transformations in Rational Software Architect help automate routine modeling and coding tasks.

Page 98: Cours Slides

7 - 5

What is a Pattern ?

A solution to a recurring problem in a given context.Patterns abstract a way of solving a design problem from the details of any particular technology

A pattern:Provides a solution to a specific problemRequires a strategy for applying the pattern in its context.Comes with consequences (advantages and disadvantages) of applying the pattern.

Page 99: Cours Slides

7 - 7

Patterns in Rational Software ArchitectThree features for automating model development with patterns:

Design Patterns: Add details to the model. Provide model markup and structures that can be transformed into code.

Observer pattern

Session Facade pattern

Transformations: Translate elements from one model into elements in a different model1. Model-to-model 2. Model-to-code3. Code-to-model

Java Emitter Templates (JET)transformations: a type of transformation that provides customizable, text-based transformations and code templates Transformations

Pattern

1

2

3

7 - 8

Comments

In Rational Software Architect, design patterns and transformations are two forms of pattern implementations. Design patterns are sets of model elements that are parameterized to be fitted into any existing model, to speed model development and mark up the model with UML stereotypes from a profile recognized by a model transformation. Transformations can be used to translate model elements from one model to another automatically, to speed the transition of elements from, for example, analysis to design or from design to implementation.

Design PatternsDesign patterns allow you to make use of existing solutions developed in the same type of model that you are working on. So, for example, the Observer GoF pattern in Rational Software Architect contains design-level UML classes that can be applied in a design-level UML class model. Patterns have parameters so that you can customize them for a specific context, but patterns do not automatically translate themselves to work in different model types. You cannot, for example, apply a design pattern and get a code-level idiom in Java code without using transformations.

TransformationsTransformations take elements from one model and translate them into elements of a different model. For example, you can apply a transformation to move from a platform-independent model to a platform-specific model as you add in details about the platform and get closer to the implementation. When adding levels of refinement, you can transform from a platform-specific model to another, adding more details without changing the model type. Transformations are often applied to whole models, but they can be applied to selections from models as well.

Page 100: Cours Slides

7 - 9

The Pattern Explorer view

Design Pattern

Transformation

JET Transformation

Right-click to apply, copy, move, or configure the pattern, or to view documentation.

Icons in the Pattern Explorer view

7 - 10

Comments

The Pattern Explorer view, associated with the Modeling Perspective, is split into two panes:

Pattern tree: Presents a hierarchical list of patterns, organized into pattern groups.

• By right-clicking items in the pattern tree, you can copy and move patterns and groups, and delete and rename groups.

• By right-clicking a pattern, you can choose to apply the pattern using the Apply Pattern wizard, or open the pattern’s full documentation in Help.

• By dragging a pattern onto the drawing surface, you can create a pattern instance that can have its parameters bound by drag-and-drop actions.

Info pane: The information pane has two tabs that provide information about the pattern selected in the pattern tree.

• The Overview presents a participants class diagram, showing what objects participate in the pattern.

• The Short Description provides a brief summary of the problem and the solution the pattern provides. If you have a pattern participant selected, the Short Description describes the participant.

Page 101: Cours Slides

7 - 11

Design Patterns in Rational Software ArchitectA design pattern in Rational Software Architect adds details to a model automatically. Use design patterns to add:

Model elements and relationshipsClasses, packages, and so on

Details to model elementsAttributes, operations

Markup to the modelStereotypes from a UML profile recognized by transformations

A design pattern:Has parameters that are used to bind the pattern to the modelCan be reapplied to or unbound fromthe modelUsually affect small areas of the model when applied

7 - 12

Comments

Like all pattern implementations, a design pattern in Rational Software Architect provides a software solution to a recurring problem within a given context. The limitations of a pattern are determined by the pattern design, and the intent of the pattern author. The scope of a design pattern in Rational Software Architect is most often a singular problem, affecting a small part of the model when applied, such as a specific use case being modeled.

A design pattern can :

• Add elements and relationships to a model, such as groups of classes, actors and use cases, packages, and so on.

• Add details to model elements, such as attributes and operations to a class.

• Add markup to the model. In other words, add stereotypes to model elements from a UML profile to create elements such as analysis classes, subsystems, and platform- and technology-specific elements.

Page 102: Cours Slides

7 - 13

Design Pattern Notation

Parameters

Pattern InstanceA UML Collaboration

Binding Indicator

Parameter Type

Multiplicity Bound Arguments

7 - 14

Comments

Pattern instances in Rational Software Architect are represented with UML collaborations that are stereotyped «pattern instance».

A pattern instance includes the following features :

• Parameters: Each parameter in the pattern instance takes an argument. When bound, the icon changes to a blue box containing a double arrow.

• Parameter Multiplicity: The parameter’s multiplicity is shown in brackets after the parameter name.

• Parameter Type: After the multiplicity, an icon or text shows the parameter type (for example, class, interface, or operation).

• Binding Indicator: An icon or text that shows whether the parameter has an argument bound to it. An empty blue box indicates that no arguments are bound to the parameter. A binding icon shows that arguments are bound to the parameter.

• Arguments: One (or more, if the pattern allows it) arguments may be bound to the parameter.

Page 103: Cours Slides

7 - 15

Applying a Design PatternCreate a pattern instance by dragging a pattern from the Pattern Explorer view to an open diagram, or to a model in the Project Explorer view.

1

Drag an existing class from the diagram or Project Explorer view to a pattern parameter to make it an argument of the pattern, or…

2Use the action bar to create an argument value for a parameter.3

7 - 16

Comments

Applying a pattern is a two-step process: you first add an instance of a pattern to the model, and then select (or “bind”) argument values for the pattern—either existing elements of the model or new elements that you create while applying the pattern.

There are two ways to apply patterns in Rational Software Architect :

• Apply the pattern using the Apply Pattern wizard. Select a model as the location for the pattern instance and then select or create elements to use as argument values. You can continue to add argument values to the pattern instance after using the wizard.

• Apply the pattern interactively, using the Pattern Explorer view and the diagram editor. Drag the pattern from the Pattern Explorer and drop it onto an open diagram. If you click or hover the mouse over a parameter in the pattern instance, the action bar will appear, allowing you either to select an existing element in the model or to create a new one as the argument value. You can also drag and drop an existing model element, either from the diagram or from the Model Explorer view, onto a pattern instance’s parameter to bind that element to the parameter.

To “unapply” a pattern, right-click the pattern instance and then click Patterns > Unapply. The pattern instance is deleted and all bindings to model elements are deleted.

Page 104: Cours Slides

7 - 17

Gang of Four (GoF) Design Patterns

Rational Software Architect has the 23 GoF design patterns built in:

Can be used as the basis for custom patterns

These patterns support widely recognized best practices

Help seed the code with transformation extensions

ExampleObserver is a GoF behavioral design pattern:

One-to-many dependency between objects When one object changes state, observers are notified and updated automatically

7 - 18

Comments

The 23 Gang of Four design patterns are included with Rational Software Architect’s patterns library. The Gang of Four patterns are grouped into Behavioral, Creational, and Structural varieties. For example, the Behavioral set of patterns includes the Observer pattern. Observer is used in cases when a ConcreteSubject object needs to inform other objects that have registered an interest that some change inside it has occurred. When these objects have been notified, they interrogate the ConcreteSubject object to see if the change requires them to take action (see Gamma et al., pp. 293–303).

Page 105: Cours Slides

7 - 19

Complete the following tasks:Examine the Observer design patternCreate the UML modeling projectSelect a PatternApply a PatternView Pattern Relationships

To begin the lab:In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 17: Apply Patterns.

Follow the instructions indicated in the cheat sheet.

Lab 17: Apply Patterns

7 - 20

TransformationsTransformations create elements in a target model (domain) based on elements from a source model

Often, the source domain is more abstract than the target domain

Examples:Based on a use-case model, create an analysis model that realizes the use cases following a modeling standardBased on the analysis model, create a design model that incorporates elements of the company’s security and persistence frameworks, and follows a modeling standardStarting with a UML model, apply a built-in transformation to create code elementsTake existing code and apply a transformation to abstract out the design elements.

Transformations

Page 106: Cours Slides

7 - 21

Transformations in Rational Software ArchitectThe following transformations are built in to Rational Software Architect:

UML to UMLUML to LDM

UML to codeUML to Java V1.4UML to Java V5.0UML to C++UML to EJBUML to WSDLUML to XSD

Code to UMLC++ to UMLJava to UML

UML to SQL / DB / RelationalTransformations can be custom built using the Plug-in Development Environment.

7 - 22

Rational Data Architect

Enterprise Data Modeling and Integration Design tool

Eclipse-based user experience

Visualize

entity relationship diagram, topology

diagram

Standardize

naming standards, normalization,

enterprise rules

Federate

federated schema, nicknames, views

based on nicknames

XML

XML schema editorXML mapping

XML shredding

Model

logical and physical data model, entity

relationship diagram, storage diagram,

domain model

Relate

model to model mappings, mapping

discovery, ER to XML mapping

Synchronize

model to model comparison and sync,

model to database comparison and sync

Code

SQL editor, stored procedures wizard, debugger for DB2

Teamversioning

governance

Import/Exportmodelsglossary

Storemodels

SQL and XML files

Integraterequirements

transformations

Page 107: Cours Slides

7 - 23

Create a Database Model

Initiate information design with a transformation from system architecture models orReverse engineer your current databases to create a data model orImport your existing data model from other tools orCreate the model based on a model template

7 - 24

Integration with Rational Software ModelerRational Software Modeler and Rational Data Architect installation in the same shell instance

Same user experience as in Rational Data ArchitectModeling perspective includes functionality for data modeling and UML data modelingData perspective includes the same physical metamodelsand features as in Rational Data Architect

Page 108: Cours Slides

7 - 25

Model Transformation

Transformations between application modeling in UML and data modeling in Rational Data Architect

Top-down application design (UML-to-LDM) generate logical data model from analysis modelGenerate data access

model or service model from logical data model (LDM-to-UML)

Page 109: Cours Slides

7 - 27

Reverse Transformations

Java and C++ transformations can be reversedEnable a reverse transformation in the transformation configurationAllows you to synchronize changes between UML models and C++ and Java code

If necessary, compare and merge session starts when transformation is run

7 - 28

Comments

In the transformation configuration of a C++ or Java transformation, you can enable a reverse transformation (so that you can always transform both model to code and code to model). The reverse transformation transforms Java source objects into UML objects and stores these objects in the UML model that you specify. In the process, certain platform-specific details are optionally removed.

Forward and reverse transformation can be used to maintain both a detailed design model in UML of the solution and its detailed code, so that you can make changes either at the level of the code itself (either using the code editor, or visually, using UML visualization), or in the model.

Page 110: Cours Slides

7 - 29

Reconciliation: Merge the Transformed Model

The combine dissimilar models feature is used when you apply a transformation to update a conceptual model from Java or C++ code.

Pending Changes•Mark changes from source model to be applied to target model.

Pending Changes•Mark changes from source model to be applied to target model.

Source ModelSource Model Target ModelTarget Model

Change DescriptionChange Description

7 - 30

Comments

The combine dissimilar models feature is used when you apply a transformation to update a conceptual model from Java or C++ code. This step in the reverse transformation allows you to select which features from the source to keep in the target. It is also used to reconcile changes, when changes in the model and the code need to be merged.

Page 111: Cours Slides

7 - 31

UML Visual Development

C++ and Java code can be visualized with class and sequence diagrams

Changes to the code update the diagramChanges to the diagram update the codeHarvest classes into UML models

7 - 32

Comments

Rational Software Architect includes visual editing (or UML visualization) capabilities for Java and C++ code, including class and sequence diagrams. With these tools, you can develop projects using your existing workflow and leverage UML to:

• Visualize code

• Document code

• Construct and maintain code visually

You can create visualizations that abstract many of the code details to simplify the understanding of code structure and behavior. Content in the diagrams is configurable so that you can define your own context. Visual editing automates the expansion of the diagrams and serves to facilitate the discovery of an application.

You can export or copy and paste diagram images into documents, such as Microsoft Word. To obtain detailed reports, you can publish diagrams and code into a Portable Document Format (PDF) report that can be archived or distributed for review.

Visual editing can make coding more efficient. It includes support for creating classes, attributes (or fields), methods, and relationships in the diagram (excluding topic diagrams) automatically.

Page 112: Cours Slides

7 - 33

Lab 18: Run a UML to Java Transformation

Complete the following tasks:Task 1: Create the UML modeling projectTask 2: Create UML ClassesTask 3: Transform UML Classes to Java ClassesTask 4: Perform reverse transformation

To begin the lab:

In Eclipse, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 19: Run a UML to Java Transformation.

Follow the directions indicated on the Cheat Sheet.

UML to Database Generation with RSA and RDA

Page 113: Cours Slides

7 - 35

Rational Software Architect

Rational Software Architect (RSA) is an application modeling tool that enables an organization to model, analyze, design, and generate applications. It leverages model-driven development with UML for creating well-architected applications and services. RSA :

• Extends the Eclipse open and extensible software development environment.

• Exploits the latest in modeling language technology, enabling flexible modeling across a variety of different domains including UML 2, UML-like notation for Java and more.

• Enables flexible model management for parallel development and architectural re-factoring; for example, you can split, combine, compare and merge models and model fragments.

• Eases the transition between the architecture and code with model-to-model and model-to-code transformations, including reverse transformations.

• Eases the design-to-code experience for Java™/J2EE™, Web Services, SOA and C/C++ applications.

• Includes all of the features of IBM Rational Application Developer for an integrated design and development experience.

Classes in RSA can be anything that is created, assembled, inspected, tested, modified, or worked upon in applications.

7 - 36

Figure 1. Sample Class Model in RSA Invoice project

Figure 1 below shows a few sample classes, and their associations, – Invoice, InvoiceItem, ProductInvoiceand ServiceInvoice from a sample RSA project called Invoice. Note that there are three different types of associations shown: composition (invoice – item), aggregation (main – associate) and simple association (product - service). These associations are discussed later in this article.

Page 114: Cours Slides

7 - 37

Rational Data Architect

Rational Data Architect (RDA) is an enterprise data modeling and integration design tool. It simplifies data modeling and integration design, enabling architects to discover, model, visualize and relate diverse and distributed data assets. Using RDA one can:

• Create logical and physical data models.

• Compare and synchronize the structures and elements of two data models.

• Analyze data models for correctness and conformance to enterprise standards.

• Discover, explore and visualize the structure of data sources.

• Use mapping to discover potential relationships and identify relationships between disparate data sources.

Figure 2 below shows a sample LDM from the sample RDA project called Invoice. Note that there are three types of relationships: identifying (item – invoice), non-identifying (associate - main) and many-to-many (service - product). Note also that key inheritance occurs for generalizations and key migration occurs for identifying and non-identifying relationships. This is discussed later in this article.

7 - 38

Figure 2. Sample Logical Data Model in RDA “Invoice” project.

Logical Data Models were frequently overlooked in the software development life cycle, but have become increasingly important for many reasons. LDM provides a view of the data entities in a business or an enterprise without exposing implementation details; it separates data semantics from implementation and is especially useful when dealing with today’s increasingly complex and heterogeneous IT environments. Other logical or physical models, such as service models, message models, class models and data warehousing models, can all be traced to a common LDM. With state-of-art, model-driven development tooling such as Rational Data Architect and Rational Software Architect, the user can even generate downstream models and physical implementations based on LDM. It is not an exaggeration to say LDM is the information hub of an organization. LDM allows an enterprise view of data, which in turn helps to reduce data redundancy, improve data quality, and speed up integration.

Page 115: Cours Slides

7 - 39

Integration Scenarios

There are three primary scenarios for the integration of application modeling and data modeling: top-down, bottom-up and meet-in-the-middle. The following sections describe each of the scenarios in more detail. The assumption is that two main IT roles are involved – The Application Modeler performs application modeling, and the Data Modeler carries out data modeling.

Top-down: Application Modeling to Data Modeling

In the top-down scenario, class modeling elements (classes, properties and associations) in RSA are transformed into LDM modeling elements (entities, attributes and relationships) for use in RDA. The steps in this scenario are :

1. The Application Modeler models applications in RSA. Business or application data is captured as class models.

2. The Application Modeler transforms part, or the whole, of a class model into a LDM using the UML-to-LDM transformation.

3. The Data Modeler accesses and imports the LDM in RDA 4. The Data Modeler transforms the LDM into a Physical Data Model (PDM) and further generates

database schema using RDA.

7 - 40

Figure 3. Top-down Integration Scenario: Application Modeling to Data Modeling.

The following diagram shows the interaction between the Application Modeler and the Data Modeler in the top-down scenario:

Page 116: Cours Slides

7 - 41

We recommend organizations consider using the top-down scenario when a combination of the following conditions is true:

• Application modeling is driving the project initiative.

• Applications cut across business units or silos.

• Applications are object centric and have limited requirements for data management other than persistence.

• LDM is not available.

• Physical database schema does not exist.

However, people sometimes adopt the top-down scenario for the wrong reasons. The following (in quotes) are some poor reasons for deciding to adopt the top-down scenario; they are followed with an counterargument against adopting the top-down scenario:

• “We have never done LDM before.” There is always a first time. If your organization has cut corners on LDM in the past, the sooner LDM efforts start, the better off the organization will be in the long term.

• “We don’t have LDM skills.” A good data modeler is worthy of investment so you should hire someone or develop people internally with LDM skills.

• “We only need to persist data for use by this application.” Most enterprise applications will need to share persistent data with other enterprise applications. A LDM will reduce Total Cost of Ownership.

Finally, the cons of using the top-down approach need to be addressed:

• Data models may become tightly-coupled with particular applications.

• Class models may not be readily reusable in LDM due to de-normalization and object-centric modeling in application modeling.

7 - 42

Bottom-up: Data Modeling to Application Modeling

In the bottom-up scenario, LDM modeling elements (entities, attributes and relationships) are transformed into class modeling elements (classes, properties and associations) for use in RSA. From an enterprise perspective, in the long run, it is preferable to use the bottom-up than the top-down approach because of the limitations of the top-down approach and the many benefits coming with LDM, as mentioned in the previous sections. In addition, the bottom-up approach allows the separation of concerns – the Data Modeler concentrates on developing an enterprise-wide vocabulary and data models; the Application Modeler focuses on application modeling.

The steps in this scenario are:

1. The Data Modeler models data in a LDM in RDA. In those cases where there’s an existing database schema but no physical or logical model, the Data Modeler derives a PDM from the existing schema, and transforms the PDM into a LDM.

2. The Data Modeler transforms part, or the whole, of a LDM into a class model using the LDM-to-UML transformation.

3. The Application Modeler accesses and imports the class model in RSA.

Page 117: Cours Slides

7 - 43

Figure 4. Bottom-up Integration Scenario: Data Modeling to Application Modeling

The following diagram shows the interaction between the Application Modeler and the Data Modeler in a bottom-up scenario:

7 - 44

We recommend that organizations consider using the bottom-up scenario when a combination of the following conditions is true:

• A LDM on that domain is already available. • There are several existing data sources (relational databases or other). • The organization wants to de-couple data from applications and manage data from the enterprise-

level. • The organization wants to create reusable information across the enterprise. • Multiple initiatives are involved; for example, business application rewrite along with a requirement

to tie into a data warehouse. • Applications are complex and frequently in flux. • Applications are data-centric. • The project needs to consider, at least in part, existing data models. This can happen if you have

legacy applications, third-party applications, or standards-based interfaces to satisfy.

Finally, the bottom-up approach also comes with a price:

• Some semantics may be lost during the transformation from a LDM to a class model because LDMshold richer data semantics (as in, primary keys) than class models.

• Because LDMs tend to be more complete than class models, if LDMs are pushed into class models without appropriate communication, the details might overwhelm Application Modelers. If the Application Modeler doesn’t understand LDMs, they may end up re-inventing the wheel and define entities or attributes that are already in LDMs. Thus, proper education and communication between the Data Modeler and the Application Modeler is essential. Ideally Application Modelers should be educated on how to understand and leverage logical data models.

Page 118: Cours Slides

7 - 45

Meet-in-the-middle

The previous sections describe both the top-down and bottom-up scenarios, which primarily focus on new development. However, change is the only constant in software development. Application modeling and data modeling should rarely be a one-time shot. To avoid obsolescence, application modeling and data modeling need to be iterative and deliver business value quickly. Thus, the tooling of application modeling and data modeling should support model update capability. For example, changes in class model can be updated and reflected in LDM either through automated (for simple changes) or manual (where complex heuristics are required) methods for model convergence, and vice versa from LDM to class model. In reality, it is not an easy task to manage the synchronization and change management of class models and LDMs as they reside in different tools and are often performed by two distinct roles – the Application Modeler and the Data Modeler. Nevertheless, careful planning, excellent communication and disciplined change management can effectively utilize the tooling features and achieve end-to-end data governance.There are two use cases in the meet-in-the-middle scenario, depending on if you want to update your class models or LDMs:

1. Once class models are transformed into LDMs and used in RDA, the Application Modelers make some changes in the class models such as adding new properties. We want to update the LDMs in RDA to reflect the updated class models. This use case is an extension of the top-down scenario, with the added complexity of synchronizing existing LDMs in RDA with the new or modified information.

The steps in the first use case are:

1. The Data Modeler uses LDM version 1 in RDA, which was previously transformed from class model version 1 in RSA.

2. The Application Modeler modifies class model version 1 in RSA, then transforms the updated class model (version 2) as LDM version 1+.

3. The Data Modeler accesses and imports LDM version 1+ in RDA.

4. The Data Modeler compares and merges LDM version 1+ and version 1 into LDM version 2 in RDA.

7 - 46

Figure 5. Meet-in-the-middle Scenario – Application Modeling to Data Modeling

The following diagram shows the interaction between the Application Modeler and the Data Modeler in the first use case:

Once the LDMs are transformed into class models and used in RSA, the Data Modelers make some modifications to the LDMs, such as adding new columns. You should update the class models in RSA to reflect the updated LDMs. This use case is very similar to the bottom-up scenario, with the added complexity of synchronizing existing class models in RSA with the new or modified information. The steps in the second use case are:

1. The Application Modeler uses class model version 1 in RSA, which was previously transformed from LDM version 1 in RDA.

2. The Data Modeler modifies LDM version 1 in RDA, then transforms the updated LDM (version 2) as class model version 1+.

3. The Application Modeler accesses and imports class model version 1+ in RSA. 4. The Application Modeler compares and merges class model version 1+ and version 1 into class

model version 2 in RSA.

Page 119: Cours Slides

7 - 47

Figure 6. Meet-in-the-middle Scenario – Data Modeling to Application Modeling

The following diagram shows the interaction between the Application Modeler and Data Modeler in the second use case:

Model TransformationsModel transformations are at the core of integrating application modeling with data modeling. In the top-down scenario discussed above, class models are transformed to logical data models using the UML-to-LDM transformation; in the bottom-up scenario, logical data models are transformed to class models using the LDM-to-UML transformation.

7 - 48

UML Class Model

A class model defines:

• Model and packages: these serve as the structural components and namespaces for other model elements. A package can contain packages, diagrams, classes, associations, association classes, and data types.

• Classes: they represent concepts within the system being modeled. Instances of the same class share common characteristics. A class has:

o Properties: descriptions of the characteristics of a class. A property has, among other things, a type that defines the type of value it can have.

o Generalizations: a class may have generalizations, as in, taxonomic relationships, between it and more general classes. The class is fully consistent with the more general class and contains additional properties.

• Associations: these represent semantic relationships between two classes that involve connections among their instances. In addition to the simple form of association, there are two additional forms:

o Aggregation: a form of association that specifies a whole-part relationship between an aggregate (a whole) and a constituent part.

o Composition: a form of aggregation with strong ownership of parts by the composite (whole) and coincident lifetime of parts with the composite. A part may belong to only one composite at a time.

• Association classes: an association class is an association that is also a class. An association class connects two classes and has properties.

• Data types: a data type is a descriptor of a set of values. Data types include: o Predefined primitive types: Boolean, Number, String, UnlimitedNaturalo User defined data types: primitive types or enumerations

Please refer back to Figure 1 for the sample class model.

Page 120: Cours Slides

7 - 49

RDA Logical Data Model

A logical data model defines:

• Packages: these serve as the structural components for other model elements. A package can contain packages, diagrams, entities, and domains.

• Entities: they represent concepts, events, persons, places, or thing about which information is kept. Instances of the same entity share common characteristics. Entities may be either independent or dependent. An entity whose instances cannot be uniquely identified without determining its relationship to another entity or entities is a dependent entity; otherwise, it is an independent entity. An entity has:

o Attributes: descriptions of the characteristics of an entity. An attribute has, among other things, a type that defines the type of value it can have.

o Primary key: an attribute or attributes that uniquely identify an instance of an entity o Generalization: an entity may have generalizations, i.e., taxonomic relationships, between it and

more general entities. The entity is fully consistent with the more general entity and contains additional attributes.

• Relationships: these represent connections, links, or associations between two entities. There are three kinds of relationships:

o Identifying relationship: a relationship whereby an instance of the child entity is identified through its association with a parent entity. The primary key attributes of the parent entity become primary key attributes of the child.

o Non-identifying relationship: a relationship whereby an instance of the child entity is not identified through its association with a parent entity. The primary key attributes of the parent entity become non-key attributes of the child.

o Many-to-many relationship: an association between two entities in which each instance of the first entity is associated with zero, one, or many instances of the second entity and each instance of the second entity is associated with zero, one, or many instances of the first entity.

• Data types: a data type is a descriptor of a set of values. Data types include: o Predefined data types: BINARY, BLOB, BOOLEAN, CHAR, CLOB, DATALINK, DATE,

DECIMAL, DOUBLE, FLOAT, INTEGER, INTERVAL, LONG, ROWID, SHORT, TIME, TIMESTAMP, VARBINARY, VARCHAR, XML

o User defined data types: atomic domains

Please refer back to Figure 2 for the sample logical data model.

7 - 50

Top-Down: Class Model to Logical Data Model

From the above discussions it can be seen that the UML class model and the RDA logical data model match each other very well in modeling constructs and semantics. As a result, transforming a class model to a logical data model generally is straightforward and incurs no information loss. Table 1 shows the mapping from a class model (source) to a logical data model (target). In the table it is worth noting:

• A class does not have primary key; it has an implicit OID (object identifier). This is transformed to a surrogate key.

• A simple association is transformed to a non-identifying relationship if either association end has a multiplicity of 0.1 or 1; otherwise it is transformed to a many-to-many relationship.

• A property may have class reference as type, which has identical semantics as an aggregation. A class reference is therefore transformed to a non-identifying relationship.

• Association class is a concept which does not exist in the logical data model. It is transformed to an entity and two relationships to preserve the semantics of association class.

Table 1. UML-to-LDM Mapping

Page 121: Cours Slides

7 - 51

Figure 7. Logical Data Model Generated by the UML-to-LDM Transformation

Figure 7 shows the target logical data model generated by the UML-to-LDM transformation using the sample class model in Figure 1. In comparing the source and target models, please note:

• A surrogate key (as in, Invoice ID for Invoice) has been generated for each entity.

• Key inheritance (as in, Invoice ID from Invoice to ProductInvoice) takes place for generalization.

• Key migration (as in, Invoice Id to invoiceInvoice Id from Invoice to InvoiceItem) takes place for composition.

• Key migration (as in, Invoice Id to mainInvoiceID from Invoice to Invoice) takes place for aggregation.

• For key migration, by default, the child foreign key attribute name is generated by prefixing the parent role name to the parent primary key attribute name.

7 - 52

The UML Logical Data Model Profile

Not all classes defined during application modeling necessarily relate to data modeling or have persistent data; similarly, not all primitive types or enumerations necessarily corresponding to data types required for data modeling or persistent data. The UML Logical Data Model Profile can be used to:

• Allow user control over what classes, primitive types, or enumerations to transform to a logical data model.

• Specify concepts important to logical data modeling but missing in UML including:

o Primary key attribute(s)

o User defined data types: more information than what can be specified with primitive types or enumerations

o Referential integrity: as in, parent delete rule

In essence, the UML Logical Data Model Profile enables a user to perform logical data modeling using UML in RSA.

Page 122: Cours Slides

7 - 53

Table 2. The UML Logical Data Model Profile

Table 2 shows the stereotypes and attributes provided by the Logical Data Model Profile. Please note:

• Enumeration or primitive types may be stereotyped as Domain. If so, additional information (as in, the base type) can be specified.

• Classes may be stereotyped as Entity. By default, they are persistent and do not use surrogate key.

• Properties are always stereotyped as Attribute. By default, they are not required.

• Properties may be stereotyped as PrimaryKey.

• Associations and association classes are always stereotyped as Relationship. If so, foreign key attribute names (in the form of primary key attribute name, foreign key attribute name pairs) and parent delete rule (NONE / RESTRICT / CASCADE / SET NULL / SET DEFAUL) can be specified. In the future, child delete rule can also be specified.

7 - 54

Table 3. UML-to-LDM Mapping with the Logical Data Model Profile

Table 3 shows the mapping from a class model (source) to a logical data model (target) when the Logical Data Model Profile is applied to the class model. It is worth noting:

• Only classes stereotyped as Entity are transformed to entities. By default, they are persistent and do not use surrogate key.

• Properties stereotyped as PrimaryKey are transformed to primary key attributes, in which case the generated attributes are required.

• For associations and association classes, if foreign key attribute names and parent delete rule are specified, they are used for the generated relationship. In the future, child delete rule, if specified, will also be used.

• Only primitive types / enumerations stereotyped as Domain are transformed to atomic domains.

Page 123: Cours Slides

7 - 55

Figure 8. Sample Class Model with the Logical Data Model Profile

Figure 8 shows the sample class model wit the Logical Data Model Profile applied. Please note:

• All primitive types have been stereotyped as Domain.

• All classes have been stereotyped as Entity.

• The ID attributes of Invoice and InvoiceItem have been stereotyped as PrimaryKey.

7 - 56

Fig. 9. LDM Generated by the UML-to-LDM Transformation with the LDM Profile

Figure 9 shows the target logical data model generated by the UML-to-LDM transformation. The source of the sample class model used in this transformation is from Figure 8. In comparing the source and target models, please note:

• No surrogate key has been generated. Instead, primary key attributes (the ID of Invoice and ID of InvoiceItem) have been generated.

• Key inheritance (the ID from Invoice to ProductInvoice) takes place for generalization.

• Key migration (the Invoice Id to ivoiceID from Invoice to InvoiceItem) takes place for composition.

• Key migration (the ID to mainID from Invoice to Invoice) takes place for aggregation.

• For key migration, by default, the child foreign key attribute name is generated by prefixing the parent role name to the parent primary key attribute name.

Page 124: Cours Slides

7 - 57

Bottom-Up: Logical Data Model to Class Model

Similar to the top-down transformation, transforming a logical data model to a class model generally is straightforward and incurs no information loss. Table 4 shows the mapping from a logical data model (source) to a class model (target).

Table4. LDM-to-UML Mapping

7 - 58

Figure 10. Class Model Generated by the LDM-to-UML Transformation

Figure 10 shows the target class model generated by the LDM-to-UML transformation. The source of the sample logical data model used in this transformation is from Figure 2. In comparing the source and target models, please note:

• Primary key information (the ID of Invoice) is lost in the class model since UML class model does not support the concept of primary key.

• Foreign key attributes (the invoiceID of InvoiceItem) are not transformed to the class model since they are generated by key migration in the logical data model and are not inherent to the model.

Page 125: Cours Slides

7 - 59

Table 5. LDM-to-UML Mapping with the Logical Data Model Profile

In order to preserve logical data modeling concepts and information in the target class model, the Logical Data Model Profile can be applied to the target class model during the LDM-to-UML transformation. Table 5 shows the mapping from a logical data model (source) to a class model (target) with the Logical Data Model Profile applied. Please note:

• Entities are transformed to classes stereotyped as Entity.

• Primary key attributes are transformed to properties stereotyped as PrimaryKey.

• Atomic domains are transformed to primitive types and enumerations stereotyped as Domain.

7 - 60

UML Model Generated by the LDM-to-UML Transformation with the LDM Profile

Figure 11 shows the target class model generated by the LDM-to-UML transformation, with the Logical Data Model Profile applied to the target class model. The source of the sample logical data model used in this transformation is from Figure 2. In comparing the source and target models, please note:

• Primary key information (the ID of Invoice) is preserved in the class model.

• Foreign key attributes (the invoiceID of InvoiceItem) are not transformed to the class model since they are generated by key migration in the logical data model and are not inherent to the model.

Figure 11. UML Model Generated by the LDM-to-UML Transformation with the Logical Data Model Profile

Page 126: Cours Slides

7 - 61

Conclusion

This article provides a high-level overview of RSA and RDA and their integration. You viewed three integration scenarios and learned adoption criteria for the top-down scenario and the bottom-up scenario, respectively. In order to create well-formed application models and data models, it is not enough just to know how to use the tooling. It is equally important to know the reasons for adopting a certain scenario, to define a robust and repeatable change management process, and to create a strategy that leverages the synergy between application modeling and data modeling. Successful integration of application modeling and data modeling may require organizational and cultural changes as well. Hopefully, this article will help you jump-start your integrated application modeling and data modeling efforts.

The article also provides a detailed discussion of the UML-to-LDM and the LDM-to-UML transformations as well as the UML Logical Data Model Profile. In general it is beneficial to apply the Logical Data Model to the class model whether the class model serves as a source or is generated as a target. In the formal case, it allows a user to control what classes, primitive types, or enumerations to transform to a logical data model, and to specify concepts and information important to logical data modeling but missing in UML. In the latter case, it makes the transformation reversible since major logical data modeling concepts and information are preserved in the generated class model.

As Figure 12 illustrates, logical data modeling is the lynch pin of data modeling integration. You saw in this paper how application modeling in RSA can be integrated with logical data modeling in RDA. Integration between logical data modeling and relational data modeling is a standard feature of RDA. Integration between business modeling in WBM and logical data modeling in RDA, as well as integration between logical data modeling and XML data modeling in RDA, are already in the works and will be discussed in a forth-coming developerWorks article.

7 - 62

Figure 12. Logical Data Modeling as the Lynch Pin for Data Modeling Integration

Page 127: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 8 : Traceability

8 - 2

After completing this module, you will be able to:Ensure that solutions are connected to requirements (in other words, traceability) Create traceability to IBM® Rational® RequisitePro®

Create traceability to IBM® WebSphere Business ModelerUse topic and browse diagram to investigate traceabilities.

Module Objectives

Page 128: Cours Slides

8 - 3

Traceability

Traceability answers key questions in development, such as:

What requirements is this part of the design based on?Why did this (feature, use-case, subsystem, class) get implemented this way?What are the non-functional requirements for this design ?"What is the impact of changing a requirement?What happens to the solution if the business process is changed?

?

Page 129: Cours Slides

8 - 5

Product Integrations with Rational Software Architect

Rational Software ArchitectIBM®

WebSphere®

Integration Developer

UML (contract)BPEL

WSDL

one-way flow

BPEL has onlystuff that isto be automated

WebSphere Business Modeler

IBM® WebSphere®

Business Monitor

RequisitePro

IBM® WebSphere®

Application Server

IBM® WebSphere®

Process Server

RUNTIME

8 - 6

Comments

RequisitePro provides a powerful way to manage requirements and use cases to promote better communication, enhance teamwork, and reduce project risk. RequisitePro is integrated with Rational Software Architect to allow you to link development artifacts and requirements, and to demonstrate traceability from one to the other.

Modeling tools are useful in designing and building choreographed business processes. WebSphereBusiness Modeler models define the interfaces between processes, which are the contract for design and implementation. Rational Software Architect integration with WebSphere Business Modeler supports this business-driven, contract-based design and construction.

IBM® WebSphere® Studio Application Developer Integration Edition V5.1 is optimized for developing applications that deploy to IBM® WebSphere® Business Integration Server Foundation (WBISF) V5.1. WebSphere Studio Application Developer delivers a next-generation composite application development environment for building service-oriented applications that extend and integrate your existing IT assets.

In addition to a full J2EE development environment, WebSphere Studio Application Developer Integration Edition V5.1 provides easy-to-use tools for creating reusable services out of a variety of back-end systems, and for choreographing the interactions between those services using Business Process Execution Language for Web services (BPEL).

Page 130: Cours Slides

8 - 7

Traceability from Requirements to Design

Needs

SoftwareRequirements

Design User Doc

Features

Solution Space

Problem Space

Traceability

ProblemProblem

The system to be built

Test Procedures

8 - 8

Rational RequisitePro IntegrationRational RequisitePro

A requirements management tool Enables you to track relationships between requirementsProvides functionality to analyze the impact of changes to requirements

The Requirements perspective in Rational Software Architect:

Provides an effective interface to requirements managed in RequisitePro, including:

Documents – Vision, use-case specifications

RequirementsRequirement PropertiesViews

Allows requirements to be traced to model elements

Features and Vision

Vision Document

FEAT 1

FEAT 3

All Features

Use Cases

FEAT 7

Page 131: Cours Slides

8 - 9

Views of the Requirement Perspective

RequirementExplorer

Requirements Trace

Link Clipboard

Requirements Properties

Query ResultsRequirement Link Problems

8 - 10

RequisitePro

Requirements Explorer Query Results

Page 132: Cours Slides

8 - 11

Associating Requirements and Model Elements

Associating with an existing element

Drop a requirement on to an existing model element to associate that element with the use case in RequisitePro.

You can associate requirements with use cases, classes, diagrams, and relationships (associations, messages, and so on).

Drop a requirement on to an existing model element to associate that element with the use case in RequisitePro.

You can associate requirements with use cases, classes, diagrams, and relationships (associations, messages, and so on).

Creating a new model element

Drag a requirement to a diagram to create a model element in themodel that is linked to the requirement in RequisitePro. By default, use-case requirements create use cases in the model, all other requirements create classes.

Drag a requirement to a diagram to create a model element in themodel that is linked to the requirement in RequisitePro. By default, use-case requirements create use cases in the model, all other requirements create classes.

8 - 12

Comments

If use cases have been written, but model elements to represent them have not been created in Rational Software Architect, you can drag the use case requirements onto a diagram to create a use case model element.

If other requirement types are dragged on to a diagram, a class is created by default.

You may create a mapping between requirement types and model element types by modifying the properties of the RequisitePro project in the Requirements Explorer.

Consider carefully what traces should be established and maintained between model elements and requirements:

• Creating traces adds maintenance overhead, but with the right balance, the quality and timeliness of change impact analysis can be greatly improved.

• Consider associating architectural and major design elements to those requirements that, if changed, may result in a major impact to the system (and project).

Page 133: Cours Slides

8 - 13

Associating Requirements and Model Elements

When a requirement is dropped onto a model element, a proxy is created for the model element in RequisitePro.

Use cases are always directly linkedProxies are RequisitePro requirementsMapping between model elements and requirement types are managedusing the RequisitePro project propertiesAdditional attributes may be added to the proxy requirement types.

8 - 14

Comments

Linking requirements and model elements enhances Rational Software Architect. You can extend your requirements and model elements with the following capabilities:

• Associate requirements with model elements quickly by dragging artifacts between views. • Create associated requirements and model elements quickly by dragging artifacts between views. • Navigate to, and view, associated artifacts. • Manage your model elements with attributes, such as priority and status, in RequisitePro.• Establish traceability to requirements to indicate dependencies, and ensure that your design satisfies

your project requirements. • Monitor the impact of change within your project. • Develop use cases in RequisitePro and model them in Rational Software Architect, showing interaction

with actors and other use cases. • Change the name and text of a use case in either tool, and synchronize the use-case artifacts based on

rules, which you can configure.

Page 134: Cours Slides

8 - 15

Given:Existing RequisitePro project

Complete the following tasks:Explore Requirement PerspectiveLink Folders and Files to RequirementsLink UML Model Elements to RequirementsLink Java Classes to RequirementsReview Requirements

To begin the lab:

In Rational Software Architect, click Help > Cheat Sheets to open the Cheat Sheet Selection dialog.

Click Select a Cheat Sheet from the list.

Expand DEV396 Labs, then select Lab 19: Create Traceability Links.

Follow the instructions indicated in the cheat sheet.

Lab 19: Create Traceability Links

8 - 16

WebSphere Business Modeler People who know the business create the models

Model Resources, roles, organization information, business metricsEnables teamwork, communication, versioning and Web publication

Clean Hand-off to ITBusiness modeling is the starting point for rapid and accurate IT process deployment and application development

Page 135: Cours Slides

8 - 17

WebSphere Business Modeler and Rational Software Architect

1. Business analyst creates business model

2. Software Architect views business model as UML

3. Requirements analyst gathers requirements based on business model

4. Software Architect creates UML design model

5. Software Architect references UML view of Business Process Model from UML design model

6. Software Architect creates design in UML then implementation in code

WebSphere Business Modeler

RationalSoftwareArchitect

UML DesignModel

Business ProcessModel

View as UML Contract

Business Process models serve as contracts for software

implementation of roles / tasks

Business Process models serve as contracts for software

implementation of roles / tasks

8 - 18

Business Process Model Elements

Process diagram generated by WebSphere Business Modeler

Stop NodeDecision

Task

Control flow

Business Item

Alternate paths

Annotation

Page 136: Cours Slides

8 - 19

Business Processes to Business Use Cases

WebSphere Business Modeler models can be opened in Rational Software Architect

Business model elements are automatically translated to UML elements

Business Processes in WebSphere Business Modeler

Business Use Cases in Rational Software Architect

8 - 20

Business Processes

In Rational Software Architect, a business process maps to:

A use case and realization (black box) viewAn activity diagram (white box) view

Page 137: Cours Slides

8 - 21

Mapping Business Items to Classes

Business Entities in Rational Software Architect

Business Item in WebSphere Business Modeler

Page 138: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 9 : Dexis Case with UML

Page 139: Cours Slides

Cas Dexis: Octroi de prêts par un organisme bancaire

Enoncé La banque Dexis souhaite réorganiser ses activités liées à l'octroi de prêts afin de rendre celles-ci plus performantes et plus équitables. La direction de la banque espère que, suite à cette réorganisation, les demandes de prêts augmenteront au minimum de 0,75% l’année suivante. Elle espère également attirer de nouveaux clients et renforcer son image. Le client d’une agence de la banque Dexis doit soumettre sa demande de prêt au service client en indiquant le montant qu'il souhaite emprunter, la durée, le motif du prêt ainsi que des renseignements généraux tels que son nom, son adresse et son revenu mensuel. Il s’attend à ce que le service de Dexis soit professionnel et de qualité. Le service client de l'agence constitue un dossier avec les différents renseignements et le transmet au service crédit du siège de la banque pour des objectifs de centralisation des dossiers de prêt. Les clients souhaitent que cette transmission se fasse de manière la plus confidentielle qui soit. Un même dossier peut traiter de plusieurs prêts à condition que le client soit le même pour tous les prêts du dossier. Le service crédit décide de l’acceptation ou du refus des prêts. Il examine chaque dossier en détail, en vérifie les informations et décide sur base du revenu mensuel et du motif du prêt de refuser la demande ou de l'étudier de façon plus approfondie. Le service crédit prend sa décision sur base de normes strictement édictées par le service juridique du siège de la banque. En cas de problème, le préposé peut demander l’avis du service juridique de manière à motiver correctement sa décision. Le service crédit peut aussi s’enquérir auprès du service placements des avoirs du client à condition que le service juridique de la banque ne soit pas opposé à ce transfert d’information. Dans le cas d’une étude plus approfondie, le service crédit émet une demande de renseignements auprès du service d'information. Ces renseignements portent d'une part sur le passé du client à l’occasion du remboursement d'éventuels prêts antérieurs et d'autre part sur l'identité du client, son revenu mensuel, ... Contrairement au service crédit, le service d’information a une liberté totale pour la réalisation de ses objectifs à condition toutefois d’observer les lois sur la protection des données et de la vie privée. Le service crédit s’attend à ce que les renseignements demandés soient les plus exacts et objectifs possible. Il vérifie également que le dossier est bien transmis dans son entièreté. Dans l'attente de ces informations, le service crédit établit un premier plan de financement, comportant: le taux à appliquer, le montant et la durée du prêt. Quand il a reçu la réponse du service d'information, il peut soit refuser la demande soit formuler une ou plusieurs propositions à présenter au client. Les propositions sont jointes à la demande qui retourne à l'agence. A la réception du dossier, la direction de l'agence examine les propositions avec le client: soit le client accepte une des propositions, soit il n'en accepte aucune, soit il en accepte une sous réserve de modifications (modification de la durée, diminution du montant emprunté, ...). Dans ce dernier cas, la direction de l’agence établit avec le client une nouvelle proposition qui tient compte des changements demandés.

9 - 2

Page 140: Cours Slides

9 - 3

Une proposition de prêt acceptée par le client doit encore être approuvée par la direction de la banque. Celle-ci s'occupe des dossiers de prêt en fin de semaine ou lorsqu'elle en a au moins 20 en attente. L’approbation ou le refus de la direction se concrétise par une note (accord ou refus) reprenant la date courante, le numéro du dossier et la raison (en cas de refus). Ensuite les dossiers approuvés retournent en agence où ils donnent lieu à l'établissement du contrat de prêt. En cas de refus, le client peut s’adresser directement au service juridique de Dexis et demander un complément d’information ou une enquête interne s’il estime avoir été lésé. Si la décision ne lui convient toujours pas, il peut aussi s’adresser à l’ombudsman attaché à la direction de Dexis. On connaît le nom, l'adresse, le salaire mensuel d'un client et les prêts qu'il a déjà éventuellement obtenus auprès de la banque Dexis ou d'une autre institution financière ainsi que, pour chacun de ceux-ci, la façon dont il a remboursé (régulier, tardif, mauvais). On connaît également les demandes de prêt qu'un client a déjà éventuellement émises auprès de la banque Dexis et, si elles ont été acceptées, les différentes propositions auxquelles elles ont donné lieu. Une demande de prêt comporte les renseignements suivants : montant demandé, durée demandée, date d'introduction de la demande et motif du prêt, taux souhaité, plan de remboursement souhaité. A condition que le client ou le notaire ne s’y opposent pas, les données du notaire sont aussi utiles à l’établissement du dossier. Le client peut aussi référencer certaines personnes en vue de garantie. La direction de l’agence secondée du service d’information vérifie ces informations pour le service crédit chargé d’accepter ou de refuser le prêt. Pour une institution financière, on connaît son nom, son type (banque, organisme privé, organisme public) et les différents prêts contractés par les clients de la banque Dexis auprès de cette institution. Pour chaque prêt, on connaît son numéro, son montant, sa durée, le client, l'organisme auprès duquel il a été contracté (si ce n’est pas la banque Dexis), le type d'échéance (mensuelle, trimestrielle, annuelle), les dates de début et de fin de remboursement, le taux d'intérêt et le montant à rembourser (montant prêté + intérêts). Pour des raisons légales, le remboursement doit faire l’objet d’un dossier de remboursement séparé du dossier de prêt. Il contient toutes les informations propres au type de remboursement et répertorie les problèmes de paiements, les intérêts de retard, les lettres de rappel, … Dans la base de données, on différencie les personnes qui sont ou non employés de Dexis. Une distinction est également faite entre types de clients (particuliers, indépendants, …). Une proposition de prêt est caractérisée par sa date, la durée et le montant du prêt proposé, le taux d'intérêt. On enregistre quotidiennement le taux d'escompte. Le taux d'intérêt est déterminé par la banque Dexis en fonction du motif, du montant et de la durée du prêt, ainsi que du taux d'escompte. Les valeurs des différentes informations relatives à un prêt sont nécessairement identiques aux informations correspondantes de la proposition qui lui a donné lieu (si elle existe).

Page 141: Cours Slides

Business Use-Case Diagram

9 - 4

Page 142: Cours Slides

Business Activity Diagram

9 - 5

Page 143: Cours Slides

Business Activity Diagram

9 - 6

Page 144: Cours Slides

Business Activity Diagram

9 - 7

Page 145: Cours Slides

Use-Case Diagram

9 - 8

Page 146: Cours Slides

Use-Case Diagram

9 - 9

Page 147: Cours Slides

Activity Diagram (page 1/2)

9 - 10

Page 148: Cours Slides

Activity Diagram (page 2/2)

9 - 11

Page 149: Cours Slides

Class Diagram

9 - 12

Page 150: Cours Slides

Composite Structure Diagram

9 - 13

Page 151: Cours Slides

Interaction Overview Diagram

9 - 14

Page 152: Cours Slides

Sequence Diagram

9 - 15

Page 153: Cours Slides

Communication Diagram

9 - 16

Page 154: Cours Slides

Sequence Diagram

9 - 17

Page 155: Cours Slides

Communication Diagram

9 - 18

Page 156: Cours Slides

Sequence Diagram

9 - 19

Page 157: Cours Slides

Communication Diagram

9 - 20

Page 158: Cours Slides

State Machine Diagram

9 - 21

Page 159: Cours Slides

State Machine Diagram

9 - 22

Page 160: Cours Slides

Component Diagram

9 - 23

Page 161: Cours Slides

Deployment Diagram

9 - 24

Page 162: Cours Slides

UML in practice : Modeling with IBM Rational Software Architect, V7

Module 10 : CARSID Case with RUP

10 - 2

Classical Waterfall DevelopmentClassical Waterfall Development

Achievement of sequential activitiesBased on too strong assumptions :

Requirements are all knowable in advanceRequirements have no high risk implicationsEnough calendar time…

Test

Analysis and Design

Implementation

Deployment

Requirementsanalysis

Page 163: Cours Slides

10 - 3

Iterative DevelopmentIterative Development

Resolves major risks before making large investments Enables early user feedback Makes testing and integration continuous Focuses project short-term objective milestones Makes possible deployment of partial implementations

T I M E

Iteration 1 Iteration 2 Iteration 3

DI

ADR

TD

IAD

R

TD

IAD

R

T

10 - 4

Iterative Development Produces a ReleaseIterative Development Produces a Release

Business Business ModelingModeling

RequirementsRequirements

Analysis & DesignAnalysis & Design

ImplementationImplementation

TestTest

DeploymentDeployment

Project Project ManagementManagement

Each iteration results in an executable release

AnchorAnchorPointPoint

MilestonesMilestones

Page 164: Cours Slides

10 - 5

RUP / UMLRUP / UML

StandardsStandards

UMLUML: 9 modelsmodels

RUPRUP: software project management

WebWeb ApplicationApplication Design Support

DataData basebase designdesign

ISOISO – i.e.•• 12207 : Software Life12207 : Software Life--cycle cycle processesprocesses

• 9126: Software Quality Characteristics & Metrics

• 9001 : Quality Management Systems, …

10 - 6

RUP : an Iterative Development ProcessRUP : an Iterative Development Process

Anchor Point Anchor Point MilestonesMilestones

Page 165: Cours Slides

10 - 7

Case Study : Case Study : CARSIDCARSID’’ss Coking PlantCoking Plant

CARSIDCARSID (Carolo-Sidérurgie) Duferco - Usinor (60/40)

Ex-Cockerill Sambre in Marcinelle-Marchienne

Steel, coke, sinter charge, cast iron, slabs.

CARSID Database re-organization

MigrationMigration, integrationintegration, new information system strategy

Knowledge management, continuation, training

ITIT projectproject managementmanagement andand methodologymethodology

Standardized/open modelling techniques (UML/RUPUML/RUP)

WebWeb Online,Online, IntranetIntranet andand EE--CommerceCommerce exploitationexploitation

10 - 8

CokerieCokerie

Marchienne

AgglomAggloméérationration

Marcinelle

Marcinelle

HautHaut--fourneaufourneau

4

AciAciéérierie

Marcinelle

Four Four éélectriquelectrique

Marcinelle

WorkflowWorkflow

Marcinelle

CoulCouléées continueses continuesbramesbrames

MMéétallurgie tallurgie de pochede poche

Marcinelle

Page 166: Cours Slides

10 - 9

SchemaSchema

10 - 10

K DTOUR DE

STOCKAGECHARBON

C1 C2

TOUR EXTINCTION

1GC1 2GC2

D1

2GC1 réserve1GC2 Réserve

RéserveC3 LC1C4 LC3

E1New2000

D2Réserve

D3

E2

Coking Coking ovensovens and Toolsand Tools

Page 167: Cours Slides

10 - 11

Coking PlantCoking Plant

10 - 12

LoadingLoading

Page 168: Cours Slides

10 - 13

DeloadingDeloading

10 - 14

CoolingCooling

Page 169: Cours Slides

KOPPERSDIDIER

Silos de stockage des charbons

MAGASINATELIERS

E.L.M.

DOSAGE CHARBONS (MELANGE)

BROYAGE MELANGE

DECHARGEMENT FADS

MEYERTP1 TP2 TP3

TP5

TP4

TP6

TP7

Mélange àbroyer

Mélange broyédestiné aux

fours

TOUR DESTOCKAGE

COPPEE ICOPPEE II

F O U R S F O U R S

TP8

Stocks de charbons

BASCULE

HALLANCIEN

T900

Mélange broyédestiné aux

fours

BUREAUX

10 - 16

transfert charbon silo

équipe FADS

réception réserve

réception charbon

réception fads

cuisson

équipe four

équipe préparation

mélange

approvisionnement tour à charbon

Tour_à_Charbon(f rom Logical View)

chargement enfourneuse

<<extend>>

criblage du coke

refroidissement

Enfourneuse(f rom Logical View)

Coke_Car(f rom Logical View)

enfournement

<<extend>>

défournement<<extend>>

Guide_Coke(f rom Logical View)

Four(f rom Logical View)

inversionmesurage t°réglage

équipe réglage

UML / UML / waterfallwaterfall : Use Case : Use Case DiagramDiagram

Coking Coking

Requirements AnalysisRequirements Analysis

Page 170: Cours Slides

10 - 17

UML / UML / waterfallwaterfall : : ActivityActivity DiagramDiagram

réception du brut

contrôler le charbon

transporter le brut

réceptionner le brut

transférer au doseur

(remplissage du magasin)

doser le mélange

stocker le brut

(remplissage du doseur)

(arrivée d'un train, bateau ou camion)

transporter le mélange

(mélange d isponible)

(mélange non disponible)

broyer le mélange de brut

réceptionner et stocker la pâte

approvisionner l'enfourneuse

(tour chargée en pâte)

recharger

(enfourneuse alignée et ouverte)

fournir la pâte au four

(enfourneuse pleine)

cuire la pâte

vider le four

(cuisson terminée)

égaliser la charge du four

pousser la charge de saumon

diriger la charge

prendre la température et le profil

réceptionner le saumon

transporter au refroidissement

transporter et déversr la charge au criblage

transporter au quai d'attente

éteindre le saum on

( coke car aligné à la tour d'extinction )

(charge d 'eau déversée)

laisser se refroidir la charge

(coke car a ligné à l'a ire à coke)

arroser

(saumon éteint)cribler le coke

(coke car aligné au criblage)

(temps de refroidissement écoulé)

(saumon non éteint)

(saumon éteint)

( coke criblé )

(four rempli et fe rmé)

(Brut en silo)

(métaux retirés)

(transferts débutés)

(mélangé, broyé et transporté)

(coke car chargé de coke)

cribleur : Criblageaire : Aire_a_Coketour : Tour_Extinctioncar : Co ke_Carguide : Guide_Cokedéfourneuse : Défourneusefou r : Fou renfourneuse : Enfo urneusetour : Tour_à_Charbonbroyeur : Broyeurbande : Bande_Broyeursilo dos : Silo_Doseursilo mag : Silo_Magasinbande : Bande_Transporteusedétecteur : Detecteur_Overbandstock_charbon : Stock_Charbon

Cooking ProcessCooking Process

Requirements Analysis

10 - 18

UML / UML / waterfallwaterfall : : ActivityActivity DiagrammeDiagramme

transporter au refroidissement

transporter et déversr la charge au criblage

transporter au quai d'attente

éteindre le saumon

( coke car aligné à la tour d'extinction )

(charge d'eau déversée)laisser se refroidir la

charge

(coke car aligné à l'aire à coke)

arroser

(saumon éteint)cribler le coke

(coke car aligné au criblage)

(temps de refroidissement écoulé)

(saumon non éteint)(saumon éteint)

( coke criblé )

Cooling Process Cooling Process

Page 171: Cours Slides

10 - 19

guide coke à mesure

Positionable

Planning_d

def ournement_en_cours : Def ournement

def ournement_suiv ant()optimiser()

C oke_Car

puissance : Integeralimentation : Variant

est-v ide()réceptionner_mp()aligner_tour()aligner_cribleur()aligner_aire()dev erser_coke()

Tour_Extinction

Niv eau_eau : Integer

dév erse_charge()est_libre()reserv oir_plein()

0..1

0..2

0..1

0..2

éteint saumon

Déf ourneuse

nom : String

puissance : Integeralimentation : Variantplanning : Planning_ddéf ournement : Def ournement

ouv rir_f our()déf ourner()f ermer_f our()cherche_def ournement()v alidation_def ournement()ouv rir_trappe()égaliser_contenu_f our()f ermer_trappe()

0..20. .2

apporte saumon

Saumon

prof il : prof ilt em pérature (haut ) : Integert em pérature (milieu) : In tegert em pérature (bas) : In teger

0..1

0. .n

0..1

0. .n

0. .1

0..n

0. .1

0..n

0..1

0..n

0..1

0..n

Def ournement

date & heure planif iées : Datedate & heure ef f ectiv es : Datef orce : Force de déf ournementf our : Fourcoke_car : Coke carguide_coke : Guide cokedef ourneuse : Déf ourneusecause_non_respect_timing : Stringpression : Integer

encoder_cause()

1

0..1

1

0..1

0..n

0..n

1

0..n

1

1

0..n

1

0..n

correspond

1

0..n

1

0..n

correspond

EQ f our

0..2

0..4

0..2

0..4

0..1

0..4

0..1

0..4

0..n

1

0..n

1

prépare

0..3

0..4

0..3

0..4

0..40..4

0..1

0..n

0..1

0..n

0..n0..n

correspo

0..4

0..4

0..4

0..4

UML / UML / waterfallwaterfall : Class : Class DiagramDiagram

UnloadingUnloading

Analysis Analysis

10 - 20

: Four : équipe four

: Enfourneuse : Défourneuse

1: aligner(Four)

2: aligner(Four)

3: ouvrir( )

6: remplir_four(Pâte_à_coke)

7: égaliser_contenu_four( )

8: fermer( )

5: ouvrir_trappe(Fo...

10: fermer_trappe( )

4: ouvrir_bouches( )

9: fermer_bouches( )

UML / UML / waterfallwaterfall : : SequenceSequence / Collaboration/ Collaboration

10: réceptionner_mp(Saumon)

: équipe four

: Défourneuse

: Guide_Coke

: Coke_Car : Four

9: prendre_profil(Saumon)

11: fermer( )

5: ouvrir_four( )7: défourner( )

12: fermer_four( )

6: ouvrir_porte( )

13: fermer_porte( )

1: aligner(Four)

2: aligner(Four)

3: aligner(Four)

4: ouvrir( )

8: transférer_saumon(Saumon)

Loading Loading Unloading Unloading

DesignDesign

Page 172: Cours Slides

10 - 21

UML / UML / waterfallwaterfall : : StatechartsStatecharts

démarrage

actif-1300°C

attente enfournement

est enfourné

attente égalisation

cuisson

est égalisé

attente ouverture porte

attente defournement

défourné

attente enfournement

est enfourné

attente égalisation

cuisson

est égalisé

attente ouverture porte

attente defournement

défourné

inactif-700°C

enfourneuse.remplir_four() défourneuse.ouvrir_trappe()

défourneuse.égaliser_contenu_four()

défourneuse.fermer_trappe()

cuisson_terminée()

défourneuse.ouvrir_four()

guide_coke.ouvrir_porte()défourneuse.défourner()

activer()

défourneuse.fermer_four() and

guide_coke.fermer_porte()

désactiver()

OvenOven

Design Design

10 - 22

CARSID : RUP/Project ManagementCARSID : RUP/Project Management

Iterationpreliminary

Business Modeling

Requirements

Analysis & Design

Implementation

Test

Deployment

Inception Elaboration Construction Transition

IterationsElab #1 Elab #2 Const #1 Const #2 Tran #1

Project management

(A)(A) (B)(B)

(C)(C)(D)(D)

(E)(E) (F)(F)

(G)(G) (H)(H)

(I)(I) (J)(J)

(K)(K) (L)(L) (M)(M) (N)(N)

(O)(O)

(P)(P)

(Q)(Q)

(R)(R) (S)(S)

(T)(T) (T)(T) (T)(T) (T)(T)

Page 173: Cours Slides

10 - 23

MS Project RUP / Project ManagerMS Project RUP / Project Manager

Wizards allow you to select how many iterations you want in each phase, as well as which discipline-based RUP activities you want in each iteration.

Wizards allow you to select how many iterations you want in each phase, as well as which discipline-based RUP activities you want in each iteration.

Wizards allow you to select what deliverables you want in each iteration, and to attach activities or roles to them.

Wizards allow you to select what deliverables you want in each iteration, and to attach activities or roles to them.

(T) Project Management (T) Project Management

10 - 24

Optimiser le planning des enfournements - défournements des pauses

Gèrer la production

Ingénieur de production

Gérer la cokerie

Management

Obtenir rapidement de bons rapports d'analyse des charbons

Fournir des informations de production de qualité

Coke de qualité

Améliorer les communications entre les travailleurs Améliorer l'analyse des données de pause

Collecter des informations de production de qualité

Améliorer l'extraction des données

<<support>>

<<support>>

<<support>>

Equipe FADS

Réception charbon

Equipe préparation

Tour à charbon

Mélanger charbon

Equipe réglage Equipe FourCokeCribler coke

Saumon de coke cuit

Défourneuse

Guide coke

Guider coke

Coke car

Eteindre coke

Tour d'extinction

<<support>>

<<support>>

Chargement enfourneuse

InversionGuide coke, coke car et défourneuse positionnés

Défournement

<<support>>

<<include>>

Cuisson

<<support>>

Enfournement<<support>> Enfourneuse

Enfourneuse positionnée

Four

(A) Iteration 1 : Elaboration(A) Iteration 1 : Elaboration

Business Business ModelingModeling

Business Business AnalystAnalyst (UC (UC DiagDiag))

Page 174: Cours Slides

10 - 25

Business/Syst. Business/Syst. AnalystAnalyst (UC (UC DiagDiag))

(C) Iteration 3 : Elaboration(C) Iteration 3 : Elaboration

Requirements Analysis Requirements Analysis

EnfourneuseE1

EnfourneuseE3

Management

Service informatiqueIngenieurs de production

Equipe reglage

Equipe mélangeBroyeuse

Encoder temperature carneaux

Enfourneuse

Mélanger charbon

Guide Coke

Defouneuse

Cuisson

<<extend>>

Four

Equipe controle

Enfournement

<<extend>>

<<extend>>

Defournement

<<extend>>

Contremaitre

Utilisateur

Encoder Cahier Electronique

Creer planning defournement

<<extend>>

<<extend>>

Utiliser intranet

<<include>>

<<include>>

Rechercher Information

<<include>>

Chercheur d'informations

transfert charbon silo

équipe FADS

réception réserve

réception charbon

réception fads

cuisson

équipe four

équipe préparation

mélange

approvisionnement tour à charbon

Tour_à_Charbon(f rom Logical View)

chargement enfourneuse

<<extend>>

criblage du coke

refroidissement

Enfourneuse(f rom Logical View)

Coke_Car(f rom Logical View)

enfournement

<<extend>>

défournement<<extend>>

Guide_Coke(f rom Logical View)

Four(f rom Logical View)

inversionmesurage t°réglage

équipe réglage

(B) Iteration 2 : Elaboration(B) Iteration 2 : Elaboration

Business Business ModelingModeling

10 - 26

Business Business ProcessProcess AnalystAnalyst ((ActAct DiagDiag))

Mise en si lo du c harbon

Calculer les mélanges

Racler les charbons

Mélanger

Transporter le mélange

Broyer

Analyser mélange charbon

Rapporter les résultats de l'analyse dans l'intranet

LaboratoireBroyeuseTapi s ro ula ntEquipe mélange

réception du bru t

contrô ler le ch arbo n

transporter le b rut

réceptionner le bru t

trans férer au doseur

(rem plissage du m agas in)

dos er le mé lange

s tocker le brut

(rem pliss age du doseur)

(arrivée d 'un train, bateau ou cam ion)

transporter le méla nge

(méla nge d ispo nible )

(m élange non disponible )

broyer le m élange de bru t

réceptionner et s tocker la pâte

approvis ionner l 'enfourneus e

(tou r chargée e n pâte )

recharger

(enfourneuse al ignée et ouverte)

fournir la pâ te au four

(enfourneus e p leine)

cu ire la pâ te

vider le four

(cuisson term inée)

éga lis er la charge du four

pousser la charge de saum on

diri ge r la charge

prendre la tem pérature e t le p rofil

réceptionner le sau m on

trans porter au refroidis sem ent

transporter et dévers r la charge au crib lage

trans porter au qua i d 'atten te

éteindre le s aum on

( coke car al igné à la tour d'extinction )

(charge d 'eau déversée)

lais ser se re froidir la charge

(coke car a ligné à l 'a ir e à coke )

arroser

( sau mon étein t)cribler le coke

(coke car aligné au crib lage)

(tem ps de refroid iss em ent écoulé)

(saum on non é teint)

(sau mon é teint)

( coke criblé )

(fou r rem pli e t fe rm é)

(Brut en s i lo)

(m étaux re tirés )

(trans ferts débutés)

(m élangé, broyé e t transporté)

(coke car chargé de coke)

cribleur : Criblageaire : Aire_a_Coketour : Tour_Extinctionc ar : Co ke_ Carguide : Guide_Cokedéfourneuse : Défourneusefou r : Fou renfourneus e : Enfo urneusetour : Tour_à_Charbonbroyeur : Broyeurbande : Bande_Broyeursilo dos : Silo_Doseursilo mag : Silo_Magasinbande : Bande_Transporteusedétecteur : Detecteur_Ov erbandstock_charbon : Stock_Charbon

(D) Iteration 1 : Inception (D) Iteration 1 : Inception

Business Business ModelingModeling

(E) Iteration 2 : Elaboration(E) Iteration 2 : Elaboration

RequirementsRequirements

Fin de la cuisson

Alignement du guide coke

Pousse le coke

dans le coke car

Alignem ent de la déf ourneuse

Alignem ent du coke car

Mise en place de l'auge mobile du co ke car

Ouv erture des por tes

Ferm eture des portes

Relev é de la tem pérature, de la puissance et du prof il coke

Val id er le déf ournem ent

Four v ide

ContremaîtreCoth ermFou r à cokeCo ke carDéfou rneuseGu ide coke

Mélange dans la tour a charbon

Chargement de l'enfourneuse

Ouverture des mamelles de remplissage

Scellé des mamelles

Positionnement au-dessus du four

Alignement IPOVECO

Remplissage du four

Repalage

Enregistrement des données relatives à l'enfournement

Valider l'enfournement

ContremaîtreBa se de donnéesDéfourneuseEnfourneuseEquipe enfour nementTour à charbon

Page 175: Cours Slides

10 - 27

System System AnalystAnalyst (Class (Class DiagDiag.).)

Locom ot ive

Num Loco : Long

G roupLoco

Num er o : Long

1

1. . n

1

1. . n

conduit

Tender

Tender : Long

0. . 1

0. . n

0. . 1

0. . n

accompagne

PlacePr oduct ion

Code : St r ing

AnalyseChar bon Q uant it e : Long

AnalyseM elange

Q uant it e : Long

AnalyseCokeQ uant it e : Long

Sales

Poids : LongDat eTim e : Dat e

RecapPauseCoPr oduit

DhPause : Dat eExt r act eur Nor d : SingleExt r act eur Sud : SingleVit esseNor d : SingleVit esseSud : SingleDebit Nord : SingleDebit Sud : SingleTem perat ur eVolut eNor d : SingleTem perat ur eVolut eSud : SingleAm per ageNor d : SingleAm per ageSud : SingleRegulat ionNor d : St r ingRegulat ionSud : St r ingVanneRappoldNor d : St r ingVanneRappoldSud : St r ingPr essionHuileEnt r eeNor d : SinglePr essionHuileEnt r eeSud : SinglePr essionHuileSor t ieNor d : SinglePr essionHuileSor t ieSud : SingleVibr at ionHor izont aleNor d : SingleVibr at ionHor izont aleSud : SingleVibr at ionVer t icaleNord : SingleVibr at ionVer t icaleSud : SingleTem perat ur eExt er ieur eNor d : SingleTem perat ur eExt er ieur eSud : SingleCondensat ionDebit : SingleCondensat ionAnalyse : SingleLavageDebit : SingleLavageAnalyse : SingleCSFDebit : SingleCSFAnalyse : SingleBiologiqueDebit : SingleBiologuiqueAnalyse : SingleVent ur iDebit : SingleVent ur iTem per at ure : SingleVent ur iPh : SingleBr igadier : St r ingO per at eur : St r ingO per at eur G azomet r e : St r ingI t iner ant Copr oduit : St r ingI t iner ant BioG azomet r e : St r ingChaguerG our don : St r ingHor sQ uot a : St r ingTem pSor t ieCTH1 : SingleTem pSor t ieCTH2 : SingleTem pSor t ieCTH3 : SingleTem pSor t ieCTH4 : SingleTem pSor t ieEG R1 : SingleTem pSor t ieEG R2 : SingleTem pSor t ieEG R4 : SingleTem pSor t ieEG R3 : SingleTem pEnt r eeLaveur5Nor d : SingleTem pEnt r eeLaveur5Sud : SingleTem pEnt r eeLaveur1Nor d : SingleTem pEnt r eeLaveur1Sud : SinglePr essionEt Debit Vapeur : St r ingNiveauRes500 : SingleNiveauResB500 : SingleNiveauRes1000 : SingleNiveauRes800 : SingleNiveauRes6514 : SinglePost eEmet t eur : St r ingDet ect eur CO : St r ingCom m ent air e : St r ingSignat ureBr igadier : St r ingCom m ent air eO perat eur : St r ingSignat ureO per at eur Technique* : St r ingVolum eResFuel6509 : SingleHaut eurResFuel6509 : SingleVolum eResFuel6508 : SingleHaut eurResFuel6508 : SingleVolum eResFuel6511A : SingleHaut eurResFuel6511A : SingleVolum eResFuel6511B : SingleHaut eurResFuel6511B : SingleLaveur 1Nor dDebit : SingleLaveur 1Nor dPassage : SingleLaveur 1SudDebit : SingleLaveur 1SudPassage : SinglePer t eFuel : SingleHaut eurSoudeAvant : SingleHaut eurSoudeApr es : SingleConsomm at ionSoude : Single

M esur eSynchr oneBat t er ieM inut e

Dh_M esure : Dat eV001 : I nt egerV077 : I nt eger

M esur eSynchr oneDiver sJour

Dh_Mesur e : Dat eV001 : I nt egerV065 : I nt eger

M esur eSynchr oneDiver sM inut eDh_M esure : Dat eV001 : I nt egerV106 : I nt eger

M esureSynchr oneDiver sPause

Dh_M esur e : Dat eV001 : I nt egerV100 : I nt eger

RecapPauseFourDhPause : Dat eNomAjust eur : St r ingComm ent air eAjust eur : St r ingSignat ur eAjust eur : St r ingNomElect r ician : St r ingComm ent air eElect r ician : St r ingSignat ur eElect r ician : St r ingNomCont r em ait r e : St r ingAssist ant Cont rem ait r e : St r ingComm ent air eCont r em ait re : St r ingSignat ur eCont rem ait r e : St r ingNbr eDef our nement Coppee : SingleNbr eDef our nament Koppers : SingleNbr eDef our nament Didier : SingleEt at CuissonCoppee : St r ingEt at CuissonKopper s : St r ingEt at CuissonDidier : St r ingPlat eauCoppeeNet t oyeCot eCoke : St r ingPlat eauKopper sNet t oyeCot eCoke : St r ingPlat eauDidier Net t oyeCot eCoke : St r ingPlat eauCoppeeNet t oyeCot eM achine : St r ingPlat eauKopper sNet t oyeCot eM achine : St r ingPlat eauDidier Net t oyeCot eMachine : St r ingTpsExt inct ionEnSeconde : I nt egerTpsEgout t ageEnSeconde : I nt egerTpsExpedit ionCK16EnM inut e : I nt egerPompeEnSer vice : St r ingCokecar EnSer vice : St r ing

RecapJour CoPr oduitDhJour : Dat eVolum eRes2G oudr on : I nt egerVolum eRes3G oudr on : I nt egerVolum eRes4G oudr on : I nt egerVolum eRes5G oudr on : I nt egerVolum eRes6G oudr on : I nt egerVolum eRes7G oudr on : I nt egerVolum eRes8G oudr on : I nt egerVolum eRes9G oudr on : I nt egerVolum eRes10G oudr on : I nt egerCpt eur FuelVersCent r alAvant : I nt egerCpt eur FuelVersCent r alApr es : I nt egerLit r ageFuelVersCent r al : I nt eger

CamionCoPr oduit

NoPlaque : St r ing0. . * 0. . *0. . * 0. . *

Deplacer

Dh_Depar t G oud : Dat eRet our EauCam ion : BooleanType : St r ingFir m eEnt r eeFuel : St r ingHt eur Avant Ent r eeFuel : SingleHt eur Apr esEnt r eeFuel : SingleNoResEnt r eeFuel : SingleLit r ageEnt reeFuel : SingleHeur eEnt r ee : St r ing

Place

Name : St r ing

0. . n1 0. . n1

concer neTest 2 : St . . .

Liver eTest 2 : S. . .

Par t iciper

Test : St r ing

Def ournem ent _Cot her m

V 00 1 : I n teg erV 17 7 : I n teg er

Def our nam ent _Puissance

V001 : I nt egerV113 : I nt eger

Def our nem ent _Pr of ilCokeV001 : I nt egerV088 : I nt eger

M sgG r oupe

I d_G r oupM sg : I nt egerLibelleM sg : St r ingTypeM sg : St r ing

TCxSer ieTem pPyr om et r eNum Cx : I nt egerTem perat ur e : I nt eger

TcxTypeDeM esur e

I d_TypeDeMesur e : I nt egerLibelle : St r ing

M sgComm unicat ion

Aut eur : St r ingDh_Debut Af f ichage : Dat eDh_FinAf f ichage : Dat eCom ment air e : St r ingResponse : St r ing

1

0. . *

1

0. . *

1

0. . *

1

0. . *

Bassin

Bassin : LongLibelle : St r ing

Sit e

Sit e : LongLibelle : St r ing

0. . n

1

0. . n

1

G r anCokeQ uant it e : I nt eger

G r anMelange

Q uant it e : I nt eger

Usine

Usine : Long

0. . n

1

0. . n

1

Ser vice

Ser vice : L. . .Libelle : St r ing

0. . n

1

0. . n

1

TCxList eSer ieTem pPyr om et r eI d_Ser ie : I nt egerTypeDeG az : St r ingPCI : I nt egerDh : Dat ePyr omet r eur : St r ingRegleur : St r ingCom ment air e : St r ingValide : Boolean 1

0. . *

1

0. . *

1

0. . *

1

0. . *

M essageRejet e

I d_M sg : I nt egerDat eTr ait ement M sg : Dat eNum er oEr reur : I nt egerDescr ipt ionEr r eur : St r ingEm et t eur Msg : St r ingNum er oM sg : I nt egerLibelleM sg : St r ingSour ceEr r eur : St r ing10. . 1 10. . 1

PDef Par amet r e

I d : I nt egerDat eDer nier eM odif : Dat eCom m ent aire : St r ingDh_PauseEnCour s : Dat eTpsCuissonCoppee : I nt egerTpsCuissonKopper s : I nt egerDelaiEnt r eDef our nEt Enf our n : I nt egerEcar t M axTpsCuissonCoppee : I nt egerEcar t M axTpsCuissonKopper s : I nt egerEcar t Sur Pr ogr Toler eCoppee : I nt egerEcar t Sur Pr ogr Toler eKopper s : I nt egerDef ault DelaiEnt r eDef Et Enf : I nt egerModif DhM achineAut or isee : I nt egerDelaiEnSecondeDuRef r eshAut oI nt er f ace : I nt egerTim eO ut Execut eM odele : I nt egerNbr Heur eAvant PauseCour ant eAVisualiser : I nt egerNbr Heur eApresPauseCour ant eAVisualiser : I nt egerPasswor dO pt ion : St r ingAnim at ionVideo : I nt egerM_PV_Enabled : I nt egerM_PV_kdpapHS : I nt egerEnt r et ienHeur eM in : I nt egerEnt r et ienHeur eM ax : I nt egerEnt r et ienDureeM in : I nt egerEnt r et ienDureeM ax : I nt egerEnt r et ienPasM in : I nt eger

PlanningEnt r et ien

Dh_Debut : Dat eDur eeEnM inut e : I nt eger

ConsigneTem psCuissonI d_Consigne : I nt egerDh_Debut Changem ent : Dat eConsTpsCuis_Kopper sDidier : I nt egerConsTpsCuis_Coppee : I nt eger

PdelList eHeur ePour M odeleLightI d_Pr ogr : I nt egerHeur eFour : Dat e

Pdef DHPour Debug

DhM aint enant : Dat eDhAvant : Dat e

Per sonneI d_Per sonne : I nt egerPr enom : St r ingNom : St r ingDat eNaissance : Dat e

Pdef Nombr eFour Pr oduit

Dh_Pause : Dat eNbr eFourCopM odelise : I nt egerNbr eFourKDM odelise : I nt egerNbr eFourCopPr ogr amm e : I nt egerNbr eFourKDPr ogr amm e : I nt egerNbr eFourCopRealise : I nt egerNbr eFourKDRealise : I nt eger

Pdef Et at

Et at : I nt egerLibelle : St r ingSignif icat ion : St r ing

t ierscod t ie : . . .nom t ie : . . .adr t ie : . . .or i : St r ing

Tr anspor t eur

int er dit : St r ing

Fam _ar t iclef am _ar t : St r inglib_f am : St r ingor i : St r ing

Postpst _num : I nt egerdat _pst : Dat e

Four nisseur( f rom Concept ualM odelPck)

Client

( f rom Concept ualM odelPck)

Bascule

bas id : I n. . .bas : St r ing

Badge

num bad : . . .dat cr e : . . .dat m od : . . .t yp bad : . . .num pas : . . .pas m ax : . . .cod ina : B. . .ver com : . . .r ec bad : . . .r em : St r ingr em com . . .valide : Booder pes : . . .bad act : . . .

Voie

Voie : St r ingI ndexVoie : . . .Type : St r ingLibelle : St r ingO r ient at ion . . .SensPr iv : . . .Et at : St r ingLoungueur . . .CulDeSac : . . .

0. . n1 0. . n1

dans

Et at WagonEt at : St r ingLibelle : St r ing

TypeWagonTypeWagon : St r ingLibelle : St r ingCouleur : St r ing

Cat egChom age

Cat egChom age : St r ingLibelle : St r ing

TypeM at iere

TypeM at ier e : St r ingLibelle : St r ingCouleur : St r ing

Piedr oitI d_Pdt : I nt egerLibelle : St r ing

1

0. . *

1

0. . *

M essageTr aceChr onologiqueDat a

Dat eTr ait em ent Msg : Dat eEm et t eur M sg : Dat eNum er oM sg : Dat eNum er oSec : Dat eDh_Dat a : Dat eEnt et eM sg : St r ingDh_Pause : Dat eDh_Jour : Dat eDh_Mois : Dat e

1 0.. *1 0.. *

Bat t er ie

I d_Bat t er ie : I nt egerLibelle : St r ingI d_Pdt Debut : I nt egerNom : St r ingNum Four Deb : I nt egerNbr Four : I nt egerNbr Pdt : St r ing

1

0. . *

1

0. . *

0. . 1

0. . *

0. . 1

0. . *

1

0. . *

1

0. . *

1

0. . *

1

0. . *

1 0. . *1 0. . *

1

0. . *

1

0. . *

PlanningPost e

I d_Cycle : I nt egerEquipe : I nt eger

10. . * 10. . *

Pdef List eResultI d_Result at : I nt egerDh_I dResult at : Dat eDh_Pause : Dat eTypeDeM odele : St r ingNom MachineClient : St r ingNom User : St r ingSt at usExecut ionModele : I nt egerDh_FinExecut eM odele : Dat eLibelleSt at us_FinExecut eM odele : St r ingCom ment air eResult at : St r ing

1

0.. *

1

0.. *

1

0. . *

1

0. . *

Pdef Result atDh_Def _Pr evue : Dat eEt at _Pr evu : I nt egerEt at _HS_Pr evu : I nt egerDh_Def _Pr evueCor r igee : Dat eEt at _Cor r ige : I nt egerEt at _HS_Cor r ige : I nt egerEnt r et ien : St r ingCom m ent air e : St r ingDh_Enf _Pr ec : Dat eDh_Def _M inimale : Dat eO per at ion : St r ing

1

0. . *

1

0. . *

Enf our nem ent _Diver s

V001 : I nt egerV100 : I nt egerDh_Pause : Dat eDh_Jour : Dat eDh_M ois : Dat e

Localit e

cod loc : . . .loc : St r ing

1

0. . *

1

0. . *

Cam ion

pla cam : . . .chg max : . . .t ar e : I nt . . .f r c t ar : . . .dat t ar : . . .der t ar : . . .

10. . 1 10. . 1

1

1. . *

1

1. . *

Ar t icle

cod_ar t : I nt egercod_env : St r inglib_ar t : St r inglibelle : St r ingor i : St r ing

1

1. . *

1

1. . *1

0. . *

1

0. . *

Comm ande

num com : I nt . . .ent _sr t : Boolean

1 1. . *1 1. . *

1

0. . *

1

0. . *

10. . *

10. . *

Pesee

num : I nt . . .Dat eTim e : . . .pesee1 : I . . .pesee2 : I . . .pes val : B. . .pes ann : . . .r em : St r ingr em sys : . . .st at us : S. . .lib pr e : St . . .cod pr e : . . .

1

0. . *

1

0. . *

1

0. . *

1

0. . *

1

0. . *

1

0. . *

E nt ete Mv t

Num M vt : LongTypeM vt : S. . .I nt er caler : . . .I nver sion : S. . .TypeM vt Sens . . .Dat eEnr eg : . . .Dat eDebut : . . .Dat eFin : Dat eVoieDespose : . . .SensDepose : . . .

Raccordem ent

RaccSncb : St r ingLibelle : St r ingRaccCklSam : Boolean

1. . n

1

1. . n

1

WagonNumWago. . .PoidsBr ut . . .Tar e : LongPoidsNet : . . .PoidsTheor . . .Longueur . . .Dat eTim eD. . .NumChass. . .

0. . n

1

0. . n

1

de t ype 2

0. . n 10. . n 1

de t ype

0. . n

0. . 1

0. . n

0. . 1

M at ier e

M at iere : . . .Libelle : St r ing 0. . n

1

0. . n

1

de t ype 1

Def our neuse

I d_Def ourneuse : I nt egerLibDef our neuse : St r ingI d_Engin : I nt egerPuissanceMaxim ale : I nt egerPuissanceCalculPad : I nt egerPuissanceCalculTG r : I nt egerCoef Cor r Mul : I nt egerCoef Cor r Add : I nt egerNbr SecondeEchant illonnage : I nt egerTpsM axDef our nam ent : I nt egerSur f aceRef : I nt eger

Four

I d_Four : I nt eger

1

1. . 2

1

1. . 2

1

0. . *

1

0. . *

1

0. . *

1

0. . *

1

0. . *

1

0. . *

PlanningDef our nem entDh_Def _Planif iee : Dat eDh_Def _Validee : Dat eDh_Enf _Validee : Dat eDh_Def _Mach : Dat eDh_Enf _Mach : Dat eDh_Enf _Pr ec : Dat eEt at : I nt egerEt at _Pr ec : I nt egerEt at _HS : I nt egerEt at _RP : I nt egerDh_Def _Cor r igee : Dat eDh_Enf _Cor r igee : Dat eJust if icat if : I nt egerCom m ent air e : St r ingEnt r et ien : St r ingFlag_Dh_Def _M ach_MajAPRESCCor r ect ion : I nt egerFlag_Dh_Enf _M achAPRESCor r ect ion : I nt eger

0. . *

0. . *

0. . *

0. . *

1

0. . 1

1

0. . 1

1

0. . *

1

0. . * 1

0. . 1

1

0. . 1

Enf our nem ent

Dh_Enf : Dat eDh_Enf _Diver s : Dat e

1

0. . 1

1

0. . 1

1

0. . *

1

0. . *

1

0. . *

1

0. . *

PlaceO f Char bon

( f r om Concept ualM odelPck)

Payscod_pay : I nt egerpay : St r ing

0. . n

1

0. . n

1

1

0. . *

1

0. . *

Bat eaux

Nom : St r ing

Livr aison

cod liv : I nt . ..lib_liv : St r ingor i : St r ing 0. . *0. . * 0. . *0. . *

0. . *

0. . *

0. . *

0. . *

10 .. 1 10 .. 1

M vt Det ail

Dat eTim e : D. . .Posit ion : I nt . . .Num LVoit : I . . .PoidsNet : LongPoidsBr ut : L. . .PoidsTheor ique . . .Tar e : LongSt at ut : St r ing

1

0. . n

1

0. . n

1 0. . n1 0. . n

1

0. . n

1

0. . n

1

0. . n

1

0. . n Def our nem ent

Dh_Def : Dat eDh_Def _Cot herm : Dat eDh_Def _Puissance : Dat eDh_Def _Pr of ilCoke : Dat eDh_Def PuissanceCale : Dat eDh_Def _Planif ee : Dat e

1

0. . *

1

0. . *

1

0. . *

1

0. . *

1

0. . *

1

0. . *

PlaceO f M elange

( f r om Concept ualM odelPck)

0. . n0. . 1 0. . n0. . 1

SubM vt Char bon

Num er o : I nt egerPoids : LongDat eTim e : Dat e

0. . n

1

0. . n

1

Char bon

Number : I nt egerNom : St r ing

0. . n

1

0. . n

1 O r igen

Envoi

Num er o : I nt eger

0. . 1

0. . n

0. . 1

0. . n

0. . 1

0. . n

0. . 1

0. . n

0. . 1

0. . n

0. . 1

0. . n

PlaceO f Coke( f r om Concept ualM odelPck)

0. . n

0. . 1

0. . n

0. . 1

M elange

Num er o : I nte gerSwe llingI nd Con t M ax : Lon gSwe llingI nd DilM ax : L on gNom : S t rin g

SubM vt M elange

Numer o : I nt egerPoids : LongDat eTim e : Dat e

0. . n

1

0. . n

1

M vt Char bon

Numer o : I nt egerPoids : LongDat eTim e : Dat e

1

0. . n

1

0. . n

1

0. . n

1

0. . n

0. . 1

0.. 1

0. . 1

0.. 1 Ent r epr iseNom : St r ing

Coke

Num er o : I nt egerI RSI D_I 10 : LongI RSI D_I 20 : LongI RSI D_I 40 : LongNom : St r ing

SubMvt Coke

Num er o : I nt egerPoids : LongDat eTime : Dat e

0. . n

1

0. . n

1

Elem entNom : St r ing

0. . n

0. . n

0. . n

0. . n

M vt M elange

Numer o : I nt egerPodis : LongDat eTim e : Dat e

1

0. . n

1

0. . n

1

0. . n

1

0. . n

0. . n 0. . n0. . n 0. . n

0. . n

0. . n

0. . n

0. . n

M vt CokeNum er o : I nt egerPoids : LongDat eTime : Dat eRet our n : Boolean

0. . n

0. . n

0. . n

0. . n

1

0. . n

1

0. . n1

0. . n

1

0. . n

1 0. . 11 0. . 1

0. . n

0. . n

0. . n

0. . n

G ranulom et r ie

I nt er val : St r ingNom : St r ing

0. . n

0. . n

0. . n

0. . n

0. . n

0. . n

0. . n

0. . n

Com poseMelangeQ uant it e : I nt eger

FADS Reservelocalisation : String

mesuretempérature : Doubletemps : Date

matière_premièrepropriétéquantité : Integer

personnenom : Stringprénom : Stringâge : Integertitre : String

Equipe_de_travailrotation : Integernombre personne : Integercontremaître : personnehoraire : Date1..n 11..n 1

guide coke à mesure

Positionable

position()aligner()est_libre()aligné_sur()

enfourneuse-à-mesure

Chariot_RacleurLocalisation : string

transfert()stop_transfert()est_actif()

TransporteurLocalisation : String

est_actif()démarrer()arrêter()

Detecteur_Overband

detection_dechirure()arrêter()est_actif()

Bande_Transporteuse

démarrer()arrêter()est_actif()

1

1

1

1

0..10

1

0..10

1

1

1

1

1

Stock_CharbonType : StringProvenance : StringDate : Date

transfert()livraison()

0..11..n 0..11..n

transporte Silo_Magasincapacité

10..1 10..1

stocke

Brut

0..1

0..*

0..1

0..*

déplace0..1

1

0..1

1

Stocke

EQ.FADS

0..n

0..1

0..n

0..1

contrôle

0..1

0..n

0..1

0..n

EQ reglage

Silo_Doseurcapacité

1..n0..n

1..n0..n

melange

SiloNiveau : IntegerHumidite : DoubleLocalisation : StringCapacité : Integer

mélange()remplir_silo()

0..*0..*

0..*0..*

contient

0..1

0..*

0..1

0..*

CarneauNumero : IntegerTemperature : Integer

est_en_chauffe()

0..n

0..1

0..n

0..1

planning_e

Bande_Transporteuse_pate

1..10

0..1

1..10

0..1

transfère

EQ prep

0..2

0..10

0..2

0..10

dirige

0..2

0..n

0..2

0..n

controle

PiedroitNumero : Integersens_inversion : Boolean

inversion()check_pression()check_température()

1

1..n

1

1..n

compose

Broyeur

démarrer()arrêter()est_actif()

1

1..*

1

1..*

enfournementquantité : Doubledate et heure planifée : Datedate et heure effective : Date 1 1..*1 1..*

Tour_à_CharbonNiveau : Integer

transfert_charbon()approvisionnement()mélange()

0..1 0..10..1 0..1

transfere

0..1

0..2

0..1

0..2

s'occupe

BatterieNom : {Coppee1, Coppee2, Koppers, Didier}Temperature_globale : IntegerHeure_inversion_suivante : Datenb_fours : Integertemps cuisson : Integernb_carneau : Integerqté_enfournable : Integer

1..n

1

1..n

1EQ maçon

réparer-four()

Pâte_à_coke

0..1 0..n0..1 0..n

broie

0..1

0..n

0..1

0..n

Contient

coketempérature : Integer

criblé()

Planning_ddefournement_en_cours : Defournement

defournement_suivant()optimiser()

Coke_Carpuissance : Integeralimentation : Variant

est-vide()réceptionner_mp()aligner_tour()aligner_cribleur()aligner_aire()deverser_coke()

Tour_ExtinctionNiveau_eau : Integer

déverse_charge()est_libre()reservoir_plein() 0..1

0..2

0..1

0..2

éteint saumon

Enfourneusenom : Stringniveau : Integerpuissance : Integeralimentation : Variant

aligner_tour()remplir_four()ouvrir_enfourneuse()fermer_enfourneuse()ouvrir_bouches()fermer_bouches()

0..n0..1

0..n0..1

approvisionne

0..*

0..*

0..*

0..*

entre

Fournuméro : Integerrespecte_planning : BooleanTemperature : Integercapacité : Integer

porte_entrée_ouverte()porte_sortie_ouverte()est_vide()est_enfourné()est_égalisé()cuisson_terminée()trappe_ouverte()ouvrir()fermer()activer()désactiver()température_estimé()

0..50 10..50 1

0..n

0..1

0..n

0..1

répare

0..n

0..n

0..n

0..n

contient0..n

0..2

0..n

0..2

remplit

Défourneusenom : Stringpuissance : Integeralimentation : Variantplanning : Planning_ddéfournement : Defournement

ouvrir_four()défourner()fermer_four()cherche_defournement()validation_defournement()ouvrir_trappe()égaliser_contenu_four()fermer_trappe()

Criblage

cribler()arrêter()est_libre()

0..20..1

0..20..1

apporte coke

0..1

0..n

0..1

0..n

Aire_a_Coketemps_attente : Date

attente_refroisissement()arrosage()est_libre()

0..2

0..1

0..2

0..1

apporte saumon

0..1

0..n

0..1

0..n

Saumonprofil : profiltempérature (haut) : Integertempérature (milieu) : Integertempérature (bas) : Integer

0..1

0..n

0..1

0..n

0..1

0..n

0..1

0..n

0..1

0..n

0..1

0..n

Defournementdate & heure planifiées : Datedate & heure effectives : Dateforce : Force de défournementfour : Fourcoke_car : Coke carguide_coke : Guide cokedefourneuse : Défourneusecause_non_respect_timing : Stringpression : Integer

encoder_cause()

1

0..1

1

0..1

1

0..n

1

0..n

correspond

0..n

1

0..n

1

1

0..n

1

0..n

correspond

1

0..n

1

0..n

correspond

EQ four

0..2

0..4

0..2

0..4

0..1

0..4

0..1

0..4

0..n

0..4

0..n

0..4

dirige

0..4

0..n

0..4

0..n

contrôle

0..n

1

0..n

1

prépare

0..3

0..4

0..3

0..4

0..1

0..4

0..1

0..4

0..1

0..4

0..1

0..4

Auge_MobileEn_place : Boolean

Guide_Cokepuissance : Integeralimentation : Variant

transférer_saumon()ouvrir_porte()fermer_porte()prendre_t°()t°haut()t°milieu()t°bas()prendre_profil()

0..1

0..n

0..1

0..n

1

0..n

1

0..n

correspond

0..4

0..4

0..4

0..4

(F) Iteration 1 : Elaboration(F) Iteration 1 : Elaboration

Requirements Requirements

(G) Iteration 2 : Construction(G) Iteration 2 : Construction

AnalysisAnalysis

10 - 28

System Architect (Class System Architect (Class DiagDiag.).)

Locomotive

NumLoco : Long

GroupLoco

Numero : Long

1

1. .n

1

1. .nconduit

Tender

Tender : Long

0..1

0. .n

0..1

0. .naccompagne

PlaceProduct ion

Code : String

AnalyseCharbon

Quantite : Long

AnalyseMelange

Quant ite : Long

AnalyseCoke

Quantite : Long

Sales

Poids : LongDateTime : Date

RecapPauseCoProduit

DhPause : DateExt racteurNord : SingleExt racteurSud : SingleVitesseNord : SingleVitesseSud : SingleDebitNord : S ingl eDebitSud : Si ngleTemperatureVoluteNord : SingleTemperatureVoluteSud : SingleAmperageNord : S ingl eAmperageSud : Si ngleRegulationNord : St ri ngRegulationSud : S tringVanneRappoldNord : StringVanneRappoldSud : StringPressi onHuileEntreeNord : SinglePressi onHuileEntreeSud : SinglePressi onHuileSortieNord : SinglePressi onHuileSortieSud : SingleVibrationHorizontaleNord : SingleVibrationHorizontaleSud : SingleVibrationVerticaleNord : SingleVibrationVerticaleSud : SingleTemperatureExterieureNord : SingleTemperatureExterieureSud : SingleCondensationDebi t : SingleCondensationAnal yse : SingleLavageDebi t : SingleLavageAnal yse : SingleCSFDebit : SingleCSFAnalyse : SingleBiologiqueDebit : S ingleBiologuiqueAnalyse : SingleVenturiDebit : S ingl eVenturiTemperature : SingleVenturiPh : S ingl eBrigadier : StringOperateur : S tringOperateurGazom etre : StringI ti nerantCoproduit : StringI ti nerantBioGazometre : StringChaguerGourdon : StringHorsQuota : StringTempSortieCTH1 : S ingleTempSortieCTH2 : S ingleTempSortieCTH3 : S ingleTempSortieCTH4 : S ingleTempSortieEGR1 : SingleTempSortieEGR2 : SingleTempSortieEGR4 : SingleTempSortieEGR3 : SingleTempEntreeLaveur5Nord : SingleTempEntreeLaveur5Sud : SingleTempEntreeLaveur1Nord : SingleTempEntreeLaveur1Sud : SinglePressi onEtDebitVapeur : StringNiveauRes500 : Si ngleNiveauResB500 : SingleNiveauRes1000 : Si ngleNiveauRes800 : Si ngleNiveauRes6514 : Si nglePosteE met teur : StringDetecteurCO : StringCommentaire : StringSignatureBrigadier : S tringCommentaireOperateur : StringSignatureOperateurTechnique* : StringVolumeResFuel 6509 : SingleHauteurResFuel 6509 : SingleVolumeResFuel 6508 : SingleHauteurResFuel 6508 : SingleVolumeResFuel 6511A : SingleHauteurResFuel 6511A : SingleVolumeResFuel 6511B : SingleHauteurResFuel 6511B : SingleLaveur1NordDebit : SingleLaveur1NordPassage : SingleLaveur1SudDebit : SingleLaveur1SudPassage : SinglePerteFuel : SingleHauteurSoudeAvant : SingleHauteurSoudeApres : SingleConsommationSoude : Single

encoderCahierElect ronique()

MesureSynchroneBat terieM inute

Dh_M esure : DateV001 : IntegerV077 : Integer

MesureSynchroneDi versJour

Dh_Mesure : DateV001 : IntegerV065 : Integer

MesureSynchroneDiversMinute

Dh_Mesure : DateV001 : IntegerV106 : Integer

MesureSynchroneDiversPause

Dh_Mesure : DateV001 : IntegerV100 : Integer

RecapPauseFour

DhPause : DateNomAjusteur : StringCommentaireAjusteur : StringSignatureAjusteur : StringNomElectrician : StringCommentaireElectrician : StringSignatureElectrician : StringNomContremaitre : StringAssistantContremaitre : StringCommentaireContremaitre : StringSignatureContremaitre : StringNbreDefournementCoppee : SingleNbreDefournamentKoppers : SingleNbreDefournamentDidier : SingleEtatCuissonCoppee : StringEtatCuissonKoppers : StringEtatCuissonDidier : StringPlateauCoppeeNettoyeCoteCoke : StringPlateauKoppersNettoyeCoteCoke : StringPlateauDidierNettoyeCoteCoke : StringPlateauCoppeeNettoyeCoteMachine : StringPlateauKoppersNettoyeCoteMachine : StringPlateauDidierNettoyeCoteMachine : StringTpsExtinctionEnSeconde : IntegerTpsEgouttageEnSeconde : IntegerTpsExpeditionCK16EnMinute : IntegerPompeEnService : StringCokecarEnService : String

RecapJourCoProduit

DhJour : Dat eVol umeRes2Goudron : IntegerVol umeRes3Goudron : IntegerVol umeRes4Goudron : IntegerVol umeRes5Goudron : IntegerVol umeRes6Goudron : IntegerVol umeRes7Goudron : IntegerVol umeRes8Goudron : IntegerVol umeRes9Goudron : IntegerVol umeRes10Goudron : IntegerCpteurFuel VersCent ral Avant : IntegerCpteurFuel VersCent ral Apres : IntegerLitrageFuelVersCentral : Integer

CamionCoProduit

NoPlaque : String0..* 0..*0..* 0..*

Deplacer

Dh_DepartG oud : DateRetourEauCami on : Bool eanType : StringFi rm eEntreeFuel : StringHteurAvantEntreeFuel : Si ngleHteurApresEntreeFuel : SingleNoResEnt reeFuel : SingleLi trageEntreeFuel : SingleHeureEntree : S tring

Place

Name : String0. .n1 0. .n1

concerne

Test2 : String

Livere

Test2 : String

Participer

Test : String

Defournem ent_Cotherm

V001 : IntegerV177 : Integer

enregistrementTemperatureCotherm()carteCothermBatterie()carteCothermFour()moyenneTempCotherm()ecartTypeTempCotherm()courbesTemperatureSaumon()historiqueCourbesTemperatureSaumon()checkCarneaux()

Defournament_Puissance

V001 : IntegerV113 : Integer

enregistrementPuissance()cartePuissanceBatterie()cartePuissanceFour()evolution3DPic()evolution3DPAD()evolution3DID()evolutionPuissanceMoyenneBatterie()picMoyDerniersDefournements()nbrFoursCaleMoisPuissanceMois()

Defournement_Profi lCoke

V001 : IntegerV088 : Integer

enregistrementProfilCoke()encoderCahierElectronique()

GranCoke

Quantite : Integer

GranMelange

Quantite : Integer

Bassin

Bassin : LongLibelle : String

Site

Site : LongLibelle : String

0..n

1

0..n

1

MsgGroupe

Id_GroupMsg : IntegerLibelleMsg : StringTypeMsg : String

Usine

Usine : Long

0..n

1

0..n

1

TCxSerieTempPyrometre

NumCx : IntegerTemperature : Integer

enregistrerTempCx()getTempSerie()

TcxTypeDeMesure

Id_TypeDeMesure : IntegerLibelle : String

MsgCommunication

Auteur : StringDh_DebutAf fichage : DateDh_FinAffichage : DateCommentaire : StringResponse : String

1

0..*

1

0..*

1

0..*

1

0..*

Service

Service : LongLibelle : String

0..n

1

0..n

1

TCxListeSerieTempPyrometre

Id_Serie : IntegerTypeDeGaz : StringPCI : IntegerDh : DatePyrometreur : StringRegleur : StringCommentaire : StringValide : Boolean

encoderSerieTempCx()validerSerie()encoderCommentaire()historiqueTCx5-22()

1

0. .*

1

0. .*

1

0..*

1

0..*

MessageRejete

Id_Msg : IntegerDateTraitementMsg : DateNumeroErreur : IntegerDescriptionErreur : StringEmetteurMsg : StringNumeroMsg : IntegerLibelleMsg : StringSourceErreur : String

10..1 10..1

PDefParametre

Id : IntegerDateDerniereModif : DateCommentaire : StringDh_PauseEnCours : DateTpsCuissonCoppee : IntegerTpsCuissonKoppers : IntegerDelaiEntreDefournEtEnfourn : IntegerEcartMaxTpsCuissonCoppee : IntegerEcartMaxTpsCuissonKoppers : IntegerEcartSurProgrTolereCoppee : IntegerEcartSurProgrTolereKoppers : IntegerDefaultDelaiEntreDefEtEnf : IntegerModifDhMachineAutorisee : IntegerDelaiEnSecondeDuRefreshAutoInterface : IntegerTimeOutExecuteModele : IntegerNbrHeureAvantPauseCouranteAVisualiser : IntegerNbrHeureApresPauseCouranteAVisualiser : IntegerPasswordOption : StringAnimationVideo : IntegerM_PV_Enabled : IntegerM_PV_kdpapHS : IntegerEntretienHeureMin : IntegerEntretienHeureMax : IntegerEntretienDureeMin : IntegerEntretienDureeMax : IntegerEntretienPasMin : Integer

PlanningEntretien

Dh_Debut : DateDureeEnMi nute : Integer

ConsigneTempsCuisson

Id_Consigne : IntegerDh_DebutChangement : DateConsTpsCuis_KoppersDidier : IntegerConsTpsCuis_Coppee : Integer

PdelListeHeurePourModeleLight

Id_Progr : IntegerHeureFour : Date

PdefDHPourDebug

DhMaintenant : DateDhAvant : Date

Personne

Id_Personne : IntegerPrenom : StringNom : StringDateNaissance : Date

PdefNombreFourProduit

Dh_Pause : DateNbreFourCopModelise : IntegerNbreFourKDModelise : IntegerNbreFourCopProgramme : IntegerNbreFourKDProgramme : IntegerNbreFourCopRealise : IntegerNbreFourKDRealise : Integer

PdefEtat

Etat : IntegerLibelle : StringSignification : String

tiers

cod_tie : Integernom_tie : Stringadr_tie : Stringori : String

getCod_tie()

Transporteur

interdit : String

checkInterdictionTransporteur()interdireTransporteur()

Fam_article

fam_art : Stringlib_fam : Stringori : String

Post

pst_num : Integerdat_pst : Date

Fournisseur(from ConceptualModelPck)

Client(from ConceptualModelPck)

Bascule

bas_id : Integerbas : String

Badge

num_bad : Integerdat_cre : Datedat_mod : Datetyp_bad : Stringnum_pas : Integerpas_max : Integercod_ina : Booleanver_com : Stringrec_bad : Stringrem : Stringrem_com : Stringvalide : Booleander_pes : Stringbad_act : Boolean

expireBadge()getBadgeDisponible()l ibererBadge()getValiditeBadge()

Voie

Voie : StringIndexVoie : LongType : StringLibelle : StringOrientation : StringSensPriv : StringEtat : StringLoungueur : LongCulDeSac : Boolean

0..n1 0..n1

dans

EtatWagon

Etat : StringLibelle : String

TypeWagon

TypeWagon : StringLibelle : StringCouleur : String

CategChomage

CategChomage : StringLibelle : String

tempsChomageMax()

TypeMatiere

TypeM ati ere : Str ingLi bell e : St ri ngCoul eur : String

Pi edroi t

Id_Pdt : IntegerLibelle : String

1

0..*

1

0..*

M essageTraceChronol ogiqueData

DateTraitementMsg : DateEmetteurMsg : DateNumeroMsg : DateNumeroSec : DateDh_Data : DateEnteteMsg : StringDh_Pause : DateDh_Jour : DateDh_Mois : Date

1 0..*1 0..*

Bat terie

Id_Batterie : IntegerLibelle : StringId_PdtDebut : IntegerNom : St ri ngNumFourDeb : IntegerNbrFour : IntegerNbrPdt : String

1

0..*

1

0..*

0..1

0..*

0..1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

1 0..*1 0..*

1

0..*

1

0..*

PlanningPoste

Id_Cycle : IntegerEquipe : Integer 10..* 10..*

PdefListeResult

Id_Resul tat : IntegerDh_IdResultat : DateDh_Pause : DateTypeDeModele : StringNomMachineCli ent : Str ingNomUser : StringStatusExecuti onModel e : IntegerDh_FinExecuteModele : DateLibelleStatus_Fi nExecuteM odele : StringCommentaireResultat : String

startModelePV()startModeleLi ght()setResultat()imprimePlanni ng()

1 0..*1 0..*

10..*

10..*

PdefResultat

Dh_Def_Prevue : DateEtat_Prevu : IntegerEtat_HS_Prevu : IntegerDh_Def_PrevueCorrigee : DateEtat_Corrige : IntegerEtat_HS_Corrige : IntegerEntretien : StringCommentaire : StringDh_Enf_Prec : DateDh_Def_Minimale : DateOperation : String

enregistrePlanningPropose()enregistrePlaningValide()

1

0..*

1

0..*

Enfournement_Divers

V001 : IntegerV100 : IntegerDh_Pause : DateDh_Jour : DateDh_Mois : Date

Localite

cod_loc : Stringloc : String

1

0..*

1

0..*

Camion

pla_cam : Stringchg_max : Integertare : Integerfrc_tar : Integerdat_tar : Dateder_tar : Date

assignerBadge()

10..1 10..1

11..*11..*

Article

cod_art : Integercod_env : Stringl ib_art : Stringl ibel le : Stringori : String

1

1..*

1

1..*1

0..*

1

0..*

Commande

num_com : Integerent_srt : Boolean

getCommande()

1 1..*1 1..*

1 0..*1 0..*

10..*

10..*

Pesee

num : IntegerDateTime : Datepesee1 : Integerpesee2 : Integerpes_val : Booleanpes_ann : Booleanrem : Stringrem_sys : Stringstatus : Stringlib_pre : Stringcod_pre : Integer

encoderPesee()supprimerPesee()

1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

EnteteMvt

NumMvt : LongTypeMvt : S tringIntercal er : StringInversion : StringTypeMvtSens : St ri ngDateEnreg : DateDateDebut : DateDateFin : DateVoieDespose : StringSensDepose : St ri ng

inverserConvoi()effectuerMvt()

Raccordement

RaccSncb : StringLibelle : StringRaccCklSam : Boolean

1..n

1

1..n

1

Wagon

NumWagon : LongPoidsBrut : LongTare : LongPoidsNet : LongPoidsTheorique : LongLongueur : LongDateTimeDebChomage : DateNumChassis : Integer

setDebutChomage()setFinChomage()calculerTempsChomage()

0..n

1

0..n

1

de type 2

0..n 10..n 1

de type

0..n0..1

0..n0..1

Matiere

Matiere : StringLibelle : String 0. .n

10. .n

1

de type 1

Defourneuse

Id_Defourneuse : IntegerLibDefourneuse : StringId_Engin : IntegerPuissanceMaximale : IntegerPuissanceCalculPad : IntegerPuissanceCalculTGr : IntegerCoefCorrMul : IntegerCoefCorrAdd : IntegerNbrSecondeEchanti llonnage : IntegerTpsMaxDefournament : IntegerSurfaceRef : Integer

Four

Id_Four : Integer1

1..2

1

1..2

1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

PlanningDefournement

Dh_Def_Planifiee : DateDh_Def_Validee : DateDh_Enf_Validee : DateDh_Def_Mach : DateDh_Enf_Mach : DateDh_Enf_Prec : DateEtat : IntegerEtat_Prec : IntegerEtat_HS : IntegerEtat_RP : IntegerDh_Def_Corrigee : DateDh_Enf_Corrigee : DateJustificatif : IntegerCommentaire : StringEntretien : StringFlag_Dh_Def_Mach_MajAPRESCCorrection : IntegerFlag_Dh_Enf_MachAPRESCorrection : Integer

validationEnfournement()validationDefournement()setPlanning()

0..*

0..*

0..*

0..*

1

0..1

1

0..1

1

0..*

1

0..*10..1

10..1

Enfournement

Dh_Enf : DateDh_Enf_Divers : Date

enfournementE3()enfournementE1()txUti l isationE3()

1

0..1

1

0..1

1

0..*

1

0..*

1

0..*

1

0..*

Pl aceOfCharbon(from ConceptualModelPck)

Pays

cod_pay : Integerpay : String

0..n

1

0..n

1

1

0..*

1

0..*

Bateaux

Nom : String

Livraison

cod_liv : Integerl ib_liv : Stringori : String 0..*0..* 0..*0..*

0..*

0..*

0..*

0..*

10..1 10..1

MvtDetail

DateTim e : DatePosit ion : IntegerNum LVoit : IntegerPoi dsNet : LongPoi dsBrut : LongPoi dsT heori que : LongTare : LongStatut : St ri ng

creerConvoi()di ssoudreConvoi ()getPosi ti on()setPosi ti on()

1

0..n

1

0..n

1 0. .n1 0. .n

1

0..n

1

0..n

10..n

10..n Defournement

Dh_Def : DateDh_Def_Cotherm : DateDh_Def_Puissance : DateDh_Def_Profi lCoke : DateDh_DefPuissanceCale : DateDh_Def_Planifee : Date1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

1

0..*

Pl aceOfMelange( from Conceptual ModelPc k)

0..n0..1 0..n0..1

SubM vtCharbon

Numero : IntegerPoids : LongDateTime : Date

0..n

1

0..n

1

Charbon

Number : IntegerNom : String

0..n

1

0..n

1 Origen

Envoi

Numero : Integer

0..1

0..n

0..1

0..n

0..1

0..n

0..1

0..n

0..1

0..n

0..1

0..n

PlaceOfCoke(from Conceptual ModelPck)

0. .n

0. .1

0. .n

0. .1

Melange

Num ero : IntegerSwel li ngIndContM ax : LongSwel li ngIndDil Max : LongNom : St ri ng

SubMvtM elange

Numero : IntegerPoids : LongDateTime : Date

0..n

1

0..n

1

MvtCharbon

Numero : IntegerPoids : LongDateTime : Date

1

0. .n

1

0. .n

1

0. .n

1

0. .n

0..1

0..1

0..1

0..1 Entreprise

Nom : String

Coke

Numero : IntegerIRSID_I10 : LongIRSID_I20 : LongIRSID_I40 : LongNom : String

SubMvtCoke

Numero : IntegerPoids : LongDateTime : Date

0..n

1

0..n

1

Element

Nom : String

0..n

0..n

0..n

0..n

MvtMelange

Numero : IntegerPodis : LongDateTim e : Date

1 0..n1 0..n

1

0..n

1

0..n

0..n 0..n0..n 0..n

0. .n

0..n

0. .n

0..n

M vtCoke

Numero : IntegerPoids : LongDateTime : DateRetourn : Boolean

0..n

0..n

0..n

0..n

1

0..n

1

0..n1

0..n

1

0..n

1 0..11 0..1

0..n

0..n

0..n

0..n

Granulometrie

Interval : StringNom : String

0..n

0. .n

0..n

0. .n

0..n

0..n

0..n

0..n

ComposeMelange

Quantite : Integer

(H) Iteration 3 : Construction(H) Iteration 3 : Construction

Design Design

Page 176: Cours Slides

10 - 29

System Architect (Class System Architect (Class DiagDiag.).)

(I) (I) ItItéérationration 4 : Construction4 : Construction

Implementation Implementation

Defournement_Cotherm

Dh_Def : DATETIMEId_Four : INTV001 : INTV177 : INT

Defournament_Puissance

Dh_Def : DATETIMEId_Four : INTV001 : INTV113 : INT

Defournement_ProfilCoke

Dh_Def : DATETIMEId_Four : INTV001 : INTV088 : INT

MesureSynchroneBatterieMinute

Dh_Mesure : DATETIMEV001 : INTV077 : INT

MesureSynchroneDiversJour

Dh_Mesure : DATETIMEV001 : INTV065 : INT

MesureSynchroneDiversMinute

Dh_Mesure : DATETIM EV001 : INTV106 : INT

MesureSynchroneDiversPause

Dh_Mesure : DATETIMEV001 : INTV100 : INT

RecapPauseCoProduit

DhPause : DATETIMEExtracteurNord : FLOAT(32, 0)ExtracteurSud : FLOAT(32, 0)VitesseNord : FLOAT(32, 0)VitesseSud : FLOAT(32, 0)DebitNord : FLOAT(32, 0)DebitSud : FLOAT(32, 0)TemperatureVoluteNord : FLOAT(32, 0)TemperatureVoluteSud : FLOAT(32, 0)AmperageN ord : FLOAT(32, 0)AmperageSud : FLOAT(32, 0)RegulationNord : VARCHAR(255)RegulationSud : VARCHAR(255)VanneRappoldNord : VARCHAR(255)VanneRappoldSud : VARCHAR(255)PressionH uileEntreeNord : FLOAT(32, 0)PressionH uileEntreeSud : FLOAT(32, 0)PressionH uileSor tieNord : FLOAT(32, 0)PressionH uileSor tieSud : FLOAT(32, 0)VibrationH orizontaleNord : FLOAT(32, 0)VibrationH orizontaleSud : FLOAT(32, 0)VibrationVerticaleNord : FLOAT(32, 0)VibrationVerticaleSud : FLOAT(32, 0)TemperatureExter ieureNord : FLOAT(32, 0)TemperatureExter ieureSud : FLOAT(32, 0)Condensat ionDebit : FLOAT(32, 0)Condensat ionAnalyse : FLOAT (32, 0)LavageDebit : FLOAT(32, 0)LavageAnalyse : FLOAT(32, 0)CSFDebit : FLOAT(32, 0)CSFAnalyse : FLOAT(32, 0)BiologiqueDebit : FLOAT(32, 0)BiologuiqueAnalyse : FLOAT(32, 0)VenturiDebit : FLOAT(32, 0)VenturiTemperature : FLOAT(32, 0)VenturiPh : FLOAT(32, 0)Brigadier : VARCHAR(255)Oper ateur : VARCHAR(255)Oper ateurGazometre : VARCHAR(255)Itiner antCoproduit : VARCHAR( 255)Itiner antBioGazometre : VARC HAR(255)ChaguerGourdon : VARCHAR(255)HorsQuota : VARCHAR(255)TempSortieCTH1 : FLOAT(32, 0)TempSortieCTH2 : FLOAT(32, 0)TempSortieCTH3 : FLOAT(32, 0)TempSortieCTH4 : FLOAT(32, 0)TempSortieEGR1 : FLOAT(32, 0)TempSortieEGR2 : FLOAT(32, 0)TempSortieEGR4 : FLOAT(32, 0)TempSortieEGR3 : FLOAT(32, 0)TempEntreeLaveur5Nord : FLOAT(32, 0)TempEntreeLaveur5Sud : FLOAT(32, 0)TempEntreeLaveur1Nord : FLOAT(32, 0)TempEntreeLaveur1Sud : FLOAT(32, 0)PressionEtDebitVapeur : VARCHAR( 255)NiveauRes500 : FLOAT(32, 0)NiveauResB500 : FLOAT(32, 0)NiveauRes1000 : FLOAT(32, 0)NiveauRes800 : FLOAT(32, 0)NiveauRes6514 : FLOAT(32, 0)PosteEmet teur : VARCHAR(255)DetecteurCO : VARCHAR(255)Commentair e : VARCHAR(255)Sig natureBr igadier : VARCHAR(255)Commentair eOperateur : VARCHAR( 255)Sig natureOperateurTechnique : VARCHAR( 255)VolumeResFuel6509 : FLOAT(32, 0)HauteurResFuel6509 : FLOAT (32, 0)VolumeResFuel6508 : FLOAT(32, 0)HauteurResFuel6508 : FLOAT (32, 0)VolumeResFuel6511A : FLOAT(32, 0)HauteurResFuel6511A : FLOAT(32, 0)VolumeResFuel6511B : FLOAT(32, 0)HauteurResFuel6511B : FLOAT(32, 0)Laveur1NordDebit : FLOAT(32, 0)Laveur1NordPassage : FLOAT(32, 0)Laveur1SudDebi t : FLOAT(32, 0)Laveur1SudPassage : FLOAT( 32, 0)Per teFuel : FLOAT(32, 0)HauteurSoudeAvant : FLOAT(32, 0)HauteurSoudeApr es : FLOAT(32, 0)ConsommationSoude : FLOAT(32, 0)

Place

Name : VARCHAR(255)

CamionCoProduit

NoPlaque : VARCHAR(255)

RecapJourCoProduit

DhJour : DATETIM EVolumeRes2Goudron : INTVolumeRes3Goudron : INTVolumeRes4Goudron : INTVolumeRes5Goudron : INTVolumeRes6Goudron : INTVolumeRes7Goudron : INTVolumeRes8Goudron : INTVolumeRes9Goudron : INTVolumeRes10Goudron : INTCpteurFuelVersCentral Avant : INTCpteurFuelVersCentral Apr es : INTLit rageFuelVersCentral : IN T

Deplacer

Dh_DepartGoud : DATETIMERetourEauCamion : BITType : VARCHAR(255)FirmeEntreeFuel : VARCHAR(255)HteurAvantEntreeFuel : FLOAT(32, 0)HteurApresEntreeFuel : FLOAT(32, 0)NoResEntreeFuel : FLOAT(32, 0)LitrageEntreeFuel : FLOAT(32, 0)HeureEntree : VARCHAR(255)Name : VARCHAR(255)NoPlaque : VARCHAR(255)DhJour : DATETIME

1 0..*1 0..*

<<Non-Identifying>>

1

0..*

1

0.. *

<<Identifying>>

10..* 10..*

<<Identifying>>

RecapPauseFour

DhPause : DATETIMENomAj usteur : VARCHAR(255)CommentaireAjusteur : VARCHAR (255)Sig natureAjusteur : VARCHAR( 255)NomEl ectrician : VARC HAR( 255)CommentaireElectr ic ian : VAR CHAR(255)Sig natureElectri cian : VARCH AR(255)NomC ontremai tr e : VARCH AR( 255)AssistantContremai tr e : VARC HAR( 255)CommentaireContremai tr e : VARCH AR( 255)Sig natureContremaitre : VAR CHAR (255)Nbr eDefournementCoppee : FLOAT( 32, 0)Nbr eDefournamentKoppers : F LOAT(32, 0)Nbr eDefournamentD idier : FLOAT( 32, 0)EtatCuissonCoppee : VARCHAR(255)EtatCuissonKopper s : VARCH AR(255)EtatCuissonDidi er : VARCHAR(255)PlateauCoppeeNettoyeCoteCoke : VARC HAR( 255)PlateauKoppersNettoyeCoteCoke : VARCHAR(255)PlateauDidier NettoyeCoteCoke : VARC HAR( 255)PlateauCoppeeNettoyeCoteM achi ne : VARCHAR(255)PlateauKoppersNettoyeCoteMachine : VARCHAR(255)PlateauDidier NettoyeCoteM achi ne : VARCHAR(255)TpsExt inc ti onEnSeconde : INTTpsEgouttageEnSeconde : INTTpsExpedit ionCK16EnMinute : INTPompeEnService : VARCHAR(255)Cokecar EnService : VARCHAR(255)

Bassin

Bassin : BIGINTLibelle : VARCHAR(255)

MsgGroupe

Id_GroupMsg : INTLibelleMsg : VARCHAR(255)TypeMsg : VARCHAR(255)

Site

Site : BIGINTLibelle : VARCHAR(255)Bassin : BIGINT

1

0..*

1

0..*

<<Identifying>>

Usine

Usine : BIGINTBassin : BIGINTSite : BIGINT

1

0..*

1

0..*

<<Identifying>>

Personne

Id_Personne : INTPrenom : VARCHAR(255)Nom : VARCHAR(255)DateNaissance : DATETIME

MsgCommunication

Id_Msg : INTAuteur : VARCHAR(255)Dh_DebutAffichage : DATETIMEDh_FinAffichage : DATETIMECommentaire : VARCHAR(255)Response : VARCHAR(255)Id_GroupMsgOri : INTId_GroupMsgDst : INT

10..* 10..*

<<Non-Identifying>>

10..* 10..*

<<Non- Identifyi ng>>

TCxSerieTempPyrometre

NumCx : INTTemperature : INTId_Ser ie : INT

TcxTypeDeMesure

Id_TypeDeMesure : INTLibelle : VARCHAR(255)

Fam_article

fam_ar t : VARCHAR (255)li b_fam : VAR CHAR(255)ori : VARC HAR(255)

Post

pst_num : INTdat_pst : DATETIMEcod_art : INTnum_com : INT

Service

Service : BIGINTLibelle : VARCHAR(255)Bassin : BIGINTSite : BIGINTUsine : BIGINT

1

0..*

1

0..*

<<Identifying>>

Locomotive

NumLoco : BIGINTNumero : BIGINTNumWagon : BIGINT

Tender

Tender : BIGINTNumero : BIGINTNumWagon : BIGINT

Client

cod_tie : INT

Fournisseur

cod_tie : INT

PdefEtat

Etat : INTLibelle : VARCHAR(255)Signification : VARCHAR(255)

PdefNombreFourProduit

Dh_Pause : DATETIMENbreFourCopModelise : INTNbreFourKDModelise : INTNbreFourCopProgramme : INTNbreFourKDProgramme : INTNbreFourCopRealise : INTNbreFourKDRealise : INTId_Resultat : INT

PlanningPoste

Id_Cycle : INTEquipe : INTId_Personne : INT

1 0..*1 0..*

<<Non-Identifying>>

MessageRejete

Id_Msg : INTDateTraitementMsg : DATETIMENumeroErreur : INTDescriptionErreur : VARCHAR(255)EmetteurMsg : VARCHAR(255)NumeroMsg : INTLibelleMsg : VARCHAR(255)SourceErreur : VARCHAR(255)

1

0..1

1

0..1

<<Identifying>>

TCxListeSerieTempPyrometre

Id_Serie : INTTypeDeGaz : VARCHAR(255)PCI : INTDh : DATETIMEPyrometreur : VARCHAR(255)Regleur : VARCHAR(255)Commentaire : VARCHAR(255)Valide : BITId_TypeDeMesure : INTId_Pdt : INT

1

0..*

1

0..*

<<Identi fying>>

1

0..*

1

0.. *

<<Non-Identifying>>

PdefDHPourDebug

DhMaintenant : DATETIMEDhAvant : DATETIMEId_Batterie : INT

PdelListeHeurePourModeleLight

Id_Progr : INTHeureFour : DATETIMEId_Batterie : INT

PlanningEntreti en

Dh_Debut : DATETIMEDureeEnMinute : INTId_Batterie : INT

ConsigneTempsCuisson

Id_Consigne : INTDh_DebutChangement : DATETIMEConsTpsCuis_KoppersDidier : INTConsTpsCuis_Coppee : INTId_Batterie : INT

PDefParametre

Id : INTDateDerniereModif : DATETIMECommentaire : VARCHAR(255)Dh_PauseEnCours : DATETIMETpsCuissonCoppee : INTTpsCuissonKoppers : INTDelaiEntreDefournEtEnfourn : INTEcartMaxTpsCuissonCoppee : INTEcartMaxTpsCuissonKoppers : INTEcartSurProgrTolereCoppee : INTEcartSurProgrTolereKoppers : INTDefaultDelaiEntreDefEtEnf : INTModifDhMachineAutorisee : INTDelaiEnSecondeDuRefreshAutoInterface : INTTimeOutExecuteModele : INTNbrHeureAvantPauseCouranteAVisualiser : INTNbrHeureApresPauseCouranteAVisualiser : INTPasswordOption : VARCHAR(255)AnimationVideo : INTM_PV_Enabled : INTM_PV_kdpapHS : INTEntretienHeureMin : INTEntretienHeureMax : INTEntretienDureeMin : INTEntretienDureeMax : INTEntretienPasMin : INTId_Batterie : INT

Article

cod_ar t : INTcod_env : VARCHAR(255)li b_art : VARCHAR(255)li belle : VARCHAR(255)ori : VARCHAR(255)fam_ar t : VARCHAR(255)

1

1..*

1

1..*<<Non-Identifying>>

1

0..*

1

0..*

<<Non- Identifyi ng>>

Commande

num_com : INTent_srt : BITcod_tie_Clt : INTCod_tie_Fou : INT

1 1..*1 1..*

<<Non- Identifying>>

1 0..*1 0..*

<<Non- Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

Bascule

bas_id : INTbas : VARCHAR(255)

Voie

Voie : VARCHAR(255)IndexVoie : BIGINTType : VARCHAR(255)Libelle : VARCHAR(255)Orientation : VARCHAR(255)SensPriv : VARCHAR(255)Etat : VARCHAR(255)Loungueur : BIGINTCulDeSac : BITService : BIGINTBassin : BIGINTSite : BIGINTUsine : BIGINT

1 0..*1 0..*

<<Identifying>>

TypeMatiere

TypeMatiere : VARCHAR(255)Libelle : VARCHAR(255)Couleur : VARC HAR(255)

GroupLoco

Numero : BIGINTNumWagon : BIGINT

1

1..*

1

1..*

<<Identifying>>

0..1

0..*

0..1

0..*

<<Identifying>>

EtatWagon

Etat : VARCHAR(255)Libelle : VARCHAR(255)

TypeWagon

TypeWagon : VARCHAR(255)Libelle : VARCHAR(255)Couleur : VARCHAR(255)

CategC homage

CategChomage : VARCHAR(255)Libelle : VARCHAR(255)

Transporteur

interdit : VARCHAR(255)pla_cam : VARCHAR(255)cod_tie : INT

Badge

num_bad : INTdat_cre : DATETIMEdat_mod : DATETIMEtyp_bad : VARCHAR(255)num_pas : INTpas_max : INTcod_ina : BITver_com : VARCHAR(255)rec_bad : VARCHAR(255)rem : VARCHAR(255)rem_com : VARCHAR(255)valide : BITder_pes : VARCHAR(255)bad_act : BIT

tiers

cod_tie : INTnom_tie : VARCHAR(255)adr_tie : VARCHAR(255)ori : VARCHAR(255)cod_loc : VARCHAR(255)

1

0..1

1

0..1<<Identi fying>>

10..1

10..1

<<Identifying>>

1

0..1

1

0..1

<<Identifying>>

PdefListeResult

Id_Resultat : INTDh_IdResultat : DATETIMEDh_Pause : DATETIMETypeDeModele : VARCHAR(255)NomMachineClient : VARCHAR(255)NomUser : VARCHAR(255)StatusExecutionModele : INTDh_FinExecuteModele : DATETIMELibelleStatus_FinExecuteModele : VARCHAR(255)CommentaireResultat : VARCHAR(255)Dh_Def_Planifiee : DATETIMEEtat : INT

1

0..*

1

0..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

Participer

Id_Cycle : INTDh_Def_Planifiee : DATETIME

1

0..*

1

0..*

<<Identifying>>

MessageTraceChronologiqueData

DateTraitementMsg : DATETIMEEmetteurMs g : DATETIMENumeroMsg : D ATETIM ENumeroSec : DATETIMEDh_Data : DATETIMEEnteteMsg : VARC HAR(255)Dh_Pause : DATETIMEDh_Jour : D ATETIM EDh_Mois : DATETIMEId_Msg : INTId_Four : INT

1

0..*

1

0..*

<<Identifying>>

PdefResultat

Id_Resultat : INTId_Resultat : INTDh_Def_Prevue : DATETIM EEtat_Prevu : INTEtat_HS_Prevu : INTDh_Def_PrevueCorrigee : DATETIMEEtat_Corrige : INTEtat_HS_Corrig e : INTEntreti en : VARCHAR(255)Commentair e : VARCHAR(255)Dh_Enf_Prec : DATETIMEDh_Def_Minimale : DATETIMEOper ation : VARCHAR(255)Id_Four : INT

1

0..*

1

0..*

<<Identifying>>

Piedr oit

Id_Pdt : INTLibelle : VARCHAR(255)Id_Four : INTId_Batterie : INT

1

0..*

1

0..*

<<Non-Identifying>>

Batterie

Id_Batterie : INTLibelle : VARCHAR(255)Id_PdtDebut : INTNom : VARCHAR(255)NumFourDeb : INTNbrFour : INTNbrPdt : VARCHAR(255)

1

0..*

1

0..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

10..*

10.. *

<<Non-Identifyi ng>>

1

0..*

1

0..*

<<Non-Identifying>>

0..1

0..*

0..1

0..*

<<Non-Identifying>>

Defourneuse

Id_Defourneuse : INTLibDefourneuse : VARCHAR(255)Id_Engin : INTPuissanceM axi male : INTPuissanceC alculPad : INTPuissanceC alculTGr : INTCoefC orr Mul : INTCoefC orr Add : INTNbr SecondeEchantill onnage : INTTpsMaxDefournament : INTSurfaceR ef : INT

Livere

cod_l iv : IN Tcod_ar t : INT 10..* 10..*

<<Identifying>>

concer ne

num_com : INTcod_liv : INT

1

0..*

1

0..*

<<Identifying>>

Pesee

num : INTDateTime : DATETIMEpesee1 : INTpesee2 : INTpes_val : BITpes_ann : BITrem : VARCHAR(255)rem_sys : VARCHAR(255)status : VARCHAR(255)lib_pre : VARCHAR(255)cod_pre : INTnum_bad : INTbas_id : INTpla_cam : VARCHAR(255)cod_liv : INT

1

0..*

1

0..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

Raccordement

RaccSncb : VARCHAR(255)Libelle : VARCHAR(255)RaccCklSam : BITBassin : BIGINTSite : BIGINTUsine : BIGINTService : BIGINTVoie : VARCHAR(255)

1

1..*

1

1..*

<<Identifying>>

EnteteMvt

NumMvt : BIGINTTypeMvt : VARCHAR(255)Intercaler : VARCHAR(255)Inversion : VARCHAR(255)TypeMvtSens : VARCHAR(255)DateEnreg : DATETIMEDateDebut : DATETIMEDateFin : DATETIMEVoieDespose : VARCHAR(255)SensDepose : VARCHAR(255)

Matiere

Matiere : VARCHAR(255)Libelle : VARCHAR(255)TypeMatiere : VARCHAR(255)

10..* 10..*

<<Non-Identifying>>

Wagon

NumWagon : BIGINTPoidsBrut : BIGINTTare : BIGINTPoidsNet : BIGINTPoidsTheorique : BIGINTLongueur : BIGINTDateTimeDebChomage : DATETIMENumChassis : INTEtat : VARCHAR(255)TypeWagon : VARCHAR(255)CategChomage : VARCHAR(255)

1

0..*

1

0..*

<<Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

10..* 10..*

<<Non- Identifying>>

0..1

0..*

0..1

0..*

<<Non-Identifying>>

Cami on

pla_cam : VARCHAR(255)chg_max : INTtare : INTfrc_tar : INTdat_tar : DATETIMEder_tar : DATETIMEnum_bad : INTcod_pay : INT

1

1..*

1

1..*

<<Non-Identifying>>

10..1 10..1

<<Non- Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

Localite

cod_loc : VARCHAR(255)loc : VARCHAR(255)cod_pay : INT

1

0..*

1

0.. *

<<Non-Identifying>>

Enfournement_D ivers

V001 : INTV100 : INTDh_Pause : DATETIMEDh_Jour : DATETIMEDh_Mois : DATETIMEDh_Enf : DATETIME

PlanningDefournement

Dh_Def_Planifiee : DATETIMEDh_Def_Validee : DATETIMEDh_Enf_Validee : DATETIMEDh_Def_Mach : DATETIMEDh_Enf_Mach : DATETIMEDh_Enf_Prec : DATETIMEEtat : INTEtat_Prec : INTEtat_HS : INTEtat_RP : INTDh_Def_Corrigee : DATETIMEDh_Enf_Corrigee : DATETIMEJustificatif : INTCommentaire : VARCHAR(255)Entretien : VARCHAR(255)Flag_Dh_Def_Mach_MajAPRESCCorrection : INTFlag_Dh_Enf_MachAPRESCorrection : INTId_Resultat : INTDh_Def_Prevue : DATETIMEId_Four : INT

0..11..* 0..11..*

<<Non-Identifying>>

1

0..1

1

0..1

<<Non- Identifying>>

1

0..*

1

0..*

<<Identifying>>

Four

Id_Four : INTId_Batterie : INT

1

0..*

1

0..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Non- Identifyi ng>>

1

0..*

1

0..*

<<Non-Identifying>>

1

1..2

1

1..2

<<Non-Identifying>>

1

0..*

1

0..*<<Non-Identifying>>

Defournement

Id_Four : INTDh_Def : DATETIMEId_Four : INTDh_Def_Cotherm : DATETIMEDh_Def_Puissance : DATETIMEDh_Def_ProfilCoke : DATETIMEDh_DefPuissanceCale : DATETIMEDh_Def_Planifee : DATETIMEDh_Def_Planifiee : DATETIMECode : VARCHAR(255)Id_Defourneuse : INT

1 0..*1 0..*

<<Non-Identifying>>

10..* 10..*

<<Non- Identifying>>

0..*

1

0..*

1

<<Identifying>>

Livraison

cod_liv : INTlib_liv : VARCHAR(255)ori : VARCHAR(255)Numero : FLOAT(53, 0)

1 0..*1 0..*

<<Identifying>>

1

0..*

1

0..*

<<Identi fying>>

10..1 10..1

<<Non-Identifying>>

Bateaux

Nom : VARCHAR(255)MvtDetail

NumWagon : BIGINTNumMvt : BIGINTDateTime : DATETIMEPosition : INTNumLVoit : INTPoidsNet : BIGINTPoidsBrut : BIGINTPoidsTheorique : BIGINTTare : BIGINTStatut : VARCHAR(255)Numero : FLOAT(53, 0)Matiere : VARCHAR(255)RaccSncb : VARCHAR(255)Bassin : BIGINTSite : BIGINTUsine : BIGINTService : BIGINTVoie : VARCHAR(255)

1 0..*1 0..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Identifying>>

10..* 10..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Identifying>>

PlaceOfCharbon

Code : VARCHAR(255)

Pays

cod_pay : INTpay : VARCHAR(255)

1

0..*

1

0..*

<<Non-Identifying>>

0..*

1

0..*

1<<Non-Identifying>>

Enfournement

Dh_Enf : DATETIMEDh_Enf_Divers : DATETIMEDh_Def_Planifiee : DATETIMEId_Four : INTCode : VARCHAR(255)

1

0..1

1

0..1

<<Identifying>>

1

0..*

1

0.. *

<<Non-Identifying>>

10..* 10..*

<<Non-Identifying>>

PlaceProduction

Code : VARCHAR(255)

1

0..1

1

0..1

<<Identi fying>>

Entreprise

Nom : VARCHAR(255)

PlaceOfCoke

Code : VARCHAR(255)

1 0..11 0..1<<Identifying>>

0..*

1

0..*

1

<<Non- Identifying>>

Envoi

Numero : FLOAT(53, 0)Nom : VARCHAR(255)

0..1

0..*

0..1

0..*

<<Non-Identifying>>

0..1

0..*

0..1

0..*

<<Non-Identifying>>

0..1

0..*

0..1

0..*

<<Non-Identifying>>

SubMvtCharbon

Numer o : FLOAT( 53, 0)Poids : BIGINTDateTime : DATETIMENumer oMvtChar bon : F LOAT(53)Code : VARCHAR( 255)

1

0..*

1

0..*

<<Non-Identifying>>

AnalyseCharbon

Quant ite : BIGINTNom : VARCHAR(255)Numero : FLOAT( 53)

Charbon

Number : FLOAT(53)cod_pay : INTNom : VARCHAR(255)

0..*

1

0..*

1<<Non-Identifying>>

PlaceOfMelange

Code : VARCHAR(255) 1 0..*1 0..*

<<Non-Identifying>>

1

0..1

1

0..1

<<Identifying>>

Element

Nom : VARCHAR(255)1

0..*

1

0..*

<<Identifying>>

Granulometrie

Interval : VARCHAR(255)Nom : VARCHAR(255)

Sales

Poids : BIGINTDateTime : DATETIMENom : VARCHAR(255)Numero : FLOAT(53, 0)

1

0.. *

1

0.. *

<<Identi fying>>

Coke

Numer o : FLOAT( 53)IR SID_I10 : BIGINTIR SID_I20 : BIGINTIR SID_I40 : BIGINTNom : VARCHAR(255)

SubMvtCoke

Numero : FLOAT(53, 0)Poids : BIGINTDateTime : DATETIMENumeroMvtCoke : FLOAT(53)Code : VARCHAR(255)

1

0.. *

1

0.. *

<<Non-Identifying>>

AnalyseCoke

Quantite : BIGINTNom : VARCHAR(255)Numero : FLOAT(53)

1

0..*

1

0..*

<<Identifying>>

GranCoke

Quantite : INTInterval : VARCHAR(255)Numero : FLOAT(53)

0..1

1

0..1

1

<<Identifying>>

MvtCharbon

Numero : FLOAT(53, 0)Poids : BIGINTDateTime : DATETIMENumber : FLOAT(53, 0)NumberEnvoi : FLOAT(53, 0)

0..1

1

0..1

1

<<Non-Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

0..*

1

0..*

1

<<Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

SubMvtMelange

Numero : FLOAT(53, 0)Poids : BIGINTDateTime : DATETIMENumeroMvtMelange : FLOAT(53)Code : VARCHAR(255)

1

0..*

1

0..*

<<Non-Identifying>>

Melange

Numero : FLOAT(53)SwellingIndContMax : BIGINTSwellingIndDilMax : BIGINTNom : VARCHAR(255)

AnalyseMelange

Quantite : BIGINTNom : VARCHAR(255)Numero : FLOAT(53)

1

0..*

1

0..*

<<Identifying>>

GranMelange

Quantite : INTInterval : VARCHAR(255)Numero : FLOAT(53)

0..1

1

0..1

1

<<Identifying>>

MvtCoke

Numero : FLOAT(53)Poids : BIGINTDateTime : DATETIMERetourn : BITNumeroCoke : FLOAT(53)NumeroMelange : FLOAT(53)

1 0..*1 0..*

<<Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

0..*

1

0..*

1

<<Identifying>>0..*

1

0.. *

1

<<Identifying>>

ComposeMelange

Quantite : INTNumeroCharbon : FLOAT(53)NumeroMelange : FLOAT(53)

0..*

1

0..*

1<<Identifying>>

MvtMelange

Numero : FLOAT(53)Podis : BIGINTDateTime : DATETIMENumeroMelange : FLOAT(53)

1

0..*

1

0..*

<<Non-Identifying>>

1

0..*

1

0..*

<<Non-Identifying>>

0..*

1

0..*

1

<<Identifying>>

0..*

1

0..*

1

<<Identi fying>>

0..11 0..11

<<Non-Identifying>>

0..*

1

0..*

1

<<Identifying>>

10 - 30

Database Designer (Class Diag.)Database Designer (Class Diag.)

(J) Iteration 5 : Transition (J) Iteration 5 : Transition Implementation Implementation

Page 177: Cours Slides

10 - 31

System Designer (System Designer (SeqSeq. . DiagDiag.).)

: EnfourneuseE3 : EnfourneuseE1

: Contremaitre

Enfournement P lanningD efou rn ement

1: en fournem entE3()

2: enfournementE1()

3: validationEnfournement()

(K) Iteration 1 : Elaboration(K) Iteration 1 : Elaboration

Analysis Analysis

(L) Iteration 2 : Elaboration(L) Iteration 2 : Elaboration

Design Design

: Defouneuse : Guide Coke

: Contremaitre

Defournement_Puissance

Defournement_Cotherm

Defournement_ProfilCoke

PlanningDefournement

1: enregistrementPuissance()

3: enregistrementProfilCoke()

2: enregistrementTemperatureCotherm()

4: validationDefournement()

: équipe four : Défourneuse : Guide_Coke : Coke_Car : Four

1. aligner(Four)

2. aligner(Four)

3. aligner(Four)

4. ouvrir( )

4.3. défourner( )

4.3.1. transférer_saumon(Saumon)

4.3.1.2. récept ionner_mp(Saumon)

4.3.1.2.1. fermer( )

4.1. ouvrir_four( )

4.2. ouvrir_porte( )

4.4. fermer_four( )

4.5. fermer_porte( )

4.3.1.1. prendre_profil(Saumon)

10 - 32

Defournement_Puissance

: Uti lisateur

Defournement_Cotherm

PdefResultat

TCxSerieTempPyrometre

PdefListeResult

Enfournement

PlanningDefournement

TCxListeS erieTempPyrometre

RecapPauseCoProduit

20: moyenneTempCotherm()21: ecartTypeTempCotherm()23: moyenneTempCotherm()24: ecartTypeTempCotherm()

19: carteCotherm Batterie()22: carteCothermFour()

25: courbesTemperatureSaumon()26: historiqueCourbesTemperatureSaumon()

27: checkCarneaux()

28: cartePuissanceBatterie()29: cartePuissanceFour()

30: evolution3DPic()31: evolution3DPAD()

32: evolut ion3DID()33: evolut ionPuis sanceMoyenneBat terie()

34: picMoyDerniersDefournements()35: nbreFoursCalesParMoisPuissanceMois()

5: enregistrePlanningValide()7: imprimePlanning()

1: startModelePV()3: startModeleLight()

8: setResultat()

16: txUtilisationE3()

9: val idationEnfournement()10: validationDefournement()

11: encoderSerieTempCx()13: validerSerie()

14: encoderCommentaire()17: historiqueCx5-22()

15: encoderCahierElectronique()

6: setPlanning2: enregist rePlanningPropose()4: enregist rePlanningPropose()

12: enregistrerTempCx()18: getTempSerie()

System Designer (System Designer (SeqSeq DiagDiag.).)

(N) Iteration 2 : Construction(N) Iteration 2 : Construction DesignDesign

: Utilisateur

P defLis teResult P defResu lt at P l anni ngDefourneme nt

TCxLis teS erieTem pP yrom etre

TCxS erieTem pP y rom etre

RecapP auseCoP roduit

Defournem ent_Cotherm

Defou rnem ent_P uissance

E nfournem ent

19: carteCotherm B atterie()

25: courbesTem peratureS aum on()

28: carteP ui ssanceB at te rie()

29: carteP uissanceFour()

30: evolut ion3DP ic ()

31: evolution3DP A D()

32: evolution3DID()

33 : e volutionP ui ssanceM oyen neB att erie( )

34: picM oyDerniersDefournem ents()

35: nbreFoursCalesP arM oisP uissanceM ois()

16: txUt ilisationE 3()

1: s tartM odeleP V ()

2: enregis treP lanningP ropose()

3: s tartM odeleLight()

4: enregis treP lanningP ropose()

5: enreg is t reP lanningV al ide ()

6: se tP l annin g

7: im prim eP lan ning( )

8: setResultat()

9: validationE nfournem ent()

10: validat ionDefournem ent()

11: encoderS erieTem pCx()

1 2: enre gis t rerTem pCx()

13: validerS erie()

14: encoderCom ment aire( )

15: encoderCahierE lec tronique()

17: his to riqueCx5-22()

18: getTem pS erie()

20: m oyenneTem pCotherm ()

21: ecar tTy peTem pCotherm( )

22: carteC ot herm Four ()23: m oyenneTem pCotherm ()

24: ecartTypeTem pCotherm ()

26 : h is toriqueCou rbesTe mperat ureS aum on()

27: checkCarneaux ()

(M) Iteration 1 : Construction(M) Iteration 1 : Construction AnalysisAnalysis

Page 178: Cours Slides

10 - 33

Syst. ArchitectSyst. Architect((ImplImpl. . DiagDiag))

Uses UsesUsesUses

Uses UsesUsesUses

Uses

Syncfusion.chart

Base de données

Base de données SQL server

Interfaces graphiques

Interfaces pour ingénieur de gestion Interfaces pour contremaître

Planification Entretiens

Choix de la fonctionnalité

Rapport journalier

Comparaison de fours

Historique défournements

Rapport défournement

Rapport entretien

Connexion

Choix de la fonctionnalité

Contrôle

Gestionnaire de graphiques

Gestionnaire de requêtes

d’accès à la base de données

Gestionnaire des entretiens

Gestionnaire des accès sécurisés

Gestionnaire de détection et de diagnostic des

problèmes

Uses Uses Uses

IdentificationsDonnées de

défournementEntretiens

Problèmes rencontrés sur

les fours

Domain dependant storage

Instantiates

AD

O.N

ET

System.windows.forms

Instantiates(O) Iteration 1 : (O) Iteration 1 :

ConstructionConstruction

ImplementationImplementation

10 - 34

Network Architect (Imp. Network Architect (Imp. DiagDiag))

Réseau ethernet

Contremaître

PC du contremaître

Identification contremaître

Serveur d’identification

Identification Ingénieur de production

Accès spécifiquecontremaître

Gestion accèscontremaître

Terminal machiniste Machiniste

Accès spécifiqueIngénieur de production

Gestion accèsIngénieur de production

Serveur de l’application du machiniste

Automate pyromètre et profilocoke situé

sur guide-coke

Automate ampèremètre situé sur le moteur de la

défourneuse

Serveur de l’application de gestion des fours

Serveur de la base de données

Ingénieur de production

Ingénieur de production

Machiniste

Contremaître

VAX

PC de l’ingénieur de production

Base de données

Application sécurisée Gestion des accès Base de données

Un seul même serveur physique

(P) Iteration 2: Construction(P) Iteration 2: Construction DeploymentDeployment

Page 179: Cours Slides

10 - 35

Soft. Engineer (Code)Soft. Engineer (Code)

(Q) Iteration 1 : Transition(Q) Iteration 1 : Transition ImplementationImplementation

10 - 36

Web Engineer (Code)Web Engineer (Code)

Intranet Deployment of the identified application Intranet Deployment of the identified application functionalitiesfunctionalities

(R) Iteration 2 : Transition(R) Iteration 2 : Transition DeploymentDeployment

Page 180: Cours Slides

10 - 37

Web Engineer (Code)Web Engineer (Code)

Web EWeb E--Commerce DeploymentCommerce Deployment(S) Iteration 3 : Transition(S) Iteration 3 : Transition DeploymentDeployment