Stosowanie narzędzi CI/CD jest coraz bardziej powszechne w rozwoju systemów krytycznych. Te same narzędzia mogą być też stosowane do automatyzacji tworzenia i utrzymania assurance case w zakresie struktury argumentacji i dowodów oraz weryfikacji i aktualizacji danych o statusie.
Proces CI/CD a assurance case
Zacznijmy od pojęcia procesów automatyzacji CI/CD (Continuous Integration i Continuous Delivery/Deployment) i zobaczmy, jak to może być powiązane z assurance case dla rozwijanego systemu. Proces CI/CD zapewnia automatyczne wytworzenie, testowanie i wdrożenie produktu, gdzie główną częścią produktu jest oprogramowanie. Czy dane stosowane w procesie CI/CD są użyteczne dla assurance case danego systemu? Niewątpliwie tak, to obejmuje przynajmniej informacji o konfiguracji systemu oraz wyniki testów automatycznych, co ma wpływ na strukturę argumentacji oraz stosowane dowody. Dodatkową wartość dają wyniki testów, które mogą służyć do aktualizacji informacji o statusie argumentacji.
Proces CI/CD może też obejmować wszystkie informacje potrzebne dla budowy safety / security case dla danej wersji systemu. Głównymi artefaktami dla security case będą tu modele zagrożeń (HARA, STRIDE), SBOM (Software Bill of Materials), raporty SAST / DAST / IAST. Dla safety będą to modele hazardów, HAZOP, FMEA, FTA. Gdy proces CI/CD zapewnia zgodność wszystkich artefaktów dla danej wersji systemu, otrzymujemy spójny zestaw danych i dowodów do wykorzystania w assurance case. Automatyzacja zapewnia, że przy wytworzeniu nowej wersji systemu możemy otrzymać wszystkie dane do utworzenia argumentacji, a jednym z końcowych kroków procesu CI/CD może być właśnie wytworzenie samego assurance case.
Podejście jest skuteczne, gdy cały proces CI/CD jest od początku zaprojektowany, aby zapewnić wszystkie informacje potrzebne dla zasilenia assurance case. Umożliwia to osiągnięcie Safety/Security Case driven development proces, gdzie cały proces rozwoju systemu jest ukierunkowany na dostarczenie argumentacji oraz dowodów potrzebnych dla certyfikacji systemu.
Proces generowania argumentacji
Technicznie proces integracji assurance case w procesie CI/CD może obejmować cztery działania pokazane na diagramie poniżej.
Pierwszy krok dotyczy szablonu argumentacji. Nawet jeżeli używasz prostych skryptów do generowania argumentacji, to musisz je zweryfikować przed zastosowaniem. My stosujemy szablony, co daje możliwość użycia uniwersalnego narzędzia generowania argumentacji. Dobrze jest przygotować metamodel systemu na potrzeby argumentacji, dzięki czemu można w pierwszym kroku wykonać weryfikację poprawności szablonu oraz zgodność z metamodelem.
Drugi krok jest kluczowy dla pozyskania danych do budowy argumentacji. Dane w procesie CI/CD są zwykle umieszczona w repozytorium GIT z zastosowaniem różnych formatów danych. Jeżeli plik z repozytorium za być użyty wprost jako dowód w argumentacji, to może być zastosowana referencja do danego pliku, ale w wielu przypadkach potrzebne jest wydobycie danych potrzebnych dla argumentacji. Generator argumentacji potrzebuje danych wejściowych stanowiących spójną ontologię zgodnie z metamodelem danych systemu. Niektóre dane mogą być wprost dostępne, ale często potrzebne jest parsowanie AST dla wydobycia właściwych danych. W wyniku kroku mamy dane dotyczące danej wersji systemu w formacie modelu gotowego do zastosowania do generowania argumentacji.
Trzeci krok jest głównych krokiem generowania argumentacji dla modelu danych systemu zgodnie z szablonem assurance case. Zgodnie z warunkami i parametrami zdefiniowanymi w szablonie tworzona jest argumentacja dla danej wersji systemu z odwołaniami do właściwych dowodów. Argumentacja jest zapisywana w formacie JSON zgodnym z metamodelem OMG SACM i może być dalej poddawana przetwarzaniu.
Ostatnim, czwartym krokiem, jest weryfikacja argumentacji. Obejmuje to kontrolę kompletności, spójności oraz innych warunków poprawności. W wyniku, oprócz samej argumentacji, dostajemy raport jej weryfikacji.
Kolejne działania dotyczące wygenerowanej argumentacji są już realizowane po procesem CI/CD. Na przykład narzędzie PREMIS jest stosowane dla wizualizacji argumentacji w diagramach GSN oraz generowania raportów. Można też w PREMIS łączyć wygenerowane moduły argumentacji z innymi argumentacjami, które są tworzone ręcznie.
Jeżeli zagadnienia automatyzacji assurance case są dla Ciebie interesujące lub masz pytania, napisz do nas!