Skip to content

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.

ConstructNameDescription
datasetnameDataset name
·descriptionDataset description
·offsetOffset between interfaces of equal complexity
·displacementEnables the displacement of interfaces of equal complexity
·distributionEnables simultaneous displacement across all subsets
·detectOverwriteConstrains overwriting interfaces during displacement
·detectNegativeCoordinateConstrains placing interfaces in negative quadrants
·fileNameDataset file name (e.g, sdg113.json)
·targetFolderThe destination folder of the configuration files
·addSet...Instantiates a new set
setnameSet name
·descriptionSet description
·fileNameSet file name (e.g, sdg113-001.csv)
·addSubset...Instantiates a new subset
subsetnameSubset name
·descriptionSubset description
·sizeSubset size
·minParamCountMinimum number of method parameters
·maxParamCountMaximum number of method parameters (inclusive)
·sgcCmplxSignature complexities (e.g., 0.1, 0.2, 0.3)
·rtcCmplxReturn complexities (e.g., 0.5, 0.7)
·addSource...Instantiates a new source
sourcenameSource name
·descriptionSource description
·fileNamesThe names of the data files (e.g, sdg113d-001.csv)
·sourceFolderThe source folder containing the data files
·addTransformation...Instantiates a new transformation
transformationnameTransformation name
·descriptionTransformation description
·sgcCmplxSignature complexities (e.g., 0.1, 0.2, 0.3)
·rtcCmplxReturn complexities (e.g., 0.5, 0.7)
·probabilityThe likelihood that the interface will be chosen (e.g, 0.5)
·iterationsThe 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 TotalSetSet DistributionSet TotalSubsetSubset DistributionSubset Total
836138%318182%260
····211%35
····37%22
·236%301177%232
····212%36
····311%33
·326%217182%178
····212%26
····36%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

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages