30 December 2008

The Five Components of Agility

Agility is the ability to act quickly and with economy of effort in accurate response to change and also to initiate change for business advantage.

Correctness and clarity are preconditions for agility. If a service is not correctly defined and clearly understood, then any discussion of the other quality attributes is rendered meaningless. The different types of models and specification techniques used in service-oriented architecture (SOA) should help in establishing the correctness and clarity of services.

Agility is usefully expressed in terms of five constituent quality attributes that are intimately related to the quality of your SOA design (reusability, replaceability, interoperability, flexibility, and adaptability). The models and specification techniques used in SOA design should assist in weighing up these sometimes conflicting criteria and in arriving at a well-designed set of services.

The five constituent quality attributes of agility are described below. Notice that in each case we provide guidance for measuring the quality attribute. If an organization is serious about the agility aspect of quality of service (QoS), as most would surely purport to be, then it is important that investment is made in setting up and measuring at least some of these quality attributes.

However, we have perceived a general reluctance to do this. For example, one insurance company was advised to set up a process to measure duration times to fix bugs in its systems. The cost and time to do this was deemed unacceptable. It is perhaps no surprise then that the organization remained lacking in agility.

However, as Cutter Fellow Tom DeMarco wrote in the context of controlling software projects in 1982, "You can't control what you don't measure."1 More than that, in the context of software quality, "You can't measure what you don't specify."2

Reusability

Reusability refers to the repeated use of a service in different contexts. The number of invocations of a service and the number of contexts in which a service is invoked are important factors in measuring reusability. It is interesting to note that whereas higher software reusability is commonly touted as the benefit of SOA, it is but one piece in the agility jigsaw, and that agility is in turn but one piece in the QoS jigsaw.

Replaceability

Replaceability has to do with the ease with which a piece of software (such as a component or module) providing a service can be substituted with another having different implementation code while offering the same set of interfaces. We can measure replaceability by considering the cost and time to implement a piece of software using a different language or design while retaining the same interfaces.

Interoperability

Interoperability denotes the ease with which a piece of software providing a service interacts with other pieces of software at runtime. The cost and time needed to ensure conformance to the software execution environment are key factors in determining the interoperability of a service.

Flexibility

Flexibility refers to the ability of a service to perform even if it is outside its intended context, or at least that it has the feature that its functionality degrades gradually outside its context; software should be soft! Flexibility is similar to reuse in that different contexts are involved. However, whereas reuse is pretty much a straight quantitative concept, flexibility has to do with minimizing the "knock-on" effects of reusing the service in different contexts. We can begin to measure flexibility of the service in terms of the cost and time it takes to change the software in the surrounding environment, when deploying the service in a different context.

Adaptability

Adaptability is defined as the ability of a service to change efficiently in terms of its extensibility to meet new requirements and portability across implementation environments. Cost and time to add interfaces to support the use of the service in a new context are important factors in measuring adaptability. Note that adaptability is often confused with flexibility. However, the former focuses inwardly, very much on the ease of change of the service itself. Flexibility looks outwardly to the minimizing impact of a service on its surrounding environment. The idea here is that the service itself doesn't change, its environment does!

I welcome your comments on this Advisor and encourage you to send your insights to pallen@cutter.com.

-- Paul Allen, Senior Consultant, Cutter Consortium

Notes

1DeMarco, Tom. Controlling Software Projects. Prentice Hall, 1982.

2Allen, Paul. Service Orientation: Winning Strategies and Best Practices. Cambridge University Press, 2006.

The Five Components of Agility

Advice and Analysis

The Cutter Edge is a free biweekly email service that gives you information and advice that you can put to work immediately for your organization. Issues are written by Cutter Consortium's journal and Senior Consultants.

Sign Up for the Cutter Edge

Advisor Free Trial

Sign up for a free, 4-week trial to any or all of our Advisor newsletters.

Sign Up