Vol-3170/paper9

From BITPlan ceur-ws Wiki
Jump to navigation Jump to search

Paper

Paper
edit
description  
id  Vol-3170/paper9
wikidataid  Q117351472→Q117351472
title  Enhancement of Renew to Version 4.0 using JPMS
pdfUrl  https://ceur-ws.org/Vol-3170/paper9.pdf
dblpUrl  https://dblp.org/rec/conf/apn/ClasenMHWV22
volume  Vol-3170→Vol-3170
session  →

Enhancement of Renew to Version 4.0 using JPMS

load PDF

Enhancement of Renew to Version 4.0 using JPMS
Laif-Oke Clasen1 , Daniel Moldt1 , Marcel Hansson1 , Sven Willrodt1 and Lukas Voß1
1
 University of Hamburg, Faculty of Mathematics, Informatics and Natural Sciences, Department of Informatics
https:// www.informatik.uni-hamburg.de/ TGI/ renew/


                                         Abstract
                                         Tools must be continuously developed further. For the Java reference nets tool Renew, the latest results
                                         of an extensive transformation process are presented. Starting from our good plugin architecture, we
                                         were able to convert the Java plugins into Java modules. Most of the architectural hindrances arose
                                         from the programming language itself. Java 9 introduced the Java Platform Module System (JPMS), and
                                         the Long-Term Support versions of Java 11 and 17 now provide modules and layers as central concepts
                                         to support better architectures. Their application is discussed using the transformation from Renew 2.5
                                         to Renew 4.0, which applies the module concept to a medium-sized software toolset. Experiences from
                                         this extensive process are highlighted.

                                         Keywords
                                         Tool, Petri Nets, Release, Java, Module, JPMS, Migration, Renew




1. Introduction
Renew is a continuously developed extensible modeling and execution environment for Petri
nets with various formalisms and other modeling techniques (see http://www.renew.de and
[1, 2, 3]). The most prominent Petri net formalism of Renew is the Reference net formalism [4],
which combines the concept of nets-within-nets [5] with reference semantics and the expressive
power of object-oriented programming in the form of Java as the inscription language.
   Reference nets in Renew can handle Java objects as tokens and Java expressions in transition
inscriptions to execute Java code during the simulation. With the nets-within-nets concept, it
is possible to build dynamic hierarchies of arbitrary height and nestedness. Multiple nets can
communicate using synchronous channels, which enable the bidirectional exchange of informa-
tion via parameters. Combining several channels on transitions allows for the synchronous
execution of an arbitrary number of transitions (bindings) across arbitrary many net instances.
The formalism is based on true concurrency semantics and, therefore, is well-suited for the
modeling and implementation of concurrent software systems.
   Renew is written in Java and is available for multiple platforms (including Windows, Linux,
and Mac). This contribution covers the newly released new modularized version Renew 4.0,
available free of charge, including the source code. 1
PNSE’22: International Workshop on Petri Nets and Software Engineering, 2022, Bergen, Norway
" 7clasen@informatik.uni-hamburg.de (L. Clasen); moldt@informatik.uni-hamburg.de (D. Moldt);
5hansson@informatik.uni-hamburg.de (M. Hansson); 5willrod@informatik.uni-hamburg.de (S. Willrodt);
8voss@informatik.uni-hamburg.de (L. Voß)
                                       © 2022 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
    CEUR

          CEUR Workshop Proceedings (CEUR-WS.org)
    Workshop
    Proceedings
                  http://ceur-ws.org
                  ISSN 1613-0073




                  1
     Download for Renew 2.6 and Renew 4.0 can be found at: http://www.renew.de.
In addition to version 4.0, another new version based on the non-modularized code basis, Renew 2.6, realizes bug



                                                                                                         156
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                                         156–167


   The development of Petri net tools is a challenge as any other tool support. Software
architecture ages due to changing environments or technical debts arise[6]. Adaptation of
tools to this dynamic environment is therefore necessary. Renew’s development spans now
more than two decades 2 . Consequently, Renew was adapted to the new Java concepts of
modules and layers. Such a change in software architecture means a significant workload
for software systems engineers. For example, the adaptation of the Java Language Compiler
to the new features took quite a some time: see the Jigsaw project. As a consequence, these
language extensions provided by the Java Platform Module System (JPMS) caused considerable
efforts for the Renew team since 2017 3 . Besides this process, new requirements popped up
continuously and led to the continuous growth of the software system. Maintaining a running
software system and changing the software architecture in parallel put some extra burden on
the whole Paose (Petrinet-, Agent- und Organisation-oriented Software Engineering;
see [10, 11, 12]) team that managed and performed the development process.
   This contribution is a summary of the lessons learned and is intended to provide guidance
