425 lines
17 KiB
Markdown
425 lines
17 KiB
Markdown
file:: [SANER2024_paper_127_1700084365547_0.pdf](../assets/SANER2024_paper_127_1700084365547_0.pdf)
|
||
file-path:: ../assets/SANER2024_paper_127_1700084365547_0.pdf
|
||
|
||
- For most service architectures, such as OSGi and Spring, architecture-specific tools allow software developers and architects to visualize otherwise obscure configurations hidden in the project files.
|
||
ls-type:: annotation
|
||
hl-page:: 1
|
||
hl-color:: green
|
||
id:: 656498da-3b10-44f4-8b72-623b6922124a
|
||
- Furthermore, many generic modeling tools and architecture visualization tools require their users to create and maintain models manually.
|
||
ls-type:: annotation
|
||
hl-page:: 1
|
||
hl-color:: green
|
||
id:: 656498f8-1f57-402f-bf1d-67d98892fbd1
|
||
- Software Project Visualization (SPViz
|
||
ls-type:: annotation
|
||
hl-page:: 1
|
||
hl-color:: green
|
||
id:: 65649930-1d7f-4aad-bae6-c04135a00e36
|
||
- We demonstrate how SPViz can then automatically synthesize a customized, project-specific visualization tool that can adapt to changes in the underlying project automatically.
|
||
ls-type:: annotation
|
||
hl-page:: 1
|
||
hl-color:: green
|
||
id:: 656499f8-3bbf-400a-87de-6f94b51ade40
|
||
- There are tools to reverse-engineer the actual architecture of projects to compare it to the modeled architecture and adapt them to each othe
|
||
ls-type:: annotation
|
||
hl-page:: 1
|
||
hl-color:: green
|
||
id:: 6564b518-c480-4282-81c0-780b16a8879f
|
||
- As the use of programming languages and project structures surrounding them changes over time, new tools to work with those languages and structures must be developed
|
||
ls-type:: annotation
|
||
hl-page:: 1
|
||
hl-color:: green
|
||
id:: 6564b560-4caf-47f1-8929-cbda745f8c90
|
||
- For each new project structure, developers will ask how project artifacts relate to each other and which hierarchies exist, to explore and explain the projects.
|
||
ls-type:: annotation
|
||
hl-page:: 1
|
||
hl-color:: green
|
||
id:: 6564b597-5e60-44e4-a6cb-d19943ca4c8f
|
||
- However, such generic techniques may fail to be specific enough to describe the needs of domain experts and require too much manual effort to yield pleasing and meaningful diagrams
|
||
ls-type:: annotation
|
||
hl-page:: 1
|
||
hl-color:: green
|
||
id:: 6564fe5b-3582-4ede-bb8c-1349b9d9055d
|
||
- [14] I. Malavolta, P. Lago, H. Muccini, P. Pelliccione, and A. Tang, “What industry needs from architectural languages: A survey,” IEEE Transactions on Software Engineering, vol. 39, no. 6, pp. 869–891, 2013
|
||
ls-type:: annotation
|
||
hl-page:: 11
|
||
hl-color:: green
|
||
id:: 6564fe77-0f8e-4393-a9ac-b45eefae50ce
|
||
- support for multiple views for architectures
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: blue
|
||
id:: 6564feac-cad1-4f22-ab45-cedb69e910cd
|
||
hl-stamp:: 1701297419577
|
||
- support for specific architectural styles and patterns
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: blue
|
||
id:: 6564feb1-e4b5-4a8e-9988-fee8ec6fe46c
|
||
hl-stamp:: 1701297424394
|
||
- How can one create customized architecture visualization tools with minimal effor
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: purple
|
||
id:: 6564ffcd-3af3-4f3c-9797-52d383c9879b
|
||
hl-stamp:: 1701297447756
|
||
- ne to describe architectural elements and their relationships
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: green
|
||
id:: 65650087-3e6c-4735-97e4-ec26383cdb5a
|
||
- one to describe how these should be visualized.
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: green
|
||
id:: 6565008c-31f2-4ba3-bb8f-e20d7af47b0f
|
||
- An outline of an initial view for further configuration of a concrete architecture visualization tool synthesized by SPViz is shown in
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: green
|
||
id:: 656500ca-de96-4d6d-a270-0ef11346e55e
|
||
- project-specific visualization tool
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: yellow
|
||
id:: 6567bd5d-090d-4ff7-9823-d55542e7150c
|
||
- This previous work only works for a single architecture and therefore lacks the applicability to other architectures
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: blue
|
||
id:: 6567bd93-9df0-46e2-9d35-5b57e0843d71
|
||
- two DSLs describing arbitrary architectures and their visualization
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: blue
|
||
id:: 6567bdcf-64c3-47d7-b062-7ebb5b67e217
|
||
- automatically generate a complete visualization tool,
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: blue
|
||
id:: 6567be00-6500-4cb4-a3e4-b98d6b42b4b8
|
||
- illustrate the DSLs using example projects
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: blue
|
||
id:: 6567be08-fbef-4f66-b47d-d662ee761df1
|
||
- The use of the diagrams, according to the previous paper, allows to move from manually drawn diagrams such as UML to automatically created diagrams that are useful for system documentation purposes.
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: green
|
||
id:: 6567be2d-4889-4862-b440-adbb33eae45b
|
||
- generalize these concepts for arbitrary architectures
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: green
|
||
id:: 6567be55-514b-45c8-8bcb-71f206263c5a
|
||
- [:span]
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: green
|
||
id:: 6567bee1-9af7-42d9-ac8c-bbeefc15930a
|
||
hl-type:: area
|
||
hl-stamp:: 1701297887434
|
||
- modifying and filtering views to be reusable for documentation purposes in evolving (software) projects
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: green
|
||
id:: 6567bfc7-e9cd-4c5b-b657-e24f77becf19
|
||
- The project model (PM) contains the extracted data of a concrete project, here for an OSGi project
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: yellow
|
||
id:: 6567bfd4-a9f2-4dc4-9244-00ffdfb071ac
|
||
hl-stamp:: 1702061506210
|
||
- architecture meta model (A2M
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: green
|
||
id:: 6567c00b-5b9b-4ba0-971e-dde44b6e5ba6
|
||
- All connections of the project can be interactively added or removed to show any hierarchy
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: green
|
||
id:: 6567c06c-17c9-4d37-94e9-c909a815a59c
|
||
- connect the connected artifacts of an artifac
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: red
|
||
id:: 6567c0ac-0095-4010-9e77-4d4603735337
|
||
- e define meta meta models to describe the general structure of a software architecture and an abstract way of visualizing that architectur
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: yellow
|
||
id:: 6567c16c-1b7c-466e-9d45-bd0b838f69d5
|
||
- arbitrary architecture meta models(A2Ms)
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: yellow
|
||
id:: 6567c185-408f-4c0e-83dd-cfcd615cbae3
|
||
- We refer to the meta model for describing the architecture the architecture meta model (A2M), and the meta model for the possible types of shown connections and views the view context meta model(VC2M). This section introduces two DSLs for defining such A2Ms and VC2Ms, thus making the DSLs themselves an architecture meta meta model (A3M) and a view context meta meta model (VC3M)
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: yellow
|
||
id:: 6567c1b8-9ffd-41e7-90e9-ca65c99118d2
|
||
- We define these components as the A3M. The A3M can be applied to most architectures to show how all their different artifacts relate to each other.
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: green
|
||
id:: 6567c23e-7cd2-4aac-821d-a6fd3628a18c
|
||
- This is due to the A3M being self-describing, just as the MOF.
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: yellow
|
||
id:: 6567c269-4c2c-4b24-b818-111798d4f687
|
||
- The information in the example consists of the name, artifacts, their hierarchy and connections
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: green
|
||
id:: 6567c2b2-4669-486e-ac41-3642e72518c0
|
||
- meta model
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: yellow
|
||
id:: 6567c2c2-56d6-4cc9-bcf2-a219abb787d0
|
||
- Specifically, it uses the Model-View-Controller (MVC) paradigm [16] as a guiding principle.
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: yellow
|
||
id:: 65735fca-9fc8-4896-a1cd-882585b4dfd0
|
||
- works for OSGi projects.
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: yellow
|
||
id:: 657360d2-6296-4a55-acb4-78155dec7ea2
|
||
- as well as template code for a model generator akin to the OSGi visualization using the DSLs based on example project architectures i
|
||
ls-type:: annotation
|
||
hl-page:: 2
|
||
hl-color:: yellow
|
||
id:: 65736127-c00e-4730-829a-9e7f7ae2a278
|
||
- artifacts and references between these artifacts.
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: green
|
||
id:: 65738f66-7a16-457f-ad3d-bdba3c4ad881
|
||
- This concept is comparable to other meta models used for Model Driven Engineering (MDE) such as the Meta Object Facility (MOF) [19], in a simplified version.
|
||
ls-type:: annotation
|
||
hl-page:: 3
|
||
hl-color:: blue
|
||
id:: 65738fb6-7ac9-45b6-90b3-19b1fec27031
|
||
- Bundle
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: green
|
||
id:: 6573909f-60bd-4ad7-887e-436844d65178
|
||
- ServiceInterface
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: green
|
||
id:: 657390a2-39e3-47b7-a701-ecc38b5946ee
|
||
- ServiceComponent
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: green
|
||
id:: 657390a5-3dc9-4d96-bd38-a8a4a1e0165e
|
||
- Bundle
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: green
|
||
id:: 657390a7-efc6-47de-9703-2816412d1619
|
||
- ServiceInterface
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: green
|
||
id:: 657390a9-c869-4f2b-8b7e-2600b10a32f7
|
||
- ServiceComponent
|
||
ls-type:: annotation
|
||
hl-page:: 4
|
||
hl-color:: green
|
||
id:: 657390ac-442e-4d6a-877e-2a2ac76ef83b
|
||
- Therefore the VC3M allows the architects to further structure their visualization
|
||
ls-type:: annotation
|
||
hl-page:: 5
|
||
hl-color:: green
|
||
id:: 65739136-856a-4b98-b88d-0248202ccd18
|
||
- VC3M allows to configure how the artifacts themselves should be visualized
|
||
ls-type:: annotation
|
||
hl-page:: 5
|
||
hl-color:: blue
|
||
id:: 65739277-1272-4dbf-8ec8-d2abccf3eba5
|
||
- Fig. 10.
|
||
ls-type:: annotation
|
||
hl-page:: 5
|
||
hl-color:: yellow
|
||
id:: 6573929a-5db6-4baf-bd17-8cbb014303ee
|
||
hl-stamp:: 1702072988918
|
||
- category connections are another way of organizing and filtering views.
|
||
ls-type:: annotation
|
||
hl-page:: 5
|
||
hl-color:: green
|
||
id:: 657393ae-cd69-45f2-9a3b-23ac47a47237
|
||
- thus showing that the previously manually designed OSGi visualization can be generalized using our DSLs.
|
||
ls-type:: annotation
|
||
hl-page:: 5
|
||
hl-color:: yellow
|
||
id:: 65739407-ddfa-4e36-a05d-8ece1d53303c
|
||
- Fig. 11. Traditional (left, gray) and proposed (red) process for developing a new software project visualization tool. A2M and VC2M are written in the DSLs proposed here. Boxes represent files, software packages, and applications in UML style
|
||
ls-type:: annotation
|
||
hl-page:: 6
|
||
hl-color:: yellow
|
||
id:: 6573945b-0222-4cd9-b248-c21a33dd6536
|
||
- This artifact view defines the filters for a bundle dependencies view.
|
||
ls-type:: annotation
|
||
hl-page:: 6
|
||
hl-color:: green
|
||
id:: 65749421-0944-4be0-b26c-2501ea11ad00
|
||
- That is, a connection between features will be shown, if a bundle contained in one feature has a connection to a bundle contained in another feature
|
||
ls-type:: annotation
|
||
hl-page:: 6
|
||
hl-color:: green
|
||
id:: 65749485-3cd8-40fb-9436-e7b33308905c
|
||
- The template contains a file ReadProjectFiles.java which is missing the architecture-specific extraction of data from the project’s sources
|
||
ls-type:: annotation
|
||
hl-page:: 6
|
||
hl-color:: yellow
|
||
id:: 65749f02-578f-4f22-8b75-ed97a7bef133
|
||
- Examples described in Section V implement this template to show its feasibility
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: yellow
|
||
id:: 6574ffd5-23d1-4760-97e9-1c2ac28373b4
|
||
- This open format allows other code mining and reverse engineering tools to work together with our A2M and therefore with the visualization tool
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: yellow
|
||
id:: 65750014-5520-4748-a4b1-a9a453694d7f
|
||
- KLighD framework
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: yellow
|
||
id:: 657568ac-6059-480a-8a50-97519717938f
|
||
- DSLs to run and parse the configurations, making the tool less concise for its use case
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: yellow
|
||
id:: 657568f4-baba-4bbb-bdcf-e1fd0c2b26ef
|
||
- We opted for the generation approach, mainly to make the subsequent implementation/adaption of the model generator simpler
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: yellow
|
||
id:: 65756934-0893-4f95-a17b-3028bf237c92
|
||
- ny project architecture, causing the range of such an architecture’s main development IDE to be pretty much any IDE.
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: yellow
|
||
id:: 65756b39-70b9-41b4-8093-25e7802028bd
|
||
- The initial setup of the individual visualization tool is supported mainly in the Eclipse IDE. This includes the development of both DSLs and the implementation/adaption of a model generator for the PM
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: yellow
|
||
id:: 65756c5d-2f6f-44b7-a5a0-afbfb8f7b10d
|
||
- flexibility and usability
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: purple
|
||
id:: 65756ca2-9f70-482f-a347-984b6364642d
|
||
- quantitative analysis on the effort reduction using SPViz for the OSGi example.
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: purple
|
||
id:: 65756d1d-9694-4692-9232-07a8621c7247
|
||
- ‘What connections and hierarchies in the code should be made visible?’ and ‘What kinds of artifacts define and order these?
|
||
ls-type:: annotation
|
||
hl-page:: 6
|
||
hl-color:: purple
|
||
id:: 65756d65-ea85-4f64-b164-1e70a9502f94
|
||
- OSGi
|
||
ls-type:: annotation
|
||
hl-page:: 7
|
||
hl-color:: yellow
|
||
id:: 65756e45-a349-4c74-9575-6565ca529029
|
||
- PM generator
|
||
ls-type:: annotation
|
||
hl-page:: 8
|
||
hl-color:: yellow
|
||
id:: 65756e97-4603-4e10-a411-7a600f1fae87
|
||
- Furthermore, it parses OSGI-INF/ folders and the Java files for definitions and connections of service components and interfaces and creates an OSGi PM based on that data for any OSGi project.
|
||
ls-type:: annotation
|
||
hl-page:: 8
|
||
hl-color:: yellow
|
||
id:: 65756ef8-4a40-4581-9e6e-4ce81c5030af
|
||
- This example was verified with a project from our industrial partner, as well as the KLighD and Semantics frameworks of the KIELER7 project. The partner project consists of 144 bundles plus 109 additional dependent bundles, as well as285 service artifacts. The KLighD and Semantics frameworks consist of 25 plus 196 bundles and 166 plus 144 bundles, respectively.
|
||
ls-type:: annotation
|
||
hl-page:: 8
|
||
hl-color:: yellow
|
||
id:: 65756f32-af92-4a01-bbd4-b89d68bded8a
|
||
- he generator parses the pom.xml files to build the PM of the hierarchy and the module dependencie
|
||
ls-type:: annotation
|
||
hl-page:: 8
|
||
hl-color:: green
|
||
id:: 657570cf-afc8-4cc3-bfba-d7c36f66cd13
|
||
- or automatically updating documentation and for onboarding of new developers and maintenance.
|
||
ls-type:: annotation
|
||
hl-page:: 8
|
||
hl-color:: yellow
|
||
id:: 65757240-df44-4a44-8229-2606bf6a2924
|
||
- explain the architecture and specific hierarchies to others by creating architectural descriptions, without the need to update such descriptions manually
|
||
ls-type:: annotation
|
||
hl-page:: 9
|
||
hl-color:: green
|
||
id:: 65757373-3361-481f-9016-4accbb161dfb
|
||
- While there are many visualizations out there, this shows that at least for this questionnaire the architects were not happy with other tools they used so far.
|
||
ls-type:: annotation
|
||
hl-page:: 9
|
||
hl-color:: yellow
|
||
id:: 65757383-bf9d-456c-aa94-f5c67b430ce0
|
||
- Other tools did not provide exactly what was required, because they were not usable as well, or because the architects did not find the right tool yet.
|
||
ls-type:: annotation
|
||
hl-page:: 9
|
||
hl-color:: yellow
|
||
id:: 6575749b-d197-4a4d-be76-b3cceb37906f
|
||
- many related proposals go in the direction of visualization for software architectures or using meta models to describe and visualize architectures
|
||
ls-type:: annotation
|
||
hl-page:: 9
|
||
hl-color:: yellow
|
||
id:: 65757684-ebce-4c3f-8983-3990806afe33
|
||
- ts use for projects developed outside the Eclipse environment is limited
|
||
ls-type:: annotation
|
||
hl-page:: 9
|
||
hl-color:: green
|
||
id:: 657576d9-51bb-49be-aad6-51c06656f231
|
||
- Our tool allows to interface with existing architectures to provide visualizations, while not requiring any concrete language or syntax on the architecture description itself
|
||
ls-type:: annotation
|
||
hl-page:: 9
|
||
hl-color:: yellow
|
||
id:: 6575cacd-eafb-4c19-a6f4-e121d74a2c6a
|
||
- requiring the underlying projects to conform to their constraints are for example ArchJava [6] for Java and Codoc [27] for Python
|
||
ls-type:: annotation
|
||
hl-page:: 10
|
||
hl-color:: yellow
|
||
id:: 6575cb1a-e1e4-4960-b474-d0bd54c54cf4
|
||
- We would like the generated visualization modules to be extensible to make the final visualizations more configurable to fit aesthetics criteria of the architecture to visualize
|
||
ls-type:: annotation
|
||
hl-page:: 10
|
||
hl-color:: green
|
||
id:: 6575cb4c-042a-49eb-9edb-68feaa78d87d
|
||
- software architects to quickly create a visualization tool they can use to explore any otherwise obscure architecture
|
||
ls-type:: annotation
|
||
hl-page:: 10
|
||
hl-color:: green
|
||
id:: 6575cb62-5af7-4549-92f2-89adcb6df878
|
||
- available for arbitrary software architectures, highlighting the usability of such a concept.
|
||
ls-type:: annotation
|
||
hl-page:: 10
|
||
hl-color:: yellow
|
||
id:: 6575cbb4-7e31-4bdf-b262-a693473d238a
|
||
- tate-of-the-art and well-accepted views on connections within software systems such as dependencies and service structures
|
||
ls-type:: annotation
|
||
hl-page:: 10
|
||
hl-color:: yellow
|
||
id:: 6575cbbf-15df-49da-93a2-f96abe0fd8d7
|
||
- quickly set up a visualization for new and emerging languages and system structures
|
||
ls-type:: annotation
|
||
hl-page:: 10
|
||
hl-color:: yellow
|
||
id:: 6575cbd1-a3f1-4f06-a83e-7c475b9a1c72 |