Ubiquitous high-speed Internet access has radically increased the number of cloud-based apps available for smartphones, tablets, and PCs. Most of these apps are relatively simple compared to development tools, but tools have migrated to the cloud too. This approach offers many advantages and disadvantages for developers and vendors alike, ranging in importance from insignificant to essential.

For developers, setup and software updates are automatic. The interface often is browser-based, allowing the application to work on almost any platform. The interface also is amenable to mobile users. Developers who must maintain multiple versions of an application will appreciate having multiple tool versions available to them, assuming the vendor provides this capability.

Software distribution also often is part of a vendor’s service, especially for app development tools. This support frequently includes billing services as well as customization for different targets.

Performance can be enhanced when using cloud-based solutions since vendors generally can provide more powerful support clusters that can speed compiles and other chores. The downside is that active users share these clusters, so support may depend on the number of users and what kinds of operations they are working on at the time.

For vendors, there can be a significant reduction in support calls, especially those relating to setup and upgrades of software or tools. Calls that require a support technician to examine the state of the tool are now easier since the technician can access a user’s tool, data, and screen. The technician can provide immediate feedback to users.

Support personnel also can provide users with more sophisticated collaboration tools. Collaboration features have been added to many standalone platforms, but implementing and managing them can be difficult when users have to configure and manage them.

Vendors benefit from regular access to users as well. They can track the kinds of operations that are being performed and track what versions of their tools are being used. New goods and services can be advertised, especially when “free” services are provided. Users will need to read any contracts closely to determine whether vendors are using their “data” for other purposes.

Another issue for vendors that can be very important is protection of intellectual property (IP)—not their users’ IP, but the IP within their tools. Competitors can utilize the tools and see how they operate, but they would not have access to the code to reverse engineer the tools.

On the minus side, there are disadvantages. In general, an Internet connection is required. Some applications can operate offline, but typically with more limited functionality. Data also must be local, making usage impractical on many platforms like smartphones and tablets.

For developers, posting work on the Web may violate company or project security requirements. Vendor lock-in is significantly easier to force using Web-based tools since the user cannot use the tools without Internet access.

Uptime also can be an issue. The inability to access a cloud-based service can be caused by problems on the user’s device, the connection via the Internet, or the vendor’s cloud service. Debugging this kind of problem can range from simple to complex depending on the diagnostic tools and the type of problem.

As noted, vendors may provide access to multiple versions of tools and runtime libraries. But this can be an issue if they do not guarantee configurations that can be locked down on a per-user basis. This can be important for users who maintain their applications.

Long-term support also can be an issue since the ability to generate and support an application could be lost if a vendor’s status changes or the user stops buying a subscription to use the tools. Free online services are vendor-dependent as well, and a shutdown likely will eliminate access to user data.

For vendors, maintaining a service can be a challenge, especially for a large user base that may be using many versions of their applications. Vendors often buy cloud-based platform services to deploy their offerings. This minimizes their infrastructure costs, but there can be issues related to the scaling and reliability of those services.

Vendors usually provide standalone, thick-client, thin-client, or browser-based applications. The standalone applications encompass development tools such as the typical integrated development environment (IDE). Each of these delivery mechanisms has advantages and disadvantages, such as the ability to use a range of local resources. Graphics-oriented applications generally need access to hardware acceleration. Browser-based solutions benefit from HTML5 and WebGL, which provide access to 3D hardware acceleration (see “HTML5 And WebGL Fit Interactive Embedded Applications” at electronicdesign.com).

Standard Network-based Tools

Developers are already familiar with network-based collaborative tools that are easily hosted in the cloud, including applications like source code revision management, bug tracking, and help forums. Most IDEs like Eclipse, Microsoft’s Visual Studio, Apple’s Xcode, and Oracle’s NetBeans support one or more third-party platforms for these types of applications, often via the plug-in mechanism that each supports.

For example, there is a plethora of source code management tools including the open source Concurrent Version System (CVS), Git, and Subversion. There are vendor-specific solutions as well, often integrated with application lifecycle management (ALM) tools like Microsoft’s Visual Studio Team Foundation Server, now known as Visual Studio Online. Visual Studio Online is integrated with popular third-party IDEs like Eclipse and Xcode.

Source code management is just the tip of the iceberg when it comes to collaboration. Integration with bug tracking, code coverage, and other tools can be found in many solutions such as Microsoft’s latest version of Visual Studio. The Code Lens support adds an extra line above portions of a code listing such as the start of a function definition (see “A Look At Visual Studio 2013” at electronicdesign.com). This heads-up type of display includes details like the number of code references, the number of bugs, and the number of code reviews. It even hooks into Microsoft’s Lync messaging support, making it easy to contact people working on those details (Fig. 1).

Platforms like Visual Studio are examples of standalone solutions that have been augmented with cloud-based support. The server services can be hosted locally, or users can take advantage of Internet-based services.

Developing Embedded Software In The Cloud

The mbed platform is a free, online development platform that targets Arm microcontrollers (see “Embedded Electronics Become Even More Pervasive” at electronicdesign.com). It started with the mbed LPC1768 module from NXP, but it has expanded to include a range of modules including Freescale’s latest Freedom FRDM-KL46Z (Fig. 2).

A lightweight, browser-based IDE is used to edit projects that are hosted on the website (Fig. 3). The mbed C/C++ compiler and linker are mbed cloud services. The source code is also on the site, so the compiler can take advantage of the cloud host, which may be more powerful than the average developer PC. The binary is downloaded to a target where the application then can be debugged locally.

The mbed SDK (software development kit) includes a number of runtime libraries that provide access to the standard peripherals available on the target platforms. The SDK also includes a real-time operating system (RTOS).

The mbed approach may be unique since it targets a range of third-party hardware. Arm, NXP, and other sponsors essentially provide support for the site designed to generate applications that will utilize Arm platforms. The SDK suits use with other IDEs, although it is possible to develop applications solely using the mbed environment.

The mbed site provides easy startup and management of embedded applications for Arm microcontrollers. But this provides convenience as the compiler computational requirements for most projects is relatively small compared to some compute-heavy chores.

Plunify addresses FPGA design support (see “Check Out Chip Designs On The Cloud” at electronicdesign.com). FPGA development encompasses computationally heavy work such as layout and verification. Large, complex FPGA designs can take days to process for a single configuration. Optimizing the designs frequently takes multiple iterations.

The cloud approach provides access to cloud-based computational services that are often built on platform services from cloud computation and storage providers like Amazon and Verizon. These computational services are provided on demand and often can be run at off-peak times to reduce costs or increase computing resources.

The challenge with this approach for an individual user is the complexity of setting up this type of support and then using and managing it. Companies like Plunify have done all this work and provide the services with an easy to use interface and simplified billing that takes advantage of the on-demand cloud support.

Just about any development tool that requires sophisticated setup or large amounts of computing power is a target for cloud-style development delivery. These days, system-on-chip (SoC) design includes extensive simulation that could be done in the cloud. As with FPGA development, a designer usually needs these services for a fraction of the development cycle, so investing in a lot of hardware to address the peak needs can be more expensive than using cloud-based services.

For software development, testing is ripe for cloud support. Regression testing can be time consuming, and having large amounts of storage and compute power on tap is what the cloud is best at. Many tools can already take advantage of local shared clusters, and utilizing the cloud is a natural progression.

Collaborating In The Cloud

Integrating collaboration tools like instant messaging and shared whiteboards is common with communication services like Skype or Microsoft’s Lync. Real-time collaboration has significant advantages in a range of development applications including chores such as code reviews and mechanical design.

MakeVR (Fig. 4) is a 3D mechanical modeling tool that utilizes a pair of Sixense’s magnetic-based STEM controllers (see “Sixense Sensor Provides Real 3D Positioning” at electroncdesign.com). Each user has an individual viewpoint that can be changed independently. Users also can manipulate the environment simultaneously. MakeVR is a PC-based tool with cloud connections. The application must be running on all hosts.

SpaceClaim Engineer 2014 is another 3D modeling tool provides real-time collaboration (Fig. 5). SpaceClaim Engineering’s browser-based Connect feature allows access from any suitable Web browser. 3D applications like this tend to have more hardware integration and performance requirements than simply displaying text or an image. This is comparable to flash-type requirements for displaying streaming media. Of course, HTML5 standards and higher-performance mobile devices make this more practical for a wider range of devices.

Still, the heavy lifting is handled in the cloud where more performance power is available. The approach is already used for cloud-based voice recognition like Apple’s Siri. Latency and bandwidth tend to be the challenge with these types of applications, but this is also an area where massive multiplayer online (MMO) gaming operates with quite a bit of success.

PCB Design In The Cloud

Companies like ExpressPCB and Sunstone Circuits can deliver custom printed-circuit boards (PCBs) quickly. They provide free PCB design tools, or developers can create PCB designs using third-party tools like Altium Designer, Cadence Allegro PCB Designer, and Mentor Graphics Xpedition xPCB Layout.

Boards normally are uploaded and ordered using standards-based file formats and a Web browser. More of this process is being integrated into the design tools, simplifying the process and reducing errors. Sunstone Circuits’ PCB123 provides this type of functionality.

Gumstix’s Geppetto (Fig. 6) moves the design tool to the cloud (see “Game Changing Geppetto Builds ARM-based Systems” at electronicdesign.com). The browser-based interface provides drag-and-drop layout of carrier boards designed to hold Gumstix processor modules. The components are laid out in a CAD fashion without concern for interconnect routing. Designers only need to create logical connections between components. The design tool handles dependencies, so a board design is only complete when all required connections have been made.

The end deliverable is a completely populated board that then can be ordered in any quantity. There are initial startup costs in addition to a per-board cost, but they tend to be significantly lower than a custom design. The designs can even be shared on the Gumstix site.

Geppetto designs are typically for prototypes and small to midrange production numbers. Gumstix has also made it easier to share open source hardware designs via Kickstarter (see “Interview: W. Gordon Kruberg Explains How To Kickstart A Gumstix” at electronicdesign.com). As with most PCB quickturn services, the cost per board goes down as the volume increases. The Kickstarter approach allows the initial number of boards to be based on demand, usually with a threshold for a target cost.

A Changing Approach

Standalone development tools will continue to exist and be preferred by many developers, but cloud-based solutions are on the rise. Many solutions are exclusively cloud-based, especially those from new vendors. Vendors with established products need to keep their current customers happy even while they begin offering integrated cloud-based support. They also need to keep security concerns in mind, especially since they will be hosting the development of many customers’ primary source of income.

Customers need to determine what types of tools they will need and where they can afford to have their data and designs processed and stored. As companies become leaner, everything from sales force support to human resources and tech support have been moved to the cloud or third-party services. Hardware and software development are no different, although their implementation in many cases is more challenging. In the end, it will be a tradeoff between what tools are available and what the customer’s requirements are.