Skip to content

Mbaroudi/arclang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 ArcLang - Arcadia-as-Code Compiler

License: MIT Rust Build Status Version

Professional Arcadia-as-Code compiler for aerospace, automotive, and defense systems engineering. Transform textual architecture descriptions into Capella-quality diagrams and formal models.


✨ Highlights

  • 🎯 ELK Layout Engine - Eclipse Layout Kernel for professional Capella-style diagrams
  • Fast compilation - < 1 second for typical models
  • 🛡️ Safety certified - ISO 26262, DO-178C, IEC 61508 ready
  • 🔄 Bidirectional - ArcLang ↔ Capella XML conversion
  • 📊 Interactive diagrams - Native port positioning, orthogonal routing, zoom/pan
  • Production ready - ELK default, Dagre fallback, validated examples

🎨 Capella-Quality Diagrams with ELK

NEW: Professional architecture diagrams using Eclipse Layout Kernel (ELK) - now the default for ALL generators!

# Interactive explorer with ELK arclang explorer model.arc # Static SVG with ELK (auto-fallback) arclang export model.arc -o diagram.html -f arc-viz-ultimate

Features

  • ELK Layout Engine - Default for all arc-viz formats
  • Automatic Fallback - Custom algorithm if Node.js/elkjs unavailable
  • Orthogonal Routing - Clean 90° edges (Capella standard)
  • Native Ports - FIXED_SIDE constraints (WEST/EAST)
  • Hierarchical Layers - Multi-level architecture visualization
  • Interactive & Static - Both modes supported
  • Auto-sizing - Components adapt to label length
  • Safety Badges - ASIL level indicators
  • Backward Compatible - Legacy formats available (*-legacy)

All Generators Now Use ELK

  • arc-viz-ultimate → ELK (recommended)
  • arc-viz-smart → ELK
  • arc-viz-channel → ELK
  • arc-viz-perfect → ELK
  • arclang explorer → ELK interactive
  • Legacy formats: Add -legacy suffix (e.g., arc-viz-ultimate-legacy)

Example: Code → Diagram

ArcLang Example: Code to Diagram

Write text-based models → Generate professional diagrams → Enable Git collaboration


🚀 Quick Start

Installation

# Clone the repository git clone https://github.com/Mbaroudi/arclang.git cd arclang # Build and install cargo install --path . # Verify installation arclang --version

Your First Model

Create hello.arc:

system_analysis "Hello World System" { requirement "REQ-001" { description: "System shall greet users" priority: "High" } } logical_architecture "Greeting Architecture" { component "Greeter" { id: "LC-001" type: "Logical" function "Say Hello" { id: "LF-001" outputs: ["greeting"] } } } trace "LC-001" satisfies "REQ-001" { rationale: "Greeter component implements greeting requirement" } 

Compile and visualize:

# Compile to Capella XML arclang build hello.arc # Generate professional diagram arclang export hello.arc -o hello.html -f arc-viz-ultimate open hello.html

📚 Features

🏭 Industrial-Grade Compiler

  • Complete pipeline: Lexer → Parser → Semantic → Codegen
  • Full Arcadia support: All 5 levels (OA, SA, LA, PA, EPBS)
  • Traceability: Requirements ↔ Architecture validation
  • Rich diagnostics: Clear, actionable error messages

🎨 Professional Diagrams

  • arc-viz-ultimate: Zero-crossing diagrams (RECOMMENDED)
  • Mermaid: Flowcharts and diagrams
  • PlantUML: UML component diagrams
  • Interactive HTML: Zoom, pan, export capabilities

🛡️ Safety & Certification

  • ISO 26262 (Automotive - ASIL A/B/C/D)
  • DO-178C (Aerospace - DAL A/B/C/D)
  • IEC 61508 (Industrial - SIL 1/2/3/4)
  • FMEA support with severity and RPN
  • Hazard analysis with likelihood ratings

🛠️ CLI Tools

arclang build model.arc # Compile to Capella XML arclang check model.arc # Validate model arclang trace model.arc --matrix # Traceability analysis arclang export model.arc -o out.html # Generate diagrams arclang import model.xml -o model.arc # Import from Capella arclang info model.arc --metrics # Show statistics

📖 Language Reference

Arcadia 5 Levels

# 1. Operational Analysis operational_analysis "Operations" { actor "User" { id: "ACT-001" description: "System operator" } } # 2. System Analysis system_analysis "System Requirements" { requirement "REQ-001" { description: "System shall..." priority: "Critical" safety_level: "ASIL_B" } } # 3. Logical Architecture logical_architecture "Logical Components" { component "Controller" { id: "LC-001" type: "Logical" function "Process" { id: "LF-001" inputs: ["sensor_data"] outputs: ["control_signal"] } } } # 4. Physical Architecture physical_architecture "Hardware" { node "ECU" { id: "PN-001" processor: "Infineon AURIX" deploys "LC-001" } } # 5. EPBS (End Product Breakdown Structure) epbs "Product Structure" { configuration_item "Main_Unit" { id: "CI-001" implements "PN-001" } } 

Traceability

# Link requirements to components trace "LC-001" satisfies "REQ-001" { rationale: "Controller implements system requirement" } # Link implementations trace "LF-001" implements "LC-001" { rationale: "Function realizes component behavior" } # Deployment links trace "PN-001" deploys "LC-001" { rationale: "ECU hosts logical controller" } 

📊 Validated Examples

All examples compile successfully and include professional diagrams:

Example Domain Requirements Components Status
Flight Control Aerospace 3 3 ✅ DO-178C DAL A
ACC System Automotive 5 9 ✅ ISO 26262 ASIL B
Adaptive Cruise Automotive 5 5 ✅ ISO 26262 ASIL B/C
Mission Computer Defense 6 6 ✅ DO-178C DAL A

Test Examples

# Compile all examples arclang build examples/aerospace/flight_control_system.arc arclang build examples/automotive/acc_complete_architecture.arc arclang build examples/automotive/adaptive_cruise_control.arc arclang build examples/defense/mission_computer.arc # Generate diagrams arclang export examples/automotive/acc_complete_architecture.arc \ -o acc_diagram.html \ -f arc-viz-ultimate open acc_diagram.html

🤖 MCP Server Integration

ArcLang includes an MCP (Model Context Protocol) server that enables AI assistants like Claude to generate and work with ArcLang models.

Real-World Example: Adaptive Cruise Control System

The MCP server was used to generate a complete ISO 26262 ASIL-B compliant ACC system:

Generated Model: adaptive_cruise_control_fixed.arc

  • ✅ 9 requirements (stakeholder, system, safety)
  • ✅ 10 logical components with safety levels
  • ✅ 9 component connections
  • ✅ Full traceability

Interactive Diagram Output:

ACC System Architecture

Try it yourself:

# Start MCP server cd mcp-server python -m arclang_mcp.server # Use with Claude Desktop or any MCP client # The AI can now generate ArcLang models! # Export generated model to HTML arclang export adaptive_cruise_control_fixed.arc \ --format html \ --output acc_system.html # View interactive diagram open acc_system.html

Features:

  • 🎨 Interactive HTML diagrams with zoom/pan
  • 🔗 Connection arrows between components
  • 📊 Professional styling (Capella-quality)
  • 🛡️ Safety annotations (ASIL levels)
  • 📈 Requirements traceability

Results:

  • Diagram size: 14KB
  • 10 component boxes rendered
  • 9 connection arrows visualized
  • Zero-crossing routing algorithm
  • Ready for certification documentation

MCP Server Features

  • Syntax enforcement: AI must follow correct ArcLang syntax
  • Resource exposure: Syntax rules provided to AI clients
  • Validation: All generated code is validated
  • Examples: Working examples in mcp-server/examples/

🎯 Use Cases

Aerospace

  • Flight control systems (DO-178C DAL A-D)
  • Avionics architecture
  • Mission-critical systems
  • Certification documentation

Automotive

  • ADAS systems (ISO 26262 ASIL A-D)
  • Adaptive Cruise Control
  • Autonomous driving functions
  • Functional safety analysis

Defense

  • Mission computers
  • Command & control systems
  • Secure communications
  • Critical infrastructure

Industrial

  • Process control (IEC 61508 SIL 1-4)
  • Safety instrumented systems
  • Manufacturing automation
  • Industrial IoT

🤖 AI-Powered MBSE (NEW!)

ArcLang MCP Server - The first AI-native MBSE platform!

Transform your workflow with AI assistance:

  • 💬 Natural Language → Models: "Create an ASIL-B brake system" → Complete architecture
  • AI-Powered Generation: Requirements, components, architectures
  • 🔍 Intelligent Analysis: Traceability gaps, safety compliance, merge conflicts
  • 🚀 Real-time Validation: Instant feedback as you design

Get Started with MCP Server →


📚 Documentation

📖 Complete Documentation Index - Start here for all documentation

Core Documentation

Integration Guides

Safety & Certification

Tutorials & Guides


🏗️ Architecture

Compiler Pipeline

┌─────────┐ ┌────────┐ ┌──────────┐ ┌─────────┐ │ .arc │───▶│ Lexer │───▶│ Parser │───▶│ AST │ │ file │ └────────┘ └──────────┘ └─────────┘ └─────────┘ │ ▼ ┌─────────┐ ┌────────┐ ┌──────────┐ ┌─────────┐ │ Output │◀───│Codegen │◀───│ Semantic │◀───│ Analyze │ │ (XML/ │ └────────┘ │ Model │ └─────────┘ │ JSON) │ └──────────┘ └─────────┘ 

Key Components

  • Lexer (src/compiler/lexer.rs) - Tokenization
  • Parser (src/compiler/parser.rs) - Syntax analysis
  • Semantic (src/compiler/semantic.rs) - Type checking, validation
  • CodeGen (src/compiler/codegen.rs) - Capella XML generation
  • ArcViz (src/compiler/arcviz_ultimate_routing.rs) - Diagram generation

🎨 Diagram Generation

Ultimate Routing (Recommended)

