How the code in your car is paving the future of software delivery
“The future is already here — it’s just not very evenly distributed.” — William Gibson
If you’re looking to predict how things should work in the future, start by looking in the right places in the present. Innovations in technology, management and collaboration that will change the way we work are already up and running in visionary organizations. Ever since reading Robert Charette’s IEEE article titled This Car Runs on Code in 2009, I’ve been fascinated by the fact that the 100M lines of code in cars represented one of the most complex software artifacts that we interact with day-to-day. That falls just above the lines of code in Mac OS X, and in the same order of magnitude of complexity as the DNA for a mouse, as artfully illustrated by David McCandless on the Information Is Beautiful blog.
Photos are from my recent trip to Porsche HQ North America
The volume of code running in cars is representative of the central and growing role that software has in the automotive industry. The 2009 IEEE article which highlighted a new “BMW Assist” system, which uses data from the car’s air-bag, engine, engine and other control units, along with cellular communication and GPS, to inform emergency response teams of location and injury severity. Just yesterday, in stumbled upon a post from of a mother praising the BMW Assist system, along with other technological innovations in the i8, for saving her son’s life. Volvo has taken the potential that software and sensors provide as far as to promise “death proof cars” by 2020. These trends, along with autonomous driving, are creating the need for a whole new scale of software-centric innovation and are expanding the software in tomorrow’s cars beyond 200M lines of code. Software is becoming the most expensive part of the car. This trend goes beyond cars and onto increasingly smarter devices across the board. At last year’s Agile conference, in a thought provoking conversation with Andre Girard of VDC Research, I was amazed when he showed me the following slide:
Large-scale software delivery is one of the most challenging endeavors an organization can undertake. We’ve seen the most trivial of software delivery mistakes cause calamities to businesses. Things get even more interesting when hardware and software are mixed, such as a software updated in the Nest thermostat resulting in people unable to heat their homes during one of the coldest weekends of 2015. The organizations that master large-scale software delivery will thrive, while those who get trapped in its many pitfalls will fall further and further behind.
Today Tasktop has announced a partnership with one of the most innovative automotive manufacturers on the planet. If you dig into the details of that press release, you’ll note key aspects of what the future of large scale software delivery will be like. Visibility into the software supply chain, automated reporting across individual boundaries, and real-time flow across the software delivery value stream are critical to delivering the benefits of Lean Manufacturing to software. As another example, you can read our case study on how an automotive hybrid/electric drive supplier has transformed their interaction with their automotive clients using Tasktop Sync (or request the full case study version).
Some of the Tasktop deployments that are happening in automotive and manufacturing go beyond the work that we do with the leading software-centric organizations. Working closely with our cutting edge automotive and manufacturing customer in Germany for over 4 years, I’ve witnessed the “Industry 4.0” initiative start to force a connection between Lean manufacturing and Lean software delivery. It’s at this intersection of a mature lean discipline and a new one that we’re learning some of the key lessons for the future of software delivery. I’ve summarized a few below.
Connect the Software Supply Chain
Just as the world around us is transforming into a set of Internet of Things (IoT) devices with microprocessors and sensors, so is the world within the car. These parts come from dozens of suppliers, and all of those microprocessors are running more and more code. This has transformed a hardware and part centric supply chain, which the world has learned to manage via lean manufacturing principles originating from the Toyota Production System (TPS), to a software supply chain.
Managing a software supply chain requires managing the life cycles of numerous applications across company boundaries. Tool support is critical to make this management possible. Although it is sometimes feasible to make everyone use the same SCM system, as has been demonstrated by the success of the Android ecosystem which forced members of the ecosystem to use Git, it is not possible to make suppliers use the same requirement, defect and issue tracking tools as those tend to be development platform and company size specific. As a result, a new layer of integration infrastructure is required to connect the planning and tracking layer of the ecosystem. Without it, the speed of delivery is limited by the efficiency of sending around spreadsheets of requirements and defects via email. When an integration hub is put in place to connect suppliers, a Lean software supply chain becomes possible. For instance, as soon as a defect is found in a test drive or simulation, that defect can be routed in real-time to the right software supplier, and as soon as the supplier commits a fix and updates the workflow status of the defect in their issue tracker, the simulation or test drive can be rescheduled.
When you consider the bottleneck that managing tens of thousands requirements across millions of lines of code via email and spreadsheets causes, there’s a clear 10x efficiency and speed gain to be had. I’m very happy to say that connecting automotive software supply chains is one of the most impactful and interesting deployments of Tasktop today.
Gain Visibility Across the Software Supply Chain
Connecting the software value stream across suppliers enables efficiency, with artifacts such as requirements and defects moving in real-time instead of being batched up and becoming bottlenecks. Equally important as gaining efficiency is a gain in visibility of how software development is proceeding across the software supply chain. Without visibility, it is impossible to identify bottlenecks and to apply the continuous improvement that transformed manufacturing to the world of software. When your software suppliers are not connected to your organization’s life cycle, you are relying on slow, manual, error and opinion prone methods of reporting. When that connectivity is automated, it becomes easy to see that a particular software component is causing a disproportionate number of defects or performance problems, and to quickly adapt. This is as important for traditional supplier relationships as it is for open source dependencies. For example, if an open sources component you depend on just raised a security issue in their issue tracker, and your organization does not have that security defect appear immediately within it’s own life cycle tools, you are now much more likely to release a component with that vulnerability. Forward-thinking automotive manufactures are teaching us that visibility and continuous improvement are needed not just across your organization’s developers and IT staff, but across the entire software supply chain. This need to provide an infrastructure layer that can provide this visibility has been one of the main drivers for the rapid uptake of Tasktop Data.
Automate Requirements Traceability
Requirements traceability is a critical, and often a regulatory requirement, for devices that we fly or drive around in. But, it is notoriously difficult and expensive to gain this traceability, resulting in the “traceability gap”, which causes additional non-value add work and re-work to connect requirements to defects to tests to builds, and so on, as things change. And with the pace of today’s delivery, change is the only constant. The problem is not the change itself, it’s the disconnected nature of the change. For example, when developers change a line of code, they generally know the requirement on which they are working and on the release the change will glow into. But the tend not to update 3 or more systems voluntarily when making that change. By creating an integration layer that connects the creation or update of any artifact to the downstream and upstream artifacts, such as requirements and builds, it is possible to completely automate requirements traceability. I know this first hand as it’s exactly what we’ve done at Tasktop. Not only does that mean that audits of our R&D require almost no effort, our delivery is actually much more productive because developers can instantly pull up the code relevant to a changed requirement, for example, from one of our 10 OEM partners. What’s more exciting is that we are now starting to apply that same traceability and linking automation to large scale automotive and manufacturing delivery, where the gains will be even larger.
Apply DevOps Principles to Systems Engineering
The lessons above fall into the bucket of applying scaled Agile and Lean principles to software delivery. The other pillar that remains is connecting the build, test and deployment parts of the software life cycle in order to reduce not just the development part, but the overall cycle time. The challenge with manufacturing is just how different the environment that the deployed product is tested and used in is from the development environment. If you’re developing a web app, your operational and test environment are almost identical, and a combo of VMs or better yet Docker containers, along with some service virtualization and test data automation, mean that you have an automated layer for finding defects and then deploying to production.
Contrast that with a car, where the production environment could be flying down the road at 200 km/h and disconnected from any network. But the principles of DevOps still apply, in that the more you can automate the connectivity and process of testing and deployment, the more successful you will be. So the grand challenge becomes creating a virtual environment where the principles of DevOps can apply to manufacturing. This has to go well beyond the test automation that we do for IT projects, which is why simulation is such an important trend in manufacturing. Once the production environment is simulated, it is possible to gain the velocity and cycle time gains of DevOps for embedded systems and devices. When a build fails at Tasktop because an Agile vendor just changed the semantics of an API call in their latest point release, a defect is instantly created on the backlog of the team that supports that connector. By virtue of having created our Integration Factory, a simulation environment for Agile/SDLC/DevOps data and tools, we now measure a 3-day Mean Time to Resolution (MTTR) for a defect discovered in a customer’s on-prem environment to an updated build being in the customer’s hands. The potential that this kind of simulation and connected life cycle integration has for transforming complex manufacturing is tremendous.
The automotive industry is once again back at the forefront of technological innovation, and poised to have a very positive impact on everything from our safety to the shape of our cities in the coming decades. Effective large-scale software delivery is the discipline that will determine the success and the timing of these changes. Tasktop is on a mission to transform large-scale software delivery, and working closely with the leading automotive and manufacturing customers to make their vision a reality. If you’re interested in joining the conversation, please let us know.