BloomingLeaf is a browser-based tool that uses precise semantics (with Tropos) to model goals and relationships that evolve over time. Simulation techniques are used to enable stakeholders to choose between design alternatives, ask what-if questions, and plan for software evolution in an ever-changing world. BloomingLeaf implements the Evolving Intentions framework.
BloomingLeaf is developed primarily in The Grubb Lab at Smith College, but was originally created as part of @amgrubb's thesis at the University of Toronto.
Goals of BloomingLeaf:
- Enable modeling of goals with evolving intentions/goals.
- Enable simulation of goal models as intentions evolve.
- Enable stakeholders to ask time-based trade-off questions in early-phase requirements engineering.
Review our overview poster to learn more about the original goals of BloomingLeaf Version 1.0.
In Version 2.0, we refactored the code base to take advantage of the underlying backbone.js structure:
- removed all global variables in
leaf-ui
and updated the graph data structure - created backbone models for actors, intentions, evolving functions, configurations, and results
- created backbone views for all backbone models
- allow users to assign absolute values for function segments in the Element Inspector view
- updated and added functionality to the intermediate values table
- updated the communication between the front and backend code
- refactored the backend code base to take advantage of the new backbone models
- fix bugs in the next state view
- updated the look and feel of the tool
See our summary for further details about these additions.
In Version 1.5, we added the following model-management features (+ additional small features and fixes):
- separate analysis results from model elements
- save / load analysis configurations (num states, etc.)
- save / load analysis results - including a tag
- pair models with analysis results
- clear propagated labels
See our poster for further details about these additions.
The contributing guide and Node guide are good places to start. If you have questions, feel free to ask.
Building on the shoulders of giants:
Tool | Description |
---|---|
JointJS (Rappid) | JavaScript Diagramming Library (v2.3.1) |
JaCoP | Java Constraint Programming (JaCoP) solver |
gson | A Java serialization library to convert Java & JSON |
SweetAlert | Javascript Library for Popup customization |
ChartJS | Javascript Library for creating charts |
noUiSlider | JavaScript range slider library |
KeyboardJS | Javascript Libary to easily set up binding keys. |