Therac-25!
Deweloperzy projektu Therac-25 byli dość pewni co do czasu między interfejsem użytkownika a problemem związanym z interfejsem w terapeutycznej maszynie XRAY.
Nie powinny.
Możesz dowiedzieć się więcej o tej słynnej katastrofie oprogramowania na śmierć i życie pod adresem:
http://www.youtube.com/watch?v=izGSOsAGIVQ
lub
http://en.wikipedia.org/wiki/Therac-25
Twoja aplikacja może być znacznie mniej wrażliwa na awarie niż urządzenia medyczne. Pomocną metodą jest ocena narażenia na ryzyko jako iloczynu prawdopodobieństwa wystąpienia i kosztu wystąpienia w całym okresie użytkowania produktu dla wszystkich jednostek, które można wyprodukować.
Jeśli zdecydowałeś się zbudować swój kod, aby był trwały (i wygląda na to, że masz), powinieneś wziąć pod uwagę prawo Moore'a, które może z łatwością wykasować kilka zer co kilka lat, gdy komputery wewnątrz lub na zewnątrz systemu stają się szybsze. Jeśli wyślesz tysiące kopii, odetnij więcej zer. Jeśli użytkownicy wykonują tę operację codziennie (lub co miesiąc) przez lata, zabierz jeszcze kilka. Jeśli jest używany, gdy dostępne jest włókno Google, co wtedy? Jeśli śmieci interfejsu użytkownika zbierają operacje w trakcie GUI, czy to wpływa na wyścig? Czy korzystasz z biblioteki Open Source lub Windows za GUI? Czy aktualizacje tam mogą wpływać na czas?
Semafory, zamki, muteksy, synchronizacja barier to jedne ze sposobów synchronizacji działań między wątkami. Potencjalnie, jeśli ich nie używasz, inna osoba, która utrzymuje Twój program, może, a następnie dość szybko założyć, że relacje między wątkami mogą się zmienić, a obliczenia dotyczące warunków wyścigu mogą zostać unieważnione.
Zalecam, abyś wyraźnie zsynchronizował, ponieważ chociaż nigdy nie widzisz, że stwarza to problem, klient może. Ponadto, nawet jeśli warunki wyścigu nigdy nie wystąpią, co zrobić, jeśli ty lub Twoja organizacja zostaną wezwani do sądu w celu obrony twojego kodu (ponieważ Toyota była związana z Priusem kilka lat temu). Im dokładniejsza jest twoja metodologia, tym lepiej ci się spodoba. Lepiej byłoby powiedzieć „chronimy się przed takim mało prawdopodobnym przypadkiem jak ten ...” niż powiedzieć „wiemy, że nasz kod zawiedzie, ale spisaliśmy to równanie, aby pokazać, że nie wydarzy się za naszego życia. Prawdopodobnie. „
Wygląda na to, że obliczenie prawdopodobieństwa pochodzi od kogoś innego. Czy znają Twój kod i znasz je na tyle, aby mieć pewność, że nie popełniono błędu? Jeśli policzyłem dla czegoś 99,99997% wiarygodności, mógłbym również wrócić do moich klas statystyki college'u i pamiętać, że nie zawsze otrzymywałem 100% i wycofałem całkiem sporo procent z moich osobistych szacunków wiarygodności.