“Getting it Right”, for who or what? Q&A? IV&V? Requirements? Specifications? Formal Methods?
We need to be “Getting it Right” for the USERS! (It their lives that are at risk!)
Most of our embedded S/W is drop shipped. (User problems are “user problems” until they prove otherwise.) If we do respond to user problems, we are faced with the expensive and time consuming task of trying to re-create the problem, from limited and often inaccurate data. This is probably why we tend to live in our own little world disconcerted and isolated from the users. (Just look at how our software support organizations are designed to work for us and not the users.)
We will not even try to close this gap between us and the users. If we did, we would see the true reliability of our software. THIS IS THE FUNDAMENTLY PROBLEM STANDING IN THE WAY OF RELIABLE EMBEDDED SOFTWARE!
If you think embedded software reliability is improving, don’t look at what the software development environment is (or is not) putting in the executable file. You could see a “memory++;” line of code that translates into:
xxxxxxxx0: xx xx xx xx ld.w r8,pc
540
xxxxxxxx4: xx xx ld.w r8,r8
0x0
xxxxxxxx6: xx xx ff ff sub r9,r8,-1
xxxxxxxxa: xx xx xx xx ld.w r8,pc
530
xxxxxxxxe: xx xx st.w r8
0x0,r9
If you think this is strange, you should see what the “memcpy” function (from the development environment) is doing!