Products

Frequenty Asked Questions

Installation

Approach

Howtos

Java specific issues

C/C++ specific issues

.NET specific issues

Oracle specific issues

Hibernate & Spring specific issues

Eclipse plugin issues

Installation

1. How do I install on Windows?

Download lat_inst.exe and run it. Follow the instructions to install Lattix LDM on Windows. Note that some of the anti-virus programs can cause the install program to slow down. In particular, we have observed a long pause once the InstallShileldTM slider reaches 99%.

2. How do I install on Linux or on Mac OSX?

Download the file lattix.tgz. Uncompress and extract the files into a directory of your choice. The installation is complete. Run shell script ldm.sh to invoke LDM. If you have to modify the shell script please note that class path needs jar files from both the bin and the lib directories. Also note that the main class to be invoked is com.lattix.application.swing.app.LattixGUI in lattix.jar.

3. How do I install on any operating system which has java installed on it?

Follow the same steps as for installing on Linux.

4. How do I install the Eclipse plugin?

If you used lat_inst.exe to install on Windows, the installation will ask you for the Eclipse directory. If you installed using lattix.tgz you must download the Eclipse plugin file LattixEclipsePlugin.zip. Extract files from the zip into the Eclipse plugin directory. The installation is complete.

5. When I go to run Lattix LDM from the desktop shortcut on Windows I see an error window popup. What should I do?

This happens because the class path is not setup correctly. The most common cause for this is that the Java Run Time (JRE) is not installed. The JRE can be installed as an option when installing the JDK (Java Development Kit) or can be installed by itself.

If you have the JRE installed and if things still don't work, then please run ldm.bat file in the Lattix/bin directory. Note that you must set your JAVA_HOME env variable to point to the java install, and will need to add "%JAVA_HOME%\bin " to your PATH environment variable. Please contact us if you are not able to start up or if you see garbled dialog boxes.

6. How do I uninstall Lattix LDM from my system?

If you installed on windows using the install shield program then from the Start Menu, select Program Files, go to Lattix and chose the Uninstall menu item. For all other installations, just delete the directory where Lattix LDM is installed. To uninstall the Eclipse plugin just delete the plugin directory corresponding to the Lattix plugin.

Approach

1. How do I interpret the Dependency Structure Matrix?

Read down a column to see the dependencies for each subsystem on other subsystems. Click on a cell to see the actual dependencies in the Usage properties tab. You can get a quick overview of DSMs here.

2. What is partitioning?

Partitioning is an algorithm which seeks to create a lower block triangular matrix by moving subsystems which provide below subsystems which use. For instance, as a result of partitioning, you should expect to see library subsystems show up below the systems which make use of the library facilities. Partitioning will also identify interdependent subsystems and put them in the same block.

3. Why is lower triangular important?

Generally, we attempt to transform the matrix to represent the architecture in a lower triangular form. A lower triangular form represents a layered system which is one common architectural pattern for large systems.

4. Can I change the default DSM conventions used by LDM?

The default conventions used by Lattix LDM have dependencies for each subsystem being read down a column. The default also keeps users above providers. This is convenient for stacked architectures. You can reverse either of these conventions through Preferences menu item under View.

5. How can I learn more about DSMs and Dependency Models?

6. What is a conceptual architecture diagram?

The conceptual architecture diagram is a "box in a box" diagram. It depicts the ordered hierarchical decomposition. The placement of the boxes can also be used to convey information about the architecture. The boxes can be stacked vertically to display the layers. The boxes are arranged on the same row to indicate components which are within the same layer but are independent of each other. The conceptual architecture is a simple diagram which is easily understood by managers, users and business stakeholders. It is derived from the DSM. It is also useful during the evaluation process for collecting feedback on the architectue for various architects and developers.

7. How does this approach compare to other types of modeling such as UML?

They are complimentary approaches. UML is suitable for detailed modeling of aplications developed using object oriented languages. Dependency Models are useful for understanding, communiciating and maintaining the big picture view of the application architecture. You can find a more detailed explanation here.

