Jump to content

Preferred UML Tool


Recommended Posts

I think that NI has already developed the IP to take this to the next step. NI needs to make a good business decision here to make an agreement with one or more appopriate tool vendors (could be existing vendors or a new vendor) that will result in a tool that fully supports the latest UML specification and will continue to support future specifications. I think NI can make such an arrangement while benefitting all parties, and I think it will make LabVIEW and NI more competitive as a consequence.

Not talking from NI VIewpoint (just a lowly Systems Engineer)- That sounds like an Idea Exchange vote. I will +1 you if you put it there. But realistically the user base would have to be huge. Creating programming abstractions is a large task which needs a large use-case in order to be implemented from a business standpoint. Think about the amount of effort that went into Statechart Module.

Link to comment

Not talking from NI VIewpoint (just a lowly Systems Engineer)- That sounds like an Idea Exchange vote. I will +1 you if you put it there. But realistically the user base would have to be huge. Creating programming abstractions is a large task which needs a large use-case in order to be implemented from a business standpoint. Think about the amount of effort that went into Statechart Module.

Done! http://forums.ni.com/t5/LabVIEW-Idea-Exchange/idb-p/labviewideas/tab/most-recent

I do agree that there needs to be a large enough user-base to support LabVIEW-UML integration. On the other hand, I think much of the integration IP already exists since the Symbio tool exists. (I realize Symbio may own a good portion of this IP.) What remains is to make a business decision that will incorporate this IP into a more capable tool. I can speculate (and that's all this is!) that that might mean beefing up the Symbio tool or working with Symbio to sell the mutually developed IP to a vendor with a more capable tool (resulting in appropriate benefits to Symbio, of course). Really, is NI serious about LabVIEW-UML integration or not? If yes, then I think the plan needs to step up a notch.

This actually is not my number one LabVIEW need, although it is high on my list. I am just not a fan of the "sort of" approach, especially when it comes to supporting standards.

Link to comment

This actually is not my number one LabVIEW need, although it is high on my list. I am just not a fan of the "sort of" approach, especially when it comes to supporting standards.

The problem you'll find is that LV has a lot of coding concepts that standard UML does not cover. The Symbio tool is able to reflect features of LV that a generic UML diagram would leave out.

Link to comment

The problem you'll find is that LV has a lot of coding concepts that standard UML does not cover. The Symbio tool is able to reflect features of LV that a generic UML diagram would leave out.

Well, that certainly is an important point to consider. Can you give any examples? I just went to the UML Modeller page and the only thing LabVIEW-specific I see mentioned is the icon editor, which is just a matter of how the classes are implemented (part of that IP to which I was referring). I haven't use UML Modeller so I don't know much more than what appears on the page.

---

I did reflect on the general topic a little more, and I will say that the requirements for a UML tool do depend on how one uses such a tool. Our team uses the tool we selected for modeling designs and defining interfaces, but also for modeling requirements in SysML, linking these to model elements and test cases with test scenarios that we export to a test tool, generating code in Java, and providing traceability between all these. Hence we have opted for a full-featured tool even though it doesn't support UML integration. I know of at least one other developer on this site who, if I understand correctly, decided that the LabVIEW-UML integration was more important and hence chose a different tool. It sure would be great if we didn't have to choose one or the other option.

Link to comment

Personally I'm not interested in UML code generation. By the time your UML tool has enough information to create the code the way you want it you've essentially created a completely separate programming language. For me UML's main value is in the thought process I go through while creating the models. At the same time, it's not uncommon for me to discover an overlooked problem in my model while implementing it. I might miss that using automatic code generation.

That said, I'm not a stickler for adhering to the UML standard as long as I can accurately convey my design intent. Supporting the diagrams I use and a good UI are more important to me that strict standard compliance. I use Enterprise Architect for my modelling and I have a hard time figuring out how to model certain things. Maybe it's because I'm still learning how to model correctly; maybe it's because UML doesn't support Labview ideas very well. I can't say for certain either way. (It's probably a combination of both.)

As for StarUML, I like it lightness (and cheapness) for hobby or open source projects, but I certainly wouldn't base business critical processes on it. (As a matter of fact I'll probably use it for LapDog unless there is a compelling free alternative.)

  • Like 1
Link to comment

Personally I'm not interested in UML code generation. By the time your UML tool has enough information to create the code the way you want it you've essentially created a completely separate programming language. For me UML's main value is in the thought process I go through while creating the models. At the same time, it's not uncommon for me to discover an overlooked problem in my model while implementing it. I might miss that using automatic code generation.

This is exactly the way I look at the situation, code generation is irrelevant to me.

However, I do wish I had the ability to reverse engineer my projects to generate up to date UML which reflects changes I made during design time which I did not account for when initially drawing out my UML.

Link to comment

This is exactly the way I look at the situation, code generation is irrelevant to me.

However, I do wish I had the ability to reverse engineer my projects to generate up to date UML which reflects changes I made during design time which I did not account for when initially drawing out my UML.

The Symbio tool can do the reverse engineering.
Link to comment

Yes, I've been meaning to check the tool out, had a good chat with the Symbio folks at NI Week. Too bad I wasn't able to snag a version at the BBQ! I haven't downloaded a trial version yet since I know I won't have the time to evaluate it appropriately. Soon though...

I also haven't hammered through their pricing scheme. Not sure what version I need and if it's an annual license or an indefinite one tied to the current version?

Link to comment

[..]

modeling requirements in SysML

[..]

I've stumbled on the keyword 'SysML' recently and added it to my (ever growing) 'must know' list. Can you please provide me with a short abstract focussing on what it can be used for.

Felix

Edit: I'd like to see you promoting your IE suggestion on the community page as well.

Edited by Black Pearl
Link to comment

SysML is the "Systems Modeling Language" -- basically UML for systems engineering. It is implemented as a profile on top of UML. It uses some UML diagrams and adds others. SysML provides a way to model all aspects (e.g., mechanical, electrical, software systems) of a system in a single unified model.

SysML provides capabilities to model system requirements, architecture, behavior, and parametrics. It can support simulation for trade studies and so on. You can think of it as CAD for systems engineering.

---

We are especially interested in using requirements for requirements management.

We are starting to use it in particular for capturing and allocating requirements because it offers the following benefits for that purpose:

1) The most important reason is because we can capture everything in a single model in a (standards-based) tool specifically designed for that purpose. This means that, for instance, if I define a set of common requirements in a package in one project file, I can retrieve the relevant package in another project file. I can add only the relevant requirements to the target diagram. (In a document-centric approach I have to decide whether to duplicate requirements or just reference an entire document. The first option creates a maintenance problem and the latter is very often problematic for the reader.)

