1

We do have several Components in our product which are

  1. Component A
  2. Component B
  3. Component C

Dependencies are (if unmet the system fails):

A <-> B
B <-> C

We are currently creating a build pipeline and finally the Software for each component gets packaged into a single firmware image:

A -> Output A
B -> Output B
C -> Output C

Output A + Output B + Output C = Firmware

The firmware gets packed with some documentation and will then be deployed. Deployments should happen every week to testing and every 2-4 weeks to production.

Firmware + Docs = Deployed Software

My problem is now:

  • How do i ensure compatibility between A,B and C given the fact that they are all developed by different teams?

    I saw this question here Looking for best practice for version numbering of dependent software components

    We do have version numbers in place for A,B and C and the overall Firmware has one as well. Are there any best practices or ways to do it?

  • How do i track back compatibility? (Besides looking into the packaged firmware and see which versions got included at a certain point in time)

    I thought about using git tags here and put the Firmware Version number (only shipped products) as a tag on A,B,C.

pfried
  • 203

1 Answers1

3

How do i ensure compatibility between A,B and C given the fact that they are all developed by different teams?

Your build tools or version control system cannot do this for you. You need integration tests for this, ideally a fully automated integration test suite. How often you run this suite depends on your team, the minimal requirement is once before each deployment, in teams using a CI server this can happen much more frequently, probably several times a day.

We do have version numbers in place for A,B and C and the overall Firmware has one as well. Are there any best practices or ways to do it?

This is fully covered by the link you already mentioned in your question.

How do i track back compatibility? (Besides looking into the packaged firmware...)

Looking into the packaged firmware is not necessarily a bad approach, if you have easy access to the packages, have tools to easily depackage them and archive the packages properly. However, if that does not satisfy your needs, you need to fully automate your packaging process, and make sure the package scripts can grab each version number from every component automatically. Then let the script write those version numbers into a logfile and keep that logfile.

Doc Brown
  • 218,378