Break data silos, don’t get lost in translation

Software quality: break the silos

Let’s continue exploring what we need to efficiently monitor software quality: in the previous post we saw that we need the big picture as well as the little details. And these data come in so many shapes and flavors that it could be easy to get lost in translation, trying to handle them all. Should we break the data silos?

Breaking the data silos

“Breaking the silos” has become a popular phrase. In our context of software development quality, we refer to activities related to software production.

At the first glance, this means source code, and test silos:

  • To check code, quality managers can use information from static analysis, complexity analysis, rule checking, execution benchmarks.
  • To check tests, we obviously need to focus on test results, but also availability, duration, stability.

And taking a step back (to look at the big picture), the project quality also includes requirements, design, resources, validation, change management silos.

And anyway, what does it mean to break data silos?

  • First: don’t break anything
    We want to make sure we preserve each silo’s context. There are precious know-how and good practices from each silo to translate into silo-specific quality indicators.
    This is where we will find, for example, Standard Compliance or technical debt, which rely on the source code alone.
  • Then: draw connections
    We need to use connections between data from different silos whenever possible, creating transverse quality indicators.
    For example, Code Coverage or Test Effectiveness are computed by connecting the Code and Test silos.

Hence, we need connectors which know how to “speak” each silo’s language, in order to provide data in a common language, and create both silo-specific and transverse quality indicators.

Handling data from the same silo

So far, the concept is rather simple: we need to know how to retrieve code metrics, read test results, and put everything together. Pretty easy, right?
Well, not quite, as you might anticipate.
Let’s just focus on the code and test silos, and suppose you want to produce an indicator to check whether complex functions have been tested properly and are compliant to a standard. For that, you need info from static analysis, rule checking and test.

  • How many code analysis tools are there? (many)
  • Same question for rule checkers? (a lot)
  • What about testing frameworks? (more than a few)

Let’s suppose we know which three tools we work with, and we have the appropriate connectors “speaking their language” to feed software quality.
What if we decide mid-project to add a new tool to get complete data?
And if we change projects, and the team doesn’t use the exact same tools?
And if one of the tools is upgraded, and slightly changes its data model?

All these scenarios mean that within the same silo, we also need to handle different tools (different languages), to continue to provide data in a common language.
It doesn’t matter whether you use “Test Framework A” or “Testing Tool B”, you will still provide the test data, and produce quality indicators regardless of the origin of raw data.

Quality evaluation overview

The data aggregation phase

Data aggregation is the first phase of the software quality process. It is crucial because it connects to tools from all the silos, speaking their individual language.
The first objective is to produce a single view where all data relevant to quality are present and connected.
The second objective is to keep producing this view independently of the actual tools in use.

We now have a beautiful, unified network of data, we’re ready to apply a Rating model and produce indicators 🙂

Further readings

Share:

Legal Notice

This text is the intellectual property of the author and is copyrighted by coderskitchen.com. You are welcome to reuse the thoughts from this blog post. However, the author must always be mentioned with a link to this post!

Leave a Comment

Related Posts

Int code overflow - coderskitchen
John Paliotta

Why is everything an int?

In C/C++ applications, most scalar variables are defined as ‘int’.  Do these applications deal with lots of large numbers that need 32-bit integers?  Not likely,

Flavien Huynh

Measuring and monitoring technical debt

The technical debt concept has been around for some time now. We can find it in international conferences, in scientific articles, books, and even here

Improving code quality
Flavien Huynh

Software quality: To the rescue!

In this post we’ll show what a healthy relationship with code quality looks like. After our introductory post, software quality (‘SQ’ for friends) might seem

Software quality - origin story - Coderskitchen
Flavien Huynh

Software quality: Origin story

Software quality is a vast field, which has been the subject of many studies, standards and tools for a long time (if we think in