Skip to content

Commit 5c778d5

Browse files
committed
[#570] Update developer guide and articles page
1 parent 6ba6d53 commit 5c778d5

5 files changed

Lines changed: 33 additions & 41 deletions

File tree

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,4 @@ Download the application from the [latest release](https://github.com/prmr/JetUM
2424
* [User Guide](docs/user-guide.md)
2525
* [JetUML File Format](docs/schemas.md)
2626
* [Guide for Developers](docs/developers.md)
27-
* [Architecture Description](/docs/architecture.md)
2827
* [External Blogs and Articles](/docs/articles.md)

_config.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
theme: jekyll-theme-cayman
2-
include: CONTRIBUTING.md
3-
include: CODE_OF_CONDUCT.md
2+
include: CONTRIBUTING.md, CODE_OF_CONDUCT.md

docs/architecture.md

Lines changed: 0 additions & 29 deletions
This file was deleted.

docs/articles.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# Blogs and Articles About JetUML
22

3+
* Wikipedia. **JetUML**. [(url)](https://en.wikipedia.org/wiki/JetUML)
4+
* 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)
36
* 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)
47
* 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)
58
* 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)

docs/developers.md

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
# Guide for JetUML Developers
22

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+
35
### Contents
46

57
* [System Requirements](#system-requirements)
68
* [Building the Application](#building-the-application-in-eclipse)
79
* [Committing Code](#committing-code)
810
* [Packaging the Application](#packaging-the-application)
911
* [Copyright Notice](#copyright-notice)
10-
* [See Also](#see-also)
12+
* [Architecture Description](#architecture-description)
1113

1214
## System Requirements
1315

@@ -16,10 +18,10 @@ The current version of JetUML is built with Java 21, the latest long-term suppor
1618
## Building the Application in Eclipse
1719

1820
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.
2325
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.
2426

2527
## Committing Code
@@ -83,8 +85,26 @@ You should have received a copy of the GNU General Public License
8385
along with this program. If not, see http://www.gnu.org/licenses.
8486
```
8587

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.
87106

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)
110+
* [Node Storage](functional/NodeStorage.md)

0 commit comments

Comments
 (0)