For novel ideas about building embedded systems (both hardware and firmware), join the 40,000+ engineers who subscribe to The Embedded Muse, a free biweekly newsletter. The Muse has no hype and no vendor PR. Click here to subscribe.

2015 Firmware Practices Survey

How do you go about developing your firmware? There's very little research about the embedded world. Please fill out this survey, and I'll share all of the results with readers of the Embedded Muse (go here to subscribe if you're not already a reader).

If you chose to include your email address, you'll be entered into a drawing to win one of three copies of The Embedded Systems Dictionary.

(Optional) Your email address:

General Questions

Your main function:

Number of firmware developers on your last project:

Number of hardware developers on your last project:

Your team's development methodology:

If you selected "other" for the previous question, what method do you use?

The Use of Tools

Lint:

Static analyzers (i.e., as in the use of tools from Coverity Polyspace, GrammaTech, Klocwork, etc., that do a mathematical analysis of what the code will do at runtime):

If you indicated you do use static analysis in the previous question, which tool do you use?

If you indicated you do use static analysis, are you satisfied with the results? (Feel free to elaborate in the comments at the end of this survey):

Does your team routinely use version control?

If you indicated you do use version control in the previous question, which tool do you primarily use:

Does your team routinely use a tool to manage requirements?

If you indicated you do use a tool to manage requirements in the previous question, which tool do you use:

Does your team routinely track requirements to test cases?

Does your team routinely update requirements docs when requirements change?

Cyclomatic complexity:

If you indicated your team measures complexity in the previous question, which tool do you use:

Metrics, Standards and Code Inspections

Does your team measure the cost to produce code?

Does your team measure the number of defects found pre-test?

Does your team measure the number of defects found during test?

Does your team measure the number of defects found in integration?

Does your team use these test metrics to tune your development process?

Use of firmware standards:

Does your team perform formal code inspections/reviews on most of the code?

Does your team always or mostly do pair programming?

Does your team review the code using tools that allow reviews without meetings?

If your team uses some other sort of inspection/review, what method do you use?

Testing

Does your team always or mostly create and run unit tests?

Does your team always or mostly create and run black box tests?

Automatic vs manual testing:

Does your team, and not the QA group, always or mostly do integration testing?

Does your team have dedicated testers (not including the QA group)?

Does your team (or your QA group) always or mostly run regression tests prior to shipping?

Miscellaneous

Does your team have - and use - a formal change control process?

Does your team use UML or other formal modeling?

How many assert macros (or equivalent) do you estimate your team uses per 1000 lines of code:

Feel free to make any comments about your team's firmware engineering processes: