Developing High-Quality Software
Why Do We Need High Quality Software?
This TechXchange looks at methods, tools, and programming languages that can be used to create high-quality software. Most programmers aspire to accomplish this the first time around, but it usually takes planning, experience, and good tools and best practices to create applications that do what’s intended without bugs causing problems.
Good programming practices are a good place to start. However, developers can let software do the work using tools for static analysis or selecting programming languages that incorporate this type of feature. Programming languages like Rust and Ada/SPARK highlight this approach.
Artificial intelligence is starting to move into this space, but most high-reliability environments require more traceable and provable support.
Programming Best Practices
Articles in this section focus on good embedded development processes. The emphasis is on preventing defects early through structure, not fixing them later through debugging.
Here are some more best programming practice articles:
- Software Construction on a Global Scale - Large-scale embedded software requires disciplined engineering processes across distributed teams.
- Testing Out a Safe C Compiler - Safe compiler technology can help enforce correctness rules at compile time.
- Applying Exhaustive Static Analysis to Automotive Software Testing - Static analysis can evaluate all execution paths to detect hidden software defects.
- Compiler Qualification is Critical for Smart-Device Code - Compiler validation ensures consistent and predictable behavior in safety-critical builds.
- Trace and Debugging: An Explanation, Techniques, and Applications - Trace-based debugging helps analyze runtime system behavior to locate defects efficiently.
Formal Verification and Static Analysis
Static-analysis tools take an in-depth view of the source code at compile time to identify bugs.
Formal verification covers mathematically based approaches to software correctness using SPARK and formal verification techniques. The focus is eliminating entire classes of bugs through proofs instead of runtime testing.
Here are a few more articles that address this topic area.
- What's the Difference Between Sound and Unsound Static Analysis? - Timeliness and cost are two main factors for code verification, which separates sound from unsound. But recent advances are closing those gaps.
- Software Construction on a Global Scale - How does one deliver high-quality software on schedule with 100+ developers distributed across multiple time zones?
- Q&A: Formal Methods Push Toward Zero-Defect Software - Formal methods aim to eliminate defects by proving software correctness rather than relying only on testing.
- Requiem for a Bug – Verifying Software, Part 2: Formal Verification through SPARK 2014 - SPARK 2014 enables formal verification of embedded systems to eliminate runtime errors.
- Code Analysis Discussion With LDRA - Dr. Mike Hennell, founder of LDRA, speaks with Technology Editor Bill Wong about the various aspects of static and dynamic code analysis tools.
High-Integrity Programming Languages
Programming languages like Rust, Ada, and SPARK are designed for high-integrity systems. Languages like C and C++ depend on programmers whereas those others put more emphasis on the compilers. Tools and standards such as MISRA can help C and C++ achieve some of the checking, but this still falls short of more robust compiler checking done by languages like Rust and Ada.
- MISRA C Isn’t Just for Automotive Applications - MISRA C rules are applicable beyond automotive, including industrial and embedded IoT systems.
- Don’t Do It: Coding Tricks - Clever coding shortcuts often reduce readability and can introduce subtle, hard-to-detect bugs.
- Helpful Hints for Adopting SPARK - Guidance on introducing SPARK into existing Ada-based development environments.
More Software TechXchanges
These TechXchanges group together content targeting different programming languages and software issues like cybersecurity.
About the Author
William G. Wong
Senior Content Director - Electronic Design and Microwaves & RF
I am Editor of Electronic Design focusing on embedded, software, and systems. As Senior Content Director, I also manage Microwaves & RF and I work with a great team of editors to provide engineers, programmers, developers and technical managers with interesting and useful articles and videos on a regular basis. Check out our free newsletters to see the latest content.
You can send press releases for new products for possible coverage on the website. I am also interested in receiving contributed articles for publishing on our website. Use our template and send to me along with a signed release form.
Check out my blog, AltEmbedded on Electronic Design, as well as his latest articles on this site that are listed below.
You can visit my social media via these links:
- AltEmbedded on Electronic Design
- Bill Wong on Facebook
- @AltEmbedded on Twitter
- Bill Wong on LinkedIn
I earned a Bachelor of Electrical Engineering at the Georgia Institute of Technology and a Masters in Computer Science from Rutgers University. I still do a bit of programming using everything from C and C++ to Rust and Ada/SPARK. I do a bit of PHP programming for Drupal websites. I have posted a few Drupal modules.
I still get a hand on software and electronic hardware. Some of this can be found on our Kit Close-Up video series. You can also see me on many of our TechXchange Talk videos. I am interested in a range of projects from robotics to artificial intelligence.
Voice Your Opinion!
To join the conversation, and become an exclusive member of Electronic Design, create an account today!

Leaders relevant to this article:


























