Breaking up is hard to do

Separation can be painful. But often, the failure to separate can result in even more pain over the long haul.

No, I’m not talking love, marriage, or other affairs of the human heart. I am talking software design. In particular, the design of complex software systems that must perform safety-critical functions. The software, for example, in a medical device, automotive ADAS unit, or train-control system.

In systems like these, separation is critical: software components must be cleanly isolated from one another. Otherwise, you risk the chance that the behavior of one component will inadvertently interfere with the behavior of another. For this reason, component isolation is a key thrust of functional safety standards like IEC 61508 and ISO 26262.

Several forms of interference, all undesirable.
Interference can take many forms. For instance, a component could improperly use file descriptors or flash memory needed by other components. Or it could enter a tight loop under a failure condition and starve a more-critical component of CPU time. Or it could write to the private memory of another component.

You could, of course, run every component on separate hardware. But that becomes an expensive proposition. Moreover, the market trend is toward hardware consolidation, which, for reasons of economy, merges previously discrete systems onto a single platform.

It’s important, then, to embrace software-based separation techniques. These include OS mechanisms to prevent resource deprivation, time starvation, data corruption, and so on. For instance, the adaptive time partitioning provided by the QNX Neutrino OS can ensure that a software component always gets a minimum percentage of CPU time, whenever it needs it. That way, other components can't prevent it from running, either unintentionally or maliciously.

Software separation is as much art as science. In fact, my colleague Yi Zheng goes further than that. She argues that there is as yet no precise methodology for separating system functions. There are no textbooks, no pat answers.

So is separation only a matter of asking the right questions? That would be an oversimplification, of course. Skill also comes into play, as does experience, not to mention a good dose of thoroughness. But really, you should read Yi’s article, “The Art of Separation”, in Electronic Design and judge for yourself.


I've got to get me one of these!

Anyone who has grown up where the snow stays on the ground 6 months a year will know why. Heck, even folks who've never seen snow will understand.

If you're feeling particularly ADD, just jump to the 2:03 mark. But be sure to hang on to your shorts:


A webinar for medical device developers with smartphone envy

How do you reconcile apps and touchscreens with safety and 62304?

I have a smartphone, you have a smartphone, almost everyone has a smartphone. In fact, more than 1.5 billion people have smartphones. And no wonder: smartphones are adept at simplifying access to, well, everything.

Take, for example, the day I got my BlackBerry Z10. I had never used the device before, but within 30 minutes, I was exchanging emails, sending text messages, adding contacts, booking appointments, visiting websites, downloading apps — all this from a Luddite who had used only one other smartphone in his entire lifetime.

Smartphones are a boon, but they are also a curse. No, not because they tempt people to interact with the online world instead of the “real” world around them. But rather, because of the expectations they create. More specifically, the expectations they create for anyone building a device that isn’t a smartphone.

That’s right, expectations. Nowadays, anyone building any device has to score a near 10 in the user interface department, because users, having been conditioned by their phones, won’t accept anything less.

These expectations can be a headache for medical device developers. Not only must they deliver a great UX, but increasingly, they must also develop their systems in time frames that are more typical of phones than of traditional medical devices.

But hold on, what about safe operation? And what about compliance with standards like IEC 62304? How do you keep up with smartphone Joneses and still address these requirements? To help answer that question, my esteemed colleague Chris Ault will present the following webinar this week:

How to Simplify Connected Medical Device Software Integration and Certification
Thursday, October 9
12:00 pm to 1 pm EST
Registration: TechOnLine

Attend this webinar if you want to learn about:
  • Integrating middleware components and libraries, such as OpenCV for imaging, Bluetooth and Wi-Fi for connectivity, and Qt and Open GL for the user interface
  • Reducing the scope, costs, timeframe for compliance to standards like IEC 62304


Here's your chance to learn more about the upcoming IoT platform from QNX

Steve West of QNX:
smart guy, worth a listen
Today is July 9. Which means you have less than a day to register for tomorrow's IoT webinar, Transforming Business with the Internet of Things. So what are you waiting for?

In May, BlackBerry unveiled Project Ion, a series of IoT initiatives that includes, among other things, a secure, scalable, cloud-based IoT platform powered by QNX technology. And tomorrow, Steve West of the QNX Cloud team will discuss how this platform can transform businesses and customer experiences through the power of data and real-time decision making.

If you're a developer, engineer, team lead, manager, or anyone else who wants to learn more about connecting products to the IoT, this webinar is for you. Registering is easy: just visit the QNX website.

Webinar at a glance
Transforming Business with the Internet of Things
Thursday, July 10, 2014
10:00am PT, 1:00 pm ET, 5:00pm GMT
Registration page


Why settle for Qt when you can have Qt 5.3?

This just in: Version 5.3 of the Qt Enterprise framework is now available for the latest release of the QNX Neutrino Operating System, version 6.6. It will also be available for users of version 6.5 in the coming weeks.

If you're new to Qt, it's a framework for creating cross-platform applications and GUIs. Which means you can write an application once and deploy it across a host of desktop, mobile, and embedded operating systems.

Supported platforms include Windows, Linux, Mac OS X, BlackBerry 10, iOS, Android, and, of course, QNX — and by QNX, I mean both the QNX Neutrino OS and the QNX CAR Platform for Infotainment.

This "write once, deploy across" feature is a big reason why many QNX customers, including those in the automotive, medical, and industrial automation industries, use Qt in their embedded projects.

New APIs, enhanced UX
According to the folks at Digia, the company responsible for the development and licensing of the Qt project, a lot of effort has been put into enhancing the overall quality and user experience of Qt Enterprise 5.3. For example:

  • Improved first-time user experience through better documentation and easier installation workflow
  • Greatly enhanced printing support
  • New Qt Quick controls, including a calendar, native dialogs, and improved styling support

But hey, you know something? Bullet lists of product features are a yawner, especially when you can see all the new features in this new video from Digia. Check it out:

To learn more about this new release of Qt, visit the new Qt 5.3 landing page.


BlackBerry unveils new project to help businesses derive value from IoT

A few moments ago, BlackBerry unveiled a series of initiatives, codenamed Project Ion, to help businesses easily connect people, devices and machines, and to derive value from these connections. Project Ion is a cornerstone of BlackBerry’s vision to offer end-to-end solutions for the Internet of Things, or IoT.

“As connectivity costs continue to fall and connected technologies become pervasive, a new market is emerging – the Internet of Things,” said John Chen, executive chairman and CEO, BlackBerry. “Billions of connections, generating trillions of transactions and exabytes of data daily, will require platforms that can operate securely on a global scale. No other company is in a better position than BlackBerry to provide the technological building blocks, applications and services needed to enhance productivity, improve real-time decision making and deliver on the vision of the Internet of Things.”

Project Ion will offer the resources necessary to access massive amounts of data from multiple disparate sources and distill it into meaningful, actionable information using open source and third party analytic tools. These resources include a secure public application platform, based on QNX software technology and BlackBerry secure enterprise mobility management, that will securely manage data from millions of end points across multi-device, multi-platform environments.

The project also encompasses facilitation of an IoT ecosystem as well as strategic partnerships, including membership in the Industrial Internet Consortium(IIC) and the Application Developer Alliance.

For the full story, read the press release.

And remember to check out Alec Saunders' post on the Inside BlackBerry blog.


The end of software testing? No, not really

Testing: no longer about establishing
the correctness of a system
A few years ago, I penned a whitepaper that contained these words:

    "No amount of testing can fully eliminate the bugs and security holes in a complex software system, as no test suite could possibly anticipate every scenario the system may encounter."

As it turns out, I wasn't whistling dixie. My colleague Chris Hobbs, who has forgotten more about software design that I could hope to learn in multiple lifetimes, notes that:

    "... a modern, pre-emptible, embedded operating system with about 800 assembler instructions in its core has more than 10300 possible internal states. To put this into perspective, the Eddington Number (the number of protons in the observable universe) is about 1080.

Don't know about you, but those numbers far exceed what my brain can grasp. And if that's not enough, the 10300 figure applies only to the OS core — it doesn't account for the huge number of additional states that are introduced when you start running applications and their supporting libraries.

So why bother with testing when you can only hope to exercise, say,
0.00000000000000000000000000000000000000001% of the system's possible states? It all has to do with a concept called confidence from use.

Rather than attempt an explanation here, I invite you to read a paper that Chris has published, titled "Testing as a road to confidence-from-use". Chris not only explores the concept, but discusses the degree to which confidence-from-use data gathered on one version of a system can be applied to a slightly modified version. Recommended for anyone interested in software testing or reliability.