Introducing

Software Engineering and The Golden Rule

stemming from a faulty CrowdStrike update affecting Microsoft windows, has caused severe disruptions. Airlines are facing flight cancellations due to inaccessible scheduling systems, hospitals struggle with patient records, and financial institutions experience delays in transactionprocessing. These incidents underscore the critical need for a robust fail-safe infrastructure.

CrowdStrike, a cybersecurity firm, clarified that the recent outage was not caused by a security incident or cyberattack. Instead, they attributed the problem to a faulty update deployed to computers running Microsoft Windows. The company assured that a fix for the issue was already in progress.

The issue may have arisen from a breach of one of the fundamental principles in software engineering, indeed the Golden Rule of engineering, all code must be adequately tested before releasing to the public.

Software Engineering’s Golden Rule: “Test your code as users would”. Treat your code as you would expect it to withstand real-world user demands.

It was reported in 2020 by CISQ that approximately $2.08 trillion was lost by U.S companies alone due to poor software quality.

What is more alarming is the trend we often see with high profile projects cutting testing altogether — because of the added cost to the overall price of those software projects.

The simple fact is that while testing will increase the price of the initial project, it will lower the lifetime costs of the project if done correctly. NIST ( National Institute of Standards and Technology) performed a study that indicates that it costs up to 100x more money to fix a bug that has been release as opposed to catching them during the development cycle.

Aionic’s pillars for quality assurance within the development phase prevent these negative outcomes:

1. Early Testing: Start the testing as early as possible in the software development lifecycle, to catch defects early and reduce rework.

2. Clear Requirements and Test Planning: Clear and well-defined requirements reduce assumptions and rework

3. Use of Testing Techniques: Leverage a variety of testing techniques such as unit testing, integration testing, system testing, and acceptance testing to thoroughly verify different aspects of the software.

4. Test Automation: It is critical to automate repetitive and regression tests to increase efficiency, reduce manual effort, and ensure consistency in test execution.

5. Continuous Integration and Continuous Testing: CI/CD complements test automation by focusing on automated testing pipelines. This streamlined approach integrates code changes swiftly, executes automated tests, and detects issues early in the development process. All while doing this consistantly.

6. Traceability and Coverage: Maintain traceability between requirements, test cases, and defects to ensure all requirements are covered by tests, and track test coverage to identify gaps.

Lastly, testing should be drilled into your company culture. It is certainly a big focus for us at Aionic. Fostering collaboration between developers, testers, and stakeholders ensures everyone is pulling in the same direction as it relates to delivering quality.

By following simple generally accepted software testing principles we can prevent massive costs and disruptions like the one CrowdStrike faced.