to other tool developers in the Java community about migrating their software systems to the
JPMS.
   Section 2 addresses the foundations. Section 3 explains the goals of the development of Renew
and emphasizes our development process. Section 4 sketches the way Renew is modularized.
Examples of the modularization are covered in Section 5. In Section 6 the results are discussed
before we conclude with Section 7.


2. Foundations
As explained above, Renew is a widely used tool for modeling and simulating Petri net for-
malisms, especially reference nets (see [4]). Important to know is that Renew has been built with
a special architecture. First, structured object-oriented components were the building blocks.
These were replaced by the plugin-based architecture as introduced in [13, 14]. Agent-oriented
concepts influence the architectural style (see [15]). Service orientation and the agent ideas
inspired us to strive for a more flexible architecture with dynamic structures at runtime. Java
has relevant limitations with respect to dynamic (un)loading of software components, which
was covered partly with our plugin architecture by special loading and unloading of classes and
nets. For our multi-agent systems dynamic change of system structure is an important concept.
While the modeling of reference nets allow this in principle, Java did not forget classes easily.
   All this motivated us to start with the migration of our software system to the JPMS. To the
best of our knowledge, our architecture is one of the first few examples of a nontrivial software
system that migrated to the new concept of modules. Furthermore we seem to be the only Java
based software system that uses several layers intensively.

fixes and improvements like a new GUI, which e.g. includes the ability to zoom. Renew 3.0 is an earlier internal
prototype based on OSGi. Due to our own plugin architecture, we skipped that version for official releases.
     2
       The first official release was published in [1]. After that major topics and enhancements were: architecture
guide of Renew 1.5 [7], plug-in architecture at Petri Nets 2004 [8], development environment [9, 3]
     3
       Java (Oracle): https://www.oracle.com/java; OpenJDK: https://openjdk.java.net/; Java Community Process:
https://jcp.org; background information on Jigsaw the predecessor of the JPMS, starting in 2008 / 2014: https://
openjdk.java.net/projects/jigsaw/



                                                       157
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                          156–167


   The JPMS provided since Java version 9 attempts to improve two important aspects of the
Java software system: First of all the modularization/encapsulation of software components
is addressed, which is mainly covered by the concept of modules, module path, etc. (see [16]).
The concept of a module is based on the concept of information hiding (see [17, 18]) The layer
concept covers some improved dynamic structure, which allows for loading and unloading
modules at runtime (dynamic class loading). While the module system has already found its
way into several software systems (including the Java compiler), the layer concept is rarely used
to our knowledge.
   The four types of Java modules (basic, automatic, unnamed, and open modules) (see [19, 20])
allow a smooth transition from former Java architectures to modularized architectures . For
Renew, we strive for the simple use of basic modules, as the others weaken the encapsulation
requirements. However, some exceptions are still required for third-party libraries, as they are
not modularized.
   This contribution presents the use of basic modules for our own components of Renew
to illustrate the software technical improvements. Special keywords describe dependencies
between modules. In particular this ensures the existence of required modules and covers
explicit export of accessible parts of the modules. Dependencies that only exist at runtime are
covered by uses and provides. With the keyword opens, it is possible to use Reflection arbitrarily,
unlike with the keyword export where it is only possible on accessible parts. Dynamic aspects
of layers allow to group modules and to load/unload them at runtime. We refer the interested
reader to the Java ecosystem mentioned above for the technical details.


3. Objectives and Development Process
As mentioned above, our software Renew and its surrounding ecosystem grew over the years
due to increased demands with respect to the software features. Maintenance of the software
code became more and more difficult. Even our separation of the software components into
plugins did not allow for a complete separation of development processes. Even more severe
was the fact that the Java code was not compliant with newer Java standards, as there has been
a new Java version every half a year since 2017. All this required some decisions about the
general setup of the development process and the software architecture. The decision was to
migrate to a new third major software architecture line.
   To illustrate the different stages of our decision process we explain our basic goal set. The
first goals of the project were to evaluate if a migration is possible and worthwhile. A first
teaching project and a thesis ([21]) showed that is is possible and promising as the software
architecture should improve even further. After that several hinderances conceptually and
technically had to be addressed and the general goal was to complete the migration for the
whole set of Renew plugins. Especially the change of build environment had to be added to the
goal set and addressed (see [22, 23]).
   Additional goals were added when it became clear that the migration will be successful: Our
Mulan framework (see [24]) and our largest application, the Settler of Catan Game (see [25])
were addressed to run as non-modularized Java plugins first and then become migrated to. To
test the applicability several concurrently running thesis developed new plugins directly for the



                                               158
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                                         156–167


new architecture (see e.g. [26, 27, 28]). An overall goal was to test and adapt the Paose-approach
for such kind of projects and to strive for an improvement of the software quality and the
software development process in general.
   Renew as a mid-sized software requires non-trivial efforts to introduce the JPMS of Java 9.
There are only very few systems of the same or larger size that have successfully migrated.
To illustrate the complexity to introduce the modularity concept to Java systems, we hint at
the time scale which was necessary to develop the Java Platform Modul System (JPMS), which
is modularized now. The transition took from August 2008 until the release of Java 9 about 9
years (see [29, 30]). For Renew the transition has taken four years until the official Release 4.0.
Although not all Paose members thought the migration made sense at the beginning of the
migration, they were convinced by the resulting architecture. 4 . As a good starting point for the
modularization our plugins and plugin architecture proved as advantageous.
   Accompanied was the technological push by some application requirements resulting from
our Paose approach. Some new major features have been developed, and several (primarily
internal) prototypes have been built during the last ten years to provide tool support for Paose.
The need to maintain the existing version of Renew 2.x for several ongoing theses was obvious.
   Therefore we had to cover also a parallel development of the two major versions. The plugin
architecture, our development environment and the Paose-approach as our project basics
allowed to maintain both software lines concurrently. Nevertheless discipline was necessary
to properly cherry pick improvements and bug fixes from one version to the other. In the
beginning this flow was more from Renew 2.5 towards the ongoing development of release 4.0.
In the end this flow is now from 4.0 to 2.6. Development of Renew and all other software more
or less followed our internal Paose development process ([31, 15, 13, 32]). Everyone agreed to
follow this line for the next version of Renew, which meant to apply- our agile, agent-oriented
development process. The software architectural style should be service- and agent-oriented,
following the newest Java standards.


4. Modularization of Renew
In [13] we used reference nets to describe our plugin system’s general software design, including
the management within a plugin system. This concept was implemented in Renew and proved
to be very useful over the years. Based on our plugin and nets-within-nets concepts, we can
exchange net instances (i.e., Java objects) at runtime without significant issues. In contrast to an
exchange, the complete removal of net templates (i.e., Java classes) with our former architecture
was impossible without serious efforts due to the missing modularity in Java 8. Frameworks
like OSGi were not considered suitable for our purposes as it required a different architecture
and had the burden of a larger external framework.
   The introduction of JPMS into the core of Java underlines the general problem with external
and hence more abstract architecture support, in this case, the new layer of abstraction on top
of the package structure in the form of modules. Restrictions of Java 8 and all former versions
prevented removing classes at runtime based on the standard Java classloader. Therefore, we

    4
        Disadvantages have to be noted in the integration of non-modularized external programs and libraries



                                                        159
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                            156–167


introduced our own loading and unloading net templates (as classes). To opt for a standard
mechanism was one major motivation for the initial investigation of the new concept, which
proved to be very helpful.
   We introduced the architectural guideline for the modularized Renew that each plugin
corresponds to a module. With this, the plugins are better encapsulated, and the plugin interfaces
now become visible as module interfaces and are therefore more explicit. Introducing a module
layer for each module also enables the complete unloading (removal from runtime) of plugins.
Due to the separation of plugins into Java module layers, each plugin now has its own Java(!)
based classloader. Plugins can now be removed at runtime directly using Java language features.
   The module layers are organized in a hierarchy formed by the parent relationship between
the module layers. Only leaf nodes can be removed from this hierarchy, as Java’s garbage
collector only removes objects to which references no longer exist. A non-leaf layer is still a
parent to another layer and is thus referenced by it. It can first be removed if all its child layers
are removed as well, in which case it becomes a leaf node. This ensures for Renew that Plugins
can only be removed as long as the architecture guideline (one plugin =     ̂︀ one module =    ̂︀ one
layer) is preserved. So again, language and architecture harmonize well.


5. Modularization Examples
In this section of the paper, we present a brief graphical overview of our module or plugin
architecture (see Figure 1). Then some explanations about the architecture are provided.
   In Figure 1 three different plugins are shown as boxes. Each box is a plugin of Renew. The
