How do I check if my UML deployment diagram is UML compliant? - deployment

I have a UML deployment diagram for a certification test that requires it be UML compliant.
The UML tool I used for creating my deployment diagram did not have 3D rectangles I could use for a application server in my diagram, so I used a "flat (2D)" rectangle to represent my app server.
Should I be alright using a flat rectangle as my app server?

In terms of visual layout yes, you're fine with a 2D rectangle because the UML specifications does not in fact specify these layouts and if you read the spec you'll see they've used very basic drawing tools there.
However, in order to ensure your diagram is UML compliant you do need a fully-featured UML tool. A simple drawing tool, such as MS Visio, won't cut it. There's a good list of UML tools on Wikipedia.

Related

Can an artifact consist of a list of .jar files?

I read in a UML manual that when there are many .jar files, it is possible to list them in a single artifact box. However, I have not been able to verify this from other sources, and since Visual Paradigm does not formally allow it, I would like to know if my diagram is compliant with UML notation.
If this is correct, is there a rule for choosing the name of the artifact?
I'm also trying to figure out what manifestations are. Since I don't recognize actual components in my application, but only several layers that I wouldn't define as components, I can't even find manifestations. Is it possible that there are no manifestations in a web application?
The shortcut notation using «artifact» is ambiguous, because the notation refers to a single artifact, with a name File.JAR when in reality there are plenty of them. Moreover, the UML specifications do not mention this possibility, so modelling tools shouldn't provide this feature.
However, UML provides a shortcut for deployed targets (such as nodes and execution environments), allowing to write the list of deployed artifacts directly in the box of the node, instead of drawing a lot of nested or related space-consuming artifact symbols. The UML specification explicitely allows it:
DeployedTargets are shown as a perspective view of cube labeled with the name of the DeployedTarget shown prepended by a colon. System elements deployed on a DeployedTarget, and Deployments that connect them, may be drawn inside the perspective cube. Alternately, deployed system elements can be shown as a textual list of element names.
The UML specification provide several examples page 653 and 657.
P.S: in addition of the UML specs, I've cross checked UML Distilled, The UML User's guide 2nd edition, and The UML Language reference manual 2nd edition. They are all consistent in that regard: they mention the possibility of deployments directly in an execution target (the older books clarify that it's in a compartment, i.e. after a separation line), none of them present this possibility for artifact symbols.
It depends how much you, not your tooling, cares about UML compliance
Broadly, the need for strict UML adherence varies: if you are using UML to generate code / documentation, etc, then yes you need to adhere to the spec. Whereas if you are just trying to communicate ideas to other people then, unless they are UML fanatics, they probably won't care as long as they can clearly understand what you're communicating.
The challenge for tools like Visual Paradigm and Sparx EA is that they need to be UML compliant. The means you get the strict adherence whether you need it or not - unless you find a work-around that lets you communicate your ideas even if from a UML stand-point it's a little weird.
I just wanted to complete this with what the UML spec says about artifacts (p. 654):
An Artifact represents some (usually reifiable) item of information that is used or produced by a software development process or by operation of a system. Examples of Artifacts include model files, source files, scripts, executable files, database tables, development deliverables, word-processing documents, and mail messages.
(emphasis by me)
Now, whatever reifiable will mean (probably refinable?) , I think the term item of information is broad enough to cover anything that holds information. May it be abit, a sentence in a file or a complete set of files.

Do I need to include dialogues and JFrames in a class diagram?

I'm creating a project documentation for a Question management and generating system and need to draw class diagrams from that system.
My question:
I have a lot of dialogues and frames since I'm programming in Java. Should I include the GUIs with the diagram and relate them to other control classes?

How to manage both Deployment and Component UML Models in Sparx EA?

I have an existing suite of SOA-connected applications (mixture of JavaEE, PHP and .Net) for which I need to provide an overall deployment model or architectural diagram.
I have found an example of a UML diagram for J2EE Application Deployment which is attractive because it's at just about the right level of detail (apps, containers, some component manifestation) for my current diagramming requirements.
I may even aggregate those at a higher level using something like the same author's Application Clustering Example.
I'm confident that I can jump right in at the component level or even at the artifact level and build my diagram(s) from there.
However, I also design specific Java components and would like to begin providing overall class diagrams to the development team when this current "architectural" exercise is complete. I expect this involves reverse engineering the Java code and starting from there.
My question is: what is my best strategy for meeting my current deployment and future component modeling needs?
Can I expect to back-fill the current artifacts I create now (eg. WAR or JAR file) with reverse-engineered components later?
Should I reverse engineer now, create the artifacts from the "bottom up", ignore most of the components, then update the reverse-engineered code later when it's time for component modelling? I would still require only logical (i.e. not backed by code) components for the .Net and PHP pieces since they're not my domain.
Should I make & keep my deployment artifacts separate (either via different EA projects or disconnected models in the same project) from my components, requiring a "manual" update to deployment diagrams / artifacts if/when code changes?
I'm just getting started with Sparx EA (after migrating from RSA) and would appreciate the perspective of anyone with more EA experience than myself... as well as feedback on any anti-pattern red flags raised by my descriptions above.
There is no good/general answer to your question. You should use MDA with CIM/PIM/PSM views where you put the components in the PSM and the class model in the PIM. Now, to keep all that in synch the only true way is to do it manually - the hard way. Though EA offers a model transformation I can not really recommend that. It pretends to link/synch PIM and PSM (in this case) automagically. But it's just a bad facade. First it works only one way (PIM to PSM) and second you soon loose the contact between both model views as you don't really see the traces. Instead install the <<trace>> connectors manually and annotate them as needed.

QP (Quantum Platform) Statecharts with Eclipse rather than QM

Miro Samek's QM graphical modeling tool (http://www.state-machine.com/qm/) seems like a good tool for semi graphical editing of UML statecharts for the QP framework. I would however like to use eclipse papyrus for this task because I have some experience with it.
Does anyone feel in a position to compare papyrus to QM?
Can anyone point me to good literature on code generation from statecharts made with papyrus?
I have never used Papyrus, but I just went through a tutorial for it.
The biggest difference that I see is that Papyrus appears to be primarily a UML modeling tool. Code generation is a "side-component" (The exact term from the penultimate page of A slide-ware tutorial on Papyrus usage for starters (2010-10-01).) Here's a StackOverflow question about code generation with Papyrus... it sounds complicated. I browsed Papyrus' forum and tutorials and didn't find anything immediately helpful related to code generation.
UML is traditionally considered a design phase technology in the Waterfall software development process, so once software is modeled in UML, implementation is a separate process. Not so with QM.
QM, unlike Papyrus, is not a general UML modeling tool; it's for modeling UML Statecharts with the sole purpose of compiling them, within the tool, to traceable C or C++ code. As you know, QM is related to QP, a state machine framework. QM builds code that utilizes QP.
QM's is your modeller and IDE. Your final source code, barring external libraries, is 100% generated by QM. As you graphically develop your UML Statecharts, you're expected to write C or C++ code that runs on transitions to/from your states. When you compile, QM combines your written code with its own generated code to produce a source files that you can compile immediately without making any additional changes.

Need a Visio tutorial for getting started

I am making a design document and I need to draw pictures using Visio. I have searched through the Internet, but there is no getting started guide or tutorial. Can somebody help? I need a tutorial which helps me to draw figures of moderate complexity.
At the surface, this looks like a fairly straightforward question, but I would argue that there are some underlying problems inherent in what you are looking for. There are a couple of ways to address this question:
First, how to use Visio.. Finding that information is fairly straightforward. The documentation via the Help menu is handy when trying to determine how to actually add elements, tie them together and define schemas based on those elements (be it an E-R diagram, UML, or some other architectural diagram). Finding the tutorials you are seeking might be difficult as Microsoft has moved Visio from a standalone product, to a part of the Visual Studio Suite, to part of the Office Suite, back to a standalone product. I would start my search on MSDN. Here are a few resources:
Visio Insight - A blog dedicated to using and modifying Visio
A portion of the Visio documentation
Second, how to you develop diagrams (and perhaps more specifically architectural diagrams). This falls outside of the realm of Visio and moves more towards fundamentals. There are a lot of books on UML and diagramming problem domains. I keep a copy of the UML Cheat Sheet handy. The same goes for E-R diagrams as well as other models.
And finally, with a question: What kind of diagrams are you trying to create? As with all tools, make sure that Visio is the right tool for the job. Would the table diagraming system in SSMS work for you? How about the class diagraming system build into Visual Studio? (and this is just assuming you are using Microsoft technologies in order to develop software). Visio is great for creating flowcharts and systems diagrams as well -- and those are much more straightforward.
As one final note, check out some of the samples that should be included. Here is a link to some (albeit older) sample for Visio that should get you started.
You can always read a book on the tool and that's my personal preference. I learned Visio 2010 by reading the book "Microsoft Press Microsoft Visio 2010 Step by Step"