A modern software development process for embedded devices

Embedded software complexity is increasing as more small IoT devices are connected to the Internet. As a result, engineering teams gets bigger, software base gets larger and traditional embedded technologies do not keep pace.

MicroEJ offers modern software technologies from the IT and adapted to the specificity of embedded systems (fragmented electronic, design-to-cost, etc.)

software factory

Industrialize your Software Production and Optimize your Development Process

Separate hardware & software design concerns

The MicroEJ virtual platform keep hardware (electronics and Board Support Package) apart from software application levels.
Developers can:

  1. Parallelize developments: device platform and application design activities can be at the same time.
  2. Increase software portability: applications become independent from hardware and middleware.

Manage software as assets

Software complexity increases and expenses are significant enough to consider software as value-added assets that must be reused across various projects.

MicroEJ brings the concept of software component “apps” and software repository “stores” to manage these new types of software assets. Once developed with MICROEJ Studio and gathered within the application store, apps can be deployed on demand on various products requiring the same functionality.

Create your software production process

Agility and Continuous Integration (CI) require support from specific development tools. To quickly move from prototyping to development, testing and deployment, MICROEJ SDK offers developers the support for modern programming technologies, automates testing, and easily integrates 3rd party CI tools.

software factory

MicroEJ Key Features for a Modern Development Process

Software Factory Virtualization Solution

Virtualization for hardware abstraction

The MICROEJ VEE engine provides virtualization for Java programs:

  • Abstraction of processor architectures
  • Application software independent from C tool chains
  • Multi-tasking independent from underlying RTOS.

Developers do not need to deal with underlying implementations and can concentrate on software development and reuse in mind.

Virtual IoT and embedded devices

Virtual device and simulation

The Virtual Device is a simulated device that helps developers to anticipate their software development while hardware is not ready yet. This allows to quickly build prototypes and to make better decisions within short iteration cycles with all project stakeholders.

Software factory

Key Features Supporting a Software Factory implementation

MicroEJ Application Store

Application store

MICROEJ Store is a repository of apps developed with MICROEJ Studio. It is an important part of the software content management system for a fleet of connected devices. The Store allows modifying on the fly device functionality by adding or suppressing apps without dealing with complex firmware integration.

Manage your applications in a virtual environment with MicroEJ

Apps as software components

MICROEJ VEE offers an optional multi-app execution environment with strong isolation between apps using sandboxes. Apps can be applications visible to the user or services for other applications such as a Cloud connector. This isolation concept allows assembling of apps statically or dynamically to build more complex software during the product life.

Building software components brings many benefits: code reuse, trust in quality and fast development.

MicroEJ SDK Software Factory

Continuous Integration

MICROEJ SDK and associated tools can interface to GitHub, Jenkins, Youtrack etc. to automate build processes. More specifically MICROEJ Module Manager (MMM) can assist in managing dependencies across complex structures of modules and their versions.

Automated Testing with software solution MicroEJ SDK

Automated testing

The automated test engine is a feature of MICROEJ SDK. It speeds-up application tests to guarantee short iteration cycles within Agile sprints. The test engine produces reports for two levels of test coverage: functional and binary code.