boxes with a red border are the publicly available Renew components / plugins. All green boxes
are modularized. The white boxes have not been modularized, as they are currently only used
in conjunction with Renew 2.6. But due to the architecture a modularization would be possible
at any time. A similar diagram exists for our Mulan/Capa framework, which has also been
modularized to the same extent in the meantime.
   In our modularization process, it became clear early on that we needed to migrate our build
environment from Ant to Gradle. Reasons for this were easier dependency management, support
for multi-project builds and the builds should become slimmer, simpler and faster. One problem
we ran into is that only weak tool support exists to convert Ant to Gradle. Therefore everything
had to be developed from scratch, based on the knowledge and information contained in the
Ant files. Adversely this allowed new bugs to be made that were not in the Ant files before.
   Modularization clarified the dependencies of the plugins and shifted some control towards the
Java compiler. Main reason for this is, that for modularized Java modules must be available at
compile time. In Java 8 code cannot be really encapsulated. Reflection allowed to spy into every
software and reveal internal code. Basic modules protect the modules from been inspection
via reflection. For smooth transition of the whole Java eco system the can be weakened in a
controlled and explizit manner. While we do not use this option for our Renew code, this might
be an interesting option for our multi-agent framework Mulan, where dynamic changes of
system structures are more common on the level of code.
   One of the main reasons for our adaptation of the architecture is that we wanted to dynamically
load or unload plugins even simpler at runtime. For this the module layers could be used well,



                                                160
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                                                                          156–167




                                                                   Lola



                                                                 AppleUI


                                                                Elementary
                                                                ObjectNet

     NavigatorSVN                                              Hierarchical
                                                               WorkflowNets
                    NavigatorVC
                                                                                    ImageNetDiff
     NavigatorGit                                                                                                             Part of
                                                                 Logging
                                                                                                                               dist


                                                                   Lola
                                                                    2
                                                                                                                              TODO

                                                                  Maria
                                                   NetTest
                                                                  Nets                             Navigator
                                     Extras
                                                                                                                           Modularized
                                                                 MiniMap
                                                    Plugin
                                                 Development

                                                                Refactoring
                                                                                        Gui

                                                    MVS                                            Console
                      PetriNet
                                                                 NetDoc
                     Converter                                                         Model
                                                                                                                           Splashscreen
                                  ModelChecker
                                                 ImageNets                                          Export
                    Refactoring                                                                                  CH
                     Ontology                                   Formalism             Access
                                                                                                                             Eclipse
                                                  Sonar Net        Gui
                      Renew         Diagram       Prototype                                                    Simulator                     Loader
  BPMN                 Grass                                                        CNFormalism                              Window
                                                                  Tablet                           RenewAnt
 Roundtrip                                         UnitEd                                                                  Management
                                     Averto      Components
                      BPMN
                                                                                       Catch
NetAnalysis                                                      Tutorial                           Remote                     Util

                       IC           Ontology        Sonar
                     Workflow                       Editor        Net                Distribute
                                                                                                                Prompt
                                                               Components
                                                                                                   Formalism
                                   Refactoring
                                                  CurryCPN
                                                                 RefNet
                                                               Reachability            Misc
                        FA

                                                                    SL
                                                     FS


                                                                  Batch

                                                  Workflow
                                                                 Model
                                                                Converter




                                                               Composition
                                                                                    FAFormalism


                                                                  WFNet



                                                                   XRN



                                                                  SDNet




                                                                 Scheme




Figure 1: Renew dependencies with modularization progress [22, p.18]


since removing a layer removes the complete code, even from the JVM. Which opens up the
possibility that classes can be loaded multiple times at different times.
   A major drawback of modularization within our setting is that the module layers together
with the module system cause problems if non-modularized parts of the software exist. The
class and module paths (see [33]) must be handled separately. Renew uses external libraries
that are not modularized. This weakens the approach because it does not guarantee the same




                                                                              161
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                          156–167


level of encapsulation as the basic modules.


6. Discussion
This contribution’s primary goal was to present the results of our transformation process toward
a non-trivial, modularized Java system. Experiences like this are hardly documented up to now,
and therefore we discuss the pros and cons in the following.
   First of all, we reached our goals of the modularization of Renew. Modules improve the
encapsulation of our plugins. Their explicit representation of dependencies implies a better
architectural style. Tools from the Java ecosystem and development environments support
dependency management. All this leads to higher software quality.
   In general, our experience is that the higher quality provides a more precise separation of the
development of functional features. As we have already used this architecture for about two
years, several (minor) software deficiencies that were not seen before became evident and could
be handled. Again this improves the quality of our software.
   As positive results of the transformation to the JPMS (for Java systems in general and Renew
especially) can be named: a) Explicit declaration of the interfaces, b) support of decomposition
of the overall system (what was already well prepared by the plugin system), c) reduction of the
memory usage by loading only the necessary code (in the form of modules), d) reduction of
complexity, since the restricted interfaces between modules, compared to the former package
structure, enforce a stronger encapsulation and e) support for the idea of plugins by the language:
Our plugin architecture is enhanced by the restrictions of modules (and layers).
   Negative aspects that need to be mentioned are: First of all, our restricted usage of modules
(module = ̂︀ layer) for the current Renew architecture as it limits the Java language concepts.
However, we have already experimented with some modifications. This can be done within
one layer when a plugin is split up into several modules, e.g., since we have realized too
much functionality inside a single module. Up to now, we have mainly concentrated on the
transformation of the plugins into modules. As this was successful, we can now again address
more of the inner plugin features and improve the software in that direction. Doing so we will
have (one plugin = ̂︀ several modules = ̂︀ one layer) or (several plugins =
                                                                          ̂︀ several modules =
                                                                                             ̂︀ one
layer).
A second negative aspect of transforming existing software systems is that the build environment
must be adapted. For Renew, this holds especially true since the former Ant tasks consisted
of several files larger than 50KB. Renew’s build environment and the accompanying Paose
environment had to undergo a severe change, e.g., with the transition from Ant to Gradle.
Nearly 50% of the workload can be attributed to that transition, due to the aforementioned large
size of the former Ant tasks. Therefore, we recommend moving to a modern build system as
early as possible, as overlapping transitions further complicate the process. Build environments,
which are mostly software systems, continuously require some maintenance. For Renew, we
have reached a relatively stable state by now, so most of the work goes into the Java software
system from now on.
   A third negative aspect is that related frameworks must be considered. Some frameworks rely
on Renew but are parts of our other projects within the Paose context. These related projects



                                               162
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                                       156–167


also had to be migrated. Most notably, our Mulan/Capa framework was addressed. In the first
version Mulan was treated like any other external plugin system. Integration was realized
via the Classloader. It successfully had the Mulan functionality available via the traditional
Java path management as it is the default for legacy software. With our largest implementation
example, Settler, validation could be provided. 5 As the Mulan framework also uses a plugin
architecture, we migrated most of its plugins in the context of two BSc theses and as one out
of five sub-projects of our last teaching project in 2021/2022 [25, 24]. 6 Settler and Mulan are
running with Renew 2.6 and Renew 4.0, illustrating that we managed the parallel development
due to the intended Java option of embedding legacy code. The quality of the former plugin
architecture and the provisioning of a smooth transition option by Java as a language can
be seen. Due to its size, Mulan has a similar complexity as Renew. We use it as the test
environment for the smooth transition of plugin-based systems toward JPMS-based systems.
Teaching students this kind of software evolution on practical examples is worth the effort.
Most of the Java systems today still need to be migrated.
   Overall, one can conclude that migration implies a high workload. However, it is worth the
effort when a sufficient starting point is available. The plugin architecture already provides
a good system architecture which now gets supported well by the JPMS. With respect to
pure new functionality, we have modularized MoMoC and built SignatureCheck from the
start in a modularized version. 7 Both versions are larger software systems that illustrate the
potential of modularized architectures. Both main developers started with no experience in
JPMS. Nevertheless they had no problems building their plugins as modules. As a result, we
now have two signature-related plugins (from the user AND software perspective) that have
been developed as modules directly.
   These examples illustrate that concurrent and distributed teams can contribute to a single
system (see release 2.6 and 4.0). Process-oriented and structural teams can be established
following our matrix-organization of agent applications to drive Renew even further into this
direction, based on the Paose approach. A service-oriented implementation ([34, 35]) is one of
our technical solutions for the specific architectural directions while using the agent-oriented
perspective as the conceptual background. It is important to note that a smooth transition is
possible when the software is organized in packages/plugins. The architecture of the software
allows this part to be encapsulated by modules in a straight forward fashion.
   A different viewpoint can be taken when teaching software development is taken into account.
