Suppose you owned a vintage motorcycle repair shop. You'd constantly be on the lookout for discarded cycles that you could cannibalize for spare parts. To help your technicians do their work efficiently, you would store each part in its own specific cubby for easy retrieval. If you worked mostly on Harleys, Nortons, and Triumphs, then you would have separate storage units for each brand. For maximum efficiency, you would label the parts according to models and/or years and have separate cubbies for each one. And you would keep notebooks with operating manuals for each brand, organized by model and year. Getting organized makes searching for vintage motorcycle parts easier and faster than hunting through all the junk yards on the outskirts of town each time you need a part.
Most engineering disciplines have long had a desire to implement such storage schema for software components and documents, recognizing that they are valuable, reusable assets. Implementing a solution has been elusive for many companies. Recently however there has been a resurgent interest in asset management solutions because of important trends that are converging in the software development arena. This paper discusses these trends and how a product like IBM® Rational® Asset Manager can help organizations understand what assets they have in order to eliminate duplication, reduce costs, and improve software quality and time to market.
Market trends driving adoption of asset management
Before I discuss Rational Asset Manager, let's take a look at the major new trends that are changing the landscape of software development.
Geographically dispersed teams. Many organizations are distributing their work to geographically dispersed teams; in some cases this is being driven by an increasing "work-from-home" labor force, the use of satellite offices in another country, or by hiring third parties outside of the organization. Disparate locations and constant changes in staffing make it urgent to have a central place for capturing and managing developed software assets. Management teams are concerned that intellectual capital assets will be lost when people leave the organization or transition to new jobs within the organization.
Need to reduce IT support costs. Companies are under pressure to reduce their IT support costs, which makes it difficult to justify spending to enhance and maintain home-grown asset management solutions when there are more functional and inexpensive commercial solutions available. Companies are buying commercial applications as a way to reduce their ongoing support costs to maintain these solutions. There are multiple software asset management vendors in the marketplace that offer highly customizable solutions.
Proliferation and use of open source assets. Many executives I have met indicate that, in some cases, too much open source is being used and there isn't adequate traceability to understand who is using these assets in the organization, or which open-source assets are being used. In cases where there are some controls, companies struggle to provide guidance to teams regarding which versions of those assets are being phased out and should no longer be used. Or they are unable to notify teams that certain open-source assets are being retired and are not deployable or maintainable by the middleware operations teams.
Rise of enterprise architectures. More companies are beginning to define and implement their enterprise architectures, as well as use some of the commercially available architectures such as J2EE and .NET. These architectures have enabled developers to define how components fit into a broader system, which makes it easier to describe the context for an asset's purpose, so others can quickly assess the asset's suitability to solve a particular requirement.
Adoption of SOA. The greatest market trend driving the adoption of asset management solutions is the rapid adoption of Services Oriented Architectures (SOA). Companies are transitioning to flexible SOAs that enable them to quickly create and deliver fully featured services via the Internet, and these services are maintained and continually modified by software development and delivery organizations. As customers have adopted services and service registries, they are quickly realizing they need more than just a phone book of services. They need to be able to govern service development. They need to ensure services are developed as assets and that they are developed consistently and in compliance with their architecture. Being able to articulate and capture what a service is, and enforcing that definition each time service is created, is critical to ensuring that services are publishable, deployable, and reusable as assets. An asset management solution can help answer questions like "Have services been developed in compliance with the definition of what a reusable service asset is in our organization?"
The reality is that many companies don't have a good definition for "service." In cases where they do, the definition often simply exists in a standards guide on a Web page and isn't actively being prescribed or used. A service isn't just a just a WSDL or XML interface. To be truly reusable, a service must have a related set of assets that make up the service. Many SOA initiatives have stopped in their tracks because IT organizations are not governing service development, which results in a proliferation of services that are not publishable or maintainable. In some cases, rogue services are being created or reused in the registry that weren't intended for reuse. Having a central repository or location to find your service assets and also all the other related assets is critical to making an SOA initiative successful. Companies that pursue a service registry without an asset management solution will only be capable of addressing part of the challenge of implementing SOA.
SOAs: Demand for more effective asset management
SOA is creating a greater pressure on companies to manage their assets more effectively. They need capability to store and manage a full range of assets -- i.e., all the work products related to the service, including those to design, implement, publish, and test such services. We define an asset as a collection of artifacts that provide a solution to a recurring problem for a given context.
In a software development and delivery organization, typical assets include requirements, use cases, design models, component specifications, components, source code, test cases, test driver, test data, and more. And the need for asset management applies not only to new services but also to valuable "vintage" applications that run on back-end systems, because these, too, can be mined for component parts or integrated and configured to run as services on an open SOA.
Relying on a service registry to keep track of finished services is no longer adequate. Such registries simply name the service but do not detail its technical characteristics. Recall the analogy of model-specific cubbies at the motorcycle shop: You need the equivalent in your software development delivery organization so that developers will be able to quickly identify an artifact's potential for reuse within a specific context. For each service you create, it is important to note, for example, what Java classes it contains, with what products and components it is compatible, and what IT middleware and operational facilities it will run on.
Development and delivery organizations also need better asset management to maintain effective governance practices for their service creation process. In the often complex web of activities that encompasses component software development by both in-house and external teams around the globe, integrating these components with each other and with third-party products, and leveraging components from back-end legacy systems. They need a way to establish ground rules, such as "Every service created for this company must have a WSDL file, XSD file, a Policy, Test Data and a Service Design model." Every service asset should also have a related service implementation asset which is the EAR or WAR file that will be deployed. This ensures that services traceable to their implementation and are compatible with the existing deployment environment. In addition, you need to ensure that every software service is well tested, reviewed, and approved before it is published and deployed.
Rational Asset Manager for SOA support and governance
Rational Asset Manager is a new, collaborative software development solution that provides a central repository and all the functionality organizations need to more effectively manage and govern their assets in conjunction with an SOA implementation. Rational Asset Manager utilizes the Reusable Asset Specification (RAS) maintained by the Object Management Group (OMG), to describe assets, their classification, contents, and related assets. This makes it possible to use this metadata to classify, store, and retrieve many kinds of package assets, including components, services, pattern implementations, templates, and so on.
Precision in searching and retrieving assets
Research has shown that the more precisely you can define an asset type, the more likely that you will reuse it. Even more important, this metadata, in combination with Rational Asset Manager's sophisticated search capabilities, provides organizations with end-to-end SOA asset lifecycle management capability. Whereas a service registry enables an application to look up services and dynamically mediate them at runtime, it does not tell them what versions of the source code were used to implement or call that service so that they can correct a service defect. Nor does it describe what other assets might be using the faulty service so that impact analysis can be quickly determined. With the metadata that accompanies an asset stored in the Rational Asset Manager repository, a developer can see what versioned Java classes were used to create the service and what test scripts and data can be used to test the service. In addition, Rational Asset Manager's integration with service registries helps federate updates of development, test, and production service registry instances from a single service asset location. Rational Asset Manager's optional integrations with the CVS open source version control system, IBM Rational ClearCase®, and IBM Rational ClearQuest® provide an additional level of change management capabilities throughout the service lifecycle.
The RAS uses five major elements to ensure more precision in searching and retrieving assets:
- Descriptors (e.g., name and purpose)
- Artifact constraints or user-defined search requirements
- Category associations that define relationships between assets from a high-level organizational view
- Relationships with asset types
- Customized identifiers for asset types
I will discuss these elements in more detail below, within the context of configuring Rational Asset Manager.
Governance controls for open source assets
As organizations adopt the SOA model, they also turn to the open source community for components and other technology solutions. The challenges are to keep track of who (or what) is using these solutions within the company and to ensure that these uses comply with internal IT standards.
Rational Asset Manager makes finding and reusing solutions easy and gives the time spent tracking down this information back to the teams. It provides a workflow for obtaining review and approval of open source assets as well as a centralized, searchable storage and retrieval repository to make them accessible to team members across the organization. Together with the RAS identifiers that an administrator can assign to these assets, the approval process can ensure that team members will use only those versions of open source assets that are compatible with their enterprise architecture and approved Web application framework. They can also quickly see what services are currently using those assets and avoid duplication of effort.
Helping to govern the service creation process
Rational Asset Manager has built-in administration capabilities that can play a key role in governing the process for creating and securing service assets. First, using a Web browser an administrator can create a community within the repository for each service creation project, define roles to associate with authorized users, and assign permissions based on those roles (or on user groups or individuals). Then, as team members create assets, authorized users can submit them to the project community, either through the Web browser or Eclipse Rich Client Platform. To help co-workers locate precisely the asset that they need, users can assign each one a customized type and, if desirable, specify special artifact, category, relationship, and attribute constraints to limit the scope for targeted searching. For example, a developer might specify that the asset type "checklist" must have a .doc file extension and a label of "checklist."
Rational Asset Manager can automatically validate asset type constraints against pre-defined rules for types. Each asset type can have several separate, customized review processes, using either the built-in workflow capabilities of Rational Asset Manager or those of Rational ClearQuest, with which Rational Asset Manager integrates to provide additional workflow and problem tracking capabilities.
Configuring Rational Asset Manager
To better understand how Rational Asset Manager supports advanced governance for service creation, let's walk through some of the steps you might take if you were an administrator tasked with setting up the development workspace for the stakeholders of the project.
Creating communities with roles and access controls
Working with repository stakeholders, the administrator configures one or more communities in the repository. A community is created for a targeted set of consumers, with their respective access rights. Figure 1 shows how these might break out for a claims processing service project in the insurance industry.
Figure 1: Sample communities, roles, and access controls for a new service creation project
Create categories for asset classification
Next, using either the Rational Asset Manager UI or an XML file, you would create categories for classifying project assets created by the project roles you defined earlier, keeping in mind that a single asset can belong to multiple categories. You can use these categories to specify access control, and your teammates can use them to browse or conduct faceted searches. Figure 2 shows a partial classification scheme for artifact assets that the team's J2EE developers might create.
Figure 2: Categories for J2EE development artifact assets
Click to enlarge
Next, you would create appropriate asset types for the project, specifying names, descriptions, required artifacts, relationships, and attributes as constraints for each type. As noted earlier, Rational Asset Manager will automatically validate these constraints against pre-defined rules for asset types. Figure 3 shows the dialog for entering the constraints.
Figure 3: Dialog for entering asset type constraints
Click to enlarge
As noted earlier, you can set up a one or more review processes for each asset type and category you define, using either Rational Asset Manager alone or integrated with Rational ClearQuest. Your workflow can support review boards as well as individual reviewers; all will receive automatic notifications when they are needed for a review. Rational Asset Manager comes with a fully configurable review process.
Define asset management processes
Who should decide when and where to deploy an asset and who can access it? Who decides when the asset becomes obsolete? In most instances, multiple stakeholders should have a say in these decisions. Rational Asset Manager allows community administrators to set up processes that designate relevant stakeholders to be involved in asset lifecycle decisions. Figure 4 shows a typical review process schema for asset lifecycle decisions, involving three teams of stakeholders. For the asset manufacturing team, the administrator has defined an internal process that draws upon members' domain expertise and senior technical skills. For the asset consumer team, which also has domain expertise, the process addresses the team's need to actually use the asset. The asset governance board is involved in review and testing; at least one senior manager or technical expert should have final approval rights for the asset.
Figure 4: A typical schema for asset management processes. Thanks to Grant Larsen, whose work is the basis for this figure.
Connect asset management processes to assets
The final step in setting up a development team is to store the asset management processes in IBM Rational Method Composer for Rational Asset Manager. This feature connects the asset management processes to the assets themselves. Then, developers can quickly locate these assets in a consistent way from within or outside the development environment and determine their state -- whether they are under review, approved, published, or retired (see Figure 5).
Figure 5: Connecting asset management processes to assets. Thanks to Grant Larsen, whose work is the basis for this figure.
Taking full advantage of Rational Asset Manager's rich functionality
Once you have configured the repository for a project, your team can begin using Rational Asset Manager for the following end-to-end asset lifecycle management operations:
- Defining an asset development process
- Creating and packaging assets
- Submitting assets for management
- Reviewing and approving assets
- Searching and evaluating assets
- Retrieving and using assets
- Measuring asset activity
- Modifying and creating new asset versions
- Performing product administration procedures
- Performing service lifecycle governance functions
- Capturing asset and repository metrics to be able to quantify return on investment
Rational Asset Manager is the solution that allows companies to navigate through this storm of software development trends which are converging and causing teams to demand asset management solution. Enterprise asset repositories like Rational Asset Manager are a critical part of the software development process in organizations. As these repositories become populated they become the information HUB for all SOA assets and other related assets.
Future articles in The Rational Edge will describe in more detail how to perform these operations with Rational Asset Manager. In the meantime, you can find more information on this new product at: http://www.ibm.com/developerworks/rational/products/ram/
Online demos of Rational Asset Manager:
Maximize reuse of your software assets with Rational Asset Manager, Part 1 http://www.ibm.com/developerworks/offers/lp/demos/summary/maxassetswram.html?S_TACT=105AGX01&S_CMP=HP
Federated Metadata Management with RAM and WSRR ftp://ftp.software.ibm.com/software/rational/web/whitepapers/10709147_Rational_RAM_WP_ACC.pdf
For more information on RAM visit: http://www.ibm.com/software/awdtools/ram/
- Participate in the discussion forum.
- A new forum has been created specifically for Rational Edge articles, so now you can share your thoughts about this or other articles in the current issue or our archives. Read what your colleagues the world over have to say, generate your own discussion, or join discussions in progress. Begin by clicking HERE.
-
Global Rational User Group Community
-
Rational Asset Manager

Carlos Ferreira is a Senior Product Manager at IBM for Rational Asset Manager, and he has been product manager for several other of the Rational Lifecycle Management products. He has published articles and done presentations a variety on software development lifecycle topics that can be found on developerWorks and in the proceedings from the LotusSphere Conferences and Rational Software Development Conference. Prior to joining IBM, he worked as a Web development specialist for Bowstreet Software.
Comments (Undergoing maintenance)





