Software quality optimisation
The design of embedded systems involves several important decisions, such as choosing the software components to use, and deciding how to deploy them into the hardware platform. These decisions affect the quality attributes of the system, such as reliability and safety. Embedded systems are becoming more complex with many design options to choose from. We have automated this task.
ArcheOpterix
ArcheOpterix is a generic platform for modelling, evaluating and optimising embedded systems. The main modules of ArcheOpterix are shown in the figure below.
The current implementation supports several quality attributes (service reliability, response time, data communication overhead, cost, data transmission reliability, energy consumption, and scheduling length), different optimisation algorithms (genetic algorithms, ant colony optimisation, local search methods, mixed integer linear programming, robust optimisation, etc.) and various parameter control mechanisms (probability matching, adaptive pursuit, dynamic multi-armed bandits, predictive parameter control, adaptive range parameter control, etc.).
Download source code
- i) to run ArcheOpterix excecute
java -jar dist/ArcheOpterix.jar -run ./utils/config/nsga_conf.xml
(the nsga_conf.xml is the configuration file. Here you specify the optimisation algorithm, the quality attributes to be optimised, etc.)
- ii) the project jar file can be found in the dist folder
- iii) example problem instances can be found in utils/problems
- iv) to generate a new problem instance, execute
java -jar ArcheOpterix.jar -gen *hosts* *comps* *buses* *services*
- Eg : java -jar ArcheOpterix.jar -gen 10 20 2 2
- *hosts* = number of electronic control units in the hardware architecture
- *comps* = number of software components
- *buses* = number of buses
- *services* = number of services
- (the definition of software service can be found in Indika Meedeniya, Bara Buhnova, Aldeida Aleti and Lars Grunske, Reliability-Driven Deployment Optimization for Embedded Systems, in Journal of Systems and Software, 2011, Volume 84, Issue 5, Pages 835-846, ISSN 0164-1212)