2) Each requirement is a unique model element. I can link semantically meaningful items (e.g., <<rationale>>). (These are currently possible in requirements management database tools and you can make this work in a document.) I can create semantically meaningful links (e.g., trace, refine) between requirements. Moreover, I can create links (satisfy) to Test Cases and detail the test procedures, and I can display all of these visually on a diagram. The links help us ensure traceability across the enterprise.

Ultimately, this means we have a real chance to maintain the requirements, do real traceability, make sure people actually read them, and consequently, we hope, meet them.

---

OMG's page on SysML offers a start (OMG)

The best book I have found on SysML (by far) is A Practical Guide to SysML.

Paul

  • Like 1
Link to comment

Thank you Paul, I'll give SysML a higher priority. Apart from it's usefulnes to system engineers (in my case I could be classified as system integrator, writing software with LV is just a part of my job, my favorite actually), it opens an interesting technical perspective.

As I wrote previously, I think there is a good chance that it is possible to make uml match LVOOP using profiles (for those who are not into the uml syntax: it's a way to extend uml and it's part of the core specs). Profiles allow you to restrict uml, e.g. to disallow multiple-inheritance. If SysML is introducing new diagrams on profiles alone, it should also be possible to implement LV specifics (extending instead of restricting).

The concept of uml-profiles is still above my uml knownledge, but I think both objectives are possible to realize. This leaves two obstacles towards an uml-LVOOP interface:

