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.

Getty Images
0promoelectronictestgettyimages
Cost-effective strategies and best practices for designing robust and reliable electronics, ensuring longevity and performance without increasing product cost.
Tcf Bug Free Software
Editor Bill Wong talks about tools for creating reliable embedded software applications in this Electronic Design TechXchange webinar.

Here are some more best programming practice articles:

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.

data security
Why are so few using static analysis tools when security and reliability are so important these days? Find out what Technology Editor Bill Wong thinks.
Image
Testing is not adequate for ensuring the dependability of today’s multi-threaded systems. If we cannot rely on testing to demonstrate a software system’s dependability, then how...
Wutthichai Luemuang | Dreamstime
This multipart article series examines how Ada contracts provide SPARK with the ability to prove software correctness.
bernie_photo/iStock/Getty Images Plus
magnifying glass
Code testing with modern static analysis provides a solution that not only allows developers to identify and fix concurrency defects in new code, it also provides a cost-effective...

Here are a few more articles that address this topic area.

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.

Dreamstime_Suchol-Apiromjit_247578634
Code Dreamstime Suchol Apiromjit 247578634 Promo
Complying with these new set of rules and directives will help eliminate coding practices known to be hazardous.
Getty Images
promo_comparing_ada_and_c_txc
This TechXchange takes a look at some programming languages that target high reliability embedded applications
Getty Images
ada_spark_promo_getty_txc
Ada and SPARK are often used to develop applications that require high reliability and no bugs.
Dreamstime
rusty_programming_txc_dreamstime
Find out about the Rust programming language

Embedded Security and Reliability Engineering

Articles in this section focus on secure-by-design embedded development. It includes methodologies like static analysis as well as coding standards designed to reduce vulnerabilities and improve system resilience.

Dreamstime.com
Cybersecurity Promo
The threat of cyberattacks seemingly becomes more ominous every passing day. Learn about the different types of vulnerabilities and methods of defeating such attacks in this TechXchange...
Alexandersikov | dreamstime.com
Alexandersikov Dreamstime Xxl 126587946 T X
This series of webinars addresses the security aspects and recommendations for IoT device design.
Dreamstime_Wirestock_254181038
Car Dreamstime Wirestock 254181038
Learn how mathematically proven code correctness and hardware awareness leads to 100% coverage and zero issues for automotive systems.
114341462 © Siriporn Kaenseeya | Dreamstime.com
Code Dreamstime L 114341462
Qualifying a compiler is essential in today’s connected world. If a compiler isn't tailored for a specific use case, especially those that are safety-critical, the outcome will...
Getty Images
0promoelectronictestgettyimages
Cost-effective strategies and best practices for designing robust and reliable electronics, ensuring longevity and performance without increasing product cost.

Testing, Testing, and More Testing

These articles explore how testing comes into play when developing highly reliable software.

Dreamstime_Alphaspirit_28759445 (generated with AI)
dreamstime_alphaspirit_28759445
Explore the recent advances in fuzzing, including the challenges and opportunities it presents for high-integrity software development.
Image
Software tools guide code development and test to bring better products to market for high-reliability applications
Image
Staying on track with ISO 26262 to meet automotive functional safety standards requires automation throughout the software lifecycle. The result is cost-effective production of...
Image
Testing, certifications, strategic requirements, and coding standard adherences are among essential tools found in a talented EE’s software-testing palette.
Promo
AdaCore's Paul Butcher breaks down the not-so-well-known technique of application fuzz testing.

Polls and Other Interesting Stuff

We post regular polls and quizzes. Below are a few that are relevant to software development. Take a quick poll to see what everyone else selected.

100269668 © Ronstik | Dreamstime.com
Programmer contemplating code
Challenge your knowledge of programming languages.
Tero Vesalainen | dreamstime.com
Dreamstime Tero Vesalainen Promo 131140735
Take a quick poll and see what other programmers are up to.
Tero Vesalainen | Dreamstime
ed_dreamstime_tero_vesalainen_promo
What debugging task do you find to be the toughest one to complete?
Tero_Vesalainen | Dreamstime
Ed Dreamstime Tero Vesalainen Promo

More Software TechXchanges

These TechXchanges group together content targeting different programming languages and software issues like cybersecurity.

Dreamstime
techxchange_1920_x1080
Check out all our topic-focused TechXchange content collections.
ID 38307812 © Cammeraydave | Dreamstime.com
id_38307812__cammeraydave__dreamstime
Search for a TechXchange
Dreamstime
rusty_programming_txc_dreamstime
Find out about the Rust programming language
Getty Images
ada_spark_promo_getty_txc
Ada and SPARK are often used to develop applications that require high reliability and no bugs.
Getty Images
promo_comparing_ada_and_c_txc
This TechXchange takes a look at some programming languages that target high reliability embedded applications
Dreamstime.com
Cybersecurity Promo
The threat of cyberattacks seemingly becomes more ominous every passing day. Learn about the different types of vulnerabilities and methods of defeating such attacks in this TechXchange...

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:

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. 

Sign up for our eNewsletters
Get the latest news and updates

Voice Your Opinion!

To join the conversation, and become an exclusive member of Electronic Design, create an account today!