Skip to content

AGSArchitect/IntegrationComplexity

Repository files navigation

Integration Complexity

This repository contains the official supporting materials to the paper “Integration Complexity,” submitted to the 36th Annual INCOSE International Symposium (IS2026). The symposium was held June 13-18 at the Pacifico Yokohama Conference Center in Yokohama, Japan.

Integration Complexity (NTC) is a simple, quantifiable metric that assesses the complexity of external component interfaces. However, while it currently focuses on application-level integration, NTC is a general theoretical complexity metric under formulation. Consequently, the metric will expand to include other integration types, such as data-level and message-based integration.

One of the primary objectives of the research focused on complexity visualization. As a result, the repository includes the Synthetic Data Generator used to create the datasets. The generator, developed during the research, initially supported basic exploratory experiments, but became cumbersome to configure programmatically as datasets grew in size. Consequently, the author also developed an internal Java domain-specific language (DSL) to simplify the configuration process. The project containing the DSL is also part of the repository. In addition, the repository includes multiple configuration files, datasets, Wolfram Mathematica notebooks, and plots of the Integration Complexity Plane (ICP).

Step 1: Configuration

The table below summarizes the DSL constructs and their properties. Currently, it is possible to either generate synthetic data based on the subset configuration or read and, optionally, transform previously generated data from files. The latter option facilitates simulating incremental changes in complexity over time.

Construct Name Description
dataset name Dataset name
· description Dataset description
· offset Offset between interfaces of equal complexity
· displacement Enables the displacement of interfaces of equal complexity
· distribution Enables simultaneous displacement across all subsets
· detectOverwrite Constrains overwriting interfaces during displacement
· detectNegativeCoordinate Constrains placing interfaces in negative quadrants
· fileName Dataset file name (e.g, sdg113.json)
· targetFolder The destination folder of the configuration files
· addSet... Instantiates a new set
set name Set name
· description Set description
· fileName Set file name (e.g, sdg113-001.csv)
· addSubset... Instantiates a new subset
subset name Subset name
· description Subset description
· size Subset size
· minParamCount Minimum number of method parameters
· maxParamCount Maximum number of method parameters (inclusive)
· sgcCmplx Signature complexities (e.g., 0.1, 0.2, 0.3)
· rtcCmplx Return complexities (e.g., 0.5, 0.7)
· addSource... Instantiates a new source
source name Source name
· description Source description
· fileNames The names of the data files (e.g, sdg113d-001.csv)
· sourceFolder The source folder containing the data files
· addTransformation... Instantiates a new transformation
transformation name Transformation name
· description Transformation description
· sgcCmplx Signature complexities (e.g., 0.1, 0.2, 0.3)
· rtcCmplx Return complexities (e.g., 0.5, 0.7)
· probability The likelihood that the interface will be chosen (e.g, 0.5)
· iterations The number of times the transformation gets applied

Note: Constructs are imported statically from the SyntheticBuilderFactory class.

Illustrative Example: Plot 8

The following configuration file belongs to Plot 8 and was created during the initial exploratory research. It generates the ICP visualization of 836 external component interfaces. Comprised of three datasets, each containing three subsets, the example demonstrates how to configure methods of specific arity. The data distribution between Subsystems 1, 2, and 3 is 38%, 36%, and 26%, respectively.

Overall Total Set Set Distribution Set Total Subset Subset Distribution Subset Total
836 1 38% 318 1 82% 260
· · · · 2 11% 35
· · · · 3 7% 22
· 2 36% 301 1 77% 232
· · · · 2 12% 36
· · · · 3 11% 33
· 3 26% 217 1 82% 178
· · · · 2 12% 26
· · · · 3 6% 13

Note: Configurations such as Plot 8 enable visualization of functional distributions and method densities.

dataset("Plot 8", "sdg008.json")
        .description("Integration Complexity")
        .offset(0.005)
        .displacement(true)
        .distribution(false)
        .detectOverwrite(true)
        .detectNegativeCoordinate(true)
        .addSet(set("Subsystem 1", "sdg008-001.csv")
                .description("Components")
                .addSubset(subset("API 1")
                        .description("Monadic to Polyadic Non-void Methods")
                        .size(260)
                        .minParamCount(1)
                        .maxParamCount(12)
                        .sgcCmplx(0.1, 0.2, 0.3, 0.5, 0.7)
                        .rtcCmplx(0.1, 0.2, 0.3, 0.5))
                .addSubset(subset("API 1")
                        .description("Niladic Non-void Methods")
                        .size(22)
                        .minParamCount(0)
                        .maxParamCount(0)
                        .sgcCmplx(0.0)
                        .rtcCmplx(0.1, 0.2, 0.3, 0.5))
                .addSubset(subset("API 1")
                        .description("Monadic to Polyadic Void Methods")
                        .size(35)
                        .minParamCount(1)
                        .maxParamCount(12)
                        .sgcCmplx(0.1, 0.2, 0.3, 0.5, 0.7)
                        .rtcCmplx(0.0)))
        .addSet(set("Subsystem 2", "sdg008-002.csv")
                .description("Components")
                .addSubset(subset("API 2")
                        .description("Monadic to Polyadic Non-void Methods")
                        .size(232)
                        .minParamCount(1)
                        .maxParamCount(12)
                        .sgcCmplx(0.1, 0.2, 0.3, 0.5, 0.7)
                        .rtcCmplx(0.1, 0.2, 0.3, 0.5))
                .addSubset(subset("API 2")
                        .description("Niladic Non-void Methods")
                        .size(36)
                        .minParamCount(0)
                        .maxParamCount(0)
                        .sgcCmplx(0.0)
                        .rtcCmplx(0.1, 0.2, 0.3, 0.5))
                .addSubset(subset("API 2")
                        .description("Monadic to Polyadic Void Methods")
                        .size(33)
                        .minParamCount(1)
                        .maxParamCount(12)
                        .sgcCmplx(0.1, 0.2, 0.3, 0.5, 0.7)
                        .rtcCmplx(0.0)))
        .addSet(set("Subsystem 3", "sdg008-003.csv")
                .description("Components")
                .addSubset(subset("API 3")
                        .description("Monadic to Polyadic Non-void Methods")
                        .size(178)
                        .minParamCount(1)
                        .maxParamCount(12)
                        .sgcCmplx(0.1, 0.2, 0.3, 0.5, 0.7)
                        .rtcCmplx(0.1, 0.2, 0.3, 0.5))
                .addSubset(subset("API 3")
                        .description("Niladic Non-void Methods")
                        .size(13)
                        .minParamCount(0)
                        .maxParamCount(0)
                        .sgcCmplx(0.0)
                        .rtcCmplx(0.1, 0.2, 0.3, 0.5))
                .addSubset(subset("API 3")
                        .description("Monadic to Polyadic Void Methods")
                        .size(26)
                        .minParamCount(1)
                        .maxParamCount(12)
                        .sgcCmplx(0.1, 0.2, 0.3, 0.5, 0.7)
                        .rtcCmplx(0.0)))
        .targetFolder("/Users/agonzalez/Desktop/Datasets/sdg008")
        .print()
        .save();

Note: Configuration of the Synthetic Data Generator using an internal Java DSL.

Step 2: Generation

The configuration file drives the entire data generation process. The generator compiles into an executable JAR file, which makes it accessible locally via a command-line interface (CLI). During the process, it aggregates data from all subsets within a set and exports a file that later becomes an input to Wolfram Mathematica.

java -jar synthetic-data-generator-1.0.0.jar sdg008.json

Step 3: Visualization

The Integration Complexity Plane (ICP) is generated by projecting Signature Complexity (SGC), Return Complexity (RTC), and Integration Complexity (NTC) into a three-dimensional coordinate system. The accompanying notebooks can serve as the foundation for further experimentation.

sdg008001 = Import["sdg008-001.csv"]
sdg008002 = Import["sdg008-002.csv"]
sdg008003 = Import["sdg008-003.csv"]

combinedList = {sdg008001, sdg008002, sdg008003};

ListPointPlot3D[combinedList, 
   Filling -> Bottom, 
   ImageSize -> 650, 
   PlotRange -> All, 
   AxesLabel -> {"SGC", "RTC", "NTC"}, 
   PlotLegends -> {"Subsystem 1", "Subsystem 2", "Subsystem 3"},
   PlotStyle -> {RGBColor["#A31F34"], RGBColor["#B4B4B4"], RGBColor["#ED7700"]},
   ViewPoint -> Top,
   LabelingFunction -> (#1[[3]] &)]

Note: The notebooks provide additional information.

Plot 8

Acknowledgements

All of the content, in its entirety, including but not limited to ideas, concepts, formulations, principles, tables, source code, diagrams, and plots, is the original work of the author and was author-generated unless otherwise specified.

Ariel Gonzalez

Copyright © 2026 Ariel Gonzalez. All rights reserved.

About

INCOSE International Symposium (IS) 2026

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors