A variety of unique submissions demonstrate the ease of learning and using Ada and SPARK in embedded applications
NEW YORK & PARIS–(BUSINESS WIRE)–#Ada—AdaCore today announced the winners of its fourth annual Make with Ada programming competition for embedded projects. Make with Ada aims to show how the Ada and SPARK language technologies can significantly improve code quality for modern embedded systems without requiring a steep learning curve for developers unfamiliar with these languages.
The Make with Ada competition ran from September 10, 2019, through January 31, 2020, and attracted a total of 26 submissions from all over the world. Each entrant was required to design and implement an embedded software project, using Ada and/or SPARK as the principal language technologies. Entrants needed to demonstrate that their system met its requirements and was developed using sound software engineering practices.
Projects were judged based on project logs, and prizes have been awarded to those projects that best met the overall criteria of software dependability, openness, collaborativeness, inventiveness, and, new this year, “buzz factor,” demonstrating an overall “wow effect” to the technology community in general.
This year, the 1st place prize of $2,000 was awarded to John Singleton for his SmartBase IoT Adjustable Bed. The goals of this project were to create an IoT device that could control the movement of a wired, adjustable bed; could sense occupancy in the room and produce under-bed safety lighting when walking around at night; was easily reconfigurable; and could be controlled by both an Amazon Alexa device as well as the original remote. Portions of the application, notably the components that control the bed, were written in SPARK with some lightweight specifications around the control sequences.
“I cannot even imagine doing [this project] in another language,” Mr. Singleton explained. “Even though I am quite familiar with so-called “exotic” languages like Haskell, the blunt, unapologetic efficiency of Ada, the pickiness of the compiler, and the robust, built-in support for tasking and specification were a pleasure to work with, and I’m confident these features helped me to find many errors that would have otherwise potentially caused problems in my system.”
Ten Finalists also received $600 each. Notable submissions include:
- High Integrity Sumobot
- LoRaDa := Ada + LoRa;
- Disaster Management with Smart Circuit Breaker
- CHIP-8 Interpreter
Finally, the Student Prize, an Analog Discovery 2 Pro Bundle worth $299.99, was awarded to Team ADArrose – four students who developed an automated plant sprinkler based on an STM32F429 board. The device monitors and records soil humidity and surrounding luminosity, automatically sprinkling a plant with the right amount of water to keep it well hydrated. It also allows the user to select one of three modes of operation, and sends an alert whenever something abnormal is detected in the plant’s consumption or in its immediate environment. The students followed a formal development process with high-level requirements, low-level requirements, test cases, and contract-based programming.
“I have been involved with the Make with Ada competition since its inception, and I have watched as the entries have become more sophisticated,” said Bill Wong, co-judge and Senior Technology Editor at Electronic Design. “Many are now employing contracts and SPARK, which is impressive. It puts the results well ahead of applications written in other programming languages where it is solely up to the programmer to make sure that the code is doing what they intended. The fact that most of the developers are new to Ada and SPARK highlights the fact that using more advanced programming techniques is practical for any embedded application.”
“I am happy that this year we decided to highlight and reward more projects than in the previous editions,” said Fabien Chouteau, AdaCore software engineer, and author of the Make with Ada blog post series. “Make with Ada competitions have always been full of creative and innovative projects, and this year was no exception.”
The Make with Ada competition is part of an overall AdaCore initiative to foster the growth of Ada and SPARK for developing embedded systems, and, more generally, for developing “software that matters.” Other elements of this initiative include free resources available to students, free software developers and hobbyists, or those who just want to learn more about Ada. These resources include:
- A new interactive Ada and SPARK learning platform (learn.adacore.com)
- Base material, including slides, at the GitHub repository (github.com/adacore)
- Several course videos available on YouTube, and
- A cost-free version of the GNAT toolchain (GNAT community)
- The GNAT Academic Program (GAP), a program to encourage the use of Ada and SPARK in academia
Information about next year’s Make with Ada competition will be available during Q3 2020 at http://www.makewithada.org/.
About Ada and SPARK
Ada is a modern, internationally standardized programming language with a long and successful track record in the development of high-reliability embedded systems. Its strong typing and compile-time checking help catch errors early, when they are easiest and least expensive to correct. The most recent version of the Ada standard, Ada 2012, supports contract-based programming (pre- and postconditions for subprograms), which in effect embeds the software’s low-level requirements as checkable assertions in the source code. In critical systems where testing alone might not provide sufficient confidence, the SPARK subset of Ada supports mathematics-based assurance that relevant program properties are met (for example, the absence of run-time errors such as buffer overflow). SPARK can be introduced incrementally into a project, and contracts can be verified either statically (by the SPARK proof engine) or dynamically (with run-time checks).
Founded in 1994, AdaCore supplies software development and verification tools for mission-critical, safety-critical and security-critical systems. Four flagship products highlight the company’s offerings:
- The GNAT Pro development environment, a complete toolset for designing, implementing, and managing applications that demand high reliability and maintainability. GNAT Pro is available for Ada and also for C and C++.
- The CWE-Compatible CodePeer advanced static analysis tool, an automatic Ada code reviewer and validator that can detect and eliminate errors both during development and retrospectively on existing software. CodePeer can detect a number of the “Top 25 Most Dangerous Software Errors” in the MITRE Corporation’s Common Weakness Enumeration (CWE).
- The SPARK Pro verification environment, a toolset providing full formal verification oriented toward high-assurance systems with stringent security requirements.
- The QGen model-based development tool suite for safety-critical control systems, providing a qualifiable and customizable code generator and static verifier for a safe subset of Simulink® and Stateflow® models, and a model-level debugger.
Over the years customers have used AdaCore products to field and maintain a wide range of critical applications in domains such as commercial and military avionics, automotive, railway, space, defense systems, air traffic management/control, medical devices, and financial services. AdaCore has an extensive and growing worldwide customer base; see www.adacore.com/industries/ for further information.
AdaCore products are open source and come with expert online support provided by the developers themselves. The company has North American headquarters in New York and European headquarters in Paris. www.adacore.com/.
T: +33 1 49 70 87 82
T: +44 (0)1252 448 169