
From House Of Cards To Fortress: The Six Pillars Software Needs To Be Trustable
The world of software development has undergone a seismic shift over the past two decades. Gone are the days when in-vehicle software was limited to small-scale controller code for engine control units (ECUs), with mere tens of thousands of lines of code (LOC) on each controller. Today, vehicles carry more than 100 million LOC and continue to grow exponentially as they become increasingly software-defined. The stakes are higher now than ever before.
With the exponential growth in scale comes a newfound responsibility: ensuring that this software is not only maintainable but also trustworthy. Trustworthy software is essential for building confidence and maintaining public trust, particularly in safety-critical systems like those found in the automotive industry. However, with the rise of open-source projects and third-party dependencies, the risk of hidden risks and unmeasured vulnerabilities threatens to undermine this confidence.
The importance of trustable software cannot be overstated. We’ve seen it before – financial crises born from unchecked risks, such as the 2008 meltdown. The lesson is clear: blind faith in software without accountability can lead to catastrophic consequences.
To build this trust, software development must adhere to six essential pillars that ensure the integrity and maintainability of our creations:
1. Provenance
Clearly indicate where the software comes from, who produced it, and what claims are made about it. This transparency is crucial for companies relying on open-source projects or third-party dependencies. Imagine a mission-critical product built using an open-source project that suddenly ceases to exist or rewrites its license, leaving users without recourse.
2. Construction
Demonstrate how the software was constructed, installed, and run. Provide clear directions for each step, ensuring that another engineer can verify that the steps were done correctly and the software will continue to function as intended. This discipline is crucial for avoiding costly project delays and catastrophic failures.
3. Change
Know how to make updates to the software without breaking anything. Provide guidance on updating software without introducing defects or regressions in product functionality. The absence of this pillar would result in unpredictable behavior, compromising safety-critical systems and eroding trust.
4. Expectations
Set clear guidelines for what the software is expected to do and must not do. This is particularly crucial when relying on open-source projects or third-party dependencies. Without defining expectations, you risk inheriting unintended behaviors and vulnerabilities that can jeopardize compliance and trust.
5. Results
Provide evidence that the software actually does what’s outlined in the expectations, allowing users to recalibrate if necessary. This pillar is fundamental to building trustworthy software. Software may behave unpredictably without this step, delivering incomplete functions or introducing unintended actions, which would erode confidence and increase risk.
6. Confidence
Prove that your software-enabled product won’t cause harm to humans or property. Without explicitly assessing and communicating confidence, risks remain hidden and unchecked. For safety-critical environments, unmeasured risk undermines compliance and public trust.
In conclusion, the stakes are too high to ignore these pillars. The world of software development must recognize that building trustable software is not an option but a requirement for maintaining public confidence in our products.
Source: https://www.forbes.com/councils/forbestechcouncil/2025/04/09/from-house-of-cards-to-fortress-the-six-pillars-software-needs-to-be-trustable/