Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for subsystems in component diagrams #291

Merged

Conversation

GODrums
Copy link
Contributor

@GODrums GODrums commented May 19, 2023

Checklist

  • I added multiple screenshots/screencasts of my UI changes

Motivation and Context

As architecture expert in the iPraktikum by the ASE chair, I am using component diagrams to model subsystem decompositions. Unfortunately, Apollon offers no elements other than components making it impossible to create component diagrams following the UML standard. The workaround to reuse components to model subsystems is limited to naming and there has been no way to denote the stereotype ("role") of these elements, e.g. subsystem or component, which would be desired in subsystem decompositions and component diagrams in general.

Description

This change aims to improve the functionality of component diagrams in Apollon. It introduces a new element called "Subsystem", which follows the functionality of a component but has the corresponding stereotype subsystem. Furthermore components now also display their stereotype component above their name, following normal component diagrams guidelines.
Text in subsystems is generally top-aligned, while components use center alignment. Although the styling may be subject to customization for edge cases, such styling should be sufficient for all common use cases. This change deliberately also impacts components in deployment diagrams, as these should follow the same UML standard styling.

Steps for Testing

  1. Run the code and open the website
  2. Select "Component Diagram" as the diagram type
  3. Drag a subsystem element in the canvas and fill it with a component element
  4. Both elements should now display their stereotype correctly and a subsystem should be able to contain a component

Screenshots

An example of a component diagram that is impossible to create with Apollon without this change:
Screenshot_463
The new sidebar with the changes:
Screenshot_464

Source for UML components / component diagrams

IBM - Component Diagrams

@matthiaslehnertum
Copy link
Collaborator

@GODrums Nice work and documentation on the PR! Looks good to me!

Copy link
Contributor

@AlexanderG2207 AlexanderG2207 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code itself looks good, and the subsystem feature works well locally. Well done!

However, the tests still need to be adjusted, as I have failing tests when testing locally. In addition, some Artemis tests will probably also need adjustment due to the addition of subsystems.

I also recommend merging the develop branch into your branch to handle any conflicts, as the last commit was quite a while back.

@krusche
Copy link
Member

krusche commented Oct 15, 2023

@AlexanderG2207 @matthiaslehnertum unfortunately, the author did not update this PR recently.
Can someone of you take over this PR and finish it after fixing the merge conflict? Thank you!

Copy link
Collaborator

@matthiaslehnertum matthiaslehnertum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems to work as intended for me 👍🏻 I‘ll wait for the pipeline to finish (as the base branch) was updated and merge if all checks go through.

@matthiaslehnertum matthiaslehnertum merged commit 1ad5da8 into ls1intum:develop Oct 26, 2023
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants