How to Own 100% of your Products' Code?
Cross Platform Development
What’s the difference between writing the code and owning it? That will be the question on every reader’s mind
once they read this article. Let’s find out how software developers can easily get blind-sided by their own
performance initiated thought process while developing a product.
Day by day the complexities of embedded applications are increasing and the demand in reliability is also on the
rise. Product vendors were driven to provide better products which need to be smaller, smarter and faster than
their predecessors, so the application developers are driven to utilize all possible technology available in the
market to meet the specific and unique requirements. In the past, developers have to only contend with certain OS
and hardware during their development phase. But now they are introduced with new challenges at every stages
of the product lifecycle like Design, Development, Integration, Testing, and Verification & Validation. At each stage
of the development process, developers need to use different tools to assist them. That’s why embedded software
application development is getting more challenging than ever before.
Before moving straight to the solutions for “How to own 100% of your products’ code” we have to identify and
analyze several factors which are blocking the path. Let’s look into a few of the challenges each developer has to
face during their application and product evolvement phase.
Every product development team needs to go through their own set of standards in their respective domains. For
Aerospace, we have AS9100, ARINC, AAA, DO-178B (Commercial) & MIL-STD-2167 (Military) etc.; and in Medical,
we have IEC 62304, IEC 60601-1, ISO 14971 and more standards but not a common standard. Unfortunately we
don’t have common standards that will allow gauging the effectiveness of the product across multiple platforms
(both software and hardware).
2. 3rd party tools:
Let us take a look at the 3rd party tools which are used during the development process. As we mentioned earlier,
developers use a different set of tools for different stages of the product life cycle. The problem is that each and
every one of these tools are proprietary to a certain vendor and they support only a particular OS and hardware.
So any necessary changes needed for the application has to be done while keeping the OS, hardware
and tool vendors in mind, otherwise the changes will break the whole product development. Reasons like this will
also limit the developers’ ability to implement their product on different target platforms (both software and
3. Locking to an OS:
Not many people truly understand the necessity of not locking your application to a particular OS. How many
application developers here can say, "This is my code. I wrote it, so I own it completely (100%) and my code does
not depend upon any particular OS?" The answer would be NONE. The sad part is the developer owns only 50% of
his/her application code (refer the below pie chart). When the time comes and the application needs to run on a
new platform, even this ownership is lost, so the hard truth remains that “YOU DON’T OWN YOUR CODE”. More
than anything, developers need to address this issue in the early stage of their development, while selecting the
suitable operating system for their project.
To tackle the above issues we have to divert our development to a different path than the traditional one. We
should use platforms which will allow us to develop applications that can support multiple platforms but also own
as much of the code as possible. There are Cross-OS development tools available in the market like Rho Mobile,
Appcelerator, Widget Pad, Phone Gap and Mo Sync but they are limited to mobile applications. On the embedded
side, products like QT have been in the market for a few years and provide some Cross-platform development but
they do not support most of the platforms available in the market.
A common development platform will ease the development and porting efforts of embedded application
developers. A common platform that not only allows developers to utilize their preferred OS, CPU/architecture
and even 3rd party tools in their development process, but also not be locked to it. That should be our ground zero
for cross platform software development.
MapuSoft, a global leader in embedded software re-use and interoperability solutions, offers a Cross-OS
Development Platform . The platform is built on an Eclipse-based Application Common Operating Environment
(AppCOE), which provides freedom to application developers by allowing them to develop OS independent code.
What this means is that applications developed on Cross-OS Development Platform will have the ability to run on
many different operating systems without re-writing the application code. This enables developers to proudly own
at least 70% share on their products code (refer to the above pie chart).
The next 20% belongs to device drives. Products are widely available that provide a wide range of support for
different devices and OS platforms. WinDriver from Jungo is one such product which can assists developers to
overcome dependencies on hardware vendors. WinDriver supports USB, PCI, PCI Express, Compact PCI, PMC,
PCMCIA, Windows XP/Embedded, and Linux.
The final increment of 10% belongs to 3rd Party Vendors. This is because every 3rd Party vendor has their own
agenda in supporting certain hardware and software in the market. AppCOE from Mapusoft comes to the rescue
again by integrating 3rd party tools into their platform. This is possible when the vendor provides the source code
of their APIs. Now developers can implement unique/proprietary functionalities into their applications which allow
them to own 100% of their products' code.
Numbers can vary case-to-case but they are real; so pay attention to the issues mentioned above. The most
important thing is to make sure that you address each issue during the initial stages of development. This ensures
you won’t just care about the code's performance and product features, but also take the ownership of your own
code. A common development platform will save lot of time and money in the long run and also provide a sense of
satisfaction for the developer, as well as the company, through longer product life time and better business
Also Read on: Cross-OS Hypervisor, OS System Simulation