Skip to main content
European Commission logo
polski polski
CORDIS - Wyniki badań wspieranych przez UE
CORDIS
CORDIS Web 30th anniversary CORDIS Web 30th anniversary

Article Category

Zawartość zarchiwizowana w dniu 2024-04-23

Article available in the following languages:

Najważniejsze wiadomości - W prostocie siła: ograniczanie złożoności oprogramowania

"Ludzie niemądrzy ignorują złożoność. Pragmatycy cierpią z jej powodu. Niektórym udaje się jej uniknąć. Natomiast geniusze ją eliminują". Są to słowa pioniera informatyki, Alana Perlisa, który prawdopodobnie byłby zdumiony złożonością współczesnych systemów informatycznych. Chociaż naukowcy uczestniczący w finansowanej przez UE inicjatywie prawdopodobnie nie nazwaliby siebie geniuszami, zmniejszają oni złożoność systemów informatycznych poprzez opracowywanie alternatywnego podejścia do inżynierii oprogramowania, w celu stworzenia bezpieczniejszych, tańszych i bardziej niezawodnych systemów.

Oprogramowanie jest nie tylko coraz bardziej złożone, ale także w coraz większym stopniu wszechobecne: obecnie można je znaleźć w samochodach, licznikach energii elektrycznej, elektrowniach, samolotach, pociągach, bankach, a także w szpitalach. Programy komputerowe sterują także pracą systemów krytycznych, w których pojawienie się błędu może mieć fatalne skutki. Zwiększone ryzyko awarii nie jest jednak jedynym problemem charakteryzującym coraz bardziej złożone systemy - złożoność podnosi także koszty: wyszukiwanie błędów w kodzie źródłowym generuje obecnie około połowę kosztów cyklu przedsprzedażowego oraz nawet 70 % kosztów powstających po wypuszczeniu oprogramowania na rynek. Źródłem problemu jest to, że tradycyjne procesy z dziedziny inżynierii oprogramowania są źle dostosowane do ogromnej złożoności i do zróżnicowania współczesnych systemów informatycznych. "Wystarczy spojrzeć na nowoczesny samochód, w którym pracują setki komponentów informatycznych, połączonych w jedną całość, sterujące wszystkim, począwszy od jakości dźwięku, aż po systemy utrzymywania stałej prędkości jazdy. Wraz z wdrażaniem coraz większej liczby komponentów i funkcji w obrębie poszczególnych systemów, inżynierowie tracą kontrolę nad złożonością i obawiają się, że nie będą mogli zapewnić odpowiedniego poziomu jakości ostatecznego rozwiązania", tłumaczy Alexander Romanovsky, profesor informatyki na Uniwersytecie w Newcastle (Wielka Brytania). "Z powyższą złożonością mamy do czynienia praktycznie wszędzie i w każdym urządzeniu: producenci samochodów, pociągów, samolotów itd. poświęcają dużą ilość swego czasu, być może nawet połowę, na produkcję oprogramowania: można powiedzieć, że w każdej gałęzi przemysłu produkuje się oprogramowanie". Pytanie brzmi, czy przedstawiciele przemysłu mogą znaleźć lepszą metodę produkcji oprogramowania, zwłaszcza przeznaczonego dla systemów krytycznych? Naukowcy zaangażowani w koordynowany przez prof. Romanovsky'ego projekt o nazwie "Opracowywanie zaawansowanych metod z dziedziny inżynierii systemów, w celu zwiększenia produktywności i niezawodności" ('Industrial deployment of advanced system engineering methods for high productivity and dependability' - Deploy), który został wsparty przez Komisję Europejską Kwotą 12,4 milionów euro wierzą, że taka metoda istnieje. Obrane przez nich podejście bazuje na formalnych metodach inżynierskich, które, w dużej mierze dzięki wysiłkom członków konsorcjum, stają się coraz bardziej popularne wśród przedsiębiorców i inżynierów, gdyż umożliwiają bardziej wydajne i bardziej praktyczne tworzenie złożonych systemów informatycznych. Procesy opracowane przez członków konsorcjum Deploy zastosowano już w praktyce, podczas tworzenia systemów krytycznych, przeznaczonych dla metra oraz transportu kolejowego w obrębie lotnisk. W przeciwieństwie do tradycyjnych metod inżynierii oprogramowania, podejście formalne bazuje na modelowaniu matematycznym oraz na analizie, wspierając wnioskowanie na różnych poziomach abstrakcji, co umożliwia systematyczne podejście do projektowania, począwszy od określenia wymagań, poprzez modelowanie architektury oraz szczegółowe projektowanie, aż po implementację, testy i wdrożenia. Uczestnicy projektu Deploy rozwijali metodę formalną 'Event-B', umożliwiającą modelowanie i analizę systemów, opracowaną pierwotnie w ramach finansowanego przez UE projektu o nazwie "Rygorystyczne, otwarte środowisko tworzenia złożonych systemów" ('Rigorous open development environment for complex systems' - Rodin) oraz korzystali ze zinterowanego środowiska programistycznego o nazwie "Rodin tools". Zachęcanie inżynierów do myślenia w nowy sposób "Dla inżynierów jest to fundamentalna zmiana. Zwykle prace nad projektem rozpoczynają oni od stworzenia pierwszej wersji oprogramowania, a następnie wzbogacania jej o nowe funkcje, rozbudowywanie jej. Większość żmudnych prac, takich jak implementacja, weryfikacja i testowanie, wykonywana jest na końcu. Podejście formalne jest zgoła odwrotne: ciężką pracę wykonuje się na początku, operując abstrakcjami reprezentującymi wymagania systemowe, a następnie stosuje się rygorystyczny, logiczny i matematyczny proces programistyczny", tłumaczy prof. Romanovsky. Zaletą powyższej metody jest to, że błędy wykrywane są na wczesnym etapie tworzenia aplikacji, a rygorystyczne i logiczne podejście pozwala utrzymać stopień złożoności w uprzednio określonych granicach, co zmniejsza ilość testów, które należy przeprowadzić pod koniec prac projektowych. Efektem końcowym są solidniejsze i bardziej niezawodne systemy, które potencjalnie mogą kosztować znacznie mniej, niż rozwiązania powstałe przy użyciu tradycyjnych metod inżynierskich. Pozornie jest to idealne rozwiązanie, jednak istnieje jeden kluczowy problem: inżynierowie zwykle nie są matematykami. "Metody formalne wymagają wiedzy matematycznej, której nie posiada większość inżynierów, przyzwyczajonych do pracy w tradycyjny sposób. Co więcej, ponieważ proces formalny jest całkowicie odmienny, niż metoda tradycyjna, wymaga innego sposobu myślenia. Trudno jest także przekonać przedsiębiorstwo, które w określony sposób wytwarza oprogramowania od 10 czy 30 lat, że niezbędne jest wprowadzenie zmian", zauważa prof. Romanovsky. Uczestnicy projektu Deploy, który stanowi prawdopodobnie największą, jak dotychczas, inicjatywę z zakresu zastosowania formalnych metod inżynierii oprogramowania w przemyśle, zrealizowali szereg prac, których celem było odmienienie powyższej sytuacji. Przykładowo, we współpracy z partnerem projektu, firmą SAP, członkowie inicjatywy Deploy wdrożyli proces formalny w sposób transparentny, dzięki czemu inżynierowie mogli nadal korzystać z odpowiednich dla danego zastosowania języków programowania, tworząc systemy krytyczne. Następnie powyższy kod źródłowy być automatycznie konwertowany do kodu Event-B, przy wsparciu ze strony specjalistów z zakresu inżynierii formalnej. Natomiast wspólnie z inżynieriami z firmy Siemens, którzy mieli duże doświadczenie w dziedzinie modelowania formalnego, system Event-B zastosowano do stworzenia oprogramowania, które jest obecnie wykorzystywane w metrach w Barcelonie i Paryżu, a także w innych lokalizacjach, do sterowania sygnalizacją kolejową. Wspólnie z firmą Bosch powyższe podejście wdrożono podczas opracowywania systemów utrzymywania stałej prędkości jazdy oraz systemów start-stop, przeznaczonych dla samochodów. Z kolei firma Space Systems Finland, będąca partnerem projektu, zastosowała proces Deploy podczas prac nad sondą kosmiczną BepiColombo oraz nad systemami kontrolowania pułapu i orbity, realizowanych przez Europejską Agencją Kosmiczną. Tymczasem francuski partner projektu, firma Systerel, korzysta z rozwiązania Event-B podczas tworzenia szerokiej gamy systemów kolejowych i lotniczych. Uczestnicy inicjatywy Deploy stworzyli dwa przedsiębiorstwa, Rodin Tools oraz Formal Mind, w celu dokonania komercjalizacji opracowanych przez siebie narzędzi oraz wdrożenia ich na większą skalę. Podjęto również prace kontynuacyjne, w ramach finansowanego przez UE projektu o nazwie "Projektowanie zaawansowanego środowiska testowego, umożliwiającego cybernetyczno-fizyczną inżynierię systemów" ('Advanced design and verification environment for cyber-physical system engineering' - Advance). Udane wdrożenie i wykorzystanie formalnych metod inżynierskich w obrębie przedsiębiorstw zaangażowanych w inicjatywę Deploy stanowi doskonały przykład strategii, które mogą zastosować inne firmy, poszukując sposobów radzenia sobie ze złożonością. "Z pewnością dajemy przedsiębiorstwom impuls do przemyśleń na temat stosowanych obecnie metod inżynierskich, a także potencjalnych zalet płynących ze stosowania metod formalnych, w specyficznych sytuacjach", zauważa prof. Romanovsky. Narzędzia, obszerna dokumentacja systemu Event-B oraz wsparcie oferowane przez uczestników inicjatywy Deploy również powinny pomóc przekonać inżynierów, że warto zaangażować się w projekty z dziedziny inżynierii formalnej. "W perspektywie długoterminowej systemy informatyczne będą coraz bardziej złożone. Nam udało się dowieść, że metody formalne stanowią jeden ze sposobów stawiania czoła temu wyzwaniu", twierdzi prof. Romanovsky. Projekt Deploy uzyskał wsparcie finansowe na badania naukowe w ramach Siódmego Programu Ramowego UE (7PR). Odnośniki do projektów na stronie CORDIS: - informacje na temat 7PR w bazie danych CORDIS - informacje na temat projektu Deploy w bazie danych CORDIS Odnośnik do strony internetowej projektu: - strona internetowa projektu "Opracowywanie zaawansowanych metod z dziedziny inżynierii systemów, w celu zwiększenia produktywności i niezawodności" - 'Industrial deployment of advanced system engineering methods for high productivity and dependability' Pozostałe odnośniki: - strona internetowa Agendy Cyfrowej Komisji Europejskiej