Increased complexity due to networking, security, and simply more transistors to play with results in large applications. This will likely result in the usual quality problems that plague general application development. It’s never the goal to generate more bugs in software. But when bigger applications are built without sufficient planning and time allocated to the problem, bugs are inevitable. Don’t expect things to change much given the usual push to reduce time-to-market.
For the likes of planes, trains, and automobiles, the answer lies in allocating enough time, effort, and money to meet standards and safety requirements throughout the development process. Industries where safety and reliability are paramount already have these processes down.
Now, they’re slowly trickling out to the average embedded development project through subsets like MISRA C, Embedded C++, and CORBA/e. These tried-and-true approaches have been available for some time, but general adoption has been slow. Developers will appreciate the pared-down approach.
The biggest challenge developers still face is wading through the available tools, OSs, and middleware to get the collection they need to complete their application. The level of complexity will steadily rise as the use of approaches ranging from modular systems like Eclipse to canned solutions from chip and software vendors that keep the job manageable continues to escalate.