Characteristic Parity

Replicate present performance of a legacy system utilizing a brand new know-how stack.

On many events once we discover ourselves speaking to IT executives we
hear how they’ve a set of growing older functions constructed utilizing quickly
to be, if not already finish of life applied sciences. Extra typically that not these
techniques are hosted in expensive knowledge facilities managed by third events and with
rigid contracts.
These functions are essential to the profitable operation
of the enterprise, whereas on the identical time being one of many largest sources of
enterprise and operational danger.

They’re all too conscious that there’s an probability to make
enhancements, optimize processes and unlock new alternatives. To do that
totally nevertheless goes to be disruptive and brings in lots of dependencies.
For example the commitments of present ‘BAU’ work, different change programmes
and never least the present plans and budgets of the departments the place the top
customers work.

One method on this state of affairs is to attempt to reduce the influence
of alternative on the broader group by ‘merely’ changing the
know-how whereas leaving all the things else ‘as is’. That is method typically
known as Characteristic Parity, or the ‘function parity entice’ by those that
have tried it.

While Characteristic Parity typically seems like an affordable proposition, now we have
learnt the arduous manner that individuals enormously underestimate the hassle required,
and thus misjudge the selection between this and the opposite alternate options. For
instance even simply defining the ‘as is’ scope generally is a enormous effort, particularly
for legacy techniques which have grow to be core to the enterprise.

Most legacy techniques have ‘bloated’ over time, with many options unused by customers
(50% in keeping with a 2014 Standish Group report) as new options have
been added with out the outdated ones being eliminated. Workarounds for previous bugs
and limitations have grow to be ‘should have’ necessities for present enterprise
processes, with the way in which customers work outlined as a lot by the constraints of
legacy as anything. Rebuilding these options will not be solely waste it additionally
represents a missed alternative to construct what is definitely wanted at the moment.
These techniques had been typically outlined 10 or 20 years in the past throughout the constraints
of earlier generations of know-how, it very not often is sensible to copy
them ‘as is’.

If Characteristic Parity is a real requirement then this sample describes
what it’d take to do nicely. It isn’t a straightforward path, nor one to be
taken calmly.

The way it Works

Characteristic parity is straightforward idea to state. Construct a brand new system, in a extra
acceptable know-how stack, with precisely the identical options and behaviors
as the present system. Each time anybody has a query about what the brand new
system ought to do, we reply that query with “do what the present system
does”. To know now we have parity we have to totally perceive what the present
system does, and be capable of confirm the brand new system does that very same factor.

What’s in scope – what does the outdated system do?

The primary a part of function parity is to create a specification of
what the present system does. A mixture of the next will probably
be required:

System Surveys

Consumer Actions

What are the person roles, what options (menu objects) within the system
can they see, what actions can they carry out. For every menu merchandise /
motion – what are the screens concerned, what knowledge objects, what
validation logic are you able to see. What observable result’s there for a
person taking the motion?

Batch processes

What batch jobs are outlined within the system? When are they triggered,
what processing do they carry out, what observable outcomes are

Interfaces and Integrations

What techniques are built-in?

  • What interfaces does this method present to its clients, what
    are the contracts (API, CFRs, behaviour expectations/unintended effects)
  • What interfaces does this method devour, what are these
  • Look out for techniques or components of techniques which can be built-in by way of
    databases (see Experiences / Knowledge, and Archeology)
Core algorithms

Well-known enterprise guidelines and calculations that have to be
replicated – triggered by person actions, batch processes.

Experiences / Knowledge

What reviews does the system create, in what format, from what
knowledge, when and the way incessantly?

How is the information mutated throughout the database? Are there triggers
altering the information, what fires them, and what procedures do they fireplace?
How deep does that rabbit gap go?

What different techniques have entry to or are built-in utilizing this
knowledge? In what methods do they alter it, and what observable behaviour do
these modifications have?


Archeology is commonly wanted to totally perceive what a system does. It’s by way of
an “archaeological course of” that you simply study that altering the information discipline Y
on display A ends in worth Z showing on report C after batch job N
runs. Performing this archeology generally is a important funding in
time, and mind energy of these folks with probably the most expertise of your
legacy techniques.

Instrumentation – primarily based on knowledge, what’s used?

