I try to answer all your points:
Basically how these systems and the development is designed it can not be the mistake of only one developer: there are code reviews, there is something called functional safety component, there are multiple levels of tests. So if something is happening that should be the mistake of multiple people. On the other hand of course such things can still happen. But as per now a lot of people are dying in traffic accidents I would be already happy if this number could be strongly decreased by autonomous driving, even if this number will never reach 0.
As I already mentioned it could be never the responsibility of only one developer, it must be a mistake of multiple people. But if so, of course I'm somehow responsible for that. As it is now: in case of most of the driving assistant systems, like emergency brake assistant it is mentioned, that they are not working 100% sure, but also they are strongly decreasing the number of accidents. It's like I'm driving my car on a daily base and of course there's the risk that I'm causing an accident, still I'm doing it.
Right now the most of such projects are still in research phase. That means the cars will be driven only by test drivers, who did certain driving courses before. In this phase the testing is not so strict. In case of safety critical systems going into serial development there are a lot of restrictions on the process, on reviews, on testing on code and on system level. And for safety cases there are even software tricks, like to processors are calculating the same with two different algorithms and if the results are not the same the system is changing into an error state and a lot of other different things.
There are automated tests as well on different levels: unit tests, software in loop, hardware in loop. They are trying to cover all cases, but of course issues can always happen. There is manual testing on the top of that.
Since this topic is still in research mode, yes. But it is always documented what parts are still not working properly and such software should never be published. There are so called software releases which are tested properly.
The whole requirement engineering is a separated team, they are braking the high level requirements and use cases on smaller, component level requirements. So me as a developer I'm never taking such decisions. And as it is right now, the development is really concentrated on more common use cases, like overtaking, handling traffic lights, changing lanes properly and so on. In this phase such corner cases are not really analysed yet. On the other hand in such (really rare) situation you as a driver of a car needs to make you own decision as well. Have you ever thinking about what would be your decision in such a case?
Thanks for taking the time to answer all my questions. It probably took you a while to write all those answers :)
I just have 3 things to add:
"In this phase such corner cases are not really analyzed yet" - corner cases that are deferred for later usually end up at the bottom of a backlog and will be forgotten by time. While that usually works for "regular" software, I would opt for a more rigorous approach in your case, since the software you're developing is, quite literally, a matter of life and death.
"you as a driver of a car needs to make you own decision as well. Have you ever thinking about what would be your decision in such a case?"
That's precisely the problem. When it's my decision and my decision alone, then it's on me.
But when a fully autonomous car makes a decision like that, then I'm not ok with living with the guilt of a decision I didn't make.
That's why these moral issues are so delicate and should be analyzed thoroughly before implementing anything.
Just some friendly advice, be very careful with that.
You may think that "you're just following orders", but that exactly what the developers from Volkswagen thought when they wrote the software that tricked the pollution tests. And one them went to jail for that: bbc.com/news/business-41053740.
Thanks again for taking the time to answer my questions.
Best of luck in the future!
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.