Skip to content

Repository files navigation

CS2-SASR

A DASA (Dimensional Analysis for Software Architecture) evaluation of the Self-Adaptive Service Register Platform for Urban Environments (SASR Platform), the federated peer-to-peer service register for smart-city IoT infrastructure introduced by Cabrera and Clarke. Each gateway runs its own MAPE-K autonomic manager over a local register, and the federation exposes a unified discovery surface with no central directory. This repository reads that architecture through three perspectives (Components, Deployment, Network), solves each one three independent ways (analytical, computational, dimensional), and asks whether a dimensionless reading can detect the need to adapt and name the part of the architecture under stress.

Documentation

Read in this order:

  1. docs/case-study.md - what the system is: architecture, the three perspectives, the scenarios, the parameters.
  2. docs/procedure.md - how the study runs: the DASA method, the coefficients and their bounds, and what each notebook does.
  3. docs/report.md - what it found: the modelling derivation, the detection verdicts, the cross-validation, and the threats to validity.

Setup

Python 3.12 or newer.

1. Prerequisites beyond pip

The queueing solvers are not pure Python:

  • A Java runtime, 17 or newer. The LINE solver runs on the JVM.
  • LQN Solvers v5.32 or newer, with lqns and lqsim on PATH. These are needed for the layered queueing network in the Deployment perspective, used by notebooks 01 to 04. They are distributed as binaries, not as a Python package.

2. Install PyDASA

PyDASA is not on public PyPI. Install it from source first:

pip install "git+https://github.com/DASA-Design/PyDASA.git@v0.7.1"

3. Install the rest

pip install -r requirements.txt

Running

Run the notebooks in numerical order:

jupyter lab

Or headless:

jupyter nbconvert --to notebook --execute --inplace 01-analytic.ipynb

Each method also has a command-line entry point:

python -m src.methods.analytic --all
python -m src.methods.stochastic --all --confidence
python -m src.methods.dimensional --all

The notebooks ship with their outputs, so every figure and number can be read without running anything. data/results/ is regenerated rather than tracked; run the notebooks to produce it.

Note that 02-stochastic.ipynb is the slow one, since it runs three scenarios plus a ten-replication confidence analysis through the simulation engines.

Tests

pytest tests/

249 tests, no skips.

Layout

├── 01-analytic.ipynb        closed-form solve of the three perspectives
├── 02-stochastic.ipynb      simulation, plus confidence bands
├── 03-dimensional.ipynb     the DASA coefficient overlay
├── 04-yoly.ipynb            design-space coefficient clouds
├── 05-search.ipynb          proactive early-warning detection search
├── 06-comparison.ipynb      cross-validation across methods
├── docs/                    case study, procedure, report, figures
├── src/
│   ├── methods/             per-method orchestrators with CLI entry points
│   ├── perspectives/        Components, Deployment, Network
│   ├── analytic/            closed-form queueing solvers
│   ├── stochastic/          simulation helpers and confidence intervals
│   ├── dimensional/         PyDASA schema, coefficients, detection search
│   ├── line/                LINE solver adapters (flat and layered)
│   ├── view/                plotting
│   ├── io/                  configuration and result loaders
│   └── utils/               shared helpers
├── data/
│   ├── config/              the single source of truth for every parameter
│   ├── reference/           ground-truth anchors and thresholds
│   ├── results/             regenerated by the notebooks (not tracked)
│   └── img/                 generated figures, png and svg
└── tests/                   mirrors src/

Licence

GPL-3.0. See LICENSE.

About

This is the DASA design review of the Self-Adaptive Service Register Platform for Urban Environments (SASR Platform) by Cabrera and Clarke, a federated peer-to-peer (P2P) service register for smart-city IoT with one MAPE-K manager per gateway.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages