- LattixWeb & Repository
- Licensing & Pricing
- Lattix News
- Lattix Live Demos
- Buzz about Lattix
Dependency Models and UML: Why you need both
Dependency models use inter-module dependencies to specify and represent software systems. They are lightweight and particularly useful for providing a precise big picture view of a software system. It is also easy to check the conformance of an implementation to a dependency model.
- Look down a column to see the dependencies for each system.
- Decomposition hierarchy enables massive scalability.
- Design rules allow precise specification of layering and componentization.
- Control exactly how 3rd party libraries are used.
Figure: Conceptual View of the Ant Utility
The conceptual view is derived from the dependency model. The conceptual view does not contain the precise information that is available in a DSM but is often effective for showing the intended layered hierarchical decomposition.
Figure: UML Model - A Partial Class Diagram of Ant
This picture focues on a key class which is subclassed by a large number of classes. UML is good for detailed design.
Dependency Models are lightweight
Even though they can be used for forward engineering or for reverse engineering, you do not have to worry about keeping them synchronized. You can test an existing implementation against a dependency model – on every build if you choose or even after months of development.
Dependency Models are highly scalable
The Dependency model approach is higly scalable. We have already applied it to software systems with more than 100,000 classes. The approach naturally permits teams of developers to focus on their part of the system while maintaining the big picture.
Dependency Models may be created to model any complex system
Dependency Models can be created for any system. They can also be created for any language: procedural or object oriented. Lattix supports the creation of dependency models for a variety of languages, databases, frameworks and UML models. Dependency Models can even be created for hardware and software systems. Lattix also provides support for creating dependency models for arbitrary systems through an XML specicfication.
Dependency Models normally use a matrix representation while UML uses a directed graph representation
The matrix representation is simple, intuitive and easily scales to tens of thousands of subsystems. UML diagrams get cluttered quickly and eventually become impossible to understand as the number of boxes and lines increase. Macro architectural patterns are easier to discover and spot in a matrix, whereas the directed graph is useful for following specific paths for a detailed understanding of the system.
Dependency Models are less expressive than UML Models but well suited for software architecture
Even though, dependency models lack the expressive power of UML Models they are well suited for expressing key architectural patterns. In fact dependency models can easily express patterns such as layering and componentization which cannot even be expressed easily in any of the commonly used modern languages.
Dependency Model can be created for your UML
Dependency Models can be created for UML by exporting UML to XMI and then importing it using the UML/SysML Module in Lattix. There are number of benefits
for doing this:
- The DSM shows you a big picture view that combines the static view of the system (such as package and class diagrams) and the behavioral views (such as state and interaction diagrams) together. You can now explore dependencies between various model elements including requirements, use case scenarios, and design information.
- You can identify problematic dependencies such coupling and violations of the architectural intent at an early stage in the design cycle.
- You can establish rules in the DSM model for compliance to guide the system developers during model development and testing for validation.