It’s nicely price spending a while analysing present reviews such
as entry or different system logs to know how the present system is
used. If these will not be obtainable, then some funding in instrumenting
the present system could present an excellent return because it may permit you to
keep away from pointless work primarily based on knowledge.

Characteristic worth – can we drop options which can be low worth?

While we try to keep away from burdening the enterprise when adopting
this sample, speaking to customers to know what options are low worth
or not used will be useful to handle your scope. This can re-introduce
the organisational impacts/change that we had been making an attempt to keep away from

Use exams to make sure function parity – the brand new system does what the outdated one did

Realizing what the outdated system does is the primary problem,
however we additionally have to ensure that the brand new system does certainly work the identical
manner. To confirm this with confidence we want exams in place to show that the
new system does certainly have function parity. Following is an inventory of areas
the place testing will have to be carried out.

Consumer journeys and person expertise

Use acceptance exams – to examine that options you might have constructed behave as
anticipated from a person’s perspective. Take care to not be reliant on these as
the principle validation method as they’re excessive up the testing pyramid.
Moreover be conscious that decomposing a system into person features,
screens and flows may simply result in too lots of some of these

Testing UI behaviour (together with consumer aspect validation) is comparatively
easy to do: click on right here, anticipate to see some state, enter knowledge there,
click on there, anticipate to see some completely different state. Use the suitable
tooling in your chosen tech – unit-like check frameworks for SPA
utility, or one thing like Cypress for a extra conventional server aspect
rendered utility.

The place it is necessary (in an “professional person optimised” UI for instance)
the testing of format (and look/really feel) is more durable however there are instruments that
can assist (Galen with Selenium for instance).

For the usability and format you’ll probably be reliant on exploratory

Enterprise logic – core algorithms

For core algorithms and core enterprise logic, guarantee that you’ve
constructed a set of unit exams round these components of the present system.
These will present executable specs of the enterprise logic /
algorithm that’s identified to efficiently run on the present system. A
modified TDD method that features porting these exams into the brand new tech
stack can then be used giving excessive confidence within the new implementation.
There’s a danger related to realizing that you simply ported the exams appropriately –
mutation testing may present some extra reassurances – comparable
mutations trigger comparable failures throughout the outdated and new implementations.

Interfaces – as a service supplier and as a service buyer

As service supplier: Create a check suite to execute in opposition to the
present system being changed – an executable contract. Execute these
identical exams in opposition to the brand new alternative system checking for adherence to
the contract. Beware the entice of the scope of those exams turning into too
massive, like within the case of the UI.

As buyer: Use check mocks to validate that you’re interacting with
the supplied providers within the anticipated manner. Just like the case for core enterprise
logic, migrate these mocks to the brand new tech stack to make sure the brand new
implementation continues to work together with supplied system in the identical manner.
Moreover use stubs of the exterior techniques to offer identified knowledge units
in your new exams.

In each instances: Proxies generally is a great tool to make use of to make sure
function/interplay parity. By injecting a proxy into the communication
path the interactions with the outdated system will be recorded. You need to use
these recordings to:

  • Replay messages from clients – and examine the brand new system’s response
  • Create stubs that may replay identified good responses

Databases and reviews: This may be actually arduous – like UI exams beware the highest of
the pyramid. Right here the database / reviews are one other kind of interface.
Efficiently testing them would require a number of check knowledge – usually arduous to create/handle.

Implementation and monitoring progress

With a accomplished system survey to outline scope, and a complete
suite of exams in place to offer an executable specification of
behaviour your implementation can proceed with relative confidence. However tips on how to observe progress?

Vertical slices

Present higher transparency of progress, however it’s
probably that vertical slices is not going to be the output of the system surveys.
So mapping needs to be achieved – extra work, and a danger that necessities fall
by way of the gaps.

Finish to finish processes

Monitor progress primarily based on the complete of migration of particular person enterprise
processes into the brand new answer, so the check turns into: can a course of be
totally accomplished wholly throughout the alternative system.
This may be mixed with monitoring by Consumer Actions, above, however provided that we make sure the work
achieved to ship particular person course of steps is prioritised by the “proudly owning”
enterprise course of.

The authors’ desire could be to make sure that the definition of achieved
for any piece of labor contains (the place potential) the entire end-to-end
scope throughout all layers.

