Prezentacja artykułu z konferencji Infobazy 2014, prezentującego prace realizowane w projekcie MARKOS. Celem projektu MARKOS jest opracowanie koncepcji i rozwój sieciowej usługi umożliwiającej wyszukanie w globalnej przestrzeni projektów Open Source komponentów, które w sposób optymalny spełniają kryteria wyspecyfikowane przez użytkownika systemu. Dzięki opracowanemu systemowi twórcy i użytkownicy otwartego oprogramowania (ang. Open Source Software, OSS) będą mogli w łatwy i automatyczny sposób analizować zależności pomiędzy użytymi komponentami OSS, biorąc pod uwagę funkcjonalne, strukturalne i licencyjne aspekty kodu źródłowego.
Wynikiem projektu będzie prototyp usługi uruchomionej w Internecie przez partnerów projektu i udostępnionej poprzez zestaw interaktywnych aplikacji, zarówno przez graficzny interfejs użytkownika, jak i semantyczny punkt dostępu do danych w modelu linked data. Wspomniana powyżej usługa będzie realizowana za pomocą zestawu wewnętrznych komponentów systemu MARKOS, których zadaniem będzie wielokontekstowa analiza informacji dostępnych w sieci oraz ich przetwarzanie i przechowywanie w wewnętrznym repozytorium semantycznym systemu.
System MARKOS będzie oferował użytkownikom możliwość semantycznego przeszukiwania i przeglądania komponentów i bibliotek oraz nawigowania po strukturze kodu na wysokim poziomie abstrakcji. Ułatwi to, w szczególności architektom i analitykom, wyszukanie komponentu, który spełnia funkcjonalne, techniczne i prawne wymagania systemu. Z kolei programistom pozwoli lepiej zrozumieć dostępne interfejsy i wewnętrzne zależności oprogramowania. Dodatkowo system MARKOS będzie brał pod uwagę również aspekty integracji kodu, pokazując i wykorzystując zależności i związki między komponentami oprogramowania z różnych projektów. Dzięki temu w systemie MARKOS dostępny będzie zintegrowany globalny widok na istniejące oprogramowanie Open Source. MARKOS wykorzysta również zależności między komponentami do bardziej efektywnej i trafnej analizy kompatybilności licencji, dostarczając podstaw argumentacji prawnej i rozwiązywania konfliktów. W celu ułatwienia współpracy między różnymi projektami, MARKOS dostarczy też narzędzi umożliwiających powiadamianie o istotnych zmianach w komponentach pomiędzy zależnymi projektami. Oczekuje się w związku z powyższym, że system MARKOS ze swoją funkcjonalnością w kontekście globalnym ułatwi rozwój oprogramowania w oparciu o paradygmat Open Source wnosząc swój wkład w globalną społeczność.
1. MARKOS – semantyczne repozytorium
otwartego oprogramowania
Alicja Laskowska, Paweł Kędziora, Marcin Krystek,
Bartosz Lewandowski, Cezary Mazurek, Juliusz Pukacki
Konferencja INFOBAZY 2014, Gdańsk-Sopot, 8-10 września 2014r.
2. Otwarte oprogramowanie (open source, OSS, FLOSS) –
pozycja, znaczenie
The Future of Open Source – 2014,
http://www.slideshare.net/blackducksoftware/2014-future-of-open-source-survey-results
3. Otwarte oprogramowanie - popularność
95%
By 2016, 95% of IT organizations will leverage open-source software in their mission-critical IT
portfolios.
Gartner, 2012
4. Reużywalność (re-use)
• Możliwość wielokrotnego wykorzystania gotowych i
sprawdzonych komponentów
• Czas implementacji vs. jakość tworzonego kodu
• Różne poziomy granularności
– Fragmenty kodu,
– Klasy, biblioteki
– Całe projekty
• „Stymulatory”
– Wyszukiwanie kodu
– Analiza struktury kodu i zależności
– Analiza licencji
6. Wyzwanie
• Brak globalnego widoku pokazującego strukturę kodu,
zależności strukturalne i licencyjne
• Środowiska programistyczne (IDEs)
– Analiza struktury oprogramowania
– Konieczność importu wszystkich analizowanych
komponentów
– Brak analizy licencji
– Brak bardziej złożonych analiz
• Repozytoria kodu (forges), wyszukiwarki
– Wsparcie dla wyszukiwania, analizy aktywności w
projektach, prezentacja metryk
– Brak analizy struktury kodu
– Prosta informacja o licencjach
– Brak analizy powiązań pomiędzy projektami
7. MARKOS - wizja
• Usługa wspomagająca programistów / architektów / kierowników projektów / prawników
• Semantyczne repozytorium / automatyczna usługa sieciowa
• Źródła: heterogeniczne i rozproszone zasoby informacyjne
• Zintegrowany widok na dane projektowe i kod źródłowy
– Wyszukiwanie i analiza kodu
– Struktura kodu, zależności, licencje
– Wiele języków programowania
• Interfejs „dla ludzi i maszyn”
– Web
– LinkedData
• Pakiet OSS
8. Architektura systemu MARKOS
• Pozyskiwanie metadanych projektów OSS
• Analiza oprogramowania i licencji
• Przechowywanie danych w semantycznym
repozytorium
• Interfejs „dla ludzi i maszyn”
9. Repozytorium semantyczne
• Centralne repozytorium systemu MARKOS
• Ontologia
– Dedykowana ontologia na bazie m.in. DOAP, QUALIPSO
– model hierarchiczno-modułowy
• podstawowe koncepty: encja (Entity), kontener (Container)
• koncepty wspólne dla języków programowania: program (Program), plik źródłowy
(SourceFile), biblioteka (Library)
• koncepty specyficzne dla danego języka oprogramowania
• Interfejsy
– Java API (SPARQL -> obiekty/kolekcje obiektów Java)
– LinkedData (RDF)
– Niskopoziomowe API (trójki)
11. Podsumowanie
• Inspiracja – Integracja - Implementacja
• MARKOS - semantyczne repozytorium kodu źródłowego oraz skojarzona z nim automatyczna
usługa sieciowa, dostarczająca zintegrowany widok na dane projektowe i kod źródłowy,
pochodzące z heterogenicznych i rozproszonych zasobów informacyjnych
• Repozytorium zaindeksowanych projektów OSS
– Aktualnie ponad 600 projektów zaindeksowanych
– Uzupełnienie innych otwartych repozytoriów dot. OSS, np. FLOSSMETRICS
• Uniknięcie tzw. długu technologicznego (technical debt)
• Pakiet OSS
– Budowa społeczności
– Dalszy rozwój