Today's device manufacturers face conflicting demands: Get the product out the door. Minimize development cost. Meet ever-changing customer requirements. Certify your device. The list goes on. Add the fact that most development organizations are constantly in flux with staff (in-house or contracted developers), development tools and processes, number and complexity of projects, requirements, and standards they must meet, and you can almost taste the stress.
If your company is typical, you can see the usual "fight or flight" reaction at all levels of your organization. A poignant Dilbert cartoon pictured one manager pointing his finger at his team and dictating that his engineers "just code while he goes out and figures out the requirements." Unfortunately, this rush to market is a common driver for poor code quality.
Some managers give lip service to quality code, but when push comes to shove, they're willing to sacrifice quality for time to market. The pressure on developers can cause problems from the other direction, where they feel they have to shortcut their development or testing process to meet a schedule. To heck with coding standards, requirements traceability, or testing -- finish coding.
Either way, the result is disastrous.
Today, the pressure is on for software organizations in safety- and security-critical markets to ensure their software does not fail. No security vulnerabilities. No hazards due to poor coding practices or insufficiently tested code. And, depending on your sector, you may now also need to certify and/or qualify your code under safety standards such as DO-178 (aerospace), IEC 61508 (industrial), EN 50128 (rail), IEC 62304 (medical), or ISO 26262 (automotive).
How can you manage all of this on top of meeting requirements, budget, and schedule? Effective requirements management and verification is key. Gone are the days when you could manage requirements and verification manually.
We're all tired of hearing how system complexity is skyrocketing. It's not news. Most engineers in these critical markets want help taking care of the mundane but important "stuff" so they can do a better job of architecting and implementing the right solution. Give them affordable and easy-to-use tools that help keep track of -- and trace -- requirements to design, code, verification plans, procedures, and results. Automate the process of checking code against coding standards, generating test cases and harnesses, executing regression tests, recording results, and generating documentation.
Let the engineers focus on what they do best, engineering safety- and security-critical solutions, so we can depend on those medical devices, our industrial control systems, military systems, smart grids, automobile adaptive cruise control systems, and the avionics and flight controls in planes that take us on vacation.
Just a thought. What do you think? Tell us in the comments section below.
Jim McElroy, vice president of marketing at LDRA Technology, is focused on expanding LDRA business in the embedded software verification market by improving developer productivity and software quality in critical application development.