Czy kolonizację Marsa można przyspieszyć dzięki lepszemu testowaniu oprogramowania?

Czytaj więcej

Testowanie oprogramowania odgrywa ważną rolę w procesie jego powstawania jako sposób na identyfikację potencjalnych błędów i wad, zanim staną się one problemem. Zapewnia lepszą jakość, niezawodność i wydajność oprogramowania. Ponadto testy pomagają zapewnić zgodność ze standardami i przepisami branżowymi.  

W tym artykule postaramy się pokazać, jakie potencjalne oszczędności (zarówno czasu, jak i pieniędzy), można byłoby uzyskać, gdyby oprogramowanie stosowane w wysyłanych dotychczas na Marsa pojazdach badawczych  było lepiej testowane.  

O ile szybciej moglibyśmy podjąć się prób skolonizowania Marsa, gdyby oprogramowanie lepszej jakości pozwoliło nam na realizację niektórych misji badawczych?  

Kiedy szacuje się, że moglibyśmy wysłać ludzi na Marsa w celu kolonizacji? 

kiedy można wysłać ludzi na Marsa

Różne organizacje, zarówno publiczne, jak i prywatne, planują wysłać na Marsa pierwsze loty załogowe już przed  około 2031 rokiem. Nie oznacza to jeszcze początku kolonizacji planety, ale stanowi duży krok w jej kierunku.  

Europejska Agencja Kosmiczna przewiduje, że misja wysłania ludzi na Marsa mogłaby zostać uruchomiona około 2033 roku. Rosyjska agencja kosmiczna Roskosmos i Chińska Narodowa Agencja Kosmiczna (CNSA) również podały podobne terminy, a ich misje eksploracji Marsa z udziałem ludzi mają odbyć się na początku lat 30.  

Amerykańska agencja kosmiczna NASA oświadczyła, że jej celem jest wysłanie astronautów na Marsa do końca lat 30.   

Wreszcie Massachusetts Institute of Technology zaproponował plan wysłania czteroosobowej załogi na Marsa w 2031 roku, z dodatkowymi pięcioma astronautami wysyłanymi co roku w celu przetestowania i przygotowania do misji. 

Co musimy wiedzieć o Marsie, zanim będziemy mogli spróbować go skolonizować?

kolonia na Marsie

Zakładając, że będziemy dysponować technologią niezbędną do wysłania ludzi na Marsa, musimy wiedzieć wszystko o lokalnych warunkach, w tym: 

  • atmosferze,
  • temperaturze na powierzchni,
  • ciśnieniu,
  • i czy występują tam podstawowe pierwiastki (takie jak tlen) w ilościach niezbędnych do podtrzymania życia.

Ponadto musimy zrozumieć lokalne środowisko, w tym ukształtowanie terenu oraz występujące poziomy promieniowania, przed którym należy się zabezpieczyć. Musimy także stworzyć technologie, które pomogą nam przetrwać na Marsie, takie jak systemy produkcji żywności i uzdatniania wody. 

Wszystkie informacje niezbędne do odpowiedniego przygotowania misji załogowej na Marsa gromadzone są przez wyspecjalizowane pojazdy i satelity. 

Jakie rodzaje wyspecjalizowanych pojazdów i satelitów są wysyłane w celu zbadania Marsa?  

pojazdy badające Marsa

Wyspecjalizowane łaziki i orbitery są wyposażone w różnorodne instrumenty, takie jak kamery, spektrometry, wiertła i sejsmometry, które zbierają dane o marsjańskim środowisku. 

Jaki rodzaj kodu jest używany w rakietach, łazikach i orbiterach?

 

Typ kodu używany w rakietach, łazikach i orbiterach jest zazwyczaj kombinacją języków programowania niskiego poziomu, takich jak na przykład C, a także języków programowania wyższego poziomu, takich jak Python i MATLAB. 

Języki programowania niskiego poziomu, takie jak C, są używane do zadań wymagających precyzyjnej kontroli nad zasobami sprzętowymi. Języki te pozwalają programistom pisać kod, który bezpośrednio współdziała ze sprzętem pojazdu, takim jak czujniki, silniki i systemy komunikacyjne. Ten poziom kontroli jest niezbędny do zadań takich jak kontrolowanie orientacji, zarządzanie zużyciem energii i nawigacja w kosmosie. 

Języki programowania wyższego poziomu, takie jak Python i MATLAB, są używane do zadań wymagających złożonej analizy danych lub opracowywania algorytmów. Języki te zapewniają programistom potężne narzędzia do analizowania danych z czujników i innych instrumentów na pokładzie pojazdu. Są również wykorzystywane do opracowywania algorytmów do zadań takich jak przetwarzanie obrazu, mapowanie terenu i analiza naukowa. 

Oprócz tych języków programowania do tworzenia kodu często wykorzystywane są specjalistyczne narzędzia programowe. Narzędzia te obejmują oprogramowanie symulacyjne, które umożliwia programistom testowanie ich kodu w środowisku wirtualnym zanim zostanie on przesłany do rzeczywistego pojazdu. Obejmują one również biblioteki oprogramowania, które zapewniają gotowe funkcje do typowych zadań, takich jak analiza danych lub komunikacja ze stacjami naziemnymi. 

Jaka jest rola testów oprogramowania w misjach kosmicznych na Marsa?

Testowanie oprogramowania a misje na Marsa

Testy powinny odgrywać ważną rolę w misjach kosmicznych na Marsa, zapewniając, że wszelkie systemy sterowane oprogramowaniem na misji są niezawodne i wydajne. 

Testowanie oprogramowania polega na przeprowadzeniu symulacji misji, przetestowaniu oprogramowania pod kątem potencjalnych błędów lub błędów oraz upewnieniu się, że oprogramowanie działa poprawnie w każdych warunkach. 

Pozwala to zespołom mieć zaufanie do wydajności systemów i oprogramowania pojazdów, co jest ważne ze względu na ryzyko związane z eksploracją kosmosu. 

Jakiego rodzaju błędy były odpowiedzialne za awarie rakiet, łazików i orbiterów?

jakie błędy były odpowiedzialne za awarie rakiet, łazików i orbiterów

Awarie związane z systemami komputerowymi i oprogramowaniem pokładowym:  

Awarie związane z systemami komputerowymi 

Komputer pokładowy odgrywa znaczącą rolę w sterowaniu podsystemem i komponentami pojazdu. W badaniu “A Study on Mars Probe Failures” usterki związane z systemami komputerowymi stanowiły 6% wszystkich awarii i wynikały albo z nieprawidłowego działania kanału komputera pokładowego, albo z wyczerpania układu obwodów w wyniku wadliwego tranzystora.  

Awarie związane z oprogramowaniem pokładowym 

Tego typu problemy, zgodnie z wynikami badania “A Study on Mars Probe Failures”, odpowiadają za 9% wszystkich awarii i wynikają z wadliwego oprogramowania komputerowego i złego programowania.   

Ile czasu i pieniędzy można zaoszczędzić dzięki lepszemu testowaniu oprogramowania wykorzystywanego w misjach marsjańskich?

nieudane misje na Marsa i opóźnienia projektów

Według szacunków Space.com całkowity koszt nieudanych misji na Marsa do marca 2020 roku wyniósł około 7 miliardów dolarów. 

10 przykładów misji na Marsa i opóźnień projektów spowodowanych błędami oprogramowania

1. Misja Mars Pathfinder w 1996 roku opóźniła się o 9 miesięcy i kosztowała dodatkowe 20 milionów dolarów z powodu błędów oprogramowania związanych z systemem naprowadzania, rozmieszczeniem anten i obsługą pakietów danych.

2. Misja Mars Climate Orbiter w 1998 roku opóźniła się o 2 miesiące i kosztowała dodatkowe 125 milionów dolarów z powodu nieprawidłowych ustawień oprogramowania w jednostce nawigacyjnej.

3. Misja Mars Polar Lander w 1999 roku opóźniła się o 6 miesięcy i kosztowała dodatkowe 15 milionów dolarów z powodu błędów oprogramowania ze sprzecznymi formatami poleceń, powodując zderzenie lądownika z powierzchnią planety zamiast bezpiecznego lądowania.

4. Misja Mars Exploration Rover w 2004 roku opóźniła się o 4 miesiące i kosztowała dodatkowe 19 milionów dolarów z powodu błędów oprogramowania sterującego ramieniem instrumentu łazika.

5. Misja Mars Reconnaissance Orbiter w 2005 roku opóźniła się o 6 miesięcy i kosztowała dodatkowe 10 milionów dolarów z powodu błędów oprogramowania związanych z zarządzaniem pamięcią.

6. Misja Phoenix w 2007 roku opóźniła się o 11 miesięcy i kosztowała dodatkowe 20 milionów dolarów z powodu błędów oprogramowania, które spowodowały problem z synchronizacją manewrów nawigacji i kontroli położenia.

7. Misja Mars Science Laboratory w 2011 roku opóźniła się o 6 miesięcy i kosztowała dodatkowe 14 milionów dolarów z powodu błędów oprogramowania związanych z systemami regulacji termicznej i zasilania.

8. Misja MAVEN w 2013 roku opóźniła się o 6 miesięcy i kosztowała dodatkowe 30 milionów dolarów z powodu problemów z oprogramowaniem silników odrzutowych lądownika.

9. Misja ExoMars w 2016 roku opóźniła się o 9 miesięcy i kosztowała dodatkowe 90 milionów dolarów z powodu problemów z oprogramowaniem systemu kontroli położenia.

10. Misja InSight w 2018 roku opóźniła się o 18 miesięcy i kosztowała dodatkowe 150 milionów dolarów z powodu błędów oprogramowania w interfejsie komunikacyjnym między modułem ładunku a statkiem kosmicznym. 

Jak w SOFTIQ weryfikujemy jakość dzięki testom oprogramowania?

jak weryfikujemy jakość oprogramowania

Testowanie poprawności działania systemu na każdym etapie cyklu projektowego jest koniecznością. Dzięki odpowiednio dobranym i przeprowadzonym testom minimalizujemy ryzyko wystąpienia błędów i gwarantujemy najwyższą jakość produktu.  

Nasi specjaliści posiadają kompetencje w zakresie: 

  • doboru i wdrażania narzędzi wspomagających proces testowania,  
  • opracowywania scenariuszy testowych,  
  • przeprowadzenia każdego rodzaju testu, w zależności od potrzeb,  
  • oceny jakości oraz optymalizacji procesów testowych.  

W zależności od specyfiki projektu oraz badanego elementu realizujemy testy zarówno w formie manualnej, jak też automatycznej.  

Jakie są najistotniejsze różnice pomiędzy testami manualnymi a automatycznymi?  

 Testy manualne Testy automatyczne 
Wielkość projektu Optymalne przy mniejszych projektach z ograniczonym budżetem. Sprawdzają się dobrze w średnich i dużych projektach, kiedy wykonanie testów manualnych jest niemożliwe lub zbyt kosztowne. 
Czas realizacji Czasochłonne ze względu na ręczne wykonanie, za każdym razem od nowa. Przygotowanie do automatyzacji wymaga czasu, ale mogą być wykorzystane wielokrotnie, a sam test trwa o wiele krócej niż w formie manualnej. 
Wykrywanie błędów Umożliwiają ocenę podatności systemu na nietypowe zachowania, ale niosą ryzyko przeoczenia pomyłek na skutek nieuwagi bądź przemęczenia testera. Pozwalają na wyeliminowanie błędu ludzkiego, ale nie są tak elastyczne jak testy manualne – wykrywają tylko obecność zmiennych wprowadzonych do oprogramowania przed wykonaniem testu.  
Koszt Jednostkowo tańsze, jednak koszty ponoszone są za każdym razem, gdy wykonywane są testy. Wykorzystanie narzędzi oraz opracowanie automatyzacji testu wiąże się z większymi nakładami, ale zwracają się one w dłuższej perspektywie, dzięki możliwości wielokrotnego przeprowadzenia już opracowanego testu.  
Aspekt UI / UX Pozwalają na ocenę interfejsu użytkownika oraz jakości interakcji.  Nie mają zastosowania w ocenie User Experience oraz User Interface. 
Reużywalność Za każdym razem przeprowadzane od nowa. Raz przygotowany test może być wykorzystywany nieskończenie wiele razy.  
Nakład pracy Czasochłonne ze względu na konieczność przejścia całego scenariusza oraz opracowania podsumowania.  Opracowanie testu jest czasochłonne, ale przeprowadzenie wymaga małego zaangażowania testera. 
Raportowanie  Wymaga dodatkowej pracy testera, ale pozwala na przedstawienie wniosków w sposób zindywidualizowany, dostosowany do potrzeb Klienta.  Raport generowany jest automatycznie w miarę postępu testu, jednak uwzględnia tylko wcześniej zdefiniowane aspekty.  

Do każdego problemu podchodzimy indywidualnie i dobieramy najbardziej optymalną formę testu, mając na uwadze najwyższą jakość oprogramowania oraz wymagania Klienta.   

Projektujemy i przeprowadzamy testy dla wszystkich rodzajów oprogramowania: webowego, mobilnego, desktopowego i rozwiązań wieloplatformowych.  

W realizowanych i wspieranych projektach stosujemy między innymi testowanie: 

  • jednostkowe,
  • integracyjne,
  • systemowe,
  • strukturalne,
  • wydajnościowe,
  • regresji,
  • akceptacyjne,
  • eksploracyjne,
  • bezpieczeństwa
  • oraz wiele innych, odpowiednio dobranych do produktu, w zależności od jego specyfiki.

This post is also available in: English (Angielski)