{"id":31848,"date":"2022-08-16T10:57:00","date_gmt":"2022-08-16T08:57:00","guid":{"rendered":"https:\/\/nearshore-it.eu\/artykuly\/oprogramowanie-w-przemysle-kosmicznym\/"},"modified":"2024-11-07T15:21:27","modified_gmt":"2024-11-07T14:21:27","slug":"oprogramowanie-w-przemysle-kosmicznym","status":"publish","type":"post","link":"https:\/\/nearshore-it.eu\/pl\/artykuly\/oprogramowanie-w-przemysle-kosmicznym\/","title":{"rendered":"Z\u0142ote zasady wytwarzania oprogramowania w\u00a0przemy\u015ble kosmicznym"},"content":{"rendered":"\n<div class=\"table-of-contents\">\n    <p class=\"title\"><\/p>\n    <ol>\n                    <li><a href=\"#Test-what-you-fly-and-fly-what-you-test\">1.  Test what you fly and fly what you test\u00a0<\/a><\/li>\n                    <li><a href=\"#Testuj,-\u017ceby-ujawnia\u0107-b\u0142\u0119dy,-a-nie-dowodzi\u0107-ich-braku\">2.  Testuj, \u017ceby ujawnia\u0107 b\u0142\u0119dy, a nie dowodzi\u0107 ich braku\u00a0\u00a0<\/a><\/li>\n                    <li><a href=\"#Testuj-najwcze\u015bniej,-jak-tylko-si\u0119-da\">3.  Testuj najwcze\u015bniej, jak tylko si\u0119 da\u00a0<\/a><\/li>\n                    <li><a href=\"#Testuj-na-czas\">4.  Testuj na czas\u00a0<\/a><\/li>\n                    <li><a href=\"#SpaceX-\u2013-jak-oni-testuj\u0105?\">5.  SpaceX \u2013 jak oni testuj\u0105? <\/a><\/li>\n            <\/ol>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"Test-what-you-fly-and-fly-what-you-test\">Test what you fly and fly what you test&nbsp;<\/h2>\n\n\n\n<p>Generalna zasada w przemy\u015ble kosmicznym brzmi:<strong> \u201eTest what you fly and fly what you test\u201d <\/strong>i oznacza, \u017ce nale\u017cy sprawdza\u0107 te komponenty misji, kt\u00f3re maj\u0105 by\u0107 u\u017cywane, oraz wykorzystywa\u0107 te, kt\u00f3re zosta\u0142y przetestowane. Brzmi banalnie, lecz to w\u0142a\u015bnie \u015bcis\u0142e trzymanie si\u0119 tej zasady mog\u0142oby pom\u00f3c w wielu projektach. <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/testowanie-oprogramowania\/\" data-type=\"jpro\">Testowanie<\/a> w przypadku misji kosmicznych jest o tyle trudne, \u017ce nie zawsze mo\u017cliwe jest wierne odtworzenie warunk\u00f3w \u015brodowiskowych lotu lub takich, jakie panuj\u0105 na innej planecie. Tworzy si\u0119 w tym celu specjalne laboratoria b\u0105d\u017a symulacje komputerowe, lecz nawet wtedy stanowi to du\u017ce wyzwanie. ISTQB m\u00f3wi wprost \u2013 <strong>testowanie gruntowne jest niemo\u017cliwe. <\/strong>Tylko w najprostszych przypadkach da si\u0119 sprawdzi\u0107 wszystkie kombinacje danych i warunk\u00f3w, a z\u0142o\u017cone systemy wykorzystywane w misjach kosmicznych zdecydowanie nie nale\u017c\u0105 do prostych. Ponadto testowanie jest zale\u017cne od kontekstu. Tak specyficzne systemy wymagaj\u0105 r\u00f3wnie\u017c dostosowanych test\u00f3w.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Testuj,-\u017ceby-ujawnia\u0107-b\u0142\u0119dy,-a-nie-dowodzi\u0107-ich-braku\">Testuj, \u017ceby ujawnia\u0107 b\u0142\u0119dy, a nie dowodzi\u0107 ich braku&nbsp;&nbsp;<\/h2>\n\n\n\n<p>Kolejn\u0105 zasad\u0105, kt\u00f3ra odgrywa ogromn\u0105 rol\u0119 w <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/bledy-oprogramowania-misje\/\" data-type=\"jpro\" data-id=\"66656\">testowaniu oprogramowania misji kosmicznych, <\/a>jest testowanie jako<strong> proces ujawniaj\u0105cy istnienie b\u0142\u0119d\u00f3w, a nie dowodz\u0105cy ich braku.<\/strong> Jest to pesymistyczne, ale nader realistyczne podej\u015bcie, o kt\u00f3rym zapomniano cho\u0107by w przypadku <a href=\"https:\/\/www.dobreprogramy.pl\/najdrozszy-bug-w-historii-przez-blad-w-kodzie-rozpadla-sie-rakieta,6676587891968832a\" target=\"_blank\" rel=\"noopener\">katastrofy Ariane 5 z satelitami Cluster.<\/a> Wspomina o tym nawet oficjalny raport, w kt\u00f3rym stwierdzono, \u017ce oprogramowanie zosta\u0142o uznane za poprawne, dop\u00f3ki nie okaza\u0142o si\u0119, \u017ce jest wadliwe.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Testuj-najwcze\u015bniej,-jak-tylko-si\u0119-da\">Testuj najwcze\u015bniej, jak tylko si\u0119 da&nbsp;<\/h2>\n\n\n\n<p>R\u00f3wnie istotna jest wspomniana ju\u017c wcze\u015bniej zasada zwi\u0105zana z testowaniem tzw.<a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/testuj-przed-wszystkimi-czyli-shift-left-testing-w-praktyce\/\" data-type=\"jpro\"> <em>shift-left<\/em>.<\/a> Wykrycie b\u0142\u0119d\u00f3w na wczesnym etapie projektu pozwala zaoszcz\u0119dzi\u0107 czas i pieni\u0105dze. W wielu misjach b\u0142\u0119dy pojawi\u0142y si\u0119 ju\u017c na etapie projektowania i nie zosta\u0142y wykryte z powodu niedostatecznie rzetelnych proces\u00f3w weryfikacji.&nbsp;&nbsp;<\/p>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/nearshore-it.eu\/wp-content\/uploads\/2024\/09\/jpro_2022.06.09_graphic_3.png\" alt=\"wytwarzanie oprogramowania - jak to si\u0119 robi w przemy\u015ble kosmicznym\" class=\"wp-image-5489\" title=\"\"><\/figure>\n<\/div>\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Je\u015bli chodzi o stosowane w NASA praktyki, to wiadomo, \u017ce organizacja k\u0142adzie du\u017cy nacisk na testowanie w cyklu tworzenia oprogramowania. Szacuje si\u0119, \u017ce<strong> oko\u0142o 40% bud\u017cetu projektu jest po\u015bwi\u0119cone w\u0142a\u015bnie na testy.<\/strong> Aktywno\u015bci zwi\u0105zane z <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/quality-assurance-czyli-jak-zagwarantowac-jakosc-i-bezpieczenstwo-w-projektach-it\/\" target=\"_blank\" rel=\"noreferrer noopener\">zapewnianiem jako\u015bci<\/a> rozpoczynane s\u0105 zwykle na etapie analizy wymaga\u0144, kt\u00f3re musz\u0105 by\u0107 zrozumia\u0142e, szczeg\u00f3\u0142owe, realistyczne i adekwatne do mo\u017cliwo\u015bci, a tak\u017ce testowalne. Celem dobrze zaprojektowanej specyfikacji oprogramowania jest to, aby in\u017cynier sprz\u0119tu rozumia\u0142, jak oprogramowanie kieruje systemem. We wczesnych stadiach testowania oprogramowania NASA u\u017cywa cz\u0119sto symulacji danych wej\u015bciowych. W p\u00f3\u017aniejszych fazach testowanie obejmuje r\u00f3wnie\u017c sprz\u0119t do testowania operacji i interfejs\u00f3w, polece\u0144 naziemnych i ko\u0144cowej fazy. Du\u017c\u0105 wag\u0119 przyk\u0142ada si\u0119 wtedy nawet do takich szczeg\u00f3\u0142\u00f3w jak odpowiednia d\u0142ugo\u015b\u0107 kabli. Ponadto wi\u0119kszo\u015b\u0107 sprz\u0119tu NASA nie mo\u017ce by\u0107 naprawiana w trakcie eksploatacji, co nadaje jeszcze wi\u0119ksz\u0105 wag\u0119 zapewnianiu jako\u015bci ju\u017c na etapie jego tworzenia.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quality Assurance<\/h3>\n\n\n\n<p>Zapewnianie jako\u015bci w projektach IT. Sprawd\u017a jakie trendy ukszta\u0142tuj\u0105 rynek, na kt\u00f3rym b\u0119dzie wysokie zapotrzebowanie na tester\u00f3w oprogramowania i zespo\u0142y zarz\u0105dzania jako\u015bci\u0105.<\/p>\n\n\n\n<p><strong>Przeczytaj artyku\u0142:<\/strong> <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/quality-assurance-czyli-jak-zagwarantowac-jakosc-i-bezpieczenstwo-w-projektach-it\/\" data-type=\"link\" data-id=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/quality-assurance-czyli-jak-zagwarantowac-jakosc-i-bezpieczenstwo-w-projektach-it\/\">Quality Assurance (QA) &#8211; zapewnij jako\u015b\u0107 w Twoich projektach IT<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"Testuj-na-czas\">Testuj na czas&nbsp;<\/h2>\n\n\n\n<p>Innym istotnym dla testowania w misjach kosmicznych czynnikiem jest czas. Chodzi nie tylko o okna pogodowe umo\u017cliwiaj\u0105ce start i synchronizacj\u0119 dzia\u0142a\u0144 w czasie, ale tak\u017ce logistyk\u0119 na etapie wytwarzania produktu (np. przygotowanie komponentu lub systemu w odpowiednim terminie, aby mo\u017cna by\u0142o go przetestowa\u0107 w komorze pr\u00f3\u017cniowej). Nawet tego typu testy zazwyczaj nie s\u0105 jednak w stanie zagwarantowa\u0107 identycznych warunk\u00f3w jak te,&nbsp;kt\u00f3re panuj\u0105 w kosmosie.&nbsp;<\/p>\n\n\n\n<p>Proces testowania w NASA obejmuje tak\u017ce najnowsze i najbardziej zaawansowane technologie, kt\u00f3re pozwalaj\u0105 te\u017c na oszcz\u0119dno\u015bci. Jedn\u0105 z nich jest technologia <em>Digital Twin<\/em>, polegaj\u0105ca na tworzeniu dok\u0142adnych i szczeg\u00f3\u0142owych cyfrowych replik produkt\u00f3w, proces\u00f3w i system\u00f3w.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"SpaceX-\u2013-jak-oni-testuj\u0105?\">SpaceX \u2013 jak oni testuj\u0105? &nbsp;<\/h2>\n\n\n\n<p>R\u00f3wnie\u017c w SpaceX powszechn\u0105 praktyk\u0105 jest testowanie po\u0142\u0105cze\u0144 r\u00f3\u017cnych system\u00f3w i symulacja warunk\u00f3w ich dzia\u0142ania. Do test\u00f3w oprogramowania wykorzystuje si\u0119 m.in. tzw. <em>table rocket<\/em>. Polega to na u\u0142o\u017ceniu wszystkich komputer\u00f3w i kontroler\u00f3w lotu na stole i po\u0142\u0105czeniu ich tak, jakby by\u0142y w prawdziwej rakiecie. W celu wykonania test\u00f3w integracyjnych przeprowadza si\u0119 na komponentach pe\u0142n\u0105 symulacj\u0119 lotu, monitoruj\u0105c wydajno\u015b\u0107 i wychwytuj\u0105c potencjalne awarie. W przypadku test\u00f3w obci\u0105\u017ceniowych in\u017cynierowie robi\u0105 to, co nazywaj\u0105 \u201eprzecinaniem sznurk\u00f3w\u201d \u2013 losowo wy\u0142\u0105czaj\u0105 komputer pok\u0142adowy w trakcie symulacji, aby zobaczy\u0107, jak zareaguje. Ten poziom symulacji, po\u0142\u0105czony ze znacznym udzia\u0142em <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/automatyzacja-testow-obalamy-mity\/\" data-type=\"jpro\">automatyzacji<\/a>, pozwala osi\u0105ga\u0107 \u015bwietne wyniki.<strong> <\/strong><\/p>\n\n\n\n<p><strong>SpaceX jest w stanie bez obaw wprowadza\u0107 zmiany w oprogramowaniu produktu nawet 17 000 razy dziennie! <\/strong>Z tego, jak SpaceX tworzy oprogramowanie, mo\u017cemy wywnioskowa\u0107, \u017ce ponowne wykorzystywanie kodu, <a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/kim-jest-devops-i-jak-wspiera-projekty-it\/\" data-type=\"jpro\">kultura DevOps<\/a> i ci\u0105g\u0142y przep\u0142yw testowania s\u0105 dla nich kluczem do sukcesu.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Podsumowanie&nbsp;&nbsp;<\/h2>\n\n\n\n<p>Powy\u017csze obserwacje, chocia\u017c kontekst mo\u017ce wydawa\u0107 si\u0119 odleg\u0142y o lata \u015bwietlne, s\u0105 ca\u0142kiem bliskie projektowej codzienno\u015bci ka\u017cdego z nas. <\/p>\n\n\n\n<p>Wiele z opisanych w artykule przypadk\u00f3w dostarcza uniwersalnych wniosk\u00f3w, kt\u00f3re mog\u0105 znale\u017a\u0107 zastosowanie w projektach z innych bran\u017c, nie tylko kosmicznej. Mowa tu, chocia\u017cby o takich obszarach jak:&nbsp;&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>analiza ryzyka,<\/li>\n\n\n\n<li>cykl \u017cycia oprogramowania (<em>shift-left\u00a0<\/em>i w\u0142\u0105czenie procesu testowania do wczesnych faz powstawania software\u2019u),<\/li>\n\n\n\n<li>testowanie produktu w \u015brodowiskach o r\u00f3\u017cnych konfiguracjach i zasobach (dev, stage, preprod),<\/li>\n\n\n\n<li>automatyzacja procesu wytwarzania i integracji oprogramowania (CI\/CD),<\/li>\n\n\n\n<li>pokrywanie funkcjonalno\u015bci r\u00f3\u017cnymi\u00a0<a href=\"https:\/\/nearshore-it.eu\/pl\/artykuly\/minimalistyczny-przypadek-testowy\">przypadkami testowymi.\u00a0<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Opisane w moim poprzednim artykule przyk\u0142ady misji kosmicznych, w kt\u00f3rych wyst\u0105pi\u0142y b\u0142\u0119dy oprogramowania, ukazuj\u0105, \u017ce w niekt\u00f3rych przypadkach lepszy, bardziej rzetelny proces test\u00f3w m\u00f3g\u0142by zapobiec ich wyst\u0105pieniu. Cz\u0119sto mo\u017cna wskaza\u0107 konkretny przypadek testowy, kt\u00f3ry zosta\u0142 pomini\u0119ty. Powody? Niew\u0142a\u015bciwe zarz\u0105dzanie lub b\u0142\u0119dna, niestarannie wykonana analiza ryzyka. Dzi\u015b natomiast skupimy si\u0119 na najwa\u017cniejszych zasadach wytwarzania oprogramowania w przemy\u015ble kosmicznym, kt\u00f3re zwi\u0119kszaj\u0105 szanse powodzenia tych nieraz niebotycznie kosztownych projekt\u00f3w.<\/p>\n","protected":false},"author":197,"featured_media":31853,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"iawp_total_views":11,"footnotes":""},"categories":[1,582],"tags":[562],"offering":[522],"class_list":["post-31848","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","category-technologie","tag-qa","offering-tech-blog"],"acf":[],"_links":{"self":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31848","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/users\/197"}],"replies":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/comments?post=31848"}],"version-history":[{"count":5,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31848\/revisions"}],"predecessor-version":[{"id":33950,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/posts\/31848\/revisions\/33950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media\/31853"}],"wp:attachment":[{"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/media?parent=31848"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/categories?post=31848"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/tags?post=31848"},{"taxonomy":"offering","embeddable":true,"href":"https:\/\/nearshore-it.eu\/pl\/wp-json\/wp\/v2\/offering?post=31848"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}