Model-Based Systems Engineering and Hardware–Software Co-Design-Integrating BDD, DDD, Use Cases, SysML, and Sparx Enterprise Architect through OBD-AI and Smart Inverter Case Studies
Research White Paper | Systems Engineering • Embedded Software • AI-Enabled Diagnostics • Power Electronics • Model-Based Verification
Prepared for: IAS-Research.com, KeenComputer.com, and KeenDirect.com Author: Tapas Shome Date: October 2026
Abstract
Modern engineered products increasingly combine physical hardware, embedded firmware, communication networks, cloud services, artificial intelligence, and business applications. Examples include AI-assisted automotive diagnostics and intelligent inverters for renewable-energy systems. Designing these products as collections of independent hardware and software components often leads to integration failures, ambiguous requirements, inconsistent interfaces, late discovery of timing constraints, and expensive verification cycles.
This paper presents an integrated engineering method that combines Model-Based Systems Engineering (MBSE), SysML, use-case-driven requirements analysis, Behavior-Driven Development (BDD), Domain-Driven Design (DDD), and hardware–software co-design. It uses Sparx Systems Enterprise Architect (EA) as the central modeling and traceability environment.
Two reference systems provide practical examples:
- OBD-AI: An automotive diagnostic system integrating an OBD-II/CAN interface, a mobile application, diagnostic logic, vehicle-service knowledge, retrieval-augmented generation (RAG), and an AI-assisted repair advisory service.
- Smart inverter: An intelligent power-conversion system combining power electronics, sensing, real-time control firmware, communications, grid-interconnection functions, monitoring, and optional cloud-based analytics.
The paper develops a repeatable workflow from stakeholder needs and operational scenarios through system requirements, logical and physical architecture, hardware–software allocation, interface contracts, behavioral models, implementation, and verification. It distinguishes SysML Block Definition Diagrams from software Behavior-Driven Development and explains how DDD bounded contexts can organize complex software without replacing system-level engineering.
The central recommendation is to establish one traceable engineering thread connecting stakeholder needs, use cases, requirements, architecture, allocated components, executable tests, and verification evidence. Sparx EA provides the model repository and relationship management; software and firmware repositories, automated test tools, simulation environments, and hardware-in-the-loop platforms provide implementation and execution evidence.
The result is a practical framework for reducing ambiguity, improving multidisciplinary collaboration, and managing complexity across automotive, embedded, industrial, energy, and AI-enabled systems.
Executive summary
Hardware–software co-design is not simply the parallel development of circuit boards and software. It is the disciplined allocation of system responsibilities across physical components, firmware, algorithms, communications, applications, and services while preserving system-level behavior and measurable performance.
The recommended engineering approach is:
1. Stakeholder needs and operational context
Who needs the system, what problem it solves, and under what conditions
2. Use cases and system requirements
Use cases, measurable requirements, constraints, hazards, and acceptance criteria
3. System and behavioral models
SysML structure, activities, states, sequences, interfaces, and parametric constraints
4. Hardware–software allocation
Sensors, processors, firmware, communication links, applications, AI services, and safety boundaries
5. Implementation and verification
Code, electronics, simulation, BDD scenarios, unit tests, integration tests, HIL, and system acceptance
6. Evidence, change control, and lifecycle feedback
Traceability, measured results, release baselines, operational monitoring, and engineering updates
Principal recommendations
- Use SysML and MBSE to define the system, its requirements, structure, behavior, interfaces, constraints, and verification obligations.
- Use use cases to connect stakeholder objectives to observable system outcomes.
- Use BDD to express selected requirements as concrete, testable behavior scenarios. Keep the meaning of software BDD distinct from the SysML Block Definition Diagram.
- Use DDD to organize software around explicit business and engineering domains, such as vehicle diagnostics, knowledge retrieval, inverter control, telemetry, and fleet management.
- Use hardware–software co-design to allocate functionality according to timing, safety, cost, power, bandwidth, reliability, maintainability, and computational constraints.
- Use Sparx EA as the authoritative system-model repository, while keeping source code, automated tests, simulation artifacts, and release evidence in the appropriate engineering tools.
- Treat AI-generated recommendations as advisory unless the system has been specifically engineered, verified, and authorized for a control function. In the reference architectures in this paper, the AI advisory layer is not permitted to replace real-time inverter protection or independently command safety-critical vehicle functions.
1. Introduction
1.1 The engineering challenge
A modern product can contain several interacting engineering disciplines:
- Mechanical and electrical engineering.
- Digital electronics and microcontrollers.
- Analog sensing and signal conditioning.
- Embedded C/C++, RTOS, and embedded Linux.
- FPGA logic and hardware accelerators.
- Communication protocols and network security.
- Mobile and web applications.
- Cloud services, databases, and AI/ML.
- Diagnostics, maintenance, and lifecycle operations.
Each discipline has its own development tools, vocabulary, assumptions, and verification practices. A circuit designer may specify voltage thresholds and propagation delays; an embedded engineer may specify interrupt latency and task scheduling; a cloud engineer may specify API response time; a systems engineer must determine whether the integrated product satisfies the original stakeholder need.
The main problem is therefore not a lack of individual engineering tools. It is the absence of a reliable, shared representation of the system and the relationships among its requirements, design decisions, implementation artifacts, and evidence.
For example, an OBD-AI diagnostic application may identify a vehicle fault code, retrieve service information, and recommend an inspection procedure. The system can still fail if the adapter returns incomplete data, the application associates a code with the wrong vehicle configuration, the AI presents an unsupported diagnosis, or the user interprets a probable cause as a confirmed failed component.
Similarly, a smart inverter can have correct power-stage hardware and functioning firmware but still fail as a system if sensing delays, control-loop timing, protection thresholds, grid-interface behavior, and communication failures have not been engineered together.
1.2 Research objectives
This paper has six objectives:
- Establish a practical MBSE workflow that can be implemented in Sparx EA.
- Integrate stakeholder needs, use cases, requirements, and system architecture.
- Explain how SysML, software BDD, and DDD complement one another.
- Demonstrate hardware–software co-design through OBD-AI and a smart inverter.
- Define traceability, interface management, verification, and change-control practices.
- Propose a practical implementation roadmap for a small engineering or research organization.
1.3 Scope and assumptions
The architectures and numerical examples in this paper are reference designs, not validated production designs. Actual timing budgets, protection limits, communication performance, safety classifications, regulatory obligations, and hardware choices must be established for the intended product and validated against its operating environment.
The paper focuses on systems engineering and design integration. It does not substitute for vehicle-manufacturer service information, electrical protection studies, formal hazard analysis, grid-interconnection approval, or a product-specific functional-safety assessment.
2. Foundations: MBSE, SysML, Use Cases, BDD, and DDD
2.1 Model-Based Systems Engineering
Model-Based Systems Engineering is an approach in which structured engineering models become central artifacts for defining, analyzing, communicating, and verifying a system throughout its lifecycle.
A model is more than a drawing. It should represent identifiable elements and their relationships in a way that supports engineering decisions.
For example, an OBD-AI model should allow an engineer to determine:
- Which stakeholder need justifies the diagnostic capability?
- Which system requirement defines acceptable diagnostic-data quality?
- Which hardware interface obtains the vehicle data?
- Which software component decodes the data?
- Which use case depends on that capability?
- Which test demonstrates that the requirement has been satisfied?
- Which other requirements could be affected if the interface changes?
This traceable structure is more useful than a collection of diagrams with no consistent links.
The official Sparx Systems MBSE guide describes how Enterprise Architect supports SysML-based modeling and traceability across requirements, design, and verification.
Sparx Systems
+1
2.1.1 Model-based versus document-based engineering
|
Dimension |
Document-centric approach |
Model-centric approach |
|---|---|---|
|
Requirements |
Separate documents and spreadsheets |
Structured, uniquely identified model elements |
|
Architecture |
Drawings with manual maintenance |
Linked structure, behavior, and interface models |
|
Traceability |
Manual cross-references |
Explicit relationships and traceability views |
|
Change impact |
Manual review of documents |
Relationship-based impact analysis |
|
Verification |
Independent test plans |
Tests linked to requirements and components |
|
Reuse |
Copy-and-edit documents |
Reusable packages, patterns, and model elements |
|
Reporting |
Manually assembled |
Generated views and reports from governed model data |
MBSE does not eliminate documents. It changes their role: documents become selected views or controlled outputs from the engineering baseline rather than the only place where engineering knowledge exists.
2.2 SysML: modeling the system
The Systems Modeling Language (SysML) supports the description of system requirements, structure, behavior, and constraints. The formal language and its supported versions are maintained through the Object Management Group (OMG). SysML v2 is now formally published, alongside the established SysML v1.x family. Tool support and migration capabilities must be checked before selecting a version for a project.
OMG
+2
For a practical Sparx EA project, choose a supported modeling profile and version deliberately. Do not assume that a model authored with one SysML version or profile will be semantically interchangeable with every other version.
The following diagram types are especially useful:
|
Diagram or model |
Engineering question |
|---|---|
|
Requirement diagram |
What must the system do or satisfy? |
|
Use case diagram |
Who interacts with the system and why? |
|
Block Definition Diagram (BDD) |
What are the principal types of system elements and their relationships? |
|
Internal Block Diagram (IBD) |
How are parts connected through ports and interfaces? |
|
Activity diagram |
What sequence of activities and decisions produces an outcome? |
|
Sequence diagram |
How do components exchange messages over time? |
|
State machine diagram |
How does a component behave across operating states and events? |
|
Parametric diagram |
Which quantitative relationships and constraints govern the design? |
|
Package diagram |
How is the model organized into manageable subsystems and domains? |
The diagrams should not be created merely to satisfy a checklist. Each should answer a defined engineering question.
2.3 Important distinction: SysML BDD and software BDD
The abbreviation BDD has two distinct meanings in this paper.
SysML Block Definition Diagram
Structural modeling
Defines block types, properties, composition, and relationships. It helps answer questions such as whether the OBD-AI system contains a vehicle interface, a mobile application, a diagnostic service, and a knowledge service.
Behavior-Driven Development
Executable behavior specification
Uses business-readable scenarios—commonly expressed in Given/When/Then form—to describe observable behavior and connect requirements to automated tests.
These approaches complement one another, but they are not interchangeable.
A SysML BDD can show that a DiagnosticService block exists. A software BDD scenario can establish that when a supported diagnostic trouble code (DTC) is received, the service returns a result with the required code, vehicle context, and evidence references.
The first describes structure. The second specifies expected behavior.
2.4 Use-case-driven engineering
A use case describes how an actor interacts with a system to achieve a goal under defined conditions.
Actors may include people, external systems, devices, and organizations. A use case should identify a meaningful outcome rather than merely naming a screen, API, or internal function.
For OBD-AI:
- Actor: vehicle technician.
- Goal: investigate a reported engine fault.
- Preconditions: supported vehicle interface and diagnostic session.
- Main flow: acquire data, decode the DTC, retrieve relevant service information, present evidence, and guide the technician through verification.
- Alternative flow: unavailable vehicle data, unsupported DTC, communication loss, or conflicting evidence.
- Postcondition: the diagnostic findings and unresolved uncertainties are recorded.
For a smart inverter:
- Actor: energy-management controller or commissioning engineer.
- Goal: place the inverter into an authorized operating mode.
- Preconditions: self-tests complete, sensors valid, configuration approved, and required interlocks satisfied.
- Main flow: validate conditions, enable the appropriate operating state, regulate the commanded output, monitor limits, and report status.
- Alternative flow: sensor failure, grid abnormality, internal fault, or protection trip.
- Postcondition: the inverter is in a defined operating state with a recorded status and fault history.
Use cases should be refined into measurable system requirements and then into testable acceptance criteria.
2.5 Domain-Driven Design
Domain-Driven Design is a software design approach for systems with complex domain knowledge. It emphasizes a shared vocabulary between domain experts and software developers, explicit models, and boundaries that prevent one part of the software from becoming entangled with another.
A bounded context is a boundary within which a particular domain model and its language have a defined meaning. Martin Fowler's overview explains bounded contexts as a central DDD pattern for managing large models and making their relationships explicit.
martinfowler.com
For example, the phrase fault may mean:
- A vehicle diagnostic trouble code in automotive diagnostics.
- A failed retrieval or invalid answer in an AI service.
- An electrical protection event in a smart inverter.
- A service incident in a fleet-management platform.
These concepts may share a word but have different semantics, state transitions, owners, and consequences. They should not automatically be represented by one universal software object.
DDD complements MBSE by organizing software responsibilities within the system architecture. It does not replace system requirements, physical architecture, timing analysis, safety analysis, or hardware interface design.
2.6 Hardware–software co-design
Hardware–software co-design treats hardware and software as interacting design choices within one system-level problem.
Consider a smart inverter controller. A control function may be implemented in:
- Analog circuitry.
- A microcontroller.
- An FPGA.
- A real-time processor.
- A higher-level supervisory computer.
The allocation decision depends on response time, determinism, precision, reliability, cost, power consumption, development effort, and verification needs.
A similar decision arises in OBD-AI: vehicle-protocol acquisition and basic data validation should occur close to the interface, while knowledge retrieval and AI-generated explanations can be performed in an application or server environment where their latency and availability characteristics are acceptable.
The key principle is:
Allocate each function to the layer that can meet its requirements with the lowest acceptable system risk—not simply to the layer where implementation is easiest.
3. Reference system A: OBD-AI automotive diagnostics
3.1 Purpose and operating concept
OBD-AI is a proposed AI-assisted automotive diagnostic platform combining vehicle data acquisition, diagnostic interpretation, service-document retrieval, and a technician-facing application.
Its intended role is to help users interpret diagnostic evidence and conduct a more systematic troubleshooting process. It is not assumed to replace vehicle-manufacturer procedures, professional judgment, or physical inspection.
The reference system contains five principal areas:
- Vehicle interface and data acquisition.
- Mobile application and diagnostic session management.
- Diagnostic interpretation and rule-based checks.
- Service knowledge and retrieval-augmented generation.
- Case history, reporting, and optional fleet management.
3.2 Stakeholders and needs
|
Stakeholder |
Primary need |
Engineering implication |
|---|---|---|
|
Vehicle owner |
Understand the meaning and urgency of a warning |
Clear language, uncertainty disclosure, escalation guidance |
|
Automotive technician |
Obtain relevant evidence and service procedures |
Vehicle context, reliable data, traceable source references |
|
Fleet operator |
Reduce diagnostic time and vehicle downtime |
Case history, reporting, fleet-level visibility |
|
Service organization |
Standardize troubleshooting workflows |
Repeatable procedures, audit trail, access controls |
|
System administrator |
Operate the platform securely |
Monitoring, configuration management, update control |
|
Research team |
Evaluate diagnostic quality |
Reproducible test cases, ground truth, evaluation datasets |
These needs must be translated into system requirements. For example, “make diagnosis easy” is too vague to verify. A more useful requirement defines which information must be presented, how unsupported conclusions are handled, and what evidence must be recorded.
3.3 Operational context
The following is a conceptual context diagram.
#chatgpt-mermaid-_r_11i_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_11i_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_11i_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_11i_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_11i_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11i_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_11i_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_11i_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_11i_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_11i_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_11i_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_11i_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11i_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11i_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_11i_ p{margin:0;}#chatgpt-mermaid-_r_11i_ .label{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11i_ .cluster-label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11i_ .cluster-label span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11i_ .cluster-label span p{background-color:transparent;}#chatgpt-mermaid-_r_11i_ .label text,#chatgpt-mermaid-_r_11i_ span{fill:rgb(13, 13, 13);color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11i_ .node rect,#chatgpt-mermaid-_r_11i_ .node circle,#chatgpt-mermaid-_r_11i_ .node ellipse,#chatgpt-mermaid-_r_11i_ .node polygon,#chatgpt-mermaid-_r_11i_ .node path{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_11i_ .rough-node .label text,#chatgpt-mermaid-_r_11i_ .node .label text,#chatgpt-mermaid-_r_11i_ .image-shape .label,#chatgpt-mermaid-_r_11i_ .icon-shape .label{text-anchor:middle;}#chatgpt-mermaid-_r_11i_ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#chatgpt-mermaid-_r_11i_ .rough-node .label,#chatgpt-mermaid-_r_11i_ .node .label,#chatgpt-mermaid-_r_11i_ .image-shape .label,#chatgpt-mermaid-_r_11i_ .icon-shape .label{text-align:center;}#chatgpt-mermaid-_r_11i_ .node.clickable{cursor:pointer;}#chatgpt-mermaid-_r_11i_ .root .anchor path{fill:rgb(143, 143, 143)!important;stroke-width:0;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11i_ .arrowheadPath{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11i_ .edgePath .path{stroke:rgb(143, 143, 143);stroke-width:1px;}#chatgpt-mermaid-_r_11i_ .flowchart-link{stroke:rgb(143, 143, 143);fill:none;}#chatgpt-mermaid-_r_11i_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_11i_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_11i_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_11i_ .labelBkg{background-color:rgba(252, 252, 252, 0.5);}#chatgpt-mermaid-_r_11i_ .cluster rect{fill:rgb(243, 243, 243);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_11i_ .cluster text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11i_ .cluster span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11i_ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:rgb(243, 243, 243);border:1px solid rgba(0, 0, 0, 0.1);border-radius:2px;pointer-events:none;z-index:100;}#chatgpt-mermaid-_r_11i_ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11i_ rect.text{fill:none;stroke-width:0;}#chatgpt-mermaid-_r_11i_ .icon-shape,#chatgpt-mermaid-_r_11i_ .image-shape{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_11i_ .icon-shape p,#chatgpt-mermaid-_r_11i_ .image-shape p{background-color:rgb(252, 252, 252);padding:2px;}#chatgpt-mermaid-_r_11i_ .icon-shape .label rect,#chatgpt-mermaid-_r_11i_ .image-shape .label rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_11i_ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#chatgpt-mermaid-_r_11i_ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#chatgpt-mermaid-_r_11i_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_11i_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_11i_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_11i_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_11i_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11i_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_11i_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_11i_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_11i_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11i_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_11i_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_11i_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11i_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_11i_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_11i_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11i_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_11i_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11i_ .node text{font-size:14px;font-weight:600;letter-spacing:normal;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_11i_ .edgeLabels text{font-size:13px;font-weight:600;letter-spacing:-0.08px;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_11i_ .node tspan[font-weight="normal"],#chatgpt-mermaid-_r_11i_ .edgeLabels tspan[font-weight="normal"]{font-weight:600;}#chatgpt-mermaid-_r_11i_ .edgeLabel .label rect{opacity:1;rx:13px;ry:13px;fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-width:1px;}#chatgpt-mermaid-_r_11i_ .node rect,#chatgpt-mermaid-_r_11i_ .node circle,#chatgpt-mermaid-_r_11i_ .node ellipse,#chatgpt-mermaid-_r_11i_ .node polygon,#chatgpt-mermaid-_r_11i_ .node path{fill:rgb(229, 243, 255);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_11i_ .node rect{rx:16px;ry:16px;}#chatgpt-mermaid-_r_11i_ .node.mermaid-decision .label-container{fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-dasharray:2,2;}#chatgpt-mermaid-_r_11i_ .edgePaths .flowchart-link{stroke:rgb(143, 143, 143);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;}#chatgpt-mermaid-_r_11i_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11i_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}Vehicle OwnerAutomotive TechnicianVehicle ECU NetworkOBD-II AdapterOBD-AI Mobile AppDiagnostic ServiceService Knowledge BaseRAG and AI AdvisoryCase History and Reporting
This is a logical view, not a finalized deployment architecture. The vehicle protocol, adapter capabilities, mobile operating system, server placement, data-retention requirements, and connectivity assumptions must be defined for the actual product.
3.4 System boundary and trust boundaries
The system boundary should explicitly distinguish:
- The vehicle and its electronic control units.
- The OBD-II adapter and its firmware.
- The mobile application.
- Backend diagnostic services.
- The document repository and retrieval index.
- The AI inference service.
- External service-data providers, if used.
Each boundary introduces potential failure modes. A diagnostic value may be missing, delayed, incorrectly decoded, associated with the wrong vehicle, or presented without sufficient provenance.
The design should therefore retain source information and confidence limitations rather than converting every input into an apparently certain diagnosis.
3.5 OBD-AI logical architecture
#chatgpt-mermaid-_r_11r_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_11r_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_11r_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_11r_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_11r_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11r_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_11r_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_11r_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_11r_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_11r_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_11r_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_11r_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11r_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11r_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_11r_ p{margin:0;}#chatgpt-mermaid-_r_11r_ .label{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11r_ .cluster-label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11r_ .cluster-label span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11r_ .cluster-label span p{background-color:transparent;}#chatgpt-mermaid-_r_11r_ .label text,#chatgpt-mermaid-_r_11r_ span{fill:rgb(13, 13, 13);color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11r_ .node rect,#chatgpt-mermaid-_r_11r_ .node circle,#chatgpt-mermaid-_r_11r_ .node ellipse,#chatgpt-mermaid-_r_11r_ .node polygon,#chatgpt-mermaid-_r_11r_ .node path{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_11r_ .rough-node .label text,#chatgpt-mermaid-_r_11r_ .node .label text,#chatgpt-mermaid-_r_11r_ .image-shape .label,#chatgpt-mermaid-_r_11r_ .icon-shape .label{text-anchor:middle;}#chatgpt-mermaid-_r_11r_ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#chatgpt-mermaid-_r_11r_ .rough-node .label,#chatgpt-mermaid-_r_11r_ .node .label,#chatgpt-mermaid-_r_11r_ .image-shape .label,#chatgpt-mermaid-_r_11r_ .icon-shape .label{text-align:center;}#chatgpt-mermaid-_r_11r_ .node.clickable{cursor:pointer;}#chatgpt-mermaid-_r_11r_ .root .anchor path{fill:rgb(143, 143, 143)!important;stroke-width:0;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11r_ .arrowheadPath{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11r_ .edgePath .path{stroke:rgb(143, 143, 143);stroke-width:1px;}#chatgpt-mermaid-_r_11r_ .flowchart-link{stroke:rgb(143, 143, 143);fill:none;}#chatgpt-mermaid-_r_11r_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_11r_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_11r_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_11r_ .labelBkg{background-color:rgba(252, 252, 252, 0.5);}#chatgpt-mermaid-_r_11r_ .cluster rect{fill:rgb(243, 243, 243);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_11r_ .cluster text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11r_ .cluster span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11r_ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:rgb(243, 243, 243);border:1px solid rgba(0, 0, 0, 0.1);border-radius:2px;pointer-events:none;z-index:100;}#chatgpt-mermaid-_r_11r_ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_11r_ rect.text{fill:none;stroke-width:0;}#chatgpt-mermaid-_r_11r_ .icon-shape,#chatgpt-mermaid-_r_11r_ .image-shape{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_11r_ .icon-shape p,#chatgpt-mermaid-_r_11r_ .image-shape p{background-color:rgb(252, 252, 252);padding:2px;}#chatgpt-mermaid-_r_11r_ .icon-shape .label rect,#chatgpt-mermaid-_r_11r_ .image-shape .label rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_11r_ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#chatgpt-mermaid-_r_11r_ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#chatgpt-mermaid-_r_11r_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_11r_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_11r_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_11r_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_11r_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11r_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_11r_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_11r_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_11r_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11r_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_11r_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_11r_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11r_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_11r_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_11r_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11r_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_11r_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_11r_ .node text{font-size:14px;font-weight:600;letter-spacing:normal;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_11r_ .edgeLabels text{font-size:13px;font-weight:600;letter-spacing:-0.08px;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_11r_ .node tspan[font-weight="normal"],#chatgpt-mermaid-_r_11r_ .edgeLabels tspan[font-weight="normal"]{font-weight:600;}#chatgpt-mermaid-_r_11r_ .edgeLabel .label rect{opacity:1;rx:13px;ry:13px;fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-width:1px;}#chatgpt-mermaid-_r_11r_ .node rect,#chatgpt-mermaid-_r_11r_ .node circle,#chatgpt-mermaid-_r_11r_ .node ellipse,#chatgpt-mermaid-_r_11r_ .node polygon,#chatgpt-mermaid-_r_11r_ .node path{fill:rgb(229, 243, 255);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_11r_ .node rect{rx:16px;ry:16px;}#chatgpt-mermaid-_r_11r_ .node.mermaid-decision .label-container{fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-dasharray:2,2;}#chatgpt-mermaid-_r_11r_ .edgePaths .flowchart-link{stroke:rgb(143, 143, 143);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;}#chatgpt-mermaid-_r_11r_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_11r_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}OperationsKnowledge and AdvisoryDiagnostic ServicesEdge and Mobile LayerVehicle and Interface LayerCase and Audit StoreService MonitoringDocument RetrievalEvidence AssemblyAI AdvisoryDTC and PID InterpretationDiagnostic RulesVehicle ContextProtocol TransportData ValidationDiagnostic Session ManagerMobile UIVehicle ECUsOBD-II Adaptertelemetry
The diagram separates functions that require dependable vehicle data handling from functions that can tolerate higher latency.
Recommended design rule
The AI service should receive a structured evidence package containing relevant diagnostic observations, vehicle context, applicable service information, and source identifiers. It should not receive an unqualified stream of ambiguous values and be expected to infer the entire system state independently.
3.6 OBD-AI use cases
UC-OBD-01: Establish a diagnostic session
Primary actor: Technician.
Goal: Establish a supported communication session and identify the available diagnostic capabilities.
Preconditions:
- A compatible vehicle interface is connected.
- The user has permission to initiate the session.
- The selected adapter and vehicle configuration are supported.
Main flow:
- The user starts a diagnostic session.
- The application discovers the adapter.
- The interface establishes communication with the vehicle.
- The system identifies supported services and available data.
- The application validates response structure and session status.
- The system records the session configuration and initial status.
Alternative flows:
- Adapter unavailable.
- Vehicle communication not supported.
- A request times out.
- Data is malformed or incomplete.
- The connection drops during acquisition.
Postcondition: The application reports a valid session or a clear failure state. It must not silently interpret missing data as a valid zero value.
UC-OBD-02: Interpret a diagnostic trouble code
Primary actor: Technician or vehicle owner.
Goal: Understand a reported DTC in its vehicle context.
Main flow:
- Retrieve available DTCs.
- Validate the response.
- Decode the code using the supported code format and relevant vehicle information.
- Retrieve applicable service references.
- Assemble the evidence package.
- Present the code, likely interpretations, supporting observations, and limitations.
Alternative flows:
- Unknown code.
- Incomplete vehicle identification.
- No applicable service document.
- Conflicting references.
- The code does not establish a unique root cause.
Postcondition: The result distinguishes the recorded code from any inferred cause.
UC-OBD-03: Generate a grounded diagnostic advisory
Primary actor: Technician.
Goal: Produce a useful troubleshooting explanation supported by retrieved evidence.
Main flow:
- The diagnostic service creates a structured case.
- The retrieval service selects relevant documents.
- The system records document identifiers and relevant excerpts.
- The advisory service generates a proposed interpretation.
- The application checks that the output conforms to the required response structure.
- The system presents evidence, uncertainty, and next verification steps.
- The user records findings from inspection or further testing.
Failure conditions: Retrieval failure, unsupported claims, missing citations, incompatible vehicle context, or malformed model output.
Postcondition: A grounded advisory is recorded—or the application explicitly reports that a reliable advisory could not be produced.
UC-OBD-04: Preserve a diagnostic case
Primary actor: Technician or service organization.
Goal: Retain enough context to reproduce or audit the diagnostic session.
The record should include, subject to privacy and retention policy:
- Vehicle context and supported identifiers.
- Adapter and software versions.
- Relevant diagnostic observations.
- Retrieved document identifiers and versions.
- AI model and prompt/configuration versions where appropriate.
- Advisory output and stated limitations.
- Technician findings and subsequent tests.
- Timestamps and relevant failure events.
A case record must distinguish measured facts from generated interpretations and user-entered observations.
3.7 Example OBD-AI software BDD scenarios
The following Gherkin scenarios are illustrative acceptance specifications. They become executable tests only after step definitions, fixtures, and test environments are implemented.
Feature: Diagnostic trouble code interpretation Scenario: Interpret a supported diagnostic trouble code Given a valid diagnostic session exists And the vehicle context is known And a supported diagnostic trouble code is available When the technician requests an interpretation Then the system returns the decoded code And the result includes the vehicle context And the result distinguishes the code from a confirmed root cause And applicable evidence references are recorded Scenario: Handle an unavailable diagnostic response Given a diagnostic session exists And the vehicle does not respond to the requested service When the diagnostic service requests the data Then the request is marked as unsuccessful And the system does not substitute zero for missing data And the application reports the unavailable information Scenario: Decline an unsupported AI conclusion Given a diagnostic case has insufficient supporting evidence When the AI advisory is generated Then the response identifies the evidence limitation And the response does not present an unverified component failure as confirmed And the user is directed to appropriate verification steps
A useful BDD scenario describes externally observable behavior. It should not prescribe internal class names or a particular database implementation unless those are part of the interface contract.
3.8 OBD-AI state model
A diagnostic session can be represented as a state machine:
#chatgpt-mermaid-_r_12a_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_12a_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_12a_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_12a_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_12a_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12a_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_12a_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_12a_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_12a_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_12a_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_12a_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_12a_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12a_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12a_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_12a_ p{margin:0;}#chatgpt-mermaid-_r_12a_ defs [id$="-barbEnd"]{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12a_ g.stateGroup text{fill:rgb(83, 154, 248);stroke:none;font-size:10px;}#chatgpt-mermaid-_r_12a_ g.stateGroup text{fill:rgb(13, 13, 13);stroke:none;font-size:10px;}#chatgpt-mermaid-_r_12a_ g.stateGroup .state-title{font-weight:bolder;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12a_ g.stateGroup rect{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_12a_ g.stateGroup line{stroke:rgb(143, 143, 143);stroke-width:1;}#chatgpt-mermaid-_r_12a_ .transition{stroke:rgb(143, 143, 143);stroke-width:1;fill:none;}#chatgpt-mermaid-_r_12a_ .stateGroup .composit{fill:transparent;border-bottom:1px;}#chatgpt-mermaid-_r_12a_ .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#chatgpt-mermaid-_r_12a_ .state-note{stroke:rgb(107, 198, 127);fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_12a_ .state-note text{fill:rgb(13, 13, 13);stroke:none;font-size:10px;}#chatgpt-mermaid-_r_12a_ .stateLabel .box{stroke:none;stroke-width:0;fill:rgb(222, 234, 251);opacity:0.5;}#chatgpt-mermaid-_r_12a_ .edgeLabel .label rect{fill:rgb(222, 234, 251);opacity:0.5;}#chatgpt-mermaid-_r_12a_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_12a_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_12a_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_12a_ .edgeLabel .label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12a_ .label div .edgeLabel{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12a_ .stateLabel text{fill:rgb(13, 13, 13);font-size:10px;font-weight:bold;}#chatgpt-mermaid-_r_12a_ .node circle.state-start{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12a_ .node .fork-join{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12a_ .node circle.state-end{fill:rgb(83, 154, 248);stroke:transparent;stroke-width:1.5;}#chatgpt-mermaid-_r_12a_ .end-state-inner{fill:transparent;stroke-width:1.5;}#chatgpt-mermaid-_r_12a_ .node rect{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_12a_ .node polygon{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_12a_ [id$="-barbEnd"]{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12a_ .statediagram-cluster rect{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_12a_ .cluster-label,#chatgpt-mermaid-_r_12a_ .nodeLabel{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12a_ .statediagram-cluster rect.outer{rx:5px;ry:5px;}#chatgpt-mermaid-_r_12a_ .statediagram-state .divider{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_12a_ .statediagram-state .title-state{rx:5px;ry:5px;}#chatgpt-mermaid-_r_12a_ .statediagram-cluster.statediagram-cluster .inner{fill:transparent;}#chatgpt-mermaid-_r_12a_ .statediagram-cluster.statediagram-cluster-alt .inner{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_12a_ .statediagram-cluster .inner{rx:0;ry:0;}#chatgpt-mermaid-_r_12a_ .statediagram-state rect.basic{rx:5px;ry:5px;}#chatgpt-mermaid-_r_12a_ .statediagram-state rect.divider{stroke-dasharray:10,10;fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_12a_ .note-edge{stroke-dasharray:5;}#chatgpt-mermaid-_r_12a_ .statediagram-note rect{fill:rgb(243, 243, 243);stroke:rgb(107, 198, 127);stroke-width:1px;rx:0;ry:0;}#chatgpt-mermaid-_r_12a_ .statediagram-note rect{fill:rgb(243, 243, 243);stroke:rgb(107, 198, 127);stroke-width:1px;rx:0;ry:0;}#chatgpt-mermaid-_r_12a_ .statediagram-note text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12a_ .statediagram-note .nodeLabel{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12a_ .statediagram .edgeLabel{color:red;}#chatgpt-mermaid-_r_12a_ [id$="-dependencyStart"],#chatgpt-mermaid-_r_12a_ [id$="-dependencyEnd"]{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);stroke-width:1;}#chatgpt-mermaid-_r_12a_ .statediagramTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12a_ [data-look="neo"].statediagram-cluster rect{fill:rgb(222, 234, 251);stroke:url(#chatgpt-mermaid-_r_12a_-gradient);stroke-width:1;}#chatgpt-mermaid-_r_12a_ [data-look="neo"].statediagram-cluster rect.outer{rx:5px;ry:5px;filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12a_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_12a_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_12a_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_12a_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_12a_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12a_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_12a_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_12a_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_12a_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12a_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_12a_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_12a_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12a_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_12a_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_12a_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12a_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_12a_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12a_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}IdleConnectingConnectedFailedAcquiringDataValidatedDegradedInterpretingAdvisoryReadyNeedsMoreEvidenceClosedStart sessionLink establishedConnection errorRequest diagnostic dataValid responseTimeout or incompletedataDecode and contextualizeEvidence sufficientEvidence insufficientRequest additional dataSave caseRetry permittedReset session
The model helps define permitted transitions, timeout handling, retry behavior, and recovery. It should also include cancellation, user disconnection, authorization failures, and any relevant vehicle-specific constraints in a production design.
4. Reference system B: Smart inverter and intelligent power conversion
4.1 Purpose and operating concept
A smart inverter converts electrical power between DC and AC and may coordinate renewable generation, batteries, local loads, grid interaction, and monitoring functions.
The precise scope varies by product. A grid-following photovoltaic inverter, a grid-forming battery inverter, and a hybrid inverter have different operating modes, protection requirements, and control strategies. The example in this paper is a generalized inverter architecture; it does not assume that one control algorithm is appropriate for all inverter classes.
The reference system includes:
- Power conversion stage.
- Voltage and current sensing.
- Gate-drive and switching-control hardware.
- Real-time control processor.
- Protection and fault-management mechanisms.
- Communications and supervisory interface.
- Optional remote monitoring and analytics.
4.2 Stakeholders and needs
|
Stakeholder |
Need |
Engineering consequence |
|---|---|---|
|
System integrator |
Predictable integration with the power system |
Defined electrical and communication interfaces |
|
Grid operator or utility |
Operation within applicable interconnection requirements |
Product-specific grid behavior and compliance verification |
|
Installer |
Safe commissioning and configuration |
Interlocks, configuration validation, diagnostic reporting |
|
Operator |
Visibility into power, temperature, and operating status |
Accurate telemetry and clear state reporting |
|
Maintenance engineer |
Fault isolation and serviceability |
Event records, test points, version information |
|
Manufacturer |
Repeatable production and field quality |
Controlled requirements, design baselines, test evidence |
The requirements must be derived from the intended electrical rating, topology, installation environment, jurisdiction, and relevant standards. A generic model cannot determine all of these obligations.
4.3 Smart inverter context
#chatgpt-mermaid-_r_12j_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_12j_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_12j_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_12j_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_12j_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12j_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_12j_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_12j_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_12j_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_12j_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_12j_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_12j_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12j_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12j_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_12j_ p{margin:0;}#chatgpt-mermaid-_r_12j_ .label{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12j_ .cluster-label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12j_ .cluster-label span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12j_ .cluster-label span p{background-color:transparent;}#chatgpt-mermaid-_r_12j_ .label text,#chatgpt-mermaid-_r_12j_ span{fill:rgb(13, 13, 13);color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12j_ .node rect,#chatgpt-mermaid-_r_12j_ .node circle,#chatgpt-mermaid-_r_12j_ .node ellipse,#chatgpt-mermaid-_r_12j_ .node polygon,#chatgpt-mermaid-_r_12j_ .node path{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_12j_ .rough-node .label text,#chatgpt-mermaid-_r_12j_ .node .label text,#chatgpt-mermaid-_r_12j_ .image-shape .label,#chatgpt-mermaid-_r_12j_ .icon-shape .label{text-anchor:middle;}#chatgpt-mermaid-_r_12j_ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#chatgpt-mermaid-_r_12j_ .rough-node .label,#chatgpt-mermaid-_r_12j_ .node .label,#chatgpt-mermaid-_r_12j_ .image-shape .label,#chatgpt-mermaid-_r_12j_ .icon-shape .label{text-align:center;}#chatgpt-mermaid-_r_12j_ .node.clickable{cursor:pointer;}#chatgpt-mermaid-_r_12j_ .root .anchor path{fill:rgb(143, 143, 143)!important;stroke-width:0;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12j_ .arrowheadPath{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12j_ .edgePath .path{stroke:rgb(143, 143, 143);stroke-width:1px;}#chatgpt-mermaid-_r_12j_ .flowchart-link{stroke:rgb(143, 143, 143);fill:none;}#chatgpt-mermaid-_r_12j_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_12j_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_12j_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_12j_ .labelBkg{background-color:rgba(252, 252, 252, 0.5);}#chatgpt-mermaid-_r_12j_ .cluster rect{fill:rgb(243, 243, 243);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_12j_ .cluster text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12j_ .cluster span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12j_ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:rgb(243, 243, 243);border:1px solid rgba(0, 0, 0, 0.1);border-radius:2px;pointer-events:none;z-index:100;}#chatgpt-mermaid-_r_12j_ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_12j_ rect.text{fill:none;stroke-width:0;}#chatgpt-mermaid-_r_12j_ .icon-shape,#chatgpt-mermaid-_r_12j_ .image-shape{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_12j_ .icon-shape p,#chatgpt-mermaid-_r_12j_ .image-shape p{background-color:rgb(252, 252, 252);padding:2px;}#chatgpt-mermaid-_r_12j_ .icon-shape .label rect,#chatgpt-mermaid-_r_12j_ .image-shape .label rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_12j_ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#chatgpt-mermaid-_r_12j_ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#chatgpt-mermaid-_r_12j_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_12j_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_12j_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_12j_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_12j_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12j_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_12j_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_12j_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_12j_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12j_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_12j_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_12j_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12j_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_12j_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_12j_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12j_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_12j_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_12j_ .node text{font-size:14px;font-weight:600;letter-spacing:normal;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_12j_ .edgeLabels text{font-size:13px;font-weight:600;letter-spacing:-0.08px;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_12j_ .node tspan[font-weight="normal"],#chatgpt-mermaid-_r_12j_ .edgeLabels tspan[font-weight="normal"]{font-weight:600;}#chatgpt-mermaid-_r_12j_ .edgeLabel .label rect{opacity:1;rx:13px;ry:13px;fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-width:1px;}#chatgpt-mermaid-_r_12j_ .node rect,#chatgpt-mermaid-_r_12j_ .node circle,#chatgpt-mermaid-_r_12j_ .node ellipse,#chatgpt-mermaid-_r_12j_ .node polygon,#chatgpt-mermaid-_r_12j_ .node path{fill:rgb(229, 243, 255);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_12j_ .node rect{rx:16px;ry:16px;}#chatgpt-mermaid-_r_12j_ .node.mermaid-decision .label-container{fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-dasharray:2,2;}#chatgpt-mermaid-_r_12j_ .edgePaths .flowchart-link{stroke:rgb(143, 143, 143);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;}#chatgpt-mermaid-_r_12j_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_12j_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}PV Array or BatteryPower StageAC Bus or GridVoltage and Current SensorsReal-Time ControllerProtection and InterlocksLocal HMI or Installer ToolCommunications GatewayOptional Monitoring Platform
This view deliberately distinguishes the local control and protection path from external monitoring.
The monitoring service may help detect trends, compare operating histories, and support maintenance. It must not be assumed to have the timing, availability, or authority required for fast local protection.
4.4 Smart inverter use cases
UC-INV-01: Start and initialize the inverter
Primary actor: Installer or supervisory controller.
Goal: Transition the inverter from a safe inactive state to an authorized operating state.
Preconditions:
- The hardware is installed according to the approved design.
- Required interlocks are valid.
- Configuration parameters have been validated.
- Required self-tests pass.
- Operating conditions satisfy the product's defined limits.
Main flow:
- A start request is received.
- The controller validates the request and operating mode.
- Self-tests and sensor plausibility checks execute.
- Required interlocks are checked.
- The control system transitions through the specified startup sequence.
- The inverter enters the authorized operating state.
- Status and relevant telemetry are recorded.
Alternative flows:
- Sensor failure.
- Invalid configuration.
- Interlock not satisfied.
- Internal diagnostic failure.
- Operating conditions outside allowed limits.
Postcondition: The inverter is operating within the permitted state machine or remains in a defined non-operating or fault state.
UC-INV-02: Regulate electrical output
Primary actor: Local controller or supervisory control system.
Goal: Regulate the inverter output according to the authorized operating mode and applicable constraints.
The use case must specify the controlled quantities, operating envelope, allowed error, dynamic response, and conditions under which the command is rejected or limited.
A complete design includes:
- Sampling and measurement requirements.
- Control-loop period.
- Computation and actuation deadlines.
- Sensor and actuator ranges.
- Saturation handling.
- Mode transitions.
- Fault detection and response.
- Verification under representative electrical and environmental conditions.
UC-INV-03: Respond to an abnormal condition
Primary actor: Internal protection logic.
Goal: Bring the system to the required safe or protective response when a defined abnormal condition occurs.
The precise response depends on the fault, inverter topology, product requirements, and applicable standards. A design might require limiting output, inhibiting switching, disconnecting an interface, recording a fault, or transitioning into a controlled shutdown.
The required response must be established through hazard analysis and electrical design, not inferred from a generic state diagram.
UC-INV-04: Report operating status
Primary actor: Installer, operator, or monitoring platform.
Goal: Report operating state, measured quantities, active warnings, and relevant event history.
The communication subsystem should expose data with defined units, timestamps, quality flags, and versioned message schemas. If communication is lost, local control and protection must continue according to their independent requirements.
4.5 Smart inverter software BDD scenarios
Feature: Inverter startup and protection Scenario: Start when all required conditions are valid Given the inverter is in the inactive state And required self-tests have passed And sensor checks are valid And all required interlocks are satisfied And the requested operating mode is authorized When a start request is accepted Then the controller follows the defined startup sequence And the inverter enters the permitted operating state And the transition is recorded Scenario: Reject startup when a required sensor is invalid Given the inverter is in the inactive state And a required sensor has failed its validity check When a start request is received Then startup is not authorized And the controller reports the sensor fault And the inverter remains in a defined non-operating state Scenario: Handle a protection event Given the inverter is operating And a monitored condition crosses its configured protection criterion When the protection logic confirms the event Then the specified protective response is initiated And the controller records the event And external communications are not required for the local response Scenario: Continue local control when monitoring is unavailable Given the inverter is operating within permitted limits And the remote monitoring link becomes unavailable When the communication failure is detected Then the controller follows the defined communications-loss policy And local control and protection retain their required behavior And the communication fault is reported when possible
These scenarios describe requirements-level behavior. A real inverter project must add quantitative limits, event-detection rules, state-transition guards, timing criteria, and test conditions.
4.6 Smart inverter state model
#chatgpt-mermaid-_r_132_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_132_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_132_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_132_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_132_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_132_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_132_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_132_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_132_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_132_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_132_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_132_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_132_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_132_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_132_ p{margin:0;}#chatgpt-mermaid-_r_132_ defs [id$="-barbEnd"]{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_132_ g.stateGroup text{fill:rgb(83, 154, 248);stroke:none;font-size:10px;}#chatgpt-mermaid-_r_132_ g.stateGroup text{fill:rgb(13, 13, 13);stroke:none;font-size:10px;}#chatgpt-mermaid-_r_132_ g.stateGroup .state-title{font-weight:bolder;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_132_ g.stateGroup rect{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_132_ g.stateGroup line{stroke:rgb(143, 143, 143);stroke-width:1;}#chatgpt-mermaid-_r_132_ .transition{stroke:rgb(143, 143, 143);stroke-width:1;fill:none;}#chatgpt-mermaid-_r_132_ .stateGroup .composit{fill:transparent;border-bottom:1px;}#chatgpt-mermaid-_r_132_ .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#chatgpt-mermaid-_r_132_ .state-note{stroke:rgb(107, 198, 127);fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_132_ .state-note text{fill:rgb(13, 13, 13);stroke:none;font-size:10px;}#chatgpt-mermaid-_r_132_ .stateLabel .box{stroke:none;stroke-width:0;fill:rgb(222, 234, 251);opacity:0.5;}#chatgpt-mermaid-_r_132_ .edgeLabel .label rect{fill:rgb(222, 234, 251);opacity:0.5;}#chatgpt-mermaid-_r_132_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_132_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_132_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_132_ .edgeLabel .label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_132_ .label div .edgeLabel{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_132_ .stateLabel text{fill:rgb(13, 13, 13);font-size:10px;font-weight:bold;}#chatgpt-mermaid-_r_132_ .node circle.state-start{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_132_ .node .fork-join{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_132_ .node circle.state-end{fill:rgb(83, 154, 248);stroke:transparent;stroke-width:1.5;}#chatgpt-mermaid-_r_132_ .end-state-inner{fill:transparent;stroke-width:1.5;}#chatgpt-mermaid-_r_132_ .node rect{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_132_ .node polygon{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_132_ [id$="-barbEnd"]{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_132_ .statediagram-cluster rect{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_132_ .cluster-label,#chatgpt-mermaid-_r_132_ .nodeLabel{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_132_ .statediagram-cluster rect.outer{rx:5px;ry:5px;}#chatgpt-mermaid-_r_132_ .statediagram-state .divider{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_132_ .statediagram-state .title-state{rx:5px;ry:5px;}#chatgpt-mermaid-_r_132_ .statediagram-cluster.statediagram-cluster .inner{fill:transparent;}#chatgpt-mermaid-_r_132_ .statediagram-cluster.statediagram-cluster-alt .inner{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_132_ .statediagram-cluster .inner{rx:0;ry:0;}#chatgpt-mermaid-_r_132_ .statediagram-state rect.basic{rx:5px;ry:5px;}#chatgpt-mermaid-_r_132_ .statediagram-state rect.divider{stroke-dasharray:10,10;fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_132_ .note-edge{stroke-dasharray:5;}#chatgpt-mermaid-_r_132_ .statediagram-note rect{fill:rgb(243, 243, 243);stroke:rgb(107, 198, 127);stroke-width:1px;rx:0;ry:0;}#chatgpt-mermaid-_r_132_ .statediagram-note rect{fill:rgb(243, 243, 243);stroke:rgb(107, 198, 127);stroke-width:1px;rx:0;ry:0;}#chatgpt-mermaid-_r_132_ .statediagram-note text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_132_ .statediagram-note .nodeLabel{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_132_ .statediagram .edgeLabel{color:red;}#chatgpt-mermaid-_r_132_ [id$="-dependencyStart"],#chatgpt-mermaid-_r_132_ [id$="-dependencyEnd"]{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);stroke-width:1;}#chatgpt-mermaid-_r_132_ .statediagramTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_132_ [data-look="neo"].statediagram-cluster rect{fill:rgb(222, 234, 251);stroke:url(#chatgpt-mermaid-_r_132_-gradient);stroke-width:1;}#chatgpt-mermaid-_r_132_ [data-look="neo"].statediagram-cluster rect.outer{rx:5px;ry:5px;filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_132_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_132_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_132_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_132_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_132_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_132_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_132_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_132_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_132_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_132_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_132_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_132_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_132_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_132_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_132_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_132_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_132_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_132_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}InactiveSelfTestReadyFaultStartingOperatingLimitedOperationProtectiveResponseAuthorized startup requestChecks passCheck failureConditions validStartup sequencecompleteStartup failureDerating conditionConditions recoverProtection criterion metProtection criterion metFault latchedAuthorized reset andchecksControlled shutdownControlled shutdown
This diagram is illustrative. A production state machine must explicitly define each state's entry and exit actions, guards, timeout behavior, reset authorization, and permitted transitions. A protection event may require a response that cannot be represented by a simple software transition alone; the electrical design and physical actuation path must also be verified.
5. Establishing the engineering model in Sparx Enterprise Architect
5.1 Why use a central model repository?
Sparx Enterprise Architect can serve as the shared repository for system requirements, SysML diagrams, architecture elements, interfaces, use cases, test cases, and traceability relationships.
Its requirements facilities support structured requirement management and relationships such as derive, refine, satisfy, verify, and trace. The exact menu locations and modeling capabilities depend on the installed EA release, edition, and selected modeling technology.
Enterprise Architect User Guide
+1
EA should not be treated as a replacement for every engineering tool. Firmware source code belongs in a source-control system; circuit simulation belongs in an appropriate electrical engineering environment; control models may belong in MATLAB/Simulink or an equivalent platform; automated software tests belong in the software test toolchain. EA connects these artifacts to the system model.
5.2 Recommended repository structure
Create a project repository with consistent packages and unique element identifiers.
System Engineering Model | +-- 00_Project_Governance | +-- Scope_and_Assumptions | +-- Modeling_Conventions | +-- Change_Control | +-- Review_and_Approval | +-- 01_Stakeholder_Analysis | +-- Stakeholders | +-- Needs | +-- Operational_Context | +-- Mission_Scenarios | +-- 02_Requirements | +-- System_Requirements | +-- Performance_Requirements | +-- Interface_Requirements | +-- Safety_and_Security | +-- Verification_Requirements | +-- 03_Use_Cases | +-- OBD_AI | +-- Smart_Inverter | +-- Actors | +-- Scenarios | +-- 04_System_Architecture | +-- Context_Architecture | +-- Logical_Architecture | +-- Physical_Architecture | +-- Deployment_Architecture | +-- 05_Hardware_Design | +-- Electronics | +-- Sensors_and_Actuators | +-- Processor_and_FPGA | +-- Power_and_Thermal | +-- 06_Software_Architecture | +-- Embedded_Firmware | +-- RTOS_and_Drivers | +-- Application_Software | +-- Backend_and_AI | +-- Domain_Models | +-- 07_Interfaces | +-- Electrical_ICDs | +-- Communication_Protocols | +-- APIs_and_Data_Contracts | +-- 08_Behavior | +-- Activities | +-- Sequences | +-- State_Machines | +-- BDD_Acceptance_Specifications | +-- 09_Analysis_and_Trade_Studies | +-- Timing | +-- Reliability | +-- Cost | +-- Power_and_Thermal | +-- 10_Verification_and_Validation | +-- Verification_Cases | +-- Software_Tests | +-- Hardware_Tests | +-- HIL_and_System_Tests | +-- Evidence_and_Reports | +-- 11_Deployment_and_Operations | +-- Configuration | +-- Monitoring | +-- Maintenance | +-- Field_Feedback | +-- 12_Reviews_and_Baselines +-- Design_Reviews +-- Approved_Baselines +-- Release_Records
This is a starting pattern, not a mandatory EA package layout. The structure should be scaled to the product, team size, contractual requirements, and level of assurance required.
5.3 Step-by-step: create the model
- Create the model and select the modeling technology. Create the project repository and select the supported SysML profile and version. Record the choice in the model governance package.
- Define naming and identifier conventions. Use stable identifiers such as REQ-OBD-001, UC-OBD-001, BLK-OBD-001, IF-OBD-001, and TC-OBD-001. Avoid using diagram position or package location as the identity of an element.
- Model stakeholders and their needs. Identify users, operators, maintainers, external systems, and regulatory or contractual stakeholders. Link each important need to one or more operational scenarios.
- Create the use-case model. Add actors, system boundaries, use cases, and associations. Document main flows, alternate flows, preconditions, and postconditions in the use-case specifications.
- Create the requirements hierarchy. Use EA's requirements facilities or the selected SysML requirement elements. Define requirement text, unique IDs, rationale, priority, verification method, and ownership as appropriate.
- Build the structural architecture. Use Block Definition Diagrams to identify blocks, compositions, and relationships. Use Internal Block Diagrams to model ports, connectors, item flows, and component interfaces.
- Add behavior models. Create activity, sequence, and state-machine diagrams for the behaviors that are important to performance, fault handling, safety, and integration.
- Allocate requirements and behavior. Link requirements to the components that satisfy them, and identify which verification cases demonstrate compliance.
- Connect implementation artifacts. Record links or controlled references to source repositories, build artifacts, test suites, circuit models, and HIL results. Ensure the referenced version or commit can be identified.
- Review and baseline the model. Check completeness, naming, relationships, unresolved issues, and requirement-to-test coverage. Publish an approved baseline before implementation or formal design review.
5.4 How to model a requirement
A requirement should have a unique identifier, a concise statement, a rationale, and a defined means of verification.
A useful template is:
|
Attribute |
Example |
|---|---|
|
Identifier |
REQ-OBD-012 |
|
Name |
Missing-data handling |
|
Requirement |
The diagnostic service shall represent an unavailable requested value as unavailable and shall not silently substitute zero. |
|
Rationale |
Zero may be a valid measurement; substituting it can produce misleading diagnostic results. |
|
Source |
Diagnostic-session use case |
|
Verification method |
Test |
|
Verification case |
TC-OBD-012 |
|
Owner |
Diagnostic software engineering |
|
Status |
Proposed, approved, implemented, or verified |
The sample statement is intentionally testable. It specifies an observable condition rather than instructing a developer to use a particular programming language or data structure.
5.5 Relationship types and traceability
Use model relationships deliberately. In a SysML-based workflow, common relationships include:
- Derive: A lower-level requirement is derived from a higher-level requirement or other requirement source.
- Refine: A model element adds detail to a requirement or concept.
- Satisfy: A design element is intended to meet a requirement.
- Verify: A test case or verification element establishes whether a requirement is met.
- Trace: A general relationship records a relevant dependency.
- Contain: A package or model element organizes related elements.
EA's Traceability window and relationship-management facilities can help identify relationships that are not visible in an individual diagram.
Sparx Systems
+1
A basic traceability chain is:
#chatgpt-mermaid-_r_13h_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_13h_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_13h_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_13h_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_13h_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13h_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_13h_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_13h_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_13h_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_13h_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_13h_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_13h_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13h_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13h_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_13h_ p{margin:0;}#chatgpt-mermaid-_r_13h_ .label{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13h_ .cluster-label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13h_ .cluster-label span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13h_ .cluster-label span p{background-color:transparent;}#chatgpt-mermaid-_r_13h_ .label text,#chatgpt-mermaid-_r_13h_ span{fill:rgb(13, 13, 13);color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13h_ .node rect,#chatgpt-mermaid-_r_13h_ .node circle,#chatgpt-mermaid-_r_13h_ .node ellipse,#chatgpt-mermaid-_r_13h_ .node polygon,#chatgpt-mermaid-_r_13h_ .node path{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_13h_ .rough-node .label text,#chatgpt-mermaid-_r_13h_ .node .label text,#chatgpt-mermaid-_r_13h_ .image-shape .label,#chatgpt-mermaid-_r_13h_ .icon-shape .label{text-anchor:middle;}#chatgpt-mermaid-_r_13h_ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#chatgpt-mermaid-_r_13h_ .rough-node .label,#chatgpt-mermaid-_r_13h_ .node .label,#chatgpt-mermaid-_r_13h_ .image-shape .label,#chatgpt-mermaid-_r_13h_ .icon-shape .label{text-align:center;}#chatgpt-mermaid-_r_13h_ .node.clickable{cursor:pointer;}#chatgpt-mermaid-_r_13h_ .root .anchor path{fill:rgb(143, 143, 143)!important;stroke-width:0;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13h_ .arrowheadPath{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13h_ .edgePath .path{stroke:rgb(143, 143, 143);stroke-width:1px;}#chatgpt-mermaid-_r_13h_ .flowchart-link{stroke:rgb(143, 143, 143);fill:none;}#chatgpt-mermaid-_r_13h_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_13h_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_13h_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_13h_ .labelBkg{background-color:rgba(252, 252, 252, 0.5);}#chatgpt-mermaid-_r_13h_ .cluster rect{fill:rgb(243, 243, 243);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_13h_ .cluster text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13h_ .cluster span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13h_ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:rgb(243, 243, 243);border:1px solid rgba(0, 0, 0, 0.1);border-radius:2px;pointer-events:none;z-index:100;}#chatgpt-mermaid-_r_13h_ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13h_ rect.text{fill:none;stroke-width:0;}#chatgpt-mermaid-_r_13h_ .icon-shape,#chatgpt-mermaid-_r_13h_ .image-shape{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_13h_ .icon-shape p,#chatgpt-mermaid-_r_13h_ .image-shape p{background-color:rgb(252, 252, 252);padding:2px;}#chatgpt-mermaid-_r_13h_ .icon-shape .label rect,#chatgpt-mermaid-_r_13h_ .image-shape .label rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_13h_ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#chatgpt-mermaid-_r_13h_ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#chatgpt-mermaid-_r_13h_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_13h_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_13h_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_13h_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_13h_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13h_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_13h_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_13h_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_13h_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13h_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_13h_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_13h_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13h_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_13h_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_13h_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13h_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_13h_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13h_ .node text{font-size:14px;font-weight:600;letter-spacing:normal;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_13h_ .edgeLabels text{font-size:13px;font-weight:600;letter-spacing:-0.08px;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_13h_ .node tspan[font-weight="normal"],#chatgpt-mermaid-_r_13h_ .edgeLabels tspan[font-weight="normal"]{font-weight:600;}#chatgpt-mermaid-_r_13h_ .edgeLabel .label rect{opacity:1;rx:13px;ry:13px;fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-width:1px;}#chatgpt-mermaid-_r_13h_ .node rect,#chatgpt-mermaid-_r_13h_ .node circle,#chatgpt-mermaid-_r_13h_ .node ellipse,#chatgpt-mermaid-_r_13h_ .node polygon,#chatgpt-mermaid-_r_13h_ .node path{fill:rgb(229, 243, 255);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_13h_ .node rect{rx:16px;ry:16px;}#chatgpt-mermaid-_r_13h_ .node.mermaid-decision .label-container{fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-dasharray:2,2;}#chatgpt-mermaid-_r_13h_ .edgePaths .flowchart-link{stroke:rgb(143, 143, 143);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;}#chatgpt-mermaid-_r_13h_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13h_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}Stakeholder NeedUse CaseSystem RequirementArchitecture ElementHardware or SoftwareAllocationImplementation ArtifactVerification CaseVerification Evidence
The arrows represent traceability relationships conceptually. Configure the actual EA relationship types according to the semantics of each link. Do not represent every relationship using a generic trace connector merely because it is convenient.
5.6 Requirement quality checks
A requirement review should ask:
- Is the requirement necessary and in scope?
- Is the statement unambiguous?
- Does it specify a measurable outcome or observable condition?
- Is the requirement feasible under the system's physical and computational constraints?
- Is the verification method defined?
- Does the requirement have an appropriate parent, source, or rationale?
- Is there an identified component or design element responsible for satisfying it?
- Are safety, security, failure, and degraded-mode implications considered?
- Are units, tolerances, timing boundaries, and operating conditions explicit where needed?
- Is the requirement independent of unnecessary implementation choices?
Avoid requirements such as “the software should be fast,” “the system must be reliable,” or “the inverter should be intelligent.” Define what the system must do, under which conditions, and how the result will be demonstrated.
6. Hardware–software co-design workflow
6.1 Start with system-level constraints
Hardware and software allocation should follow from requirements, not from a preferred processor or programming language.
For each function, document:
- Required response time and deadline.
- Execution frequency and worst-case workload.
- Input and output data rates.
- Numerical precision and dynamic range.
- Memory and storage requirements.
- Power consumption and thermal limits.
- Availability and fault-response requirements.
- Safety or security constraints.
- Cost, manufacturability, and lifecycle support.
- Verification and maintenance strategy.
Not every attribute applies equally to every function. A vehicle DTC decoding function, an inverter current-control loop, and a cloud report-generation service have different timing and failure consequences.
6.2 Allocation decision matrix
|
Function |
Candidate implementation |
Primary decision factors |
|---|---|---|
|
Analog conditioning |
Analog electronics |
Noise, bandwidth, accuracy, isolation |
|
Fast digital acquisition |
MCU peripheral, FPGA, or dedicated interface |
Timing determinism, channel count, protocol |
|
Vehicle data transport |
Adapter firmware and mobile software |
Protocol support, buffering, compatibility |
|
DTC decoding |
Embedded or application software |
Data context, maintainability, updateability |
|
AI-assisted explanation |
Backend AI service |
Latency tolerance, evidence quality, compute cost |
|
Inverter fast control |
Real-time MCU, DSP, or FPGA |
Control deadline, deterministic execution, precision |
|
Inverter protection |
Dedicated circuitry and/or validated local control logic |
Fault response, independence, diagnostic coverage |
|
Supervisory optimization |
Higher-level processor or service |
Scheduling flexibility, computational load |
|
Monitoring and reporting |
Gateway or cloud application |
Connectivity, retention, security, analytics |
This table proposes candidate locations, not a final allocation. Each assignment must be validated against the actual requirements and operating environment.
6.3 Timing-budget analysis
Timing is a critical reason to model hardware and software together.
Suppose a hypothetical control function must complete within a total period of \(25\,\mu s\). An initial allocation might be:
|
Activity |
Illustrative budget |
|---|---|
|
Sensor sampling and acquisition |
\(4\,\mu s\) |
|
Data validation and preprocessing |
\(3\,\mu s\) |
|
Control calculation |
\(8\,\mu s\) |
|
Output update |
\(3\,\mu s\) |
|
Scheduling, communication, and margin |
\(7\,\mu s\) |
|
Total |
\(25\,\mu s\) |
These numbers are illustrative only. They do not demonstrate that a particular controller meets a real deadline.
A real timing analysis must consider worst-case execution time, interrupt latency, task scheduling, cache and memory effects where relevant, bus contention, peripheral delays, clock tolerances, measurement uncertainty, and required margin.
The general constraint is:
\[ T_{\text{acquisition}}+ T_{\text{processing}}+ T_{\text{actuation}}+ T_{\text{overhead}} \leq T_{\text{deadline}} \]
The engineer must also determine whether the required behavior is periodic, event-driven, or deadline-constrained, and whether a missed deadline creates a safety hazard or merely degrades performance.
6.4 Example: allocating OBD-AI functions
The vehicle interface has protocol and communication constraints. It may experience delayed responses, incomplete messages, or disconnects. The mobile application manages the user session, while backend services handle knowledge retrieval and AI inference.
A possible allocation is:
- Adapter firmware: Protocol transport, framing, and adapter-level status.
- Mobile application: Session management, user interface, data validation, and local buffering.
- Diagnostic service: DTC/PID interpretation, supported-vehicle logic, and structured case generation.
- Knowledge service: Document indexing, retrieval, metadata management, and source tracking.
- AI advisory service: Evidence-grounded explanation and structured recommendations.
- Case service: Audit records, session history, and access-controlled retention.
The design must specify which component is authoritative for vehicle identity, protocol capability, data quality, and diagnostic interpretation. Duplicate ownership creates inconsistent behavior.
6.5 Example: allocating smart inverter functions
A smart inverter needs a clearly separated local control path and supervisory information path.
A possible allocation is:
- Analog front end: Measurement conditioning and required isolation.
- ADC and timer peripherals: Deterministic acquisition and synchronization.
- Real-time processor: Control calculations, operating-state logic, and supervisory coordination.
- FPGA, where justified: High-speed deterministic processing, synchronized digital logic, or specialized control support.
- Independent protection circuitry, where required: Protection functions whose independence or response characteristics cannot be adequately assured by the main software path alone.
- Communications processor or gateway: External protocol handling and monitoring.
- Remote analytics: Historical analysis, predictive maintenance, and operational reporting.
An FPGA is not automatically safer or faster for every task, and a separate protection circuit is not automatically sufficient for safety. These decisions require quantitative analysis, fault analysis, and verification of the actual architecture.
6.6 Interface Control Documents
The Interface Control Document (ICD) defines the agreed behavior of an interface between components, subsystems, or organizations.
A useful ICD should contain:
- Interface identifier and owner.
- Source and destination components.
- Physical, electrical, logical, or API boundary.
- Signal or message names.
- Data types, units, scaling, and valid ranges.
- Timing, update frequency, and latency expectations.
- Error detection, timeout, and retry rules.
- Initialization and shutdown behavior.
- Versioning and backward-compatibility rules.
- Security and access-control assumptions.
- Verification method and acceptance criteria.
Example ICD: OBD-AI diagnostic result
|
Field |
Contract definition |
|---|---|
|
Interface |
IF-OBD-DIAG-001 |
|
Producer |
Diagnostic interpretation service |
|
Consumer |
Mobile application |
|
Code |
Validated diagnostic code or explicit unsupported-code status |
|
Vehicle context |
Identifier and configuration confidence where available |
|
Observations |
Measured or reported values with units and validity |
|
Interpretation |
Probable explanations, not automatically confirmed failures |
|
Evidence |
Source identifiers, versions, and applicable references |
|
Status |
Complete, partial, unavailable, or failed |
|
Error behavior |
Explicit reason code; no silent conversion of missing data |
|
Verification |
Schema validation, positive tests, negative tests, and compatibility tests |
Example ICD: smart inverter status message
|
Field |
Contract definition |
|---|---|
|
Interface |
IF-INV-STATUS-001 |
|
Producer |
Local inverter controller |
|
Consumer |
HMI or monitoring gateway |
|
Operating state |
Enumerated state from the approved state machine |
|
Measurements |
Defined quantities with units and validity flags |
|
Fault status |
Active, latched, cleared, or unavailable as applicable |
|
Timestamp |
Defined time basis and resolution |
|
Version |
Message-schema version |
|
Failure behavior |
Defined stale-data and communications-loss policy |
|
Verification |
Schema tests, interface tests, and integration tests |
For inverter interfaces, the ICD must be supplemented with electrical limits, isolation requirements, grounding assumptions, electromagnetic compatibility, and any required grid-interface behavior.
6.7 Hardware–software interface review
Before implementation is considered ready, review each interface across disciplines.
- Are electrical and logical levels compatible?
- Are units, scaling, signedness, byte order, and numerical precision defined?
- Are update rate, latency, jitter, and timeout behavior specified?
- Are initialization and shutdown sequences defined?
- What happens if the signal, message, sensor, processor, or link fails?
- Can the interface be tested independently?
- Can both sides identify and reject incompatible versions?
- Are security, isolation, and safety assumptions explicit?
Interface failures are often integration failures disguised as software defects. A shared model and a controlled ICD reduce the risk that different teams implement incompatible assumptions.
7. Integrating DDD with MBSE
7.1 Why DDD belongs inside the engineering process
MBSE organizes the system as a whole. DDD organizes the software models and responsibilities that implement selected parts of that system.
For example, the OBD-AI architecture may contain a diagnostic service, retrieval service, AI advisory service, and case-management service. Each has different domain concepts and invariants. DDD can define boundaries, ownership, and communication contracts between them.
However, the physical system may impose constraints that do not naturally appear in the software domain model. An inverter control context, for instance, must respect real-time deadlines, sensor validity, and protection behavior even if the application-level domain model is elegantly designed.
The integration rule is therefore:
Use MBSE to establish the system boundary and engineering constraints; use DDD to organize the software domain models within that boundary.
7.2 OBD-AI bounded contexts
#chatgpt-mermaid-_r_13q_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_13q_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_13q_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_13q_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_13q_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13q_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_13q_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_13q_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_13q_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_13q_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_13q_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_13q_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13q_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13q_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_13q_ p{margin:0;}#chatgpt-mermaid-_r_13q_ .label{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13q_ .cluster-label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13q_ .cluster-label span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13q_ .cluster-label span p{background-color:transparent;}#chatgpt-mermaid-_r_13q_ .label text,#chatgpt-mermaid-_r_13q_ span{fill:rgb(13, 13, 13);color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13q_ .node rect,#chatgpt-mermaid-_r_13q_ .node circle,#chatgpt-mermaid-_r_13q_ .node ellipse,#chatgpt-mermaid-_r_13q_ .node polygon,#chatgpt-mermaid-_r_13q_ .node path{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_13q_ .rough-node .label text,#chatgpt-mermaid-_r_13q_ .node .label text,#chatgpt-mermaid-_r_13q_ .image-shape .label,#chatgpt-mermaid-_r_13q_ .icon-shape .label{text-anchor:middle;}#chatgpt-mermaid-_r_13q_ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#chatgpt-mermaid-_r_13q_ .rough-node .label,#chatgpt-mermaid-_r_13q_ .node .label,#chatgpt-mermaid-_r_13q_ .image-shape .label,#chatgpt-mermaid-_r_13q_ .icon-shape .label{text-align:center;}#chatgpt-mermaid-_r_13q_ .node.clickable{cursor:pointer;}#chatgpt-mermaid-_r_13q_ .root .anchor path{fill:rgb(143, 143, 143)!important;stroke-width:0;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13q_ .arrowheadPath{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13q_ .edgePath .path{stroke:rgb(143, 143, 143);stroke-width:1px;}#chatgpt-mermaid-_r_13q_ .flowchart-link{stroke:rgb(143, 143, 143);fill:none;}#chatgpt-mermaid-_r_13q_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_13q_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_13q_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_13q_ .labelBkg{background-color:rgba(252, 252, 252, 0.5);}#chatgpt-mermaid-_r_13q_ .cluster rect{fill:rgb(243, 243, 243);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_13q_ .cluster text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13q_ .cluster span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13q_ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:rgb(243, 243, 243);border:1px solid rgba(0, 0, 0, 0.1);border-radius:2px;pointer-events:none;z-index:100;}#chatgpt-mermaid-_r_13q_ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_13q_ rect.text{fill:none;stroke-width:0;}#chatgpt-mermaid-_r_13q_ .icon-shape,#chatgpt-mermaid-_r_13q_ .image-shape{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_13q_ .icon-shape p,#chatgpt-mermaid-_r_13q_ .image-shape p{background-color:rgb(252, 252, 252);padding:2px;}#chatgpt-mermaid-_r_13q_ .icon-shape .label rect,#chatgpt-mermaid-_r_13q_ .image-shape .label rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_13q_ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#chatgpt-mermaid-_r_13q_ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#chatgpt-mermaid-_r_13q_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_13q_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_13q_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_13q_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_13q_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13q_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_13q_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_13q_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_13q_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13q_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_13q_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_13q_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13q_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_13q_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_13q_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13q_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_13q_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_13q_ .node text{font-size:14px;font-weight:600;letter-spacing:normal;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_13q_ .edgeLabels text{font-size:13px;font-weight:600;letter-spacing:-0.08px;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_13q_ .node tspan[font-weight="normal"],#chatgpt-mermaid-_r_13q_ .edgeLabels tspan[font-weight="normal"]{font-weight:600;}#chatgpt-mermaid-_r_13q_ .edgeLabel .label rect{opacity:1;rx:13px;ry:13px;fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-width:1px;}#chatgpt-mermaid-_r_13q_ .node rect,#chatgpt-mermaid-_r_13q_ .node circle,#chatgpt-mermaid-_r_13q_ .node ellipse,#chatgpt-mermaid-_r_13q_ .node polygon,#chatgpt-mermaid-_r_13q_ .node path{fill:rgb(229, 243, 255);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_13q_ .node rect{rx:16px;ry:16px;}#chatgpt-mermaid-_r_13q_ .node.mermaid-decision .label-container{fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-dasharray:2,2;}#chatgpt-mermaid-_r_13q_ .edgePaths .flowchart-link{stroke:rgb(143, 143, 143);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;}#chatgpt-mermaid-_r_13q_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_13q_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}Vehicle InterfaceDiagnostic Session ContextVehicle Data ContextDiagnostic InterpretationContextService Knowledge ContextAI Advisory ContextCase Management ContextFleet Management Context
Suggested contexts
Vehicle Interface Context
Owns adapter discovery, communication-session state, transport errors, and protocol capability.
Vehicle Data Context
Owns validated diagnostic observations, measurement units, validity status, timestamps, and vehicle context.
Diagnostic Interpretation Context
Owns code decoding, supported interpretation rules, diagnostic relationships, and distinctions between observations and hypotheses.
Service Knowledge Context
Owns service-document metadata, versioning, indexing, retrieval, and source provenance.
AI Advisory Context
Owns evidence assembly, model invocation, response validation, uncertainty representation, and the rules governing supported advisory outputs.
Case Management Context
Owns diagnostic-session records, technician notes, audit history, and retention policy.
Fleet Management Context
Owns vehicle groups, service events, fleet reporting, and fleet-level operational analytics.
These boundaries are proposed design choices. They should be revised if discovery reveals different domain ownership or deployment constraints.
7.3 Inverter bounded contexts
A comparable inverter software architecture could include:
- Measurement Context: Sensor observations, calibration state, validity, and measurement quality.
- Control Context: Local control algorithms, operating mode, setpoints, and permitted transitions.
- Protection Context: Fault criteria, protection state, trip records, and reset policy.
- Configuration Context: Approved parameters, versioning, commissioning, and configuration validation.
- Telemetry Context: Data packaging, communication, timestamps, and remote status.
- Maintenance Context: Fault history, maintenance records, and diagnostic procedures.
- Analytics Context: Historical trends, anomaly detection, and predictive-maintenance suggestions.
The protection and control contexts must have precisely defined interfaces. DDD boundaries are not a justification for distributing time-critical control across unreliable network services.
7.4 Domain events and contracts
A domain event represents something meaningful that has occurred, such as:
- DiagnosticSessionEstablished
- DiagnosticDataUnavailable
- DtcInterpretationCreated
- EvidencePackageAssembled
- AdvisoryGenerated
- InverterReady
- OperatingLimitExceeded
- ProtectionEventRecorded
- RemoteTelemetryUnavailable
Events should be versioned and have clear ownership. They should not be used as vague notifications for every internal function call.
For each event or API, define:
- Producer and consumer.
- Event meaning and triggering condition.
- Schema and version.
- Timestamp and ordering assumptions.
- Delivery and duplicate-handling behavior.
- Error and retry policy.
- Security and retention requirements.
7.5 Avoiding overengineering
DDD is valuable when domain complexity justifies explicit boundaries. It is not necessary to split a small embedded application into many microservices.
A microcontroller may use modules or components that follow bounded-context principles without running independent services. A small OBD-AI prototype may start as a modular application and later separate services if scale, deployment, security, or team ownership requires it.
The architecture should reflect actual system needs, not a preference for microservices.
8. Behavioral modeling and the relationship between SysML and software BDD
8.1 Three complementary levels
A well-structured model separates three questions.
|
Level |
Primary question |
Example |
|---|---|---|
|
System behavior |
What must the complete system do? |
Handle a diagnostic session with incomplete vehicle data |
|
Software acceptance behavior |
What observable software behavior satisfies the requirement? |
Return an explicit unavailable-data status |
|
Implementation behavior |
How does the selected software or firmware perform the task? |
Validate the response frame, set a validity flag, and emit a status code |
SysML activity and state-machine diagrams can describe system and component behavior. Gherkin scenarios can express selected acceptance conditions. Implementation tests verify that the chosen code and hardware behave as intended.
The models should be consistent, but not every SysML action needs a Gherkin scenario, and not every unit test needs its own system-level diagram.
8.2 Example: OBD-AI sequence
Advisory ServiceKnowledge RetrievalDiagnostic ServiceOBD AdapterMobile AppAdvisory ServiceKnowledge RetrievalDiagnostic ServiceOBD AdapterMobile App#chatgpt-mermaid-_r_143_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_143_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_143_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_143_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_143_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_143_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_143_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_143_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_143_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_143_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_143_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_143_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_143_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_143_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_143_ p{margin:0;}#chatgpt-mermaid-_r_143_ .actor{stroke:rgb(83, 154, 248);fill:rgb(222, 234, 251);stroke-width:1;}#chatgpt-mermaid-_r_143_ rect.actor.outer-path[data-look="neo"]{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_143_ rect.note[data-look="neo"]{stroke:rgb(107, 198, 127);fill:rgb(243, 243, 243);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_143_ text.actor>tspan{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_143_ .actor-line{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_143_ .innerArc{stroke-width:1.5;stroke-dasharray:none;}#chatgpt-mermaid-_r_143_ .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_143_ .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_143_ [id$="-arrowhead"] path{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_143_ .sequenceNumber{fill:#707070;}#chatgpt-mermaid-_r_143_ [id$="-sequencenumber"]{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_143_ [id$="-crosshead"] path{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_143_ .messageText{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_143_ .labelBox{stroke:rgba(0, 0, 0, 0.1);fill:rgb(252, 252, 252);filter:none;}#chatgpt-mermaid-_r_143_ .labelText,#chatgpt-mermaid-_r_143_ .labelText>tspan{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_143_ .loopText,#chatgpt-mermaid-_r_143_ .loopText>tspan{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_143_ .sectionTitle,#chatgpt-mermaid-_r_143_ .sectionTitle>tspan{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_143_ .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:rgba(0, 0, 0, 0.1);fill:rgba(0, 0, 0, 0.1);}#chatgpt-mermaid-_r_143_ .note{stroke:rgb(107, 198, 127);fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_143_ .noteText,#chatgpt-mermaid-_r_143_ .noteText>tspan{fill:rgb(13, 13, 13);stroke:none;font-weight:normal;}#chatgpt-mermaid-_r_143_ .activation0{fill:rgb(243, 243, 243);stroke:hsl(0, 0%, 85.2941176471%);}#chatgpt-mermaid-_r_143_ .activation1{fill:rgb(243, 243, 243);stroke:hsl(0, 0%, 85.2941176471%);}#chatgpt-mermaid-_r_143_ .activation2{fill:rgb(243, 243, 243);stroke:hsl(0, 0%, 85.2941176471%);}#chatgpt-mermaid-_r_143_ .actorPopupMenu{position:absolute;}#chatgpt-mermaid-_r_143_ .actorPopupMenuPanel{position:absolute;fill:rgb(222, 234, 251);box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#chatgpt-mermaid-_r_143_ .actor-man circle,#chatgpt-mermaid-_r_143_ line{fill:rgb(222, 234, 251);stroke-width:2px;}#chatgpt-mermaid-_r_143_ g rect.rect{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_143_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_143_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_143_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_143_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_143_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_143_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_143_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_143_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_143_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_143_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_143_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_143_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_143_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_143_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_143_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_143_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_143_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_143_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}TechnicianStart diagnostic sessionEstablish connectionSession statusRequest DTC interpretationRequest supported diagnostic dataData response or errorValidated diagnostic packageRetrieve relevant service evidenceDocuments and provenanceStructured evidence packageAdvisory with limitationsValidated resultFindings and next stepsTechnician
The sequence clarifies which component owns each operation and where errors must be handled. It should be extended with timeout branches, malformed messages, cancellation, unavailable services, and authorization failures before it is used as an implementation contract.
8.3 Example: inverter control sequence
Monitoring GatewayPower StageGate DriverProtection LogicReal-Time ControllerSensors and ADCMonitoring GatewayPower StageGate DriverProtection LogicReal-Time ControllerSensors and ADC#chatgpt-mermaid-_r_14c_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_14c_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_14c_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_14c_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_14c_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14c_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_14c_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_14c_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_14c_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_14c_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_14c_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_14c_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14c_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14c_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_14c_ p{margin:0;}#chatgpt-mermaid-_r_14c_ .actor{stroke:rgb(83, 154, 248);fill:rgb(222, 234, 251);stroke-width:1;}#chatgpt-mermaid-_r_14c_ rect.actor.outer-path[data-look="neo"]{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14c_ rect.note[data-look="neo"]{stroke:rgb(107, 198, 127);fill:rgb(243, 243, 243);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14c_ text.actor>tspan{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_14c_ .actor-line{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14c_ .innerArc{stroke-width:1.5;stroke-dasharray:none;}#chatgpt-mermaid-_r_14c_ .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14c_ .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14c_ [id$="-arrowhead"] path{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14c_ .sequenceNumber{fill:#707070;}#chatgpt-mermaid-_r_14c_ [id$="-sequencenumber"]{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14c_ [id$="-crosshead"] path{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14c_ .messageText{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_14c_ .labelBox{stroke:rgba(0, 0, 0, 0.1);fill:rgb(252, 252, 252);filter:none;}#chatgpt-mermaid-_r_14c_ .labelText,#chatgpt-mermaid-_r_14c_ .labelText>tspan{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_14c_ .loopText,#chatgpt-mermaid-_r_14c_ .loopText>tspan{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_14c_ .sectionTitle,#chatgpt-mermaid-_r_14c_ .sectionTitle>tspan{fill:rgb(13, 13, 13);stroke:none;}#chatgpt-mermaid-_r_14c_ .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:rgba(0, 0, 0, 0.1);fill:rgba(0, 0, 0, 0.1);}#chatgpt-mermaid-_r_14c_ .note{stroke:rgb(107, 198, 127);fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_14c_ .noteText,#chatgpt-mermaid-_r_14c_ .noteText>tspan{fill:rgb(13, 13, 13);stroke:none;font-weight:normal;}#chatgpt-mermaid-_r_14c_ .activation0{fill:rgb(243, 243, 243);stroke:hsl(0, 0%, 85.2941176471%);}#chatgpt-mermaid-_r_14c_ .activation1{fill:rgb(243, 243, 243);stroke:hsl(0, 0%, 85.2941176471%);}#chatgpt-mermaid-_r_14c_ .activation2{fill:rgb(243, 243, 243);stroke:hsl(0, 0%, 85.2941176471%);}#chatgpt-mermaid-_r_14c_ .actorPopupMenu{position:absolute;}#chatgpt-mermaid-_r_14c_ .actorPopupMenuPanel{position:absolute;fill:rgb(222, 234, 251);box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#chatgpt-mermaid-_r_14c_ .actor-man circle,#chatgpt-mermaid-_r_14c_ line{fill:rgb(222, 234, 251);stroke-width:2px;}#chatgpt-mermaid-_r_14c_ g rect.rect{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_14c_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_14c_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_14c_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_14c_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_14c_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14c_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_14c_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_14c_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_14c_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14c_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_14c_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_14c_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14c_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_14c_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_14c_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14c_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_14c_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14c_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}loop[Each control cycle]Sampled measurementsValidate and calculate controlOperating conditionsPermit or protective statusAuthorized switching updateGate-drive actionElectrical responseStatus and telemetry
This is a conceptual sequence. Actual switching logic, hardware interlocks, sampling synchronization, dead-time handling, and protection paths depend on the inverter topology and must be specified separately.
8.4 Mapping Gherkin scenarios to verification tests
Gherkin is a structured natural-language format used by BDD tooling. The official Cucumber reference documents its keywords and scenario structure. Cucumber Gherkin reference.
A scenario should be connected to a real test implementation where practical. For example:
|
Scenario |
Test layer |
Possible test environment |
|---|---|---|
|
OBD data response is valid |
Unit and component |
Mock adapter and decoder |
|
Missing OBD data is reported |
Integration |
Simulated transport failure |
|
Advisory cites retrieved evidence |
Service integration |
Controlled document corpus and model stub |
|
Inverter startup is rejected on sensor failure |
Firmware integration |
Processor simulation or hardware bench |
|
Protection response meets timing |
Hardware/firmware verification |
Timing instrumentation and appropriate test rig |
|
Remote link loss does not disable local control |
System integration |
Network fault injection and HIL |
The test layer must match the claim. A unit test cannot by itself prove a complete inverter protection path meets its physical response requirements.
8.5 Test doubles, simulation, and physical evidence
Software BDD is especially useful for repeatable behavioral tests, but it should be combined with engineering methods that exercise real interfaces.
For OBD-AI:
- Mock vehicle responses for unit tests.
- Protocol fixtures for decoder tests.
- Simulated adapter failures for robustness tests.
- Controlled service-document collections for retrieval tests.
- Ground-truth diagnostic cases for evaluating AI output.
- Vehicle or bench testing for final interface validation.
For smart inverters:
- Control-algorithm simulation.
- Processor-in-the-loop testing where appropriate.
- Hardware-in-the-loop testing.
- Sensor and communications fault injection.
- Bench measurements with suitable instrumentation.
- Electrical system tests under approved procedures.
A simulation result is evidence for the model and assumptions exercised. It does not automatically prove the behavior of the physical system under all conditions.
9. Verification, validation, and engineering evidence
9.1 Verification versus validation
These terms describe different questions.
- Verification: Does the system or component satisfy its specified requirements?
- Validation: Does the resulting system meet the stakeholder's intended need in its operational context?
For OBD-AI, verification might demonstrate that an unavailable diagnostic value is represented correctly. Validation would examine whether technicians can use the system to investigate real diagnostic cases effectively and without being misled by unsupported conclusions.
For a smart inverter, verification might demonstrate a defined control-loop deadline under specified conditions. Validation would establish that the complete inverter performs its intended role in the target installation and operating environment.
9.2 Verification hierarchy
Level 1 — Requirements and model checks
Requirement quality, consistency, traceability, interface completeness, and model integrity.
Level 2 — Unit and component verification
Software functions, firmware modules, drivers, protocol decoders, and hardware subassemblies.
Level 3 — Subsystem integration
Communication between embedded software, sensors, interfaces, applications, and services.
Level 4 — System integration
End-to-end operation using representative hardware, software, and external interfaces.
Level 5 — Operational validation
Representative users, real-world workflows, operating conditions, and acceptance criteria.
The sequence is not strictly linear. Hardware-in-the-loop, simulation, static analysis, security testing, and safety analysis may occur at several levels.
9.3 Verification matrix: OBD-AI
|
ID |
Requirement objective |
Verification method |
Example evidence |
|---|---|---|---|
|
REQ-OBD-001 |
Detect supported adapter connection status |
Test |
Connection test log |
|
REQ-OBD-002 |
Validate incoming diagnostic data |
Unit/integration test |
Test results and malformed-frame fixtures |
|
REQ-OBD-003 |
Represent unavailable data explicitly |
Negative test |
Assertion and execution report |
|
REQ-OBD-004 |
Preserve vehicle context with interpretation |
Integration test |
Case record comparison |
|
REQ-OBD-005 |
Associate advisory claims with evidence |
Evaluation test |
Evidence coverage report |
|
REQ-OBD-006 |
Preserve diagnostic case provenance |
Integration test |
Audit record inspection |
|
REQ-OBD-007 |
Enforce authorized access to stored cases |
Security test |
Access-control test report |
|
REQ-OBD-008 |
Handle service unavailability gracefully |
Fault-injection test |
Recovery and error logs |
These IDs are proposed examples. They must be created as model elements and linked to the actual use cases, components, and verification cases.
AI-specific quality measurements
An AI diagnostic system needs more than conventional software pass/fail tests. Suggested evaluation measures include:
- Evidence-supported claim rate.
- Unsupported-claim rate.
- Correct abstention when evidence is insufficient.
- Retrieval relevance and coverage.
- Citation or source-reference correctness.
- Diagnostic consistency across equivalent cases.
- Robustness to incomplete, contradictory, or malformed inputs.
- Response latency and resource cost.
- Performance differences across supported vehicle categories and diagnostic tasks.
Define the denominator and scoring procedure for every metric. A high retrieval score alone does not prove that the generated diagnosis is correct.
9.4 Verification matrix: smart inverter
|
ID |
Requirement objective |
Verification method |
Example evidence |
|---|---|---|---|
|
REQ-INV-001 |
Validate required sensor inputs |
Test and calibration evidence |
Sensor test results |
|
REQ-INV-002 |
Meet the defined control deadline |
Timing measurement and analysis |
Execution-time and latency report |
|
REQ-INV-003 |
Reject startup with an invalid required input |
Fault-injection test |
State transition and event log |
|
REQ-INV-004 |
Execute the specified protective response |
Bench or HIL test |
Instrumented response record |
|
REQ-INV-005 |
Handle remote communication loss as specified |
Integration test |
Fault-injection report |
|
REQ-INV-006 |
Validate configuration before operation |
Software test and commissioning test |
Configuration-validation evidence |
|
REQ-INV-007 |
Maintain required behavior across supported modes |
State and system tests |
Mode-transition test report |
|
REQ-INV-008 |
Record relevant fault events |
Integration test |
Event log and timestamp review |
Some requirements need multiple forms of evidence. For example, control-loop timing may require static analysis, worst-case execution-time analysis, measurement, and testing across defined operating conditions.
9.5 Requirements coverage
A simple verification coverage measure can be defined as:
\[ C_v=\frac{N_{\text{approved requirements with accepted evidence}}} {N_{\text{approved requirements requiring verification}}}\times100\% \]
This is a management indicator, not proof that the system is correct. A project could have complete coverage while using weak tests that do not adequately verify the requirements.
Report at least:
- Requirements with no verification case.
- Verification cases with no linked requirement.
- Tests that exist but have not been executed.
- Failed tests.
- Tests whose evidence is stale relative to the current implementation.
- Requirements whose verification evidence has not been formally accepted.
9.6 Change-impact analysis
Suppose the OBD adapter's response format changes. The engineering team should identify affected:
- Interface requirements.
- Adapter and protocol models.
- Data-validation logic.
- Diagnostic session use cases.
- API or message contracts.
- Unit and integration tests.
- Mobile application compatibility.
- Case-history records and analytics.
- Documentation and release notes.
For the inverter, a sensor-range change might affect the analog front end, ADC configuration, scaling calculations, plausibility checks, control algorithms, protection thresholds, calibration procedures, and HIL test scenarios.
Use EA relationships to discover candidate impacts, but require engineering judgment to determine which changes actually demand redesign or retesting.
10. Engineering toolchain and DevOps integration
10.1 Establish clear ownership of artifacts
A practical engineering environment may include:
|
Artifact |
Recommended system of record |
|---|---|
|
System requirements and architecture |
Sparx EA model repository |
|
Firmware and application source |
Version-control repository |
|
Automated software tests |
Test framework and version-controlled test suite |
|
Circuit schematics and PCB design |
Electrical CAD repository |
|
Control and power-system simulation |
Appropriate simulation environment |
|
Build outputs and release packages |
Controlled artifact repository |
|
HIL test data |
Test-management system or evidence repository |
|
Issue and defect records |
Project issue tracker |
|
Approved baselines and review decisions |
Controlled engineering records |
Avoid maintaining several editable copies of the same requirement without a defined synchronization and approval process.
10.2 Proposed CI pipeline
#chatgpt-mermaid-_r_14l_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_14l_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_14l_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_14l_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_14l_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14l_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_14l_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_14l_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_14l_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_14l_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_14l_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_14l_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14l_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14l_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_14l_ p{margin:0;}#chatgpt-mermaid-_r_14l_ .label{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14l_ .cluster-label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14l_ .cluster-label span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14l_ .cluster-label span p{background-color:transparent;}#chatgpt-mermaid-_r_14l_ .label text,#chatgpt-mermaid-_r_14l_ span{fill:rgb(13, 13, 13);color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14l_ .node rect,#chatgpt-mermaid-_r_14l_ .node circle,#chatgpt-mermaid-_r_14l_ .node ellipse,#chatgpt-mermaid-_r_14l_ .node polygon,#chatgpt-mermaid-_r_14l_ .node path{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_14l_ .rough-node .label text,#chatgpt-mermaid-_r_14l_ .node .label text,#chatgpt-mermaid-_r_14l_ .image-shape .label,#chatgpt-mermaid-_r_14l_ .icon-shape .label{text-anchor:middle;}#chatgpt-mermaid-_r_14l_ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#chatgpt-mermaid-_r_14l_ .rough-node .label,#chatgpt-mermaid-_r_14l_ .node .label,#chatgpt-mermaid-_r_14l_ .image-shape .label,#chatgpt-mermaid-_r_14l_ .icon-shape .label{text-align:center;}#chatgpt-mermaid-_r_14l_ .node.clickable{cursor:pointer;}#chatgpt-mermaid-_r_14l_ .root .anchor path{fill:rgb(143, 143, 143)!important;stroke-width:0;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14l_ .arrowheadPath{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14l_ .edgePath .path{stroke:rgb(143, 143, 143);stroke-width:1px;}#chatgpt-mermaid-_r_14l_ .flowchart-link{stroke:rgb(143, 143, 143);fill:none;}#chatgpt-mermaid-_r_14l_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_14l_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_14l_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_14l_ .labelBkg{background-color:rgba(252, 252, 252, 0.5);}#chatgpt-mermaid-_r_14l_ .cluster rect{fill:rgb(243, 243, 243);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_14l_ .cluster text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14l_ .cluster span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14l_ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:rgb(243, 243, 243);border:1px solid rgba(0, 0, 0, 0.1);border-radius:2px;pointer-events:none;z-index:100;}#chatgpt-mermaid-_r_14l_ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14l_ rect.text{fill:none;stroke-width:0;}#chatgpt-mermaid-_r_14l_ .icon-shape,#chatgpt-mermaid-_r_14l_ .image-shape{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_14l_ .icon-shape p,#chatgpt-mermaid-_r_14l_ .image-shape p{background-color:rgb(252, 252, 252);padding:2px;}#chatgpt-mermaid-_r_14l_ .icon-shape .label rect,#chatgpt-mermaid-_r_14l_ .image-shape .label rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_14l_ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#chatgpt-mermaid-_r_14l_ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#chatgpt-mermaid-_r_14l_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_14l_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_14l_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_14l_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_14l_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14l_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_14l_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_14l_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_14l_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14l_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_14l_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_14l_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14l_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_14l_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_14l_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14l_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_14l_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14l_ .node text{font-size:14px;font-weight:600;letter-spacing:normal;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_14l_ .edgeLabels text{font-size:13px;font-weight:600;letter-spacing:-0.08px;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_14l_ .node tspan[font-weight="normal"],#chatgpt-mermaid-_r_14l_ .edgeLabels tspan[font-weight="normal"]{font-weight:600;}#chatgpt-mermaid-_r_14l_ .edgeLabel .label rect{opacity:1;rx:13px;ry:13px;fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-width:1px;}#chatgpt-mermaid-_r_14l_ .node rect,#chatgpt-mermaid-_r_14l_ .node circle,#chatgpt-mermaid-_r_14l_ .node ellipse,#chatgpt-mermaid-_r_14l_ .node polygon,#chatgpt-mermaid-_r_14l_ .node path{fill:rgb(229, 243, 255);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_14l_ .node rect{rx:16px;ry:16px;}#chatgpt-mermaid-_r_14l_ .node.mermaid-decision .label-container{fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-dasharray:2,2;}#chatgpt-mermaid-_r_14l_ .edgePaths .flowchart-link{stroke:rgb(143, 143, 143);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;}#chatgpt-mermaid-_r_14l_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14l_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}Approved Model BaselineChange RequestVersion-Controlled SourceBuild and Static AnalysisUnit TestsIntegration TestsSimulation or HILEvidence CollectionEngineering ReviewApproved Releasefeedback and defects
This diagram illustrates a proposed workflow, not an automatically provided EA capability. The team must implement repository integration, build orchestration, traceability checks, and evidence collection with its selected tools.
10.3 Model governance and versioning
Every approved model baseline should identify:
- Model version or baseline identifier.
- Approval date and responsible reviewers.
- Requirements status.
- Architecture decisions.
- Open issues and accepted risks.
- Referenced source-code commits.
- Relevant interface versions.
- Test suite versions and execution results.
- Simulation or HIL configurations.
- Known limitations and deferred requirements.
If a model element is modified after a baseline, the project should be able to determine whether the change affects an approved requirement, a released product, or an existing verification result.
10.4 Automated consistency checks
A useful model-quality pipeline can detect:
- Requirements without unique IDs.
- Approved requirements without verification methods.
- Requirements with no downstream design allocation.
- Components with no identified owner.
- Interfaces without producer or consumer definitions.
- Verification cases with no requirement link.
- Unresolved high-priority defects.
- Stale implementation or test references.
- Unapproved changes to controlled baselines.
Not every rule can be enforced through built-in EA features alone. Some checks may require EA validation facilities, scripts, API-based extraction, external model queries, or custom reports.
10.5 AI-assisted engineering with human review
AI can help draft requirement candidates, propose test scenarios, summarize model changes, and identify possible missing relationships. However, AI-generated engineering content should be treated as a proposal until reviewed by the responsible engineer.
For example, an AI assistant could propose a Gherkin scenario for sensor failure. A controls engineer must confirm that the scenario reflects the actual safety requirements and hardware architecture before it becomes an approved acceptance test.
The same principle applies to generated architecture diagrams, ICDs, timing analyses, and test procedures. Automated generation is not equivalent to engineering approval.
11. Standards, safety, cybersecurity, and compliance
11.1 Standards strategy
Standards must be selected according to the product's intended use, jurisdiction, installation context, and contractual obligations. The following list identifies relevant families and areas for investigation; it is not a declaration of compliance.
|
Area |
Standards or guidance to investigate |
Application |
|---|---|---|
|
Systems and software lifecycle |
ISO/IEC/IEEE 15288; ISO/IEC/IEEE 12207 |
System and software lifecycle processes |
|
Requirements engineering |
ISO/IEC/IEEE 29148 |
Requirements processes and specification quality |
|
Systems modeling |
OMG SysML |
System structure, behavior, requirements, and constraints |
|
Automotive functional safety |
ISO 26262, where applicable |
Safety-related automotive electrical/electronic systems |
|
Road-vehicle cybersecurity |
ISO/SAE 21434, where applicable |
Automotive cybersecurity engineering |
|
Industrial cybersecurity |
IEC 62443, where applicable |
Industrial automation and control-system security |
|
Power electronic converter safety |
Applicable IEC 62477 series requirements |
Safety considerations for power electronic converter systems |
|
Grid-interconnected inverter requirements |
Applicable IEEE 1547 and UL 1741 editions, where relevant |
Interconnection and inverter/converter requirements in applicable markets |
|
Power quality |
Applicable IEEE 519 or jurisdiction-specific requirements |
Harmonic and power-quality considerations |
|
Software security |
Applicable secure-development and vulnerability-management guidance |
Secure design, testing, maintenance, and response |
The applicable editions, amendments, certifications, and regional requirements must be verified with the relevant standards bodies, certification organizations, and authorities having jurisdiction. Not every standard in the table applies to every OBD-AI or inverter implementation.
11.2 Functional safety and fault handling
For safety-relevant functions, use an explicit hazard and risk process. Identify hazardous situations, determine required risk reduction, allocate safety requirements, and verify the resulting design.
For a smart inverter, relevant concerns may include:
- Erroneous or missing sensor signals.
- Failure to detect a hazardous condition.
- Unintended switching or actuation.
- Control software lockup.
- Common-cause failures between control and protection.
- Incorrect configuration or calibration.
- Loss of auxiliary power.
- Communication failures and stale commands.
The appropriate response depends on the actual inverter architecture and hazards. A generic software test cannot establish the adequacy of an electrical protection design.
For OBD-AI, the risks are different but still significant. An incorrect advisory could lead to unnecessary repairs or unsafe maintenance decisions. The product should communicate uncertainty, distinguish a diagnostic code from a confirmed failed component, and direct users to suitable service procedures where needed.
11.3 Cybersecurity and data protection
For both reference systems, consider:
- Authentication and authorization.
- Secure update and configuration mechanisms.
- Interface hardening.
- Secrets and key management.
- Input validation.
- Logging and auditability.
- Dependency and vulnerability management.
- Recovery from compromised or corrupted data.
- Access controls for diagnostic and operational records.
OBD-AI may retain vehicle-related and customer information. Its design should define what is collected, why it is collected, who can access it, how long it is retained, and how it can be deleted according to applicable policy and law.
A smart inverter's communication and update interfaces require security controls appropriate to the product's exposure and operational role. Remote monitoring should not silently acquire authority to override local protection requirements.
11.4 AI assurance for OBD-AI
An AI advisory system should have explicit quality and failure-handling requirements.
Recommended controls include:
- Ground answers in relevant, versioned service information where available.
- Preserve evidence provenance.
- Separate observed facts, retrieved references, and generated hypotheses.
- Detect insufficient or contradictory evidence.
- Permit abstention instead of forcing a diagnosis.
- Evaluate against controlled test cases and documented ground truth.
- Test prompt-injection and malicious content in retrieved documents.
- Version models, prompts, retrieval configuration, and knowledge sources.
- Log the evidence and configuration needed to investigate an output.
- Maintain human review for consequential maintenance decisions.
For the smart inverter reference architecture, cloud AI may support historical analytics or maintenance recommendations. It is not assumed to be part of the fast protection loop.
12. A practical 12-week implementation roadmap
The roadmap below is a proposed pilot for a small multidisciplinary team. It is not a universal project schedule; hardware procurement, certification, detailed control design, and production qualification may require substantially longer.
Weeks 1–2
Discovery and scope
Identify stakeholders, operational scenarios, system boundaries, assumptions, risks, and candidate requirements.
Deliverables: scope statement, context model, initial use cases, requirements plan.
Weeks 3–4
Architecture and modeling
Create the EA package structure, requirements hierarchy, logical architecture, interface inventory, and initial behavior models.
Deliverables: model baseline v0.1, architecture diagrams, initial traceability.
Weeks 5–6
Allocation and interface definition
Allocate functions across hardware and software. Define ICDs, timing constraints, fault behavior, and verification strategy.
Deliverables: allocation matrix, interface specifications, risk review.
Weeks 7–8
Behavior and test development
Develop Gherkin scenarios, unit-test plans, integration tests, simulation cases, and verification mappings.
Deliverables: executable test candidates, verification matrix, test fixtures.
Weeks 9–10
Prototype integration
Implement a narrow end-to-end slice and verify key interfaces. Use simulated inputs or bench hardware appropriate to the selected prototype.
Deliverables: integrated prototype, automated results, defect list.
Weeks 11–12
Review, baseline, and next-phase plan
Evaluate requirements coverage, unresolved risks, test evidence, architecture quality, and project readiness.
Deliverables: approved pilot baseline, lessons learned, prioritized implementation plan.
12.1 Select a narrow pilot
For OBD-AI, a suitable pilot is:
- One supported diagnostic interface.
- One defined diagnostic acquisition workflow.
- A controlled set of supported DTC cases.
- One service-document retrieval path.
- One evidence-grounded advisory output.
- One persistent diagnostic record.
- Automated positive and negative tests.
For a smart inverter, a suitable pilot is:
- One defined operating mode.
- A representative controller and sensor interface.
- A modeled startup and shutdown sequence.
- One selected fault-handling behavior.
- A simulation or bench verification path.
- A traceable requirement-to-test baseline.
Do not begin by modeling every future capability. The pilot should prove the engineering process on a complete, bounded slice of the system.
12.2 Suggested project roles
|
Role |
Responsibility |
|---|---|
|
Systems engineer |
Requirements, architecture, traceability, integration |
|
Hardware engineer |
Electronics, sensors, power stage, physical interfaces |
|
Embedded engineer |
Drivers, RTOS, real-time behavior, firmware integration |
|
Software architect |
Application and service architecture, contracts, domain boundaries |
|
Test engineer |
Verification strategy, test design, evidence management |
|
Domain specialist |
Automotive diagnostics or power-conversion engineering |
|
Security specialist |
Threat analysis, secure interfaces, vulnerability management |
|
Product owner |
Stakeholder priorities, scope, acceptance, and commercial fit |
In a small organization, one person may hold several roles. Responsibilities still need to be explicit, especially for independent review of safety-relevant decisions.
13. Key performance indicators for the engineering process
A successful MBSE initiative should be evaluated through engineering outcomes, not by counting diagrams.
13.1 Suggested KPIs
|
KPI |
Definition |
Why it matters |
|---|---|---|
|
Requirement completeness |
Approved requirements with defined verification methods |
Indicates whether requirements are ready for verification |
|
Traceability coverage |
Approved requirements linked to relevant architecture and verification elements |
Reveals gaps in the engineering thread |
|
Change-impact response time |
Time needed to identify affected elements after a proposed change |
Measures the usefulness of model relationships |
|
Interface defect rate |
Defects attributed to misunderstood or incompatible interfaces |
Indicates the quality of interface definition and integration |
|
Test automation rate |
Applicable regression tests executed automatically |
Measures repeatability, not test adequacy |
|
Defect escape rate |
Defects discovered after the intended verification stage |
Indicates gaps in verification effectiveness |
|
Timing margin |
Measured or analyzed deadline margin under specified conditions |
Supports real-time feasibility assessment |
|
Model freshness |
Time since controlled artifacts and model links were reconciled |
Helps prevent stale traceability |
|
Evidence acceptance rate |
Verification results accepted against defined criteria |
Indicates evidence quality |
|
Rework effort |
Engineering effort spent correcting preventable design or integration errors |
Helps evaluate the process's practical value |
Define each KPI's measurement method and target before collecting results. Do not assume that a single numeric target is appropriate across prototype, research, and production phases.
13.2 Avoid misleading metrics
Several indicators can look positive while the engineering process remains weak.
For example:
- A model can contain hundreds of diagrams without useful traceability.
- All requirements can have test links while the tests fail to exercise important conditions.
- A high automated-test percentage can coexist with poor coverage of hardware failure modes.
- A fast change-impact report can omit relationships that were never modeled.
Combine quantitative metrics with design reviews, technical risk assessments, and representative verification evidence.
14. Common engineering mistakes and how to prevent them
14.1 Treating diagrams as the deliverable
Problem: The team produces attractive diagrams but does not maintain their relationships to requirements, interfaces, and tests.
Remedy: Define the engineering question each diagram answers. Give important elements stable identifiers, assign owners, and connect the elements to the appropriate model relationships.
14.2 Confusing structural BDD with Behavior-Driven Development
Problem: The team assumes a SysML Block Definition Diagram is an executable behavior specification.
Remedy: Use structural models for system composition and relationships. Use Gherkin scenarios and automated tests for observable behavior. Connect the two through requirements and verification relationships.
14.3 Starting from the technology rather than the need
Problem: The team starts with a preferred MCU, FPGA, RAG framework, or cloud platform before establishing system constraints.
Remedy: Define stakeholder needs, operating scenarios, measurable requirements, and architectural constraints before finalizing technology choices.
14.4 Using DDD as a substitute for system architecture
Problem: Software bounded contexts are created without modeling physical interfaces, timing, or failure behavior.
Remedy: Define the system architecture first, then use DDD to organize software responsibilities inside the approved system boundary.
14.5 Putting real-time control in an unreliable remote service
Problem: A cloud service is placed in a fast control or protection path without demonstrating that its latency, availability, and failure behavior meet the requirements.
Remedy: Keep required local control and protection functions within a suitable local architecture. Use remote services for functions whose timing and failure consequences permit them.
14.6 Treating AI output as verified truth
Problem: An AI-generated automotive diagnosis is presented as a confirmed mechanical failure, or an AI-generated engineering suggestion is accepted without review.
Remedy: Preserve evidence provenance, represent uncertainty, test abstention behavior, and require qualified review for consequential decisions.
14.7 Ignoring hardware timing until integration
Problem: The firmware appears correct in a unit test but misses a deadline when sensor acquisition, scheduling, communication, and actuation are combined.
Remedy: Allocate and analyze timing budgets early. Validate the complete path with appropriate simulation, instrumentation, and hardware testing.
14.8 Maintaining duplicate sources of truth
Problem: Requirements, interface definitions, and design assumptions diverge across spreadsheets, PDFs, EA, source comments, and test scripts.
Remedy: Establish ownership, controlled references, baselines, and a documented process for changing authoritative artifacts.
14.9 Claiming compliance from modeling alone
Problem: A complete-looking SysML model is treated as evidence that a product meets safety or regulatory requirements.
Remedy: Treat models as part of the engineering evidence. Perform the required analyses, tests, inspections, reviews, and certification activities for the actual product and jurisdiction.
15. Strategic implementation by IAS-Research.com, KeenComputer.com, and KeenDirect.com
The three organizations can form a complementary research-to-deployment capability. The roles should remain distinct so that research, system design, implementation, and commercial operation are coordinated without being confused.
IAS-Research.com — Research and systems engineering
Role: Define, model, analyze, and validate the engineering approach.
- MBSE and SysML architecture.
- Hardware–software co-design and allocation studies.
- DDD and software architecture research.
- AI/ML, RAG, embedded Linux, RTOS, FPGA, and control-system research.
- Requirements engineering, technical trade studies, and verification strategy.
- Research white papers, prototypes, and technical feasibility assessments.
KeenComputer.com — Engineering implementation and managed services
Role: Build, integrate, test, deploy, and maintain the solution.
- Embedded and application software development.
- API, cloud, and database integration.
- DevOps, CI/CD, deployment automation, and monitoring.
- Security hardening and operational support.
- Test automation and integration assistance.
- Prototype development and lifecycle maintenance.
KeenDirect.com — Commercialization and digital operations
Role: Package, present, distribute, and support commercial offerings.
- Product and service catalogues.
- Ecommerce and customer-facing service portals.
- Technical product documentation and knowledge delivery.
- Online ordering and service-request workflows.
- Customer feedback, product information, and support operations.
- Commercial packaging for reusable engineering solutions.
These are proposed strategic roles, not claims that every capability is already operational or certified.
15.1 A joint research-to-product workflow
#chatgpt-mermaid-_r_14u_{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;fill:rgb(13, 13, 13);}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#chatgpt-mermaid-_r_14u_ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_14u_ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#chatgpt-mermaid-_r_14u_ .error-icon{fill:rgb(243, 243, 243);}#chatgpt-mermaid-_r_14u_ .error-text{fill:rgb(13, 13, 13);stroke:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14u_ .edge-thickness-normal{stroke-width:1px;}#chatgpt-mermaid-_r_14u_ .edge-thickness-thick{stroke-width:3.5px;}#chatgpt-mermaid-_r_14u_ .edge-pattern-solid{stroke-dasharray:0;}#chatgpt-mermaid-_r_14u_ .edge-thickness-invisible{stroke-width:0;fill:none;}#chatgpt-mermaid-_r_14u_ .edge-pattern-dashed{stroke-dasharray:3;}#chatgpt-mermaid-_r_14u_ .edge-pattern-dotted{stroke-dasharray:2;}#chatgpt-mermaid-_r_14u_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14u_ .marker.cross{stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14u_ svg{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:16px;}#chatgpt-mermaid-_r_14u_ p{margin:0;}#chatgpt-mermaid-_r_14u_ .label{font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14u_ .cluster-label text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14u_ .cluster-label span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14u_ .cluster-label span p{background-color:transparent;}#chatgpt-mermaid-_r_14u_ .label text,#chatgpt-mermaid-_r_14u_ span{fill:rgb(13, 13, 13);color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14u_ .node rect,#chatgpt-mermaid-_r_14u_ .node circle,#chatgpt-mermaid-_r_14u_ .node ellipse,#chatgpt-mermaid-_r_14u_ .node polygon,#chatgpt-mermaid-_r_14u_ .node path{fill:rgb(222, 234, 251);stroke:rgb(83, 154, 248);stroke-width:1px;}#chatgpt-mermaid-_r_14u_ .rough-node .label text,#chatgpt-mermaid-_r_14u_ .node .label text,#chatgpt-mermaid-_r_14u_ .image-shape .label,#chatgpt-mermaid-_r_14u_ .icon-shape .label{text-anchor:middle;}#chatgpt-mermaid-_r_14u_ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#chatgpt-mermaid-_r_14u_ .rough-node .label,#chatgpt-mermaid-_r_14u_ .node .label,#chatgpt-mermaid-_r_14u_ .image-shape .label,#chatgpt-mermaid-_r_14u_ .icon-shape .label{text-align:center;}#chatgpt-mermaid-_r_14u_ .node.clickable{cursor:pointer;}#chatgpt-mermaid-_r_14u_ .root .anchor path{fill:rgb(143, 143, 143)!important;stroke-width:0;stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14u_ .arrowheadPath{fill:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14u_ .edgePath .path{stroke:rgb(143, 143, 143);stroke-width:1px;}#chatgpt-mermaid-_r_14u_ .flowchart-link{stroke:rgb(143, 143, 143);fill:none;}#chatgpt-mermaid-_r_14u_ .edgeLabel{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_14u_ .edgeLabel p{background-color:rgb(252, 252, 252);}#chatgpt-mermaid-_r_14u_ .edgeLabel rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_14u_ .labelBkg{background-color:rgba(252, 252, 252, 0.5);}#chatgpt-mermaid-_r_14u_ .cluster rect{fill:rgb(243, 243, 243);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_14u_ .cluster text{fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14u_ .cluster span{color:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14u_ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";font-size:12px;background:rgb(243, 243, 243);border:1px solid rgba(0, 0, 0, 0.1);border-radius:2px;pointer-events:none;z-index:100;}#chatgpt-mermaid-_r_14u_ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:rgb(13, 13, 13);}#chatgpt-mermaid-_r_14u_ rect.text{fill:none;stroke-width:0;}#chatgpt-mermaid-_r_14u_ .icon-shape,#chatgpt-mermaid-_r_14u_ .image-shape{background-color:rgb(252, 252, 252);text-align:center;}#chatgpt-mermaid-_r_14u_ .icon-shape p,#chatgpt-mermaid-_r_14u_ .image-shape p{background-color:rgb(252, 252, 252);padding:2px;}#chatgpt-mermaid-_r_14u_ .icon-shape .label rect,#chatgpt-mermaid-_r_14u_ .image-shape .label rect{opacity:0.5;background-color:rgb(252, 252, 252);fill:rgb(252, 252, 252);}#chatgpt-mermaid-_r_14u_ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#chatgpt-mermaid-_r_14u_ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#chatgpt-mermaid-_r_14u_ .node .neo-node{stroke:rgb(83, 154, 248);}#chatgpt-mermaid-_r_14u_ [data-look="neo"].node rect,#chatgpt-mermaid-_r_14u_ [data-look="neo"].cluster rect,#chatgpt-mermaid-_r_14u_ [data-look="neo"].node polygon{stroke:url(#chatgpt-mermaid-_r_14u_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14u_ [data-look="neo"].swimlane.cluster rect{filter:none;}#chatgpt-mermaid-_r_14u_ [data-look="neo"].node path{stroke:url(#chatgpt-mermaid-_r_14u_-gradient);stroke-width:1px;}#chatgpt-mermaid-_r_14u_ [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14u_ [data-look="neo"].node .neo-line path{stroke:rgb(83, 154, 248);filter:none;}#chatgpt-mermaid-_r_14u_ [data-look="neo"].node circle{stroke:url(#chatgpt-mermaid-_r_14u_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14u_ [data-look="neo"].node circle .state-start{fill:#000000;}#chatgpt-mermaid-_r_14u_ [data-look="neo"].icon-shape .icon{fill:url(#chatgpt-mermaid-_r_14u_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14u_ [data-look="neo"].icon-shape .icon-neo path{stroke:url(#chatgpt-mermaid-_r_14u_-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#chatgpt-mermaid-_r_14u_ .node text{font-size:14px;font-weight:600;letter-spacing:normal;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_14u_ .edgeLabels text{font-size:13px;font-weight:600;letter-spacing:-0.08px;fill:rgb(0, 79, 153);}#chatgpt-mermaid-_r_14u_ .node tspan[font-weight="normal"],#chatgpt-mermaid-_r_14u_ .edgeLabels tspan[font-weight="normal"]{font-weight:600;}#chatgpt-mermaid-_r_14u_ .edgeLabel .label rect{opacity:1;rx:13px;ry:13px;fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-width:1px;}#chatgpt-mermaid-_r_14u_ .node rect,#chatgpt-mermaid-_r_14u_ .node circle,#chatgpt-mermaid-_r_14u_ .node ellipse,#chatgpt-mermaid-_r_14u_ .node polygon,#chatgpt-mermaid-_r_14u_ .node path{fill:rgb(229, 243, 255);stroke:rgba(0, 0, 0, 0.1);stroke-width:1px;}#chatgpt-mermaid-_r_14u_ .node rect{rx:16px;ry:16px;}#chatgpt-mermaid-_r_14u_ .node.mermaid-decision .label-container{fill:rgb(245, 250, 255);stroke:rgb(206, 219, 229);stroke-dasharray:2,2;}#chatgpt-mermaid-_r_14u_ .edgePaths .flowchart-link{stroke:rgb(143, 143, 143);stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;}#chatgpt-mermaid-_r_14u_ .marker{fill:rgb(143, 143, 143);stroke:rgb(143, 143, 143);}#chatgpt-mermaid-_r_14u_ :root{--mermaid-font-family:-apple-system-body,ui-sans-serif,-apple-system,system-ui,"Segoe UI",Helvetica,"Apple Color Emoji",Arial,sans-serif,"Segoe UI Emoji","Segoe UI Symbol";}IAS-Research.comResearch and ArchitectureMBSE Model andVerification StrategyKeenComputer.comBuild and IntegrationTesting andDeploymentKeenDirect.comCommercial DeliveryCustomer andOperational Feedback
The common engineering model provides a shared reference point across research, implementation, and commercialization.
For example, IAS-Research could define the OBD-AI requirements, diagnostic architecture, evaluation strategy, and AI assurance approach. KeenComputer could implement the mobile application, backend, interfaces, automated tests, and deployment pipeline. KeenDirect could provide the commercial product information, customer portal, service packages, and ordering workflows.
For the smart inverter, IAS-Research could lead architecture and co-design studies; KeenComputer could support embedded software, interfaces, test automation, and monitoring; KeenDirect could support product documentation and customer-facing delivery if a commercial offering is established.
15.2 Proposed service offerings
|
Offering |
Deliverable |
Suitable customer |
|---|---|---|
|
MBSE Readiness Assessment |
Gap analysis, modeling strategy, pilot scope |
SME engineering firm |
|
Requirements and Traceability Package |
Structured requirements, use cases, verification matrix |
Embedded-product team |
|
Hardware–Software Co-Design Study |
Allocation analysis, interface definition, timing review |
Electronics manufacturer |
|
Sparx EA Model Setup |
Repository structure, conventions, traceability, baseline workflow |
Engineering organization |
|
BDD and Test Automation Pilot |
Gherkin scenarios, automated tests, test reports |
Software or firmware team |
|
Embedded Systems Verification |
Test strategy, simulation/HIL planning, evidence review |
Industrial or automotive supplier |
|
AI-Assisted Diagnostics Prototype |
Grounded retrieval, diagnostic workflow, evaluation harness |
Automotive service organization |
|
Smart Inverter Architecture Study |
System architecture, control boundaries, interface and verification plan |
Energy technology developer |
Scope, effort, fees, delivery schedules, and acceptance criteria should be defined for each engagement. The most practical starting point is a short assessment followed by a bounded pilot with measurable deliverables.
15.3 Suggested call to action
For organizations planning an embedded, automotive, energy, or AI-enabled product, a useful first step is an MBSE and Hardware–Software Co-Design Assessment.
The engagement can establish:
- The product's operational boundary and stakeholder needs.
- The most important use cases and system requirements.
- The initial Sparx EA model and traceability structure.
- The highest-risk hardware/software interfaces.
- A prioritized verification strategy.
- A pilot implementation plan with measurable acceptance criteria.
The objective is to reduce architectural uncertainty before that uncertainty becomes expensive implementation rework.
16. Conclusion
Hardware–software co-design requires a unified engineering approach that connects stakeholder intent to physical implementation and objective evidence.
MBSE provides the system-level structure for requirements, architecture, behavior, constraints, and verification. SysML supplies a modeling language for those engineering concerns. Use cases describe the operational outcomes the system must support. Software Behavior-Driven Development turns selected requirements into concrete behavioral acceptance scenarios. Domain-Driven Design organizes complex software around explicit domain responsibilities and boundaries.
Sparx Enterprise Architect can serve as the central repository for this engineering model. It becomes significantly more valuable when model elements have stable identifiers, relationships are maintained deliberately, and implementation and verification artifacts can be traced to approved requirements and architecture decisions.
The OBD-AI example demonstrates the need to distinguish vehicle observations, diagnostic interpretations, retrieved service evidence, and AI-generated hypotheses. The smart inverter example demonstrates why local real-time control, physical interfaces, and protection behavior must be designed and verified alongside the software architecture.
The most important principle is not to maximize the number of models, diagrams, or automated tests. It is to maintain a trustworthy engineering thread from the original need to the evidence that the delivered system satisfies its requirements.
For IAS-Research.com, KeenComputer.com, and KeenDirect.com, this method offers a practical way to connect research, engineering implementation, verification, and commercialization through a shared, traceable design process.
Appendix A. Example requirement catalogue
The following requirements are proposed starting points. They are not approved product requirements and should be refined against the actual system context.
A.1 OBD-AI requirements
|
ID |
Requirement statement |
Verification |
|---|---|---|
|
REQ-OBD-001 |
The system shall report whether a supported diagnostic interface is connected. |
Test |
|
REQ-OBD-002 |
The system shall validate the structure of received diagnostic responses before interpretation. |
Test |
|
REQ-OBD-003 |
The system shall distinguish unavailable measurements from valid numerical values. |
Test |
|
REQ-OBD-004 |
The system shall associate each diagnostic interpretation with its available vehicle context. |
Integration test |
|
REQ-OBD-005 |
The system shall distinguish a reported diagnostic code from a confirmed root cause. |
Acceptance test |
|
REQ-OBD-006 |
The system shall preserve the source identifiers of service information used in an advisory. |
Integration test |
|
REQ-OBD-007 |
The system shall report when evidence is insufficient to support an advisory. |
AI evaluation |
|
REQ-OBD-008 |
The system shall record the software and knowledge-source versions required by the approved audit policy. |
Inspection and test |
|
REQ-OBD-009 |
The system shall enforce the approved access policy for stored diagnostic cases. |
Security test |
|
REQ-OBD-010 |
The system shall report communication failures without silently representing them as successful diagnostic results. |
Fault-injection test |
A.2 Smart inverter requirements
|
ID |
Requirement statement |
Verification |
|---|---|---|
|
REQ-INV-001 |
The controller shall validate the required measurement inputs before authorizing startup. |
Test |
|
REQ-INV-002 |
The control function shall complete within its approved deadline under the specified operating conditions. |
Timing analysis and test |
|
REQ-INV-003 |
The inverter shall reject startup when a required interlock is not satisfied. |
Test |
|
REQ-INV-004 |
The controller shall execute the specified protective response when a defined protection criterion is met. |
Bench/HIL test |
|
REQ-INV-005 |
The inverter shall follow its approved communications-loss policy without depending on a remote monitoring service for required local protection. |
Integration test |
|
REQ-INV-006 |
The controller shall validate configuration parameters against the approved constraints before enabling the relevant operating mode. |
Test |
|
REQ-INV-007 |
The controller shall record defined operating-state transitions and fault events. |
Test |
|
REQ-INV-008 |
The system shall identify the version of the active configuration and relevant firmware baseline. |
Inspection and test |
|
REQ-INV-009 |
The system shall prevent unauthorized configuration changes according to the approved security policy. |
Security test |
|
REQ-INV-010 |
The system shall demonstrate the required operating behavior across its specified modes and environmental conditions. |
System validation |
Appendix B. Modeling conventions and governance checklist
Use this checklist when establishing a new EA repository or reviewing an existing model.
Model readiness review
0 of 12
Every approved requirement has a stable unique identifier.
Each requirement has a clear statement, rationale, and verification method.
Stakeholder needs are linked to operational use cases.
System blocks have clear responsibilities and boundaries.
Critical interfaces have an owner and a controlled contract.
Hardware/software allocations are explicitly recorded.
Important operating states and fault transitions are modeled.
Safety and cybersecurity assumptions are documented.
Verification cases are linked to the requirements they test.
Implementation references identify a controlled version or baseline.
Change requests include impact analysis and review.
Approved baselines preserve model, implementation, and evidence references.
Reset checklist
Appendix C. Suggested Sparx EA diagram deliverables
|
Diagram |
OBD-AI deliverable |
Smart inverter deliverable |
|---|---|---|
|
Context |
Vehicle, adapter, users, application, services |
DC source, inverter, AC interface, operator, gateway |
|
Use cases |
Establish session, interpret DTC, generate advisory |
Start, regulate output, respond to fault |
|
Requirements |
Diagnostic-data quality, evidence, access, audit |
Timing, sensing, operating modes, protection |
|
Block Definition Diagram |
Mobile app, adapter, diagnostic, knowledge, case services |
Power stage, controller, sensing, protection, gateway |
|
Internal Block Diagram |
Interfaces among adapter, app, and backend |
Electrical, sensing, control, and communications interfaces |
|
Activity diagram |
Acquire and interpret diagnostic data |
Startup and control-cycle processing |
|
Sequence diagram |
Session acquisition and advisory generation |
Control cycle and protective response |
|
State machine |
Diagnostic session lifecycle |
Inactive, startup, operating, degraded, and fault states |
|
Parametric model |
Latency, data rates, retrieval limits |
Timing, thermal, electrical, and control constraints |
|
Verification model |
API tests, diagnostic cases, AI evaluation |
Firmware tests, timing measurements, bench/HIL tests |
Appendix D. Recommended research and engineering references
The following resources provide starting points for developing the method further. Consult the edition appropriate to the selected project and modeling environment.
D.1 Systems modeling and Sparx EA
1. Object Management Group, Systems Modeling Language (SysML) Specifications. The OMG maintains the formal specifications and version information. OMG SysML specifications.
2. Object Management Group, SysML v2 Language Specification. Refer to the formal version applicable to the project and confirm tool support before adoption. SysML v2 language specification.
3. Sparx Systems, Guide to MBSE with SysML. A practical guide to modeling and traceability in Enterprise Architect. Sparx Systems MBSE and SysML guide.
4. Sparx Systems, Requirement Definition and Management. Guidance on requirements modeling and traceability in EA. EA requirement definition and management.
5. ISO/IEC/IEEE 15288, Systems and Software Engineering — System Life Cycle Processes. Consult the applicable published edition.
6. ISO/IEC/IEEE 29148, Systems and Software Engineering — Life Cycle Processes — Requirements Engineering. Consult the applicable published edition.
D.2 Behavior-Driven Development and Domain-Driven Design
7. Cucumber, Gherkin Reference. Syntax and semantics for behavior specifications. Gherkin reference.
8. Martin Fowler, Bounded Context. An introduction to a core DDD pattern. Bounded Context.
9. Eric Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley, 2003.
10. Vaughn Vernon, Implementing Domain-Driven Design. Addison-Wesley, 2013.
11. Dan North, Introducing BDD. A foundational explanation of behavior-driven development. Introducing BDD.
D.3 Embedded systems and software architecture
12. Frank Buschmann et al., Pattern-Oriented Software Architecture: A System of Patterns. Wiley.
13. Michael Barr and Anthony Massa, Programming Embedded Systems, 2nd edition. O'Reilly Media, 2006.
14. Elecia White, Making Embedded Systems, 2nd edition. O'Reilly Media, 2024.
15. Bruce Powel Douglass, Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems. Addison-Wesley, 2002.
16. ISO 26262, Road Vehicles — Functional Safety. Apply only where the product and intended use fall within its scope.
17. ISO/SAE 21434, Road Vehicles — Cybersecurity Engineering. Apply where relevant to the automotive product and its lifecycle.
D.4 Automotive diagnostics
18. SAE International, SAE J1979 and related diagnostic-service standards. Verify the applicable revision and supported diagnostic protocol.
19. ISO 15031 series, Road Vehicles — Communication Between Vehicle and External Equipment for Emissions-Related Diagnostics. Confirm the applicable parts and edition.
20. Vehicle-manufacturer service documentation and approved diagnostic procedures for the target vehicle population.
21. OASIS, MQTT Specifications, where MQTT is selected for telemetry transport. MQTT resources.
D.5 Smart inverter and power electronics
22. IEEE, IEEE Std 1547, Standard for Interconnection and Interoperability of Distributed Energy Resources with Associated Electric Power Systems Interfaces. Verify the applicable edition, amendments, and jurisdiction.
23. UL Standards & Engagement, UL 1741, covering applicable inverter, converter, controller, and interconnection-system equipment. Verify product applicability and current requirements.
24. IEC, IEC 62477 series, Safety Requirements for Power Electronic Converter Systems and Equipment. Consult the relevant parts for the selected converter architecture.
25. IEC, IEC 61800 series, for relevant adjustable-speed electrical power-drive system requirements where applicable to the design.
26. IEEE, IEEE 519, for relevant harmonic-control and power-quality considerations, subject to the installation and jurisdiction.
27. Manufacturer documentation for the selected microcontroller, DSP, FPGA, ADC, gate driver, sensors, and power semiconductor devices.
D.6 AI, retrieval, and software security
28. Lewis et al., “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks,” Advances in Neural Information Processing Systems, 2020.
29. National Institute of Standards and Technology, AI Risk Management Framework. NIST AI Risk Management Framework.
30. National Institute of Standards and Technology, Secure Software Development Framework (SSDF). NIST Secure Software Development Framework.
31. IEC 62443 series, Security for Industrial Automation and Control Systems, where applicable to the inverter's industrial environment and security obligations.
Final engineering recommendation
Begin with one bounded OBD-AI workflow and one bounded smart-inverter operating scenario. Define measurable requirements, create the corresponding EA models, specify interfaces, and connect each requirement to a verification method. Implement a small end-to-end prototype, execute the tests, record the evidence, and review the model against the observed system behavior.
That disciplined cycle—model, allocate, implement, verify, learn, and update—is the practical foundation of model-based hardware–software co-design.