The Complexity module in Teamstudio Adviser allows you to build a complexity score for each application in your HCL Domino environment. It’s important to understand that the purpose of this module is to provide a broad brush way of comparing the complexity of a number of different applications, with a view to zooming in on the simplest (easiest to migrate) and most complex (hardest to migrate). It’s not intended to be an absolute measurement of code complexity on some internationally agreed scale.
Having said that, Complexity does provide an enormously valuable function if you are considering migrating a number of apps and want to get a sense of the relative cost of the exercise. Code complexity, by its nature, is something that is hard to define, mostly because different people have different views on what makes code complex. With that in mind, we have made the Complexity module of Adviser easy to use out of the box, but extremely configurable. Don’t agree with what we consider to be something that makes your code complex? You can easily go and tweak the settings to your heart’s content. In this post, we’ll talk about what those settings are, and how you can adjust them.
One thing to keep in mind if you do have a large number of databases in your environment is that the complexity analysis can take a long time to run. For that reason, Complexity scanning is initially disabled when you first install Adviser. It’s a good idea to review the complexity settings before you run a scan for the first time, rather than waiting potentially hours for the scan to complete, only to find you want to tweak the settings and then run it again.
1. Overall Complexity Score
In this section, you can configure the thresholds that are used to determine the overall level of complexity of each application: Very Low, Low, Medium, High and Very High. These are really just a way of categorizing the complexity scores of the different apps. The score is calculated simply by adding together all of the weighted scores of the individual complexity factors. Out of the box, anything with a complexity score of greater than 35 is considered to be Very High complexity.
2. Common Problems
Based on our experience of building and maintaining Domino apps, we’ve defined a number of factors that we consider to increase the complexity of an application. Each one of these “common problems” can be turned on or off, in terms of whether they contribute to the complexity score.
Each occurrence of each enabled problem is counted, and the impact of the number of counted problems is configured under “Common Problems Detected” section.
3. Design Element Counts
The number of each type of design element found in an application design contributes to its complexity score. The way each design element type impacts on the overall score can be configured for Agents, Folders, Forms, Script Libraries, Shared Fields, Subforms and Views. Each type of design element carries a weighting factor, together with a weighted score driven by the number of elements found. For example, any script library found in an application design adds a weighted score of 20 to the complexity metric, whereas a database with 50 folders would add 10 points to the score.
4. Search Terms
In addition to the factors that are “baked in” to the Adviser product, there may be others that are specific to your own environment, or even a particular application suite. For the most part, these factors can be detected by a simple text search of the code, which is what the Search Terms section of Complexity does. For example, finding the string “ODBC” or a reference to a specific server name in the code could indicate added complexity in an application.
Like common problems, the number of search terms detected in an application contribute to the complexity score of the app. And the relationship between the number of search terms found and the contribution to the score is controlled by the “Search Terms Detected” section of the config.
One thing to keep in mind is that editing (and saving) the list of search terms will trigger a re-run of the complexity scan. Again, if you have a large number of databases, you may want to disable analysis until you have finished all your changes to the config.
And that’s it. If this all looks a bit complex and unnecessary, don’t worry. For almost all purposes, Complexity will work well out of the box. But if you disagree with our approach to any aspect of the complexity score calculation, or you have some very specific requirements that we don’t cover, it’s good to know that you have the ability to tweak the dials to make everything just so.
If you have questions about configuring the complexity analysis in Adviser, or anything else relating to the development, management and maintenance of HCL Domino apps, click below to start a conversation. We love to chat!