Skip to content

A tool for modeling and analyzing (Tropos like) formal goal models with Dynamic Intentions.


Notifications You must be signed in to change notification settings


Repository files navigation


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:

  1. Enable modeling of goals with evolving intentions/goals.
  2. Enable simulation of goal models as intentions evolve.
  3. 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.

Updates for Version 2.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.

Updates for Version 1.5

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.

Want to contribute?

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.


A tool for modeling and analyzing (Tropos like) formal goal models with Dynamic Intentions.







No packages published