Software quality: break the silos

Break data silos, don’t get lost in translation

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 on linkedin
Share on twitter
Share on whatsapp

Leave a Comment

Related Posts

Continuous Intetgration on Coderskitchen: Building the ultimate CI machine

Building the ultimate CI machine

Software is traditionally designed, coded, then tested. However, poor quality coding and a testing phase at the end of the process can add a significant

Visual Testing Coderskitchen

Visual testing of a Unity-based 3D world

We provide a 3D animation environment for the development and testing of advanced driver assistance systems (ADAS) and autonomous vehicles. Developing and maintaining this environment

Hey there!

Subscribe and get an email every time we’ve got a new quality piece on here.