Skip to main content

By clicking Submit, you agree to the developerWorks terms of use.

The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

All information submitted is secure.

  • Close [x]

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerworks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

By clicking Submit, you agree to the developerWorks terms of use.

All information submitted is secure.

  • Close [x]

Deriving Web services from UML models, Part 1: Establishing the process

Learn how to share your object-oriented applications with business partners over the Web

Scott W. Ambler, Prectice Leader, Agile Development, Rational Methods Group, IBM
Scott W. Ambler is a Practice Leader for Agile Development within the IBM Methods group. He develops process materials, speaks at conferences, and works with IBM clients worldwide to help improve their software processes. Scott is author of several books, listed on his Web site at www.ambysoft.com. Scott is also a recognized Ratonal Thought Leader, whose homepage may be viewed here.

Summary:  By following a few straightforward steps, you can organize your object-oriented applications into packages of cohesive functionality that are accessible via Web services. In this first installment of a series, Scott W. Ambler outlines a road map for a quick and easy transition.

Date:  01 Mar 2002
Level:  Introductory
Also available in:   Japanese

Activity:  7670 views
Comments:  

Web services: you're no doubt starting to see a seemingly endless supply of magazine articles and books telling you how wonderful they are, and how they will revolutionize the way that you build software systems. Unfortunately, these publications rarely explain how you can look at your existing designs and identify the Web services that your applications can potentially offer. This series will teach you how to do just that.

This series of articles presents a process, based on the techniques presented in Designing Object-Oriented Software and expanded upon in Building Object Applications That Work (see Resources for links to these books and other recommended reading), for analyzing a traditional object design for the purposes of deploying it to a distributed environment. I've used this approach in the past for CORBA- and J2EE-based systems and am now using it to identify and build Web services systems in Java programming language. In my experience, the design process stays the same, even though underlying technologies change over time.

To help illustrate this process, I will refer to a fictitious case study, a simplistic e-commerce system called SWA Online, throughout this series of articles. This application is an online storefront that enables customers to place orders and have them shipped to their homes. Figure 1 presents a high-level analysis class diagram, using Unified Modeling Language (UML) notation, which shows the main classes and their interrelationships. It depicts the frontend, likely implemented as a collection of JavaServer Pages (JSPs), as a package with the stereotype of <<application>>. Similar applications for maintaining inventory and for shipping would exist but are not shown in this example. The other classes are the major business classes that make up this system; details for some will be shown in future articles in this series.


Figure 1. Initial class model for SWA Online
Figure 1. Initial class model for SWA Online

The SWA Online project team has decided to take a Web services approach because it wants a solution that is both scalable and very robust. The solution will be scalable because the team will be able to deploy each service to separate environments as required; it needs to be robust because the team wants the option to either extend its services to external organizations or to replace its systems with services offered by Web service providers (WSPs) at some point in the future. For the first release, the team intends to implement most of the Web services behind a firewall, a common strategy that many organizations use.

The process of identifying Web services in object-oriented designs

In order to derive a set of Web services from an object-oriented application, you need to identify domain packages -- high-level clusters of business/domain classes -- and the services that each package provides. These packages are then implemented using your technology of choice (for our example, we'll be using the Java platform) and deployed within your environment. In effect, you are distributing classes into these packages and then integrating them via Web services. Therefore, an important question to ask is, "What service(s) should each package provide to its clients?" To answer this question, this series will follow several steps, typically performed in an iterative manner, for identifying Web services from your object-oriented models:

  1. Simplify persistence and system classes.
  2. Simplify inheritance and aggregation hierarchies.
  3. Identify class contracts.
  4. Identify domain packages.
  5. Identify domain-package contracts.
  6. Define Web service interfaces.

In the next three installments of this series, I'll go into these steps in detail. You'll learn how to simplify your UML models, identify your domain packages, and define your Web services. By the end of this series, you should be able to effectively transform your existing models and object-oriented applications into Web services that are available to your business partners.


Resources

About the author

Scott W. Ambler is a Practice Leader for Agile Development within the IBM Methods group. He develops process materials, speaks at conferences, and works with IBM clients worldwide to help improve their software processes. Scott is author of several books, listed on his Web site at www.ambysoft.com. Scott is also a recognized Ratonal Thought Leader, whose homepage may be viewed here.

Report abuse help

Report abuse

Thank you. This entry has been flagged for moderator attention.


Report abuse help

Report abuse

Report abuse submission failed. Please try again later.


developerWorks: Sign in


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Select information in your developerWorks profile is displayed to the public, but you may edit the information at any time. Your first name, last name (unless you choose to hide them), and display name will accompany the content that you post.

Choose your display name

The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


Rate this article

Comments

Help: Update or add to My dW interests

What's this?

This little timesaver lets you update your My developerWorks profile with just one click! The general subject of this content (AIX and UNIX, Information Management, Lotus, Rational, Tivoli, WebSphere, Java, Linux, Open source, SOA and Web services, Web development, or XML) will be added to the interests section of your profile, if it's not there already. You only need to be logged in to My developerWorks.

And what's the point of adding your interests to your profile? That's how you find other users with the same interests as yours, and see what they're reading and contributing to the community. Your interests also help us recommend relevant developerWorks content to you.

View your My developerWorks profile

Return from help

Help: Remove from My dW interests

What's this?

Removing this interest does not alter your profile, but rather removes this piece of content from a list of all content for which you've indicated interest. In a future enhancement to My developerWorks, you'll be able to see a record of that content.

View your My developerWorks profile

Return from help

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=SOA and Web services
ArticleID=11650
ArticleTitle=Deriving Web services from UML models, Part 1: Establishing the process
publish-date=03012002
author1-email=scott_ambler@ca.ibm.com
author1-email-cc=

Next steps from IBM

Rational Modeler is a free, UML 2.1 based environment that helps users to improve communication by specifying, visualizing and documenting their system, architecture and software designs using a standard graphical language.


Tags

Help
Use the search field to find all types of content in My developerWorks with that tag.

Use the slider bar to see more or fewer tags.

For articles in technology zones (such as Java technology, Linux, Open source, XML), Popular tags shows the top tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), Popular tags shows the top tags for just that product zone.

For articles in technology zones (such as Java technology, Linux, Open source, XML), My tags shows your tags for all technology zones. For articles in product zones (such as Info Mgmt, Rational, WebSphere), My tags shows your tags for just that product zone.

Use the search field to find all types of content in My developerWorks with that tag. Popular tags shows the top tags for this particular content zone (for example, Java technology, Linux, WebSphere). My tags shows your tags for this particular content zone (for example, Java technology, Linux, WebSphere).

Try IBM PureSystems. No charge.

Special offers