Data Export and Reporting#
Lattix Architect supports a variety of reports as well as ways to export data. Note that Lattix Architect supports copy and paste directly from the property tabs and panes for extracting data. There is a menu option to copy a branch of the tree or to copy just the displayed part of the branch of a tree. In addition, data and reports can be generated in a variety of formats such as xls, xlsx, xml, html and text.
Reports –> Export allows you to export to a number of format. You choose the format of the exported data by choosing the file format in the Files of Type selection.
XLS - The data corresponding to the currently displayed DSM is exported in Microsoft Excel binary format. Export is limited to 255 columns.
XLSX - The data corresponding to the currently displayed DSM is exported in Microsoft Microsoft Excel 2007+ XML format. Unlimited number of columns can be exported.
CSV - The data corresponding to the currently displayed DSM is exported in comma separated values (CSV) format.
XML - All of the dependency and partition information is exported in XML format for the entire project.
JPEG - The currently displayed DSM or CAD diagram image is exported in JPEG format.
PNG - The currently displayed DSM or CAD diagram image is exported in PNG format.
The Lattix Reporting System provides a number of built-in reports. Once a report has been generated it can be viewed within Lattix Architect in the properties tab. It can also be viewed in an html browser. All of the reports can be exported to xml, html, and xls formats for external consumption or for printing. Note that the generated reports are not saved as part of the project.
The General Reports have a common input dialog. The input allows you to specify the source as any element in the hierarchy or to any named tag. The input also allows you to further restrict the output to a specific element in the hierarchy or to a named tag. This is a an extremely powerful and general mechanism because it gives you the capability to report on relationships between arbitrary groups of elements.
Lattix Architect can generate a number of reports from the Report menu:
Public Elements Report
The Component Report shows you the public interface of selected elements, that constitute a component, to the rest of the system.
Private Elements Report
The Internal API report shows you the private parts of a component. This report will show you everything about the selected components that isn’t used by the rest of the system but is used internally.
Unused Elements Report
This report shows all the elements that are unused within the system. This will include any element that is invoked externally. Furthermore, in certain situations, dependencies are filtered out to avoid clutter during architectural analysis. An example of this is Macro dependencies in C/C+. Therefore, the Unused Element Report should be considered a starting point of a list which can then be further pruned after additional analysis.
Detailed External Use Report
The External Use Report shows you the external systems used by the selected elements.
Impact Report (also known as Used By Report)
The impact report is designed to help you understand the impact of change to specific elements on the system. You can choose either a specific element in the hierarchy or a collection of tagged elements. The impact report will produce a list of elements that have dependencies on the changed elements.
Transitive Closure: If Transitive Closure is selected you see direct and indirect dependencies organized by impact level. If Transitive Closure is not selected you only see the list of elements that have direct dependencies on changed elements.
Show Members: Shows members if selected, otherwise shows just the container elements. For instance, if a method is changed in a class, you will only see the impacted classes if this option is not selected.
Expand Dependencies for Reference: This selection forces a change in a subsystem to include its parents in the impact set. This is useful, when you are setting dependencies only to the parents but when a child in the hierarchy is changed, then you want to consider the parent as changed.
Filter Target/Provider After Analysis: This selection forces the target/provider filtering to be done after the impact analysis computation is complete. This is useful when you want to see the impact of change just on a selected target/provider. However, if the elements in the selected target/provider are not in previous impact levels, then they will be filtered out if this option is not selected. This option is available in Lattix Architect 7.2+.
The Uses Report shows everything that’s used by selected elements. The report shows direct and indirect use all the way up to transitive closure. Uses Level 0 shows all the elements that are directly used by the initial selection. Elements at any other uses level are those that are used directly by elements in the previous uses level and are not already included in either the initial selection or any previous uses level.
The Metrics Report produces a report for the entire project. You have the option to select metrics for System, Architecture, and Object Oriented.
The Cycle Report has three options: Cycles, Low Level Cycles and Member Level Cycles.
The Cycles Report goes through the project listing cycles at the top level, the next level and all the down to the leaves. The cycles are listed in a breadth first traversal. For example, this allows you to see the Java packages that are in cycles, as well as classes with a package that are in cycles.
The Low Level Cycle Report looks only at the leaf elements; it ignores the hierarchy. The dependencies of the members are folded into their parent. For example, this report will produce a list of java or .net classes or C/C++ files that are in cycles.
The Member Level Cycles Report looks at the member level elements; it ignores the hierarchy. It then produces a report on the members that are in cycles. For example, this report will produce a list of java, .net and C/C++ methods that call in each in a cycle.
Global Variable Report#
This report works with Understand C/C++ and Clang C/C++. It will generate a report for all the global variables that are used in the project. The report will show all the methods that directly and indirectly use the global variable, and how the variable is used (Read, Write, Addressed)
The Project Report allows you to report specific information about the current project. You can use it to report on:
This report is useful for producing an abbreviated external use report for Java. The report provides a list of external packages that are used by each package. The list of external packages is configured in Lattix Architect in a file, external_map.properties.
A report on all the rule violations. If you haven’t setup any rules, the only violations that you should see are external dependencies.
A report of all the changes that were made to the project for representing the intended architecture.
A report on all the rules that are currently configured in the project.
A report on the cells that were flagged.
A report on the largest atoms by “size”. For programming languages such as Java, .NET and C/C++ this will return the list of largest classes/files by lines of code.
Largest Compound Package
A report on the largest packages that contain packages. For instance, for Java it will show the packages that contain the most sub-packages. A package is simply a partition that contains other partitions (except for partitions with member atoms). In C/C++, this report will produce a list of directories that contain other directories.
A report on the largest package that contains leaf partitions (or partitions whose only children are members). In Java, this will return the list of packages that contains the most classes. In C/C++, this report will return the list of of directories that contains the most source and header files.
The Cyclomatic Complexity Report lists the top 100 methods that have the highest cyclomatic complexity along with the value of that metric. This report is currently available for the Java module and Klocwork (C/C++) module.
The Update Report is generated when you update project, either through Lattix Architect or through LDC. The update process takes an existing model and updates it with new input. Update is typically done whenever you have a new build or if the input system has changed. The Update Report produces the following:
Missing Atoms: The elements that are now missing from the new system.
New Atoms: The elements that are present in the new system but were not present in the old system. For instance, this can be used to obtain every new method and data member in the new build of a Java project.
Changed Atoms: This is the list of elements that are present in both the new and old projects but whose properties have changed. For instance, the access attribute on a class or a method might have been changed.
New Violations: This is the list of new rule violations in the updated project.
Missing Violations: This is the list of violations in the old system that are no longer present in the new system.