Benjamin Franklin, one of the founding fathers of United States once said, “Beware of little expenses; a small leak will sink a great ship”.
Fast forward to industry today, Benjamin Franklin's statement was relevant 250 years ago and this is relevant even today.Today software is a key driver in the race to develop automotive innovations faster, cheaper and better. In cars we find literally all interesting and challenging issues of software and systems engineering.
Today software accounts for 40% of the vehicle cost and most of it goes out of hand during the development process. There are many issues which result in waste of money. In this blog I focus on two main causes of budget over-run, number one being lack of efficiency and number two being lack of re-use.
lack of re-use
https://www.research.vt.edu/resmag/sciencecol/software_reuse96.htmlLet us first focus on #2, people often ignore something which is #2. I will talk about #1 in later part of this blog. I promise.
In automotive software industry most of the development is done in C language. Reuse of solutions from one product line to the next is insufficient and only done as a consequence in some limited areas. In many subdomains the functionality from one product line to the next is only changed and enhanced by 10% while more than 90% software is rewritten.
There are many proven benefits of reusing the software:
Increased dependability: reused software, which has been tried and tested in working systems, is more dependable than new software. Its design and implementation faults would have been found and fixed.
Reduced process risk: the cost of existing software is already known, whereas the costs of development are always a matter of judgment. This is an important factor for project management because it reduces the margin of error in project cost estimation.
Accelerated development: bringing a system to market as early as possible is often more important than overall development costs. Reusing software can speed up system production because both development and validation time may be reduced.
However there are also problems associated with the reuse which make companies reluctant to reuse:
Increased maintenance costs: if the source code of a reused software system or component is not available then maintenance costs may be higher because the reused elements of the system may become increasingly incompatible with system changes.
Lack of tool support: some software tools do not support development with reuse. It may be difficult or impossible to integrate these tools with a component library system.
Finding, understanding, and adapting reusable components: software components have to be discovered in a library, understood and, sometimes, adapted to work in a new environment.
lack of efficiency
https://www.linkedin.com/pulse/striking-balance-between-quality-efficiency-montana-spencerAs promised I come back to the #1. Improving efficiency is a two-way task – improving process efficiency and improving developer efficiency.
The best way to improve process is to always ask questions:
Are you wasting time doing static analysis after you have finished your development activities?
Do the design reviews take longer than the actual development just because different stages in the software-development-lifecycle are not connected?
Do you have the problem of traceability among requirements, design specifications, software architecture, behavior implementation, and test and verification?
Does handling change request results in a nightmare?
Is interoperability always a concern?
From a developer’s perspective:
Do you spend too much time on debugging and testing?
Does leaving a semi-colon result in wasted efforts?
Do you think you could use a smart development environment which can adapt to your needs and give you real time feedback as you make a mistake?
If you even had to think about the re-use problems and had any of the above questions, you should know you need a better tool for your software development process. Certainly the development process of software systems gets more and more complex. What we need is a suitable workflow that reduces complexity, enables innovation and interoperability, saves costs, and is transparent.
To know more how we are changing the ways automotive companies think about software development, take a look at this whitepaperand stand by for more discussion...