Skip to content

Commit

Permalink
New SoMoX version with JDT and without JARs.
Browse files Browse the repository at this point in the history
  • Loading branch information
dr6817 committed Jan 24, 2024
1 parent 8962236 commit a58a194
Show file tree
Hide file tree
Showing 433 changed files with 10,320 additions and 19,262 deletions.
4 changes: 4 additions & 0 deletions .github/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
paths:
- src
paths-ignore:
- target
7 changes: 0 additions & 7 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates

version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
day: "sunday"
time: "02:04"

# Maintain dependencies for Maven
- package-ecosystem: "maven"
directory: "/"
schedule:
Expand Down
54 changes: 54 additions & 0 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# This workflow enables continuous quality assurance
name: Continual Improvement Process

on:
push: # push on any branch
pull_request: # pull request on any branch
schedule:
- cron: '4 2 * * 0' # once a week, Sundays at 02:04 UTC.
workflow_dispatch: # manual trigger

permissions:
actions: read
contents: read
security-events: write

jobs:
verify:
name: Maven Verify
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Run Maven
run: mvn -B -U clean verify

analyze:
name: CodeQL Analyze
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v4
- name: Set Up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: java
config-file: ./.github/codeql.yml
- name: Autobuild Repository
uses: github/codeql-action/autobuild@v3
- name: Perform Analyze
uses: github/codeql-action/analyze@v3
59 changes: 59 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Software Model Extractor (SoMoX)

SoMoX is a reverse engineering tool developed at the Karlsruhe Institute of Technology (KIT) for generating software component models from source code. It automatically extracts different types of software components, including basic components, composite structures, interfaces, ports, and connectors. SoMoX uses various source code metrics to guide its extraction process, allowing it to adapt to the specific component definitions and needs of individual projects. Currently, SoMoX supports source code written in C/C++, Delphi and Java.

## Overview
### Key Features
- **Automatic component extraction:** SoMoX can automatically extract software components from source code without manual intervention.
- **Multi-language support:** SoMoX supports source code written in C/C++, Delphi and Java.
- **Adaptable to different component definitions:** SoMoX can be configured to extract components based on different definitions, including component-based architectures, object-oriented programming and microservices.
- **Detailed component models:** SoMoX generates comprehensive component models that include information about the component's structure, interfaces, ports, and connectors.

### Benefits
- **Improved Software Understanding:** SoMoX can help developers to better understand the architecture and structure of existing software systems.
- **Improved Maintainability:** SoMoX can simplify the maintenance of existing software by providing a structured representation of the code.
- **Simplified Code Reuse:** SoMoX can help developers identify and reuse reusable components of existing code.
- **Effective Change Impact Analysis:** SoMoX can be used to analyze the impact of code changes on software components, helping with risk assessment and decision-making.
- **Accelerated Development:** SoMoX can facilitate rapid prototyping and development by generating code from component models.

### Examples
- **Extract reusable components:** SoMoX can identify reusable components from existing code and create component models that can be used in new projects.
- **Analyze code changes:** SoMoX can be used to analyze the impact of code changes on software components, identifying potential risks and problems.
- **Generate code from models:** SoMoX can generate code from component models, simplifying rapid prototyping and new software development.
- **Document software architecture:** SoMoX can be used to create documentation of the software architecture, improving understanding and communication among developers.

## History
### Versions
SoMoX is the successor of ArchiRec. This latest version of SoMoX uses our [JDT based version of JaMoPP](https://github.com/MDSD-Tools/JaMoPP) as its backend. Previously SoMoX was available with three other backends:
- [SISSy](http://sourceforge.net/projects/sissy/)
- [MoDisco](https://eclipse.org/MoDisco/)
- [DevBoost JaMoPP](https://github.com/DevBoost/JaMoPP)

### Contributors
SoMoX was originally developed with SVN and only migrated to GIT at a late stage. This repository has also been migrated several times. As a result, not all contributors are properly visible in the history.

## Installation
SoMoX is available as an Eclipse update site and requires Java 17 and Eclipse 2023-03:
- Download the Eclipse 2023-03 modeling tools package: https://www.eclipse.org/downloads/packages/release/2023-03/r/eclipse-modeling-tools
- Install Palladio from the update site: https://updatesite.palladio-simulator.com/palladio-build-updatesite/nightly/
- Install JaMoPP from the JaMoPP update site: https://updatesite.mdsd.tools/jamopp/nightly/
- Install SoMoX from the SoMoX update site: https://updatesite.palladio-simulator.com/palladio-reverseengineering-somox/nightly/

## Documentation
This README provides basic information. For detailed instructions, examples, and advanced usage, please refer to:
- [The official documentation](https://sdq.kastel.kit.edu/wiki/SoMoX):
- [SoMoX Metric Documentation (PDF)](https://sdq.kastel.kit.edu/mediawiki-sdq-extern/images/4/49/SoMoX_Metric_Documentation.pdf)
- [Reconstruction of Software Component Architectures and Behaviour Models using Static and Dynamic Analysis](https://primo.bibliothek.kit.edu/permalink/f/4jne3t/KITSRCE1000025617)
- [Automated Coevolution of Source Code and Software Architecture Models](https://primo.bibliothek.kit.edu/permalink/f/4jne3t/KITSRCE1000081447)

## Contributing
We appreciate your contributions to make SoMoX a better tool for software development and maintenance. If you want to contribute, please follow these steps

1. Create a new issue in Jira: https://palladio-simulator.atlassian.net/browse/SOMOX
2. Fork the SoMoX repository on GitHub.
3. Create a pull request for your changes.
4. Add unit tests for your changes.
5. Document your changes.

## License
SoMoX is licensed under the [EPL-2.0 license](LICENSE).
9 changes: 0 additions & 9 deletions bundles/org.annotationsmox.graphlearner/.classpath

This file was deleted.

14 changes: 0 additions & 14 deletions bundles/org.annotationsmox.graphlearner/META-INF/MANIFEST.MF

This file was deleted.

This file was deleted.

Loading

0 comments on commit a58a194

Please sign in to comment.