Global Sources
EE Times-Asia
Stay in touch with EE Times Asia
EE Times-Asia > EDA/IP

Virtualization: Creating a new software development infrastructure

Posted: 13 May 2008 ?? ?Print Version ?Bookmark and Share

Keywords:software development? virtualization? Virtutech?

Software development is a fascinating industry that has changed over the years as developers have continually adopted newer programming languages, from Fortran to Pascal to C++ and beyond. But although developers readily look to software itself to drive innovation, few have considered their development infrastructure a possible vehicle for change. With the advent of virtualization in the development process, that's about to change.

Quick history
When the first embedded devices appeared, software as we know it today simply did not exist; all functionality was built into hardware. With the introduction of the microprocessor, software content emerged but still comprised only a small part of the overall system. Over the past twenty years, the embedded industry has witnessed a complete shift as software has exploded in size and complexity. Today, software is the primary driver of increased functionality and innovation in embedded systems.

Although hardware design has enjoyed significant investments in tools and process development, software development processes have remained essentially static since the 1980s. The hardware industry is aided by well-defined standards and processes, but software development methods have not kept pace, leaving programmers to approach software development entirely ad hoc.

The consequences of this lack of an underlying software development infrastructure are all too familiar: cost overruns, missed schedules and poor-quality software. The current approach to software development sees two-thirds of projects late to market, one third over budget, and nearly half of embedded designs canceled. Even the allocation of additional resources to a job or the rescoping of a product's features doesn't keep software developers from consistently hitting walls.

The gap
Why does this staggering disconnect exist in the world of embedded programs? Why is software development stagnant even as designs grow more and more complex? This is an issue neither of people nor of components. Rather, it is caused by the absence of a strategic development infrastructure thoughtfully designed to aid software development.

An embedded device today is typically built from the ground up, starting in hardware and ending in software. The process is very sequential, beginning with hardware designed around certain expectations regarding memory, MIPS, interface, connectivity and so on. Multiple components are pulled together to build up a hardware system, and it is on top of this that software is developed. This hardware-centric, bottom-up approach involves multiple steps and introduces multiple dependencies, and only after the system integration phase, when the software is actually running on the platform, can the system be understood from a performance point of view. (Contrast this with an SOA approach, which maps out necessary services before designing an infrastructure to support them.)

The chief weakness of a bottom-up development approach is that it treats software as an afterthought in the design process, even though an increasing amount of system functionality depends on software, not hardware. Integration occurs very late in the game, making it difficult to discover (much less fix) bugs introduced by the hardware, design or architecture. In many cases, developers are forced to rethink their designs to the detraction of both schedules and budgets.

As software complexity reaches new heights and solid programs prove the biggest hurdle to shipping, the inefficiency and impracticality of the hardware-centric approach is becoming increasingly evident. How can developers strategically rethink their development approach so that they are no longer at the mercy of hardware? How can software development at the system level begin earlier in the design process? This is where virtualization comes in.

Precursors of virtualization
Virtualization has been used in the development of embedded devices for several years both as a replacement for actual hardware and as a designing and debugging platform for complex systems. In the hardware design industry, simulation has been employed at both the socket and PCB level. Whether designing processors, PCBs or SOCs, hardware developers can use simulation tools from the likes of Mentor, Cadence and Synposys to model and predict the behavior of their systems without having to wait for the development of the actual physical systems.

Outside of the world of embedded devices, we've seen a number of industries successfully employ virtualization after hitting walls when using traditional approaches. Over the past two years, server virtualization has made great inroads by improving data center efficiency and lowering overall ownership costs. Virtualization has solved such persistent challenges as server proliferation, CPU underutilization and application isolation.

Simulation has also been employed by a number of industries, such as aerospace and defense, in their own software development. Often, these industries require such complex designs that waiting a year or more for hardware isn't feasible. Simulations have been developed internally as point solutions, design complexity essentially mandating that these companies invest resources in internally developing virtualized software development solutions.

The embedded software development industry is now at a point where neither traditional, hardware-centric development approaches nor internal, one-off virtualized software development solutions can deliver the time-to-market, cost-saving and quality-assurance benefits that are a must in such a competitive market. The role of software content in embedded devices shows no signs of diminishing, and the proliferation of multicore devices adds an unprecedented complexity into the mix both in hardware and software. The inevitable move toward multicore designs has only highlighted the need for software development solutions that can harness the performance potential of multicore devices.

1???2?Next Page?Last Page

Article Comments - Virtualization: Creating a new softw...
*? You can enter [0] more charecters.
*Verify code:


Visit Asia Webinars to learn about the latest in technology and get practical design tips.

Back to Top