Why your future success depends on your software strategy
Business strategy is ultimately the science of ensuring future success. This involves anticipating the future, identifying critical issues and designing a plan of action to get there. There is one critical issue common to all “Smart” technologies, namely that the whole business of software engineering is currently based on fundamentally weak foundations.
These issues are nowhere better addressed than in a seminal paper written by Professor Jesse Poore of the University of Tennessee, “A Tale of Three Disciplines … and a Revolution“. Where other engineering disciplines systematically build upon formalisms that provide them with a solid foundation, software engineering currently only rarely does. For example, Aeronautical Engineering makes routine use of Aerodynamics, Flight Mechanics and Thermodynamics, all of which are based on proven scientific and mathematical principles. In contrast, mainstream software engineering relies on the use of informal methods exercised on a trial and error basis.
Building “Smart” technologies on weak foundations is an inherently risky business. Today, software engineering struggles to build demonstrably robust, reliable and resilient systems that perform seemingly relatively simple, constrained tasks. This struggle is most publicly manifest in the increasing occurrence of automotive recalls, for example. But fortunately, so far the cost and consequences of software failures have been relatively limited, with events such as the loss of power in the entire Northeast corridor of the US and Canadabeing the exception rather than the rule. However, the trend is not reassuring. In its annual “Software Fails Watch” report, the CEO of Tricentis remarks, “software plays a larger part in consumer and business interactions than ever before, and, yet, the number of news stories of reports of bugs being released into production only continues to grow.” The fact that to date relatively few lives have been lost due directly to software failures is because the context in which most of today’s software systems operate is constrained. For example, in the automotive world, software is currently used largely for driver assistance/comfort applications where the effects of a failure are constrained to non-critical systems within an individual vehicle and the driver is expected to function as the ultimate safety mechanism.
“Smart” systems of the future will be orders of magnitude more complex than those we build today, not only in terms their capabilities but also their dependency on other complex, sophisticated systems. For example, from a software perspective, a level 5 autonomous vehicle will be vastly more sophisticated than any vehicle on the road today.
But Smart Mobility also envisions “platooning” autonomous vehicles together in convoys – a complex system of complex systems. The consequences of the failure of any part of such a system have the potential to cause havoc and affect many lives. The weak foundations upon which software engineering is currently based offer no means to mitigate these issues with any degree of certainty.
Inflated total cost of ownership
The weak foundations of software engineering lead to an inflated total cost of ownership (TCO) for software (dependent) products. But because most software engineering organisations embrace the weak foundation paradigm these costs have become the accepted norm. Clearly then there is a huge opportunity to disrupt the status quo for any software engineering organisation capable of delivering a lower TCO by supplanting the weak foundations paradigm with a more rigorous approach.
Mastering software driven innovation begins with establishing strong foundations in software engineering. This means adopting and deploying analytical tools and techniques that prevent, detect and eliminate defects early in the development lifecycle. The adoption of strong foundations enables software engineering organisations to reduce feature development time & costs, achieve high quality results, and build a maintainable and reusable code base. With the benefits of a strong foundation, development teams can focus on rapidly innovating in software and mastering increasing complexity. Businesses that can rapidly innovate in software can also more rapidly innovate with software, enabling the delivery of market leading Smart Products and Services.
Future winners in the race to achieve dominance in “Smart” products and services will be those organisations capable of mastering software driven innovation. Strong foundations in software engineering are a pre-requisite for successful software driven innovation.
The weak foundation paradigm is the industry’s currently accepted norm and is deeply ingrained into most software engineering organisations. Herein lies both the opportunity, the threat and the need for a strategic approach.