May 2017 – Best Practices for Software Development

When developing software, do you have a best practice for software development that helps you write solid code? Safety critical software requires a detailed and rigorous process, which is why Omnicon bases their code development on stringent guidelines of widely accepted software documents addressing the entire life cycle. It’s intended for the most critical or vital applications like yours.

We are not here to “re-create the wheel” or to find some new “silver bullet” that allows you to generate bug-free robust code, but what we can do is stress the importance of having a process that includes the following:

  1. Define Requirements
  2. Create a Design
  3. Code to a Standard
  4. Test…and Test Some More!
  5. Perform Peer Reviews
Image

Phase 1 Define Requirements:
Depending on the industry, the requirement definitions may vary depending on the product and the process followed. For example, for a waterfall process, knowing the most complete and full set of requirements up front are desired. Sure they WILL change, but the idea is try to get the requirements solidified as early as possible. For an iterative process, requirements are expected to mature iteratively over time. Even for a waterfall process, some level of iteration is beneficial. Regardless of the process, it is important that all stakeholders understand what needs to be built. This starts with good requirements.

Phase 2 Create a Design:
As requirements solidify, organize the software using block diagrams and high-level flow-charts. This should yield an architecture and the beginnings of source code modules and functions. Using code comments, start to fill in the functions. There are tools available that can be used to extract specific comments from the code into a design document. This allows the design and the code to coexist, providing numerous benefits.

Phase 3 Code to a Standard:
It is important to create a standard but not one so heavy and restrictive that developers will resist using it. Pick the “rules” that are important and form those into the standard. Get buy-in from the development team and then enforce the standard. Code maintainability going forward will be more manageable.

Phase 4 Test…and Test Some More!:
If you have the benefit of having separate test engineers, use them. If you don’t have this benefit, consider adding them to your staff. Regardless, try to have some level of independence when creating “requirements based” test cases – as long as it’s not the developer of the code. Unit testing can be the responsibility of the developer, however independent testing has been proven to yield the best results. Don’t wait until the end to test. Developers should provide regular code “drops” to the test team. This allows the test to be verified and the code to be checked along the way.

Phase 5 Perform Peer Reviews:
All phases of software development should rely on peer reviews. Reviewing requirements, designs, code and test cases will yield the best results and provide the best opportunity for delivering a robust end product on schedule. Developing review checklists will help to guarantee reviews are performed consistently from person to person and product to product.

Omnicon’s engineers know that software development requires a detailed and rigorous process to best assure that the final product is correct and as reliable as possible. Our approach to software development has led to a 96% repeat customer base and knowing how to engineer the best solutions to meet your program challenges.

Tags: best practices, design, developers, development, engineering, engineering services, engineers, hardware, hardware development, peer review, software, software development, testing

Overview

Resources

About Us

Omnicon provides custom engineering consultancy services and support for a range of customers in aerospace, defense, transportation and beyond.