As interest in the Internet of Things and mobile devices continues to grow, companies are recognizing the value of embedded systems to collect data and control machinery. From software in cars and trucks to mobile medical devices and home appliances like refrigerators and even toothbrushes, embedded applications are permeating our world. But before they hit the market, someone needs to manage these embedded application development projects. Project managers with experience in traditional enterprise application development are likely to find themselves in a new world.
"An embedded system is really software and hardware, so quite often there's a hardware component that's being developed parallel to the software," explained Jon Hagar, principal of Hot Sulphur Springs, Colorado-based Grand Software Testing. Hagar said that business managers usually want the hardware and the software to finish at the same time even though the finished software will usually depend on the finished hardware or vice versa. "So you have this chicken and egg problem of how do you write embedded software for a piece of hardware [when] you don't really know what it is," he said.
It's getting easier to put more power into devices, but you don't have a server farm with unlimited resources. You need to work within the constraints of the device.
solution architect, Definity Partners
To further complicate matters, embedded application requirements tend to differ from what project managers and development teams are accustomed to working with for enterprise applications. "If you're developing something for enterprise IT, there is a standard set of requirements or fundamentals that are consistent," said Chris Rommel, executive vice president of M2M and embedded technology for Natick, Massachusetts-based VDC Research Group. "For example, you can assume it will be on Intel-based servers." Embedded applications, on the other hand, are "incredibly fragmented," he said.
Language, platforms, tools
With an enterprise application, solution architects may have customer considerations that dictate which platform they work with, but they otherwise have a lot of flexibility in terms of the development tools, databases and language they use. "If you want to build an embedded system, your choices are going to be much more limited," said Dave Hatter, solution architect for Cincinnati, Ohio-based Definity Partners.
Hatter said that the language, platform and tools used on embedded projects will depend greatly on the hardware manufacturer. Embedded code generally operates at the hardware level, he said, and that requires a much higher level of skill than other enterprise applications "…unless the device comes with something like Android, [in which case] you can use Android development tools, Java, stuff like that."
Project managers also need to be aware of resource constraints that are imposed by the hardware. These limitations include computing power, CPU, memory and storage. "It's getting easier to put more power into devices, but you don't have a server farm with unlimited resources. You need to work within the constraints of the device," Hatter said.
Staying inside the embedded lines
With an embedded application, you're interested in real-time performance, where if the device doesn't meet a particular time requirement, it breaks.
Georgia Institute of Technology
Hagar agrees. "You can't just add more memory or a faster processor, because those things have been decided in the hardware design." The challenge, he said, is that software developers can't request more memory or disk space as easily as they could in the PC world. "Management has to make sure that the developers are staying inside the resources they are given from the hardware design."
Another issue unique to embedded applications is the emphasis on performance. "With an enterprise application, you're primarily worried about functionality and a little bit about performance. With an embedded application, you're interested in real-time performance, where if the device doesn't meet a particular time requirement, it breaks," explained Marilyn Wolf, Farmer distinguished chair and Georgia Research Alliance eminent scholar at Georgia Institute of Technology.
"You have safety critical requirements where latency in application execution or failure in its behavior from a deterministic behavior standpoint can cause serious consequences or serious financial burden," Rommel said. Experts use medical devices as an example.
In this regard, there may be geographic or industry-specific regulations that must be adhered to. "For some safety critical industries there are standards that dictate the way development should happen, and you need to submit documentation that shows you followed those steps," Rommel said.
According to Wolf, embedded systems are often low-energy or low-power systems, and this puts similar pressures on project managers. "It depends somewhat on the application area, but [project managers] need to understand the principles of real-time software development and low-power software development. And if they're working in a certification environment, there's a whole range of documentation trails they have to leave," she said.
Testing for adherence and integration
Testing takes on greater importance with embedded applications. "Test activities are important in any system, but in the embedded world, they can be a little more important because a lot of our embedded systems are life critical," said Hagar, who is also the author of Software Test Attacks to Break Mobile and Embedded Devices. Consider, for example, the need to test software for a pacemaker versus an information Web page. "It becomes much more important depending on the specific embedded context," he said.
Rommel agrees that testing embedded systems takes on an added importance. This includes testing for adherence to requirements and systems integration testing. "You're dealing with software that has to work with mechanical parts, and various components or subsystems must work together harmoniously," he said.
"The problem of testing these things is very, very important, and it's harder than testing a desktop or Web application," Wolf said. "How do you enter the inputs to test something? How do you figure out what it actually did?"
For project managers, the key to addressing many of these differences and successfully managing embedded application projects is to look beyond the application itself. "It's understanding the overall system functionality," Rommel said. "It's looking beyond the software and at least having a higher-level understanding of the overarching architecture and the electrical components."
Dig Deeper on Software Development Fundamentals