* Is this sufficient to describe data-flow/by-val classes (would it be sufficient to say that an attribute or a class is by-val?)

* How about the availability of tools that correctly implement profiles (I know that uml2 tools for eclipse had said something about implementing it).

Second point on Pauls topics: requirements tracing.

I don't question the benefits of this, but without a punishing force (regulated industries) you won't find it. Personally, I've seen it practiced once and plenty of examples where it can't be implemented. Here I wonder if a hybrid solution would be acceptable by those that practice it. By hybrid I mean if a uml/LVOOP code-generator and reverse-engineering tool would place the trace-elements in an own format (like vi scripting tags) and map that to SysML or uml notes/sterotypes/artifacts?. The main interface is already defined by XMI.

And how huge would be the effort to get such a process certified?

On the general request on NI's involvement:

I'm really in favour of pushing NI towards the uml standard. But I don't expect and I don't want them to show to much activity on this side at the moment, they just should be aware of this. One of the main reasons is, that I'd like them to focus on LVOOP developement (which only they can do) and burden such tasks as interfacing uml to the community (that's not free-of-charge, see endevos uml modeller, but you can do it without root-access to the LV-code). At later stages (that's why I want to push them), they are needed like to make an uml-profile an accepted standard for LabVIEW and maintaining it for new uml specs.

On community needs:

All the discussion here shows a very, very broad range of priorities in the LV/uml integration. I'd like to get more grip on this, then I could design some polls on the community page. The one direction is not new to uml, usage: reverse engineer, code-generation, documentation, modelling, fetish/abuse, consulting, conforming to a standard. The next is about budget (beside money this is also the time to learn using the tool). Also completness is an issue, do you need all diagrams or just the class-diagram (do you really need a state-chart or just a state-diagram?)? Or do you need a broader scope (SysML is one option, I personally use dia which isn't good for uml but has a lot of other diagram formats as well).

Felix

Link to comment

Felix,

I think creating some surveys is a great idea.

I did some further thinking on these topics...

I think NI would really only needs to get involved seriously in UML tool development when we are talking about UML-LabVIEW integration.

Levels of UML language integration:

Enterprise Architect (EA), for example, provides a dialog to create data types for a language. I have done this--it's very easy!--for LabVIEW basic types (not an exhaustive list--just what we need) and I will attach the resulting file. Just import it into EA (I can provide detailed instructions if necessary) to use it.

The next level is to define more complex types and their rules. For instance, a LabVIEW cluster contains attributes but no methods and does not support inheritance. (Just for modeling purposes I just use a class and give it a cluster stereotype. It doesn't mean anything special to EA but it works well enough since I don't do code generation.) One could change the metamodel, but likely one usually implements this as a profile for the particular language, as you suggested. I think this is fairly straightforward, too. (I don't know for sure whether EA uses profiles here, but they support modeling and even code generation in 10 languages already.)

Lastly one needs to be able to generate code from the model and model from the code. This requires by far the most work, I think, and the most input from NI. It is where the real work is, and Symbio, for example, has done an outstanding job with this.

Need for UML-LabVIEW integration:

This is not obvious. Personally I have opted for a tool that offers integration with other toolsets instead of just code generation, and certainly others in this thread have expressed a lack of interest in code generation capability. On the other hand, I wonder....

First, I think Model Drive Development (MDD) in general has taken off faster than expected. I tend to think I like to write everything myself, but then I think about how I work:

I model the architecture in UML first (statemachine diagrams and class diagrams, at least). I specify the classes with their attributes and methods (just the names), and the relationships between them (some of which I can't visualize in LabVIEW). It is orders of magnitude faster to create classes, give them attributes and methods, add relationships, and refactor everything in EA than in LabVIEW! (Partly this is because we don't have to deal with files at this level.)

When I finish the model I build the classes in LabVIEW. I do this by hand, but implementation of the model is an exact process. Each package (roughly, each diagram) in EA becomes a virtual folder in LabVIEW (and a real folder on disk). Actually, at least each package-controlled package should become a .lvlib. (We're moving to that.) Each class within a package maps to its own folder on disk, and so on. I create each class with its specified attributes and methods (VIs). As I said, I do this by hand, but there is actually no benefit to doing so and the truth is automation could save me many hours quite quickly.

Then, of course, as I work I often add some detailed methods in LabVIEW I didn't think about ahead of time. Right now I have to make the changes manually in the model if I want to keep it up to date (which I do). It would be fantastic to be able to use reverse engineering here. Basically, synchronizing the model and code would mean that I would have to make a change only once.

Then, of course, I spend time filling in the diagrams for each method, which is where I really want to spend my LabVIEW time.

Vision

Ideally I would be able to create a model in EA or a similar tool and generate the classes in LabVIEW from that tool. Then I would be able to click on a method in the project and fill in the details in LabVIEW--and then just save. Note that I would never have to open a file browser (well, OK to point to configuration files and the like maybe)! The model tree and the code generation would handle that! (EA does this very well! I check out a package, make changes as I need, and then check in the package. EA handles all the version control. It would be quite straightforward, albeit a fair amount amount of work, to extend this concept to the LabVIEW files as well.)

Then I spend my LabVIEW time writing code for the methods. Moreover, I would be able to integrate LabVIEW with all the other software engineering technologies I have at my disposal.

This may sound like a far-out dream, and I wouldn't dare to even think in this direction, except that basically all the required technologies already exist. In fact Symbio has gone further and added LabVIEW integration with the behavioral aspects of UML as well! That is really cool! (By the way, I am a huge admirer of what Endevo/Symbio has done--way more than I would have thought would have happened by now, and my impression is that they have done it extremely well.)

Bringing technologies together

My overall perspective is that we have a lot of really cool technologies (from NI, Sparx Systems, and Symbio) in particular. I think each is wonderful and powerful on its own. I think, though, that if we combined these technologies we would have a really amazing enterprise toolset. (Wasn't NI Week 2008 keynote's main message about combining technologies? One book with a similar view that impressed me was The Nature of Technology). I think we should leverage the different technologies from the different teams to create a complete toolset.

I think NI must be a player in this integration, obviously, if it is going to happen. I agree NI shouldn't spend a lot of time developing the technologies (especially since the technologies exist) but they can create the right relationships to integrate them (i.e., manage the integration). I also think they are in the best position to drive it, if the folks at NI have a mind to do so. I don't think Sparx Systems or a comparable tool maker, for instance, is going to approach NI out of the blue, and I think NI can most easily coordinate the requisite business arrangements. I also think NI has much to gain by doing so. And again, many of the pieces are already complete!

Anyway, this is pretty much the direction I am thinking. I would love to get NI and as well as LabVIEW enthusiasts--especially LabVIEW Advanced Virtual Architects--on board!

LabVIEWTypes.xml

Link to comment

Just focusing on data types:

Enterprise Architect (EA), for example, provides a dialog to create data types for a language. I have done this--it's very easy!--for LabVIEW basic types (not an exhaustive list--just what we need) and I will attach the resulting file. Just import it into EA (I can provide detailed instructions if necessary) to use it.

The next level is to define more complex types and their rules. For instance, a LabVIEW cluster contains attributes but no methods and does not support inheritance. (Just for modeling purposes I just use a class and give it a cluster stereotype. It doesn't mean anything special to EA but it works well enough since I don't do code generation.) One could change the metamodel, but likely one usually implements this as a profile for the particular language, as you suggested. I think this is fairly straightforward, too. (I don't know for sure whether EA uses profiles here, but they support modeling and even code generation in 10 languages already.)

Paul, is it possible that you export them as xmi, then I should be able to import them in my tools.

On the implementation, I think I32, SGL, DBL, ... should be modelled as primitive types.

Arrays would be modelled using the multiplicity, I would need to look up where this is inserted in the class hierarchy.

Clusters would be of DataType: DataType is specialized from Classifier (same as Class) and has attributes. The advantage is that dataType does not have an identity.

Enums would be LiteralEnumeration.

More intersting would be how to model advanced and by-ref data types with their specific usages:

* Communication types: User Events, Notifiers, Queues

* For by-ref implementation: (single-element) queues, DVR

The other work to be done in this field:

using profiles (?) to disallow inheritance, methods (?)

modelling polymorphism, type-casts, uml method ConformsTo() (then again maybe we need to modell this in OCL)

implementing type def as a sterotype (?) <<type definition>>, maybe also for strict type def and private data cluster

Felix

Link to comment

To still feed the original topic - preferred uml tools:

The developement of the eclipse uml2 tools has slowed down/stalled; it wasn't part of this years release (helios).

However a new tool is on the horizon: papyrus mdt

http://www.eclipse.org/modeling/mdt/papyrus/

It didn't make it into the releas as well, but it can be downloaded as an add-on from helios. I've been playing around with a day for now, it seems a bit more powerful than the older uml2 tools. Still it is lacking user friendly design and also provides the classic open-source flaw: don't ask for documentation.

If looking for a heavy-weight but free (open-source) option, check it out.

It's even listed in the OMG's list for SysML (which is pretty short).

Felix

Link to comment

A neat lightweight tool I would reccommend is Violet UML (Freeware), its very easy to use and runs on JAVA so it diggs on anything you can throw at it. Online help is a good read with useful tips on what diagram is normalled used for what. It doesnt feature any integration into anything, but its the simplest, quickest and easiest tool for creating standard UML diagrams rapidly!

violet.sourceforge.net/

A great lightweight tool for the USB Drive  ;)

  • Like 1
Link to comment

violet.sourceforge.net/

The OO-design Violet is using, is actually the design I based the GOOP Development Suite's UML modeler on.

I used this design to see if our EndevoGOOP3 class template supported all function a “Real” OO language required. It started off as a hobby project to see if we could implement all OO features that was found in Java, and it did (except native Interface support).

//Mikael

Link to comment

A neat lightweight tool I would reccommend is Violet UML

Thanks for the tip! I like it for quick one-off diagrams such as to illustrate a point on the forums. It appears to lack any sort of project that provides the conveniences of common uml objects across multiple diagrams, so it doesn't replace Enterprise Architect or Star UML for larger projects, but it does have a useful purpose.

Link to comment

I think creating some surveys is a great idea.

I created some simple polls. There is no option for multiple choice, so I can't just ask 'which diagrams do you use?' but I need seperate polls for each type (well, I only ask for Class and StateMachine).

http://decibel.ni.com/content/groups/uml?view=poll#/?tagSet=undefined

Felix

Link to comment
  • 3 months later...

Hello everyone.

What do you guys think of IntelliJ Idea in comparison to Enterprise Architect?

I'm working on LAbVIEW 2010 32bit and I like the design pattern, refactoring and JUnit integration capabilities of intelliJ.

Yet, I guess LabVIEW won't try to integrate with such a tool since it will turn profitable tools like TestStand redundant.

Thus, I tried to download Symbio's Endevo yet I didn't find the download link on their site.

Moreover, there are references to GDS, G#, goop, Endevo, Symbio, LVoop etc and I don't understand which is relevant for LV2010. What a mess.

Anyhow, I would like to use a UML tool both for a basic design and for auto documentation of my actual code.

However, I think those usefull free OOP tools out there won't help me much until LabVIEW meets the basic requirement of OOP by adding multiple inheritance or at least allow me to implement multiple interfaces.

Still hopefull,

Dror.

Link to comment

What do you guys think of IntelliJ Idea in comparison to Enterprise Architect?

I hadn't heard of IntelliJ IDEA, but I looked it up (IDEA). It is a Java IDE and as far as I can see it's main UML functionality is that it supports a version of a class diagram (Class diagram). So it is difficult to do a meaningful comparion of IDEA and Enterprise Architect since they are radically different tools.

However, I think those usefull free OOP tools out there won't help me much until LabVIEW meets the basic requirement of OOP by adding multiple inheritance or at least allow me to implement multiple interfaces.

Not all Object-Oriented languages support multiple inheritance. (Java, does not, for that matter!) (Java Language Environment) I agree with NI's decision not to implement multiple inheritance in LabVIEW (Decisions Behind the Design) since I think multiple inheritance opens the door to more problems than it solves. I agree something like Java-style interfaces could be quite useful.

Anyhow, I would like to use a UML tool both for a basic design and for auto documentation of my actual code.

Agreed. Of course, if a tool can do "auto documentation" (i.e., reverse engineering) then it pretty much has the capability to do code generation, and if you have these then you might as well take advantage of the features of a truly powerful tool, I think.

Link to comment

Hello everyone.

What do you guys think of IntelliJ Idea in comparison to Enterprise Architect?

I'm working on LAbVIEW 2010 32bit and I like the design pattern, refactoring and JUnit integration capabilities of intelliJ.

Yet, I guess LabVIEW won't try to integrate with such a tool since it will turn profitable tools like TestStand redundant.

Thus, I tried to download Symbio's Endevo yet I didn't find the download link on their site.

Moreover, there are references to GDS, G#, goop, Endevo, Symbio, LVoop etc and I don't understand which is relevant for LV2010. What a mess.

Anyhow, I would like to use a UML tool both for a basic design and for auto documentation of my actual code.

However, I think those usefull free OOP tools out there won't help me much until LabVIEW meets the basic requirement of OOP by adding multiple inheritance or at least allow me to implement multiple interfaces.

Still hopefull,

Dror.

Clarification about Symbio/Endevo and links etc:

Endevo changed name to Symbio in 2009.

Our latest tool is GOOP Development Suite (aka GDS), it works for LV 2010/2009/.../8.2.1. There is a free Community Edition of the tool and a built-in one month trial:

www.symbio.com/goop

The GOOP Development Suite provides support both for native classes and it also provides GOOP4 which is a reference based class template, basically lv class + DVR. It has UML class diagram support for native classes and GOOP4, code gen, synch and reverse engineering, and it can reverse engineer state machine VIs.

Jan

Link to comment
  • 4 years later...

Here's news worth sharing:  StarUML is not dead!

 

http://staruml.io/download

 

They're working on v2 (major new release).  They've rolled out 12 beta versions since May 2014.  G# plug-in tool seems to work brilliantly with it.  I reverse engineered a LabVIEW project with 18 classes, and liked the result much better than what the GOOP Development Suite UML Modeller produced (though I didn't make effort to tweak UML Modeller's reverse engineering settings).  

 

Though the G# add-in helps produce code and reverse engineer, I sure wish it could sync with a project like GDS UML Modeller does.  StarUML doesn't have good diagram clean-up utility -- it took me an hour to get all my wires uncrossed and classes neatly laid out.  Then, after I modified the code, all I could do was reverse-engineer again then hand-arrange the UML all over again (only 30 minutes 2nd go-round since I had previously worked out a neat arrangement).

 

I'm still dreaming of the day we have a professional tool like Enterprise Architect with tight linkage to LabVIEW, but for now it's encouraging to see StarUML being brought back to life; it's a useful tool with much lower barrier-to-entry than EA; great for casual users.

  • Like 1
Link to comment
  • 6 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.