What is our primary use case?
There are several ‘primary’ use case:
1: Designing a solution
2: Reverse-engineering the solution from a poorly documented code base - all too common in my 25 years of coding.
3: Communication of concepts, rules, ideas to devs, testers, dev team management
4: Importantly keeping the evolving codebase and the design ‘close-coupled’, with EA that is easy. Code evolves and sometimes the design often changes a lot - how often do devs avoid the design because it’s just way outdated?? It should be the first port of call in a bug fix - not the last.
High/Low-level Design, Test case identification. Mindmapping, functional requirements elicitation, use case elicitation, test cases, activity diagrams. I am a contract developer/designer, for me, it’s vital to get up to speed quickly with new and complex systems. I have often used my own EA license to get a handle on the real model - for me, that's been vital.
How has it helped my organization?
Sparx has mainly improved my organization through the communication of ideas through the sharing of models and a variety of diagramming techniques. Consistency is a key attribute of a good codebase. This tool helps a lot in the maintenance and organization of a lot of complexity.
It has led some teams to do better code reviews - to be less focussed on coding conventions (syntax) and more focussed on the semantics because of the abstraction level clear design affords.
We all know understanding is ALL - so Communication is vital, this tool makes it easy.
What is most valuable?
- Mind mapping as a top-level tool for conceptual brainstorming and identification of key concepts in the conceptual model.
- Use cases / scenarios / activity diagram generation
- The fact that it’s very easy to create child diagrams in diagrams and so keep each diagram clear, focussed, and not bloated. This is very important and a powerful aid in clarifying the model
- Easy forward and reverse engineering - to code and DB design/implementation is an iterative process so there is a real use case for a tool like EA to make the update process very easy
- It's possible to write stored procedures in the EA SQL database to extract steps that can be used as code comments to structure the code directly from activity diagrams. This is something I find really useful to speed up the coding and keep it aligned with the low-level design.
- There are some powerful ideas code generation templates and transforms. Sparx has made the EA object model available so you can add your own popup menu items etc. It is very customizable for the power user.
What needs improvement?
It is a good affordable that is actively evolving, I think the modeling of activity diagrams could be optimized - currently, they insist on you specifying whether a connector is a control flow or an object flow for instance. It is a minor point, but since this sort of diagram is popular in that it affords both the chance to effectively constrain the model whilst leaving freedom for the next stage in the dev process - which key in good design then it should a high priority to optimize this rather than waste resources unnecessary 'bells and whistles'?
There are several little things they could and should optimize. But the platform is good and could be the base a whole tranch or really useful features. for example: to be able to easily run code set up in unit tests to reverse engineer specific code blocks to yield sequence/activity diagrams, would be really useful when as a contractor you have to 'firefight' the design from the code.
Personally I would like to see the database normalized better. It's really just a data dump whose business rules are contained in the front end client code - it is way way way off 3nf.
Because its easy to create diagrams one needs to be vigilant on the housekeeping of orphaned fragments - I have written my own scripts to do this, may they are available now.
I don't make much use of the traceability Matrix, yet that should be a feature that I should use if I could see it made it easy to ensure the traceability of ALL the design to the code (completeness)
However, it works. It’s good to use and it’s affordable for a single contractor. It has REALLY helped me. It is a good product and I am sure it will only continue to improve.
For how long have I used the solution?
I have been using Sparx for ten years.
Which solution did I use previously and why did I switch?
IBM Rational, but not many companies could afford it.
What's my experience with pricing, setup cost, and licensing?
Pricing is an obvious selling point and so are the flexibility and feature set.
Which other solutions did I evaluate?
At the time I first used it it was a no brainer, there was only Sparx out there as affordable and serious software - there was Visio. Now there are real alternatives.
What other advice do I have?
It supports a variety of databases - if you have more than say 5 do not use access. Maybe it is better now but it did cause us problems when 30 devs were using it.
Access DB is ideal for the single user or very small team because its a file-based repo which is easy to back up as part of the project back up at my home-based office I use both Access and MSSQL repos - you can migrate - but its not a simple exercise. I guess if you did it a lot you would have a well-documeted process - i.e picking the wrong driver is/was possible and it will give you an incomplete/corrupt migration. That being said I do do it because I like to get at the SQL repo directly.