8. Is the Dependency Model approach useful for forward engineering or reverse engineering?

The Dependency Model approach can be used in both cases: forward engineering and reverse engineering.

9. Can you do round trip engineering with Dependency Models?

Absolutely. In fact, the approach is so lightweight that the round trip engineering can be automated in the build process. The only time an intervention is required is if a design rule is violated or when the architecture is being changed explcitly.

10. Can I create subsystems for code that does not exist?

Yes - you can create an entire Dependency Model even when there is no code that is associated with it. You can create subsystems and specify rules. If you want, you can also specify dependencies manually between subsystems.

Howtos

1. How do I detect circular dependencies?

Chose a subsystem within which you want to see the circular depencies. Expand it so you see all its children. Select the partition button on the tool bar (or right click and chose the partition menu item). All the dependencies above the diagonal are guaranteed to be part of circular depencencies.

Choosing a subsystem at a level in the hierarchy is a powerful way to deal with circular dependencies because it allows teams to work in parallel and allows a top down approach to priortizing the dependencies to be cleaned up.

2. How do I see all the dependencies associated with a subsystem?

In order to see all the dependencies associated with a subsystem, just select the row header or the column header of that subsystem. You will see all the dependencies of this subsystems and who uses this subsystem in the Usage tab.

3. How do I see the dependencies between two subsystems?

In order to see the dependencies between two subsystems, expand the DSM to show those two subsystems. Now select the cell whose column corresponds to the subsystem that makes uses of the other subsytems and whose row corresponds to the subsystem which provides to the other subsystems.

4. How do I see which external libraries are used?

You can see all the external libraries which are used by selecting $root. The Uses pane will show you all the external libraries which are being used.

5. How do I see who uses each of the external libraries?

Select $root. The uses pane shows you all the external libraries which are being used. Select any of the external libraries and you will see all the subsystems which use that external library.

6. How do I drag-n-drop subsystems?

Select the subsystem to be moved. Move your cursor within that subsystem close to the top or bottom boundary. You will see the cursor change to a move icon. Keeping the right mouse button pressed drag the subsytem to where you want to insert it. As you drag it you can put it between two subsystems when the boundary between those two subsystems is highlighted. You can insert it into a subsystem when the entire boundary of a subsystem is hightlighted.

7. Can I get a list of all the architectural changes I made?

You can see the architectural changes in the work list. The work list can be exported to an Excel spread sheet through File->Report.

8. How do I export the images?

You can export the DSM image and the conceptual architecture image through the Report dialog. Select File->Report, choose File Type to be JPEG and click on Save.

9. How do I filter for a specific dependency type?

You filter for a specific dependency type by selecting View->Filter Dependencies.

10. How do I check if the architecture has been violated by changes?

You can check if the architecture is being violated by doing a project update. You update a project by selecting the Project Update menu item under Project.

11. How do I update the dependency model and discover any possible rule violations at build time?

Run Lattix LDC at build time. It does a project update and generates a new dependency model and a list of rule violations. To see how to integrate Lattix LDC into your build system please read the chapter on it in the tutorial.

 

Java Specific Issues

1. How do I see dependencies between jar files or between directories?

When you create a project for the first time using the New Project Wizard, remember to ensure that the option Create Subsystem for Input File is selected. As a result, you will see a partition being created for each of the input jar files. You will now be able to see the dependencies between jar files and drill down.

2. How can I see all dependencies of a jar files?

Once you create a subsystem correspoding to the jar file, you can see all dependencies associated with the jar file just as any other subsystem. Click on the row or column header for the subsystem and you will see all its dependencies in the Usage tab.

3. How can I see dependencies by packages?

Create a project for the first time using the New Project Wizard with the option Create Subsystem for Input File not selected. You will see the partitions by package. Click on a subsystem corresponding to the package of interest and you will see all dependencies of the package in the Usage tab.

