eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJak to robią w NASA › Re: Jak to robią w NASA
  • X-Received: by 2002:ac8:27fa:: with SMTP id x55mr15850845qtx.241.1567877721217; Sat,
    07 Sep 2019 10:35:21 -0700 (PDT)
    X-Received: by 2002:ac8:27fa:: with SMTP id x55mr15850845qtx.241.1567877721217; Sat,
    07 Sep 2019 10:35:21 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!news.unit0.net!newsreader4.netcologne.de!news.netcologne.
    de!peer02.ams1!peer.ams1.xlned.com!news.xlned.com!peer02.am4!peer.am4.highwinds
    -media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!o24n
    o9026629qtl.0!news-out.google.com!c11ni286qtp.0!nntp.google.com!o24no9026620qtl
    .0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sat, 7 Sep 2019 10:35:20 -0700 (PDT)
    In-Reply-To: <1...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=178.36.205.84;
    posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
    NNTP-Posting-Host: 178.36.205.84
    References: <1ua4wui506zbf$.dlg@tyczka.com>
    <4...@g...com>
    <qkjqqi$1b59$1@gioia.aioe.org>
    <0...@g...com>
    <r...@t...com>
    <e...@g...com>
    <1...@g...com>
    <1...@g...com>
    <a...@g...com>
    <qkoqr3$1eec$1@gioia.aioe.org>
    <a...@g...com>
    <8...@n...net>
    <1...@g...com>
    <qksqus$1h0q$1@gioia.aioe.org>
    <3...@g...com>
    <5d7219bc$0$6446$426a74cc@news.free.fr>
    <0...@g...com>
    <8...@g...com>
    <5d7267e0$0$15200$426a34cc@news.free.fr>
    <5...@g...com>
    <5d72afa6$0$3531$426a74cc@news.free.fr>
    <3...@g...com>
    <1...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <9...@g...com>
    Subject: Re: Jak to robią w NASA
    From: "M.M." <m...@g...com>
    Injection-Date: Sat, 07 Sep 2019 17:35:21 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    X-Received-Bytes: 6260
    X-Received-Body-CRC: 2360289507
    Xref: news-archive.icm.edu.pl pl.comp.programming:213972
    [ ukryj nagłówki ]

    On Saturday, September 7, 2019 at 5:04:15 PM UTC+2, Maciej Sobczak wrote:
    > > Z tego co słyszałem testuje się na wyrywki.
    >
    > Można, ale to słaba metoda. "Wyrywki" zakładają, że jakiś zbiór jest jednakowo
    czuły w swoich różnych punktach, co właściwie nigdy nie jest prawdą. Dotyczy to
    dowolnej konstrukcji inżynierskiej, nie tylko w programowaniu.
    > Dlatego testuje się równoważne klasy i ich brzegi. Jeśli np. coś ma zakres od 10 do
    100, to zamiast zrobić 20 testów na wyrywki lepiej jest zrobić testy np. dla 9, 10,
    11, 50, 99, 100, 101.

    Tak, oczywiście. Dawanie danych całkowicie losowo to tak jakby
    punkt wyjścia. Jeśli mamy procedurę która trywialnym algorytmem
    traktuje duży przedział, to warto dla tej procedury zaprojektować
    dane o specjalnym rozkładzie prawdopodobieństwa.

    Np.:

    int funkcja( int x, int y ) {
    if( x >= 100 || x <= -100 || y >= 100 || y <= -100 ) {
    return 0;
    }
    return trudne_obliczenia;
    }

    To warto częściej losować w 'trudny przedział'.


    >
    > > Napisanie oprogramowanie
    > > do sterowania rakietą zlecano ośmiu kompletnie niezależnym zespołom.
    >
    > Był kiedyś taki pomysł, ale odchodzi się od niego,

    Z tego co słyszałem z niezależnych źródeł, to tak się robiło. Natomiast
    'sam dla siebie' robiłem tak często, czasami miałem trzy wersje jednej
    procedury. Jedna wersja to wersja napisana na szybko po wstępnym
    przemyśleniu, druga to po poprawieniu czytelności, a trzecia to po
    optymalizacji - o ile optymalizacja była robiona. Wszystkie wersje
    trzymałem w kodzie:

    typ funkcja( argumenty ) {
    #ifdef debug
    old_value = old_funkcja( argumenty );
    #endif
    // nowy kod
    #ifdef debug
    assert( value == old_value );
    #endif
    return value;
    }




    > bo okazało się, że problemem wcale nie jest poprawność oprogramowania,
    > tylko kompletność wymagań.

    Nie wypowiem się, nie mam tylu danych i doświadczeń aby wyrobić sobie zdanie.


    // Po co robić 8 tak samo złych programów?

    Tak to oczywiście nie ma sensu.

    > Stosuje się oczywiście redundancję, ale po to, żeby uchronić się przed zjawiskami
    sprzętowymi. Czyli zobaczysz np. dwa identyczne komputery z *identycznym*
    oprogramowaniem (czyli jest 1 projekt a nie 8), ale umieszczone w *różnych miejscach*
    rakiety albo samolotu i to np. pozwala rozwiązać problemy powodowane przez
    przypadkowe promieniowanie albo zpełnie normalne awarie sprzętu.

    Tak, ale na awarie sprzętu taka metoda jest tak jakby standardowa i oczywista.


    > Ale pomysł na różne wersje oprogramowania okazał się być
    > nieużyteczny i niepotrzebnie kosztowny.

    Czy ja wiem... Jakby od zera do końca projektu prowadzić niezależnie 8 zespołów
    to faktycznie drogo i ciężko. Ale jak projekt mamy (prawie) ukończony, to
    nie jest aż tak bardzo kosztowne, aby wybrać z niego kluczowe procedury,
    dobrze udokumentować i zlecić napisanie innym zespołom tylko tych procedur.

    Mnie się metoda wydaje ciekawa, gdy sam sobie pisałem różne wersje tych
    samych procedur, to kilka upierdliwych błędów wychwyciłem, szczególnie na
    etapie optymalizacji.

    Pozdrawiam

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: