Component Asset Management
Reuse of software assets reaches beyond development economies to architecture management and business alignment
by Lee Sherman
Posted June 9, 2004
The goal of effective code reuse has long eluded enterprise architects, largely because of the difficulty of discovering, tracking, maintaining, and accessing software assets. As companies move away from procedural code to component-friendly platforms such as J2EE and .Net, the need to both manage these components and derive value from them has risen to the fore. Reuse is also being driven by the increasing pressure on companies to reduce cost and better align IT expenditures with business goals.
A reusable software asset can be defined as a collection of artifacts that solve a specific problem or set of problems encountered in the software development cycle. A component asset management (CAM) tool packages reusable assets as the set of files that implement the solution along with a structured set of metadata that defines and describes the reusable asset. Examples include components, frameworks, and models.
By providing visibility into these assets, a CAM tool can reduce complexity, eliminate or reduce duplicate development efforts, and transform "as is" architectures to "to be" architectures that conform to architectural guidelines, standards, and best practices. CAM tools help organizations assess the value of their assets, track their utilization, and measure the business impact of reuse.
Reuse is not the end goal but rather a means to an end. According to Liz Barnett, analyst with Forrester Research, companies must carefully consider implementing an architecture for reuse only in terms of what business problems it will solve. Companies must ask whether reuse can help reduce duplicate development efforts, achieve faster time to market, or ensure that developers produce higher-quality code that is compliant with company standards.
Reuse can lead to improved agility, faster time to market, and a better return on software investment, but only if you've put in place an architecture that supports it. CAM tools are a natural aspect of enterprise architecture because without a structured architecture in place, it is difficult to achieve reuse.
"Companies looking to institute formal reuse programs need an environment to define and share reusable assets," said Barnett. "Certainly these environments can be built by hand, but the tools on the market today deliver unique value in terms of their ability to provide simplified user interfaces, to define and index a wide array of metadata, and to store and access shared assets across the enterprise."
At their most basic, CAM tools are an outgrowth of traditional CASE tool repositories that resemble other kinds of asset management repositories, such as media asset, hardware asset, or document management systems. The CASE tools of the 1980s also consisted of shared repositories, but they relied on a centralized mainframe model as opposed to a distributed Web-based one. CAM tools also have much more sophisticated search capabilities and extensible metadata and are tied much more tightly to business processes.
They are, of course, a kind of database that provides a way of identifying and categorizing software assets or components so that they can be shared among stakeholders within an enterprise. Effective search and browse capabilities are a must, as is versioning, which is the ability to track the usage history of a component throughout the software development life cycle. Increasingly, CAM tools are beginning to incorporate feedback and support mechanisms so that development teams can share knowledge as well as the assets and their associated artifacts.
Beyond the Baseline
But the tools are starting to go beyond this baseline functionality. The real value of a CAM tool comes from its ability to provide metrics that measure the predicted savings from the use of existing assets against the savings realized. Defining, capturing, and measuring reuse-oriented metrics is critical, said Barnett.
To be effective, CAM tools typically don't store the assets themselves. Instead they are able to link to repositories maintained by the tools that created the assets in the first place: software change management (SCM) tools, Unified Modeling Language (UML) tools, and the like. Existing metadata from SCM tools can be loaded automatically into the repository. In fact, one strength of these tools is the ability to provide a single point of visibility and control across enterprise development silos. This characteristic simplifies enterprise architecture by making it possible to understand what an organization has already produced, and where and how it is being used. Enterprise architects can use a CAM tool to define requirements and ensure that software produced by both internal teams and through outsourcing is consistent with those requirements.
Key to CAM tools is the ability to manage assets by storing the appropriate metadata about those assets, alongside any requirements documents, reference models, or frameworks. Industry-specific taxonomies or classification schemes make it possible to get up and running quickly and support compliance with these frameworks. For example, Flashline offers an add-on to its CAM tool that configures it for the Federal Enterprise Architecture (FEA), aligning a federal agency's software assets with both the agency's enterprise architecture and the FEA.
Repositories can also contain knowledge assets such as best practices and design patterns. LogicLibrary's Logidex even comes preloaded with Sun's Core J2EE Patterns, RosettaNet's Partner Interface Processes, and .Net's building blocks.
CAM tools complement enterprise architecture modeling tools by building links between the diagrams that represent existing assets and the assets themselves, regardless of which repository the assets exist in. The CAM tool can also link to relevant documentation (stored in a traditional document management system), other kinds of documents such as service-level agreements, and run-time data relating to the software's performance, aggregating all of the metadata related to the asset in a single place. EA modeling tools have a larger scope than CAM tools, encompassing nearly every aspect of architecture including applications, business processes, and technology. CAM tools deal only with software development and are primarily operational rather than strategic (at least in these early incarnations).
Maintaining quality across the software development life cycle is another enterprise goal that is greatly facilitated by the use of a CAM tool. Not only is quality improved because developers can be assured that they are working with proven components and frameworks, but it becomes possible to track those assets over the life cycle. Knowing when and where an asset has been used allows for finely grained control over the asset. Assets can be promoted as they make their way through the development cycle or be retired once they have outlived their usefulness.
According to Forrester Research, CAM tools should be evaluated using the following criteria:
-
Usability – Unlike earlier CASE tools, CAM tools must address a wide variety of both technical and nontechnical users, and must allow producers of assets to deliver them in a way that allows them to be consumed easily.
-
Scalability – Today's enterprises produce a large number of software building blocks (components, services, and frameworks) and their associated artifacts (requirements, documentation, and models), and they must be accessible through a number of different channels within and external to them.
-
Process – Successful reuse initiatives depend on the incorporation of best practices into the software development process. CAM tools must include both industry best practice methodologies as well as provide enterprise architects with the capability to define their own.
-
Development tool integration – Developers aren't going to abandon their existing IDEs to benefit from component asset management, so it is critical that they fit in with existing tools for producing and consuming assets, as well as with life-cycle management tools.
-
Metrics and ROI models – Defining, capturing, and measuring reuse-oriented metrics is critical.
-
Search, index, and retrieval engine – An asset-driven approach to software development requires the ability to locate, categorize, and access those assets no matter where they may reside. Inherent in this approach is the need for a taxonomy that makes sense to the consumers of these assets, based on easily understood and comprehensive metadata.
About the Author
Lee Sherman is a regular contributor to Enterprise Architect. Contact Lee at .
Back to top
|