With the Internet of Things (IoT) happening at a broad level, in every industry, there will be many new vendors providing applications, middleware and connected devices. Many of these vendors will be new to building embedded software, engineering robust software, or both. Additionally, consumers and manufacturers alike will expect the operation of the connected devices to be seamless and reliable and deliver a positive user experience in general. Ensuring these systems are developed with High Quality Software will be critical for the success of manufacturers who want to embrace and be successful in the age of the Industrial Internet of Things.
To quote the recent “Winning with the Industrial Internet of Things ” report , the Industrial Internet of Things (IIoT) is “arguably the biggest driver of productivity and growth in the next decade” and it will “accelerate the reinvention of sectors that account for almost two-thirds of world output.” The report states that the Industrial Internet of Things has the potential to add $14.2 trillion to the global economy by 2030.
As more software applications have a requirement for dependable and uninterrupted operation, vendors will need to implement processes that can deliver quality software.
The biggest challenge that software developers face is balancing testing completeness with time-to-market. Often the fear is losing the “first mover advantage” for the sake of testing completeness. However, sacrificing quality for time to market is a dangerous choice that can have a significant effect on brand value.
In the normal product life cycle for a software application, 1.0 is the initial release to customers. In subsequent releases, bugs are fixed, and functionality that was missing from 1.0 is released. The product typically reaches a point at which users are happy with the quality and the features of the product. The Quality Deficit sits between the first release of the product and when the market considers the product to be of good quality. Minimizing or eliminating this Quality Deficit should be high on the priority list of every organization that is building software.
To tackle this challenge involves addressing the second challenge that development teams face, the allocation of development resources between requirements, design, coding and testing. Historically, the workflow has been development teams placing the highest priority placed on coding, with less emphasis on the Application Programming Interface (API) and test case design. Generally, groups will assign senior staff to code development and junior staff to testing. However, if this model were to be completely reversed, then the most valuable software development products would have a complete and flexible API, and the test cases prove the correctness of this API.The most valuable software development products would have a complete and flexible API, and test cases that prove the correctness of this API prior to developing the software. Click To Tweet
If a great API is developed, and tests formalizes the correct behavior to this API, then the actual code writing can be done by junior staff, the code can be re-factored with confidence, and quality will be greatly improved.
A final challenge to address when improving software quality is that most groups maintain a variety of test types, and a different group in the organization “owns” each type of test. It is very common for the developers to create and maintain low-level tests, while the Quality Assurance (QA) department is responsible for the others.
The QA tests are generally run only after several weeks of development, when hundreds of source changes have been integrated into the code base. This makes finding the root cause of a broken test time consuming and frustrating. The solution to this challenge is to treat test cases as a valuable asset of the organization, and leverage them across the entire team and application life cycle.Treat test cases as a valuable asset of the organization, and leverage them across the entire team and application life cycle. Click To Tweet
There is an increasingly important role for software quality as the industry adapts to the Industrial Internet of Things and the fourth industrial revolution. Organizations that do not adjust their development processes to enable them to produce higher quality applications are risking not only their brand, but also their very existence. Organizations that do adapt will thrive.