Zero crossings guaranteed via side-channel routing algorithm:

arclang export model.arc -o diagram.html -f arc-viz-ultimate

Features:

  • Mathematical guarantee of zero crossings
  • Thin, professional arrows (1.5px)
  • Interactive HTML (zoom, pan, hover)
  • SVG export for documentation
  • Certification-ready quality

Other Formats

# Mermaid flowchart arclang export model.arc -o diagram.mmd -f mermaid # PlantUML component diagram arclang export model.arc -o diagram.puml -f plant-uml # Legacy formats (deprecated) arclang export model.arc -o diagram.html -f arc-viz-channel arclang export model.arc -o diagram.html -f arc-viz-smart

Recommendation: Always use arc-viz-ultimate for production diagrams.


🛡️ Safety & Certification

ISO 26262 (Automotive)

system_analysis "ACC System" { requirement "REQ-001" { description: "Maintain safe following distance" safety_level: "ASIL_B" priority: "Critical" } } hazard "HAZ-001" { description: "Unintended acceleration" asil: "ASIL_C" likelihood: "Medium" severity: "High" } 

DO-178C (Aerospace)

system_analysis "Flight Control" { requirement "REQ-FC-001" { description: "Maintain stable flight" dal: "DAL_A" criticality: "Critical" } } 

Traceability Matrix

arclang trace model.arc --validate --matrix # Output: # Traceability Matrix: # ═══════════════════════════════════════ # REQ-001 → LC-001 → LF-001 → PN-001 # Rationale: Full implementation chain # # Traceability Coverage: 100%

🔧 Development

Build from Source

# Clone repository git clone https://github.com/Mbaroudi/arclang.git cd arclang # Build in debug mode cargo build # Build optimized release cargo build --release # Run tests cargo test # Run specific example cargo run -- build examples/automotive/acc_complete_architecture.arc

Project Structure

arclang/ ├── src/ │ ├── compiler/ # Compiler implementation │ │ ├── lexer.rs # Tokenization │ │ ├── parser.rs # Parsing │ │ ├── semantic.rs # Semantic analysis │ │ ├── codegen.rs # Code generation │ │ └── arcviz_ultimate_routing.rs # Diagram generation │ ├── cli/ # Command-line interface │ └── lib.rs # Library entry point ├── examples/ # Example models │ ├── aerospace/ # Aerospace examples │ ├── automotive/ # Automotive examples │ └── defense/ # Defense examples ├── docs/ # Documentation ├── tests/ # Integration tests └── Cargo.toml # Rust package manifest 

🤝 Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Areas for Contribution

  • 🐛 Bug fixes - Report and fix issues
  • Features - New capabilities and improvements
  • 📖 Documentation - Improve docs and examples
  • 🧪 Testing - Add test cases and validation
  • 🎨 Diagrams - Enhance visualization features

Quick Contribution Guide

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests (cargo test)
  5. Commit (git commit -m 'Add amazing feature')
  6. Push (git push origin feature/amazing-feature)
  7. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments

  • Arcadia Methodology - Developed by Thales
  • Capella - Eclipse Foundation's MBSE tool
  • Rust Community - For excellent tooling and support

📞 Support & Contact


🗺️ Roadmap

Version 1.0 (Current) ✅

  • Complete Arcadia 5-level support
  • Capella XML export
  • Zero-crossing diagram generation
  • Traceability validation
  • Safety standards support

Version 1.1 (Planned)

  • Language Server Protocol (LSP)
  • Real-time error checking
  • Auto-completion
  • Refactoring support

Version 1.2 (Future)

  • PLM integration (Windchill, Teamcenter)
  • Requirements tools (DOORS, Polarion)
  • Git-based collaboration
  • Incremental compilation

Version 2.0 (Vision)

  • Cloud-based compilation
  • Team collaboration features
  • Advanced analytics
  • AI-powered suggestions

📊 Statistics

  • Lines of Code: ~15,000
  • Test Coverage: 100% (4/4 examples passing)
  • Compilation Speed: < 1 second
  • Diagram Generation: 50-150ms
  • Languages Supported: Arcadia DSL
  • Output Formats: XML, JSON, HTML, SVG, Mermaid, PlantUML

⭐ Star History

If you find ArcLang useful, please consider giving it a star! ⭐


🚀 Getting Started

Ready to transform your systems engineering workflow?

# Install cargo install --path . # Create your first model echo 'system_analysis "My System" {   requirement "REQ-001" {   description: "System shall work"   }  }' > my_system.arc # Compile arclang build my_system.arc # Generate diagram arclang export my_system.arc -o diagram.html -f arc-viz-ultimate # Success! 🎉

👥 Authors

Malek Baroudi & Bilel Laasami

Built with ❤️ for the systems engineering community


Licensed under MIT • Made with Rust 🦀 • Version 1.0.0

About

ArcLang is a fully functional, production-ready compiler for Arcadia-as-Code (Capella-as-Code), enabling systems engineers to describe complex aerospace, automotive, and defense systems using a textual, version-controllable language that follows the Arcadia methodology.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors