Skip to main content
Oficjalna strona internetowa Unii EuropejskiejOficjalna strona internetowa UE
Przejdź do strony domowej Komisji Europejskiej (odnośnik otworzy się w nowym oknie)
polski polski
CORDIS - Wyniki badań wspieranych przez UE
CORDIS
Zawartość zarchiwizowana w dniu 2024-06-18
Liberating Programming

Article Category

Article available in the following languages:

Nowe podejście do inżynierii oprogramowania sposobem na rozwikłanie złożoności projektowania systemu

Zespół badaczy, wspieranych ze środków UE, działających przy Instytucie Nauki Weizmanna w Izraelu, z powodzeniem opracował nowe podejście do inżynierii oprogramowania, które przybliża tworzenie oprogramowania do tego, w jaki sposób ludzie zwykle wyobrażają sobie zachowanie systemów złożonych.

Zespół naukowców biorących udział w projekcie LIBPR (Liberating programming), zaintrygowany potrzebą uproszczenia trudnego i kosztownego procesu tworzenia oprogramowania, zaobserwował, że profesjonaliści zwykle potrafią dokładnie i zrozumiale opisać zachowanie swoich systemów (przed, w trakcie i po ich opracowaniu), niezależnie od tego, czy posiadają umiejętności programowania komputerowego. Mając to na uwadze, zespół zajął się rozwiązaniem problemu, ponownie analizując i radykalnie przekształcając przyjęte schematy na temat tego, jak powinien wyglądać dobrze zaprojektowany system programowy. Na podstawie początkowego wynalazku w postaci programowania opartego na scenariuszu (SBP) i jego wizualnym języku wykresów bieżących sekwencji (LSC), zespół pokazał, w jaki sposób skomplikowane oprogramowanie można zestroić z opisami behawioralnymi, które ukazują się w specyfikacjach wymagań i instrukcjach użytkownika. W porównaniu do powszechnego podejścia projektowego, w ramach którego skomplikowane sekwencje seryjne poleceń (programowych) muszą być starannie zaprojektowane, aby kierować zachowaniem systemu w sposób spełniający wymagania i respektujący ograniczenia, w programowaniu opartym na scenariuszu same wymagania są w pełni wykonalne, przez co uwalniają programowanie od wielu konwencjonalnych ograniczeń. Wymagania są zakodowane w sposób, który umożliwia komputerowi kontrolowanie każdego z nich bezpośrednio na każdym kroku wykonania, oraz określanie kolejnego kroku w oparciu o to, co musi i może być zrobione, a czego na danym etapie nie wolno (w ten sposób zachowanie zakazane staje się częścią programu). Wymagania są zatem przekształcane, i w znacznym stopniu zastępują, tradycyjny program. Poza tym, że podejście to oferuje rewolucyjne sposoby na strukturyzowanie i wykonywanie programów, udostępnia ono nowe naturalne metody realizacji samej czynności programowania: przy pomocy symulatora lub interfejsu graficznego systemu wykonawca wyzwala ("odgrywa") działania, które użytkownik lub środowisko mogą zaprezentować systemowi, po których następują żądane reakcje systemu. Zarejestrowana sekwencja behawioralna jest następnie automatycznie przekształcana w odpowiedni scenariusz. Zestawienie programu ze sposobem, w jaki ludzie myślą o danym systemie, także umożliwia programowanie w (kontrolowanym) naturalnym języku. Przykładowo zdanie, podlegające ograniczającym regułom gramatycznym, "po naciśnięciu czerwonego przycisku przez użytkownika, włączy się światło", jest automatycznie rozbierane gramatycznie i przekładane w formalny wykonalny scenariusz programowy. Zbiór takich zdań staje się zatem ostateczną wersją systemu. Główną korzyścią wynikającą z takiego podejścia jest możliwość zakodowania każdego nowego wymagania przyrostowo, przy niewielkich zmianach lub bez zmian wobec istniejących specyfikacji, oraz użycie specjalistycznych narzędzi do zrozumienia, jak zachowa się system, gdy wszystkie scenariusze zostaną odegrane razem jako system. Owocem projektu były ponadto zaawansowane algorytmy i narzędzia oparte na takich metodach, jak sprawdzanie modelowe, rozwiązywanie teorii SMT i synteza programowa, służące weryfikacji poprawności programów opartych na scenariuszach, oraz automatycznej ich naprawie w razie odnalezienia niepożądanych zachowań lub sprzecznych scenariuszy. Prace zespołu objęły także techniki weryfikacji kompozycyjnej, w ramach której system jest weryfikowany poprzez sprawdzanie jego scenariuszy składowych. Podejście oparte na scenariuszu zostało w ramach projektu znacznie rozszerzone, ponad wizualny język LSC, obejmując także implementacje w standardowych językach komputerowych, jak Java, C, C++, C#, Erlang i JavaScript. Odpowiedniość SBP zademonstrowano na przykładzie rozmaitych zastosowań — w tym automatyce przemysłowej, sterowaniu motoryzacyjnym i lotniczym oraz w modelach biologicznych.

Znajdź inne artykuły w tej samej dziedzinie zastosowania