When to Use It

We now have offered above our view on what’s required so as to apply this sample nicely, and enhance
your possibilities of success. If function parity is the purpose, then there may be important work concerned in figuring out
what’s required by way of options, and extra work related to making certain that the function parity aim has
been met by way of testing.

On the whole it is a sample that we do not advocate. In actual fact Thoughtworks
went so far as inserting this very sample on maintain in our Know-how Radar.
We see this sample as an enormous missed alternative. Usually the outdated
techniques have bloated over time, with many options unused by customers (50% in keeping with a 2014 Standish Group report)
and enterprise processes which have advanced over time. Changing these options is a waste. As a substitute, attempt to muster
the vitality to take a step again and perceive what customers at present want, and prioritize these wants in opposition to
enterprise outcomes and metrics.

We now have nevertheless seen a few instances the place this sample is especially relevant.

  • Extremely optimised person interfaces for energy customers are good candidates
    for recreating like-for-like. Think about brokers utilizing short-cut keys to
    execute trades at excessive speeds. To be efficient at their job they might
    require hyper-optimised person interfaces that allow them to function utilizing
    solely the keyboard. It might take a big period of time to grow to be
    proficient, and modifications that lead to decrease effectiveness can’t be
  • Behaviour primarily based on well-known specs: One other instance use case
    for making use of the sample may very well be techniques that assist engineering or
    scientific modelling. Within the case of a finite ingredient evaluation solver for
    instance, a given enter ought to produce a given output – the legal guidelines of physics
    will not be altering as a part of the modernization undertaking.

One may argue that in each of those instances the necessity for function parity
is considerably localised – by which I imply constrained to a specific a part of
the system. It’s questionable that the method to managing scope of the
modernization of the entire system be constrained by these localised use

However these instances, whereas legitimate, are nonetheless distinctive. Overwhelmingly we have
seen feature-parity workout routines be a story of frustration. The price and energy
required to correctly perceive present options mushrooms, resulting in
corners being minimize, and though a few of these are unused options that ought
to be minimize, often some very important options additionally really feel the knife. If all goes
nicely, the enterprise pays a good-looking sum of cash for no enchancment in
assist for the enterprise. This isn’t an excellent story when enterprises know
that their future relies on higher know-how engagement.

Different approaches

  • Extract Product Traces
    or Extract Worth Streams are each patterns that give methods for figuring out
    skinny slices by way of an present system. One of many key variations is
    that they each provide methods to shorten the suggestions cycle whereas permitting
    components of legacy to be disabled and turned off a lot sooner.
  • Trying on the enterprise worth
    and ensuring that’s represented in any architectural choices can
    typically spotlight points with Characteristic Parity pushed approaches.
  • Extra “holistic” approaches can assist spotlight points with Characteristic Parity
    by treating know-how and enterprise course of as a part of the identical
    downside. Particularly within the case of Characteristic Parity this may typically spotlight
    that present enterprise processes are a consequence of the workarounds
    and compromises required by the legacy know-how.
    Simply changing the tech will go away not less than half the issue unsolved.
  • Consumer analysis can assist spotlight that present enterprise processes are
    not match for objective. In a single case by simply having just a few days of shadowing
    of present workers it turned clear function parity was unsuitable as present
    processes had been very damaged, it is all the time an excellent factor to speak to the top customers.

Instance: alternative of logistics techniques

A logistics organisation was engaged with a plan to interchange growing older software program used for
the acceptance, route planning and supply of packages. As a part of this they
agreed an IT led initiative with comparatively low engagement with the enterprise
stakeholders. The know-how view was that they may simply do “function parity”
thus fixing their urgent want to interchange old-fashioned tech.
As a part of this programme a serious piece of labor was achieved to interchange the
system that accepted the packages from shoppers. We grow to be concerned in direction of
the top of this a part of the programme.

We felt the low engagement with the enterprise stakeholders offered a
danger to the programme, particularly as we had been listening to by way of a unique
undertaking that the enterprise had been really feel pissed off with the event efforts.
As a part of this we spoke to the important thing stakeholders together with the finance
group. That is once we turned conscious of a overview that had been achieved that
indicated solely a comparatively small proportion of consumers had been worthwhile
for the organisation. In flip this meant solely a small subset of ‘bundle
varieties’ had been worthwhile, many misplaced the organisation cash on account of particular
dealing with necessities. So the enterprise had a plan in place to cease dealing with
these packages.

It turned out {that a} very great amount of effort within the “function parity”
undertaking had been spent to take care of precisely these packages, the very ones
the enterprise mentioned they not wanted. The enterprise had hoped that the
processes and therefore software program could be a lot easier with out these tough
edge instances. On this case “function parity” led to a considerable amount of time
and cash being spent dealing with necessities the enterprise not had,
whereas additional damaging the fame of IT within the eyes of the enterprise.

Instance: e-commerce organisation re-platform

This organisation had loved a interval of speedy progress however had not prioritized
IT spend for a number of years, this created a comparatively pressing want to interchange many
components of the present answer. For instance throughout sure durations that they had
to decelerate the variety of gross sales to keep away from overwhelming core techniques, hardly
excellent from a enterprise standpoint.

Most of the key enterprise operations had been dealt with by the identical mainframe, which
had been initially commissioned throughout the very earliest days of their e-commerce
operations. Extracting components from this method was clearly going to
be technically difficult. On the identical time enterprise leaders having seen
a number of disruptive failed tasks wished to attenuate any additional
disruption to their workers. An additional problem was present processes and
techniques made it extraordinarily tough to prioritize product strains emigrate
if a extra incremental method was used.
In brief it was very obscure which issues they offered made cash
and which issues did not so it was felt the one possibility was to maneuver all the things
all of sudden. Primarily based on these challenges it was felt simply replicating
what that they had was one of the best and lowest danger method.

Given present enterprise processes had been, on the face of it, all carried out collectively
in the identical mainframe this meant the scope of any “function parity” alternative
was in essence all the principle actions and processes of the complete enterprise.
They launched into an effort to doc the “in scope” as-is processes for
the alternative system, with the plan that this was going for use as enter
for a vendor choice course of.

A number of issues quickly turned clear. One was that it actually was going to have
to be nearly each single exercise that the enterprise did, every effort
to doc “as-is” performance uncovered extra issues that would want to
included to offer “function parity”. Secondly on account of historic workarounds,
years of shifting necessities alongside many excellent bugs the very last thing the
precise individuals who labored with the legacy system wished was the identical factor.
It nearly all the time made their jobs more durable and was a key supply of error and
delay. Lastly because of the bugs and workarounds it turned clear a number of key
processes had been the truth is being run “off system” on hand-built spreadsheets.
Key enterprise knowledge was extracted from the mainframe, used to run a enterprise
course of by way of the spreadsheet, then afterward the now modified knowledge was
uploaded to again the mainframe.

At this level it was felt by some that “function parity” was turning into too
dangerous, with scope frequently rising. This was earlier than the necessities
gathering course of was full, and there was no clear finish date for that
effort. Our involvement ceased at this stage as we felt persevering with with
“function parity” was too dangerous and wouldn’t ship what the enterprise
wanted, not least since lack of key enterprise metrics made prioritisation
of any extra incremental method inconceivable. A number of years later they had been
nonetheless doing the “as is” necessities course of, well beyond the unique

Lack of the best metrics and talent to prioritize components of performance
from a enterprise standpoint can typically pressure organisations right into a “function
parity” method. On this case we predict it probably a preliminary effort to
collect key enterprise metrics round numerous product strains may have
prompt methods to interrupt the issue up. It is an amazing illustration that you simply
cannot make the best technical choices with out the best enterprise context
and involvement.

Instance: a profitable alternative of a monetary calculation service

One among our groups was working for a big monetary organisation. They
wished to modernise an present service that carried out advanced monetary calculations.
The specification of the monetary calculations was mounted, the interface to
the service was comparable solely the know-how wanted to be up to date – from a
J2EE Session EJB implementation, to a SOAP Internet Service within the newest (at the moment) model of Java.

The group created a wealthy check suite across the present implementation
with clear separation between set-up, execution and assertion

Determine 1: tests_for_feature_parity

As soon as the exams had been in place, the execution adapter may very well be changed with
minimal danger, and a brand new implementation created assembly the identical executable
specification because the outdated system.


Leave a Reply

Your email address will not be published. Required fields are marked * Protection Status