Students should learn the newest state-of-the-art in their discipline. As Java undergoes a major
technological change, it is essential to provide an environment that reflects this. Adding
functionality in a structured way can now be done on a higher level of abstraction since the
architectural guidelines are now more obvious by the language itself. Dependencies need to
be handled more explicitly than before. All this allows us to use our system to teach students
and provide them with a commercial-like development environment. The basis for a stricter

    5
      We have a Renew binary (Mulan Technology Preview) at https://paose.informatik.uni-hamburg.de/paose/
wiki/Downloads available since 2010. There some of Mulan’s features can be seen. The Settler of Catan game
can be played, e.g., against a computer player.
    6
      See https://paose.informatik.uni-hamburg.de/paose/wiki/Settler for the current state of the transformation.
    7
      See MoMoC: https://paose.informatik.uni-hamburg.de/paose/wiki/MoMoC
SignatureCheck: https://paose.informatik.uni-hamburg.de/paose/wiki/SignatureCheck



                                                      163
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                       156–167


separation of plugin specification and implementation and the decomposition of larger modules
into several smaller modules has been created.


7. Conclusion
The migration of Renew, its plugins, and its frameworks, e.g. Mulan, is based on the work of
many people (special mention should be made of [21, 22, 34, 24, 23] and the work of about 100
participants in our teaching projects and thesis projects the last four years). Besides the Java
code, the build environment needed to be modernized, which led to a transition from Ant to
Gradle.
   This contribution’s primary goal is to present the results of our transformation of a mid-
sized software project from Java 8 to the JPMS. Tools tend to become larger and larger due to
continuously increasing demands and requirements. Our results are especially relevant for other
(Petri net) tools developers who use Java as the main development language. Results presented
here follows on from our long-term experiences. They show: (a) Architecture is essential for
long-term or complex tools, especially when developing with a larger team. (b) Migration from
Java 8 to the JPMS of newer Java version is possible for larger software tools. (c) Migration
is also possible within a university context with BSc and MSc students as developers. (d) The
workload is high, but the quality of the software basis improves. (e) The build environment
is an important component for the long term maintenance process to ensure that software
quality requirements are met. (f) Our Paose approach with its special modeling perspective
and project management proved to be suited as a the basis for the migration process and for
the general team communication, coordination and collaboration. (g) Development of larger
software is also possible in a university context based on the contributions of BSc and MSc
students who can learn working in cooperative software development contexts of non trivial
software systems.
   The current functional part of Renew 2.6 has been kept and developed concurrently beside
our Renew 4.0 release. Presenting the 4.0 release here shows that the software’s architec-
tural division into plugins and now modules are viable. From our experience an important
aspect of the successful migration was to already start from a plugin based architecture. Re-
new 4.0 now encompasses more explicit interfaces for the modules due to Java’s technical
requirements, respectively, the JPMS. Stronger encapsulation is automatically enforced when
enriching/restricting the plugins to be a module. Beside being able to apply on the newest
Java versions for the maintenance of Renew now, the software quality improved due to clearer
encapsulation.
   Overall our experiences during this transformation are auspicious in nearly any direction
of future teaching, research, and commercial projects based on Renew. We can recommend
undertaking the effort either from the beginning of new projects or transforming an already
existing project.
   For our own Renew and Paose context, we will be able to extend our various prototypes
individually without too much interference: We will be able to introduce new features to Renew
and our other software components. First areas include distributed simulation in clusters
/ the cloud and verification of reference nets. Further examples are net-specific tools like



                                               164
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                           156–167


MoMoC or specific Renew and Mulan/Capa based applications, like the Settler game. General
feature improvements are e.g. the SignatureCheck approach [26], which introduces trust via
certificates on nets and our software modules / plugins. For all these types of software entities,
good encapsulation is an important feature.
   One major current enhancement efforts will affect the build environment. In a first thesis
(see [28]) we experimented with the transition towards Maven repositories. This means that the
current central repository is split up into about 80 Maven repositories. Each plugin is embedded
within a single Maven repository. By introducing versioning via Maven repositories, we will be
able to provide stable and experimental versions of Renew side by side. A further topic is to
change our current architecture guideline from (one plugin =   ̂︀ one module = ̂︀ one layer) towards
(one plugin = ̂︀ one or more modules =  ̂︀ one (or eventually more) layer(s)).


References
 [1] O. Kummer, F. Wienberg, Renew – the Reference Net Workshop, Available at:
     http://www.renew.de/, 1999. URL: http://www.renew.de/, release 1.0.
 [2] O. Kummer, F. Wienberg, M. Duvigneau, M. Köhler, D. Moldt, H. Rölke, Renew – the
     Reference Net Workshop, in: E. Veerbeek (Ed.), Tool Demonstrations. Petri Nets (ATPN
     2003)., TU Eindhoven, 2003, pp. 99–102.
 [3] L. Cabac, M. Haustermann, D. Mosteller, Software development with Petri nets and agents:
     Approach, frameworks and tool set, Sci. Comput. Program. 157 (2018) 56–70.
 [4] O. Kummer, Referenznetze, Logos Verlag, Berlin, 2002.
 [5] R. Valk, Petri nets as token objects - an introduction to elementary object nets, in: J. Desel,
     M. Silva (Eds.), Petri nets ATPN 1998, number 1420 in LNCS, Springer, Berlin, 1998, pp.
     1–25.
 [6] C. Lilienthal, Langlebige Software-Architekturen, volume 3, dpunkt.Verlag, Heidelberg,
     2020.
 [7] O. Kummer, F. Wienberg, M. Duvigneau, Renew – Architecture Guide, release 1.5 ed.,
     University of Hamburg, Faculty of Informatics, Theoretical Foundations Group, Hamburg,
     2001. URL: http://www.renew.de/, available at: http://www.renew.de/.
 [8] O. Kummer, F. Wienberg, M. Duvigneau, J. Schumacher, M. Köhler, D. Moldt, H. Rölke,
     R. Valk, An extensible editor and simulation engine for Petri nets: Renew, in: J. Cortadella,
     W. Reisig (Eds.), Petri Nets 2004, ICATPN 2004, volume 3099 of LNCS, Springer, Berlin,
     2004, pp. 484–493.
 [9] L. Cabac, M. Haustermann, D. Mosteller, Renew – the reference net workshop, in:
     D. Moldt, H. Rölke, H. Störrle (Eds.), PNSE’15, Brussels, Belgium, June 22-23, volume 1372
     of CEUR Workshop Proceedings, CEUR-WS.org, 2015, pp. 313–314. URL: http://CEUR-WS.
     org/Vol-1372.
[10] D. Moldt, Petrinetze als Denkzeug, in: B. Farwer, D. Moldt (Eds.), Object Petri Nets, Pro-
     cesses, and Object Calculi, FBI-HH-B-265/05, Bericht Universität Hamburg, FB Informatik,
     Vogt-Kölln Str. 30, D-22527 Hamburg, 2005, pp. 51–70.
[11] D. Moldt, PAOSE: A way to develop distributed software systems based on Petri nets and




                                                165
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                         156–167


     agents, in: J. Barjis, U. Ultes-Nitsche, J. C. Augusto (Eds.), MSVVEIS Proceedings, 2006, pp.
     1–2.
[12] L. Cabac, Modeling Petri Net-Based Multi-Agent Applications, Dissertation, Universität
     Hamburg, Department Informatik, Vogt-Kölln Str. 30, D-22527 Hamburg, 2010.
[13] L. Cabac, M. Duvigneau, D. Moldt, H. Rölke, Modeling dynamic architectures using nets-
     within-nets, in: G. Ciardo, P. Darondeau (Eds.), Petri Nets, ICATPN 2005, volume 3536 of
     LNCS, Springer, 2005, pp. 148–167.
[14] M. Duvigneau, Konzeptionelle Modellierung von Plugin-Systemen mit Petrinetzen, vol-
     ume 4 of Agent Technology – Theory and Applications, Logos Verlag, Berlin, 2010.
[15] H. Rölke, Modellierung von Agenten und Multiagentensystemen – Grundlagen und An-
     wendungen, vol. 2, Agent Technology – Theory and Applications, Logos Verlag, Berlin,
     2004.
[16] Oracle, Understanding Java 9 Modules, 2017. URL: https://www.oracle.com/corporate/
     features/understanding-java-9-modules.html, [Online; accessed 19.05.2022].
[17] D. L. Parnas, On the criteria to be used in decomposing systems into modules, Commun.
     ACM 15 (1972) 1053–1058. URL: https://doi.org/10.1145/361598.361623. doi:10.1145/
     361598.361623.
[18] D. L. Parnas, A technique for software module specification with examples, Commun. ACM
     15 (1972) 330–336. URL: https://doi.org/10.1145/355602.361309. doi:10.1145/355602.
     361309.
