I had been lurking the forum and blog posts and the last month What we’ve been reading in April post raised a question.
First some background about myself, I have an EE degree but enjoy software development more. I’ve been working for a couple of years, my workplace mostly did PCB assembly, once the clients required us to develop software for their project I started to get used to good software practices like:
- Version control.
- Develop software modules.
- Understanding bugs and find the root cause before doing any change to the software.
- Lastly I’m doing Unit testing with Unity and function faking/mocking with fff (with great help of the Test Driven Development for Embedded C of James W. Grenning and the electronvector.com site).
Now I find myself in a position where I want to pursue embedded software development in a bigger workplace, with focus on automotive software development. I’m not certain about what features must a software project have to consider it production quality?
I consider it need to have unit testing, static analysis, some sort of complexity measurement, docs, requirements and further ways of testing.
@francois helped me with the following list:
I think this really depends on your project & industry. In my opinion, the minimum viable project has a strong specification and a test plan.
Beyond that, I think the following technologies allow companies to ship quality faster, with less risk:
Revision control Code Review Automated Builds Continuous Integration Unit Testing Integration Testing Automated Releases
I personally insist of these practices being used on the projects I work on. There of course are others that go above and beyond the aforementioned: canary releases, feature flags, automated hardware-in-the-loop tests, automated fuzzing, error monitoring, … and more.
Hope that helps!
So my question is about what features/requirements do you think or know production quality software must have?
How to improve my development?