AdaVirtus

 
  • Increase font size
  • Default font size
  • Decrease font size

Wprowadzenie

Celem niniejszej broszury jest pokazanie w jaki sposób Ada 2005 skupia się na zaspokajaniu potrzeb projektantów i implementatorów pewnego i bezpiecznego programowania, Dyskusja ukaże również te aspekty języka Ada, które czynią go idealnym w obszarze aplikacji safety-criticalsecurity-critical, a ponadto które upraszczają projektowanie solidnego i niezawodnego oprogramowania w innych obszarach.

Świat staje się coraz bardziej skupiony zarówno na pewności jak i bezpieczeństwie. Ponadto, w dzisiejszych czasach oprogramowanie przeniknęło we wszystkie dziedziny życia społecznego. Zatem bardzo ważnym jest, aby oprogramowanie to, powiązane z różnymi systemami, dla których pewność i bezpieczeństwo są głównymi atrybutami, było właśnie pewne i bezpieczne.

Mamy długą tradycję związaną z bezpieczeństwem, począwszy od sygnalizacji kolejowej, a skończywszy na lotnictwie. Żywotne systemy informatyczne takie na przykład jak sterujące nawigacją i lądowaniem samolotu muszą spełniać wymagania precyzyjnie ustalone certyfikatami.

Ostatnio zaś, z uwagi na wzrastającą aktywność terrorystyczną, zwiększa się zainteresowanie bezpieczeństwem w systemach bankowych i telekomunikacyjnych.

Pewność i bezpieczeństwo są nierozerwalnie powiązane ze sobą. Interesujące jest scharakteryzowanie różnic tych pojęć:

  • pewność - oprogramowanie nie może szkodzić otoczeniu,
  • bezpieczeństwo - otoczenie nie może zaszkodzić oprogramowaniu.

Tak więc system safety-critical to taki, w którym program musi być prawidłowy, w przeciwnym wypadku może niewłaściwie zmienić stan jakiegoś urządzenia, np. płatu samolotu, czy sygnalizacji kolejowej, co prowadziłoby do poważnych konsekwencji.

Natomiast system security-critical to taki, w którym niemożliwe jest wprowadzenie nieprawidłowych czy złośliwych danych, które mogłyby spowodować zaburzenie integralności systemu, np. mechanizmu kontroli haseł i kradzież informacji związanych z ubezpieczeniami.

Kluczem w zapobieganiu obydwu rodzajów problemów jest fakt, że oprogramowanie musi być prawidłowe w aspektach oddziałujących na integralność systemów. Pod pojęciem ,,prawidłowe'' rozumiemy, że oprogramowanie spełnia wymagania swej specyfikacji. Oczywiście, jeśli specyfikacja w jakiś sposób jest niepełna lub sama w sobie nieprawidłowa, w konsekwencji system taki będzie bezradny. Uchwycenie wszystkich wymagań jest bardzo trudnym zadaniem. Bardzo dużo uwagi tym zagadnieniom poświęca społeczność promująca metodologię lean software development.

Jednym z trendów drugiej połowy dwudziestego wieku to powszechna troska sprawami wolności. Lecz są dwa aspekty wolności. Możliwość czynienia przez jednych czego się tylko zachce pozostaje w konflikcie z prawami do ochrony w przypadku innych. Może A popiera wolność palenia tytoniu w pubie, podczas gdy B chciałby takiego miejsca wolnego od dymu. Troska o zdrowie zmienia środek ciężkości pomiędzy tymi wolnościami. Może wiek dwudziesty pierwszy zmieni znaczenie wolności z ,,wolność do'' na ,,wolność od''.

W przypadku oprogramowania, języki Ada i C mają różne nastawienie do problemu wolności. Ada wprowadza ograniczenia i kontrole, czego celem jest uczynienie twórcy wolnym od błędów. Natomiast język C daję programiście dużo więcej wolności, co z kolei umożliwia popełnianie błędów.

Jedną z historycznych już zasad w języku C to ,,wierzyć programiście''. Byłoby to w porządku, gdyby nie fakt, że programiści - jak wszyscy ludzie - bywają słabi i omylni. Doświadczenie pokazuje, że obojętnie jakich technik użyjemy, ciężko jest napisać ,,prawidłowy'' program. Dobrym rozwiązaniem jest wykorzystywanie narzędzi wspomagających wyszukiwanie błędów oraz zapobiegających ich powstawaniu. Język Ada został specjalnie zaprojektowany pod tym kątem. Na dzień dzisiejszy mamy trzy wersje Ady: Ada 83, Ada 95 i~Ada 2005.

Przeznaczeniem tej broszury jest wyjaśnienie w jaki sposób Ada 2005 może pomóc w budowie niezawodnego oprogramowania poprzez pokazanie pewnych cech tego języka. Jest nadzieja, że będzie to interesujące dla programistów i menedżerów wszystkich stopni.

Należy podkreślić, że dyskusja nie wyczerpuje tematu. Każdy rozdział omawia konkretny temat pod hasłem Bezpieczny X, gdzie Bezpieczny jest skrótem myślowym obejmującym zarówno pewność jak i bezpieczeństwo. W przypadku szczególnie wymagających systemów skutecznym rozwiązaniem może być wykorzystanie języka Spark. Informacje na ten temat znajdziemy w rozdziale 11.

Temat, z którym język Ada pozostaje w związku synergicznym to metodologia lean software development. Niestety, brak miejsca w niniejszej broszurze na omówienie tego zagadnienia. Zainteresowanych zachęcam do zaznajomienia się z tą metodologią.

Wraz z wejściem w XXI wiek możemy obserwować jak oprogramowanie staje się coraz bardziej wszechobecne. Byłoby miło, gdyby oprogramowanie np. samochodów było projektowane z tą samą uwagą, co oprogramowanie samolotów. Ale nie jest tak dobrze. Ostatnio moja żona była w sytuacji, gdy jej samochód wyświetlił dwie ikony informacyjne. Jedna mówiła ,,zatrzymaj się natychmiast'', druga - ,,jedź do najbliższego serwisu''. Inna anegdota związana z samochodami mówi, że gdy kierowca próbował wybrać w odbiorniku radiowym kanał 5, jedyne co zauważył to to, że samochód zmienił bieg na 5! Na szczęście nie próbował wciskać przycisku ,,Powtórz''.

Do pełniejszych opisów języka Ada 2005, języka Spark, metodologii lean software development oraz artykułów związanych z poszczególnymi zagadnieniami zaprowadzi Cię bibliografia.

Rozdział 1: Bezpieczna składnia
Tekst oryginalny w języku angielskim - pdf2
Zmieniony: Czwartek, 25 Marzec 2010 11:00  

Dodaj swój komentarz

Imię:
Temat:
Komentarz: