-
Notifications
You must be signed in to change notification settings - Fork 48
System evolution analysis
This type of analysis lets you investigate the whole system from the outside-in, allowing you to separate the significant layers of the architecture and observe how they evolve in time and how they may depend on each other.
This task actually executes and combines three separate reports into a single one, as each report gives a different perspective to the same investigation and, like different pieces of a bigger puzzle, its information is most relevant when incorporated with the others.
- The first analysis tracks the total number of revisions for each layer or subsystem.
- The second analysis tracks the absolute churn, as total number of lines of code added and deleted, again for each layer or subsystem.
- The final report is basically a temporal coupling analysis performed at a higher level of abstraction than the individual module/file, where the data is aggregated for each layer/component of the overall system architecture.
$ gulp system-evolution-analysis [--dateFrom=<dateFrom>] [--dateTo=<dateTo>] [--timeSplit=<timeSplit>] [--boundary=<boundary>]
- The boundary parameter is not mandatory (if not present the results will be aggregated for one single layer that is the whole system), however it is very important and you should use it to run different analyses depending how you want to slice your system.
- The timSplit parameter again determines how to split the time interval into periods of time that are meaningful for the collection of the results.
I suggest you play with the possible values of these parameters in order to understand the effect they have on the analysis and the different learnings you can infer. See Tasks parameters.
The results from the first two reports are represented through typical line charts. It is important to note that the the shorter the chosen time split the more values are plotted in the diagram, therefore the more accurate is the curve interpolation (however this is not necessarily a reason to keep the time split very short).
Here's an example of a diagram representing the revision trend:
The chart for the code churn is very similar. You can play with the controls on the left side of the diagram to show and hide a particular curve or a group of curves:
On the other hand the coupling between the different architectural layers in time is represented through a stacked bar chart: