Skip to content

kino3/ASaC

Repository files navigation

ASaC -- ASsurance as Code --

Introduction

  • This repository contains everything related to the new concept "Assurance as Code" (abbriviated ASaC) and its implementation project.
    • The aim of this project is to develop a programming environment in which non-specialists can easily develop assurance cases, like "IaC" (Infrastracture as Code).

Overview/Motivation

Needs for easy environment on develpoing assurance cases

  • Assurance case is very good tool for improving system/software quality. However, the cost for developing assurance case is still very high.
    • The solution to this problem is to develop an environment in which programmers can freely write assurance cases like program code.

Usability Assurance

  • For starters, we limited the assurance target properties to "usability".

Ideas for Architecture

  1. Use TypeScript. Develop assurance case DSL inside TypeScript
    • Internal DSL allows us to enjoy the good features of existing IDEs
  2. Integrate existing Testing Framework such as Jest, Puppeteer
    • Test result directly provide the "evidence" part of assurance cases
  3. For visualisation, use existing framework like mermaid.js
    • exporting SACM is another idea
  4. Based on the international standards for formalising "Usability"

ASaC for usability assurance overview

DSL syntax idea

The statements are from the GSN example.

let acSample = new AssuranceCase(new TopLevelClaim("Control system X is acceptably safe to operate."));

let doc001: FormalVerificationReport;
let doc002: automatedUITest = testModule; // TODO to be implemented by Puppeteer and/or Jest

acSample.hasContext("Operating role and context of X")
  .supportedByStrategy("Argument over product and process aspects")
      .supportedBySubClaim("All identified hazards have been eliminated or sufficiently mitigated.")
          .supportedByStrategy("Argument over each identified hazard")
              .supportedBySubClaim("Hazard H1 has been eliminated.")
                  .supportedByEvidence(doc001)
              .supportedBySubClaim("Hazard H2 has been eliminated.")
                  .supportedByEvidence(doc002)
      .supportedBySubClaim("Software in the Control System has been developed to SIL appropriate to hazards involved.")
          .markedUndeveloped();

References

Acknowledgement

This project is supported by Centre for Software Reliability (CSR) at City, University of London. This repository's owner, Shuji Kinoshita, promoted this project during his stay at the CSR as a visiting fellow.

About

ASsurance as Code

Resources

Stars

Watchers

Forks

Contributors