Bolée (pronounced bo-LEY) is a tool for Software Architecture Recovery on Moose. Formerly called "SARGE - Software Architecture Recovery for Game Engines", its name was changed to reflect its flexibility. It can be used for architectural recovery of ANY kind of system as long as you can provide:
- An XML file describing the dependencies
- A CSV file describing subsystem division
You can find examples of how these files should be formatted in the examples folder on the project's root.
On a Moose 10 image, execute the following code snippet in a Playground:
Metacello new
baseline: 'Bolee';
repository: 'github://gamedev-studies/bolee:main';
onConflict: [ :ex | ex useIncoming ];
onUpgrade: [ :ex | ex useIncoming ];
onDowngrade: [ :ex | ex useLoaded ];
load.
To run Bolée, open a Playground and execute:
BoleeForm open.
Inform the name and path of the project you want to analyse. You will also need your subsystems identified in CSV format and an include graph in XML format. To create these files, you can use our Game Engine Analyser. After you input all the necessary information, the "generate" button will unlock and you can click it to generate the Moose model. After generation is done, Bolée provides you with shortcuts for inspecting or visualising your model entities.
You can save a DOT file equivalent to the associations between tags you see in the Architectural Map.
|model solver|
model := MooseModel root at: 1.
solver := BoleeTagDepSolver new.
solver run: model engineName: 'ExampleEngine'.
Besides XML, DOT or GV files can also be used to represent include graphs. These are generated by different kinds of software, such as Madge, which generates include graphs for JavaScript and TypeScript applications. While no UI exists for the DOT parser in Bolée yet, you can use it to create models as follows:
|model parser|
parser := BoleeDotParser new.
"specify if you would like the model to be installed and the DOT file to be saved"
parser installAfterGeneration: true.
parser saveAfterGeneration: true.
"pass the base path of the project to be analysed and the Graphviz file to be parsed"
parser basePath: 'ExampleEngine/'.
"Madge generates files in UTF16, but Bolée's default is UTF8"
model := parser run: 'D:/MyDocs/ExampleEngine/example_engine.gv' encoding: 'UTF16'.