Software Architecture
This section provides comprehensive documentation of Scopy’s software architecture using interactive diagrams. The architecture is documented using Structurizr DSL and includes both application and deployment views.
Interactive Diagram Workspaces
Application Architecture
The application architecture workspace provides detailed views of Scopy’s internal structure, including:
Infrastructure Layer: Application coordination, preferences, logging, and crash reporting
Core Business Logic: Device management, plugin system, and package management
UI Framework: Window management, common widgets, and presentation components
Plugin Packages: M2K, SWIOT, AD936X, ADRV9002, IMU, PQMon and generic plugins
Supporting Libraries: IIO utilities, GNU Radio widgets, and common utilities
Tip
View Interactive Application Architecture
Open Application Architecture Diagrams
Explore 15+ component views showing relationships between infrastructure, core business logic, UI components, and plugin packages.
Deployment Architecture
The deployment architecture workspace documents the CI/CD pipeline and multi-platform build process:
Build Infrastructure: GitHub Actions and Azure DevOps workflows
Docker Environments: Pre-configured build containers for each platform
Platform Support: Windows (MinGW), Linux (Flatpak, AppImage), macOS (DMG), ARM platforms
Artifact Distribution: Automated package creation and GitHub Releases distribution
Tip
View Interactive Deployment Architecture
Open Deployment Architecture Diagrams
Understand the complete build and deployment pipeline from source code to distributed packages across multiple platforms.
System Context
Overview
Scopy is a multi-functional software toolset with strong capabilities for signal analysis, designed to work with Analog Devices hardware evaluation boards.
External Systems
Hardware Integration
ADI Hardware Devices: ADALM2000, AD936X, ADRV9002, AD-SWIOT1L-SL, and other evaluation boards
IIO Framework: Linux Industrial I/O subsystem providing hardware abstraction layer
Software Ecosystem
GNU Radio: Signal processing backend for advanced DSP operations
Operating Systems: Cross-platform support for Linux, Windows, and macOS
File System: Local and network storage for data, configurations, and logs
Core Components
Application Infrastructure
- Application Coordinator
Central orchestration of application startup, shutdown, and lifecycle management
- Device Management
Unified interface for hardware device discovery, connection, and communication
- Plugin System
Dynamic loading and management of device-specific functionality through packages
- Package Manager
Installation and distribution system for plugin packages
- Preferences Management
Centralized configuration storage and user settings persistence
Plugin Architecture
Scopy uses a modular plugin-based architecture where functionality is organized into specialized packages:
- Generic Plugins
ADC Plugin - Interface with IIO ADCs using buffer mechanisms
DAC Plugin - Interface with IIO DACs using buffer or DDS mechanisms
DataLogger Plugin - Data monitoring and logging capabilities
Debugger Plugin - IIO context examination and attribute modification
JESD Status Plugin - JESD204 interface status monitoring
Register Map Plugin - Direct device register access
- Device-Specific Packages
M2K Package: ADALM2000 (M2K) device support with oscilloscope, signal generator, logic analyzer
SWIOT Package: AD-SWIOT1L-SL platform support for industrial IoT applications
AD936X Package: AD936X transceiver family support for RF applications
ADRV9002 Package: ADRV9002 Jupiter transceiver with dual-channel RF capabilities
IMU Package: Inertial measurement unit evaluation and analysis tools
PQMon Package: Power quality monitoring and analysis capabilities
CI/CD Pipeline
Build Infrastructure
- GitHub Actions Workflows
Windows MinGW builds with MSYS2 environment
Linux Flatpak sandboxed package creation
Linux AppImage portable application builds
ARM64/ARMHF cross-compilation for embedded platforms
Ubuntu development builds for testing
- Azure DevOps
macOS DMG package creation using Homebrew dependencies
- Docker Infrastructure
Pre-configured build environments for each target platform
Consistent dependency management across build systems
Reproducible builds with version-controlled containers
Deployment Targets
- Platform Coverage
Windows: Setup executable (.exe) installer
Linux: Flatpak packages (.flatpak) and AppImage executables (.AppImage)
macOS: Disk image packages (.dmg)
ARM platforms: Cross-compiled AppImage executables for ARM64 and ARMHF
- Distribution
Automated artifact publishing to GitHub Releases
Version-controlled release management
Multi-platform simultaneous deployment
Source Documentation
The architecture diagrams are generated from version-controlled Structurizr DSL files:
docs/architecture/diagrams/app_diagrams/workspace.json- Application architecture definitiondocs/architecture/diagrams/deployment_diagrams/workspace.json- Deployment architecture definition
These files are automatically processed during documentation builds to generate the interactive diagram websites accessible through the links above.