-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!ne
ws.chmurka.net!.POSTED.pi.v.chmurka.net!not-for-mail
From: q...@t...no1 (Queequeg)
Newsgroups: pl.comp.programming
Subject: Re: Niezmienniki pętli
Date: Tue, 20 Nov 2018 22:26:49 +0000 (UTC)
Organization: news.chmurka.net
Message-ID: <b...@t...no1>
References: <8...@g...com>
<7...@g...com>
<d...@g...com>
<psp6q7$97o$1@node2.news.atman.pl>
<6...@g...com>
<pss4d0$14n$1@node2.news.atman.pl>
<9...@t...no1>
<7...@g...com>
NNTP-Posting-Host: pi.v.chmurka.net
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 20 Nov 2018 22:26:49 +0000 (UTC)
Injection-Info: news.chmurka.net; posting-account="gof";
posting-host="pi.v.chmurka.net:172.24.44.20"; logging-data="22347";
mail-complaints-to="abuse-news.(at).chmurka.net"
User-Agent: tin/2.4.2-20171224 ("Lochhead") (UNIX) (Linux/4.4.50-v7+ (armv7l))
Cancel-Lock: sha1:BLLRArixCSqE9TDtT7poxysqNu0=
Xref: news-archive.icm.edu.pl pl.comp.programming:212956
[ ukryj nagłówki ]Maciej Sobczak <s...@g...com> wrote:
>> > To następna obserwacja: jeśl wpływa to na runtime release należy to
>> > odrzucić. Wszelakie checkery asercyjne, za wyjątkiem programowania
>> > defensywanego, nie mogą istnieć w kodzie produkcyjnym.
>>
>> Nigdy nie rozumiałem sensu tego rozumowania
>
> Sens jest również taki, że (jak na ironię!) w systemach krytycznych nie
> da się spełnić kryterium 100% pokrycia kodu testami czegoś, co ma
> asserta. Tzn. jeśli w kodzie jest assert, który *z założenia* ma się
> nigdy nie wykonać, to jest to tzw. dead code i ma go nie być. Bo jeśli
> jest, to nie da się go przetestować. Albo inaczej: nie da się wykazać
> testami, że coś się nigdy nie wykona, więc nie da się zdobyć w ten
> sposób pewności, że się nie wykona. A jeśli osiągniemy tą pewność innymi
> metodami (np. formalnymi), to asserta dynamicznego może wtedy w ogóle
> nie być.
To prawda. Ja (na szczęście -- bo odpowiedzialność jest ogromna) nigdy nie
pisałem systemów krytycznych, ani nigdy u SQA nie robiło u nas tego typu
testów (choć oczywiście to, co mówisz, ma sens).
> Zupełnie niezależnie od tego, w pewnych środowiskach walnięcie assertem
> jest bez sensu, bo i tak nie ma do kogo przekazać sterowania. Assert w
> rozruszniku serca jest bez sensu, nie tylko technicznie, ale też
> filozoficznie.
To znów bardzo specyficzne zastosowanie i podejrzewam, że programowanie
rozrusznika serca rządzi się swoimi regułami (raz, że jest to typowy układ
embedded bez możliwości wyrzucenia błędu -- bo jak, w pulsie pacjenta
zakodować linię kodu? -- a dwa, że jest to system krytyczny, w którym
nieprawidłowa praca programu może powodować chorobę lub śmierć).
Podejrzewam że pisząc oprogramowanie na rozruszniki serca stosuje się
jakąś formę MISRA lub odpowiednik i że są tam jakieś sprzętowe failsafe'y,
które uniemożliwiają przejście programowi w stan, który będzie zagrażał
życiu lub zdrowiu. Tak to sobie przynajmniej wyobrażam.
Z drugiej strony spotkałem się z systemem ładowania baterii (Li-Po), w
którym zamiast dedykowanego kontrolera wyłączanie ładowarki było robione
software'owo. Wszystko działało... do momentu, aż w systemie pojawił się
błąd i zasilanie baterii nie było wyłączane po zakończeniu (nie wiem też
co by było, gdyby urządzenie się zawiesiło).
> To nie jest tylko kwestia szybkości działania, to może być też kwestia
> sensowności istnienia samego asserta.
Tak... czasem nie ma możliwości zaraportowania błędu i jest pytanie typu
"ok, pojawił się błąd, ale co teraz?". Tylko właśnie -- co wtedy? Jeśli
mogę sobie na to pozwolić i na danej platformie ma to sens, to staram się
to w jakiś sposób zaraportować. Jeśli sensu ani możliwości nie ma, to
pozostaje przestawienie wyjść w niegroźny stan i kontrolowany restart...
i jeśli błąd nadal występuje, to tak w nieskończoność.
Tak czy inaczej, jeśli system umożliwia jakieś zaraportowanie błędu lub ma
możliwość interakcji z użytkownikiem, to używam tego. Zdarzało się, że
tego typu asserty wyskakiwały na produkcji (choć teoretycznie kod był
przetestowany przez SQA i teoretycznie nie powinny wyskoczyć). Dużo
bardziej wolę dostać raport o błędzie wraz z tym, co wypluł program i co
pozwala mi zdiagnozować błąd, niż pozwolić programowi działać dalej w
stanie, w którym nie powinien się znaleźć. Nawet jeśli nie ma możliwości
zaraportowania, to dużo bardziej wolę, jak program się zatrzymuje, a błąd
jest jawny, niż jak błąd jest ukrywany i po jakimś czasie coś działa, ale
nie tak jak powinno.
Oczywiście nie pisząc oprogramowania na rozruszniki itd. systemy mogę
sobie na to pozwolić -- awaria programu nie ma w tym przypadku skutków
zdrowotnych (choć może mieć finansowe wynikające z braku możliwości
używania programu).
--
https://www.youtube.com/watch?v=9lSzL1DqQn0
Następne wpisy z tego wątku
- 20.11.18 23:27 g...@g...com
- 21.11.18 08:16 Maciej Sobczak
- 21.11.18 11:12 Queequeg
- 21.11.18 11:36 fir
- 21.11.18 15:54 AK
- 21.11.18 16:07 AK
- 21.11.18 20:32 g...@g...com
- 21.11.18 20:35 g...@g...com
- 21.11.18 22:10 Queequeg
- 21.11.18 22:28 Maciej Sobczak
- 21.11.18 22:48 Maciej Sobczak
- 21.11.18 23:04 g...@g...com
- 22.11.18 11:31 Maciej Sobczak
- 22.11.18 15:22 fir
- 22.11.18 16:08 AK
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-28 Śmiechu KOOOOOOPA ;-)
- 2024-12-29 Pomiar amplitudy w zegarku mechanicznym
- 2024-12-28 Antyradar
- 2024-12-28 Deweloper przegral w sadzie musi zwrócic pieniądze Posypia sie kolejne pozwy?
- 2024-12-28 Warszawa => Full Stack .Net Engineer <=
- 2024-12-28 Warszawa => Sales Assistant <=
- 2024-12-28 Warszawa => Programista Full Stack .Net <=
- 2024-12-28 Warszawa => Full Stack web developer (obszar .Net Core, Angular6+) <=
- 2024-12-28 Katowice => Head of Virtualization Platform Management and Operating S
- 2024-12-28 Błonie => Analityk Systemów Informatycznych (TMS SPEED) <=
- 2024-12-28 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2024-12-28 Żerniki => Employer Branding Specialist <=
- 2024-12-28 ale zawziętość i cierpliwość
- 2024-12-27 most kilometrowy
- 2024-12-27 Dyplomaci a alkomaty