Introduction
In order to manage the requirements of our energy harvester project we use Enterprise Architect (EA) from Sparx Systems, an Australian company. Enterprise Architect is a (UML-based) modeling and design tool which integrates…well…everything: requirement management, project management, database engineering, business modeling, code engineering, test management… Really, the list of features (click here) is endless. I always have my doubts about these “can-do-all” tools. I prefer tools which are good at one thing but integrate well with others (like the Unix philosophy).
Note that I only have a limited experience with EA. Comments and remarks are welcome.
Requirement management features
EA provides a decent list of Requirements Management (RM) features. These include:
- auto numbering (unique id’s) and naming of requirements
- traceability window
- create requirements prototypes (via template packages or profiles)
- graphical and non-graphical views (diagram view, list view, package browser view)
- good support for generating documentation (html, rtf)
- baselines or other means of version control (external tool)
- import and export possibilities (csv, xmi)
- …
Unfortunately, it lacks an important RM feature: if you change a requirement then you have to find out by yourself which other requirements are (or might be) affected. This can be a tedious job and should be automated e.g. by marking the possibly affected requirements.
The EA project file contains everything: settings, requirements database, baselines etc. Not sure how this can work in a team, but I believe it is also possible to connect to external databases.
Sparx Systems has a white paper on requirements management with Enterprise Architect which can be found here. This is a must read.
GUI and configuring the tool for requirements management
Because Enterprise Architect is a feature-bloated product, it is hard to get a good, intuitive GUI. And they really fail on this one: if you are using the tool only for requirement management then all other features are redundant and confusing.
EA provides a solution for that called Workspaces and Command. But configuring a good workspace requires a lot of patience and a good knowledge of all features (it is not always clear which feature you need, and you do not want to disable something useful).
Personally, I just enabled all features in order to avoid missing something. Note that Sparx Systems does not provide a default template for requirements management (while it does so for other disciplines).
For some functionality you do have different choices. Choice and options are good, but in the case of EA it is also complicated as it is not always clear what the consequences are (you need to do a lot of experimenting). Two examples:
- Do I want version control via EA baselines or via an external tool (which can be configured in EA)? Both have benefits and drawbacks, particulary if you want to do diff’s and merges.
- Do I want to use requirement templates or profiles? The former works best with ‘tagged values’, the latter with ‘attributes’ (as it is an UML extension). Also, with profiles, your requirements can have a dedicated toolbox.
Apart from these configuration issues, the GUI is:
- inconsistent e.g. generating documentation of a model and of a package are at different locations when right-clicking in the Package Browser.
- unintuitive: settings are all over the place e.g. View->Workspaces_And_Commands, Tools->Options, Tools->Customize, Settings->…, right-clicking on items also reveals settings e.g. Package Control of a Package.
- confusing: sometimes icons are shaded out, giving the impression that in some cases they actually can be used, but in reality, they are always disabled e.g. icon in the list view.
Finally, some options and functions are just hard to find e.g. adding requirement types such as a ‘non-functional’ or a ‘safety’ type: Try finding it without help – hint: depending on your workspace this option might just not be in your menu.
All this results in a steep, demotivating learning curve.
Support
Up until now, support went well: two times I did send a support request and within a day I did get a response that actually helped me.
Pros
- good support
- generating documentation from your model (html, rtf…)
- cheap compared to other RM tools
- traceability between requirements and architecture/design (I think this is one of the few tools which is able to do this, any other tools?)
- several import/export possibilities
Cons
- complex user interface (inconsistent, unintuitive, confusing)
- only Windows (on my Mac I gave up after a few tries, same for Linux)
- difficult to know the impact of changing a requirement (which other requirements are affected?)
- feature bloat
- steep learning curve
- diagram view has its limitations if you have a lot of requirements. In fact, there is no need for a graphical representation.
- Package Browser view which shows the hierarchy in the requirements is not fully functional (e.g. not possible to add requirements)
- we encountered an annoying bug: creating a realization in the relationship matrix results in the creation of a dependency
Conclusion
The above shows that EA is not very well suited for RM. It is a modelling tool.
But EA has the strong point of being capable of mapping requirements on design via realizations.
Given the above considerations it is probably best to:
- do your design in EA,
- manage your requirements in another tool (probably a lot more expensive though),
- import the requirements into EA, and finally
- map the imported requirements on your design.
Why we use EA for our energy harvester project?
- Cheap
- Enough features
- Good html generation for our blog
- We might use it later for UML modeling (and to map our requirements on the design)
How do we use EA?
- Auto-numbering and naming e.g. prefix ‘REQ1 – ‘, alias ‘REQ1’
- Template package (Note: Changing the templates later on leaves the existing requirements unchanged. ‘Profiles’ have a similar unwanted issues).
- Add requirement types (e.g. config, non-func and (system) safety)
- Baselines for version control
- Workspace and commands: all on (so we do not miss a feature…). I think I will disable more and more features (especially the easy ones such as code engineering etc.)
Alternatives?
Please let us know any viable alternatives…
“Not sure how this can work in a team, but I believe it is also possible to connect to external databases”
Indeed it is possible to connect to an external database, making team collaboration easier. We’ve used EA in 2 projects now in that way, and are pretty happy about it. The initial import of an existing (larger) project can sometimes be a bit troublesome…