Embedded Development

Improving software quality with clear processes

Contact us

Before filling out the registration form, please read the Privacy notice pursuant to Article 13 of EU Regulation 2016/679

Invalid Input
Invalid Input
Invalid Input
Invalid Input
Invalid Input
Invalid Input
Invalid Input

Privacy


I declare that I have read and fully understood the Privacy Notice and I hereby express my consent to the processing of my personal data by Reply SpA for marketing purposes, in particular to receive promotional and commercial communications or information regarding company events or webinars, using automated contact means (e.g. SMS, MMS, fax, email and web applications) or traditional methods (e.g. phone calls and paper mail).

Successful software development

Fitness trackers, ATMs and central heating all have one thing in common: they work thanks to embedded software. This controls, monitors and regulates the devices – in a way that users do not even notice.

However, to enable these applications to run unobtrusively in the background, special development know-how is required, especially in the rapidly changing IoT environment.

This is what counts

Documentation and organized testing are some of the biggest challenges when it comes to embedded development. Our experts from Concept Reply show what you should bear in mind and which processes and tools facilitate successful development.

Designing documentation properly

Software documentation is an important part of software development. It explains the purpose and features the software offers. Moreover, good documentation improves efficiency during the development process and the maintainability of the software. Therefore, the following tips should be borne in mind when it comes to documentation:

When it comes to embedded development, providing a README file that contains the basic information about the purpose and instructions for creating or executing the software is advisable. In addition, it should provide insight into protocol definitions, branching strategies, code style and testing strategy.

The architecture documentation should be an integral part of every embedded software project. Ensuring it is easy to access and update is important. For this reason, the experience of Reply according to the "documentation-as-code" approach is the key to success. Linking the project status to the documentation is essential. For this reason, we recommend using PlantUML and the C4 model. The description should be saved as a markdown file directly in the code repository. This facilitates easy access, uncomplicated updating and the possibility of version control.

Using the industry standard Doxygen for the code is helpful. This is freely accessible, easy to operate and can be integrated in the build system. This facilitates automatic execution for each build. As a result, access to APIs can be guaranteed, which can be useful in analyzing dependencies.

Apart from the documentation, which provides information about the general test strategy, tools used and the tests carried out, the test results themselves must also be documented. A predefined format (test report) is essential here. This should be provided with each release to ensure the status of the project is easy to understand at each specific release point.

Choosing the right tests

Unfortunately, testing is repeatedly considered to be not essential for the end product, which is why it is often left out. This is why effort assessments should already include the testing whenever possible. If the testing is planned from the start, the effort involved is not too great. There are many different advantages: Tests show whether the implementation meets the requirements, ensure improved quality and reduce errors before the project reaches users. In addition, they can lower the overall development costs.

If possible, a comprehensive test strategy should be implemented. At any rate, the following tests should be carried out:
  • Unit tests

    These check the behavior of an individual component isolated from the rest of the system. A component can be an individual function or a collection of related functions. The rest of the system is simulated in unit tests. If they are set up at the beginning of the project, unit tests can be written parallel to the implementation – without involving too much effort. Ideally, implementation of the unit tests should be automated to detect any regression at an early date.

    strip-0
  • strip-1

    Integration tests

    These are an additional building block apart from the unit tests. Instead of testing modules in isolation, several modules are combined to examine their behavior and interactions. The challenges in the integration tests are similar to the unit tests. Although less of the system has to be simulated, the hardware dependence can still present a problem. If the complexity of the system is low enough, skipping the integration tests and replacing them with more comprehensive function tests can make sense.

  • Function tests

    These are carried out to confirm that the functionality demanded behaves as expected. Specific use paths are defined and tested based on the requirements without insight into the internal structure of the program. Even if it is not realistic that every use case is covered by tests, the tests should still be carried out. A comprehensive set of tests that covers the most important aspects of the software should be defined for this.

    strip-2

Concept Reply supports your project

Concept Reply works exclusively according to these principles. Our experts have solid expertise and would be pleased to support you in your embedded development project. We take your specific situation into account in this regard and the tools you are already familiar with. Based on this, we jointly develop secure, reliable and cost-efficient products or improve your processes.
  • strip-0

    Concept Reply

    Concept Reply is an IoT software developer specializing in the research, development and validation of innovative solutions and supports its customers in the automotive, manufacturing, smart infrastructure and other industries in all matters relating to the Internet of Things (IoT) and cloud computing. The goal is to offer end-to-end solutions along the entire value chain: from the definition of an IoT strategy, through testing and quality assurance, to the implementation of a concrete solution.