iUML provides a single environment for the construction and testing of system models using Executable UML and includes powerful requirements management, configuration management and multi-user capabilities.
At the core of toolset is the iUML Modeller that allows the graphical input of UML models and associated descriptions. More than a just a graphical entry tool, the iUML Modeller maintains consistency between different views of the same element thus eliminating the need to enter the same information twice, even when multiple users are editing the same model.

The iUML Simulator complements the iUML Modeller and enables the verification of the behaviour of the models and systems through simulation in Executable UML.
Support for Executable UML
iUML delivers the ability to to define and verify system behaviour with Executable UML (xUML). The xUML models become the only representation needed to describe the behaviour of a system. This behaviour can be tested and verified through the iUML Simulator before any detailed coding need be started. Errors are identified early in the design cycle when they are easier and less expensive to correct.
iUML Simulator provides a comprehensive test and debug environment with facilities such as execution tracing, setting of breakpoints, viewing of signal queues, state machine traces and call stacks, all operating directly at the xUML level and on xUML constructs.
iUML supports all the xUML constructs needed to precisely and unambiguously describe and simulate systems including use cases, sequence diagrams, collaboration diagrams, state charts and state diagrams. The tool automates, where appropriate, the creation of diagrams from others (for example collaboration diagrams from state charts). It also understands the rules of xUML and thus prevents the user from creating syntactically or semantically invalid models.

The implementation independent Action Specification Language (ASL) is used to specify the detailed processing in the model. It defines the state actions, operations, initialisation sequences and test methods.
Requirements Management
iUML also supports requirements capture and management. Users can:
- define, categorise and edit requirements
- create relationships between requirements and linkages to model elements of all types (class, attribute, association, operation etc.)
- navigate the connections between requirements and model elements through hyperlinks
- manage the requirements process through access control and a defined lifecyle

All of the requirements management features are fully user configurable, allowing support of the organisation's chosen process. In addition, the requirements traceability information is available to the Configurable Code Generator and users can adapt code generators to generate such information into the target code as comments.
For users who need a dedicated requirements capture tool, iUML provides open access to industry leading tools. A dedicated integration with the DOORS tool is also available.
Configuration Management
Component versioning is complemented by the capability to define builds (releases) to allow users control over incremental design and testing in a project. Where needed, iUML supports full export of all elements in its repository to mainstream configuration management tools. Built-in "diff" and "merge" tools support concurrent threads of development allowing users to branch components and work on them separately before merging them back into a unified version. The merge capability can be pre-programmed to support repeated automated merges, particularly useful for geographically distributed teams.
iUML supports export of data for documentation purposes in a variety of formats including ASCII, HTML and Framemaker. CCG provides additional flexibility by enabling access to all the information in the repository to produce reports in customised formats.
Multi-user Projects
iUML is designed around an efficient data repository and provides support for the most demanding requirements of complex multi-user projects. It allows multi-user access to design elements while ensuring data integrity.
The branch and merge capabilities allow fully concurrent development (with no locking restrictions) either within the same repository or different repositories, possibly at different geographical locations. Such concurrent work can then be reconciled and unified at a single location with the support of the "diff" and "merge" tools. Since the merge tool can be pre-programmed, it is possible to support ongoing concurrent development with minimum effort.
Configurable Code Generation
The platform independent models in iUML can be converted automatically into a platform specific implementation in the chosen target language using iCCG. This provides total user control over the code generation rules.

