Modern systems are heavily software-intensive. Model-Based Engineering (MBE) must incorporate software configuration management systems (also called application lifecycle management systems or ALM) into the total system model in its goal to bring all system information into a common structure. Syndeia 3.0 offers our first interface into this domain with an interface to GitHub.
GitHub is a Git-based ALM system widely used to manage large software projects with many collaborators. Important elements of a GitHub repository include
• Branch – a branch represents one thread of the software project’s development. A main branch, typically called master, is the main thread, but additional branches can diverge from master for R&D or customization. A branch can be merged back into master if its new features are needed.
• Commit – each branch is represented as a series of commits. In a commit, a software developer saves their changes and additions to the project back into a branch, where a new version is created and made available to the other collaborators.
• Tag – some commits may have special significance, such as commercial release versions of the software. These commits are additionally designated as tags, making it simpler to find these key elements.
• File – the contents of a branch are stored as a series of files, which may store pieces of computer code or other information, e.g. pdf documentation. Files are typically organized into folders. A commit modifies one or more files in a branch.
With the GitHub interface available for Syndeia 3.0 users can create and manage Reference connections to branches, commits, tags and files. In the Syndeia dashboard, Connection Manager tab, we can view the contents of the GitHub repository on the right side, as shown in Figure 1.
To create a Reference connection between a SysML element (e.g. Git Test Block) and a commit in the Master branch, select Reference Connection in the center panel and drag the SysML block onto the desired GitHub commit (or vice versa). Now this SysML element is persistently linked to that particular version of the software. The SysML element could represent any of a number of concepts:
• A block representing the software element itself
• A block representing a hardware element where the software will reside
• A behavior (e.g. activity) carried out by the software
• A requirement satisfied by the software
• A simulation element (block, constraint block or behavior) modeling the software
Once the connection is created, we can use it to access the connected element directly through the GitHub web interface. To get to Figure 2 below, we right-clicked on Git Test Block in the SysML tool browser (or in a SysML diagram or in the Syndeia dashboard) and selected the command Open Connected Artifact, which took us directly to the GitHub page for that element where we can see its contents and status.
In Syndeia, a Reference connection does not allow us to compare or synchronize the contents or structure of the connected elements. We can, however, use the Compare functionality to see if there is a later version of the commit in the same branch. The difference table generated appears in Figure 3, where the red highlighting shows a later version of the target available. Applying the Sync functionality will update the Reference connection to the latest commit in the same branch.
A commit represents a set of files. The same functionality is available for creating reference connections to individual files managed by GitHub. In Figure 4, we expand the initial commit to show its files, in this case, a single README.txt file. We could have created a connection to that file and used the same access, compare and sync features described above for commits.
This is the first version of an ALM interface for Syndeia. We expect customers to identify new use cases for future product versions. Other ALM systems will also be candidates for Syndeia, including Git-based (e.g. BitBucket) and other tools. Email us to learn more about the possibilities and to request an eval license.