“Enterprise Architect was developed with several key design rules in order for project teams to be able to use a single platform …”
“Over the years I’ve come to the conviction that EA is the only application a Sparx Systems employee is allowed to have installed”
Now I’ve always been keen on having information in a single place with a “single version of the truth” – a phrase I have pinched from one of my friends , so that “…every stakeholder… needs access to the central information base…”. Hence, thinking about the scenario that Sparx may well use a single platform to do all their product development I thought this a concept worth checking. Before starting it is worth noting they have used the word platform, not a single tool since this would be impossible as there needs to be compilers, linkers etc, but a platform, a single workspace, that is use to do all the work – “… negating information flow blockages…”.
So let’s think about the steps involved in our hypothetical simple product development. What does EA provide and more importantly what is missing:
These could be anything, notes, pictures, links. I tend to favour using a text editor and mind-maps for this phase. Mindmap are supported within EA but the diagrams are not that different from other EA diagrams, so although they benefit from a familiar interface they are a bit clunky compared to other products (e.g. Mindmanager, Freemind and my current favourite Simplemind – as it works on my iPad), especially when wanting drop research items – links, pictures. Although it can be done there are more steps involved in the process and for me at this stage the number of steps is a key factor in any tool design as you could be trying to capture lots of random ideas quickly
Design and analysis
EA’s core functions – as far as I know it’s well supported and it covers my needs. So not sure I need to add anything more.
The ability to define classes and generate the stubs with initial code works fine but is very manual. For a developer who started life with paper tape and cards each change, though welcome can take some getting used to, and compared with available IDE’s such as Visual Studio, Sharp Develop, eclipse or Android Studio EA there is a clear difference – a step backwards or is that just my configuration. However, if it can enforce a discipline to focus on the class rather than the code this can only be good in trying to reduce design errors.
When you want to compile the code unless you use an IDE with an integration MDG you will have to write the project and make files manually – not for the faint hearted (potential for a wizard?) Writing these files manually can help the developers truly understand what they include in their applications rather than delegating the task to a tool (and indirectly somebody else’s). Also worth noting that as the source files do not reside in EA it does mean that knowledge, although accessible providing you don’t move your code, resides outside of the tool!
Within EA you can debug your code with many of the features I use within VS, albeit not as neat, however for me there is one major feature missing – “edit and continue”. It can save so much time; the ability to resolve simple mistakes as well as allowing temporary changes to code, really useful when trying to work out how an API really works.
An area I haven’t used greatly, sorry I’m still wedded to spreadsheets and my clients often have their own tools, such as HP QC, that must be used. So I can’t truly comment on testing using EA, although I observe that within tests their appears to be a lack of any history (unlike changes, issues, etc.). I think the ability to have information about historic problem areas is really useful.
I see no direct support to create/manage installer projects within EA. Yes you can have a class with an associated file, and you can edit <F12> the content; there is even a nice navigator for the XML. And whereas EA MDG will import a code project I haven’t seen it import any setup projects. So you’re on your own.
A key part of any product is post deployment. The issues that arise, the support calls, new requirements, etc. this is an area where having the information in one place is a real win. The challenge is having the systems in place to ensure the information is captured, and for me this really means that all involved need to use EA. This is a real challenge as it could mean changing well established processes; not the easiest thing to do. I remember some statistics that state the maintenance of software maintenance accounts for 80% of the cost – so there may well be an argument to consider this further but you’d need to be a good politician trying to do this in a large organisation. BTW: I’d be interested the Sparx internal process for this work.
I have been very sceptical in previous posts about the project management within EA not least as there are different types of task – task elements, element tasks, project tasks. I find this both confusing and unnecessary – a task is a task, yes there are different types of tasks, but at least can we access all tasks in a common manner! However, I have persevered, not least to ensure the key information remains in a single repository.
Recently I have been working on a project where we have made good use of the project management features – keeping track of work across several delivery teams – and it has worked well. But having to manually check for dependencies between items on Gantt charts, overloaded resources and critical paths is error prone and time consuming. It would be really useful and time saving to have a few of the standard features from traditional project management tools, not least to highlight the issue if not correct them. It doesn’t need an all singing and dancing feature set – in fact adding items such as self levelling could risks the PM not looking at planning in enough the detail. I’ve been tempted to write an AddIn to resolve these issues, but as the items are so near the core of EA it wouldn’t make sense. I’d need to duplicate some diagrams and, in any case, the time and effort may not be justified as Sparx may simply add their own code to make mine redundant!
A great benefit of EA is the ability to work on the same repository, albeit in a controlled manner to avoid conflicts. But access to all the information with the ability to link to items as required is a real plus.
If we look at team working we cannot ignore the fact that EA include team review tools, model mail or calendar but in my years of using EA and talking to other EA users I haven’t met anybody using them. The idea of keeping information in a central place makes sense and I have tried in the past but people are so wedded to exchange for mail / calendar functions it just wasn’t going to happen. However, what I find useful are the Element discussions to capture notes, usually from emails or snippets from documents that could be useful, but without contaminating the element description.
In the beginning I used EA’s tools to generate documents, but my use has reduced to a few of the standard reports. On occasion I use the HTML reports as they can be a really useful way of sharing information without viewers needing to know about a new tool.
For rtf documents the need to adapt templates, especially when needing to modify for different customers was(is) very time consuming. I guess that if you are on the inside and have a standard set of rtf templates then the EA approach works. However, if you are on the outside or constantly needing to produce different types of documents and/or needing to adopt customer defined formats then once I had eaDocX there was no contest. I use (and eaXL of course) extensively with the great advantage I can take a customer document as a template, simply place pointers to the require packages and press generate – a few minutes work without much to do. Sparx recently introduced their own office MDG, however I haven’t had the opportunity to test this yet.
I think that covers the basic items in the product lifecycle and yes I am sure there are other items that could be added, but my aim was to have a quick review to check if the work could be done within EA. I guess the answer is probably, but is it a complete Design & Build Platform? I’m not convinced, it’s still just a bit too hard, and if I say that as somebody who is comfortable working under the hood I’m sure I can see why it’s a challenge for others used to dealing with high level tools. That’s doesn’t say there isn’t potential but ..
I guess Sparx have developed a product that supports their own development process perfectly, and as a single product company some of the issues such as generating corporate documentation, make files and installers plus working with a wider diverse organisation is really not a big issue for them.
EA is a great product, otherwise why would I still be using it after 13 years, and has real value if it is to be the single platform – I love the idea of a single workspace. And as our world evolves to a dual desktop – cloud solution the ability to interact with a phone, iPad or my monster development system in a consistent manner with automatic on/off-line modes taken care of is attractive. However, I am not representative of users, most of whom use a small set of office based tools on meagre laptops with well established processes that cannot be changed quickly if at all; what’s the incentive? what’s the risk? could it happen by stealth?
I am sure with time EA could be enhanced to address the needs of this wider team, no mean feat, or perhaps, as voiced on the forum by existing users, EA should remain focused on being a UML design tool where it already does an excellent job.
In looking at using EA as a single platform I know that the comments have really focused on what’s missing – I suspect that is inevitable as it’s easy to notice these areas. I also realise that in writing this I may not be aware of some features of EA and I’m still learning.
The more your learn the more you realise how little you know, and how much more there is to learn.
So it could be that some of my conclusions are not completely accurate but do go EXploreEA for yourselves – and let me know.