Mapusoft Technologies is the leading provider of porting and abstraction solutions that increase the
level of code re-use to protect software investment.
Copyright © 2013 MapuSoft Technologies, Inc. All rights reserved.
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.
Changing Market:
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.
1. Standards:
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 hardware).
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.
Platform Non-Dependencies:
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.
Solutions At-a-Glance:
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.
Conclusion:
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 opportunities.