You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* M.P. Robillard. **Lightweight Software Modeling with JetUML**. Modeling Languages Blog, 2020. [(url)](https://modeling-languages.com/lightweight-software-modeling-with-jetuml/)
5
+
* F. Martinig. JetUML – a Simple Open Source UML Diagramming Tool. Methods and Tools Blog, 2020. [(url)](https://www.methodsandtools.com/tools/jetuml.php)
3
6
* M.P. Robillard and K. Kutschera. **Lessons Learned in Migrating from Swing to JavaFX**. IEEE Software, 37 (3), 2020. *Reports on the experience of migrating the GUI to JavaFX*. [(pdf)](https://www.cs.mcgill.ca/~martin/papers/software2019.pdf)
4
7
* F. Pfahler, R. Minelli, C. Nagy, M. Lanza. **Visualizing Evolving Software Cities**. In Proceedings of the 8th Working Conference on Software Visualization, 2020. *Discusses the evolution of the JetUML code base*. [(pdf)](https://www.inf.usi.ch/lanza/Downloads/Pfah2020a.pdf)
5
8
* D. Marmsoler and A. Petrovska. **Detecting Architectural Erosion using Runtime Verification**. In Proceedings of the 12th Interaction and Concurrency Experience Workshop, 2019. *Applies a verification method to JetUML*. [(pdf)](https://www.researchgate.net/publication/333748317_Detecting_Architectural_Erosion_using_Runtime_Verification/download)
Copy file name to clipboardExpand all lines: docs/developers.md
+29-9Lines changed: 29 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,13 +1,15 @@
1
1
# Guide for JetUML Developers
2
2
3
+
Thanks for considering contributing to the JetUML project. Please consult the [Contributing Guidelines](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md).
4
+
3
5
### Contents
4
6
5
7
*[System Requirements](#system-requirements)
6
8
*[Building the Application](#building-the-application-in-eclipse)
7
9
*[Committing Code](#committing-code)
8
10
*[Packaging the Application](#packaging-the-application)
@@ -16,10 +18,10 @@ The current version of JetUML is built with Java 21, the latest long-term suppor
16
18
## Building the Application in Eclipse
17
19
18
20
1. Ensure that you meet the system requirements, including a working version of Eclipse.
19
-
2. In Eclipse, ensure that the JDK 21 is the default workspace JRE (_Window | Preferences | Java | Installed JREs_).
20
-
3. Create a new _user library_ called `JavaFX` that includes all the JavaFX 21 jar files. To create this library, access _Window | Preferences | Java | User Libraries_, select _New..._, enter the exact string `JavaFX`. Then, select this library, and click _Add External JARS..._, then find and select the jar files under the `lib` directory of your JavaFX download.
21
-
4. Import the [JetUML repo](https://github.com/prmr/JetUML.git) in Eclipse (_File | Import | Git | Projects from Git | Clone URI_). If you meet the system requirements, the project should build automatically.
22
-
5. To run JetUML, right-click on the project in the Package Explorer and select _Run As | Java Application_, selecting `JetUML` as the main file.
21
+
2. In Eclipse, ensure that the JDK 21 is the default workspace JRE (_Window > Preferences > Java > Installed JREs_).
22
+
3. Create a new _user library_ called `JavaFX` that includes all the JavaFX 21 jar files. To create this library, access _Window > Preferences > Java > User Libraries_, select _New..._, enter the exact string `JavaFX`. Then, select this library, and click _Add External JARS..._, then find and select the jar files under the `lib` directory of your JavaFX download.
23
+
4. Import the [JetUML repo](https://github.com/prmr/JetUML.git) in Eclipse (_File > Import > Git > Projects from Git > Clone URI_). If you meet the system requirements, the project should build automatically.
24
+
5. To run JetUML, right-click on the project in the Package Explorer and select _Run As > Java Application_, selecting `JetUML` as the main file.
23
25
6.**If you are using a Mac**, to run the application, open the run configuration and make sure the checkbox "Use the -XstartOnFirstThread argument when launching with SWT" is not checked.
24
26
25
27
## Committing Code
@@ -83,8 +85,26 @@ You should have received a copy of the GNU General Public License
83
85
along with this program. If not, see http://www.gnu.org/licenses.
84
86
```
85
87
86
-
## See Also
88
+
## Architecture Description
89
+
90
+
This section captures the major decisions related to the development of JetUML.
91
+
92
+
## Architectural Principles
93
+
94
+
The following principles guide the development of JetUML:
95
+
96
+
***No dependencies:** The application depends on no external libraries. This decision is to minimize the development and evolution cost, minimize the risk of having to do effort-intensive library adaptations, and lower entry barriers for contributors.
97
+
***Minimalist feature set:** The application only supports core UML diagramming features.
98
+
***Violate Encapsulation for Testing:** To goal for the design is to support the highest possible level of encapsulation, and this implies the most restrictive access modifiers. When necessary, the
99
+
classes in the `test` source folders can use reflection to get around accessibility restrictions.
100
+
***No reflection:** To avoid fragile and hard-to-understand code, the project does not rely on any heavily-reflective framework, such as Javabeans.
101
+
***No streaming:** The use of [streaming](https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html) is explicitly avoided in the interface of classes. JetUML has few data-intensive operations, as diagrams typically have only a handful of elements. In this context, the downsides of streaming (harder to debug, problems with checked exceptions, dual-paradigm design) are deemed to outweigh the advantages (more compact code). When appropriate, use of streams provided by API classes can be used if limited to the scope of a method.
102
+
103
+
## Functional View
104
+
105
+
The functional view is split by functional concern.
87
106
88
-
*[Contributing Guidelines](CONTRIBUTING.md)
89
-
*[Code of Conduct](CODE_OF_CONDUCT.md)
90
-
*[Architecture Description](architecture.md)
107
+
*[Diagram State Management](functional/DiagramState.md)
108
+
*[Tab Management](functional/TabManagement.md)
109
+
*[Diagram Element Properties](functional/properties.md)
0 commit comments