[19] A. Jecan, Java 9 Modularity Revealed, Springer, 2017.
[20] K. Sharan, Erratum to: Java 9 revealed: For early adoption and migration, in: Java 9
     Revealed, Springer, 2018, pp. E1–E1.
[21] A. Daschkewitsch, Modularisierung des Renew-Plugin Systems, Masterarbeit, Universität
     Hamburg, FB Informatik, Vogt-Kölln Str. 30, D-22527 Hamburg, 2019.
[22] J. R. Janneck, Modularizing a Plugin System Using Java Modules: Application to a Medium-
     Sized Open-Source Project, Masterarbeit, Universität Hamburg, FB Informatik, Vogt-Kölln
     Str. 30, D-22527 Hamburg, 2021.
[23] J. Johnsen, Sicherung der Lauffähigkeit von Renew 4.0 bei einer Umstellung der Java LTS
     Version, Bachelor thesis, Universität Hamburg, FB Informatik, Vogt-Kölln Str. 30, D-22527
     Hamburg, 2022.
[24] J. Kronziel, Modularisieren eines Plugin Systems am Beispiel von Mulan, Bachelor thesis,
     Universität Hamburg, FB Informatik, Vogt-Kölln Str. 30, D-22527 Hamburg, 2021.
[25] F. Beese, Untersuchung von Optionen bei der Erweiterung einer Multiagentenanwendung
     im Kontext von PAOSE am Beispiel von Settler, Bachelorarbeit, Universität Hamburg, FB
     Informatik, Vogt-Kölln Str. 30, D-22527 Hamburg, 2021.
[26] R. Jürgensen, Untersuchung des Zertifikateeinsatzes im Java-Umfeld – Beispielhafte Diskus-
     sion von Zertifikaten für die Open-Source Software Renew, Master thesis, Universität
     Hamburg, FB Informatik, Vogt-Kölln Str. 30, D-22527 Hamburg, 2021.
[27] C. Künemund, Entwicklung eines Plugins zur Berechnung und Visualisierung von In-
     varianten in P/T-Netzen mit synchronen Kanälen in Renew, Bachelor thesis, Universität
     Hamburg, FB Informatik, Vogt-Kölln Str. 30, D-22527 Hamburg, 2021.
[28] A. Heinze, Umstellung des Quellcodes der Software Renew auf eine Multi-Repository-
     Struktur unter Verwendung der Abhängigkeitsmanagement-Funktionalität von Gradle,



                                               166
�Laif-Oke Clasen et al. CEUR Workshop Proceedings                                          156–167


     Bachelor thesis, Universität Hamburg, FB Informatik, Vogt-Kölln Str. 30, D-22527 Hamburg,
     2022.
[29] Oracle, Project Jigsaw, 2017. URL: https://openjdk.java.net/projects/jigsaw/, [Online; ac-
     cessed 19.05.2022].
[30] Oracle, Project Jigsaw: JDK modularization, 2020. URL: http://openjdk.java.net/projects/
     jigsaw/doc/jdk-modularization.html, [Online; accessed 19.05.2022].
[31] D. Moldt, F. Wienberg, Multi-agent-systems based on coloured Petri nets, in: P. Azéma,
     G. Balbo (Eds.), Petri Nets, ATPN 1997, number 1248 in LNCS, Springer, Berlin, 1997, pp.
     82–101.
[32] L. Cabac, M. Duvigneau, D. Moldt, H. Rölke, Applying multi-agent concepts to dynamic
     plug-in architectures, in: J. Mueller, F. Zambonelli (Eds.), AOSE VI. Revised Selected Papers,
     volume 3950 of LNCS, Springer, Berlin, 2006, pp. 190–204.
[33] Oracle, Setting the classpath, 2018. URL: https://docs.oracle.com/javase/7/docs/technotes/
     tools/windows/classpath.html, [Online; accessed 18.05.2022].
[34] L.-O. Clasen, Untersuchung von Java Service Mustern für die Verwendung im modularen
     Renew, Bachelorarbeit, Universität Hamburg, FB Informatik, Vogt-Kölln Str. 30, D-22527
     Hamburg, 2021.
[35] J. H. Röwekamp, submitted PhD thesis: Skalierung von nebenläufigen und verteilten
     Simulationssystemen für interagierende Agenten, Ph.D. thesis, Universität Hamburg, FB
     Informatik, Vogt-Kölln Str. 30, D-22527 Hamburg, 2022.




                                               167
