Software reuse for business success

This article was originally published in VSJ, which is now part of Developer Fusion.
As enterprise software systems continue to grow in complexity, IT is struggling to find better ways to meet the increasing demands of business. With pressure to create higher quality software more quickly and at less cost, enterprise IT must find ways to streamline development. Devising an effective software reuse strategy enables software development teams to construct enterprise software systems through assembly of reusable parts, and Component Based Development (CBD) serves as a critical enabler of realizing higher degrees of reusability. While CBD is not new, immature technologies have hindered past efforts.

With many organizations embarking on large-scale Service Oriented Architecture (SOA) initiatives, Component Based Development (CBD) can play a critical role in realizing higher degrees of reuse across enterprise services and applications. In fact, CBD is one of the few technologies that has successfully bridged the gap between commercial and open source software development. Today, the open source community thrives on componentization as the primary means of achieving high degrees of reusability. Realizing maximum value and return on investment from your enterprise software development initiatives in today’s diverse software ecosystem demands an effective reuse strategy and this is where CBD can play a useful role.

Component Based Development and SOA

In many ways, Service Orientation is an evolution of the primary tenets of Component Based Development, and a goal of SOA is to fulfil mission critical business processes through an orchestration of reusable services. But SOA also represents a step forward in helping IT and business achieve greater alignment through services that expose discreet business functions. While SOA has the potential to increase alignment between IT and business, the development of services face many of the same challenges software development teams have dealt with for decades. Preventing the rot that comes with the inability to manage change and evolutionary growth is a challenge confronting all software development teams. An effective software reuse strategy, achieved through componentization provides significant benefit in realizing the goals of SOA.

Figure 1
Figure 1: Use Case Diagram for a Claims Processing System

Let’s illustrate this benefit with a simple example. Figure 1 shows a sample Use Case diagram for an Insurance company Claim Management System (CMS). A Customer Service Representative enters the claim upon receiving a notice of loss from the customer. After the claim has been entered into the system, workflow rules dictate to which Claim Adjustor the claim is routed. After receiving the claim, the adjustor can evaluate the loss, enter the claim into their electronic claim file, and eventually process the claim to settlement.

Figure 2
Figure 2: Component Diagram illustrating services and components of the CMS

Figure 2 shows a component diagram for the CMS illustrating two separate web applications and a number of services and components. Each service fulfils a core business function, and is composed of one or more reusable components that can be deployed and reused across multiple applications and services. The Claim Severity Component is an example of a component deployed and used by both the workflow and adjudication service to help score the severity of the claim and ensure the appropriate rules are applied during adjudication. Component reuse helps speed the development of applications and services through a combination of custom development and component assembly.

Managing the development of these components is crucial to realizing the advantages of CBD and SOA. Yet managing this development is difficult, not only because of complex technical challenges, but also due to the essential complexity surrounding software development.

Often not considered a significant part of a CBD strategy, a robust Software Configuration and Change Management (SCCM) tool is a fundamental aspect. Telelogic Synergy and Change is one such tool suite for change and configuration management for enterprise CBD and SOA initiatives. Let’s examine the benefits of CBD followed by some common impediments.

Benefits of Software Reuse

Software reuse has been the holy grail of software development for decades. The business value realized through successful reuse initiatives can offer substantial rewards. Below are some of the advantages teams can achieve through a successful CBD reuse initiative:
  • Reduced time-to-market – CBD emphasizes assembly of applications from pre-built parts. Robust components have already undergone rigid testing cycles. Because components are modularized and independent units, they can often be developed in parallel. Given the proper collaboration and testing tools, teams can work effectively even when dispersed throughout the world.
  • Higher quality – Components are discrete fine grained units of behaviour, and automated tests can be written that ensure each component undergoes a strict test lifecycle. As components are field tested upon being consumed by an increasing number of applications, developers gain increased trust in CBD.
  • Decreased cost – Increased modularity of components helps isolate software functions, providing an efficient mechanism to upgrade a component without impacting an entire application. Although the short-term cost of CBD is typically greater than developing applications in silos, as component reuse increases, the reduced time-to-market and higher quality offer substantial long-term savings.
  • Increased organizational agility – The ability of IT to respond quickly to business needs is imperative in today’s dynamic business climate. As the component inventory of your organization grows, teams are able to enhance application functionality using pre-built software components. Additionally, because change requests of the business stakeholders are isolated to discrete units of functionality, change can be made in isolation and released to all component consumers.

Challenges faced in achieving Software Reuse

While component technologies have gone mainstream within the enterprise, the benefits of CBD have not scaled systematically. Advances in technology are not enough, as teams continue to struggle with the many challenges surrounding management of the CBD process:
  • Managing versions and upgrades – It’s likely that many projects use a single component. Unlike reuse in an SOA world, where multiple consumers reuse the same instance of a service, single instances of a component are deployed with application. When an upgraded version of the component is available, the component development team must determine the best way to make the component available for upgrade, while the teams using the component must determine the best upgrade path. Beyond managing the upgrade process, CBD initiatives must have processes in place to ensure component development teams and application development teams receive proper notification when a new version of a component is available.
  • Component granularity – The behavioural evolution of a component impacts the component’s reusability. As a component is used by more and more applications, there tends to be a push and pull effect as requests for expanded and reduced behaviour influence the component. Component granularity must be carefully managed to achieve an optimal reuse threshold while ensuring a valuable level of behaviour is provided. Managing change surrounding the behaviour of a component is a challenge in CBD.
  • Dependency management – Components with excessive dependencies are more difficult to reuse because of the impact of including the component and each of its dependencies. Attempts to eliminate all component dependencies, however, often result in duplication of code, effectively negating the reuse benefits of CBD. Managing dependencies among components is critical, but understanding component dependencies and the granularity of dependent components is equally important.
  • Configuration – Ideal components are adaptable to the environment containing them. Failing to create components that are flexible and configurable often means that a component’s reuse is limited due to inflexibility. On the other hand, components that integrate easily into your environment are well accepted.
  • Change management – Change is an inherent part of the software development lifecycle. As change occurs, the team must collect change from a variety of sources and collaborate on the most effective approach to component growth without having a detrimental impact on component reuse. A central repository for managing change with event-based triggers and bi-directional traceability to requirements, design, code, and testing helps encourage effective change management
  • Communication and collaboration – Publishing a component as an organization’s software asset seems logical. However, ensuring proper communication occurs between component developers and component consumers is critical as a component evolves. Ensuring a component repository is available, that others understand how to obtain a list of published components, and that changes to components are made readily available is imperative.
  • Cultural challenges – Many reuse initiatives emphasize technology aspects of CBD but neglect addressing the cultural impact. Failure to address the people, process, and social aspects of CBD can undermine even the most technically adept CBD teams. Since CBD is a reengineering initiative, upper management support is critical in helping teams work co-operatively and effectively. Reuse initiatives may be disruptive, as key architectural decisions are often split between component developers and component consumers, Successful reuse initiatives require that trust be established between stakeholders and that developers feel empowered.
  • Reuse without source – The reuse without source model of CBD is incredibly difficult because it’s based on the assumption that the component will always work within your environment. Unfortunately, because component developers cannot predict all possible usage scenarios, environmental failure is to be expected. Component reuse with source is an effective CBD model because teams experiencing component failure can perform trial and error debugging techniques in search of the problem. In fact, reuse with source is a significant factor in the continuing success of open source software.

Managing the CBD Lifecycle

Overcoming many of the challenges surrounding CBD requires that we manage the CBD lifecycle with a tool such as Telelogic Synergy and Change, a software change and configuration management (SCCM) tool suite that integrates with other Application Lifecycle Management (ALM) tools. Synergy components support numerous practices aiding the CBD lifecycle, including:
  • Choice of a centralized or distributed component repository that stores components as source or binary allowing teams to setup multiple separate repositories and distribute the components across those repositories. Synergy supports high performance WAN access to a central server, while one has a topographical choice of setting up multiple, distributed repositories. Because components can be reused as source components, teams have the ability to review the source code when troubleshooting component configurations, and make critical changes to the component depending on an organization’s CBD processes and guidelines. Because source components can be versioned and reused at many different levels of abstraction, source components can also be easily broken down into finer grained components to achieve the desired level of component granularity.
  • Advanced configuration and version tracking that allows teams to compose applications and services from a combination of components. Teams can also easily manage different variations of a component and do parallel development on multiple release streams at once. Teams have the ability to search the component repository and subscribe to the components they want to use.
  • Task Based Change and Configuration Management (TBCM) allows teams to manage coarse-grained change requests that are broken down into discreet tasks. Instead of managing change at a file level, change is managed at the task level. Once a task is marked complete, all files that have undergone change as part of that task are released back to the repository. A shared repository with Telelogic Change ensures a single instance of change requests and tasks propagate throughout the CBD environment. Change requests can easily be traced through completion.
  • Insulated environments and a robust promotion scheme to ensure teams can work in isolation during heavy active development or together during intense periods of integration. For instance, separate environments can be setup where a component must pass integration tests before being propagated to the others. Teams can also setup an integration area where the most recent changes to a component are built and tested.
  • Reporting capabilities that allow members of the team to clearly understand the evolution of component growth across versions, environments, and component consumers.

Conclusion

Software reuse and its underlying fundamentals have evolved dramatically over the past four decades.

The benefits of constructing mission critical enterprise software applications through assembly of reusable parts are immense. With today’s complex development environments and ambitious SOA initiatives, effective CBD can play a critical role in realizing success but many factors impede its success.

One of the biggest reasons is the inability of the development team to develop, share and manage components through an underlying framework of integrated and optimized process patterns and change management techniques. Tools such as Telelogic Synergy and Change can offer a disciplined approach to CBD by supporting best practices.


Syed Raza is Director of Product Marketing SCM Solutions for Telelogic, an IBM Company, and Kirk Knoernschild is Senior Technology Strategist at TeamSoft.

You might also like...

Comments

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“Debugging is anticipated with distaste, performed with reluctance, and bragged about forever.” - Dan Kaminsky