4. Can I look at dependencies at a finer granularity such as method level dependencies?

You can look at dependencies at a finer granularity of methods and data members. Mark a subsystem for member level dependencies by first selecting it. Then right click to bring up the pop up menu and chose the menu item Mark Member Level Dependencies. Now do a Project->Update and you will see each of the classes within the selected subsystem expand out to method and data members.

5. How can I break up a large class into multiple classes?

Expand a large class into its method and data members. Now partition the class. The partitioning will suggest an inheritance hierarhcy. If you see virtual partitions which are independent of each other, there may be other ways to split the class as well.

C/C++ Specific Issues

1. How do I create a project for Microsoft C/C++ project?

Microsoft Visual C/C++ projects are generated from "bsc" files that can be generated from Visual Studio. First you will download Microsoft Browser Toolkit 7.0 (BSC Toolkit) from Microsoft. Generate the "bsc" file from Visual Studio. You will then load the "bsc" file to generate Lattix "ldm" file. Note that you should load only one "bsc" file in a project.

2. How do I use Understand for C++ in conjunction with Lattix?

Integration with Understand for C++ allows us to provide a high performance and comprehensive solution. You simply load the "udc" file generated by Understand for C++. You will need to purchase a copy of Understand for C++. You can obtain Understand for C++ from the following url: http://www.getunderstand.com. Note that you need both the Understand product and the API, both of which are available from the Scientific Toolworks website.

3. How do I use Doxygen in conjunction with Lattix?

Doxygen is a document generator that parses C/C++ and generates documentation in html/xml format. Lattix LDM reads in the xml output of Doxygen to create a DSM. You can download and fine out more about Doxygen from the following url: http://www.stack.nl/~dimitri/doxygen/.

.NET Specific Issues

1. How do I create a project for .NET?

>.NET projects are created by loading in any .NET assemblies into Lattix LDM.

2. What is the level of granularity supported for .NET?

.NET projects allow you to look at dependencies at an arbitrary granularity. For instance, you can see the dependencies organized as assemblies, namespaces, classes/interfaces, method and data members or any combination of these elements.

Oracle Specific Issues

1. How do I create a project for Oracle?

Select the Oracle Module in the New Project Dialog and configure the database to be accessed. You can also configure the schemas that should be includeed/excluded. Lattix LDM creates an Oracle project by reading in the Oracle catalog.

2. What permissions are required to do an analysis of an Oracle database?

You need Select access to the Oracle catalog. The exact tables/views are listed in Online Help. Note that you do not need access to the actual data in the tables.

Hibernate and Spring Specific Issues

1. How do I create a project for Hibernate?

In order to create a project for hibernate you have to load in hibernate configuration file or hibernate xml files in the New Project Dialog. Hibernate generates a mapping between java classes and database tables. In a multi-module project with java, hibernate and oracle you can see a model which shows the dependencies not just between elements of the application and elements of the database but also between application and database. This capability is unique to Lattix.

2. How do I create a project for Spring?

>In order to create a project for Spring you have to load in spring xml files in the New Project Dialog. This creates a project which shows you the dependencies between spring beans and between classes.

3. I don't see the option for Spring and Hibernate in my New Project Dialog?

This happens when you get a standard evaluation download from the web. In order to get the plugins for Spring and Hibernate please contact Lattix and you can get a download which includes those plugins.

Eclipse plugin issues

1. How do I install the Lattix Eclipse plugin?

The normal way to install or to update the Eclipse plugin is to do it from the Lattix update site (http://www.lattix.com/dl/eclipse/update). You can also download the zip file for the plugin and install it manually. Both of these methods are described in the documentation under Help->Eclipse Plugin

2. How do I uninstall the Lattix Eclipse plugin?

You can uninstall the Eclipse plugin through the Eclipse menu Help->Software Updates. You can also manually uninstall by removing all lattix files and directories under 'plugins' and 'features' directory where you installed Eclipse.